@web3auth/no-modal 10.0.0 → 10.0.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/analytics.js +13 -2
- package/dist/lib.cjs/base/utils.js +1 -1
- package/dist/lib.cjs/connectors/auth-connector/authConnector.js +24 -19
- package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +39 -7
- package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +83 -26
- package/dist/lib.cjs/noModal.js +50 -16
- package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +33 -8
- package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +6 -0
- package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +1 -1
- package/dist/lib.cjs/react/wagmi/provider.js +3 -0
- package/dist/lib.cjs/types/base/analytics.d.ts +5 -0
- package/dist/lib.cjs/types/base/connector/interfaces.d.ts +3 -0
- package/dist/lib.cjs/types/base/plugin/IPlugin.d.ts +2 -1
- package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +4 -2
- package/dist/lib.cjs/types/noModal.d.ts +1 -0
- package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +3 -2
- package/dist/lib.cjs/types/providers/solana-provider/solanaWallet.d.ts +1 -0
- package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +1 -1
- package/dist/lib.cjs/vue/wagmi/provider.js +4 -0
- package/dist/lib.esm/base/analytics.js +13 -2
- package/dist/lib.esm/base/utils.js +1 -1
- package/dist/lib.esm/connectors/auth-connector/authConnector.js +25 -19
- package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +41 -3
- package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +78 -14
- package/dist/lib.esm/noModal.js +52 -17
- package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +36 -5
- package/dist/lib.esm/providers/solana-provider/solanaWallet.js +6 -0
- package/dist/lib.esm/react/context/Web3AuthInnerContext.js +1 -1
- package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +1 -1
- package/dist/lib.esm/react/wagmi/provider.js +3 -0
- package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +1 -1
- package/dist/lib.esm/vue/wagmi/provider.js +4 -0
- package/dist/noModal.umd.min.js +1 -1
- package/package.json +2 -2
|
@@ -2,14 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
4
|
var auth = require('@web3auth/auth');
|
|
5
|
-
require('
|
|
6
|
-
require('@segment/analytics-next');
|
|
7
|
-
var loglevel = require('../../base/loglevel.js');
|
|
5
|
+
var analytics = require('../../base/analytics.js');
|
|
8
6
|
var baseControllers = require('@toruslabs/base-controllers');
|
|
9
7
|
require('../../base/errors/index.js');
|
|
10
8
|
var index = require('../../base/wallet/index.js');
|
|
11
9
|
var constants = require('../../base/connector/constants.js');
|
|
12
10
|
require('jwt-decode');
|
|
11
|
+
var loglevel = require('../../base/loglevel.js');
|
|
13
12
|
var errors = require('../../base/plugin/errors.js');
|
|
14
13
|
var IPlugin = require('../../base/plugin/IPlugin.js');
|
|
15
14
|
require('@toruslabs/constants');
|
|
@@ -28,12 +27,13 @@ class WalletServicesPlugin extends auth.SafeEventEmitter {
|
|
|
28
27
|
_defineProperty(this, "provider", null);
|
|
29
28
|
_defineProperty(this, "web3auth", null);
|
|
30
29
|
_defineProperty(this, "isInitialized", false);
|
|
30
|
+
_defineProperty(this, "analytics", void 0);
|
|
31
31
|
}
|
|
32
32
|
get proxyProvider() {
|
|
33
33
|
var _this$wsEmbedInstance;
|
|
34
34
|
return (_this$wsEmbedInstance = this.wsEmbedInstance) !== null && _this$wsEmbedInstance !== void 0 && _this$wsEmbedInstance.provider ? this.wsEmbedInstance.provider : null;
|
|
35
35
|
}
|
|
36
|
-
async initWithWeb3Auth(web3auth, _whiteLabel) {
|
|
36
|
+
async initWithWeb3Auth(web3auth, _whiteLabel, analytics) {
|
|
37
37
|
if (this.isInitialized) return;
|
|
38
38
|
if (!web3auth) throw errors.WalletServicesPluginError.web3authRequired();
|
|
39
39
|
if (web3auth.provider && !this.SUPPORTED_CONNECTORS.includes(web3auth.connectedConnectorName)) throw errors.WalletServicesPluginError.notInitialized();
|
|
@@ -44,6 +44,7 @@ class WalletServicesPlugin extends auth.SafeEventEmitter {
|
|
|
44
44
|
this.provider = web3auth.provider;
|
|
45
45
|
}
|
|
46
46
|
this.web3auth = web3auth;
|
|
47
|
+
this.analytics = analytics;
|
|
47
48
|
// Auth connector uses WS embed
|
|
48
49
|
const authInstance = web3auth.getConnector(index.WALLET_CONNECTORS.AUTH);
|
|
49
50
|
if (!authInstance || !authInstance.wsEmbed) throw errors.WalletServicesPluginError.web3AuthNotConnected();
|
|
@@ -83,23 +84,47 @@ class WalletServicesPlugin extends auth.SafeEventEmitter {
|
|
|
83
84
|
}
|
|
84
85
|
}
|
|
85
86
|
async showWalletConnectScanner(showWalletConnectParams) {
|
|
86
|
-
var _this$wsEmbedInstance2;
|
|
87
|
+
var _this$wsEmbedInstance2, _this$analytics;
|
|
87
88
|
if (!((_this$wsEmbedInstance2 = this.wsEmbedInstance) !== null && _this$wsEmbedInstance2 !== void 0 && _this$wsEmbedInstance2.isLoggedIn)) throw errors.WalletServicesPluginError.walletPluginNotConnected();
|
|
89
|
+
// analytics
|
|
90
|
+
(_this$analytics = this.analytics) === null || _this$analytics === void 0 || _this$analytics.track(analytics.ANALYTICS_EVENTS.WALLET_CONNECT_SCANNER_CLICKED, {
|
|
91
|
+
is_visible: showWalletConnectParams === null || showWalletConnectParams === void 0 ? void 0 : showWalletConnectParams.show
|
|
92
|
+
});
|
|
88
93
|
return this.wsEmbedInstance.showWalletConnectScanner(showWalletConnectParams);
|
|
89
94
|
}
|
|
90
95
|
async showCheckout(showCheckoutParams) {
|
|
91
|
-
var _this$wsEmbedInstance3;
|
|
96
|
+
var _this$wsEmbedInstance3, _this$analytics2;
|
|
92
97
|
if (!((_this$wsEmbedInstance3 = this.wsEmbedInstance) !== null && _this$wsEmbedInstance3 !== void 0 && _this$wsEmbedInstance3.isLoggedIn)) throw errors.WalletServicesPluginError.walletPluginNotConnected();
|
|
98
|
+
// analytics
|
|
99
|
+
(_this$analytics2 = this.analytics) === null || _this$analytics2 === void 0 || _this$analytics2.track(analytics.ANALYTICS_EVENTS.WALLET_CHECKOUT_CLICKED, {
|
|
100
|
+
is_visible: showCheckoutParams === null || showCheckoutParams === void 0 ? void 0 : showCheckoutParams.show,
|
|
101
|
+
receive_wallet_address_enabled: !!(showCheckoutParams !== null && showCheckoutParams !== void 0 && showCheckoutParams.receiveWalletAddress),
|
|
102
|
+
token_list: showCheckoutParams === null || showCheckoutParams === void 0 ? void 0 : showCheckoutParams.tokenList,
|
|
103
|
+
fiat_list: showCheckoutParams === null || showCheckoutParams === void 0 ? void 0 : showCheckoutParams.fiatList
|
|
104
|
+
});
|
|
93
105
|
return this.wsEmbedInstance.showCheckout(showCheckoutParams);
|
|
94
106
|
}
|
|
95
107
|
async showWalletUi(showWalletUiParams) {
|
|
96
|
-
var _this$wsEmbedInstance4;
|
|
108
|
+
var _this$wsEmbedInstance4, _this$analytics3;
|
|
97
109
|
if (!((_this$wsEmbedInstance4 = this.wsEmbedInstance) !== null && _this$wsEmbedInstance4 !== void 0 && _this$wsEmbedInstance4.isLoggedIn)) throw errors.WalletServicesPluginError.walletPluginNotConnected();
|
|
110
|
+
// analytics
|
|
111
|
+
(_this$analytics3 = this.analytics) === null || _this$analytics3 === void 0 || _this$analytics3.track(analytics.ANALYTICS_EVENTS.WALLET_UI_CLICKED, {
|
|
112
|
+
is_visible: showWalletUiParams === null || showWalletUiParams === void 0 ? void 0 : showWalletUiParams.show,
|
|
113
|
+
path: showWalletUiParams === null || showWalletUiParams === void 0 ? void 0 : showWalletUiParams.path
|
|
114
|
+
});
|
|
98
115
|
return this.wsEmbedInstance.showWalletUi(showWalletUiParams);
|
|
99
116
|
}
|
|
100
117
|
async showSwap(showSwapParams) {
|
|
101
|
-
var _this$wsEmbedInstance5;
|
|
118
|
+
var _this$wsEmbedInstance5, _this$analytics4;
|
|
102
119
|
if (!((_this$wsEmbedInstance5 = this.wsEmbedInstance) !== null && _this$wsEmbedInstance5 !== void 0 && _this$wsEmbedInstance5.isLoggedIn)) throw errors.WalletServicesPluginError.walletPluginNotConnected();
|
|
120
|
+
// analytics
|
|
121
|
+
(_this$analytics4 = this.analytics) === null || _this$analytics4 === void 0 || _this$analytics4.track(analytics.ANALYTICS_EVENTS.WALLET_SWAP_CLICKED, {
|
|
122
|
+
is_visible: showSwapParams === null || showSwapParams === void 0 ? void 0 : showSwapParams.show,
|
|
123
|
+
from_token: showSwapParams === null || showSwapParams === void 0 ? void 0 : showSwapParams.fromToken,
|
|
124
|
+
to_token: showSwapParams === null || showSwapParams === void 0 ? void 0 : showSwapParams.toToken,
|
|
125
|
+
from_value_enabled: !!(showSwapParams !== null && showSwapParams !== void 0 && showSwapParams.fromValue),
|
|
126
|
+
to_address_enabled: !!(showSwapParams !== null && showSwapParams !== void 0 && showSwapParams.toAddress)
|
|
127
|
+
});
|
|
103
128
|
return this.wsEmbedInstance.showSwap(showSwapParams);
|
|
104
129
|
}
|
|
105
130
|
async cleanup() {
|
|
@@ -15,6 +15,12 @@ class SolanaWallet {
|
|
|
15
15
|
});
|
|
16
16
|
return accounts;
|
|
17
17
|
}
|
|
18
|
+
async getAccounts() {
|
|
19
|
+
const accounts = await this.provider.request({
|
|
20
|
+
method: wsEmbed.SOLANA_METHOD_TYPES.GET_ACCOUNTS
|
|
21
|
+
});
|
|
22
|
+
return accounts;
|
|
23
|
+
}
|
|
18
24
|
async signAndSendTransaction(transaction) {
|
|
19
25
|
const signature = await this.provider.request({
|
|
20
26
|
method: wsEmbed.SOLANA_METHOD_TYPES.SEND_TRANSACTION,
|
|
@@ -46,7 +46,7 @@ const useSolanaWallet = () => {
|
|
|
46
46
|
if (!(web3Auth !== null && web3Auth !== void 0 && (_web3Auth$currentChai = web3Auth.currentChain) !== null && _web3Auth$currentChai !== void 0 && _web3Auth$currentChai.chainNamespace) || web3Auth.currentChain.chainNamespace !== baseControllers.CHAIN_NAMESPACES.SOLANA) {
|
|
47
47
|
return;
|
|
48
48
|
}
|
|
49
|
-
const accounts = await solanaWallet$1.
|
|
49
|
+
const accounts = await solanaWallet$1.getAccounts();
|
|
50
50
|
if ((accounts === null || accounts === void 0 ? void 0 : accounts.length) > 0) {
|
|
51
51
|
setAccounts(accounts);
|
|
52
52
|
}
|
|
@@ -126,6 +126,9 @@ function WagmiProvider(_ref) {
|
|
|
126
126
|
} = useWeb3Auth.useWeb3Auth();
|
|
127
127
|
const finalConfig = react.useMemo(() => {
|
|
128
128
|
var _web3Auth$coreOptions;
|
|
129
|
+
web3Auth === null || web3Auth === void 0 || web3Auth.setAnalyticsProperties({
|
|
130
|
+
wagmi_enabled: true
|
|
131
|
+
});
|
|
129
132
|
if (!isInitialized) return constants.defaultWagmiConfig;
|
|
130
133
|
const finalConfig = _objectSpread(_objectSpread({
|
|
131
134
|
ssr: true
|
|
@@ -31,10 +31,15 @@ export declare const ANALYTICS_EVENTS: {
|
|
|
31
31
|
SOCIAL_LOGIN_SELECTED: string;
|
|
32
32
|
EXTERNAL_WALLET_SELECTED: string;
|
|
33
33
|
EXTERNAL_WALLET_LIST_EXPANDED: string;
|
|
34
|
+
WALLET_UI_CLICKED: string;
|
|
35
|
+
WALLET_CONNECT_SCANNER_CLICKED: string;
|
|
36
|
+
WALLET_CHECKOUT_CLICKED: string;
|
|
37
|
+
WALLET_SWAP_CLICKED: string;
|
|
34
38
|
};
|
|
35
39
|
export declare const ANALYTICS_INTEGRATION_TYPE: {
|
|
36
40
|
REACT_HOOKS: string;
|
|
37
41
|
VUE_COMPOSABLES: string;
|
|
42
|
+
NATIVE_SDK: string;
|
|
38
43
|
};
|
|
39
44
|
export declare const ANALYTICS_SDK_TYPE: {
|
|
40
45
|
WEB_NO_MODAL: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AUTH_CONNECTION_TYPE, AuthUserInfo, ExtraLoginOptions, JRPCRequest, JRPCResponse, Maybe, RequestArguments, SafeEventEmitter, SendCallBack, UX_MODE, type UX_MODE_TYPE, WEB3AUTH_NETWORK, type WEB3AUTH_NETWORK_TYPE } from "@web3auth/auth";
|
|
2
|
+
import { type Analytics } from "../analytics";
|
|
2
3
|
import type { ChainNamespaceType, ConnectorNamespaceType, CustomChainConfig } from "../chain/IChainInterface";
|
|
3
4
|
import type { IWeb3AuthCoreOptions } from "../core/IWeb3Auth";
|
|
4
5
|
import { Web3AuthError } from "../errors";
|
|
@@ -25,6 +26,7 @@ export type IdentityTokenInfo = {
|
|
|
25
26
|
};
|
|
26
27
|
export interface BaseConnectorSettings {
|
|
27
28
|
coreOptions: IWeb3AuthCoreOptions;
|
|
29
|
+
analytics?: Analytics;
|
|
28
30
|
}
|
|
29
31
|
export interface IProvider extends SafeEventEmitter<ProviderEvents> {
|
|
30
32
|
get chainId(): string;
|
|
@@ -72,6 +74,7 @@ export interface IConnector<T> extends SafeEventEmitter {
|
|
|
72
74
|
export type ConnectorParams = {
|
|
73
75
|
projectConfig?: ProjectConfig;
|
|
74
76
|
coreOptions: IWeb3AuthCoreOptions;
|
|
77
|
+
analytics: Analytics;
|
|
75
78
|
};
|
|
76
79
|
export type BaseConnectorLoginParams = {
|
|
77
80
|
chainId: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type SafeEventEmitter, WhiteLabelData } from "@web3auth/auth";
|
|
2
|
+
import { type Analytics } from "../analytics";
|
|
2
3
|
import { type IWeb3AuthCore } from "../core/IWeb3Auth";
|
|
3
4
|
import { type WALLET_CONNECTOR_TYPE } from "../wallet";
|
|
4
5
|
export declare const PLUGIN_NAMESPACES: {
|
|
@@ -42,7 +43,7 @@ export interface IPlugin extends SafeEventEmitter {
|
|
|
42
43
|
status: PLUGIN_STATUS_TYPE;
|
|
43
44
|
SUPPORTED_CONNECTORS: WALLET_CONNECTOR_TYPE[];
|
|
44
45
|
pluginNamespace: PluginNamespace;
|
|
45
|
-
initWithWeb3Auth(web3auth: IWeb3AuthCore, whiteLabel?: WhiteLabelData): Promise<void>;
|
|
46
|
+
initWithWeb3Auth(web3auth: IWeb3AuthCore, whiteLabel?: WhiteLabelData, analytics?: Analytics): Promise<void>;
|
|
46
47
|
connect(): Promise<void>;
|
|
47
48
|
disconnect(): Promise<void>;
|
|
48
49
|
cleanup(): Promise<void>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Auth } from "@web3auth/auth";
|
|
1
|
+
import { Auth, AuthConnectionConfigItem } from "@web3auth/auth";
|
|
2
2
|
import { type default as WsEmbed } from "@web3auth/ws-embed";
|
|
3
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";
|
|
@@ -36,12 +36,14 @@ declare class AuthConnector extends BaseConnector<AuthLoginParams> {
|
|
|
36
36
|
chainId: string;
|
|
37
37
|
}, init?: boolean): Promise<void>;
|
|
38
38
|
cleanup(): Promise<void>;
|
|
39
|
+
getOAuthProviderConfig(params: Pick<AuthLoginParams, "authConnection" | "authConnectionId" | "groupedAuthConnectionId">): AuthConnectionConfigItem & {
|
|
40
|
+
isDefault?: boolean;
|
|
41
|
+
};
|
|
39
42
|
private getChain;
|
|
40
43
|
private _getFinalPrivKey;
|
|
41
44
|
private connectWithProvider;
|
|
42
45
|
private connectWithSocialLogin;
|
|
43
46
|
private connectWithJwtLogin;
|
|
44
|
-
private getOAuthProviderConfig;
|
|
45
47
|
}
|
|
46
48
|
type AuthConnectorFuncParams = Omit<AuthConnectorOptions, "coreOptions" | "authConnectionConfig" | "connectorSettings"> & {
|
|
47
49
|
connectorSettings?: Omit<AuthConnectorOptions["connectorSettings"], "buildEnv">;
|
|
@@ -62,6 +62,7 @@ export declare class Web3AuthNoModal extends SafeEventEmitter<Web3AuthNoModalEve
|
|
|
62
62
|
protected setConnectors(connectors: IConnector<unknown>[]): void;
|
|
63
63
|
protected subscribeToConnectorEvents(connector: IConnector<unknown>): void;
|
|
64
64
|
protected checkInitRequirements(): void;
|
|
65
|
+
protected checkIfAutoConnect(connector: IConnector<unknown>): boolean;
|
|
65
66
|
/**
|
|
66
67
|
* Gets the initial chain configuration for a connector
|
|
67
68
|
* @throws WalletInitializationError If no chain is found for the connector's namespace
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type BaseEmbedControllerState } from "@toruslabs/base-controllers";
|
|
2
2
|
import { SafeEventEmitter, type WhiteLabelData } from "@web3auth/auth";
|
|
3
3
|
import WsEmbed from "@web3auth/ws-embed";
|
|
4
|
-
import { IPlugin, IWeb3AuthCore, PLUGIN_STATUS_TYPE, PluginFn, SafeEventEmitterProvider, WALLET_CONNECTOR_TYPE } from "../../base";
|
|
4
|
+
import { type Analytics, IPlugin, IWeb3AuthCore, PLUGIN_STATUS_TYPE, PluginFn, SafeEventEmitterProvider, WALLET_CONNECTOR_TYPE } from "../../base";
|
|
5
5
|
export { BUTTON_POSITION, type BUTTON_POSITION_TYPE, CONFIRMATION_STRATEGY, type CONFIRMATION_STRATEGY_TYPE } from "@web3auth/ws-embed";
|
|
6
6
|
declare class WalletServicesPlugin extends SafeEventEmitter implements IPlugin {
|
|
7
7
|
name: "wallet-services";
|
|
@@ -12,8 +12,9 @@ declare class WalletServicesPlugin extends SafeEventEmitter implements IPlugin {
|
|
|
12
12
|
private provider;
|
|
13
13
|
private web3auth;
|
|
14
14
|
private isInitialized;
|
|
15
|
+
private analytics?;
|
|
15
16
|
get proxyProvider(): SafeEventEmitterProvider | null;
|
|
16
|
-
initWithWeb3Auth(web3auth: IWeb3AuthCore, _whiteLabel?: WhiteLabelData): Promise<void>;
|
|
17
|
+
initWithWeb3Auth(web3auth: IWeb3AuthCore, _whiteLabel?: WhiteLabelData, analytics?: Analytics): Promise<void>;
|
|
17
18
|
initWithProvider(): Promise<void>;
|
|
18
19
|
connect(): Promise<void>;
|
|
19
20
|
showWalletConnectScanner(showWalletConnectParams?: BaseEmbedControllerState["showWalletConnect"]): Promise<void>;
|
|
@@ -4,6 +4,7 @@ export declare class SolanaWallet implements ISolanaWallet {
|
|
|
4
4
|
provider: IProvider;
|
|
5
5
|
constructor(provider: IProvider);
|
|
6
6
|
requestAccounts(): Promise<string[]>;
|
|
7
|
+
getAccounts(): Promise<string[]>;
|
|
7
8
|
signAndSendTransaction<T extends TransactionOrVersionedTransaction>(transaction: T): Promise<string>;
|
|
8
9
|
/**
|
|
9
10
|
* Signs a transaction and returns the signature
|
|
@@ -33,7 +33,7 @@ const useSolanaWallet = () => {
|
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
35
|
solanaWallet$1.value = new solanaWallet.SolanaWallet(provider.value);
|
|
36
|
-
const result = await solanaWallet$1.value.
|
|
36
|
+
const result = await solanaWallet$1.value.getAccounts();
|
|
37
37
|
if ((result === null || result === void 0 ? void 0 : result.length) > 0) {
|
|
38
38
|
accounts.value = result;
|
|
39
39
|
}
|
|
@@ -210,6 +210,10 @@ const WagmiProvider = vue.defineComponent({
|
|
|
210
210
|
}
|
|
211
211
|
};
|
|
212
212
|
vue.watch(isInitialized, newIsInitialized => {
|
|
213
|
+
var _web3Auth$value2;
|
|
214
|
+
(_web3Auth$value2 = web3Auth.value) === null || _web3Auth$value2 === void 0 || _web3Auth$value2.setAnalyticsProperties({
|
|
215
|
+
wagmi_enabled: true
|
|
216
|
+
});
|
|
213
217
|
if (newIsInitialized && !finalConfig.value) {
|
|
214
218
|
finalConfig.value = defineWagmiConfig();
|
|
215
219
|
hydrateWagmiConfig();
|
|
@@ -86,28 +86,39 @@ class Analytics {
|
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
88
|
const ANALYTICS_EVENTS = {
|
|
89
|
+
// SDK Initialization
|
|
89
90
|
SDK_INITIALIZATION_COMPLETED: "SDK Initialization Completed",
|
|
90
91
|
SDK_INITIALIZATION_FAILED: "SDK Initialization Failed",
|
|
92
|
+
// Connection
|
|
91
93
|
CONNECTION_STARTED: "Connection Started",
|
|
92
94
|
CONNECTION_COMPLETED: "Connection Completed",
|
|
93
95
|
CONNECTION_FAILED: "Connection Failed",
|
|
96
|
+
// Identity Token
|
|
94
97
|
IDENTITY_TOKEN_STARTED: "Identity Token Started",
|
|
95
98
|
IDENTITY_TOKEN_COMPLETED: "Identity Token Completed",
|
|
96
99
|
IDENTITY_TOKEN_FAILED: "Identity Token Failed",
|
|
100
|
+
// MFA
|
|
97
101
|
MFA_ENABLEMENT_STARTED: "MFA Enablement Started",
|
|
98
102
|
MFA_ENABLEMENT_COMPLETED: "MFA Enablement Completed",
|
|
99
103
|
MFA_ENABLEMENT_FAILED: "MFA Enablement Failed",
|
|
100
104
|
MFA_MANAGEMENT_SELECTED: "MFA Management Selected",
|
|
101
105
|
MFA_MANAGEMENT_FAILED: "MFA Management Failed",
|
|
106
|
+
// Login Modal
|
|
102
107
|
LOGIN_MODAL_OPENED: "Login Modal Opened",
|
|
103
108
|
LOGIN_MODAL_CLOSED: "Login Modal Closed",
|
|
104
109
|
SOCIAL_LOGIN_SELECTED: "Social Login Selected",
|
|
105
110
|
EXTERNAL_WALLET_SELECTED: "External Wallet Selected",
|
|
106
|
-
EXTERNAL_WALLET_LIST_EXPANDED: "External Wallet List Expanded"
|
|
111
|
+
EXTERNAL_WALLET_LIST_EXPANDED: "External Wallet List Expanded",
|
|
112
|
+
// Wallet Plugin
|
|
113
|
+
WALLET_UI_CLICKED: "Wallet UI Clicked",
|
|
114
|
+
WALLET_CONNECT_SCANNER_CLICKED: "Wallet Connect Scanner Clicked",
|
|
115
|
+
WALLET_CHECKOUT_CLICKED: "Wallet Checkout Clicked",
|
|
116
|
+
WALLET_SWAP_CLICKED: "Wallet Swap Clicked"
|
|
107
117
|
};
|
|
108
118
|
const ANALYTICS_INTEGRATION_TYPE = {
|
|
109
119
|
REACT_HOOKS: "React Hooks",
|
|
110
|
-
VUE_COMPOSABLES: "Vue Composables"
|
|
120
|
+
VUE_COMPOSABLES: "Vue Composables",
|
|
121
|
+
NATIVE_SDK: "Native SDK"
|
|
111
122
|
};
|
|
112
123
|
const ANALYTICS_SDK_TYPE = {
|
|
113
124
|
WEB_NO_MODAL: "Web NoModal",
|
|
@@ -145,7 +145,7 @@ const getWalletServicesAnalyticsProperties = walletServicesConfig => {
|
|
|
145
145
|
ws_default_portfolio: walletServicesConfig === null || walletServicesConfig === void 0 || (_walletServicesConfig1 = walletServicesConfig.whiteLabel) === null || _walletServicesConfig1 === void 0 ? void 0 : _walletServicesConfig1.defaultPortfolio
|
|
146
146
|
};
|
|
147
147
|
};
|
|
148
|
-
const sdkVersion = "10.0.
|
|
148
|
+
const sdkVersion = "10.0.1";
|
|
149
149
|
const getErrorAnalyticsProperties = error => {
|
|
150
150
|
try {
|
|
151
151
|
const code = error instanceof Web3AuthError ? error.code : error === null || error === void 0 ? void 0 : error.code;
|
|
@@ -287,6 +287,24 @@ class AuthConnector extends BaseConnector {
|
|
|
287
287
|
this.wsEmbedInstance.clearInit();
|
|
288
288
|
}
|
|
289
289
|
}
|
|
290
|
+
getOAuthProviderConfig(params) {
|
|
291
|
+
const {
|
|
292
|
+
authConnection,
|
|
293
|
+
authConnectionId,
|
|
294
|
+
groupedAuthConnectionId
|
|
295
|
+
} = params;
|
|
296
|
+
const providerConfig = this.authConnectionConfig.find(x => {
|
|
297
|
+
if (groupedAuthConnectionId) {
|
|
298
|
+
return x.authConnection === authConnection && x.groupedAuthConnectionId === groupedAuthConnectionId;
|
|
299
|
+
}
|
|
300
|
+
if (authConnectionId) {
|
|
301
|
+
return x.authConnection === authConnection && x.authConnectionId === authConnectionId;
|
|
302
|
+
}
|
|
303
|
+
// return the default auth connection, if not found, return undefined
|
|
304
|
+
return x.authConnection === authConnection && x.isDefault;
|
|
305
|
+
});
|
|
306
|
+
return providerConfig;
|
|
307
|
+
}
|
|
290
308
|
getChain(chainId) {
|
|
291
309
|
return this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
292
310
|
}
|
|
@@ -505,24 +523,6 @@ class AuthConnector extends BaseConnector {
|
|
|
505
523
|
delete loginParams.chainId;
|
|
506
524
|
return this.authInstance.postLoginInitiatedMessage(loginParams);
|
|
507
525
|
}
|
|
508
|
-
getOAuthProviderConfig(params) {
|
|
509
|
-
const {
|
|
510
|
-
authConnection,
|
|
511
|
-
authConnectionId,
|
|
512
|
-
groupedAuthConnectionId
|
|
513
|
-
} = params;
|
|
514
|
-
const providerConfig = this.authConnectionConfig.find(x => {
|
|
515
|
-
if (groupedAuthConnectionId) {
|
|
516
|
-
return x.authConnection === authConnection && x.groupedAuthConnectionId === groupedAuthConnectionId;
|
|
517
|
-
}
|
|
518
|
-
if (authConnectionId) {
|
|
519
|
-
return x.authConnection === authConnection && x.authConnectionId === authConnectionId;
|
|
520
|
-
}
|
|
521
|
-
// return the default auth connection, if not found, return undefined
|
|
522
|
-
return x.authConnection === authConnection && x.isDefault;
|
|
523
|
-
});
|
|
524
|
-
return providerConfig;
|
|
525
|
-
}
|
|
526
526
|
}
|
|
527
527
|
const authConnector = params => {
|
|
528
528
|
return ({
|
|
@@ -537,7 +537,13 @@ const authConnector = params => {
|
|
|
537
537
|
sessionTime
|
|
538
538
|
} = projectConfig;
|
|
539
539
|
if (whitelist) connectorSettings.originData = whitelist.signed_urls;
|
|
540
|
-
|
|
540
|
+
|
|
541
|
+
// If sessionTime is provided in the coreOptions, it takes precedence over the sessionTime in the projectConfig.
|
|
542
|
+
if (coreOptions.sessionTime) {
|
|
543
|
+
connectorSettings.sessionTime = coreOptions.sessionTime;
|
|
544
|
+
} else if (sessionTime) {
|
|
545
|
+
connectorSettings.sessionTime = sessionTime;
|
|
546
|
+
}
|
|
541
547
|
if ((_coreOptions$uiConfig = coreOptions.uiConfig) !== null && _coreOptions$uiConfig !== void 0 && _coreOptions$uiConfig.uxMode) connectorSettings.uxMode = coreOptions.uiConfig.uxMode;
|
|
542
548
|
const uiConfig = coreOptions.uiConfig || {};
|
|
543
549
|
connectorSettings.whiteLabel = uiConfig;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import _objectSpread from '@babel/runtime/helpers/objectSpread2';
|
|
2
2
|
import _defineProperty from '@babel/runtime/helpers/defineProperty';
|
|
3
3
|
import { MetaMaskSDK } from '@metamask/sdk';
|
|
4
|
+
import { CHAIN_NAMESPACES, getErrorAnalyticsProperties } from '@toruslabs/base-controllers';
|
|
4
5
|
import deepmerge from 'deepmerge';
|
|
5
6
|
import { getSiteIcon, getSiteName } from '../utils.js';
|
|
7
|
+
import { getCaipChainId } from '../../base/utils.js';
|
|
8
|
+
import { ANALYTICS_EVENTS } from '../../base/analytics.js';
|
|
6
9
|
import { BaseEvmConnector } from '../base-evm-connector/baseEvmConnector.js';
|
|
7
10
|
import { CONNECTOR_NAMESPACES } from '../../base/chain/IChainInterface.js';
|
|
8
|
-
import { CHAIN_NAMESPACES } from '@toruslabs/base-controllers';
|
|
9
11
|
import { CONNECTOR_CATEGORY, CONNECTOR_STATUS, CONNECTOR_EVENTS } from '../../base/connector/constants.js';
|
|
10
12
|
import { WALLET_CONNECTORS } from '../../base/wallet/index.js';
|
|
11
13
|
import { WalletLoginError, Web3AuthError } from '../../base/errors/index.js';
|
|
@@ -21,7 +23,9 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
21
23
|
_defineProperty(this, "metamaskProvider", null);
|
|
22
24
|
_defineProperty(this, "metamaskSDK", null);
|
|
23
25
|
_defineProperty(this, "metamaskOptions", void 0);
|
|
26
|
+
_defineProperty(this, "analytics", void 0);
|
|
24
27
|
this.metamaskOptions = connectorOptions.connectorSettings;
|
|
28
|
+
this.analytics = connectorOptions.analytics;
|
|
25
29
|
}
|
|
26
30
|
get provider() {
|
|
27
31
|
if (this.status !== CONNECTOR_STATUS.NOT_READY && this.metamaskProvider) {
|
|
@@ -88,6 +92,20 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
88
92
|
if (!this.metamaskSDK) throw WalletLoginError.notConnectedError("Connector is not initialized");
|
|
89
93
|
const chainConfig = this.coreOptions.chains.find(x => x.chainId === chainId);
|
|
90
94
|
if (!chainConfig) throw WalletLoginError.connectionError("Chain config is not available");
|
|
95
|
+
|
|
96
|
+
// Skip tracking for injected MetaMask since it's handled in connectTo
|
|
97
|
+
// Skip tracking for rehydration since only new connections are tracked
|
|
98
|
+
// Only track non-injected MetaMask when connection completes since it auto-initializes to generate QR code
|
|
99
|
+
const shouldTrack = !this.isInjected && !this.rehydrated;
|
|
100
|
+
const startTime = Date.now();
|
|
101
|
+
const eventData = {
|
|
102
|
+
connector: this.name,
|
|
103
|
+
connector_type: this.type,
|
|
104
|
+
is_injected: this.isInjected,
|
|
105
|
+
chain_id: getCaipChainId(chainConfig),
|
|
106
|
+
chain_name: chainConfig === null || chainConfig === void 0 ? void 0 : chainConfig.displayName,
|
|
107
|
+
chain_namespace: chainConfig === null || chainConfig === void 0 ? void 0 : chainConfig.chainNamespace
|
|
108
|
+
};
|
|
91
109
|
try {
|
|
92
110
|
if (this.status !== CONNECTOR_STATUS.CONNECTING) {
|
|
93
111
|
var _this$metamaskOptions;
|
|
@@ -125,6 +143,15 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
125
143
|
this.disconnect();
|
|
126
144
|
});
|
|
127
145
|
this.status = CONNECTOR_STATUS.CONNECTED;
|
|
146
|
+
|
|
147
|
+
// track connection events
|
|
148
|
+
if (shouldTrack) {
|
|
149
|
+
var _this$analytics, _this$analytics2;
|
|
150
|
+
(_this$analytics = this.analytics) === null || _this$analytics === void 0 || _this$analytics.track(ANALYTICS_EVENTS.CONNECTION_STARTED, eventData);
|
|
151
|
+
(_this$analytics2 = this.analytics) === null || _this$analytics2 === void 0 || _this$analytics2.track(ANALYTICS_EVENTS.CONNECTION_COMPLETED, _objectSpread(_objectSpread({}, eventData), {}, {
|
|
152
|
+
duration: Date.now() - startTime
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
128
155
|
this.emit(CONNECTOR_EVENTS.CONNECTED, {
|
|
129
156
|
connector: WALLET_CONNECTORS.METAMASK,
|
|
130
157
|
reconnected: this.rehydrated,
|
|
@@ -136,6 +163,15 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
136
163
|
this.status = CONNECTOR_STATUS.READY;
|
|
137
164
|
if (!this.rehydrated) this.emit(CONNECTOR_EVENTS.ERRORED, error);
|
|
138
165
|
this.rehydrated = false;
|
|
166
|
+
|
|
167
|
+
// track connection events
|
|
168
|
+
if (shouldTrack) {
|
|
169
|
+
var _this$analytics3, _this$analytics4;
|
|
170
|
+
(_this$analytics3 = this.analytics) === null || _this$analytics3 === void 0 || _this$analytics3.track(ANALYTICS_EVENTS.CONNECTION_STARTED, eventData);
|
|
171
|
+
(_this$analytics4 = this.analytics) === null || _this$analytics4 === void 0 || _this$analytics4.track(ANALYTICS_EVENTS.CONNECTION_FAILED, _objectSpread(_objectSpread(_objectSpread({}, eventData), getErrorAnalyticsProperties(error)), {}, {
|
|
172
|
+
duration: Date.now() - startTime
|
|
173
|
+
}));
|
|
174
|
+
}
|
|
139
175
|
if (error instanceof Web3AuthError) throw error;
|
|
140
176
|
throw WalletLoginError.connectionError("Failed to login with MetaMask wallet", error);
|
|
141
177
|
}
|
|
@@ -208,11 +244,13 @@ class MetaMaskConnector extends BaseEvmConnector {
|
|
|
208
244
|
}
|
|
209
245
|
const metaMaskConnector = params => {
|
|
210
246
|
return ({
|
|
211
|
-
coreOptions
|
|
247
|
+
coreOptions,
|
|
248
|
+
analytics
|
|
212
249
|
}) => {
|
|
213
250
|
return new MetaMaskConnector({
|
|
214
251
|
connectorSettings: params,
|
|
215
|
-
coreOptions
|
|
252
|
+
coreOptions,
|
|
253
|
+
analytics
|
|
216
254
|
});
|
|
217
255
|
};
|
|
218
256
|
};
|