@formo/analytics 1.20.0 → 1.22.0
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/cjs/src/FormoAnalytics.d.ts +6 -0
- package/dist/cjs/src/FormoAnalytics.js +294 -151
- package/dist/cjs/src/lib/browser/browsers.d.ts +3 -0
- package/dist/cjs/src/lib/browser/browsers.js +132 -0
- package/dist/cjs/src/lib/event/EventFactory.d.ts +10 -10
- package/dist/cjs/src/lib/event/EventFactory.js +272 -140
- package/dist/cjs/src/lib/event/EventManager.d.ts +1 -1
- package/dist/cjs/src/lib/event/EventManager.js +61 -14
- package/dist/cjs/src/lib/event/type.d.ts +2 -2
- package/dist/cjs/src/lib/version.d.ts +1 -1
- package/dist/cjs/src/lib/version.js +1 -1
- package/dist/cjs/src/types/base.d.ts +39 -0
- package/dist/esm/src/FormoAnalytics.d.ts +6 -0
- package/dist/esm/src/FormoAnalytics.js +294 -151
- package/dist/esm/src/lib/browser/browsers.d.ts +3 -0
- package/dist/esm/src/lib/browser/browsers.js +129 -0
- package/dist/esm/src/lib/event/EventFactory.d.ts +10 -10
- package/dist/esm/src/lib/event/EventFactory.js +272 -140
- package/dist/esm/src/lib/event/EventManager.d.ts +1 -1
- package/dist/esm/src/lib/event/EventManager.js +61 -14
- package/dist/esm/src/lib/event/type.d.ts +2 -2
- package/dist/esm/src/lib/version.d.ts +1 -1
- package/dist/esm/src/lib/version.js +1 -1
- package/dist/esm/src/types/base.d.ts +39 -0
- package/dist/index.umd.min.js +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
2
38
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
39
|
var t = {};
|
|
4
40
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -32,20 +68,31 @@ var EventManager = /** @class */ (function () {
|
|
|
32
68
|
* @param event Incoming event data
|
|
33
69
|
*/
|
|
34
70
|
EventManager.prototype.addEvent = function (event, address, userId) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
71
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
72
|
+
var callback, _event, formoEvent;
|
|
73
|
+
return __generator(this, function (_a) {
|
|
74
|
+
switch (_a.label) {
|
|
75
|
+
case 0:
|
|
76
|
+
callback = event.callback, _event = __rest(event, ["callback"]);
|
|
77
|
+
return [4 /*yield*/, this.eventFactory.create(_event, address, userId)];
|
|
78
|
+
case 1:
|
|
79
|
+
formoEvent = _a.sent();
|
|
80
|
+
// Check if the final event has a blocked address - don't queue it
|
|
81
|
+
if (formoEvent.address && (0, address_1.isBlockedAddress)(formoEvent.address)) {
|
|
82
|
+
logger_1.logger.warn("Event blocked: Address ".concat(formoEvent.address, " is in the blocked list and cannot emit events"));
|
|
83
|
+
return [2 /*return*/];
|
|
84
|
+
}
|
|
85
|
+
this.eventQueue.enqueue(formoEvent, function (err, _, data) {
|
|
86
|
+
if (err) {
|
|
87
|
+
logger_1.logger.error("Error sending events:", err);
|
|
88
|
+
}
|
|
89
|
+
else
|
|
90
|
+
logger_1.logger.info("Events sent successfully: ".concat(data.length, " events"));
|
|
91
|
+
callback === null || callback === void 0 ? void 0 : callback(err, _, data);
|
|
92
|
+
});
|
|
93
|
+
return [2 /*return*/];
|
|
94
|
+
}
|
|
95
|
+
});
|
|
49
96
|
});
|
|
50
97
|
};
|
|
51
98
|
return EventManager;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Address, APIEvent, IFormoEvent } from "../../types";
|
|
2
2
|
export interface IEventManager {
|
|
3
|
-
addEvent(event: APIEvent, address?: Address, userId?: string): void
|
|
3
|
+
addEvent(event: APIEvent, address?: Address, userId?: string): Promise<void>;
|
|
4
4
|
}
|
|
5
5
|
export interface IEventFactory {
|
|
6
|
-
create(event: APIEvent, address?: Address, userId?: string): IFormoEvent
|
|
6
|
+
create(event: APIEvent, address?: Address, userId?: string): Promise<IFormoEvent>;
|
|
7
7
|
}
|
|
8
8
|
//# sourceMappingURL=type.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.
|
|
1
|
+
export declare const version = "1.22.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -63,9 +63,48 @@ export interface TrackingOptions {
|
|
|
63
63
|
excludePaths?: string[];
|
|
64
64
|
excludeChains?: ChainID[];
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* Configuration options for controlling wallet event autocapture
|
|
68
|
+
* All events are enabled by default unless explicitly set to false
|
|
69
|
+
*/
|
|
70
|
+
export interface AutocaptureOptions {
|
|
71
|
+
/**
|
|
72
|
+
* Track wallet connect events
|
|
73
|
+
* @default true
|
|
74
|
+
*/
|
|
75
|
+
connect?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Track wallet disconnect events
|
|
78
|
+
* @default true
|
|
79
|
+
*/
|
|
80
|
+
disconnect?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Track wallet signature events (personal_sign, eth_signTypedData_v4)
|
|
83
|
+
* @default true
|
|
84
|
+
*/
|
|
85
|
+
signature?: boolean;
|
|
86
|
+
/**
|
|
87
|
+
* Track wallet transaction events (eth_sendTransaction)
|
|
88
|
+
* @default true
|
|
89
|
+
*/
|
|
90
|
+
transaction?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Track wallet chain change events
|
|
93
|
+
* @default true
|
|
94
|
+
*/
|
|
95
|
+
chain?: boolean;
|
|
96
|
+
}
|
|
66
97
|
export interface Options {
|
|
67
98
|
provider?: EIP1193Provider;
|
|
68
99
|
tracking?: boolean | TrackingOptions;
|
|
100
|
+
/**
|
|
101
|
+
* Control wallet event autocapture
|
|
102
|
+
* - `false`: Disable all wallet autocapture
|
|
103
|
+
* - `true`: Enable all wallet events (default)
|
|
104
|
+
* - `AutocaptureOptions`: Granular control over specific events
|
|
105
|
+
* @default true
|
|
106
|
+
*/
|
|
107
|
+
autocapture?: boolean | AutocaptureOptions;
|
|
69
108
|
flushAt?: number;
|
|
70
109
|
flushInterval?: number;
|
|
71
110
|
retryCount?: number;
|
|
@@ -224,6 +224,12 @@ export declare class FormoAnalytics implements IFormoAnalytics {
|
|
|
224
224
|
* @returns {boolean} True if tracking should be enabled
|
|
225
225
|
*/
|
|
226
226
|
private shouldTrack;
|
|
227
|
+
/**
|
|
228
|
+
* Check if a specific wallet event type is enabled for autocapture
|
|
229
|
+
* @param eventType The wallet event type to check
|
|
230
|
+
* @returns {boolean} True if the event type should be autocaptured
|
|
231
|
+
*/
|
|
232
|
+
private isAutocaptureEnabled;
|
|
227
233
|
/**
|
|
228
234
|
* Get provider information for a given provider
|
|
229
235
|
* @param provider The provider to get info for
|