@formo/analytics 1.13.4-alpha.1 → 1.13.4-alpha.11
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/CONTRIBUTING.md +1 -1
- package/dist/cjs/src/FormoAnalytics.d.ts +6 -8
- package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalytics.js +119 -114
- package/dist/cjs/src/FormoAnalytics.js.map +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts +2 -3
- package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.js +2 -33
- package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
- package/dist/cjs/src/constants/base.d.ts +3 -0
- package/dist/cjs/src/constants/base.d.ts.map +1 -0
- package/dist/cjs/src/constants/base.js +6 -0
- package/dist/cjs/src/constants/base.js.map +1 -0
- package/dist/cjs/src/constants/index.d.ts +4 -2
- package/dist/cjs/src/constants/index.d.ts.map +1 -1
- package/dist/cjs/src/constants/index.js +2 -0
- package/dist/cjs/src/constants/index.js.map +1 -1
- package/dist/cjs/src/constants/regex.d.ts +4 -0
- package/dist/cjs/src/constants/regex.d.ts.map +1 -0
- package/dist/cjs/src/constants/regex.js +7 -0
- package/dist/cjs/src/constants/regex.js.map +1 -0
- package/dist/cjs/src/lib/index.d.ts +3 -0
- package/dist/cjs/src/lib/index.d.ts.map +1 -0
- package/dist/cjs/src/lib/index.js +24 -0
- package/dist/cjs/src/lib/index.js.map +1 -0
- package/dist/cjs/src/lib/session-storage.d.ts +11 -0
- package/dist/cjs/src/lib/session-storage.d.ts.map +1 -0
- package/dist/cjs/src/lib/session-storage.js +52 -0
- package/dist/cjs/src/lib/session-storage.js.map +1 -0
- package/dist/cjs/src/lib/utils.d.ts +2 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -1
- package/dist/cjs/src/lib/utils.js +8 -0
- package/dist/cjs/src/lib/utils.js.map +1 -1
- package/dist/cjs/src/types/base.d.ts +2 -1
- package/dist/cjs/src/types/base.d.ts.map +1 -1
- package/dist/cjs/test/lib.spec.js +11 -3
- package/dist/cjs/test/lib.spec.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/FormoAnalytics.d.ts +168 -0
- package/dist/esm/src/FormoAnalytics.d.ts.map +1 -0
- package/dist/esm/src/FormoAnalytics.js +947 -0
- package/dist/esm/src/FormoAnalytics.js.map +1 -0
- package/dist/esm/src/FormoAnalyticsProvider.d.ts +6 -0
- package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -0
- package/dist/esm/src/FormoAnalyticsProvider.js +123 -0
- package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -0
- package/dist/esm/src/constants/base.d.ts +3 -0
- package/dist/esm/src/constants/base.d.ts.map +1 -0
- package/dist/esm/src/constants/base.js +3 -0
- package/dist/esm/src/constants/base.js.map +1 -0
- package/dist/esm/src/constants/config.d.ts +602 -0
- package/dist/esm/src/constants/config.d.ts.map +1 -0
- package/dist/esm/src/constants/config.js +654 -0
- package/dist/esm/src/constants/config.js.map +1 -0
- package/dist/esm/src/constants/events.d.ts +10 -0
- package/dist/esm/src/constants/events.d.ts.map +1 -0
- package/dist/esm/src/constants/events.js +11 -0
- package/dist/esm/src/constants/events.js.map +1 -0
- package/dist/esm/src/constants/index.d.ts +5 -0
- package/dist/esm/src/constants/index.d.ts.map +1 -0
- package/dist/esm/src/constants/index.js +5 -0
- package/dist/esm/src/constants/index.js.map +1 -0
- package/dist/esm/src/constants/regex.d.ts +4 -0
- package/dist/esm/src/constants/regex.d.ts.map +1 -0
- package/dist/esm/src/constants/regex.js +4 -0
- package/dist/esm/src/constants/regex.js.map +1 -0
- package/dist/esm/src/index.d.ts +4 -0
- package/dist/esm/src/index.d.ts.map +1 -0
- package/dist/esm/src/index.js +4 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/lib/index.d.ts +3 -0
- package/dist/esm/src/lib/index.d.ts.map +1 -0
- package/dist/esm/src/lib/index.js +3 -0
- package/dist/esm/src/lib/index.js.map +1 -0
- package/dist/esm/src/lib/session-storage.d.ts +11 -0
- package/dist/esm/src/lib/session-storage.d.ts.map +1 -0
- package/dist/esm/src/lib/session-storage.js +49 -0
- package/dist/esm/src/lib/session-storage.js.map +1 -0
- package/dist/esm/src/lib/utils.d.ts +4 -0
- package/dist/esm/src/lib/utils.d.ts.map +1 -0
- package/dist/esm/src/lib/utils.js +33 -0
- package/dist/esm/src/lib/utils.js.map +1 -0
- package/dist/esm/src/types/base.d.ts +18 -0
- package/dist/esm/src/types/base.d.ts.map +1 -0
- package/dist/esm/src/types/base.js +2 -0
- package/dist/esm/src/types/base.js.map +1 -0
- package/dist/esm/src/types/events.d.ts +11 -0
- package/dist/esm/src/types/events.d.ts.map +1 -0
- package/dist/esm/src/types/events.js +13 -0
- package/dist/esm/src/types/events.js.map +1 -0
- package/dist/esm/src/types/index.d.ts +4 -0
- package/dist/esm/src/types/index.d.ts.map +1 -0
- package/dist/esm/src/types/index.js +4 -0
- package/dist/esm/src/types/index.js.map +1 -0
- package/dist/esm/src/types/provider.d.ts +15 -0
- package/dist/esm/src/types/provider.d.ts.map +1 -0
- package/dist/esm/src/types/provider.js +2 -0
- package/dist/esm/src/types/provider.js.map +1 -0
- package/dist/esm/test/lib.spec.d.ts +2 -0
- package/dist/esm/test/lib.spec.d.ts.map +1 -0
- package/dist/esm/test/lib.spec.js +31 -0
- package/dist/esm/test/lib.spec.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/index.umd.min.js +3 -0
- package/dist/index.umd.min.js.LICENSE.txt +19 -0
- package/dist/index.umd.min.js.map +1 -0
- package/package.json +4 -3
- package/src/FormoAnalytics.ts +61 -18
- package/src/FormoAnalyticsProvider.tsx +2 -8
- package/src/constants/base.ts +2 -0
- package/src/constants/index.ts +4 -2
- package/src/constants/regex.ts +3 -0
- package/src/lib/index.ts +2 -0
- package/src/lib/session-storage.ts +53 -0
- package/src/lib/utils.ts +9 -0
- package/src/types/base.ts +5 -3
- package/test/lib.spec.ts +13 -1
package/CONTRIBUTING.md
CHANGED
|
@@ -31,16 +31,15 @@ interface IFormoAnalytics {
|
|
|
31
31
|
}): Promise<void>;
|
|
32
32
|
identify(params: {
|
|
33
33
|
address: Address;
|
|
34
|
-
providerName?: string;
|
|
35
|
-
rdns?: string;
|
|
36
34
|
}): Promise<void>;
|
|
37
35
|
track(action: string, payload: Record<string, any>): Promise<void>;
|
|
38
36
|
}
|
|
39
37
|
export declare class FormoAnalytics implements IFormoAnalytics {
|
|
40
38
|
readonly apiKey: string;
|
|
41
39
|
options: Options;
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
private _provider?;
|
|
41
|
+
private _providerListeners;
|
|
42
|
+
private session;
|
|
44
43
|
config: Config;
|
|
45
44
|
currentChainId?: ChainID;
|
|
46
45
|
currentConnectedAddress?: Address;
|
|
@@ -121,12 +120,12 @@ export declare class FormoAnalytics implements IFormoAnalytics {
|
|
|
121
120
|
transactionHash?: string;
|
|
122
121
|
}): Promise<void>;
|
|
123
122
|
/**
|
|
124
|
-
* Emits
|
|
123
|
+
* Emits an identify event with current wallet address.
|
|
125
124
|
* @param {Address} params.address
|
|
126
125
|
* @returns {Promise<void>}
|
|
127
126
|
*/
|
|
128
127
|
identify({ address, providerName, rdns, }: {
|
|
129
|
-
address: Address;
|
|
128
|
+
address: Address | null;
|
|
130
129
|
providerName?: string;
|
|
131
130
|
rdns?: string;
|
|
132
131
|
}): Promise<void>;
|
|
@@ -138,15 +137,14 @@ export declare class FormoAnalytics implements IFormoAnalytics {
|
|
|
138
137
|
*/
|
|
139
138
|
track(action: string, payload: Record<string, any>): Promise<void>;
|
|
140
139
|
private trackProvider;
|
|
141
|
-
private clearProvider;
|
|
142
140
|
private registerAddressChangedListener;
|
|
143
141
|
private registerChainChangedListener;
|
|
144
142
|
private registerSignatureListener;
|
|
145
143
|
private registerTransactionListener;
|
|
146
144
|
private onAddressChanged;
|
|
147
145
|
private onAddressConnected;
|
|
148
|
-
private onAddressDisconnected;
|
|
149
146
|
private handleDisconnect;
|
|
147
|
+
private onAddressDisconnected;
|
|
150
148
|
private onChainChanged;
|
|
151
149
|
private trackFirstPageHit;
|
|
152
150
|
private trackPageHits;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormoAnalytics.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalytics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FormoAnalytics.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalytics.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,19 +63,20 @@ exports.FormoAnalytics = void 0;
|
|
|
63
63
|
var axios_1 = __importDefault(require("axios"));
|
|
64
64
|
var mipd_1 = require("mipd");
|
|
65
65
|
var constants_1 = require("./constants");
|
|
66
|
-
var highlight_run_1 = require("highlight.run");
|
|
67
66
|
var types_1 = require("./types");
|
|
68
|
-
var
|
|
67
|
+
var lib_1 = require("./lib");
|
|
68
|
+
var constants_2 = require("./constants");
|
|
69
69
|
var FormoAnalytics = /** @class */ (function () {
|
|
70
70
|
function FormoAnalytics(apiKey, options) {
|
|
71
71
|
if (options === void 0) { options = {}; }
|
|
72
72
|
this.apiKey = apiKey;
|
|
73
73
|
this.options = options;
|
|
74
|
-
this.
|
|
74
|
+
this._providerListeners = {};
|
|
75
75
|
this.config = {
|
|
76
76
|
apiKey: apiKey,
|
|
77
|
-
|
|
77
|
+
trackLocalhost: options.trackLocalhost,
|
|
78
78
|
};
|
|
79
|
+
this.session = new FormoAnalyticsSession();
|
|
79
80
|
// TODO: replace with eip6963
|
|
80
81
|
var provider = options.provider || (window === null || window === void 0 ? void 0 : window.ethereum);
|
|
81
82
|
if (provider) {
|
|
@@ -257,7 +258,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
257
258
|
});
|
|
258
259
|
};
|
|
259
260
|
/**
|
|
260
|
-
* Emits
|
|
261
|
+
* Emits an identify event with current wallet address.
|
|
261
262
|
* @param {Address} params.address
|
|
262
263
|
* @returns {Promise<void>}
|
|
263
264
|
*/
|
|
@@ -267,7 +268,9 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
267
268
|
return __generator(this, function (_c) {
|
|
268
269
|
switch (_c.label) {
|
|
269
270
|
case 0:
|
|
270
|
-
if (
|
|
271
|
+
if (this.session.isIdentified())
|
|
272
|
+
return [2 /*return*/, console.warn("FormoAnalytics::identify: Wallet already identified in this session")];
|
|
273
|
+
this.session.identify();
|
|
271
274
|
return [4 /*yield*/, this.trackEvent(constants_1.Event.IDENTIFY, {
|
|
272
275
|
address: address,
|
|
273
276
|
providerName: providerName,
|
|
@@ -275,8 +278,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
275
278
|
})];
|
|
276
279
|
case 1:
|
|
277
280
|
_c.sent();
|
|
278
|
-
|
|
279
|
-
case 2: return [2 /*return*/];
|
|
281
|
+
return [2 /*return*/];
|
|
280
282
|
}
|
|
281
283
|
});
|
|
282
284
|
});
|
|
@@ -303,38 +305,26 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
303
305
|
SDK tracking and event listener functions
|
|
304
306
|
*/
|
|
305
307
|
FormoAnalytics.prototype.trackProvider = function (provider) {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
console.log("Provider already tracked.");
|
|
308
|
+
if (provider === this._provider) {
|
|
309
|
+
console.warn("FormoAnalytics::trackProvider: Provider already tracked.");
|
|
309
310
|
return;
|
|
310
311
|
}
|
|
311
|
-
this.
|
|
312
|
-
this.
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
this.registerAddressChangedListener(provider);
|
|
316
|
-
this.registerChainChangedListener(provider);
|
|
317
|
-
this.registerSignatureListener(provider);
|
|
318
|
-
this.registerTransactionListener(provider);
|
|
319
|
-
};
|
|
320
|
-
FormoAnalytics.prototype.clearProvider = function (provider) {
|
|
321
|
-
console.log('clearProvider', provider, this.currentProvider);
|
|
322
|
-
// Only clear if the current provider is the same as the one we are clearing
|
|
323
|
-
if (this.currentProvider && provider === this.currentProvider) {
|
|
324
|
-
this.currentChainId = undefined;
|
|
325
|
-
this.currentConnectedAddress = undefined;
|
|
326
|
-
var actions = Object.keys(this.currentProviderListeners);
|
|
312
|
+
this.currentChainId = undefined;
|
|
313
|
+
this.currentConnectedAddress = undefined;
|
|
314
|
+
if (this._provider) {
|
|
315
|
+
var actions = Object.keys(this._providerListeners);
|
|
327
316
|
for (var _i = 0, actions_1 = actions; _i < actions_1.length; _i++) {
|
|
328
317
|
var action = actions_1[_i];
|
|
329
|
-
this.
|
|
330
|
-
delete this.
|
|
318
|
+
this._provider.removeListener(action, this._providerListeners[action]);
|
|
319
|
+
delete this._providerListeners[action];
|
|
331
320
|
}
|
|
332
|
-
this.currentProvider = undefined;
|
|
333
|
-
console.log('cleared provider', provider);
|
|
334
|
-
}
|
|
335
|
-
else {
|
|
336
|
-
console.log('skip clearing provider', provider);
|
|
337
321
|
}
|
|
322
|
+
this._provider = provider;
|
|
323
|
+
// Register listeners for web3 provider events
|
|
324
|
+
this.registerAddressChangedListener();
|
|
325
|
+
this.registerChainChangedListener();
|
|
326
|
+
this.registerSignatureListener();
|
|
327
|
+
this.registerTransactionListener();
|
|
338
328
|
};
|
|
339
329
|
FormoAnalytics.prototype.registerAddressChangedListener = function () {
|
|
340
330
|
var _this = this;
|
|
@@ -346,11 +336,11 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
346
336
|
}
|
|
347
337
|
return _this.onAddressChanged(args[0]);
|
|
348
338
|
};
|
|
349
|
-
(_a = this.
|
|
350
|
-
this.
|
|
339
|
+
(_a = this._provider) === null || _a === void 0 ? void 0 : _a.on("accountsChanged", listener);
|
|
340
|
+
this._providerListeners["accountsChanged"] = listener;
|
|
351
341
|
var onAddressDisconnected = this.onAddressDisconnected.bind(this);
|
|
352
|
-
(_b = this.
|
|
353
|
-
this.
|
|
342
|
+
(_b = this._provider) === null || _b === void 0 ? void 0 : _b.on("disconnect", onAddressDisconnected);
|
|
343
|
+
this._providerListeners["disconnect"] = onAddressDisconnected;
|
|
354
344
|
};
|
|
355
345
|
FormoAnalytics.prototype.registerChainChangedListener = function () {
|
|
356
346
|
var _this = this;
|
|
@@ -362,29 +352,28 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
362
352
|
}
|
|
363
353
|
return _this.onChainChanged(args[0]);
|
|
364
354
|
};
|
|
365
|
-
(_a = this.
|
|
366
|
-
this.
|
|
355
|
+
(_a = this.provider) === null || _a === void 0 ? void 0 : _a.on("chainChanged", listener);
|
|
356
|
+
this._providerListeners["chainChanged"] = listener;
|
|
367
357
|
};
|
|
368
358
|
FormoAnalytics.prototype.registerSignatureListener = function () {
|
|
369
359
|
var _this = this;
|
|
370
360
|
var _a;
|
|
371
|
-
if (!this.
|
|
361
|
+
if (!this.provider) {
|
|
372
362
|
console.error("_trackSigning: provider not found");
|
|
373
363
|
return;
|
|
374
364
|
}
|
|
375
|
-
if (((_a = Object.getOwnPropertyDescriptor(this.
|
|
365
|
+
if (((_a = Object.getOwnPropertyDescriptor(this.provider, "request")) === null || _a === void 0 ? void 0 : _a.writable) ===
|
|
376
366
|
false) {
|
|
377
367
|
console.warn("_trackSigning: provider.request is not writable");
|
|
378
368
|
return;
|
|
379
369
|
}
|
|
380
|
-
var request = this.
|
|
381
|
-
this.
|
|
370
|
+
var request = this.provider.request.bind(this.provider);
|
|
371
|
+
this.provider.request = function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
|
|
382
372
|
var response, error_1, rpcError;
|
|
383
373
|
var method = _b.method, params = _b.params;
|
|
384
374
|
return __generator(this, function (_c) {
|
|
385
375
|
switch (_c.label) {
|
|
386
376
|
case 0:
|
|
387
|
-
console.log('signature listener', method, params, this.currentProvider);
|
|
388
377
|
if (!(Array.isArray(params) &&
|
|
389
378
|
["eth_signTypedData_v4", "personal_sign"].includes(method))) return [3 /*break*/, 4];
|
|
390
379
|
// Emit signature request event
|
|
@@ -417,17 +406,17 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
417
406
|
FormoAnalytics.prototype.registerTransactionListener = function () {
|
|
418
407
|
var _this = this;
|
|
419
408
|
var _a;
|
|
420
|
-
if (!this.
|
|
409
|
+
if (!this.provider) {
|
|
421
410
|
console.error("_trackTransactions: provider not found");
|
|
422
411
|
return;
|
|
423
412
|
}
|
|
424
|
-
if (((_a = Object.getOwnPropertyDescriptor(this.
|
|
413
|
+
if (((_a = Object.getOwnPropertyDescriptor(this.provider, "request")) === null || _a === void 0 ? void 0 : _a.writable) ===
|
|
425
414
|
false) {
|
|
426
415
|
console.warn("_trackTransactions: provider.request is not writable");
|
|
427
416
|
return;
|
|
428
417
|
}
|
|
429
|
-
var request = this.
|
|
430
|
-
this.
|
|
418
|
+
var request = this.provider.request.bind(this.provider);
|
|
419
|
+
this.provider.request = function (_a) { return __awaiter(_this, [_a], void 0, function (_b) {
|
|
431
420
|
var payload, transactionHash, error_2, rpcError;
|
|
432
421
|
var method = _b.method, params = _b.params;
|
|
433
422
|
return __generator(this, function (_c) {
|
|
@@ -451,6 +440,8 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
451
440
|
return [2 /*return*/];
|
|
452
441
|
case 4:
|
|
453
442
|
error_2 = _c.sent();
|
|
443
|
+
console.log("transaction listener catch");
|
|
444
|
+
console.log(error_2);
|
|
454
445
|
rpcError = error_2;
|
|
455
446
|
if (rpcError && (rpcError === null || rpcError === void 0 ? void 0 : rpcError.code) === 4001) {
|
|
456
447
|
// Emit transaction rejected event
|
|
@@ -466,7 +457,6 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
466
457
|
FormoAnalytics.prototype.onAddressChanged = function (addresses) {
|
|
467
458
|
return __awaiter(this, void 0, void 0, function () {
|
|
468
459
|
return __generator(this, function (_a) {
|
|
469
|
-
console.log('onAddressChanged', addresses);
|
|
470
460
|
if (addresses.length > 0) {
|
|
471
461
|
this.onAddressConnected(addresses[0]);
|
|
472
462
|
}
|
|
@@ -483,7 +473,6 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
483
473
|
return __generator(this, function (_b) {
|
|
484
474
|
switch (_b.label) {
|
|
485
475
|
case 0:
|
|
486
|
-
console.log('onAddressConnected', address);
|
|
487
476
|
if (address === this.currentConnectedAddress) {
|
|
488
477
|
// We have already reported this address
|
|
489
478
|
return [2 /*return*/];
|
|
@@ -501,13 +490,19 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
501
490
|
});
|
|
502
491
|
});
|
|
503
492
|
};
|
|
504
|
-
FormoAnalytics.prototype.
|
|
493
|
+
FormoAnalytics.prototype.handleDisconnect = function (chainId, address) {
|
|
505
494
|
return __awaiter(this, void 0, void 0, function () {
|
|
495
|
+
var payload;
|
|
506
496
|
return __generator(this, function (_a) {
|
|
507
497
|
switch (_a.label) {
|
|
508
498
|
case 0:
|
|
509
|
-
|
|
510
|
-
|
|
499
|
+
payload = {
|
|
500
|
+
chain_id: chainId || this.currentChainId,
|
|
501
|
+
address: address || this.currentConnectedAddress,
|
|
502
|
+
};
|
|
503
|
+
this.currentChainId = undefined;
|
|
504
|
+
this.currentConnectedAddress = undefined;
|
|
505
|
+
return [4 /*yield*/, this.trackEvent(constants_1.Event.DISCONNECT, payload)];
|
|
511
506
|
case 1:
|
|
512
507
|
_a.sent();
|
|
513
508
|
return [2 /*return*/];
|
|
@@ -515,19 +510,11 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
515
510
|
});
|
|
516
511
|
});
|
|
517
512
|
};
|
|
518
|
-
FormoAnalytics.prototype.
|
|
513
|
+
FormoAnalytics.prototype.onAddressDisconnected = function () {
|
|
519
514
|
return __awaiter(this, void 0, void 0, function () {
|
|
520
|
-
var payload;
|
|
521
515
|
return __generator(this, function (_a) {
|
|
522
516
|
switch (_a.label) {
|
|
523
|
-
case 0:
|
|
524
|
-
payload = {
|
|
525
|
-
chain_id: chainId || this.currentChainId,
|
|
526
|
-
address: address || this.currentConnectedAddress,
|
|
527
|
-
};
|
|
528
|
-
this.currentChainId = undefined;
|
|
529
|
-
this.currentConnectedAddress = undefined;
|
|
530
|
-
return [4 /*yield*/, this.trackEvent(constants_1.Event.DISCONNECT, payload)];
|
|
517
|
+
case 0: return [4 /*yield*/, this.handleDisconnect(this.currentChainId, this.currentConnectedAddress)];
|
|
531
518
|
case 1:
|
|
532
519
|
_a.sent();
|
|
533
520
|
return [2 /*return*/];
|
|
@@ -542,9 +529,8 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
542
529
|
switch (_a.label) {
|
|
543
530
|
case 0:
|
|
544
531
|
this.currentChainId = parseInt(chainIdHex);
|
|
545
|
-
console.log('onChainChanged', this.currentChainId);
|
|
546
532
|
if (!!this.currentConnectedAddress) return [3 /*break*/, 2];
|
|
547
|
-
if (!this.
|
|
533
|
+
if (!this.provider) {
|
|
548
534
|
console.log("FormoAnalytics::onChainChanged: provider not found. CHAIN_CHANGED not reported");
|
|
549
535
|
return [2 /*return*/, Promise.resolve()];
|
|
550
536
|
}
|
|
@@ -576,8 +562,8 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
576
562
|
FormoAnalytics.prototype.trackFirstPageHit = function () {
|
|
577
563
|
return __awaiter(this, void 0, void 0, function () {
|
|
578
564
|
return __generator(this, function (_a) {
|
|
579
|
-
if (
|
|
580
|
-
|
|
565
|
+
if (lib_1.session.get(constants_1.CURRENT_URL_KEY) === null) {
|
|
566
|
+
lib_1.session.set(constants_1.CURRENT_URL_KEY, window.location.href);
|
|
581
567
|
}
|
|
582
568
|
return [2 /*return*/, this.trackPageHit()];
|
|
583
569
|
});
|
|
@@ -618,9 +604,9 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
618
604
|
return __awaiter(this, void 0, void 0, function () {
|
|
619
605
|
var currentUrl;
|
|
620
606
|
return __generator(this, function (_a) {
|
|
621
|
-
currentUrl =
|
|
607
|
+
currentUrl = lib_1.session.get(constants_1.CURRENT_URL_KEY);
|
|
622
608
|
if (currentUrl !== window.location.href) {
|
|
623
|
-
|
|
609
|
+
lib_1.session.set(constants_1.CURRENT_URL_KEY, window.location.href);
|
|
624
610
|
this.trackPageHit();
|
|
625
611
|
}
|
|
626
612
|
return [2 /*return*/];
|
|
@@ -632,6 +618,9 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
632
618
|
var pathname = window.location.pathname;
|
|
633
619
|
var href = window.location.href;
|
|
634
620
|
var hash = window.location.hash;
|
|
621
|
+
if (!this.config.trackLocalhost && (0, lib_1.isLocalhost)()) {
|
|
622
|
+
return console.warn("FormoAnalytics::trackPageHit: Ignoring event because website is running locally");
|
|
623
|
+
}
|
|
635
624
|
setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
636
625
|
return __generator(this, function (_a) {
|
|
637
626
|
this.trackEvent(constants_1.Event.PAGE, {
|
|
@@ -647,53 +636,46 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
647
636
|
// https://linear.app/getformo/issue/P-835/sdk-refactor-retries-with-event-queue-and-batching
|
|
648
637
|
FormoAnalytics.prototype.trackEvent = function (action, payload) {
|
|
649
638
|
return __awaiter(this, void 0, void 0, function () {
|
|
650
|
-
var address,
|
|
651
|
-
var
|
|
652
|
-
return __generator(this, function (
|
|
653
|
-
switch (
|
|
654
|
-
case 0:
|
|
655
|
-
_a = payload.address;
|
|
656
|
-
if (_a) return [3 /*break*/, 2];
|
|
657
|
-
return [4 /*yield*/, this.getAddress()];
|
|
639
|
+
var address, requestData, response, error_3;
|
|
640
|
+
var _a;
|
|
641
|
+
return __generator(this, function (_b) {
|
|
642
|
+
switch (_b.label) {
|
|
643
|
+
case 0: return [4 /*yield*/, this.getAddress()];
|
|
658
644
|
case 1:
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
case 2:
|
|
662
|
-
address = _a;
|
|
663
|
-
_b = {
|
|
645
|
+
address = _b.sent();
|
|
646
|
+
_a = {
|
|
664
647
|
address: address,
|
|
665
648
|
timestamp: new Date().toISOString(),
|
|
666
649
|
action: action,
|
|
667
650
|
version: "1"
|
|
668
651
|
};
|
|
669
|
-
return [4 /*yield*/, this.buildEventPayload((0,
|
|
652
|
+
return [4 /*yield*/, this.buildEventPayload((0, lib_1.toSnakeCase)(payload))];
|
|
653
|
+
case 2:
|
|
654
|
+
requestData = (_a.payload = _b.sent(),
|
|
655
|
+
_a);
|
|
656
|
+
_b.label = 3;
|
|
670
657
|
case 3:
|
|
671
|
-
|
|
672
|
-
_b);
|
|
673
|
-
_c.label = 4;
|
|
674
|
-
case 4:
|
|
675
|
-
_c.trys.push([4, 6, , 7]);
|
|
658
|
+
_b.trys.push([3, 5, , 6]);
|
|
676
659
|
return [4 /*yield*/, axios_1.default.post(constants_1.EVENTS_API_URL, JSON.stringify(requestData), {
|
|
677
660
|
headers: {
|
|
678
661
|
"Content-Type": "application/json",
|
|
679
662
|
Authorization: "Bearer ".concat(this.config.apiKey),
|
|
680
663
|
},
|
|
681
664
|
})];
|
|
682
|
-
case
|
|
683
|
-
response =
|
|
665
|
+
case 4:
|
|
666
|
+
response = _b.sent();
|
|
684
667
|
if (response.status >= 200 && response.status < 300) {
|
|
685
668
|
console.log("Event sent successfully: ".concat(this.getActionDescriptor(action, payload)));
|
|
686
669
|
}
|
|
687
670
|
else {
|
|
688
671
|
throw new Error("Failed with status: ".concat(response.status));
|
|
689
672
|
}
|
|
690
|
-
return [3 /*break*/,
|
|
691
|
-
case
|
|
692
|
-
error_3 =
|
|
693
|
-
highlight_run_1.H.consumeError(error_3, "Request data: ".concat(JSON.stringify(requestData)));
|
|
673
|
+
return [3 /*break*/, 6];
|
|
674
|
+
case 5:
|
|
675
|
+
error_3 = _b.sent();
|
|
694
676
|
console.error("Event \"".concat(action, "\" failed. Error: ").concat(error_3));
|
|
695
|
-
return [3 /*break*/,
|
|
696
|
-
case
|
|
677
|
+
return [3 /*break*/, 6];
|
|
678
|
+
case 6: return [2 /*return*/];
|
|
697
679
|
}
|
|
698
680
|
});
|
|
699
681
|
});
|
|
@@ -726,15 +708,15 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
726
708
|
_i = 0, providers_1 = providers;
|
|
727
709
|
_c.label = 1;
|
|
728
710
|
case 1:
|
|
729
|
-
if (!(_i < providers_1.length)) return [3 /*break*/,
|
|
711
|
+
if (!(_i < providers_1.length)) return [3 /*break*/, 13];
|
|
730
712
|
_a = providers_1[_i], provider = _a.provider, info = _a.info;
|
|
731
713
|
_c.label = 2;
|
|
732
714
|
case 2:
|
|
733
|
-
_c.trys.push([2,
|
|
715
|
+
_c.trys.push([2, 11, , 12]);
|
|
734
716
|
return [4 /*yield*/, this.getAccounts(provider)];
|
|
735
717
|
case 3:
|
|
736
718
|
accounts = _c.sent();
|
|
737
|
-
if (!(accounts && accounts.length > 0)) return [3 /*break*/,
|
|
719
|
+
if (!(accounts && accounts.length > 0)) return [3 /*break*/, 8];
|
|
738
720
|
_b = 0, accounts_1 = accounts;
|
|
739
721
|
_c.label = 4;
|
|
740
722
|
case 4:
|
|
@@ -751,21 +733,34 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
751
733
|
case 6:
|
|
752
734
|
_b++;
|
|
753
735
|
return [3 /*break*/, 4];
|
|
754
|
-
case 7: return [3 /*break*/,
|
|
755
|
-
case 8:
|
|
756
|
-
|
|
757
|
-
|
|
736
|
+
case 7: return [3 /*break*/, 10];
|
|
737
|
+
case 8:
|
|
738
|
+
// Identify without accounts
|
|
739
|
+
return [4 /*yield*/, this.identify({
|
|
740
|
+
address: null,
|
|
741
|
+
providerName: info.name,
|
|
742
|
+
rdns: info.rdns,
|
|
743
|
+
})];
|
|
758
744
|
case 9:
|
|
745
|
+
// Identify without accounts
|
|
746
|
+
_c.sent();
|
|
747
|
+
_c.label = 10;
|
|
748
|
+
case 10: return [3 /*break*/, 12];
|
|
749
|
+
case 11:
|
|
750
|
+
err_1 = _c.sent();
|
|
751
|
+
console.log("identifying all => err", err_1);
|
|
752
|
+
return [3 /*break*/, 12];
|
|
753
|
+
case 12:
|
|
759
754
|
_i++;
|
|
760
755
|
return [3 /*break*/, 1];
|
|
761
|
-
case
|
|
756
|
+
case 13: return [2 /*return*/];
|
|
762
757
|
}
|
|
763
758
|
});
|
|
764
759
|
});
|
|
765
760
|
};
|
|
766
761
|
Object.defineProperty(FormoAnalytics.prototype, "provider", {
|
|
767
762
|
get: function () {
|
|
768
|
-
return this.
|
|
763
|
+
return this._provider;
|
|
769
764
|
},
|
|
770
765
|
enumerable: false,
|
|
771
766
|
configurable: true
|
|
@@ -785,18 +780,18 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
785
780
|
_a.label = 1;
|
|
786
781
|
case 1:
|
|
787
782
|
_a.trys.push([1, 3, , 4]);
|
|
788
|
-
return [4 /*yield*/, this.getAccounts(
|
|
783
|
+
return [4 /*yield*/, this.getAccounts()];
|
|
789
784
|
case 2:
|
|
790
785
|
accounts = _a.sent();
|
|
791
786
|
if (accounts && accounts.length > 0) {
|
|
792
|
-
return [2 /*return*/, accounts[0]];
|
|
787
|
+
return [2 /*return*/, (0, lib_1.isAddress)(accounts[0]) ? accounts[0] : null];
|
|
793
788
|
}
|
|
794
|
-
return [
|
|
789
|
+
return [3 /*break*/, 4];
|
|
795
790
|
case 3:
|
|
796
791
|
err_2 = _a.sent();
|
|
797
792
|
console.log("Failed to fetch accounts from provider:", err_2);
|
|
798
793
|
return [2 /*return*/, null];
|
|
799
|
-
case 4: return [2 /*return
|
|
794
|
+
case 4: return [2 /*return*/, null];
|
|
800
795
|
}
|
|
801
796
|
});
|
|
802
797
|
});
|
|
@@ -837,14 +832,13 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
837
832
|
return __generator(this, function (_b) {
|
|
838
833
|
switch (_b.label) {
|
|
839
834
|
case 0:
|
|
840
|
-
if (!this.
|
|
835
|
+
if (!this.provider) {
|
|
841
836
|
console.error("FormoAnalytics::getCurrentChainId: provider not set");
|
|
842
|
-
return [2 /*return*/, 0];
|
|
843
837
|
}
|
|
844
838
|
_b.label = 1;
|
|
845
839
|
case 1:
|
|
846
840
|
_b.trys.push([1, 3, , 4]);
|
|
847
|
-
return [4 /*yield*/, ((_a = this.
|
|
841
|
+
return [4 /*yield*/, ((_a = this.provider) === null || _a === void 0 ? void 0 : _a.request({
|
|
848
842
|
method: "eth_chainId",
|
|
849
843
|
}))];
|
|
850
844
|
case 2:
|
|
@@ -897,7 +891,7 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
897
891
|
location = this.getLocation();
|
|
898
892
|
language = this.getLanguage();
|
|
899
893
|
// common browser properties
|
|
900
|
-
return [2 /*return*/, __assign({ "user-agent": window.navigator.userAgent, locale: language, location: location, referrer: document.referrer, utm_source: params.get("utm_source"), utm_medium: params.get("utm_medium"), utm_campaign: params.get("utm_campaign"), ref: params.get("ref") }, eventSpecificPayload)];
|
|
894
|
+
return [2 /*return*/, __assign({ "user-agent": window.navigator.userAgent, origin: url.origin, locale: language, location: location, referrer: document.referrer, utm_source: params.get("utm_source"), utm_medium: params.get("utm_medium"), utm_campaign: params.get("utm_campaign"), ref: params.get("ref") }, eventSpecificPayload)];
|
|
901
895
|
});
|
|
902
896
|
});
|
|
903
897
|
};
|
|
@@ -945,4 +939,15 @@ var FormoAnalytics = /** @class */ (function () {
|
|
|
945
939
|
return FormoAnalytics;
|
|
946
940
|
}());
|
|
947
941
|
exports.FormoAnalytics = FormoAnalytics;
|
|
942
|
+
var FormoAnalyticsSession = /** @class */ (function () {
|
|
943
|
+
function FormoAnalyticsSession() {
|
|
944
|
+
}
|
|
945
|
+
FormoAnalyticsSession.prototype.isIdentified = function () {
|
|
946
|
+
return lib_1.session.get(constants_2.SESSION_IDENTIFIED_KEY) === true;
|
|
947
|
+
};
|
|
948
|
+
FormoAnalyticsSession.prototype.identify = function () {
|
|
949
|
+
lib_1.session.set(constants_2.SESSION_IDENTIFIED_KEY, true);
|
|
950
|
+
};
|
|
951
|
+
return FormoAnalyticsSession;
|
|
952
|
+
}());
|
|
948
953
|
//# sourceMappingURL=FormoAnalytics.js.map
|