@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.
Files changed (34) hide show
  1. package/dist/lib.cjs/base/analytics.js +13 -2
  2. package/dist/lib.cjs/base/utils.js +1 -1
  3. package/dist/lib.cjs/connectors/auth-connector/authConnector.js +24 -19
  4. package/dist/lib.cjs/connectors/metamask-connector/metamaskConnector.js +39 -7
  5. package/dist/lib.cjs/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +83 -26
  6. package/dist/lib.cjs/noModal.js +50 -16
  7. package/dist/lib.cjs/plugins/wallet-services-plugin/plugin.js +33 -8
  8. package/dist/lib.cjs/providers/solana-provider/solanaWallet.js +6 -0
  9. package/dist/lib.cjs/react/solana/hooks/useSolanaWallet.js +1 -1
  10. package/dist/lib.cjs/react/wagmi/provider.js +3 -0
  11. package/dist/lib.cjs/types/base/analytics.d.ts +5 -0
  12. package/dist/lib.cjs/types/base/connector/interfaces.d.ts +3 -0
  13. package/dist/lib.cjs/types/base/plugin/IPlugin.d.ts +2 -1
  14. package/dist/lib.cjs/types/connectors/auth-connector/authConnector.d.ts +4 -2
  15. package/dist/lib.cjs/types/noModal.d.ts +1 -0
  16. package/dist/lib.cjs/types/plugins/wallet-services-plugin/plugin.d.ts +3 -2
  17. package/dist/lib.cjs/types/providers/solana-provider/solanaWallet.d.ts +1 -0
  18. package/dist/lib.cjs/vue/solana/composables/useSolanaWallet.js +1 -1
  19. package/dist/lib.cjs/vue/wagmi/provider.js +4 -0
  20. package/dist/lib.esm/base/analytics.js +13 -2
  21. package/dist/lib.esm/base/utils.js +1 -1
  22. package/dist/lib.esm/connectors/auth-connector/authConnector.js +25 -19
  23. package/dist/lib.esm/connectors/metamask-connector/metamaskConnector.js +41 -3
  24. package/dist/lib.esm/connectors/wallet-connect-v2-connector/walletConnectV2Connector.js +78 -14
  25. package/dist/lib.esm/noModal.js +52 -17
  26. package/dist/lib.esm/plugins/wallet-services-plugin/plugin.js +36 -5
  27. package/dist/lib.esm/providers/solana-provider/solanaWallet.js +6 -0
  28. package/dist/lib.esm/react/context/Web3AuthInnerContext.js +1 -1
  29. package/dist/lib.esm/react/solana/hooks/useSolanaWallet.js +1 -1
  30. package/dist/lib.esm/react/wagmi/provider.js +3 -0
  31. package/dist/lib.esm/vue/solana/composables/useSolanaWallet.js +1 -1
  32. package/dist/lib.esm/vue/wagmi/provider.js +4 -0
  33. package/dist/noModal.umd.min.js +1 -1
  34. 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('@babel/runtime/helpers/objectSpread2');
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.requestAccounts();
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.requestAccounts();
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.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
- if (sessionTime) connectorSettings.sessionTime = sessionTime;
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
  };