@formo/analytics 1.14.1 → 1.14.3
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 +2 -2
- package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/cjs/src/FormoAnalytics.js +76 -69
- package/dist/cjs/src/FormoAnalytics.js.map +1 -1
- package/dist/cjs/src/FormoAnalyticsProvider.js +9 -9
- package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
- package/dist/cjs/src/lib/fingerprint.d.ts +4 -0
- package/dist/cjs/src/lib/fingerprint.d.ts.map +1 -0
- package/dist/cjs/src/lib/fingerprint.js +63 -0
- package/dist/cjs/src/lib/fingerprint.js.map +1 -0
- package/dist/cjs/src/{FormoAnalyticsEventQueue.d.ts → lib/queue.d.ts} +7 -9
- package/dist/cjs/src/lib/queue.d.ts.map +1 -0
- package/dist/cjs/src/{FormoAnalyticsEventQueue.js → lib/queue.js} +141 -94
- package/dist/cjs/src/lib/queue.js.map +1 -0
- package/dist/cjs/src/lib/utils.d.ts +4 -0
- package/dist/cjs/src/lib/utils.d.ts.map +1 -1
- package/dist/cjs/src/lib/utils.js +25 -1
- package/dist/cjs/src/lib/utils.js.map +1 -1
- package/dist/cjs/src/types/base.d.ts +2 -2
- package/dist/cjs/src/types/base.d.ts.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/src/FormoAnalytics.d.ts +2 -2
- package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
- package/dist/esm/src/FormoAnalytics.js +76 -69
- package/dist/esm/src/FormoAnalytics.js.map +1 -1
- package/dist/esm/src/FormoAnalyticsProvider.js +9 -9
- package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -1
- package/dist/esm/src/lib/fingerprint.d.ts +4 -0
- package/dist/esm/src/lib/fingerprint.d.ts.map +1 -0
- package/dist/esm/src/lib/fingerprint.js +60 -0
- package/dist/esm/src/lib/fingerprint.js.map +1 -0
- package/dist/esm/src/{FormoAnalyticsEventQueue.d.ts → lib/queue.d.ts} +7 -9
- package/dist/esm/src/lib/queue.d.ts.map +1 -0
- package/dist/esm/src/{FormoAnalyticsEventQueue.js → lib/queue.js} +140 -93
- package/dist/esm/src/lib/queue.js.map +1 -0
- package/dist/esm/src/lib/utils.d.ts +4 -0
- package/dist/esm/src/lib/utils.d.ts.map +1 -1
- package/dist/esm/src/lib/utils.js +20 -0
- package/dist/esm/src/lib/utils.js.map +1 -1
- package/dist/esm/src/types/base.d.ts +2 -2
- package/dist/esm/src/types/base.d.ts.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/index.umd.min.js +1 -1
- package/dist/index.umd.min.js.map +1 -1
- package/package.json +1 -1
- package/src/FormoAnalytics.ts +68 -50
- package/src/FormoAnalyticsProvider.tsx +9 -9
- package/src/lib/fingerprint.ts +9 -0
- package/src/{FormoAnalyticsEventQueue.ts → lib/queue.ts} +100 -72
- package/src/lib/utils.ts +22 -0
- package/src/types/base.ts +2 -2
- package/dist/cjs/src/FormoAnalyticsEventQueue.d.ts.map +0 -1
- package/dist/cjs/src/FormoAnalyticsEventQueue.js.map +0 -1
- package/dist/esm/src/FormoAnalyticsEventQueue.d.ts.map +0 -1
- package/dist/esm/src/FormoAnalyticsEventQueue.js.map +0 -1
package/package.json
CHANGED
package/src/FormoAnalytics.ts
CHANGED
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./types";
|
|
20
20
|
import { session, isLocalhost, toSnakeCase, isAddress } from "./lib";
|
|
21
21
|
import { SESSION_IDENTIFIED_KEY } from "./constants";
|
|
22
|
-
import {
|
|
22
|
+
import { EventQueue } from "./lib/queue";
|
|
23
23
|
|
|
24
24
|
interface IFormoAnalytics {
|
|
25
25
|
page(): void;
|
|
@@ -64,24 +64,24 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
64
64
|
private _provider?: EIP1193Provider;
|
|
65
65
|
private _providerListeners: Record<string, (...args: unknown[]) => void> = {};
|
|
66
66
|
private session: FormoAnalyticsSession;
|
|
67
|
-
private eventQueue:
|
|
67
|
+
private eventQueue: EventQueue;
|
|
68
68
|
|
|
69
69
|
config: Config;
|
|
70
70
|
currentChainId?: ChainID;
|
|
71
71
|
currentConnectedAddress?: Address;
|
|
72
72
|
|
|
73
73
|
private constructor(
|
|
74
|
-
public readonly
|
|
74
|
+
public readonly writeKey: string,
|
|
75
75
|
public options: Options = {}
|
|
76
76
|
) {
|
|
77
77
|
this.config = {
|
|
78
|
-
|
|
78
|
+
writeKey,
|
|
79
79
|
trackLocalhost: options.trackLocalhost || false,
|
|
80
80
|
};
|
|
81
81
|
|
|
82
82
|
this.session = new FormoAnalyticsSession();
|
|
83
83
|
|
|
84
|
-
this.eventQueue = new
|
|
84
|
+
this.eventQueue = new EventQueue(this.config.writeKey, {
|
|
85
85
|
url: EVENTS_API_URL,
|
|
86
86
|
flushAt: options.flushAt,
|
|
87
87
|
retryCount: options.retryCount,
|
|
@@ -100,10 +100,10 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
static async init(
|
|
103
|
-
|
|
103
|
+
writeKey: string,
|
|
104
104
|
options?: Options
|
|
105
105
|
): Promise<FormoAnalytics> {
|
|
106
|
-
const analytics = new FormoAnalytics(
|
|
106
|
+
const analytics = new FormoAnalytics(writeKey, options);
|
|
107
107
|
|
|
108
108
|
// Identify
|
|
109
109
|
const providers = await analytics.getProviders();
|
|
@@ -319,29 +319,38 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
319
319
|
*/
|
|
320
320
|
|
|
321
321
|
private trackProvider(provider: EIP1193Provider): void {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
322
|
+
try {
|
|
323
|
+
if (provider === this._provider) {
|
|
324
|
+
console.warn(
|
|
325
|
+
"FormoAnalytics::trackProvider: Provider already tracked."
|
|
326
|
+
);
|
|
327
|
+
return;
|
|
328
|
+
}
|
|
329
329
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
330
|
+
this.currentChainId = undefined;
|
|
331
|
+
this.currentConnectedAddress = undefined;
|
|
332
|
+
|
|
333
|
+
if (this._provider) {
|
|
334
|
+
const actions = Object.keys(this._providerListeners);
|
|
335
|
+
for (const action of actions) {
|
|
336
|
+
this._provider.removeListener(
|
|
337
|
+
action,
|
|
338
|
+
this._providerListeners[action]
|
|
339
|
+
);
|
|
340
|
+
delete this._providerListeners[action];
|
|
341
|
+
}
|
|
335
342
|
}
|
|
336
|
-
}
|
|
337
343
|
|
|
338
|
-
|
|
344
|
+
this._provider = provider;
|
|
339
345
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
346
|
+
// Register listeners for web3 provider events
|
|
347
|
+
this.registerAddressChangedListener();
|
|
348
|
+
this.registerChainChangedListener();
|
|
349
|
+
this.registerSignatureListener();
|
|
350
|
+
this.registerTransactionListener();
|
|
351
|
+
} catch (error) {
|
|
352
|
+
console.error("FormoAnalytics::trackProvider: error:", error);
|
|
353
|
+
}
|
|
345
354
|
}
|
|
346
355
|
|
|
347
356
|
private registerAddressChangedListener(): void {
|
|
@@ -607,59 +616,68 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
607
616
|
}
|
|
608
617
|
|
|
609
618
|
private async trackEvent(action: string, payload: any): Promise<void> {
|
|
610
|
-
|
|
619
|
+
try {
|
|
620
|
+
const address = await this.getAddress();
|
|
611
621
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
622
|
+
const requestData: RequestEvent = {
|
|
623
|
+
address,
|
|
624
|
+
timestamp: new Date().toISOString(),
|
|
625
|
+
action,
|
|
626
|
+
version: "1",
|
|
627
|
+
payload: await this.buildEventPayload(toSnakeCase(payload)),
|
|
628
|
+
};
|
|
619
629
|
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
630
|
+
await this.eventQueue.enqueue(requestData, (err, _, data) => {
|
|
631
|
+
if (err) {
|
|
632
|
+
console.error(err);
|
|
633
|
+
} else console.log(`Events sent successfully: ${data.length} events`);
|
|
634
|
+
});
|
|
635
|
+
} catch (error) {
|
|
636
|
+
console.error("FormoAnalytics::trackEvent: error:", error);
|
|
637
|
+
}
|
|
625
638
|
}
|
|
626
639
|
|
|
627
640
|
/*
|
|
628
641
|
Utility functions
|
|
629
642
|
*/
|
|
630
643
|
|
|
631
|
-
private async getProviders(): Promise<EIP6963ProviderDetail[]> {
|
|
644
|
+
private async getProviders(): Promise<readonly EIP6963ProviderDetail[]> {
|
|
632
645
|
const store = createStore();
|
|
633
|
-
|
|
646
|
+
let providers = store.getProviders();
|
|
634
647
|
// TODO: consider using store.subscribe to detect changes to providers list
|
|
635
|
-
|
|
648
|
+
store.subscribe((providerDetails) => (providers = providerDetails));
|
|
636
649
|
|
|
637
650
|
// Fallback to injected provider if no providers are found
|
|
638
651
|
if (providers.length === 0) {
|
|
639
|
-
return
|
|
652
|
+
return window?.ethereum ? [window.ethereum] : [];
|
|
640
653
|
}
|
|
641
654
|
return providers;
|
|
642
655
|
}
|
|
643
656
|
|
|
644
|
-
private async identifyAll(
|
|
657
|
+
private async identifyAll(
|
|
658
|
+
providers: readonly EIP6963ProviderDetail[]
|
|
659
|
+
): Promise<void> {
|
|
645
660
|
try {
|
|
646
|
-
for (const
|
|
647
|
-
|
|
661
|
+
for (const eip6963ProviderDetail of providers) {
|
|
662
|
+
if (!eip6963ProviderDetail) continue;
|
|
663
|
+
const accounts = await this.getAccounts(
|
|
664
|
+
eip6963ProviderDetail?.provider
|
|
665
|
+
);
|
|
648
666
|
// Identify with accounts
|
|
649
667
|
if (accounts && accounts.length > 0) {
|
|
650
668
|
for (const address of accounts) {
|
|
651
669
|
await this.identify({
|
|
652
670
|
address,
|
|
653
|
-
providerName: info.name,
|
|
654
|
-
rdns: info.rdns,
|
|
671
|
+
providerName: eip6963ProviderDetail?.info.name,
|
|
672
|
+
rdns: eip6963ProviderDetail?.info.rdns,
|
|
655
673
|
});
|
|
656
674
|
}
|
|
657
675
|
} else {
|
|
658
676
|
// Identify without accounts
|
|
659
677
|
await this.identify({
|
|
660
678
|
address: null,
|
|
661
|
-
providerName: info.name,
|
|
662
|
-
rdns: info.rdns,
|
|
679
|
+
providerName: eip6963ProviderDetail?.info.name,
|
|
680
|
+
rdns: eip6963ProviderDetail?.info.rdns,
|
|
663
681
|
});
|
|
664
682
|
}
|
|
665
683
|
}
|
|
@@ -7,11 +7,11 @@ export const FormoAnalyticsContext = createContext<FormoAnalytics | undefined>(
|
|
|
7
7
|
);
|
|
8
8
|
|
|
9
9
|
export const FormoAnalyticsProvider = (props: FormoAnalyticsProviderProps) => {
|
|
10
|
-
const {
|
|
10
|
+
const { writeKey, disabled, children } = props;
|
|
11
11
|
|
|
12
|
-
// Keep the app running without analytics if no
|
|
13
|
-
if (!
|
|
14
|
-
console.error("FormoAnalyticsProvider: No
|
|
12
|
+
// Keep the app running without analytics if no Write Key is provided or disabled
|
|
13
|
+
if (!writeKey) {
|
|
14
|
+
console.error("FormoAnalyticsProvider: No Write Key provided");
|
|
15
15
|
return children;
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -24,16 +24,16 @@ export const FormoAnalyticsProvider = (props: FormoAnalyticsProviderProps) => {
|
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
const InitializedAnalytics = ({
|
|
27
|
-
|
|
27
|
+
writeKey,
|
|
28
28
|
options,
|
|
29
29
|
children,
|
|
30
30
|
}: FormoAnalyticsProviderProps) => {
|
|
31
31
|
const [sdk, setSdk] = useState<FormoAnalytics | undefined>();
|
|
32
32
|
const initializedStartedRef = useRef(false);
|
|
33
33
|
|
|
34
|
-
const initializeFormoAnalytics = async (
|
|
34
|
+
const initializeFormoAnalytics = async (writeKey: string, options: any) => {
|
|
35
35
|
try {
|
|
36
|
-
const sdkInstance = await FormoAnalytics.init(
|
|
36
|
+
const sdkInstance = await FormoAnalytics.init(writeKey, options);
|
|
37
37
|
setSdk(sdkInstance);
|
|
38
38
|
console.log("FormoAnalytics SDK initialized successfully");
|
|
39
39
|
} catch (error) {
|
|
@@ -46,11 +46,11 @@ const InitializedAnalytics = ({
|
|
|
46
46
|
if (initializedStartedRef.current) return;
|
|
47
47
|
initializedStartedRef.current = true;
|
|
48
48
|
|
|
49
|
-
await initializeFormoAnalytics(
|
|
49
|
+
await initializeFormoAnalytics(writeKey!, options);
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
initialize();
|
|
53
|
-
}, [
|
|
53
|
+
}, [writeKey, options]);
|
|
54
54
|
|
|
55
55
|
return (
|
|
56
56
|
<FormoAnalyticsContext.Provider value={sdk}>
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import fetch from "fetch-retry";
|
|
2
2
|
import isNetworkError from "is-network-error";
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
3
|
+
import { RequestEvent } from "../types";
|
|
4
|
+
import {
|
|
5
|
+
clampNumber,
|
|
6
|
+
getActionDescriptor,
|
|
7
|
+
millisecondsToSecond,
|
|
8
|
+
toDateHourMinute,
|
|
9
|
+
} from "./utils";
|
|
10
|
+
import { Fingerprint } from "./fingerprint";
|
|
5
11
|
|
|
6
12
|
const sdkFetch = fetch(global.fetch);
|
|
7
13
|
|
|
@@ -34,11 +40,11 @@ const DEFAULT_QUEUE_SIZE = 1_024 * 500; // 500kB
|
|
|
34
40
|
const MAX_QUEUE_SIZE = 1_024 * 500; // 500kB
|
|
35
41
|
const MIN_QUEUE_SIZE = 200; // 200 bytes
|
|
36
42
|
|
|
37
|
-
const DEFAULT_FLUSH_INTERVAL = 1_000 *
|
|
43
|
+
const DEFAULT_FLUSH_INTERVAL = 1_000 * 30; // 1 MINUTE
|
|
38
44
|
const MAX_FLUSH_INTERVAL = 1_000 * 300; // 5 MINUTES
|
|
39
45
|
const MIN_FLUSH_INTERVAL = 1_000 * 10; // 10 SECONDS
|
|
40
46
|
|
|
41
|
-
export class
|
|
47
|
+
export class EventQueue {
|
|
42
48
|
private writeKey: string;
|
|
43
49
|
private url: string;
|
|
44
50
|
private queue: QueueItem[];
|
|
@@ -50,6 +56,7 @@ export class FormoAnalyticsEventQueue {
|
|
|
50
56
|
private errorHandler: any;
|
|
51
57
|
private retryCount: number;
|
|
52
58
|
private pendingFlush: Promise<any> | null;
|
|
59
|
+
private payloadHashes: Set<string> = new Set();
|
|
53
60
|
|
|
54
61
|
constructor(writeKey: string, options: Options) {
|
|
55
62
|
options = options || {};
|
|
@@ -57,22 +64,22 @@ export class FormoAnalyticsEventQueue {
|
|
|
57
64
|
this.queue = [];
|
|
58
65
|
this.writeKey = writeKey;
|
|
59
66
|
this.url = options.url;
|
|
60
|
-
this.retryCount =
|
|
67
|
+
this.retryCount = clampNumber(
|
|
61
68
|
options.retryCount || DEFAULT_RETRY,
|
|
62
69
|
MAX_RETRY,
|
|
63
70
|
MIN_RETRY
|
|
64
71
|
);
|
|
65
|
-
this.flushAt =
|
|
72
|
+
this.flushAt = clampNumber(
|
|
66
73
|
options.flushAt || DEFAULT_FLUSH_AT,
|
|
67
74
|
MAX_FLUSH_AT,
|
|
68
75
|
MIN_FLUSH_AT
|
|
69
76
|
);
|
|
70
|
-
this.maxQueueSize =
|
|
77
|
+
this.maxQueueSize = clampNumber(
|
|
71
78
|
options.maxQueueSize || DEFAULT_QUEUE_SIZE,
|
|
72
79
|
MAX_QUEUE_SIZE,
|
|
73
80
|
MIN_QUEUE_SIZE
|
|
74
81
|
);
|
|
75
|
-
this.flushInterval =
|
|
82
|
+
this.flushInterval = clampNumber(
|
|
76
83
|
options.flushInterval || DEFAULT_FLUSH_INTERVAL,
|
|
77
84
|
MAX_FLUSH_INTERVAL,
|
|
78
85
|
MIN_FLUSH_INTERVAL
|
|
@@ -82,21 +89,21 @@ export class FormoAnalyticsEventQueue {
|
|
|
82
89
|
this.pendingFlush = null;
|
|
83
90
|
this.timer = null;
|
|
84
91
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
this.onPageLeave(async (isAccessible: boolean) => {
|
|
93
|
+
if (isAccessible === false) {
|
|
94
|
+
await this.flush();
|
|
95
|
+
}
|
|
89
96
|
});
|
|
90
97
|
}
|
|
91
98
|
|
|
92
99
|
//#region Public functions
|
|
93
|
-
enqueue(message: RequestEvent, callback?: (...args: any) => void) {
|
|
100
|
+
async enqueue(message: RequestEvent, callback?: (...args: any) => void) {
|
|
94
101
|
callback = callback || noop;
|
|
95
102
|
|
|
96
103
|
// check if the message already exists
|
|
97
|
-
if (this.checkDuplicate(message)) {
|
|
104
|
+
if (await this.checkDuplicate(message)) {
|
|
98
105
|
console.warn(
|
|
99
|
-
`Event already enqueued, try again after ${
|
|
106
|
+
`Event already enqueued, try again after ${millisecondsToSecond(
|
|
100
107
|
this.flushInterval
|
|
101
108
|
)} seconds.`
|
|
102
109
|
);
|
|
@@ -104,11 +111,9 @@ export class FormoAnalyticsEventQueue {
|
|
|
104
111
|
}
|
|
105
112
|
|
|
106
113
|
this.queue.push({ message, callback });
|
|
114
|
+
|
|
107
115
|
console.log(
|
|
108
|
-
`Event enqueued: ${
|
|
109
|
-
message.action,
|
|
110
|
-
message.payload
|
|
111
|
-
)}`
|
|
116
|
+
`Event enqueued: ${getActionDescriptor(message.action, message.payload)}`
|
|
112
117
|
);
|
|
113
118
|
|
|
114
119
|
if (!this.flushed) {
|
|
@@ -155,6 +160,7 @@ export class FormoAnalyticsEventQueue {
|
|
|
155
160
|
}
|
|
156
161
|
|
|
157
162
|
const items = this.queue.splice(0, this.flushAt);
|
|
163
|
+
this.payloadHashes.clear();
|
|
158
164
|
const data = items.map((item) => item.message);
|
|
159
165
|
|
|
160
166
|
const done = (err?: Error) => {
|
|
@@ -166,13 +172,14 @@ export class FormoAnalyticsEventQueue {
|
|
|
166
172
|
headers: {
|
|
167
173
|
"Content-Type": "application/json",
|
|
168
174
|
Authorization: `Basic ${this.writeKey}`,
|
|
169
|
-
"X-Visitor-Id": await
|
|
175
|
+
"X-Visitor-Id": await Fingerprint.getVisitorId(),
|
|
170
176
|
},
|
|
171
177
|
};
|
|
172
178
|
|
|
173
179
|
return (this.pendingFlush = sdkFetch(`${this.url}`, {
|
|
174
180
|
method: "POST",
|
|
175
181
|
body: JSON.stringify(data),
|
|
182
|
+
keepalive: true,
|
|
176
183
|
retries: this.retryCount,
|
|
177
184
|
retryDelay: (attempt) => Math.pow(2, attempt) * 1_000, // exponential backoff
|
|
178
185
|
retryOn: (_, error) => this.isErrorRetryable(error),
|
|
@@ -199,16 +206,7 @@ export class FormoAnalyticsEventQueue {
|
|
|
199
206
|
}));
|
|
200
207
|
}
|
|
201
208
|
|
|
202
|
-
//#endregion
|
|
203
|
-
|
|
204
209
|
//#region Utility functions
|
|
205
|
-
|
|
206
|
-
private async getVisitorId(): Promise<string> {
|
|
207
|
-
const fp = await FingerprintJS.load();
|
|
208
|
-
const { visitorId } = await fp.get();
|
|
209
|
-
return visitorId;
|
|
210
|
-
}
|
|
211
|
-
|
|
212
210
|
private isErrorRetryable(error: any) {
|
|
213
211
|
// Retry Network Errors.
|
|
214
212
|
if (isNetworkError(error)) return true;
|
|
@@ -226,57 +224,87 @@ export class FormoAnalyticsEventQueue {
|
|
|
226
224
|
return false;
|
|
227
225
|
}
|
|
228
226
|
|
|
229
|
-
private
|
|
230
|
-
|
|
227
|
+
private async checkDuplicate(newMessage: RequestEvent) {
|
|
228
|
+
// check if exists a message with identical payload within 1 minute
|
|
229
|
+
const formattedTimestamp = toDateHourMinute(new Date(newMessage.timestamp));
|
|
230
|
+
newMessage.timestamp = formattedTimestamp;
|
|
231
|
+
|
|
232
|
+
const hash = await this.hashPayload(newMessage);
|
|
233
|
+
if (this.payloadHashes.has(hash)) {
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
this.payloadHashes.add(hash);
|
|
237
|
+
return false;
|
|
231
238
|
}
|
|
232
239
|
|
|
233
|
-
private
|
|
234
|
-
return (
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
(
|
|
242
|
-
|
|
243
|
-
("0" + date.getUTCMinutes()).slice(-2)
|
|
244
|
-
);
|
|
240
|
+
private async hashPayload(payload: RequestEvent, algo = "SHA-1") {
|
|
241
|
+
return Array.from(
|
|
242
|
+
new Uint8Array(
|
|
243
|
+
await crypto.subtle.digest(
|
|
244
|
+
algo,
|
|
245
|
+
new TextEncoder().encode(JSON.stringify(payload))
|
|
246
|
+
)
|
|
247
|
+
),
|
|
248
|
+
(byte) => byte.toString(16).padStart(2, "0")
|
|
249
|
+
).join("");
|
|
245
250
|
}
|
|
246
251
|
|
|
247
|
-
private
|
|
248
|
-
//
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
const stringifiedMessage = JSON.stringify({
|
|
253
|
-
...newMessage,
|
|
254
|
-
timestamp: formattedTimestamp,
|
|
255
|
-
});
|
|
252
|
+
private onPageLeave = (callback: (isAccessible: boolean) => void) => {
|
|
253
|
+
// To ensure the callback is only called once even if more than one events
|
|
254
|
+
// are fired at once.
|
|
255
|
+
let pageLeft = false;
|
|
256
|
+
let isAccessible = false;
|
|
256
257
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
});
|
|
258
|
+
function handleOnLeave() {
|
|
259
|
+
if (pageLeft) {
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
pageLeft = true;
|
|
264
|
+
|
|
265
|
+
callback(isAccessible);
|
|
266
266
|
|
|
267
|
-
|
|
267
|
+
// Reset pageLeft on the next tick
|
|
268
|
+
// to ensure callback executes for other listeners
|
|
269
|
+
// when closing an inactive browser tab.
|
|
270
|
+
setTimeout(() => {
|
|
271
|
+
pageLeft = false;
|
|
272
|
+
}, 0);
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Catches the unloading of the page (e.g., closing the tab or navigating away).
|
|
276
|
+
// Includes user actions like clicking a link, entering a new URL,
|
|
277
|
+
// refreshing the page, or closing the browser tab
|
|
278
|
+
// Note that 'pagehide' is not supported in IE.
|
|
279
|
+
// So, this is a fallback.
|
|
280
|
+
(globalThis as typeof window).addEventListener("beforeunload", () => {
|
|
281
|
+
isAccessible = false;
|
|
282
|
+
handleOnLeave();
|
|
268
283
|
});
|
|
269
|
-
}
|
|
270
284
|
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
285
|
+
(globalThis as typeof window).addEventListener("blur", () => {
|
|
286
|
+
isAccessible = true;
|
|
287
|
+
handleOnLeave();
|
|
288
|
+
});
|
|
274
289
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
290
|
+
(globalThis as typeof window).addEventListener("focus", () => {
|
|
291
|
+
pageLeft = false;
|
|
292
|
+
});
|
|
278
293
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
294
|
+
// Catches the page being hidden, including scenarios like closing the tab.
|
|
295
|
+
document.addEventListener("pagehide", () => {
|
|
296
|
+
isAccessible = document.visibilityState === "hidden";
|
|
297
|
+
handleOnLeave();
|
|
298
|
+
});
|
|
299
|
+
|
|
300
|
+
// Catches visibility changes, such as switching tabs or minimizing the browser.
|
|
301
|
+
document.addEventListener("visibilitychange", () => {
|
|
302
|
+
isAccessible = true;
|
|
303
|
+
if (document.visibilityState === "hidden") {
|
|
304
|
+
handleOnLeave();
|
|
305
|
+
} else {
|
|
306
|
+
pageLeft = false;
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
};
|
|
282
310
|
}
|
package/src/lib/utils.ts
CHANGED
|
@@ -33,3 +33,25 @@ export const isLocalhost = () =>
|
|
|
33
33
|
) || window.location.protocol === "file:";
|
|
34
34
|
|
|
35
35
|
export const isAddress = (address: string) => REGEX.addressRegex.test(address);
|
|
36
|
+
|
|
37
|
+
export const millisecondsToSecond = (milliseconds: number): number =>
|
|
38
|
+
Math.ceil(milliseconds / 1_000);
|
|
39
|
+
|
|
40
|
+
export const toDateHourMinute = (date: Date) =>
|
|
41
|
+
date.getUTCFullYear() +
|
|
42
|
+
"-" +
|
|
43
|
+
("0" + (date.getUTCMonth() + 1)).slice(-2) +
|
|
44
|
+
"-" +
|
|
45
|
+
("0" + date.getUTCDate()).slice(-2) +
|
|
46
|
+
" " +
|
|
47
|
+
("0" + date.getUTCHours()).slice(-2) +
|
|
48
|
+
":" +
|
|
49
|
+
("0" + date.getUTCMinutes()).slice(-2);
|
|
50
|
+
|
|
51
|
+
export const clampNumber = (value: number, max: number, min: number) => {
|
|
52
|
+
return Math.min(Math.max(value, min), max);
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export const getActionDescriptor = (action: string, payload: any): string => {
|
|
56
|
+
return `${action}${payload?.status ? ` ${payload?.status}` : ""}`;
|
|
57
|
+
};
|
package/src/types/base.ts
CHANGED
|
@@ -17,13 +17,13 @@ export interface Options {
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
export interface FormoAnalyticsProviderProps {
|
|
20
|
-
|
|
20
|
+
writeKey: string;
|
|
21
21
|
options?: Options;
|
|
22
22
|
disabled?: boolean;
|
|
23
23
|
children: React.ReactNode;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export interface Config {
|
|
27
|
-
|
|
27
|
+
writeKey: string;
|
|
28
28
|
trackLocalhost?: boolean;
|
|
29
29
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormoAnalyticsEventQueue.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalyticsEventQueue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAWvC,KAAK,OAAO,GAAG;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAkBF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAsB;gBAE9B,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAuC9C,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI;IA0C1D,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI;YAuE/B,YAAY;IAM1B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,yBAAyB;CAOlC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormoAnalyticsEventQueue.js","sourceRoot":"","sources":["../../../src/FormoAnalyticsEventQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormoAnalyticsEventQueue.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalyticsEventQueue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAWvC,KAAK,OAAO,GAAG;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAkBF,qBAAa,wBAAwB;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAwB;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,YAAY,CAAsB;gBAE9B,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAuC9C,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI;IA0C1D,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI;YAuE/B,YAAY;IAM1B,OAAO,CAAC,gBAAgB;IAiBxB,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,cAAc;IAwBtB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,yBAAyB;CAOlC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FormoAnalyticsEventQueue.js","sourceRoot":"","sources":["../../../src/FormoAnalyticsEventQueue.ts"],"names":[],"mappings":"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"}
|