@web3auth/no-modal 10.0.0-alpha.2 → 10.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 (116) hide show
  1. package/dist/lib.cjs/base/connector/baseConnector.js +1 -0
  2. package/dist/lib.cjs/base/constants.js +19 -0
  3. package/dist/lib.cjs/base/loglevel.js +3 -0
  4. package/dist/lib.cjs/base/utils.js +29 -3
  5. package/dist/lib.cjs/base/wallet/index.js +4 -2
  6. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +68 -20
  7. package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +1 -1
  8. package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +1 -1
  9. package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +1 -1
  10. package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +3 -1
  11. package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +2 -2
  12. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +197 -0
  13. package/dist/lib.cjs/connectors/utils.js +61 -0
  14. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +1 -2
  15. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +4 -59
  16. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +7 -17
  17. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +1 -1
  18. package/dist/lib.cjs/index.js +31 -24
  19. package/dist/lib.cjs/noModal.js +126 -29
  20. package/dist/lib.cjs/plugins/nft-checkout-plugin/plugin.js +1 -1
  21. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +2 -2
  22. package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +19 -13
  23. package/dist/lib.cjs/providers/account-abstraction-provider/providers/utils.js +1 -1
  24. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +1 -1
  25. package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +1 -1
  26. package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +1 -1
  27. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +1 -1
  28. package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +1 -1
  29. package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +1 -1
  30. package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +1 -1
  31. package/dist/lib.cjs/react/no-modal/Web3AuthInnerContext.js +1 -1
  32. package/dist/lib.cjs/react/no-modal/hooks/useWeb3Auth.js +1 -1
  33. package/dist/lib.cjs/react/wallet-services-plugin/WalletServicesContext.js +1 -1
  34. package/dist/lib.cjs/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +1 -1
  35. package/dist/lib.cjs/types/base/chain/IChainInterface.d.ts +3 -45
  36. package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +1 -0
  37. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +23 -4
  38. package/dist/lib.cjs/types/base/constants.d.ts +13 -0
  39. package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +10 -4
  40. package/dist/lib.cjs/types/base/index.d.ts +1 -1
  41. package/dist/lib.cjs/types/base/interfaces.d.ts +68 -9
  42. package/dist/lib.cjs/types/base/loglevel.d.ts +2 -1
  43. package/dist/lib.cjs/types/base/utils.d.ts +12 -2
  44. package/dist/lib.cjs/types/base/wallet/index.d.ts +2 -0
  45. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +5 -2
  46. package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +5 -3
  47. package/dist/lib.cjs/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +1 -0
  48. package/dist/lib.cjs/types/connectors/metamask-connector/index.d.ts +1 -0
  49. package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +6 -0
  50. package/dist/lib.cjs/types/connectors/utils.d.ts +8 -0
  51. package/dist/lib.cjs/types/noModal.d.ts +5 -3
  52. package/dist/lib.cjs/types/providers/account-abstraction-provider/providers/AccountAbstractionProvider.d.ts +4 -5
  53. package/dist/lib.cjs/types/providers/solana-provider/providers/index.d.ts +0 -1
  54. package/dist/lib.cjs/vue/no-modal/Web3AuthProvider.js +1 -1
  55. package/dist/lib.cjs/vue/no-modal/composables/useWeb3Auth.js +1 -1
  56. package/dist/lib.cjs/vue/wallet-services-plugin/WalletServicesProvider.js +1 -1
  57. package/dist/lib.cjs/vue/wallet-services-plugin/composables/useWalletServicesPlugin.js +1 -1
  58. package/dist/lib.esm/base/connector/baseConnector.js +1 -0
  59. package/dist/lib.esm/base/constants.js +15 -0
  60. package/dist/lib.esm/base/loglevel.js +3 -0
  61. package/dist/lib.esm/base/utils.js +29 -4
  62. package/dist/lib.esm/base/wallet/index.js +4 -2
  63. package/dist/lib.esm/connectors/auth-connector/authConnector.js +68 -20
  64. package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +1 -1
  65. package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +1 -1
  66. package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +1 -1
  67. package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +3 -1
  68. package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +2 -2
  69. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +195 -0
  70. package/dist/lib.esm/connectors/utils.js +58 -0
  71. package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +2 -3
  72. package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +2 -57
  73. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +7 -17
  74. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +2 -2
  75. package/dist/lib.esm/index.js +3 -4
  76. package/dist/lib.esm/noModal.js +127 -30
  77. package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +1 -1
  78. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +2 -2
  79. package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +19 -13
  80. package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +1 -1
  81. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +1 -1
  82. package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +1 -1
  83. package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +1 -1
  84. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +1 -1
  85. package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +1 -1
  86. package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +1 -1
  87. package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +1 -1
  88. package/dist/lib.esm/react/no-modal/Web3AuthInnerContext.js +1 -1
  89. package/dist/lib.esm/react/no-modal/hooks/useWeb3Auth.js +1 -1
  90. package/dist/lib.esm/react/wallet-services-plugin/WalletServicesContext.js +1 -1
  91. package/dist/lib.esm/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +1 -1
  92. package/dist/lib.esm/vue/no-modal/Web3AuthProvider.js +1 -1
  93. package/dist/lib.esm/vue/no-modal/composables/useWeb3Auth.js +1 -1
  94. package/dist/lib.esm/vue/wallet-services-plugin/WalletServicesProvider.js +1 -1
  95. package/dist/lib.esm/vue/wallet-services-plugin/composables/useWalletServicesPlugin.js +1 -1
  96. package/dist/noModal.umd.min.js +1 -1
  97. package/package.json +11 -8
  98. package/dist/lib.cjs/base/chain/config.js +0 -322
  99. package/dist/lib.cjs/connectors/auth-connector/config/authConnectionConfig.js +0 -216
  100. package/dist/lib.cjs/connectors/auth-connector/config/config-build.js +0 -54
  101. package/dist/lib.cjs/connectors/auth-connector/config/config-env.js +0 -361
  102. package/dist/lib.cjs/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js +0 -161
  103. package/dist/lib.cjs/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.js +0 -104
  104. package/dist/lib.cjs/types/base/chain/config.d.ts +0 -5
  105. package/dist/lib.cjs/types/connectors/auth-connector/config/authConnectionConfig.d.ts +0 -2
  106. package/dist/lib.cjs/types/connectors/auth-connector/config/config-build.d.ts +0 -18
  107. package/dist/lib.cjs/types/connectors/auth-connector/config/config-env.d.ts +0 -60
  108. package/dist/lib.cjs/types/providers/solana-provider/providers/privateKeyProvider/index.d.ts +0 -1
  109. package/dist/lib.cjs/types/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.d.ts +0 -30
  110. package/dist/lib.cjs/types/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.d.ts +0 -7
  111. package/dist/lib.esm/base/chain/config.js +0 -317
  112. package/dist/lib.esm/connectors/auth-connector/config/authConnectionConfig.js +0 -214
  113. package/dist/lib.esm/connectors/auth-connector/config/config-build.js +0 -48
  114. package/dist/lib.esm/connectors/auth-connector/config/config-env.js +0 -359
  115. package/dist/lib.esm/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js +0 -159
  116. package/dist/lib.esm/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.js +0 -102
@@ -13,6 +13,7 @@ class BaseConnector extends auth.SafeEventEmitter {
13
13
  super();
14
14
  _defineProperty(this, "connectorData", {});
15
15
  _defineProperty(this, "isInjected", void 0);
16
+ _defineProperty(this, "icon", void 0);
16
17
  _defineProperty(this, "coreOptions", void 0);
17
18
  _defineProperty(this, "rehydrated", false);
18
19
  this.coreOptions = options.coreOptions;
@@ -0,0 +1,19 @@
1
+ 'use strict';
2
+
3
+ const SMART_ACCOUNT_WALLET_SCOPE = {
4
+ EMBEDDED: "embedded",
5
+ ALL: "all"
6
+ };
7
+ const MODAL_SIGN_IN_METHODS = {
8
+ SOCIAL: "social",
9
+ PASSWORDLESS: "passwordless",
10
+ EXTERNAL_WALLETS: "externalWallets"
11
+ };
12
+ const WIDGET_TYPE = {
13
+ MODAL: "modal",
14
+ EMBED: "embed"
15
+ };
16
+
17
+ exports.MODAL_SIGN_IN_METHODS = MODAL_SIGN_IN_METHODS;
18
+ exports.SMART_ACCOUNT_WALLET_SCOPE = SMART_ACCOUNT_WALLET_SCOPE;
19
+ exports.WIDGET_TYPE = WIDGET_TYPE;
@@ -1,7 +1,10 @@
1
1
  'use strict';
2
2
 
3
+ var loglevelSentry = require('@toruslabs/loglevel-sentry');
3
4
  var loglevel = require('loglevel');
4
5
 
5
6
  const log = loglevel.getLogger("web3auth-logger");
7
+ const loglevelPlugin = new loglevelSentry.LoglevelSentry();
8
+ loglevelPlugin.install(log);
6
9
 
7
10
  exports.log = log;
@@ -16,11 +16,18 @@ const isHexStrict = hex => {
16
16
  const signerHost = web3AuthNetwork => {
17
17
  return constants.SIGNER_MAP[web3AuthNetwork !== null && web3AuthNetwork !== void 0 ? web3AuthNetwork : auth.WEB3AUTH_NETWORK.SAPPHIRE_MAINNET];
18
18
  };
19
- const fetchProjectConfig = async (clientId, web3AuthNetwork, aaProvider) => {
20
- const url = new URL(`${signerHost(web3AuthNetwork)}/api/configuration`);
19
+ const fetchProjectConfig = async ({
20
+ clientId,
21
+ web3AuthNetwork,
22
+ aaProvider,
23
+ authBuildEnv
24
+ }) => {
25
+ // const url = new URL(`${signerHost(web3AuthNetwork)}/api/v2/configuration`);
26
+ // TODO: remove this before production
27
+ const url = new URL("https://test-signer.web3auth.io/api/v2/configuration");
21
28
  url.searchParams.append("project_id", clientId);
22
29
  url.searchParams.append("network", web3AuthNetwork);
23
- url.searchParams.append("whitelist", "true");
30
+ if (authBuildEnv) url.searchParams.append("build_env", authBuildEnv);
24
31
  if (aaProvider) url.searchParams.append("aa_provider", aaProvider);
25
32
  const res = await httpHelpers.get(url.href);
26
33
  return res;
@@ -44,6 +51,23 @@ const normalizeWalletName = name => {
44
51
  normalizedName = normalizedName.replace(/\s/g, "-");
45
52
  return normalizedName;
46
53
  };
54
+ const fromWagmiChain = chain => {
55
+ var _chain$blockExplorers, _chain$rpcUrls$defaul;
56
+ return {
57
+ chainNamespace: baseControllers.CHAIN_NAMESPACES.EIP155,
58
+ chainId: `0x${chain.id.toString(16)}`,
59
+ rpcTarget: chain.rpcUrls.default.http[0],
60
+ displayName: chain.name,
61
+ blockExplorerUrl: ((_chain$blockExplorers = chain.blockExplorers) === null || _chain$blockExplorers === void 0 ? void 0 : _chain$blockExplorers.default.url) || "",
62
+ ticker: chain.nativeCurrency.symbol,
63
+ tickerName: chain.nativeCurrency.name,
64
+ logo: "",
65
+ decimals: chain.nativeCurrency.decimals,
66
+ isTestnet: chain.testnet,
67
+ wsTarget: (_chain$rpcUrls$defaul = chain.rpcUrls.default.webSocket) === null || _chain$rpcUrls$defaul === void 0 ? void 0 : _chain$rpcUrls$defaul[0]
68
+ };
69
+ };
70
+ const fromViemChain = fromWagmiChain;
47
71
 
48
72
  Object.defineProperty(exports, "cloneDeep", {
49
73
  enumerable: true,
@@ -51,6 +75,8 @@ Object.defineProperty(exports, "cloneDeep", {
51
75
  });
52
76
  exports.fetchProjectConfig = fetchProjectConfig;
53
77
  exports.fetchWalletRegistry = fetchWalletRegistry;
78
+ exports.fromViemChain = fromViemChain;
79
+ exports.fromWagmiChain = fromWagmiChain;
54
80
  exports.isHexStrict = isHexStrict;
55
81
  exports.normalizeWalletName = normalizeWalletName;
56
82
  exports.signerHost = signerHost;
@@ -9,14 +9,16 @@ const MULTI_CHAIN_CONNECTORS = {
9
9
  };
10
10
  const SOLANA_CONNECTORS = _objectSpread({}, MULTI_CHAIN_CONNECTORS);
11
11
  const EVM_CONNECTORS = _objectSpread({
12
- COINBASE: "coinbase"
12
+ COINBASE: "coinbase",
13
+ METAMASK: "metamask"
13
14
  }, MULTI_CHAIN_CONNECTORS);
14
15
  const WALLET_CONNECTORS = _objectSpread(_objectSpread({}, EVM_CONNECTORS), SOLANA_CONNECTORS);
15
16
  const CONNECTOR_NAMES = {
16
17
  [MULTI_CHAIN_CONNECTORS.AUTH]: "Auth",
17
18
  [MULTI_CHAIN_CONNECTORS.WALLET_CONNECT_V2]: "Wallet Connect v2",
18
19
  [MULTI_CHAIN_CONNECTORS.SFA]: "SFA",
19
- [EVM_CONNECTORS.COINBASE]: "Coinbase Smart Wallet"
20
+ [EVM_CONNECTORS.COINBASE]: "Coinbase Smart Wallet",
21
+ [EVM_CONNECTORS.METAMASK]: "MetaMask"
20
22
  };
21
23
 
22
24
  exports.CONNECTOR_NAMES = CONNECTOR_NAMES;
@@ -2,22 +2,21 @@
2
2
 
3
3
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
4
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
5
+ var baseControllers = require('@toruslabs/base-controllers');
5
6
  var securePubSub = require('@toruslabs/secure-pub-sub');
6
7
  var auth = require('@web3auth/auth');
7
8
  var deepmerge = require('deepmerge');
8
- var index$1 = require('../../base/errors/index.js');
9
9
  var IChainInterface = require('../../base/chain/IChainInterface.js');
10
10
  var baseConnector = require('../../base/connector/baseConnector.js');
11
11
  var constants = require('../../base/connector/constants.js');
12
12
  require('jwt-decode');
13
+ var index$1 = require('../../base/errors/index.js');
13
14
  var loglevel = require('../../base/loglevel.js');
14
15
  require('../../base/plugin/errors.js');
15
16
  require('../../base/plugin/IPlugin.js');
16
- var baseControllers = require('@toruslabs/base-controllers');
17
17
  require('@toruslabs/constants');
18
18
  require('@toruslabs/http-helpers');
19
19
  var index = require('../../base/wallet/index.js');
20
- var authConnectionConfig = require('./config/authConnectionConfig.js');
21
20
 
22
21
  class AuthConnector extends baseConnector.BaseConnector {
23
22
  constructor(params) {
@@ -70,6 +69,7 @@ class AuthConnector extends baseConnector.BaseConnector {
70
69
  });
71
70
  if (!this.coreOptions.clientId) throw index$1.WalletInitializationError.invalidParams("clientId is required before auth's initialization");
72
71
  if (!this.authOptions) throw index$1.WalletInitializationError.invalidParams("authOptions is required before auth's initialization");
72
+ if (this.authConnectionConfig.length === 0) throw index$1.WalletInitializationError.invalidParams("authConnectionConfig is required before auth's initialization");
73
73
  const isRedirectResult = this.authOptions.uxMode === auth.UX_MODE.REDIRECT;
74
74
  this.authOptions = _objectSpread(_objectSpread({}, this.authOptions), {}, {
75
75
  replaceUrlOnRedirect: isRedirectResult,
@@ -79,7 +79,7 @@ class AuthConnector extends baseConnector.BaseConnector {
79
79
  clientId: this.coreOptions.clientId,
80
80
  network: this.coreOptions.web3AuthNetwork,
81
81
  sdkMode: auth.SDK_MODE.IFRAME,
82
- authConnectionConfig: this.authConnectionConfig
82
+ authConnectionConfig: this.authConnectionConfig.filter(x => !x.isDefault)
83
83
  }));
84
84
  loglevel.log.debug("initializing auth connector init", this.authOptions);
85
85
  await this.authInstance.init();
@@ -352,8 +352,8 @@ class AuthConnector extends baseConnector.BaseConnector {
352
352
  authConnectionId: params.authConnectionId,
353
353
  groupedAuthConnectionId: params.groupedAuthConnectionId
354
354
  });
355
- if (!(providerConfig !== null && providerConfig !== void 0 && providerConfig.authConnection)) throw index$1.WalletLoginError.connectionError("Login provider is not available");
356
- const jwtParams = _objectSpread(_objectSpread(_objectSpread({}, providerConfig.jwtParameters), params.extraLoginOptions || {}), {}, {
355
+ if (!(providerConfig !== null && providerConfig !== void 0 && providerConfig.authConnection)) throw index$1.WalletLoginError.connectionError("Invalid auth connection.");
356
+ const jwtParams = _objectSpread(_objectSpread(_objectSpread({}, providerConfig.jwtParameters || {}), params.extraLoginOptions || {}), {}, {
357
357
  login_hint: params.login_hint || ((_params$extraLoginOpt3 = params.extraLoginOptions) === null || _params$extraLoginOpt3 === void 0 ? void 0 : _params$extraLoginOpt3.login_hint)
358
358
  });
359
359
  const nonce = auth.randomId();
@@ -372,10 +372,11 @@ class AuthConnector extends baseConnector.BaseConnector {
372
372
  jwtParams,
373
373
  customState: {
374
374
  nonce,
375
- dapp_redirect_url: this.authOptions.redirectUrl,
376
375
  appState: params.appState,
377
- uxMode: this.authOptions.uxMode,
378
- whiteLabel: JSON.stringify(this.authOptions.whiteLabel),
376
+ // use the default settings from the auth instance.
377
+ dapp_redirect_url: this.authInstance.options.redirectUrl,
378
+ uxMode: this.authInstance.options.uxMode,
379
+ whiteLabel: JSON.stringify(this.authInstance.options.whiteLabel),
379
380
  loginParams: JSON.stringify(loginParams)
380
381
  },
381
382
  web3AuthClientId: this.coreOptions.clientId,
@@ -431,7 +432,16 @@ class AuthConnector extends baseConnector.BaseConnector {
431
432
  authConnectionId: params.authConnectionId,
432
433
  groupedAuthConnectionId: params.groupedAuthConnectionId
433
434
  });
434
- if (!(loginConfig !== null && loginConfig !== void 0 && loginConfig.authConnection)) throw index$1.WalletLoginError.connectionError("Login provider is not available");
435
+ // throw error only when we cannot find the login config and authConnectionId is not provided in the params.
436
+ // otherwise, we will use the params to create a new auth connection config in the auth instance.
437
+ if (!(loginConfig !== null && loginConfig !== void 0 && loginConfig.authConnection) && !params.authConnectionId) throw index$1.WalletLoginError.connectionError("Invalid auth connection.");
438
+ if (!(loginConfig !== null && loginConfig !== void 0 && loginConfig.authConnection)) {
439
+ this.authInstance.options.authConnectionConfig.push({
440
+ authConnection: params.authConnection,
441
+ authConnectionId: params.authConnectionId,
442
+ groupedAuthConnectionId: params.groupedAuthConnectionId
443
+ });
444
+ }
435
445
  const loginParams = baseControllers.cloneDeep(params);
436
446
  loginParams.extraLoginOptions = _objectSpread(_objectSpread({}, loginParams.extraLoginOptions || {}), {}, {
437
447
  login_hint: params.login_hint || ((_params$extraLoginOpt5 = params.extraLoginOptions) === null || _params$extraLoginOpt5 === void 0 ? void 0 : _params$extraLoginOpt5.login_hint)
@@ -452,7 +462,8 @@ class AuthConnector extends baseConnector.BaseConnector {
452
462
  if (authConnectionId) {
453
463
  return x.authConnection === authConnection && x.authConnectionId === authConnectionId;
454
464
  }
455
- return x.authConnection === authConnection;
465
+ // return the default auth connection, if not found, return undefined
466
+ return x.authConnection === authConnection && x.isDefault;
456
467
  });
457
468
  return providerConfig;
458
469
  }
@@ -462,31 +473,67 @@ const authConnector = params => {
462
473
  projectConfig,
463
474
  coreOptions
464
475
  }) => {
465
- var _coreOptions$uiConfig, _coreOptions$walletSe;
476
+ var _coreOptions$uiConfig, _coreOptions$walletSe, _coreOptions$walletSe2, _coreOptions$walletSe3;
466
477
  // Connector settings
467
478
  const connectorSettings = {};
468
479
  const {
469
480
  whitelist,
470
- whitelabel
481
+ whitelabel,
482
+ sessionTime
471
483
  } = projectConfig;
472
484
  if (whitelist) connectorSettings.originData = whitelist.signed_urls;
485
+ if (sessionTime) connectorSettings.sessionTime = sessionTime;
473
486
  if ((_coreOptions$uiConfig = coreOptions.uiConfig) !== null && _coreOptions$uiConfig !== void 0 && _coreOptions$uiConfig.uxMode) connectorSettings.uxMode = coreOptions.uiConfig.uxMode;
474
487
  const uiConfig = deepmerge(baseControllers.cloneDeep(whitelabel || {}), coreOptions.uiConfig || {});
475
488
  if (!uiConfig.mode) uiConfig.mode = "light";
476
489
  connectorSettings.whiteLabel = uiConfig;
477
490
  const finalConnectorSettings = deepmerge.all([{
478
491
  uxMode: auth.UX_MODE.POPUP,
479
- buildEnv: auth.BUILD_ENV.PRODUCTION
492
+ buildEnv: coreOptions.authBuildEnv || auth.BUILD_ENV.PRODUCTION
480
493
  },
481
494
  // default settings
482
- (params === null || params === void 0 ? void 0 : params.connectorSettings) || {}, connectorSettings]);
495
+ connectorSettings, (params === null || params === void 0 ? void 0 : params.connectorSettings) || {}]);
483
496
  // WS settings
484
- const isKeyExportEnabled = typeof projectConfig.key_export_enabled === "boolean" ? projectConfig.key_export_enabled : true;
497
+ const {
498
+ enableKeyExport,
499
+ walletUi
500
+ } = projectConfig;
501
+ const isKeyExportEnabled = typeof enableKeyExport === "boolean" ? enableKeyExport : true;
502
+ const {
503
+ enablePortfolioWidget = false,
504
+ enableTokenDisplay = true,
505
+ enableNftDisplay = true,
506
+ enableWalletConnect = true,
507
+ enableBuyButton = true,
508
+ enableSendButton = true,
509
+ enableSwapButton = true,
510
+ enableReceiveButton = true,
511
+ enableShowAllTokensButton = true,
512
+ enableConfirmationModal = false,
513
+ portfolioWidgetPosition = baseControllers.BUTTON_POSITION.BOTTOM_LEFT,
514
+ defaultPortfolio = "token"
515
+ } = walletUi || {};
516
+ const projectConfigWhiteLabel = {
517
+ showWidgetButton: enablePortfolioWidget,
518
+ hideNftDisplay: !enableNftDisplay,
519
+ hideTokenDisplay: !enableTokenDisplay,
520
+ hideTransfers: !enableSendButton,
521
+ hideTopup: !enableBuyButton,
522
+ hideReceive: !enableReceiveButton,
523
+ hideSwap: !enableSwapButton,
524
+ hideShowAllTokens: !enableShowAllTokensButton,
525
+ hideWalletConnect: !enableWalletConnect,
526
+ buttonPosition: portfolioWidgetPosition,
527
+ defaultPortfolio
528
+ };
529
+ const whiteLabel = deepmerge.all([projectConfigWhiteLabel, uiConfig, ((_coreOptions$walletSe = coreOptions.walletServicesConfig) === null || _coreOptions$walletSe === void 0 ? void 0 : _coreOptions$walletSe.whiteLabel) || {}]);
530
+ const confirmationStrategy = (_coreOptions$walletSe2 = (_coreOptions$walletSe3 = coreOptions.walletServicesConfig) === null || _coreOptions$walletSe3 === void 0 ? void 0 : _coreOptions$walletSe3.confirmationStrategy) !== null && _coreOptions$walletSe2 !== void 0 ? _coreOptions$walletSe2 : enableConfirmationModal ? baseControllers.CONFIRMATION_STRATEGY.MODAL : baseControllers.CONFIRMATION_STRATEGY.AUTO_APPROVE;
485
531
  const finalWsSettings = _objectSpread(_objectSpread({}, coreOptions.walletServicesConfig), {}, {
486
- whiteLabel: _objectSpread(_objectSpread({}, uiConfig), (_coreOptions$walletSe = coreOptions.walletServicesConfig) === null || _coreOptions$walletSe === void 0 ? void 0 : _coreOptions$walletSe.whiteLabel),
532
+ confirmationStrategy,
533
+ whiteLabel,
487
534
  accountAbstractionConfig: coreOptions.accountAbstractionConfig,
488
- enableLogging: coreOptions.enableLogging
489
- // enableKeyExport: keyExportEnabled,
535
+ enableLogging: coreOptions.enableLogging,
536
+ enableKeyExport: enableKeyExport
490
537
  });
491
538
  // Core options
492
539
  if (coreOptions.privateKeyProvider) coreOptions.privateKeyProvider.setKeyExportFlag(isKeyExportEnabled);
@@ -495,7 +542,8 @@ const authConnector = params => {
495
542
  walletServicesSettings: finalWsSettings,
496
543
  loginSettings: params === null || params === void 0 ? void 0 : params.loginSettings,
497
544
  coreOptions,
498
- authConnectionConfig: authConnectionConfig.getAuthConnectionConfig(finalConnectorSettings.buildEnv, coreOptions.web3AuthNetwork)
545
+ // TODO: check, test this and may need to send modal config here later on.!!
546
+ authConnectionConfig: projectConfig.embeddedWalletAuth
499
547
  });
500
548
  };
501
549
  };
@@ -2,11 +2,11 @@
2
2
 
3
3
  var baseControllers = require('@toruslabs/base-controllers');
4
4
  var wsEmbed = require('@web3auth/ws-embed');
5
- var index = require('../../base/errors/index.js');
6
5
  var baseConnector = require('../../base/connector/baseConnector.js');
7
6
  var constants = require('../../base/connector/constants.js');
8
7
  require('@web3auth/auth');
9
8
  var utils = require('../../base/connector/utils.js');
9
+ var index = require('../../base/errors/index.js');
10
10
  require('../../base/loglevel.js');
11
11
  require('../../base/plugin/errors.js');
12
12
  require('../../base/plugin/IPlugin.js');
@@ -2,11 +2,11 @@
2
2
 
3
3
  var baseControllers = require('@toruslabs/base-controllers');
4
4
  var wsEmbed = require('@web3auth/ws-embed');
5
- var index = require('../../base/errors/index.js');
6
5
  var baseConnector = require('../../base/connector/baseConnector.js');
7
6
  var constants = require('../../base/connector/constants.js');
8
7
  require('@web3auth/auth');
9
8
  var utils = require('../../base/connector/utils.js');
9
+ var index = require('../../base/errors/index.js');
10
10
  require('../../base/loglevel.js');
11
11
  require('../../base/plugin/errors.js');
12
12
  require('../../base/plugin/IPlugin.js');
@@ -3,9 +3,9 @@
3
3
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
4
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
5
5
  var walletSdk = require('@coinbase/wallet-sdk');
6
- var index$1 = require('../../base/errors/index.js');
7
6
  var IChainInterface = require('../../base/chain/IChainInterface.js');
8
7
  require('@web3auth/auth');
8
+ var index$1 = require('../../base/errors/index.js');
9
9
  var index = require('../../base/wallet/index.js');
10
10
  var constants = require('../../base/connector/constants.js');
11
11
  require('jwt-decode');
@@ -1,9 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
- var index = require('../../base/errors/index.js');
5
4
  var IChainInterface = require('../../base/chain/IChainInterface.js');
6
5
  require('@web3auth/auth');
6
+ var index = require('../../base/errors/index.js');
7
7
  require('../../base/wallet/index.js');
8
8
  var constants = require('../../base/connector/constants.js');
9
9
  require('jwt-decode');
@@ -26,6 +26,7 @@ class InjectedEvmConnector extends baseEvmConnector.BaseEvmConnector {
26
26
  _defineProperty(this, "injectedProvider", null);
27
27
  this.name = options.name;
28
28
  this.injectedProvider = options.provider;
29
+ this.icon = options.icon;
29
30
  }
30
31
  get provider() {
31
32
  if (this.status !== constants.CONNECTOR_STATUS.NOT_READY && this.injectedProvider) {
@@ -175,6 +176,7 @@ const injectedEvmConnector = providerDetail => {
175
176
  return new InjectedEvmConnector({
176
177
  name: utils.normalizeWalletName(providerDetail.info.name),
177
178
  provider: providerDetail.provider,
179
+ icon: providerDetail.info.icon,
178
180
  coreOptions
179
181
  });
180
182
  };
@@ -2,9 +2,9 @@
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
4
  var features = require('@wallet-standard/features');
5
- var index = require('../../base/errors/index.js');
6
5
  var IChainInterface = require('../../base/chain/IChainInterface.js');
7
6
  require('@web3auth/auth');
7
+ var index = require('../../base/errors/index.js');
8
8
  require('../../base/wallet/index.js');
9
9
  var constants = require('../../base/connector/constants.js');
10
10
  require('jwt-decode');
@@ -14,7 +14,6 @@ require('../../base/plugin/IPlugin.js');
14
14
  var utils = require('../../base/utils.js');
15
15
  var utils$1 = require('../../providers/solana-provider/providers/injectedProviders/utils.js');
16
16
  var walletStandardProvider = require('../../providers/solana-provider/providers/injectedProviders/walletStandardProvider.js');
17
- require('../../providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js');
18
17
  var baseControllers = require('@toruslabs/base-controllers');
19
18
  require('@web3auth/ws-embed');
20
19
  require('@solana/web3.js');
@@ -32,6 +31,7 @@ class WalletStandardConnector extends baseSolanaConnector.BaseSolanaConnector {
32
31
  _defineProperty(this, "wallet", null);
33
32
  _defineProperty(this, "injectedProvider", null);
34
33
  this.name = options.name;
34
+ this.icon = options.wallet.icon;
35
35
  // in VueJS, for some wallets e.g. Gate, Solflare, when connecting it throws error "attempted to get private field on non-instance"
36
36
  // it seems that Vue create a Proxy object for the wallet object which causes the issue
37
37
  // ref: https://stackoverflow.com/questions/64917686/vue-array-converted-to-proxy-object
@@ -0,0 +1,197 @@
1
+ 'use strict';
2
+
3
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
+ var sdk = require('@metamask/sdk');
5
+ var deepmerge = require('deepmerge');
6
+ var IChainInterface = require('../../base/chain/IChainInterface.js');
7
+ require('@web3auth/auth');
8
+ var index$1 = require('../../base/errors/index.js');
9
+ var index = require('../../base/wallet/index.js');
10
+ var constants = require('../../base/connector/constants.js');
11
+ require('jwt-decode');
12
+ require('../../base/loglevel.js');
13
+ require('../../base/plugin/errors.js');
14
+ require('../../base/plugin/IPlugin.js');
15
+ var baseControllers = require('@toruslabs/base-controllers');
16
+ require('@toruslabs/constants');
17
+ require('@toruslabs/http-helpers');
18
+ var baseEvmConnector = require('../base-evm-connector/baseEvmConnector.js');
19
+ var utils = require('../utils.js');
20
+
21
+ class MetaMaskConnector extends baseEvmConnector.BaseEvmConnector {
22
+ constructor(connectorOptions) {
23
+ super(connectorOptions);
24
+ _defineProperty(this, "connectorNamespace", IChainInterface.CONNECTOR_NAMESPACES.EIP155);
25
+ _defineProperty(this, "currentChainNamespace", baseControllers.CHAIN_NAMESPACES.EIP155);
26
+ _defineProperty(this, "type", constants.CONNECTOR_CATEGORY.EXTERNAL);
27
+ _defineProperty(this, "name", index.WALLET_CONNECTORS.METAMASK);
28
+ _defineProperty(this, "status", constants.CONNECTOR_STATUS.NOT_READY);
29
+ _defineProperty(this, "metamaskProvider", null);
30
+ _defineProperty(this, "metamaskSDK", null);
31
+ _defineProperty(this, "metamaskOptions", void 0);
32
+ this.metamaskOptions = connectorOptions.connectorSettings;
33
+ }
34
+ get provider() {
35
+ if (this.status !== constants.CONNECTOR_STATUS.NOT_READY && this.metamaskProvider) {
36
+ return this.metamaskProvider;
37
+ }
38
+ return null;
39
+ }
40
+ set provider(_) {
41
+ throw new Error("Not implemented");
42
+ }
43
+ async init(options) {
44
+ await super.init(options);
45
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === options.chainId);
46
+ super.checkInitializationRequirements({
47
+ chainConfig
48
+ });
49
+ // Detect app metadata
50
+ const iconUrl = await utils.getSiteIcon(window);
51
+ const appMetadata = {
52
+ name: utils.getSiteName(window),
53
+ url: window.location.origin,
54
+ iconUrl
55
+ };
56
+ // Initialize the MetaMask SDK
57
+ const metamaskOptions = deepmerge(this.metamaskOptions || {}, {
58
+ dappMetadata: appMetadata
59
+ });
60
+ this.metamaskSDK = new sdk.MetaMaskSDK(metamaskOptions);
61
+ this.status = constants.CONNECTOR_STATUS.READY;
62
+ this.emit(constants.CONNECTOR_EVENTS.READY, index.WALLET_CONNECTORS.METAMASK);
63
+ try {
64
+ if (options.autoConnect) {
65
+ this.rehydrated = true;
66
+ await this.connect({
67
+ chainId: options.chainId
68
+ });
69
+ }
70
+ } catch (error) {
71
+ this.emit(constants.CONNECTOR_EVENTS.ERRORED, error);
72
+ }
73
+ }
74
+ async connect({
75
+ chainId
76
+ }) {
77
+ super.checkConnectionRequirements();
78
+ if (!this.metamaskSDK) throw index$1.WalletLoginError.notConnectedError("Connector is not initialized");
79
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
80
+ 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
+ try {
86
+ await this.metamaskSDK.connect();
87
+ this.metamaskProvider = this.metamaskSDK.getProvider();
88
+ if (!this.metamaskProvider) throw index$1.WalletLoginError.notConnectedError("Failed to connect with provider");
89
+ // switch chain if not connected to the right chain
90
+ const currentChainId = await this.metamaskProvider.request({
91
+ method: "eth_chainId"
92
+ });
93
+ if (currentChainId !== chainConfig.chainId) {
94
+ await this.switchChain(chainConfig, true);
95
+ }
96
+ // handle disconnect event
97
+ const accountDisconnectHandler = accounts => {
98
+ if (accounts.length === 0) this.disconnect();
99
+ };
100
+ this.metamaskProvider.on("accountsChanged", accountDisconnectHandler);
101
+ this.metamaskProvider.once("disconnect", () => {
102
+ this.disconnect();
103
+ });
104
+ this.status = constants.CONNECTOR_STATUS.CONNECTED;
105
+ this.emit(constants.CONNECTOR_EVENTS.CONNECTED, {
106
+ connector: index.WALLET_CONNECTORS.METAMASK,
107
+ reconnected: this.rehydrated,
108
+ provider: this.metamaskProvider
109
+ });
110
+ return this.metamaskProvider;
111
+ } catch (error) {
112
+ // ready again to be connected
113
+ this.status = constants.CONNECTOR_STATUS.READY;
114
+ this.rehydrated = false;
115
+ this.emit(constants.CONNECTOR_EVENTS.ERRORED, error);
116
+ if (error instanceof index$1.Web3AuthError) throw error;
117
+ throw index$1.WalletLoginError.connectionError("Failed to login with MetaMask wallet", error);
118
+ }
119
+ }
120
+ async disconnect(options = {
121
+ cleanup: false
122
+ }) {
123
+ if (!this.metamaskProvider) throw index$1.WalletLoginError.connectionError("MetaMask provider is not available");
124
+ await super.disconnectSession();
125
+ if (typeof this.metamaskProvider.removeAllListeners !== "undefined") this.metamaskProvider.removeAllListeners();
126
+ await this.metamaskSDK.terminate();
127
+ if (options.cleanup) {
128
+ this.status = constants.CONNECTOR_STATUS.NOT_READY;
129
+ this.metamaskProvider = null;
130
+ } else {
131
+ // ready to be connected again
132
+ this.status = constants.CONNECTOR_STATUS.READY;
133
+ }
134
+ await super.disconnect();
135
+ }
136
+ async getUserInfo() {
137
+ if (this.status !== constants.CONNECTOR_STATUS.CONNECTED) throw index$1.WalletLoginError.notConnectedError("Not connected with wallet, Please login/connect first");
138
+ return {};
139
+ }
140
+ async switchChain(params, init = false) {
141
+ super.checkSwitchChainRequirements(params, init);
142
+ const requestSwitchChain = () => this.metamaskProvider.request({
143
+ method: "wallet_switchEthereumChain",
144
+ params: [{
145
+ chainId: params.chainId
146
+ }]
147
+ });
148
+ try {
149
+ await requestSwitchChain();
150
+ } catch (error) {
151
+ // If the error code is 4902, the network needs to be added
152
+ if ((error === null || error === void 0 ? void 0 : error.code) === 4902) {
153
+ const chainConfig = this.coreOptions.chains.find(x => x.chainId === params.chainId && x.chainNamespace === this.connectorNamespace);
154
+ await this.addChain(chainConfig);
155
+ await requestSwitchChain();
156
+ } else {
157
+ throw error;
158
+ }
159
+ }
160
+ }
161
+ async enableMFA() {
162
+ throw new Error("Method Not implemented");
163
+ }
164
+ async manageMFA() {
165
+ throw new Error("Method Not implemented");
166
+ }
167
+ async addChain(chainConfig) {
168
+ if (!this.metamaskProvider) throw index$1.WalletLoginError.connectionError("Injected provider is not available");
169
+ await this.metamaskProvider.request({
170
+ method: "wallet_addEthereumChain",
171
+ params: [{
172
+ chainId: chainConfig.chainId,
173
+ chainName: chainConfig.displayName,
174
+ rpcUrls: [chainConfig.rpcTarget],
175
+ blockExplorerUrls: [chainConfig.blockExplorerUrl],
176
+ nativeCurrency: {
177
+ name: chainConfig.tickerName,
178
+ symbol: chainConfig.ticker,
179
+ decimals: chainConfig.decimals || 18
180
+ },
181
+ iconUrls: [chainConfig.logo]
182
+ }]
183
+ });
184
+ }
185
+ }
186
+ const metaMaskConnector = params => {
187
+ return ({
188
+ coreOptions
189
+ }) => {
190
+ return new MetaMaskConnector({
191
+ connectorSettings: params,
192
+ coreOptions
193
+ });
194
+ };
195
+ };
196
+
197
+ exports.metaMaskConnector = metaMaskConnector;
@@ -0,0 +1,61 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Extracts a name for the site from the DOM
5
+ */
6
+ const getSiteName = window => {
7
+ const {
8
+ document
9
+ } = window;
10
+ const siteName = document.querySelector('head > meta[property="og:site_name"]');
11
+ if (siteName) {
12
+ return siteName.content;
13
+ }
14
+ const metaTitle = document.querySelector('head > meta[name="title"]');
15
+ if (metaTitle) {
16
+ return metaTitle.content;
17
+ }
18
+ if (document.title && document.title.length > 0) {
19
+ return document.title;
20
+ }
21
+ return window.location.hostname;
22
+ };
23
+ /**
24
+ * Returns whether the given image URL exists
25
+ * @param url - the url of the image
26
+ * @returns - whether the image exists
27
+ */
28
+ function imgExists(url) {
29
+ return new Promise((resolve, reject) => {
30
+ try {
31
+ const img = document.createElement("img");
32
+ img.onload = () => resolve(true);
33
+ img.onerror = () => resolve(false);
34
+ img.src = url;
35
+ } catch (e) {
36
+ reject(e);
37
+ }
38
+ });
39
+ }
40
+ /**
41
+ * Extracts an icon for the site from the DOM
42
+ */
43
+ async function getSiteIcon(window) {
44
+ const {
45
+ document
46
+ } = window;
47
+ // Use the site's favicon if it exists
48
+ let icon = document.querySelector('head > link[rel="shortcut icon"]');
49
+ if (icon && (await imgExists(icon.href))) {
50
+ return icon.href;
51
+ }
52
+ // Search through available icons in no particular order
53
+ icon = Array.from(document.querySelectorAll('head > link[rel="icon"]')).find(_icon => Boolean(_icon.href)) || null;
54
+ if (icon && (await imgExists(icon.href))) {
55
+ return icon.href;
56
+ }
57
+ return null;
58
+ }
59
+
60
+ exports.getSiteIcon = getSiteIcon;
61
+ exports.getSiteName = getSiteName;