@formo/analytics 1.11.7 → 1.11.9-alpha.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 (47) hide show
  1. package/README.md +5 -8
  2. package/dist/223.index.umd.min.js +125 -0
  3. package/dist/223.index.umd.min.js.map +1 -0
  4. package/dist/cjs/src/FormoAnalytics.d.ts +26 -33
  5. package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
  6. package/dist/cjs/src/FormoAnalytics.js +157 -205
  7. package/dist/cjs/src/FormoAnalytics.js.map +1 -1
  8. package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -1
  9. package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
  10. package/dist/cjs/src/types/base.d.ts +1 -1
  11. package/dist/cjs/src/types/base.d.ts.map +1 -1
  12. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  13. package/dist/esm/src/FormoAnalytics.d.ts +26 -33
  14. package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
  15. package/dist/esm/src/FormoAnalytics.js +157 -205
  16. package/dist/esm/src/FormoAnalytics.js.map +1 -1
  17. package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -1
  18. package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -1
  19. package/dist/esm/src/types/base.d.ts +1 -1
  20. package/dist/esm/src/types/base.d.ts.map +1 -1
  21. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  22. package/dist/index.umd.min.js +1 -1
  23. package/dist/index.umd.min.js.map +1 -1
  24. package/package.json +2 -2
  25. package/src/FormoAnalytics.ts +168 -222
  26. package/src/FormoAnalyticsProvider.tsx +0 -3
  27. package/src/types/base.ts +1 -1
  28. package/dist/387.index.umd.min.js +0 -125
  29. package/dist/387.index.umd.min.js.map +0 -1
  30. package/dist/cjs/src/utils/index.d.ts +0 -2
  31. package/dist/cjs/src/utils/index.d.ts.map +0 -1
  32. package/dist/cjs/src/utils/index.js +0 -18
  33. package/dist/cjs/src/utils/index.js.map +0 -1
  34. package/dist/cjs/src/utils/isNotEmptyObject.d.ts +0 -2
  35. package/dist/cjs/src/utils/isNotEmptyObject.d.ts.map +0 -1
  36. package/dist/cjs/src/utils/isNotEmptyObject.js +0 -9
  37. package/dist/cjs/src/utils/isNotEmptyObject.js.map +0 -1
  38. package/dist/esm/src/utils/index.d.ts +0 -2
  39. package/dist/esm/src/utils/index.d.ts.map +0 -1
  40. package/dist/esm/src/utils/index.js +0 -2
  41. package/dist/esm/src/utils/index.js.map +0 -1
  42. package/dist/esm/src/utils/isNotEmptyObject.d.ts +0 -2
  43. package/dist/esm/src/utils/isNotEmptyObject.d.ts.map +0 -1
  44. package/dist/esm/src/utils/isNotEmptyObject.js +0 -6
  45. package/dist/esm/src/utils/isNotEmptyObject.js.map +0 -1
  46. package/src/utils/index.ts +0 -1
  47. package/src/utils/isNotEmptyObject.ts +0 -5
@@ -3,11 +3,7 @@ interface IFormoAnalytics {
3
3
  /**
4
4
  * Initializes the FormoAnalytics instance with the provided API key and project ID.
5
5
  */
6
- init(apiKey: string, options: Options): Promise<FormoAnalytics>;
7
- /**
8
- * Identifies the user with the provided user data.
9
- */
10
- identify(userData: Record<string, any>): void;
6
+ init(apiKey: string, options?: Options): Promise<FormoAnalytics>;
11
7
  /**
12
8
  * Tracks page visit events.
13
9
  */
@@ -16,27 +12,27 @@ interface IFormoAnalytics {
16
12
  * Connects to a wallet with the specified chain ID and address.
17
13
  */
18
14
  connect(params: {
19
- account: string;
20
15
  chainId: ChainID;
16
+ address: string;
21
17
  }): Promise<void>;
22
18
  /**
23
19
  * Disconnects the current wallet and clears the session information.
24
20
  */
25
- disconnect(attributes?: {
26
- account?: string;
21
+ disconnect(params?: {
27
22
  chainId?: ChainID;
23
+ address?: string;
28
24
  }): void;
29
25
  /**
30
- * Tracks a specific event with a name and associated data.
26
+ * Switches the blockchain chain context and optionally logs additional params.
31
27
  */
32
- track(eventName: string, eventData: Record<string, any>): void;
33
- /**
34
- * Switches the blockchain chain context and optionally logs additional attributes.
35
- */
36
- chain(attributes: {
28
+ chain(params: {
37
29
  chainId: ChainID;
38
- account?: string;
30
+ address?: string;
39
31
  }): void;
32
+ /**
33
+ * Tracks a specific event with a name and associated data.
34
+ */
35
+ track(eventName: string, eventData: Record<string, any>): void;
40
36
  }
41
37
  export declare class FormoAnalytics implements IFormoAnalytics {
42
38
  readonly apiKey: string;
@@ -48,28 +44,26 @@ export declare class FormoAnalytics implements IFormoAnalytics {
48
44
  private sessionIdKey;
49
45
  private timezoneToCountry;
50
46
  currentChainId?: string | null;
51
- currentConnectedAccount?: string;
47
+ currentConnectedAddress?: string;
52
48
  private constructor();
53
- static init(apiKey: string, options: Options): Promise<FormoAnalytics>;
49
+ static init(apiKey: string, options?: Options): Promise<FormoAnalytics>;
54
50
  get provider(): EIP1193Provider | undefined;
55
- private identifyUser;
56
51
  private getSessionId;
57
52
  private getOrigin;
58
53
  private setSessionCookie;
59
54
  private generateSessionId;
60
55
  private getCookieValue;
61
56
  private trackEvent;
62
- private maskSensitiveData;
63
57
  private trackPageHit;
64
58
  private trackProvider;
59
+ private getCurrentWallet;
60
+ private getCurrentChainId;
61
+ private registerAddressChangedListener;
65
62
  private registerChainChangedListener;
66
- private handleAccountDisconnected;
63
+ private onAddressChanged;
64
+ private onAddressConnected;
65
+ private onAddressDisconnected;
67
66
  private onChainChanged;
68
- private onAccountsChanged;
69
- private registerAccountsChangedListener;
70
- private getCurrentChainId;
71
- private handleAccountConnected;
72
- private getCurrentWallet;
73
67
  /**
74
68
  * Stores the wallet address in session storage when connected.
75
69
  * @param address - The wallet address to store.
@@ -79,20 +73,19 @@ export declare class FormoAnalytics implements IFormoAnalytics {
79
73
  * Clears the wallet address from session storage when disconnected.
80
74
  */
81
75
  private clearWalletAddress;
82
- connect({ account, chainId }: {
83
- account: string;
76
+ init(apiKey: string, options: Options): Promise<FormoAnalytics>;
77
+ connect({ chainId, address }: {
84
78
  chainId: ChainID;
79
+ address: string;
85
80
  }): Promise<void>;
86
- disconnect(attributes?: {
87
- account?: string;
81
+ disconnect(params?: {
88
82
  chainId?: ChainID;
83
+ address?: string;
89
84
  }): Promise<void> | undefined;
90
- chain({ chainId, account }: {
85
+ chain({ chainId, address }: {
91
86
  chainId: ChainID;
92
- account?: string;
87
+ address?: string;
93
88
  }): Promise<void>;
94
- init(apiKey: string, options: Options): Promise<FormoAnalytics>;
95
- identify(userData: any): void;
96
89
  page(): void;
97
90
  track(eventName: string, eventData: any): void;
98
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FormoAnalytics.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalytics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FormoAnalytics.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalytics.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAE5D,UAAU,eAAe;IACvB;;OAEG;IACH,IAAI,CACF,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,cAAc,CAAC,CAAC;IAE3B;;OAEG;IACH,IAAI,IAAI,IAAI,CAAC;IAEb;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtE;;OAEG;IACH,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAEnE;;OAEG;IACH,KAAK,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAE5D;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;CAChE;AAID,qBAAa,cAAe,YAAW,eAAe;aAgBlC,MAAM,EAAE,MAAM;IACvB,OAAO,EAAE,OAAO;IAhBzB,OAAO,CAAC,SAAS,CAAC,CAAkB;IACpC,OAAO,CAAC,4BAA4B,CAG7B;IAEP,OAAO,CAAC,uBAAuB,CAAmB;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,iBAAiB,CAAwC;IAEjE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC,OAAO;WAeM,IAAI,CACf,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,cAAc,CAAC;IAU1B,IAAI,QAAQ,IAAI,eAAe,GAAG,SAAS,CAE1C;IAED,OAAO,CAAC,YAAY;IAWpB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,cAAc;YAUR,UAAU;IA6DxB,OAAO,CAAC,YAAY;IAoCpB,OAAO,CAAC,aAAa;YA4BP,gBAAgB;YAyChB,iBAAiB;IAiB/B,OAAO,CAAC,8BAA8B;IAYtC,OAAO,CAAC,4BAA4B;YAOtB,gBAAgB;YAWhB,kBAAkB;IAchC,OAAO,CAAC,qBAAqB;YAgBf,cAAc;IA4C5B;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAiB1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IAK/D,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAiBnE,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAkB3D,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAuBlE,IAAI;IAIJ,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG;CAGxC"}
@@ -1,15 +1,4 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -53,7 +42,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
53
42
  exports.FormoAnalytics = void 0;
54
43
  var axios_1 = __importDefault(require("axios"));
55
44
  var constants_1 = require("./constants");
56
- var utils_1 = require("./utils");
57
45
  var highlight_run_1 = require("highlight.run");
58
46
  var FormoAnalytics = /** @class */ (function () {
59
47
  function FormoAnalytics(apiKey, options) {
@@ -93,9 +81,6 @@ var FormoAnalytics = /** @class */ (function () {
93
81
  enumerable: false,
94
82
  configurable: true
95
83
  });
96
- FormoAnalytics.prototype.identifyUser = function (userData) {
97
- this.trackEvent(constants_1.Event.IDENTIFY, userData);
98
- };
99
84
  FormoAnalytics.prototype.getSessionId = function () {
100
85
  var existingSessionId = this.getCookieValue(this.sessionIdKey);
101
86
  if (existingSessionId) {
@@ -146,7 +131,7 @@ var FormoAnalytics = /** @class */ (function () {
146
131
  timestamp: new Date().toISOString(),
147
132
  action: action,
148
133
  version: '1',
149
- payload: (0, utils_1.isNotEmpty)(payload) ? this.maskSensitiveData(payload) : payload,
134
+ payload: payload,
150
135
  };
151
136
  sendRequest = function () { return __awaiter(_this, void 0, void 0, function () {
152
137
  var response, error_1, retryDelay;
@@ -158,7 +143,6 @@ var FormoAnalytics = /** @class */ (function () {
158
143
  headers: {
159
144
  'Content-Type': 'application/json',
160
145
  Authorization: "Bearer ".concat(this.apiKey),
161
- 'Origin': this.getOrigin(),
162
146
  },
163
147
  })];
164
148
  case 1:
@@ -195,62 +179,6 @@ var FormoAnalytics = /** @class */ (function () {
195
179
  });
196
180
  });
197
181
  };
198
- // Function to mask sensitive data in the payload
199
- FormoAnalytics.prototype.maskSensitiveData = function (data) {
200
- // Check if data is null or undefined
201
- if (data === null || data === undefined) {
202
- console.warn('Data is null or undefined, returning null');
203
- return null;
204
- }
205
- // Check if data is a string; if so, parse it to an object
206
- if (typeof data === 'string') {
207
- var parsedData = void 0;
208
- try {
209
- parsedData = JSON.parse(data);
210
- }
211
- catch (error) {
212
- console.error('Failed to parse JSON:', error);
213
- return null; // Return null if parsing fails
214
- }
215
- var sensitiveFields = [
216
- 'username',
217
- 'user',
218
- 'user_id',
219
- 'password',
220
- 'email',
221
- 'phone',
222
- ];
223
- // Create a new object to store masked data
224
- var maskedData_1 = __assign({}, parsedData);
225
- // Mask sensitive fields
226
- sensitiveFields.forEach(function (field) {
227
- if (field in maskedData_1) {
228
- maskedData_1[field] = '********'; // Replace value with masked string
229
- }
230
- });
231
- return maskedData_1; // Return the new object with masked fields
232
- }
233
- else if (typeof data === 'object') {
234
- // If data is already an object, handle masking directly
235
- var sensitiveFields = [
236
- 'username',
237
- 'user',
238
- 'user_id',
239
- 'password',
240
- 'email',
241
- 'phone',
242
- ];
243
- var maskedData_2 = __assign({}, data);
244
- // Mask sensitive fields
245
- sensitiveFields.forEach(function (field) {
246
- if (field in maskedData_2) {
247
- maskedData_2[field] = '********'; // Replace value with masked string
248
- }
249
- });
250
- return maskedData_2; // Return the new object with masked fields
251
- }
252
- return data;
253
- };
254
182
  // Function to track page hits
255
183
  FormoAnalytics.prototype.trackPageHit = function () {
256
184
  var _this = this;
@@ -274,6 +202,7 @@ var FormoAnalytics = /** @class */ (function () {
274
202
  var params = new URLSearchParams(url.search);
275
203
  _this.trackEvent(constants_1.Event.PAGE, {
276
204
  'user-agent': window.navigator.userAgent,
205
+ address: _this.currentConnectedAddress,
277
206
  locale: language,
278
207
  location: location,
279
208
  referrer: document.referrer,
@@ -288,10 +217,11 @@ var FormoAnalytics = /** @class */ (function () {
288
217
  };
289
218
  FormoAnalytics.prototype.trackProvider = function (provider) {
290
219
  if (provider === this._provider) {
220
+ console.log('Provider already tracked.');
291
221
  return;
292
222
  }
293
223
  this.currentChainId = undefined;
294
- this.currentConnectedAccount = undefined;
224
+ this.currentConnectedAddress = undefined;
295
225
  if (this._provider) {
296
226
  var eventNames = Object.keys(this._registeredProviderListeners);
297
227
  for (var _i = 0, eventNames_1 = eventNames; _i < eventNames_1.length; _i++) {
@@ -300,49 +230,25 @@ var FormoAnalytics = /** @class */ (function () {
300
230
  delete this._registeredProviderListeners[eventName];
301
231
  }
302
232
  }
233
+ console.log('Tracking new provider:', provider);
303
234
  this._provider = provider;
304
235
  this.getCurrentWallet();
305
- this.registerAccountsChangedListener();
236
+ this.registerAddressChangedListener();
306
237
  this.registerChainChangedListener();
307
238
  };
308
- FormoAnalytics.prototype.registerChainChangedListener = function () {
309
- var _this = this;
310
- var _a;
311
- var listener = function () {
312
- var args = [];
313
- for (var _i = 0; _i < arguments.length; _i++) {
314
- args[_i] = arguments[_i];
315
- }
316
- return _this.onChainChanged(args[0]);
317
- };
318
- (_a = this.provider) === null || _a === void 0 ? void 0 : _a.on('chainChanged', listener);
319
- this._registeredProviderListeners['chainChanged'] = listener;
320
- };
321
- FormoAnalytics.prototype.handleAccountDisconnected = function () {
322
- if (!this.currentConnectedAccount) {
323
- return;
324
- }
325
- var disconnectAttributes = {
326
- address: this.currentConnectedAccount,
327
- chainId: this.currentChainId,
328
- };
329
- this.currentChainId = undefined;
330
- this.currentConnectedAccount = undefined;
331
- this.clearWalletAddress();
332
- return this.trackEvent(constants_1.Event.DISCONNECT, disconnectAttributes);
333
- };
334
- FormoAnalytics.prototype.onChainChanged = function (chainIdHex) {
239
+ FormoAnalytics.prototype.getCurrentWallet = function () {
335
240
  return __awaiter(this, void 0, void 0, function () {
336
- var res, err_1;
241
+ var sessionData, accounts, address, err_1, parsedData, sessionExpiry, currentTime;
337
242
  return __generator(this, function (_a) {
338
243
  switch (_a.label) {
339
244
  case 0:
340
- this.currentChainId = parseInt(chainIdHex).toString();
341
- if (!!this.currentConnectedAccount) return [3 /*break*/, 4];
342
245
  if (!this.provider) {
343
- console.error('error', 'FormoAnalytics::onChainChanged: provider not found. CHAIN_CHANGED not reported');
246
+ console.warn('FormoAnalytics::getCurrentWallet: the provider is not set');
344
247
  return [2 /*return*/];
345
248
  }
249
+ sessionData = sessionStorage.getItem(this.walletAddressSessionKey);
250
+ if (!!sessionData) return [3 /*break*/, 5];
251
+ console.warn('Session data missing. Attempting to fetch address from provider.');
346
252
  _a.label = 1;
347
253
  case 1:
348
254
  _a.trys.push([1, 3, , 4]);
@@ -350,63 +256,33 @@ var FormoAnalytics = /** @class */ (function () {
350
256
  method: 'eth_accounts',
351
257
  })];
352
258
  case 2:
353
- res = _a.sent();
354
- if (!res || res.length === 0) {
355
- console.error('error', 'FormoAnalytics::onChainChanged: unable to get account. eth_accounts returned empty');
356
- return [2 /*return*/];
259
+ accounts = _a.sent();
260
+ if (accounts && accounts.length > 0) {
261
+ address = accounts[0];
262
+ this.storeWalletAddress(address);
263
+ return [2 /*return*/, address];
357
264
  }
358
- this.currentConnectedAccount = res[0];
359
265
  return [3 /*break*/, 4];
360
266
  case 3:
361
267
  err_1 = _a.sent();
362
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
363
- if (err_1.code !== 4001) {
364
- // 4001: The request is rejected by the user , see https://docs.metamask.io/wallet/reference/provider-api/#errors
365
- console.error('error', "FormoAnalytics::onChainChanged: unable to get account. eth_accounts threw an error", err_1);
366
- return [2 /*return*/];
367
- }
268
+ console.error('Failed to fetch accounts from provider:', err_1);
368
269
  return [3 /*break*/, 4];
369
- case 4: return [2 /*return*/, this.chain({
370
- chainId: this.currentChainId,
371
- account: this.currentConnectedAccount,
372
- })];
373
- }
374
- });
375
- });
376
- };
377
- FormoAnalytics.prototype.onAccountsChanged = function (accounts) {
378
- return __awaiter(this, void 0, void 0, function () {
379
- var newAccount;
380
- return __generator(this, function (_a) {
381
- if (accounts.length > 0) {
382
- newAccount = accounts[0];
383
- if (newAccount !== this.currentConnectedAccount) {
384
- this.handleAccountConnected(newAccount);
385
- }
386
- }
387
- else {
388
- this.handleAccountDisconnected();
270
+ case 4: return [2 /*return*/, null];
271
+ case 5:
272
+ parsedData = JSON.parse(sessionData);
273
+ sessionExpiry = 30 * 60 * 1000;
274
+ currentTime = Date.now();
275
+ if (currentTime - parsedData.timestamp > sessionExpiry) {
276
+ console.warn('Session expired. Ignoring wallet address.');
277
+ sessionStorage.removeItem(this.walletAddressSessionKey); // Clear expired session data
278
+ return [2 /*return*/, ''];
279
+ }
280
+ this.onAddressConnected(parsedData.address);
281
+ return [2 /*return*/, parsedData.address || ''];
389
282
  }
390
- return [2 /*return*/];
391
283
  });
392
284
  });
393
285
  };
394
- FormoAnalytics.prototype.registerAccountsChangedListener = function () {
395
- var _this = this;
396
- var _a, _b;
397
- var listener = function () {
398
- var args = [];
399
- for (var _i = 0; _i < arguments.length; _i++) {
400
- args[_i] = arguments[_i];
401
- }
402
- return _this.onAccountsChanged(args[0]);
403
- };
404
- (_a = this._provider) === null || _a === void 0 ? void 0 : _a.on('accountsChanged', listener);
405
- this._registeredProviderListeners['accountsChanged'] = listener;
406
- var handleAccountDisconnected = this.handleAccountDisconnected.bind(this);
407
- (_b = this._provider) === null || _b === void 0 ? void 0 : _b.on('disconnect', handleAccountDisconnected);
408
- this._registeredProviderListeners['disconnect'] = handleAccountDisconnected;
409
- };
410
286
  FormoAnalytics.prototype.getCurrentChainId = function () {
411
287
  return __awaiter(this, void 0, void 0, function () {
412
288
  var chainIdHex;
@@ -431,52 +307,129 @@ var FormoAnalytics = /** @class */ (function () {
431
307
  });
432
308
  });
433
309
  };
434
- FormoAnalytics.prototype.handleAccountConnected = function (account) {
310
+ FormoAnalytics.prototype.registerAddressChangedListener = function () {
311
+ var _this = this;
312
+ var _a, _b;
313
+ var listener = function () {
314
+ var args = [];
315
+ for (var _i = 0; _i < arguments.length; _i++) {
316
+ args[_i] = arguments[_i];
317
+ }
318
+ return _this.onAddressChanged(args[0]);
319
+ };
320
+ (_a = this._provider) === null || _a === void 0 ? void 0 : _a.on('accountsChanged', listener);
321
+ this._registeredProviderListeners['accountsChanged'] = listener;
322
+ var onAddressDisconnected = this.onAddressDisconnected.bind(this);
323
+ (_b = this._provider) === null || _b === void 0 ? void 0 : _b.on('disconnect', onAddressDisconnected);
324
+ this._registeredProviderListeners['disconnect'] = onAddressDisconnected;
325
+ };
326
+ FormoAnalytics.prototype.registerChainChangedListener = function () {
327
+ var _this = this;
328
+ var _a;
329
+ var listener = function () {
330
+ var args = [];
331
+ for (var _i = 0; _i < arguments.length; _i++) {
332
+ args[_i] = arguments[_i];
333
+ }
334
+ return _this.onChainChanged(args[0]);
335
+ };
336
+ (_a = this.provider) === null || _a === void 0 ? void 0 : _a.on('chainChanged', listener);
337
+ this._registeredProviderListeners['chainChanged'] = listener;
338
+ };
339
+ FormoAnalytics.prototype.onAddressChanged = function (addresses) {
340
+ return __awaiter(this, void 0, void 0, function () {
341
+ var newAccount;
342
+ return __generator(this, function (_a) {
343
+ if (addresses.length > 0) {
344
+ newAccount = addresses[0];
345
+ if (newAccount !== this.currentConnectedAddress) {
346
+ this.onAddressConnected(newAccount);
347
+ }
348
+ }
349
+ else {
350
+ this.onAddressDisconnected();
351
+ }
352
+ return [2 /*return*/];
353
+ });
354
+ });
355
+ };
356
+ FormoAnalytics.prototype.onAddressConnected = function (address) {
435
357
  return __awaiter(this, void 0, void 0, function () {
436
358
  var _a;
437
359
  return __generator(this, function (_b) {
438
360
  switch (_b.label) {
439
361
  case 0:
440
- if (account === this.currentConnectedAccount) {
441
- // We have already reported this account
362
+ if (address === this.currentConnectedAddress) {
363
+ // We have already reported this address
442
364
  return [2 /*return*/];
443
365
  }
444
366
  else {
445
- this.currentConnectedAccount = account;
367
+ this.currentConnectedAddress = address;
446
368
  }
447
369
  _a = this;
448
370
  return [4 /*yield*/, this.getCurrentChainId()];
449
371
  case 1:
450
372
  _a.currentChainId = _b.sent();
451
- this.connect({ account: account, chainId: this.currentChainId });
452
- this.storeWalletAddress(account);
373
+ this.connect({ chainId: this.currentChainId, address: address });
374
+ this.storeWalletAddress(address);
453
375
  return [2 /*return*/];
454
376
  }
455
377
  });
456
378
  });
457
379
  };
458
- FormoAnalytics.prototype.getCurrentWallet = function () {
380
+ FormoAnalytics.prototype.onAddressDisconnected = function () {
381
+ if (!this.currentConnectedAddress) {
382
+ return;
383
+ }
384
+ var payload = {
385
+ chain_id: this.currentChainId,
386
+ address: this.currentConnectedAddress,
387
+ };
388
+ this.currentChainId = undefined;
389
+ this.currentConnectedAddress = undefined;
390
+ this.clearWalletAddress();
391
+ return this.trackEvent(constants_1.Event.DISCONNECT, payload);
392
+ };
393
+ FormoAnalytics.prototype.onChainChanged = function (chainIdHex) {
459
394
  return __awaiter(this, void 0, void 0, function () {
460
- var sessionData, parsedData, sessionExpiry, currentTime;
395
+ var res, err_2;
461
396
  return __generator(this, function (_a) {
462
- if (!this.provider) {
463
- console.warn('FormoAnalytics::getCurrentWallet: the provider is not set');
464
- return [2 /*return*/];
465
- }
466
- sessionData = sessionStorage.getItem(this.walletAddressSessionKey);
467
- if (!sessionData) {
468
- return [2 /*return*/, null];
469
- }
470
- parsedData = JSON.parse(sessionData);
471
- sessionExpiry = 30 * 60 * 1000;
472
- currentTime = Date.now();
473
- if (currentTime - parsedData.timestamp > sessionExpiry) {
474
- console.warn('Session expired. Ignoring wallet address.');
475
- sessionStorage.removeItem(this.walletAddressSessionKey); // Clear expired session data
476
- return [2 /*return*/, ''];
397
+ switch (_a.label) {
398
+ case 0:
399
+ this.currentChainId = parseInt(chainIdHex).toString();
400
+ if (!!this.currentConnectedAddress) return [3 /*break*/, 4];
401
+ if (!this.provider) {
402
+ console.error('error', 'FormoAnalytics::onChainChanged: provider not found. CHAIN_CHANGED not reported');
403
+ return [2 /*return*/];
404
+ }
405
+ _a.label = 1;
406
+ case 1:
407
+ _a.trys.push([1, 3, , 4]);
408
+ return [4 /*yield*/, this.provider.request({
409
+ method: 'eth_accounts',
410
+ })];
411
+ case 2:
412
+ res = _a.sent();
413
+ if (!res || res.length === 0) {
414
+ console.error('error', 'FormoAnalytics::onChainChanged: unable to get account. eth_accounts returned empty');
415
+ return [2 /*return*/];
416
+ }
417
+ this.currentConnectedAddress = res[0];
418
+ return [3 /*break*/, 4];
419
+ case 3:
420
+ err_2 = _a.sent();
421
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
422
+ if (err_2.code !== 4001) {
423
+ // 4001: The request is rejected by the user , see https://docs.metamask.io/wallet/reference/provider-api/#errors
424
+ console.error('error', "FormoAnalytics::onChainChanged: unable to get account. eth_accounts threw an error", err_2);
425
+ return [2 /*return*/];
426
+ }
427
+ return [3 /*break*/, 4];
428
+ case 4: return [2 /*return*/, this.chain({
429
+ chainId: this.currentChainId,
430
+ address: this.currentConnectedAddress,
431
+ })];
477
432
  }
478
- this.handleAccountConnected(parsedData.address);
479
- return [2 /*return*/, parsedData.address || ''];
480
433
  });
481
434
  });
482
435
  };
@@ -501,58 +454,57 @@ var FormoAnalytics = /** @class */ (function () {
501
454
  FormoAnalytics.prototype.clearWalletAddress = function () {
502
455
  sessionStorage.removeItem(this.walletAddressSessionKey);
503
456
  };
457
+ FormoAnalytics.prototype.init = function (apiKey, options) {
458
+ var instance = new FormoAnalytics(apiKey, options);
459
+ return Promise.resolve(instance);
460
+ };
504
461
  FormoAnalytics.prototype.connect = function (_a) {
505
- var account = _a.account, chainId = _a.chainId;
462
+ var chainId = _a.chainId, address = _a.address;
506
463
  if (!chainId) {
507
- throw new Error('FormoAnalytics::connect: chainId cannot be empty');
464
+ throw new Error('FormoAnalytics::connect: chain ID cannot be empty');
508
465
  }
509
- if (!account) {
510
- throw new Error('FormoAnalytics::connect: account cannot be empty');
466
+ if (!address) {
467
+ throw new Error('FormoAnalytics::connect: address cannot be empty');
511
468
  }
512
469
  this.currentChainId = chainId.toString();
513
- this.currentConnectedAccount = account;
470
+ this.currentConnectedAddress = address;
514
471
  return this.trackEvent(constants_1.Event.CONNECT, {
515
- chainId: chainId,
516
- address: account,
472
+ chain_id: chainId,
473
+ address: address,
517
474
  });
518
475
  };
519
- FormoAnalytics.prototype.disconnect = function (attributes) {
520
- var account = (attributes === null || attributes === void 0 ? void 0 : attributes.account) || this.currentConnectedAccount;
521
- if (!account) {
476
+ FormoAnalytics.prototype.disconnect = function (params) {
477
+ var address = (params === null || params === void 0 ? void 0 : params.address) || this.currentConnectedAddress;
478
+ if (!address) {
522
479
  // We have most likely already reported this disconnection with the automatic
523
480
  // `disconnect` detection
524
481
  return;
525
482
  }
526
- var chainId = (attributes === null || attributes === void 0 ? void 0 : attributes.chainId) || this.currentChainId;
527
- var eventAttributes = __assign({ account: account }, (chainId && { chainId: chainId }));
483
+ var payload = {
484
+ chain_id: (params === null || params === void 0 ? void 0 : params.chainId) || this.currentChainId,
485
+ address: address,
486
+ };
528
487
  this.currentChainId = undefined;
529
- this.currentConnectedAccount = undefined;
530
- return this.trackEvent(constants_1.Event.DISCONNECT, eventAttributes);
488
+ this.currentConnectedAddress = undefined;
489
+ return this.trackEvent(constants_1.Event.DISCONNECT, payload);
531
490
  };
532
491
  FormoAnalytics.prototype.chain = function (_a) {
533
- var chainId = _a.chainId, account = _a.account;
492
+ var chainId = _a.chainId, address = _a.address;
534
493
  if (!chainId || Number(chainId) === 0) {
535
494
  throw new Error('FormoAnalytics::chain: chainId cannot be empty or 0');
536
495
  }
537
- if (!account && !this.currentConnectedAccount) {
538
- throw new Error('FormoAnalytics::chain: account was empty and no previous account has been recorded. You can either pass an account or call connect() first');
496
+ if (!address && !this.currentConnectedAddress) {
497
+ throw new Error('FormoAnalytics::chain: address was empty and no previous address has been recorded. You can either pass an address or call connect() first');
539
498
  }
540
499
  if (isNaN(Number(chainId))) {
541
500
  throw new Error('FormoAnalytics::chain: chainId must be a valid hex or decimal number');
542
501
  }
543
502
  this.currentChainId = chainId.toString();
544
503
  return this.trackEvent(constants_1.Event.CHAIN_CHANGED, {
545
- chainId: chainId,
546
- account: account || this.currentConnectedAccount,
504
+ chain_id: chainId,
505
+ address: address || this.currentConnectedAddress,
547
506
  });
548
507
  };
549
- FormoAnalytics.prototype.init = function (apiKey, options) {
550
- var instance = new FormoAnalytics(apiKey, options);
551
- return Promise.resolve(instance);
552
- };
553
- FormoAnalytics.prototype.identify = function (userData) {
554
- this.identifyUser(userData);
555
- };
556
508
  FormoAnalytics.prototype.page = function () {
557
509
  this.trackPageHit();
558
510
  };