@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
@@ -0,0 +1,60 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ 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);
12
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { load } from "@fingerprintjs/fingerprintjs";
38
+ var Fingerprint = /** @class */ (function () {
39
+ function Fingerprint() {
40
+ }
41
+ Fingerprint.getVisitorId = function () {
42
+ return __awaiter(this, void 0, void 0, function () {
43
+ var fp, visitorId;
44
+ return __generator(this, function (_a) {
45
+ switch (_a.label) {
46
+ case 0: return [4 /*yield*/, load()];
47
+ case 1:
48
+ fp = _a.sent();
49
+ return [4 /*yield*/, fp.get()];
50
+ case 2:
51
+ visitorId = (_a.sent()).visitorId;
52
+ return [2 /*return*/, visitorId];
53
+ }
54
+ });
55
+ });
56
+ };
57
+ return Fingerprint;
58
+ }());
59
+ export { Fingerprint };
60
+ //# sourceMappingURL=fingerprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["../../../../src/lib/fingerprint.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AAEpD;IAAA;IAMA,CAAC;IALc,wBAAY,GAAzB;;;;;4BACa,qBAAM,IAAI,EAAE,EAAA;;wBAAjB,EAAE,GAAG,SAAY;wBACD,qBAAM,EAAE,CAAC,GAAG,EAAE,EAAA;;wBAA5B,SAAS,GAAK,CAAA,SAAc,CAAA,UAAnB;wBACjB,sBAAO,SAAS,EAAC;;;;KAClB;IACH,kBAAC;AAAD,CAAC,AAND,IAMC"}
@@ -1,4 +1,4 @@
1
- import { RequestEvent } from "./types";
1
+ import { RequestEvent } from "../types";
2
2
  type Options = {
3
3
  url: string;
4
4
  flushAt?: number;
@@ -8,7 +8,7 @@ type Options = {
8
8
  errorHandler?: any;
9
9
  maxQueueSize?: number;
10
10
  };
11
- export declare class FormoAnalyticsEventQueue {
11
+ export declare class EventQueue {
12
12
  private writeKey;
13
13
  private url;
14
14
  private queue;
@@ -20,16 +20,14 @@ export declare class FormoAnalyticsEventQueue {
20
20
  private errorHandler;
21
21
  private retryCount;
22
22
  private pendingFlush;
23
+ private payloadHashes;
23
24
  constructor(writeKey: string, options: Options);
24
- enqueue(message: RequestEvent, callback?: (...args: any) => void): void;
25
+ enqueue(message: RequestEvent, callback?: (...args: any) => void): Promise<void>;
25
26
  flush(callback?: (...args: any) => void): Promise<any>;
26
- private getVisitorId;
27
27
  private isErrorRetryable;
28
- private millisecondsToSecond;
29
- private toDateHourMinute;
30
28
  private checkDuplicate;
31
- private getActionDescriptor;
32
- private getFormattedNumericParams;
29
+ private hashPayload;
30
+ private onPageLeave;
33
31
  }
34
32
  export {};
35
- //# sourceMappingURL=FormoAnalyticsEventQueue.d.ts.map
33
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../../src/lib/queue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkBxC,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,UAAU;IACrB,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;IAC1C,OAAO,CAAC,aAAa,CAA0B;gBAEnC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO;IAuCxC,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI;IAwChE,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,IAAI;IAsE7C,OAAO,CAAC,gBAAgB;YAiBV,cAAc;YAad,WAAW;IAYzB,OAAO,CAAC,WAAW,CAyDjB;CACH"}
@@ -47,7 +47,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
47
47
  };
48
48
  import fetch from "fetch-retry";
49
49
  import isNetworkError from "is-network-error";
50
- import FingerprintJS from "@fingerprintjs/fingerprintjs";
50
+ import { clampNumber, getActionDescriptor, millisecondsToSecond, toDateHourMinute, } from "./utils";
51
+ import { Fingerprint } from "./fingerprint";
51
52
  var sdkFetch = fetch(global.fetch);
52
53
  var noop = function () { };
53
54
  var DEFAULT_RETRY = 3;
@@ -59,65 +60,127 @@ var MIN_FLUSH_AT = 1;
59
60
  var DEFAULT_QUEUE_SIZE = 1024 * 500; // 500kB
60
61
  var MAX_QUEUE_SIZE = 1024 * 500; // 500kB
61
62
  var MIN_QUEUE_SIZE = 200; // 200 bytes
62
- var DEFAULT_FLUSH_INTERVAL = 1000 * 60; // 1 MINUTE
63
+ var DEFAULT_FLUSH_INTERVAL = 1000 * 30; // 1 MINUTE
63
64
  var MAX_FLUSH_INTERVAL = 1000 * 300; // 5 MINUTES
64
65
  var MIN_FLUSH_INTERVAL = 1000 * 10; // 10 SECONDS
65
- var FormoAnalyticsEventQueue = /** @class */ (function () {
66
- function FormoAnalyticsEventQueue(writeKey, options) {
66
+ var EventQueue = /** @class */ (function () {
67
+ function EventQueue(writeKey, options) {
67
68
  var _this = this;
69
+ this.payloadHashes = new Set();
70
+ this.onPageLeave = function (callback) {
71
+ // To ensure the callback is only called once even if more than one events
72
+ // are fired at once.
73
+ var pageLeft = false;
74
+ var isAccessible = false;
75
+ function handleOnLeave() {
76
+ if (pageLeft) {
77
+ return;
78
+ }
79
+ pageLeft = true;
80
+ callback(isAccessible);
81
+ // Reset pageLeft on the next tick
82
+ // to ensure callback executes for other listeners
83
+ // when closing an inactive browser tab.
84
+ setTimeout(function () {
85
+ pageLeft = false;
86
+ }, 0);
87
+ }
88
+ // Catches the unloading of the page (e.g., closing the tab or navigating away).
89
+ // Includes user actions like clicking a link, entering a new URL,
90
+ // refreshing the page, or closing the browser tab
91
+ // Note that 'pagehide' is not supported in IE.
92
+ // So, this is a fallback.
93
+ globalThis.addEventListener("beforeunload", function () {
94
+ isAccessible = false;
95
+ handleOnLeave();
96
+ });
97
+ globalThis.addEventListener("blur", function () {
98
+ isAccessible = true;
99
+ handleOnLeave();
100
+ });
101
+ globalThis.addEventListener("focus", function () {
102
+ pageLeft = false;
103
+ });
104
+ // Catches the page being hidden, including scenarios like closing the tab.
105
+ document.addEventListener("pagehide", function () {
106
+ isAccessible = document.visibilityState === "hidden";
107
+ handleOnLeave();
108
+ });
109
+ // Catches visibility changes, such as switching tabs or minimizing the browser.
110
+ document.addEventListener("visibilitychange", function () {
111
+ isAccessible = true;
112
+ if (document.visibilityState === "hidden") {
113
+ handleOnLeave();
114
+ }
115
+ else {
116
+ pageLeft = false;
117
+ }
118
+ });
119
+ };
68
120
  options = options || {};
69
121
  this.queue = [];
70
122
  this.writeKey = writeKey;
71
123
  this.url = options.url;
72
- this.retryCount = this.getFormattedNumericParams(options.retryCount || DEFAULT_RETRY, MAX_RETRY, MIN_RETRY);
73
- this.flushAt = this.getFormattedNumericParams(options.flushAt || DEFAULT_FLUSH_AT, MAX_FLUSH_AT, MIN_FLUSH_AT);
74
- this.maxQueueSize = this.getFormattedNumericParams(options.maxQueueSize || DEFAULT_QUEUE_SIZE, MAX_QUEUE_SIZE, MIN_QUEUE_SIZE);
75
- this.flushInterval = this.getFormattedNumericParams(options.flushInterval || DEFAULT_FLUSH_INTERVAL, MAX_FLUSH_INTERVAL, MIN_FLUSH_INTERVAL);
124
+ this.retryCount = clampNumber(options.retryCount || DEFAULT_RETRY, MAX_RETRY, MIN_RETRY);
125
+ this.flushAt = clampNumber(options.flushAt || DEFAULT_FLUSH_AT, MAX_FLUSH_AT, MIN_FLUSH_AT);
126
+ this.maxQueueSize = clampNumber(options.maxQueueSize || DEFAULT_QUEUE_SIZE, MAX_QUEUE_SIZE, MIN_QUEUE_SIZE);
127
+ this.flushInterval = clampNumber(options.flushInterval || DEFAULT_FLUSH_INTERVAL, MAX_FLUSH_INTERVAL, MIN_FLUSH_INTERVAL);
76
128
  this.flushed = true;
77
129
  this.errorHandler = options.errorHandler;
78
130
  this.pendingFlush = null;
79
131
  this.timer = null;
80
- // flush before page close
81
- window.addEventListener("beforeunload", function (e) { return __awaiter(_this, void 0, void 0, function () {
132
+ this.onPageLeave(function (isAccessible) { return __awaiter(_this, void 0, void 0, function () {
82
133
  return __generator(this, function (_a) {
83
134
  switch (_a.label) {
84
135
  case 0:
85
- e.stopImmediatePropagation();
136
+ if (!(isAccessible === false)) return [3 /*break*/, 2];
86
137
  return [4 /*yield*/, this.flush()];
87
138
  case 1:
88
139
  _a.sent();
89
- return [2 /*return*/];
140
+ _a.label = 2;
141
+ case 2: return [2 /*return*/];
90
142
  }
91
143
  });
92
144
  }); });
93
145
  }
94
146
  //#region Public functions
95
- FormoAnalyticsEventQueue.prototype.enqueue = function (message, callback) {
96
- callback = callback || noop;
97
- // check if the message already exists
98
- if (this.checkDuplicate(message)) {
99
- console.warn("Event already enqueued, try again after ".concat(this.millisecondsToSecond(this.flushInterval), " seconds."));
100
- return;
101
- }
102
- this.queue.push({ message: message, callback: callback });
103
- console.log("Event enqueued: ".concat(this.getActionDescriptor(message.action, message.payload)));
104
- if (!this.flushed) {
105
- this.flushed = true;
106
- this.flush();
107
- return;
108
- }
109
- var hasReachedFlushAt = this.queue.length >= this.flushAt;
110
- var hasReachedQueueSize = this.queue.reduce(function (acc, item) { return acc + JSON.stringify(item).length; }, 0) >=
111
- this.maxQueueSize;
112
- if (hasReachedFlushAt || hasReachedQueueSize) {
113
- this.flush();
114
- return;
115
- }
116
- if (this.flushInterval && !this.timer) {
117
- this.timer = setTimeout(this.flush.bind(this), this.flushInterval);
118
- }
147
+ EventQueue.prototype.enqueue = function (message, callback) {
148
+ return __awaiter(this, void 0, void 0, function () {
149
+ var hasReachedFlushAt, hasReachedQueueSize;
150
+ return __generator(this, function (_a) {
151
+ switch (_a.label) {
152
+ case 0:
153
+ callback = callback || noop;
154
+ return [4 /*yield*/, this.checkDuplicate(message)];
155
+ case 1:
156
+ // check if the message already exists
157
+ if (_a.sent()) {
158
+ console.warn("Event already enqueued, try again after ".concat(millisecondsToSecond(this.flushInterval), " seconds."));
159
+ return [2 /*return*/];
160
+ }
161
+ this.queue.push({ message: message, callback: callback });
162
+ console.log("Event enqueued: ".concat(getActionDescriptor(message.action, message.payload)));
163
+ if (!this.flushed) {
164
+ this.flushed = true;
165
+ this.flush();
166
+ return [2 /*return*/];
167
+ }
168
+ hasReachedFlushAt = this.queue.length >= this.flushAt;
169
+ hasReachedQueueSize = this.queue.reduce(function (acc, item) { return acc + JSON.stringify(item).length; }, 0) >=
170
+ this.maxQueueSize;
171
+ if (hasReachedFlushAt || hasReachedQueueSize) {
172
+ this.flush();
173
+ return [2 /*return*/];
174
+ }
175
+ if (this.flushInterval && !this.timer) {
176
+ this.timer = setTimeout(this.flush.bind(this), this.flushInterval);
177
+ }
178
+ return [2 /*return*/];
179
+ }
180
+ });
181
+ });
119
182
  };
120
- FormoAnalyticsEventQueue.prototype.flush = function (callback) {
183
+ EventQueue.prototype.flush = function (callback) {
121
184
  return __awaiter(this, void 0, void 0, function () {
122
185
  var err_1, items, data, done, req, _a;
123
186
  var _b, _c;
@@ -149,6 +212,7 @@ var FormoAnalyticsEventQueue = /** @class */ (function () {
149
212
  throw err_1;
150
213
  case 5:
151
214
  items = this.queue.splice(0, this.flushAt);
215
+ this.payloadHashes.clear();
152
216
  data = items.map(function (item) { return item.message; });
153
217
  done = function (err) {
154
218
  items.forEach(function (_a) {
@@ -163,12 +227,12 @@ var FormoAnalyticsEventQueue = /** @class */ (function () {
163
227
  Authorization: "Basic ".concat(this.writeKey)
164
228
  };
165
229
  _a = "X-Visitor-Id";
166
- return [4 /*yield*/, this.getVisitorId()];
230
+ return [4 /*yield*/, Fingerprint.getVisitorId()];
167
231
  case 6:
168
232
  req = (_b.headers = (_c[_a] = _d.sent(),
169
233
  _c),
170
234
  _b);
171
- return [2 /*return*/, (this.pendingFlush = sdkFetch("".concat(this.url), __assign({ method: "POST", body: JSON.stringify(data), retries: this.retryCount, retryDelay: function (attempt) { return Math.pow(2, attempt) * 1000; }, retryOn: function (_, error) { return _this.isErrorRetryable(error); } }, req))
235
+ return [2 /*return*/, (this.pendingFlush = sdkFetch("".concat(this.url), __assign({ method: "POST", body: JSON.stringify(data), keepalive: true, retries: this.retryCount, retryDelay: function (attempt) { return Math.pow(2, attempt) * 1000; }, retryOn: function (_, error) { return _this.isErrorRetryable(error); } }, req))
172
236
  .then(function () {
173
237
  done();
174
238
  return Promise.resolve(data);
@@ -190,25 +254,8 @@ var FormoAnalyticsEventQueue = /** @class */ (function () {
190
254
  });
191
255
  });
192
256
  };
193
- //#endregion
194
257
  //#region Utility functions
195
- FormoAnalyticsEventQueue.prototype.getVisitorId = function () {
196
- return __awaiter(this, void 0, void 0, function () {
197
- var fp, visitorId;
198
- return __generator(this, function (_a) {
199
- switch (_a.label) {
200
- case 0: return [4 /*yield*/, FingerprintJS.load()];
201
- case 1:
202
- fp = _a.sent();
203
- return [4 /*yield*/, fp.get()];
204
- case 2:
205
- visitorId = (_a.sent()).visitorId;
206
- return [2 /*return*/, visitorId];
207
- }
208
- });
209
- });
210
- };
211
- FormoAnalyticsEventQueue.prototype.isErrorRetryable = function (error) {
258
+ EventQueue.prototype.isErrorRetryable = function (error) {
212
259
  var _a, _b, _c;
213
260
  // Retry Network Errors.
214
261
  if (isNetworkError(error))
@@ -224,43 +271,43 @@ var FormoAnalyticsEventQueue = /** @class */ (function () {
224
271
  return true;
225
272
  return false;
226
273
  };
227
- FormoAnalyticsEventQueue.prototype.millisecondsToSecond = function (milliseconds) {
228
- return Math.ceil(milliseconds / 1000);
229
- };
230
- FormoAnalyticsEventQueue.prototype.toDateHourMinute = function (date) {
231
- return (date.getUTCFullYear() +
232
- "-" +
233
- ("0" + (date.getUTCMonth() + 1)).slice(-2) +
234
- "-" +
235
- ("0" + date.getUTCDate()).slice(-2) +
236
- " " +
237
- ("0" + date.getUTCHours()).slice(-2) +
238
- ":" +
239
- ("0" + date.getUTCMinutes()).slice(-2));
240
- };
241
- FormoAnalyticsEventQueue.prototype.checkDuplicate = function (newMessage) {
242
- var _this = this;
243
- // check if exists a message with identical payload within 1 minute
244
- var formattedTimestamp = this.toDateHourMinute(new Date(newMessage.timestamp));
245
- var stringifiedMessage = JSON.stringify(__assign(__assign({}, newMessage), { timestamp: formattedTimestamp }));
246
- return this.queue.some(function (item) {
247
- var message = item.message;
248
- var formattedItemTimestamp = _this.toDateHourMinute(new Date(message.timestamp));
249
- var stringifiedItem = JSON.stringify(__assign(__assign({}, message), { timestamp: formattedItemTimestamp }));
250
- return stringifiedItem === stringifiedMessage;
274
+ EventQueue.prototype.checkDuplicate = function (newMessage) {
275
+ return __awaiter(this, void 0, void 0, function () {
276
+ var formattedTimestamp, hash;
277
+ return __generator(this, function (_a) {
278
+ switch (_a.label) {
279
+ case 0:
280
+ formattedTimestamp = toDateHourMinute(new Date(newMessage.timestamp));
281
+ newMessage.timestamp = formattedTimestamp;
282
+ return [4 /*yield*/, this.hashPayload(newMessage)];
283
+ case 1:
284
+ hash = _a.sent();
285
+ if (this.payloadHashes.has(hash)) {
286
+ return [2 /*return*/, true];
287
+ }
288
+ this.payloadHashes.add(hash);
289
+ return [2 /*return*/, false];
290
+ }
291
+ });
251
292
  });
252
293
  };
253
- FormoAnalyticsEventQueue.prototype.getActionDescriptor = function (action, payload) {
254
- return "".concat(action).concat((payload === null || payload === void 0 ? void 0 : payload.status) ? " ".concat(payload === null || payload === void 0 ? void 0 : payload.status) : "");
255
- };
256
- FormoAnalyticsEventQueue.prototype.getFormattedNumericParams = function (value, max, min) {
257
- if (value < min)
258
- return min;
259
- if (value > max)
260
- return max;
261
- return value;
294
+ EventQueue.prototype.hashPayload = function (payload_1) {
295
+ return __awaiter(this, arguments, void 0, function (payload, algo) {
296
+ var _a, _b, _c;
297
+ if (algo === void 0) { algo = "SHA-1"; }
298
+ return __generator(this, function (_d) {
299
+ switch (_d.label) {
300
+ case 0:
301
+ _b = (_a = Array).from;
302
+ _c = Uint8Array.bind;
303
+ return [4 /*yield*/, crypto.subtle.digest(algo, new TextEncoder().encode(JSON.stringify(payload)))];
304
+ case 1: return [2 /*return*/, _b.apply(_a, [new (_c.apply(Uint8Array, [void 0, _d.sent()]))(),
305
+ function (byte) { return byte.toString(16).padStart(2, "0"); }]).join("")];
306
+ }
307
+ });
308
+ });
262
309
  };
263
- return FormoAnalyticsEventQueue;
310
+ return EventQueue;
264
311
  }());
265
- export { FormoAnalyticsEventQueue };
266
- //# sourceMappingURL=FormoAnalyticsEventQueue.js.map
312
+ export { EventQueue };
313
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../../src/lib/queue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAE9C,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,IAAM,QAAQ,GAAG,KAAK,CAAC,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;IAcE,oBAAY,QAAgB,EAAE,OAAgB;QAA9C,iBAoCC;QAtCO,kBAAa,GAAgB,IAAI,GAAG,EAAE,CAAC;QAiMvC,gBAAW,GAAG,UAAC,QAAyC;YAC9D,0EAA0E;YAC1E,qBAAqB;YACrB,IAAI,QAAQ,GAAG,KAAK,CAAC;YACrB,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,SAAS,aAAa;gBACpB,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO;gBACT,CAAC;gBAED,QAAQ,GAAG,IAAI,CAAC;gBAEhB,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAEvB,kCAAkC;gBAClC,kDAAkD;gBAClD,wCAAwC;gBACxC,UAAU,CAAC;oBACT,QAAQ,GAAG,KAAK,CAAC;gBACnB,CAAC,EAAE,CAAC,CAAC,CAAC;YACR,CAAC;YAED,gFAAgF;YAChF,kEAAkE;YAClE,kDAAkD;YAClD,+CAA+C;YAC/C,0BAA0B;YACzB,UAA4B,CAAC,gBAAgB,CAAC,cAAc,EAAE;gBAC7D,YAAY,GAAG,KAAK,CAAC;gBACrB,aAAa,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEF,UAA4B,CAAC,gBAAgB,CAAC,MAAM,EAAE;gBACrD,YAAY,GAAG,IAAI,CAAC;gBACpB,aAAa,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEF,UAA4B,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBACtD,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC,CAAC,CAAC;YAEH,2EAA2E;YAC3E,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE;gBACpC,YAAY,GAAG,QAAQ,CAAC,eAAe,KAAK,QAAQ,CAAC;gBACrD,aAAa,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,gFAAgF;YAChF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;gBAC5C,YAAY,GAAG,IAAI,CAAC;gBACpB,IAAI,QAAQ,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;oBAC1C,aAAa,EAAE,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,QAAQ,GAAG,KAAK,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAvPA,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,WAAW,CAC3B,OAAO,CAAC,UAAU,IAAI,aAAa,EACnC,SAAS,EACT,SAAS,CACV,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,WAAW,CACxB,OAAO,CAAC,OAAO,IAAI,gBAAgB,EACnC,YAAY,EACZ,YAAY,CACb,CAAC;QACF,IAAI,CAAC,YAAY,GAAG,WAAW,CAC7B,OAAO,CAAC,YAAY,IAAI,kBAAkB,EAC1C,cAAc,EACd,cAAc,CACf,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,WAAW,CAC9B,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,IAAI,CAAC,WAAW,CAAC,UAAO,YAAqB;;;;6BACvC,CAAA,YAAY,KAAK,KAAK,CAAA,EAAtB,wBAAsB;wBACxB,qBAAM,IAAI,CAAC,KAAK,EAAE,EAAA;;wBAAlB,SAAkB,CAAC;;;;;aAEtB,CAAC,CAAC;IACL,CAAC;IAED,0BAA0B;IACpB,4BAAO,GAAb,UAAc,OAAqB,EAAE,QAAiC;;;;;;wBACpE,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;wBAGxB,qBAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAA;;wBADtC,sCAAsC;wBACtC,IAAI,SAAkC,EAAE,CAAC;4BACvC,OAAO,CAAC,IAAI,CACV,kDAA2C,oBAAoB,CAC7D,IAAI,CAAC,aAAa,CACnB,cAAW,CACb,CAAC;4BACF,sBAAO;wBACT,CAAC;wBAED,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,OAAO,SAAA,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;wBAEvC,OAAO,CAAC,GAAG,CACT,0BAAmB,mBAAmB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAE,CAC1E,CAAC;wBAEF,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;4BAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;4BACpB,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,sBAAO;wBACT,CAAC;wBAEK,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC;wBACtD,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;4BACtE,IAAI,CAAC,YAAY,CAAC;wBAEpB,IAAI,iBAAiB,IAAI,mBAAmB,EAAE,CAAC;4BAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;4BACb,sBAAO;wBACT,CAAC;wBAED,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;4BACtC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;wBACrE,CAAC;;;;;KACF;IAEK,0BAAK,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;wBACjD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;wBACrB,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,WAAW,CAAC,YAAY,EAAE,EAAA;;wBAJ9C,GAAG,IACP,UAAO,IAGL,MAAc,GAAE,SAAgC;+BACjD;+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,SAAS,EAAE,IAAI,EACf,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,2BAA2B;IACnB,qCAAgB,GAAxB,UAAyB,KAAU;;QACjC,wBAAwB;QACxB,IAAI,cAAc,CAAC,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;IAEa,mCAAc,GAA5B,UAA6B,UAAwB;;;;;;wBAE7C,kBAAkB,GAAG,gBAAgB,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;wBAC5E,UAAU,CAAC,SAAS,GAAG,kBAAkB,CAAC;wBAE7B,qBAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAA;;wBAAzC,IAAI,GAAG,SAAkC;wBAC/C,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BACjC,sBAAO,IAAI,EAAC;wBACd,CAAC;wBACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC7B,sBAAO,KAAK,EAAC;;;;KACd;IAEa,gCAAW,GAAzB;4DAA0B,OAAqB,EAAE,IAAc;;YAAd,qBAAA,EAAA,cAAc;;;;wBACtD,KAAA,CAAA,KAAA,KAAK,CAAA,CAAC,IAAI,CAAA;6BACX,UAAU;wBACZ,qBAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CACxB,IAAI,EACJ,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAClD,EAAA;4BALL,sBAAO,cACL,cAAI,UAAU,WACZ,SAGC,KACF;4BACD,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAlC,CAAkC,EAC7C,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC;;;;KACZ;IA4DH,iBAAC;AAAD,CAAC,AAvQD,IAuQC"}
@@ -1,4 +1,8 @@
1
1
  export declare function toSnakeCase(obj: any, omitKeys?: string[]): any;
2
2
  export declare const isLocalhost: () => boolean;
3
3
  export declare const isAddress: (address: string) => boolean;
4
+ export declare const millisecondsToSecond: (milliseconds: number) => number;
5
+ export declare const toDateHourMinute: (date: Date) => string;
6
+ export declare const clampNumber: (value: number, max: number, min: number) => number;
7
+ export declare const getActionDescriptor: (action: string, payload: any) => string;
4
8
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,GAAE,MAAM,EAAO,OAkB5D;AAED,eAAO,MAAM,WAAW,eAGmB,CAAC;AAE5C,eAAO,MAAM,SAAS,YAAa,MAAM,YAAqC,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/lib/utils.ts"],"names":[],"mappings":"AASA,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,GAAE,MAAM,EAAO,OAkB5D;AAED,eAAO,MAAM,WAAW,eAGmB,CAAC;AAE5C,eAAO,MAAM,SAAS,YAAa,MAAM,YAAqC,CAAC;AAE/E,eAAO,MAAM,oBAAoB,iBAAkB,MAAM,KAAG,MAC3B,CAAC;AAElC,eAAO,MAAM,gBAAgB,SAAU,IAAI,WASH,CAAC;AAEzC,eAAO,MAAM,WAAW,UAAW,MAAM,OAAO,MAAM,OAAO,MAAM,WAElE,CAAC;AAEF,eAAO,MAAM,mBAAmB,WAAY,MAAM,WAAW,GAAG,KAAG,MAElE,CAAC"}
@@ -30,4 +30,24 @@ export var isLocalhost = function () {
30
30
  return /^localhost$|^127(?:\.[0-9]+){0,2}\.[0-9]+$|^(?:0*:)*?:?0*1$/.test(window.location.hostname) || window.location.protocol === "file:";
31
31
  };
32
32
  export var isAddress = function (address) { return REGEX.addressRegex.test(address); };
33
+ export var millisecondsToSecond = function (milliseconds) {
34
+ return Math.ceil(milliseconds / 1000);
35
+ };
36
+ export var toDateHourMinute = function (date) {
37
+ return date.getUTCFullYear() +
38
+ "-" +
39
+ ("0" + (date.getUTCMonth() + 1)).slice(-2) +
40
+ "-" +
41
+ ("0" + date.getUTCDate()).slice(-2) +
42
+ " " +
43
+ ("0" + date.getUTCHours()).slice(-2) +
44
+ ":" +
45
+ ("0" + date.getUTCMinutes()).slice(-2);
46
+ };
47
+ export var clampNumber = function (value, max, min) {
48
+ return Math.min(Math.max(value, min), max);
49
+ };
50
+ export var getActionDescriptor = function (action, payload) {
51
+ return "".concat(action).concat((payload === null || payload === void 0 ? void 0 : payload.status) ? " ".concat(payload === null || payload === void 0 ? void 0 : payload.status) : "");
52
+ };
33
53
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,IAAM,OAAO,GAAG,UAAC,GAAW;IAC1B,OAAA,GAAG;SACA,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,WAAW,EAAE;AAHhB,CAGgB,CAAC;AAEnB,0EAA0E;AAC1E,MAAM,UAAU,WAAW,CAAC,GAAQ,EAAE,QAAuB;IAAvB,yBAAA,EAAA,aAAuB;IAC3D,IAAM,OAAO,GAAG,UAAC,IAAS;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oCAAoC;QAChE,CAAC;aAAM,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YACrD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAC,GAAQ,EAAE,GAAG;gBAC5C,8CAA8C;gBAC9C,IAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC9D,GAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;oBACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBACX,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvB,OAAO,GAAG,CAAC;YACb,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,IAAM,WAAW,GAAG;IACzB,OAAA,6DAA6D,CAAC,IAAI,CAChE,MAAM,CAAC,QAAQ,CAAC,QAAQ,CACzB,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,OAAO;AAFzC,CAEyC,CAAC;AAE5C,MAAM,CAAC,IAAM,SAAS,GAAG,UAAC,OAAe,IAAK,OAAA,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAhC,CAAgC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/lib/utils.ts"],"names":[],"mappings":"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"}
@@ -10,13 +10,13 @@ export interface Options {
10
10
  maxQueueSize?: number;
11
11
  }
12
12
  export interface FormoAnalyticsProviderProps {
13
- apiKey: string;
13
+ writeKey: string;
14
14
  options?: Options;
15
15
  disabled?: boolean;
16
16
  children: React.ReactNode;
17
17
  }
18
18
  export interface Config {
19
- apiKey: string;
19
+ writeKey: string;
20
20
  trackLocalhost?: boolean;
21
21
  }
22
22
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAG7B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../src/types/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAG7B,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B"}