@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.
- package/dist/lib.cjs/base/connector/baseConnector.js +1 -0
- package/dist/lib.cjs/base/constants.js +19 -0
- package/dist/lib.cjs/base/loglevel.js +3 -0
- package/dist/lib.cjs/base/utils.js +29 -3
- package/dist/lib.cjs/base/wallet/index.js +4 -2
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +68 -20
- package/dist/lib.cjs/connectors/base-evm-connector/baseEvmConnector.js +1 -1
- package/dist/lib.cjs/connectors/base-solana-connector/baseSolanaConnector.js +1 -1
- package/dist/lib.cjs/connectors/coinbase-connector/coinbaseConnector.js +1 -1
- package/dist/lib.cjs/connectors/injected-evm-connector/injectedEvmConnector.js +3 -1
- package/dist/lib.cjs/connectors/injected-solana-connector/walletStandardConnector.js +2 -2
- package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +197 -0
- package/dist/lib.cjs/connectors/utils.js +61 -0
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +1 -2
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/config.js +4 -59
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +7 -17
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +1 -1
- package/dist/lib.cjs/index.js +31 -24
- package/dist/lib.cjs/noModal.js +126 -29
- package/dist/lib.cjs/plugins/nft-checkout-plugin/plugin.js +1 -1
- package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +2 -2
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +19 -13
- package/dist/lib.cjs/providers/account-abstraction-provider/providers/utils.js +1 -1
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +1 -1
- package/dist/lib.cjs/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +1 -1
- package/dist/lib.cjs/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +1 -1
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +1 -1
- package/dist/lib.cjs/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +1 -1
- package/dist/lib.cjs/providers/solana-provider/rpc/solanaRpcMiddlewares.js +1 -1
- package/dist/lib.cjs/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +1 -1
- package/dist/lib.cjs/react/no-modal/Web3AuthInnerContext.js +1 -1
- package/dist/lib.cjs/react/no-modal/hooks/useWeb3Auth.js +1 -1
- package/dist/lib.cjs/react/wallet-services-plugin/WalletServicesContext.js +1 -1
- package/dist/lib.cjs/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +1 -1
- package/dist/lib.cjs/types/base/chain/IChainInterface.d.ts +3 -45
- package/dist/lib.cjs/types/base/connector/baseConnector.d.ts +1 -0
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +23 -4
- package/dist/lib.cjs/types/base/constants.d.ts +13 -0
- package/dist/lib.cjs/types/base/core/IWeb3Auth.d.ts +10 -4
- package/dist/lib.cjs/types/base/index.d.ts +1 -1
- package/dist/lib.cjs/types/base/interfaces.d.ts +68 -9
- package/dist/lib.cjs/types/base/loglevel.d.ts +2 -1
- package/dist/lib.cjs/types/base/utils.d.ts +12 -2
- package/dist/lib.cjs/types/base/wallet/index.d.ts +2 -0
- package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +5 -2
- package/dist/lib.cjs/types/connectors/auth-connector/interface.d.ts +5 -3
- package/dist/lib.cjs/types/connectors/injected-evm-connector/injectedEvmConnector.d.ts +1 -0
- package/dist/lib.cjs/types/connectors/metamask-connector/index.d.ts +1 -0
- package/dist/lib.cjs/types/connectors/metamask-connector/metamaskConnector.d.ts +6 -0
- package/dist/lib.cjs/types/connectors/utils.d.ts +8 -0
- package/dist/lib.cjs/types/noModal.d.ts +5 -3
- package/dist/lib.cjs/types/providers/account-abstraction-provider/providers/AccountAbstractionProvider.d.ts +4 -5
- package/dist/lib.cjs/types/providers/solana-provider/providers/index.d.ts +0 -1
- package/dist/lib.cjs/vue/no-modal/Web3AuthProvider.js +1 -1
- package/dist/lib.cjs/vue/no-modal/composables/useWeb3Auth.js +1 -1
- package/dist/lib.cjs/vue/wallet-services-plugin/WalletServicesProvider.js +1 -1
- package/dist/lib.cjs/vue/wallet-services-plugin/composables/useWalletServicesPlugin.js +1 -1
- package/dist/lib.esm/base/connector/baseConnector.js +1 -0
- package/dist/lib.esm/base/constants.js +15 -0
- package/dist/lib.esm/base/loglevel.js +3 -0
- package/dist/lib.esm/base/utils.js +29 -4
- package/dist/lib.esm/base/wallet/index.js +4 -2
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +68 -20
- package/dist/lib.esm/connectors/base-evm-connector/baseEvmConnector.js +1 -1
- package/dist/lib.esm/connectors/base-solana-connector/baseSolanaConnector.js +1 -1
- package/dist/lib.esm/connectors/coinbase-connector/coinbaseConnector.js +1 -1
- package/dist/lib.esm/connectors/injected-evm-connector/injectedEvmConnector.js +3 -1
- package/dist/lib.esm/connectors/injected-solana-connector/walletStandardConnector.js +2 -2
- package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +195 -0
- package/dist/lib.esm/connectors/utils.js +58 -0
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/WalletConnectV2Provider.js +2 -3
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/config.js +2 -57
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +7 -17
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Utils.js +2 -2
- package/dist/lib.esm/index.js +3 -4
- package/dist/lib.esm/noModal.js +127 -30
- package/dist/lib.esm/plugins/nft-checkout-plugin/plugin.js +1 -1
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +2 -2
- package/dist/lib.esm/providers/account-abstraction-provider/providers/AccountAbstractionProvider.js +19 -13
- package/dist/lib.esm/providers/account-abstraction-provider/providers/utils.js +1 -1
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/EthereumSigningProvider.js +1 -1
- package/dist/lib.esm/providers/ethereum-mpc-provider/providers/signingProviders/signingUtils.js +1 -1
- package/dist/lib.esm/providers/ethereum-provider/providers/privateKeyProviders/TransactionFormatter/formatter.js +1 -1
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/base/baseInjectedProvider.js +1 -1
- package/dist/lib.esm/providers/solana-provider/providers/injectedProviders/walletStandardProvider.js +1 -1
- package/dist/lib.esm/providers/solana-provider/rpc/solanaRpcMiddlewares.js +1 -1
- package/dist/lib.esm/providers/xrpl-provider/providers/privateKeyProviders/xrplPrivateKeyProvider.js +1 -1
- package/dist/lib.esm/react/no-modal/Web3AuthInnerContext.js +1 -1
- package/dist/lib.esm/react/no-modal/hooks/useWeb3Auth.js +1 -1
- package/dist/lib.esm/react/wallet-services-plugin/WalletServicesContext.js +1 -1
- package/dist/lib.esm/react/wallet-services-plugin/hooks/useWalletServicesPlugin.js +1 -1
- package/dist/lib.esm/vue/no-modal/Web3AuthProvider.js +1 -1
- package/dist/lib.esm/vue/no-modal/composables/useWeb3Auth.js +1 -1
- package/dist/lib.esm/vue/wallet-services-plugin/WalletServicesProvider.js +1 -1
- package/dist/lib.esm/vue/wallet-services-plugin/composables/useWalletServicesPlugin.js +1 -1
- package/dist/noModal.umd.min.js +1 -1
- package/package.json +11 -8
- package/dist/lib.cjs/base/chain/config.js +0 -322
- package/dist/lib.cjs/connectors/auth-connector/config/authConnectionConfig.js +0 -216
- package/dist/lib.cjs/connectors/auth-connector/config/config-build.js +0 -54
- package/dist/lib.cjs/connectors/auth-connector/config/config-env.js +0 -361
- package/dist/lib.cjs/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js +0 -161
- package/dist/lib.cjs/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.js +0 -104
- package/dist/lib.cjs/types/base/chain/config.d.ts +0 -5
- package/dist/lib.cjs/types/connectors/auth-connector/config/authConnectionConfig.d.ts +0 -2
- package/dist/lib.cjs/types/connectors/auth-connector/config/config-build.d.ts +0 -18
- package/dist/lib.cjs/types/connectors/auth-connector/config/config-env.d.ts +0 -60
- package/dist/lib.cjs/types/providers/solana-provider/providers/privateKeyProvider/index.d.ts +0 -1
- package/dist/lib.cjs/types/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.d.ts +0 -30
- package/dist/lib.cjs/types/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyUtils.d.ts +0 -7
- package/dist/lib.esm/base/chain/config.js +0 -317
- package/dist/lib.esm/connectors/auth-connector/config/authConnectionConfig.js +0 -214
- package/dist/lib.esm/connectors/auth-connector/config/config-build.js +0 -48
- package/dist/lib.esm/connectors/auth-connector/config/config-env.js +0 -359
- package/dist/lib.esm/providers/solana-provider/providers/privateKeyProvider/solanaPrivateKeyProvider.js +0 -159
- 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 (
|
|
20
|
-
|
|
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("
|
|
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("
|
|
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
|
-
|
|
378
|
-
|
|
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
|
-
|
|
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
|
|
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) || {}
|
|
495
|
+
connectorSettings, (params === null || params === void 0 ? void 0 : params.connectorSettings) || {}]);
|
|
483
496
|
// WS settings
|
|
484
|
-
const
|
|
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
|
-
|
|
532
|
+
confirmationStrategy,
|
|
533
|
+
whiteLabel,
|
|
487
534
|
accountAbstractionConfig: coreOptions.accountAbstractionConfig,
|
|
488
|
-
enableLogging: coreOptions.enableLogging
|
|
489
|
-
|
|
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
|
-
|
|
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;
|