@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.
Files changed (55) hide show
  1. package/dist/cjs/src/FormoAnalytics.d.ts +2 -2
  2. package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -1
  3. package/dist/cjs/src/FormoAnalytics.js +16 -14
  4. package/dist/cjs/src/FormoAnalytics.js.map +1 -1
  5. package/dist/cjs/src/FormoAnalyticsProvider.js +9 -9
  6. package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -1
  7. package/dist/cjs/src/lib/fingerprint.d.ts +4 -0
  8. package/dist/cjs/src/lib/fingerprint.d.ts.map +1 -0
  9. package/dist/cjs/src/lib/fingerprint.js +63 -0
  10. package/dist/cjs/src/lib/fingerprint.js.map +1 -0
  11. package/dist/cjs/src/{FormoAnalyticsEventQueue.d.ts → lib/queue.d.ts} +7 -9
  12. package/dist/cjs/src/lib/queue.d.ts.map +1 -0
  13. package/dist/cjs/src/{FormoAnalyticsEventQueue.js → lib/queue.js} +141 -94
  14. package/dist/cjs/src/lib/queue.js.map +1 -0
  15. package/dist/cjs/src/lib/utils.d.ts +4 -0
  16. package/dist/cjs/src/lib/utils.d.ts.map +1 -1
  17. package/dist/cjs/src/lib/utils.js +25 -1
  18. package/dist/cjs/src/lib/utils.js.map +1 -1
  19. package/dist/cjs/src/types/base.d.ts +2 -2
  20. package/dist/cjs/src/types/base.d.ts.map +1 -1
  21. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  22. package/dist/esm/src/FormoAnalytics.d.ts +2 -2
  23. package/dist/esm/src/FormoAnalytics.d.ts.map +1 -1
  24. package/dist/esm/src/FormoAnalytics.js +16 -14
  25. package/dist/esm/src/FormoAnalytics.js.map +1 -1
  26. package/dist/esm/src/FormoAnalyticsProvider.js +9 -9
  27. package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -1
  28. package/dist/esm/src/lib/fingerprint.d.ts +4 -0
  29. package/dist/esm/src/lib/fingerprint.d.ts.map +1 -0
  30. package/dist/esm/src/lib/fingerprint.js +60 -0
  31. package/dist/esm/src/lib/fingerprint.js.map +1 -0
  32. package/dist/esm/src/{FormoAnalyticsEventQueue.d.ts → lib/queue.d.ts} +7 -9
  33. package/dist/esm/src/lib/queue.d.ts.map +1 -0
  34. package/dist/esm/src/{FormoAnalyticsEventQueue.js → lib/queue.js} +140 -93
  35. package/dist/esm/src/lib/queue.js.map +1 -0
  36. package/dist/esm/src/lib/utils.d.ts +4 -0
  37. package/dist/esm/src/lib/utils.d.ts.map +1 -1
  38. package/dist/esm/src/lib/utils.js +20 -0
  39. package/dist/esm/src/lib/utils.js.map +1 -1
  40. package/dist/esm/src/types/base.d.ts +2 -2
  41. package/dist/esm/src/types/base.d.ts.map +1 -1
  42. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  43. package/dist/index.umd.min.js +1 -1
  44. package/dist/index.umd.min.js.map +1 -1
  45. package/package.json +1 -1
  46. package/src/FormoAnalytics.ts +8 -8
  47. package/src/FormoAnalyticsProvider.tsx +9 -9
  48. package/src/lib/fingerprint.ts +9 -0
  49. package/src/{FormoAnalyticsEventQueue.ts → lib/queue.ts} +100 -72
  50. package/src/lib/utils.ts +22 -0
  51. package/src/types/base.ts +2 -2
  52. package/dist/cjs/src/FormoAnalyticsEventQueue.d.ts.map +0 -1
  53. package/dist/cjs/src/FormoAnalyticsEventQueue.js.map +0 -1
  54. package/dist/esm/src/FormoAnalyticsEventQueue.d.ts.map +0 -1
  55. package/dist/esm/src/FormoAnalyticsEventQueue.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formo/analytics",
3
- "version": "1.14.1",
3
+ "version": "1.14.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/getformo/sdk.git"
@@ -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 { FormoAnalyticsEventQueue } from "./FormoAnalyticsEventQueue";
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: FormoAnalyticsEventQueue;
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 apiKey: string,
74
+ public readonly writeKey: string,
75
75
  public options: Options = {}
76
76
  ) {
77
77
  this.config = {
78
- apiKey,
78
+ writeKey,
79
79
  trackLocalhost: options.trackLocalhost || false,
80
80
  };
81
81
 
82
82
  this.session = new FormoAnalyticsSession();
83
83
 
84
- this.eventQueue = new FormoAnalyticsEventQueue(this.config.apiKey, {
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
- apiKey: string,
103
+ writeKey: string,
104
104
  options?: Options
105
105
  ): Promise<FormoAnalytics> {
106
- const analytics = new FormoAnalytics(apiKey, options);
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 { apiKey, disabled, children } = props;
10
+ const { writeKey, disabled, children } = props;
11
11
 
12
- // Keep the app running without analytics if no API key is provided or disabled
13
- if (!apiKey) {
14
- console.error("FormoAnalyticsProvider: No API key provided");
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
- apiKey,
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 (apiKey: string, options: any) => {
34
+ const initializeFormoAnalytics = async (writeKey: string, options: any) => {
35
35
  try {
36
- const sdkInstance = await FormoAnalytics.init(apiKey, options);
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(apiKey!, options);
49
+ await initializeFormoAnalytics(writeKey!, options);
50
50
  };
51
51
 
52
52
  initialize();
53
- }, [apiKey, options]);
53
+ }, [writeKey, options]);
54
54
 
55
55
  return (
56
56
  <FormoAnalyticsContext.Provider value={sdk}>
@@ -0,0 +1,9 @@
1
+ import { load } from "@fingerprintjs/fingerprintjs";
2
+
3
+ export class Fingerprint {
4
+ static async getVisitorId(): Promise<string> {
5
+ const fp = await load();
6
+ const { visitorId } = await fp.get();
7
+ return visitorId;
8
+ }
9
+ }
@@ -1,7 +1,13 @@
1
1
  import fetch from "fetch-retry";
2
2
  import isNetworkError from "is-network-error";
3
- import FingerprintJS from "@fingerprintjs/fingerprintjs";
4
- import { RequestEvent } from "./types";
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 * 60; // 1 MINUTE
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 FormoAnalyticsEventQueue {
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 = this.getFormattedNumericParams(
67
+ this.retryCount = clampNumber(
61
68
  options.retryCount || DEFAULT_RETRY,
62
69
  MAX_RETRY,
63
70
  MIN_RETRY
64
71
  );
65
- this.flushAt = this.getFormattedNumericParams(
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 = this.getFormattedNumericParams(
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 = this.getFormattedNumericParams(
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
- // flush before page close
86
- window.addEventListener("beforeunload", async (e) => {
87
- e.stopImmediatePropagation();
88
- await this.flush();
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 ${this.millisecondsToSecond(
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: ${this.getActionDescriptor(
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 this.getVisitorId(),
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 millisecondsToSecond(milliseconds: number): number {
230
- return Math.ceil(milliseconds / 1_000);
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 toDateHourMinute(date: Date) {
234
- return (
235
- date.getUTCFullYear() +
236
- "-" +
237
- ("0" + (date.getUTCMonth() + 1)).slice(-2) +
238
- "-" +
239
- ("0" + date.getUTCDate()).slice(-2) +
240
- " " +
241
- ("0" + date.getUTCHours()).slice(-2) +
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 checkDuplicate(newMessage: RequestEvent) {
248
- // check if exists a message with identical payload within 1 minute
249
- const formattedTimestamp = this.toDateHourMinute(
250
- new Date(newMessage.timestamp)
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
- return this.queue.some((item) => {
258
- const { message } = item;
259
- const formattedItemTimestamp = this.toDateHourMinute(
260
- new Date(message.timestamp)
261
- );
262
- const stringifiedItem = JSON.stringify({
263
- ...message,
264
- timestamp: formattedItemTimestamp,
265
- });
258
+ function handleOnLeave() {
259
+ if (pageLeft) {
260
+ return;
261
+ }
262
+
263
+ pageLeft = true;
264
+
265
+ callback(isAccessible);
266
266
 
267
- return stringifiedItem === stringifiedMessage;
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
- private getActionDescriptor(action: string, payload: any): string {
272
- return `${action}${payload?.status ? ` ${payload?.status}` : ""}`;
273
- }
285
+ (globalThis as typeof window).addEventListener("blur", () => {
286
+ isAccessible = true;
287
+ handleOnLeave();
288
+ });
274
289
 
275
- private getFormattedNumericParams(value: number, max: number, min: number) {
276
- if (value < min) return min;
277
- if (value > max) return max;
290
+ (globalThis as typeof window).addEventListener("focus", () => {
291
+ pageLeft = false;
292
+ });
278
293
 
279
- return value;
280
- }
281
- //#endregion
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
- apiKey: string;
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
- apiKey: string;
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4DAAgC;AAChC,sEAA8C;AAC9C,+EAAyD;AAGzD,IAAM,QAAQ,GAAG,IAAA,qBAAK,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAErC,IAAM,IAAI,GAAG,cAAO,CAAC,CAAC;AAiBtB,IAAM,aAAa,GAAG,CAAC,CAAC;AACxB,IAAM,SAAS,GAAG,CAAC,CAAC;AACpB,IAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,IAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,IAAM,YAAY,GAAG,EAAE,CAAC;AACxB,IAAM,YAAY,GAAG,CAAC,CAAC;AAEvB,IAAM,kBAAkB,GAAG,IAAK,GAAG,GAAG,CAAC,CAAC,QAAQ;AAChD,IAAM,cAAc,GAAG,IAAK,GAAG,GAAG,CAAC,CAAC,QAAQ;AAC5C,IAAM,cAAc,GAAG,GAAG,CAAC,CAAC,YAAY;AAExC,IAAM,sBAAsB,GAAG,IAAK,GAAG,EAAE,CAAC,CAAC,WAAW;AACtD,IAAM,kBAAkB,GAAG,IAAK,GAAG,GAAG,CAAC,CAAC,YAAY;AACpD,IAAM,kBAAkB,GAAG,IAAK,GAAG,EAAE,CAAC,CAAC,aAAa;AAEpD;IAaE,kCAAY,QAAgB,EAAE,OAAgB;QAA9C,iBAoCC;QAnCC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;QAExB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,yBAAyB,CAC9C,OAAO,CAAC,UAAU,IAAI,aAAa,EACnC,SAAS,EACT,SAAS,CACV,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,yBAAyB,CAC3C,OAAO,CAAC,OAAO,IAAI,gBAAgB,EACnC,YAAY,EACZ,YAAY,CACb,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,yBAAyB,CAChD,OAAO,CAAC,YAAY,IAAI,kBAAkB,EAC1C,cAAc,EACd,cAAc,CACf,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,yBAAyB,CACjD,OAAO,CAAC,aAAa,IAAI,sBAAsB,EAC/C,kBAAkB,EAClB,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,0BAA0B;QAC1B,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,UAAO,CAAC;;;;wBAC9C,CAAC,CAAC,wBAAwB,EAAE,CAAC;wBAC7B,qBAAM,IAAI,CAAC,KAAK,EAAE,EAAA;;wBAAlB,SAAkB,CAAC;;;;aACpB,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IAC1B,0CAAO,GAAP,UAAQ,OAAqB,EAAE,QAAiC;QAC9D,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;QAE5B,sCAAsC;QACtC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CACV,kDAA2C,IAAI,CAAC,oBAAoB,CAClE,IAAI,CAAC,aAAa,CACnB,cAAW,CACb,CAAC;YACF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,SAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CACT,0BAAmB,IAAI,CAAC,mBAAmB,CACzC,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,OAAO,CAChB,CAAE,CACJ,CAAC;QAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;QAC5D,IAAM,mBAAmB,GACvB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,IAAI,IAAK,OAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,EAAjC,CAAiC,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,YAAY,CAAC;QAEpB,IAAI,iBAAiB,IAAI,mBAAmB,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEK,wCAAK,GAAX,UAAY,QAAiC;;;;;;;;wBAC3C,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;wBAE5B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;4BACf,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;wBACpB,CAAC;wBAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;4BACvB,QAAQ,EAAE,CAAC;4BACX,sBAAO,OAAO,CAAC,OAAO,EAAE,EAAC;wBAC3B,CAAC;;;;6BAGK,IAAI,CAAC,YAAY,EAAjB,wBAAiB;wBACnB,qBAAM,IAAI,CAAC,YAAY,EAAA;;wBAAvB,SAAuB,CAAC;;;;;wBAG1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBACzB,MAAM,KAAG,CAAC;;wBAGN,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC3C,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,OAAO,EAAZ,CAAY,CAAC,CAAC;wBAEzC,IAAI,GAAG,UAAC,GAAW;4BACvB,KAAK,CAAC,OAAO,CAAC,UAAC,EAAqB;oCAAnB,OAAO,aAAA,EAAE,QAAQ,cAAA;gCAAO,OAAA,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC;4BAA5B,CAA4B,CAAC,CAAC;4BACvE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;wBACtB,CAAC,CAAC;;;4BAIE,cAAc,EAAE,kBAAkB;4BAClC,aAAa,EAAE,gBAAS,IAAI,CAAC,QAAQ,CAAE;;wBACvC,KAAA,cAAc,CAAA;wBAAE,qBAAM,IAAI,CAAC,YAAY,EAAE,EAAA;;wBAJvC,GAAG,IACP,UAAO,IAGL,MAAc,GAAE,SAAyB;+BAC1C;+BACF;wBAED,sBAAO,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAG,IAAI,CAAC,GAAG,CAAE,aAChD,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAC1B,OAAO,EAAE,IAAI,CAAC,UAAU,EACxB,UAAU,EAAE,UAAC,OAAO,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAK,EAA5B,CAA4B,EACrD,OAAO,EAAE,UAAC,CAAC,EAAE,KAAK,IAAK,OAAA,KAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAA5B,CAA4B,IAChD,GAAG,EACN;iCACC,IAAI,CAAC;gCACJ,IAAI,EAAE,CAAC;gCACP,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BAC/B,CAAC,CAAC;iCACD,KAAK,CAAC,UAAC,GAAG;gCACT,IAAI,OAAO,KAAI,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;oCAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;oCACV,OAAO,KAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;gCAChC,CAAC;gCAED,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;oCACjB,IAAM,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;oCACjD,IAAI,CAAC,KAAK,CAAC,CAAC;oCACZ,MAAM,KAAK,CAAC;gCACd,CAAC;gCAED,IAAI,CAAC,GAAG,CAAC,CAAC;gCACV,MAAM,GAAG,CAAC;4BACZ,CAAC,CAAC,CAAC,EAAC;;;;KACP;IAED,YAAY;IAEZ,2BAA2B;IAEb,+CAAY,GAA1B;;;;;4BACa,qBAAM,uBAAa,CAAC,IAAI,EAAE,EAAA;;wBAA/B,EAAE,GAAG,SAA0B;wBACf,qBAAM,EAAE,CAAC,GAAG,EAAE,EAAA;;wBAA5B,SAAS,GAAK,CAAA,SAAc,CAAA,UAAnB;wBACjB,sBAAO,SAAS,EAAC;;;;KAClB;IAEO,mDAAgB,GAAxB,UAAyB,KAAU;;QACjC,wBAAwB;QACxB,IAAI,IAAA,0BAAc,EAAC,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEvC,iDAAiD;QACjD,IAAI,CAAC,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAA;YAAE,OAAO,KAAK,CAAC;QAEnC,6BAA6B;QAC7B,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,MAAM,KAAI,GAAG,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,MAAM,KAAI,GAAG;YAClE,OAAO,IAAI,CAAC;QAEd,yBAAyB;QACzB,IAAI,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,0CAAE,MAAM,MAAK,GAAG;YAAE,OAAO,IAAI,CAAC;QAEjD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,uDAAoB,GAA5B,UAA6B,YAAoB;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAK,CAAC,CAAC;IACzC,CAAC;IAEO,mDAAgB,GAAxB,UAAyB,IAAU;QACjC,OAAO,CACL,IAAI,CAAC,cAAc,EAAE;YACrB,GAAG;YACH,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1C,GAAG;YACH,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnC,GAAG;YACH,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACpC,GAAG;YACH,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACvC,CAAC;IACJ,CAAC;IAEO,iDAAc,GAAtB,UAAuB,UAAwB;QAA/C,iBAsBC;QArBC,mEAAmE;QACnE,IAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAC9C,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAC/B,CAAC;QACF,IAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,uBACpC,UAAU,KACb,SAAS,EAAE,kBAAkB,IAC7B,CAAC;QAEH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAC,IAAI;YAClB,IAAA,OAAO,GAAK,IAAI,QAAT,CAAU;YACzB,IAAM,sBAAsB,GAAG,KAAI,CAAC,gBAAgB,CAClD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAC5B,CAAC;YACF,IAAM,eAAe,GAAG,IAAI,CAAC,SAAS,uBACjC,OAAO,KACV,SAAS,EAAE,sBAAsB,IACjC,CAAC;YAEH,OAAO,eAAe,KAAK,kBAAkB,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sDAAmB,GAA3B,UAA4B,MAAc,EAAE,OAAY;QACtD,OAAO,UAAG,MAAM,SAAG,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAC,CAAC,CAAC,WAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,CAAE,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;IACpE,CAAC;IAEO,4DAAyB,GAAjC,UAAkC,KAAa,EAAE,GAAW,EAAE,GAAW;QACvE,IAAI,KAAK,GAAG,GAAG;YAAE,OAAO,GAAG,CAAC;QAC5B,IAAI,KAAK,GAAG,GAAG;YAAE,OAAO,GAAG,CAAC;QAE5B,OAAO,KAAK,CAAC;IACf,CAAC;IAEH,+BAAC;AAAD,CAAC,AAjPD,IAiPC;AAjPY,4DAAwB"}
@@ -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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"}