@formo/analytics 1.14.1 → 1.14.2
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 +16 -14
- 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 +16 -14
- 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 +8 -8
- 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();
|
|
@@ -617,7 +617,7 @@ export class FormoAnalytics implements IFormoAnalytics {
|
|
|
617
617
|
payload: await this.buildEventPayload(toSnakeCase(payload)),
|
|
618
618
|
};
|
|
619
619
|
|
|
620
|
-
this.eventQueue.enqueue(requestData, (err, _, data) => {
|
|
620
|
+
await this.eventQueue.enqueue(requestData, (err, _, data) => {
|
|
621
621
|
if (err) {
|
|
622
622
|
console.error(err);
|
|
623
623
|
} else console.log(`Events sent successfully: ${data.length} events`);
|
|
@@ -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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"}
|