@formo/analytics 1.11.12 → 1.11.13

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 (79) hide show
  1. package/dist/387.index.umd.min.js +125 -0
  2. package/dist/387.index.umd.min.js.map +1 -0
  3. package/dist/cjs/src/FormoAnalytics.d.ts +94 -0
  4. package/dist/cjs/src/FormoAnalytics.d.ts.map +1 -0
  5. package/dist/cjs/src/FormoAnalytics.js +507 -0
  6. package/dist/cjs/src/FormoAnalytics.js.map +1 -0
  7. package/dist/cjs/src/FormoAnalyticsProvider.d.ts +7 -0
  8. package/dist/cjs/src/FormoAnalyticsProvider.d.ts.map +1 -0
  9. package/dist/cjs/src/FormoAnalyticsProvider.js +127 -0
  10. package/dist/cjs/src/FormoAnalyticsProvider.js.map +1 -0
  11. package/dist/cjs/src/constants/config.d.ts +559 -0
  12. package/dist/cjs/src/constants/config.d.ts.map +1 -0
  13. package/dist/cjs/src/constants/config.js +570 -0
  14. package/dist/cjs/src/constants/config.js.map +1 -0
  15. package/dist/cjs/src/constants/events.d.ts +8 -0
  16. package/dist/cjs/src/constants/events.d.ts.map +1 -0
  17. package/dist/cjs/src/constants/events.js +12 -0
  18. package/dist/cjs/src/constants/events.js.map +1 -0
  19. package/dist/cjs/src/constants/index.d.ts +3 -0
  20. package/dist/cjs/src/constants/index.d.ts.map +1 -0
  21. package/dist/cjs/src/constants/index.js +19 -0
  22. package/dist/cjs/src/constants/index.js.map +1 -0
  23. package/dist/cjs/src/index.d.ts +4 -0
  24. package/dist/cjs/src/index.d.ts.map +1 -0
  25. package/dist/cjs/src/index.js.map +1 -0
  26. package/dist/cjs/src/types/base.d.ts +12 -0
  27. package/dist/cjs/src/types/base.d.ts.map +1 -0
  28. package/dist/cjs/src/types/base.js +3 -0
  29. package/dist/cjs/src/types/base.js.map +1 -0
  30. package/dist/cjs/src/types/index.d.ts +3 -0
  31. package/dist/cjs/src/types/index.d.ts.map +1 -0
  32. package/dist/cjs/src/types/index.js +19 -0
  33. package/dist/cjs/src/types/index.js.map +1 -0
  34. package/dist/cjs/src/types/wallet.d.ts +11 -0
  35. package/dist/cjs/src/types/wallet.d.ts.map +1 -0
  36. package/dist/cjs/src/types/wallet.js +3 -0
  37. package/dist/cjs/src/types/wallet.js.map +1 -0
  38. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  39. package/dist/esm/src/FormoAnalytics.d.ts +94 -0
  40. package/dist/esm/src/FormoAnalytics.d.ts.map +1 -0
  41. package/dist/esm/src/FormoAnalytics.js +501 -0
  42. package/dist/esm/src/FormoAnalytics.js.map +1 -0
  43. package/dist/esm/src/FormoAnalyticsProvider.d.ts +7 -0
  44. package/dist/esm/src/FormoAnalyticsProvider.d.ts.map +1 -0
  45. package/dist/esm/src/FormoAnalyticsProvider.js +122 -0
  46. package/dist/esm/src/FormoAnalyticsProvider.js.map +1 -0
  47. package/dist/esm/src/constants/config.d.ts +559 -0
  48. package/dist/esm/src/constants/config.d.ts.map +1 -0
  49. package/dist/esm/src/constants/config.js +567 -0
  50. package/dist/esm/src/constants/config.js.map +1 -0
  51. package/dist/esm/src/constants/events.d.ts +8 -0
  52. package/dist/esm/src/constants/events.d.ts.map +1 -0
  53. package/dist/esm/src/constants/events.js +9 -0
  54. package/dist/esm/src/constants/events.js.map +1 -0
  55. package/dist/esm/src/constants/index.d.ts +3 -0
  56. package/dist/esm/src/constants/index.d.ts.map +1 -0
  57. package/dist/esm/src/constants/index.js +3 -0
  58. package/dist/esm/src/constants/index.js.map +1 -0
  59. package/dist/esm/src/index.d.ts +4 -0
  60. package/dist/esm/src/index.d.ts.map +1 -0
  61. package/dist/esm/src/index.js +4 -0
  62. package/dist/esm/src/index.js.map +1 -0
  63. package/dist/esm/src/types/base.d.ts +12 -0
  64. package/dist/esm/src/types/base.d.ts.map +1 -0
  65. package/dist/esm/src/types/base.js +2 -0
  66. package/dist/esm/src/types/base.js.map +1 -0
  67. package/dist/esm/src/types/index.d.ts +3 -0
  68. package/dist/esm/src/types/index.d.ts.map +1 -0
  69. package/dist/esm/src/types/index.js +3 -0
  70. package/dist/esm/src/types/index.js.map +1 -0
  71. package/dist/esm/src/types/wallet.d.ts +11 -0
  72. package/dist/esm/src/types/wallet.d.ts.map +1 -0
  73. package/dist/esm/src/types/wallet.js +2 -0
  74. package/dist/esm/src/types/wallet.js.map +1 -0
  75. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  76. package/dist/index.umd.min.js +3 -0
  77. package/dist/index.umd.min.js.LICENSE.txt +31 -0
  78. package/dist/index.umd.min.js.map +1 -0
  79. package/package.json +1 -1
@@ -0,0 +1,501 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ 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);
23
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ 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;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import axios from "axios";
49
+ import { COUNTRY_LIST, EVENTS_API_URL, SESSION_STORAGE_ID_KEY, Event, } from "./constants";
50
+ import { H } from "highlight.run";
51
+ var FormoAnalytics = /** @class */ (function () {
52
+ function FormoAnalytics(apiKey, options) {
53
+ if (options === void 0) { options = {}; }
54
+ var _a;
55
+ this.apiKey = apiKey;
56
+ this.options = options;
57
+ this._registeredProviderListeners = {};
58
+ this.walletAddressSessionKey = "walletAddress";
59
+ this.sessionIdKey = SESSION_STORAGE_ID_KEY;
60
+ this.timezoneToCountry = COUNTRY_LIST;
61
+ this.config = {
62
+ token: this.apiKey,
63
+ };
64
+ var provider = (window === null || window === void 0 ? void 0 : window.ethereum) || ((_a = window.web3) === null || _a === void 0 ? void 0 : _a.currentProvider) || (options === null || options === void 0 ? void 0 : options.provider);
65
+ if (provider) {
66
+ this.trackProvider(provider);
67
+ }
68
+ }
69
+ FormoAnalytics.init = function (apiKey, options) {
70
+ return __awaiter(this, void 0, void 0, function () {
71
+ var config, instance;
72
+ return __generator(this, function (_a) {
73
+ config = {
74
+ token: apiKey,
75
+ };
76
+ instance = new FormoAnalytics(apiKey, options);
77
+ instance.config = config;
78
+ return [2 /*return*/, instance];
79
+ });
80
+ });
81
+ };
82
+ Object.defineProperty(FormoAnalytics.prototype, "provider", {
83
+ get: function () {
84
+ return this._provider;
85
+ },
86
+ enumerable: false,
87
+ configurable: true
88
+ });
89
+ FormoAnalytics.prototype.getSessionId = function () {
90
+ var existingSessionId = this.getCookieValue(this.sessionIdKey);
91
+ if (existingSessionId) {
92
+ return existingSessionId;
93
+ }
94
+ var newSessionId = this.generateSessionId();
95
+ return newSessionId;
96
+ };
97
+ FormoAnalytics.prototype.getOrigin = function () {
98
+ return window.location.origin || "ORIGIN_NOT_FOUND";
99
+ };
100
+ // Function to set the session cookie
101
+ FormoAnalytics.prototype.setSessionCookie = function () {
102
+ var sessionId = this.getSessionId();
103
+ var cookieValue = "".concat(this.sessionIdKey, "=").concat(sessionId, "; Max-Age=1800; path=/; secure; domain=").concat(this.getOrigin());
104
+ document.cookie = cookieValue;
105
+ };
106
+ // Function to generate a new session ID
107
+ FormoAnalytics.prototype.generateSessionId = function () {
108
+ return crypto.randomUUID();
109
+ };
110
+ // Function to get a cookie value by name
111
+ FormoAnalytics.prototype.getCookieValue = function (name) {
112
+ var cookies = document.cookie.split(";").reduce(function (acc, cookie) {
113
+ var _a = cookie.split("="), key = _a[0], value = _a[1];
114
+ acc[key.trim()] = value;
115
+ return acc;
116
+ }, {});
117
+ return cookies[name];
118
+ };
119
+ // Function to send tracking data
120
+ FormoAnalytics.prototype.trackEvent = function (action, payload) {
121
+ return __awaiter(this, void 0, void 0, function () {
122
+ var maxRetries, attempt, address, requestData, sendRequest;
123
+ var _this = this;
124
+ return __generator(this, function (_a) {
125
+ switch (_a.label) {
126
+ case 0:
127
+ maxRetries = 3;
128
+ attempt = 0;
129
+ this.setSessionCookie();
130
+ return [4 /*yield*/, this.getCurrentWallet()];
131
+ case 1:
132
+ address = _a.sent();
133
+ requestData = {
134
+ address: address,
135
+ session_id: this.getSessionId(),
136
+ timestamp: new Date().toISOString(),
137
+ action: action,
138
+ version: "1",
139
+ payload: __assign(__assign({}, this.getCommonTrackingFields()), payload),
140
+ };
141
+ sendRequest = function () { return __awaiter(_this, void 0, void 0, function () {
142
+ var response, error_1, retryDelay;
143
+ return __generator(this, function (_a) {
144
+ switch (_a.label) {
145
+ case 0:
146
+ _a.trys.push([0, 2, , 3]);
147
+ return [4 /*yield*/, axios.post(EVENTS_API_URL, JSON.stringify(requestData), {
148
+ headers: {
149
+ "Content-Type": "application/json",
150
+ Authorization: "Bearer ".concat(this.apiKey),
151
+ },
152
+ })];
153
+ case 1:
154
+ response = _a.sent();
155
+ if (response.status >= 200 && response.status < 300) {
156
+ console.log("Event sent successfully:", action);
157
+ }
158
+ else {
159
+ throw new Error("Failed with status: ".concat(response.status));
160
+ }
161
+ return [3 /*break*/, 3];
162
+ case 2:
163
+ error_1 = _a.sent();
164
+ attempt++;
165
+ if (attempt <= maxRetries) {
166
+ retryDelay = Math.pow(2, attempt) * 1000;
167
+ console.error("Attempt ".concat(attempt, ": Retrying event \"").concat(action, "\" in ").concat(retryDelay / 1000, " seconds..."));
168
+ setTimeout(sendRequest, retryDelay);
169
+ }
170
+ else {
171
+ H.consumeError(error_1, "Request data: ".concat(JSON.stringify(requestData)));
172
+ console.error("Event \"".concat(action, "\" failed after ").concat(maxRetries, " attempts. Error: ").concat(error_1));
173
+ }
174
+ return [3 /*break*/, 3];
175
+ case 3: return [2 /*return*/];
176
+ }
177
+ });
178
+ }); };
179
+ return [4 /*yield*/, sendRequest()];
180
+ case 2:
181
+ _a.sent();
182
+ return [2 /*return*/];
183
+ }
184
+ });
185
+ });
186
+ };
187
+ FormoAnalytics.prototype.getCommonTrackingFields = function () {
188
+ var location;
189
+ var language = "en";
190
+ try {
191
+ var timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
192
+ location = this.timezoneToCountry[timezone];
193
+ language =
194
+ navigator.languages && navigator.languages.length
195
+ ? navigator.languages[0]
196
+ : navigator.language || "en";
197
+ }
198
+ catch (error) {
199
+ console.error("Error resolving timezone or language:", error);
200
+ }
201
+ var url = new URL(window.location.href);
202
+ var params = new URLSearchParams(url.search);
203
+ return {
204
+ "user-agent": window.navigator.userAgent,
205
+ locale: language,
206
+ location: location,
207
+ referrer: document.referrer,
208
+ utm_source: params.get("utm_source"),
209
+ utm_medium: params.get("utm_medium"),
210
+ utm_campaign: params.get("utm_campaign"),
211
+ ref: params.get("ref"),
212
+ };
213
+ };
214
+ // Function to track page hits
215
+ FormoAnalytics.prototype.trackPageHit = function () {
216
+ var _this = this;
217
+ if (window.__nightmare || window.navigator.webdriver || window.Cypress)
218
+ return;
219
+ setTimeout(function () {
220
+ _this.trackEvent(Event.PAGE, {
221
+ pathname: window.location.pathname,
222
+ href: window.location.href,
223
+ });
224
+ }, 300);
225
+ };
226
+ FormoAnalytics.prototype.trackProvider = function (provider) {
227
+ if (provider === this._provider) {
228
+ return;
229
+ }
230
+ this.currentChainId = undefined;
231
+ this.currentConnectedAddress = undefined;
232
+ if (this._provider) {
233
+ var eventNames = Object.keys(this._registeredProviderListeners);
234
+ for (var _i = 0, eventNames_1 = eventNames; _i < eventNames_1.length; _i++) {
235
+ var eventName = eventNames_1[_i];
236
+ this._provider.removeListener(eventName, this._registeredProviderListeners[eventName]);
237
+ delete this._registeredProviderListeners[eventName];
238
+ }
239
+ }
240
+ this._provider = provider;
241
+ this.getCurrentWallet();
242
+ this.registerAddressChangedListener();
243
+ this.registerChainChangedListener();
244
+ };
245
+ FormoAnalytics.prototype.getCurrentWallet = function () {
246
+ return __awaiter(this, void 0, void 0, function () {
247
+ var sessionData, parsedData, sessionExpiry, currentTime;
248
+ return __generator(this, function (_a) {
249
+ if (!this.provider) {
250
+ console.warn("FormoAnalytics::getCurrentWallet: the provider is not set");
251
+ return [2 /*return*/];
252
+ }
253
+ sessionData = sessionStorage.getItem(this.walletAddressSessionKey);
254
+ if (!sessionData) {
255
+ return [2 /*return*/, null];
256
+ }
257
+ parsedData = JSON.parse(sessionData);
258
+ sessionExpiry = 30 * 60 * 1000;
259
+ currentTime = Date.now();
260
+ if (currentTime - parsedData.timestamp > sessionExpiry) {
261
+ console.warn("Session expired. Ignoring wallet address.");
262
+ sessionStorage.removeItem(this.walletAddressSessionKey); // Clear expired session data
263
+ return [2 /*return*/, ""];
264
+ }
265
+ this.onAddressConnected(parsedData.address);
266
+ return [2 /*return*/, parsedData.address || ""];
267
+ });
268
+ });
269
+ };
270
+ FormoAnalytics.prototype.getCurrentChainId = function () {
271
+ return __awaiter(this, void 0, void 0, function () {
272
+ var chainIdHex;
273
+ var _a;
274
+ return __generator(this, function (_b) {
275
+ switch (_b.label) {
276
+ case 0:
277
+ if (!this.provider) {
278
+ console.error("FormoAnalytics::getCurrentChainId: provider not set");
279
+ }
280
+ return [4 /*yield*/, ((_a = this.provider) === null || _a === void 0 ? void 0 : _a.request({
281
+ method: "eth_chainId",
282
+ }))];
283
+ case 1:
284
+ chainIdHex = _b.sent();
285
+ // Because we're connected, the chainId cannot be null
286
+ if (!chainIdHex) {
287
+ console.error("FormoAnalytics::getCurrentChainId: chainIdHex is: ".concat(chainIdHex));
288
+ }
289
+ return [2 /*return*/, parseInt(chainIdHex, 16).toString()];
290
+ }
291
+ });
292
+ });
293
+ };
294
+ FormoAnalytics.prototype.registerAddressChangedListener = function () {
295
+ var _this = this;
296
+ var _a, _b;
297
+ var listener = function () {
298
+ var args = [];
299
+ for (var _i = 0; _i < arguments.length; _i++) {
300
+ args[_i] = arguments[_i];
301
+ }
302
+ return _this.onAddressChanged(args[0]);
303
+ };
304
+ (_a = this._provider) === null || _a === void 0 ? void 0 : _a.on("accountsChanged", listener);
305
+ this._registeredProviderListeners["accountsChanged"] = listener;
306
+ var onAddressDisconnected = this.onAddressDisconnected.bind(this);
307
+ (_b = this._provider) === null || _b === void 0 ? void 0 : _b.on("disconnect", onAddressDisconnected);
308
+ this._registeredProviderListeners["disconnect"] = onAddressDisconnected;
309
+ };
310
+ FormoAnalytics.prototype.registerChainChangedListener = function () {
311
+ var _this = this;
312
+ var _a;
313
+ var listener = function () {
314
+ var args = [];
315
+ for (var _i = 0; _i < arguments.length; _i++) {
316
+ args[_i] = arguments[_i];
317
+ }
318
+ return _this.onChainChanged(args[0]);
319
+ };
320
+ (_a = this.provider) === null || _a === void 0 ? void 0 : _a.on("chainChanged", listener);
321
+ this._registeredProviderListeners["chainChanged"] = listener;
322
+ };
323
+ FormoAnalytics.prototype.onAddressChanged = function (addresses) {
324
+ return __awaiter(this, void 0, void 0, function () {
325
+ var newAccount;
326
+ return __generator(this, function (_a) {
327
+ if (addresses.length > 0) {
328
+ newAccount = addresses[0];
329
+ if (newAccount !== this.currentConnectedAddress) {
330
+ this.onAddressConnected(newAccount);
331
+ }
332
+ }
333
+ else {
334
+ this.onAddressDisconnected();
335
+ }
336
+ return [2 /*return*/];
337
+ });
338
+ });
339
+ };
340
+ FormoAnalytics.prototype.onAddressConnected = function (address) {
341
+ return __awaiter(this, void 0, void 0, function () {
342
+ var _a;
343
+ return __generator(this, function (_b) {
344
+ switch (_b.label) {
345
+ case 0:
346
+ if (address === this.currentConnectedAddress) {
347
+ // We have already reported this address
348
+ return [2 /*return*/];
349
+ }
350
+ else {
351
+ this.currentConnectedAddress = address;
352
+ }
353
+ _a = this;
354
+ return [4 /*yield*/, this.getCurrentChainId()];
355
+ case 1:
356
+ _a.currentChainId = _b.sent();
357
+ this.connect({ chainId: this.currentChainId, address: address });
358
+ this.storeWalletAddress(address);
359
+ return [2 /*return*/];
360
+ }
361
+ });
362
+ });
363
+ };
364
+ FormoAnalytics.prototype.onAddressDisconnected = function () {
365
+ if (!this.currentConnectedAddress) {
366
+ return;
367
+ }
368
+ var payload = {
369
+ chain_id: this.currentChainId,
370
+ address: this.currentConnectedAddress,
371
+ };
372
+ this.currentChainId = undefined;
373
+ this.currentConnectedAddress = undefined;
374
+ this.clearWalletAddress();
375
+ return this.trackEvent(Event.DISCONNECT, payload);
376
+ };
377
+ FormoAnalytics.prototype.onChainChanged = function (chainIdHex) {
378
+ return __awaiter(this, void 0, void 0, function () {
379
+ var res, err_1;
380
+ return __generator(this, function (_a) {
381
+ switch (_a.label) {
382
+ case 0:
383
+ this.currentChainId = parseInt(chainIdHex).toString();
384
+ if (!!this.currentConnectedAddress) return [3 /*break*/, 4];
385
+ if (!this.provider) {
386
+ console.error("error", "FormoAnalytics::onChainChanged: provider not found. CHAIN_CHANGED not reported");
387
+ return [2 /*return*/];
388
+ }
389
+ _a.label = 1;
390
+ case 1:
391
+ _a.trys.push([1, 3, , 4]);
392
+ return [4 /*yield*/, this.provider.request({
393
+ method: "eth_accounts",
394
+ })];
395
+ case 2:
396
+ res = _a.sent();
397
+ if (!res || res.length === 0) {
398
+ console.error("error", "FormoAnalytics::onChainChanged: unable to get account. eth_accounts returned empty");
399
+ return [2 /*return*/];
400
+ }
401
+ this.currentConnectedAddress = res[0];
402
+ return [3 /*break*/, 4];
403
+ case 3:
404
+ err_1 = _a.sent();
405
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
406
+ if (err_1.code !== 4001) {
407
+ // 4001: The request is rejected by the user , see https://docs.metamask.io/wallet/reference/provider-api/#errors
408
+ console.error("error", "FormoAnalytics::onChainChanged: unable to get account. eth_accounts threw an error", err_1);
409
+ return [2 /*return*/];
410
+ }
411
+ return [3 /*break*/, 4];
412
+ case 4: return [2 /*return*/, this.chain({
413
+ chainId: this.currentChainId,
414
+ address: this.currentConnectedAddress,
415
+ })];
416
+ }
417
+ });
418
+ });
419
+ };
420
+ /**
421
+ * Stores the wallet address in session storage when connected.
422
+ * @param address - The wallet address to store.
423
+ */
424
+ FormoAnalytics.prototype.storeWalletAddress = function (address) {
425
+ if (!address) {
426
+ console.error("No wallet address provided to store.");
427
+ return;
428
+ }
429
+ var sessionData = {
430
+ address: address,
431
+ timestamp: Date.now(),
432
+ };
433
+ sessionStorage.setItem(this.walletAddressSessionKey, JSON.stringify(sessionData));
434
+ };
435
+ /**
436
+ * Clears the wallet address from session storage when disconnected.
437
+ */
438
+ FormoAnalytics.prototype.clearWalletAddress = function () {
439
+ sessionStorage.removeItem(this.walletAddressSessionKey);
440
+ };
441
+ FormoAnalytics.prototype.init = function (apiKey, options) {
442
+ var instance = new FormoAnalytics(apiKey, options);
443
+ return Promise.resolve(instance);
444
+ };
445
+ FormoAnalytics.prototype.connect = function (_a) {
446
+ var chainId = _a.chainId, address = _a.address;
447
+ if (!chainId) {
448
+ throw new Error("FormoAnalytics::connect: chain ID cannot be empty");
449
+ }
450
+ if (!address) {
451
+ throw new Error("FormoAnalytics::connect: address cannot be empty");
452
+ }
453
+ this.currentChainId = chainId.toString();
454
+ this.currentConnectedAddress = address;
455
+ return this.trackEvent(Event.CONNECT, {
456
+ chain_id: chainId,
457
+ address: address,
458
+ });
459
+ };
460
+ FormoAnalytics.prototype.disconnect = function (params) {
461
+ var address = (params === null || params === void 0 ? void 0 : params.address) || this.currentConnectedAddress;
462
+ if (!address) {
463
+ // We have most likely already reported this disconnection with the automatic
464
+ // `disconnect` detection
465
+ return;
466
+ }
467
+ var payload = {
468
+ chain_id: (params === null || params === void 0 ? void 0 : params.chainId) || this.currentChainId,
469
+ address: address,
470
+ };
471
+ this.currentChainId = undefined;
472
+ this.currentConnectedAddress = undefined;
473
+ return this.trackEvent(Event.DISCONNECT, payload);
474
+ };
475
+ FormoAnalytics.prototype.chain = function (_a) {
476
+ var chainId = _a.chainId, address = _a.address;
477
+ if (!chainId || Number(chainId) === 0) {
478
+ throw new Error("FormoAnalytics::chain: chainId cannot be empty or 0");
479
+ }
480
+ if (!address && !this.currentConnectedAddress) {
481
+ throw new Error("FormoAnalytics::chain: address was empty and no previous address has been recorded. You can either pass an address or call connect() first");
482
+ }
483
+ if (isNaN(Number(chainId))) {
484
+ throw new Error("FormoAnalytics::chain: chainId must be a valid hex or decimal number");
485
+ }
486
+ this.currentChainId = chainId.toString();
487
+ return this.trackEvent(Event.CHAIN_CHANGED, {
488
+ chain_id: chainId,
489
+ address: address || this.currentConnectedAddress,
490
+ });
491
+ };
492
+ FormoAnalytics.prototype.page = function () {
493
+ this.trackPageHit();
494
+ };
495
+ FormoAnalytics.prototype.track = function (eventName, eventData) {
496
+ this.trackEvent(eventName, eventData);
497
+ };
498
+ return FormoAnalytics;
499
+ }());
500
+ export { FormoAnalytics };
501
+ //# sourceMappingURL=FormoAnalytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormoAnalytics.js","sourceRoot":"","sources":["../../../src/FormoAnalytics.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,sBAAsB,EACtB,KAAK,GACN,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAqClC;IAeE,wBACkB,MAAc,EACvB,OAAqB;QAArB,wBAAA,EAAA,YAAqB;;QADZ,WAAM,GAAN,MAAM,CAAQ;QACvB,YAAO,GAAP,OAAO,CAAc;QAftB,iCAA4B,GAGhC,EAAE,CAAC;QAEC,4BAAuB,GAAG,eAAe,CAAC;QAE1C,iBAAY,GAAW,sBAAsB,CAAC;QAC9C,sBAAiB,GAA2B,YAAY,CAAC;QAS/D,IAAI,CAAC,MAAM,GAAG;YACZ,KAAK,EAAE,IAAI,CAAC,MAAM;SACnB,CAAC;QAEF,IAAM,QAAQ,GACZ,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,QAAQ,MAAI,MAAA,MAAM,CAAC,IAAI,0CAAE,eAAe,CAAA,KAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,CAAA,CAAC;QACxE,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEY,mBAAI,GAAjB,UAAkB,MAAc,EAAE,OAAgB;;;;gBAC1C,MAAM,GAAG;oBACb,KAAK,EAAE,MAAM;iBACd,CAAC;gBACI,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACrD,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;gBAEzB,sBAAO,QAAQ,EAAC;;;KACjB;IAED,sBAAI,oCAAQ;aAAZ;YACE,OAAO,IAAI,CAAC,SAAS,CAAC;QACxB,CAAC;;;OAAA;IAEO,qCAAY,GAApB;QACE,IAAM,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjE,IAAI,iBAAiB,EAAE,CAAC;YACtB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAED,IAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9C,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,kCAAS,GAAjB;QACE,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,kBAAkB,CAAC;IACtD,CAAC;IAED,qCAAqC;IAC7B,yCAAgB,GAAxB;QACE,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,WAAW,GAAG,UAChB,IAAI,CAAC,YAAY,cACf,SAAS,oDAA0C,IAAI,CAAC,SAAS,EAAE,CAAE,CAAC;QAC1E,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;IAChC,CAAC;IAED,wCAAwC;IAChC,0CAAiB,GAAzB;QACE,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAED,yCAAyC;IACjC,uCAAc,GAAtB,UAAuB,IAAY;QACjC,IAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,MAAM;YACtD,IAAA,KAAe,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAA/B,GAAG,QAAA,EAAE,KAAK,QAAqB,CAAC;YACvC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;YACxB,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAA4B,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC;IAED,iCAAiC;IACnB,mCAAU,GAAxB,UAAyB,MAAc,EAAE,OAAY;;;;;;;wBAC7C,UAAU,GAAG,CAAC,CAAC;wBACjB,OAAO,GAAG,CAAC,CAAC;wBAEhB,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACR,qBAAM,IAAI,CAAC,gBAAgB,EAAE,EAAA;;wBAAvC,OAAO,GAAG,SAA6B;wBAEvC,WAAW,GAAG;4BAClB,OAAO,EAAE,OAAO;4BAChB,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE;4BAC/B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;4BACnC,MAAM,QAAA;4BACN,OAAO,EAAE,GAAG;4BACZ,OAAO,wBAEF,IAAI,CAAC,uBAAuB,EAAE,GAC9B,OAAO,CACX;yBACF,CAAC;wBAEI,WAAW,GAAG;;;;;;wCAEC,qBAAM,KAAK,CAAC,IAAI,CAC/B,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAC3B;gDACE,OAAO,EAAE;oDACP,cAAc,EAAE,kBAAkB;oDAClC,aAAa,EAAE,iBAAU,IAAI,CAAC,MAAM,CAAE;iDACvC;6CACF,CACF,EAAA;;wCATK,QAAQ,GAAG,SAShB;wCAED,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;4CACpD,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;wCAClD,CAAC;6CAAM,CAAC;4CACN,MAAM,IAAI,KAAK,CAAC,8BAAuB,QAAQ,CAAC,MAAM,CAAE,CAAC,CAAC;wCAC5D,CAAC;;;;wCAED,OAAO,EAAE,CAAC;wCAEV,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;4CACpB,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;4CAC/C,OAAO,CAAC,KAAK,CACX,kBAAW,OAAO,gCAAqB,MAAM,mBAC3C,UAAU,GAAG,IAAI,gBACN,CACd,CAAC;4CACF,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;wCACtC,CAAC;6CAAM,CAAC;4CACN,CAAC,CAAC,YAAY,CACZ,OAAc,EACd,wBAAiB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAE,CAC/C,CAAC;4CACF,OAAO,CAAC,KAAK,CACX,kBAAU,MAAM,6BAAkB,UAAU,+BAAqB,OAAK,CAAE,CACzE,CAAC;wCACJ,CAAC;;;;;6BAEJ,CAAC;wBAEF,qBAAM,WAAW,EAAE,EAAA;;wBAAnB,SAAmB,CAAC;;;;;KACrB;IAEO,gDAAuB,GAA/B;QACE,IAAI,QAA4B,CAAC;QACjC,IAAI,QAAQ,GAAW,IAAI,CAAC;QAC5B,IAAI,CAAC;YACH,IAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;YAClE,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC5C,QAAQ;gBACN,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM;oBAC/C,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;oBACxB,CAAC,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,IAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAM,MAAM,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO;YACL,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,SAAS;YACxC,MAAM,EAAE,QAAQ;YAChB,QAAQ,UAAA;YACR,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YACpC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;YACpC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;YACxC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC;SACvB,CAAC;IACJ,CAAC;IAED,8BAA8B;IACtB,qCAAY,GAApB;QAAA,iBAUC;QATC,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO;YACpE,OAAO;QAET,UAAU,CAAC;YACT,KAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE;gBAC1B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,QAAQ;gBAClC,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI;aAC3B,CAAC,CAAC;QACL,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAEO,sCAAa,GAArB,UAAsB,QAAyB;QAC7C,IAAI,QAAQ,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QAEzC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAClE,KAAwB,UAAU,EAAV,yBAAU,EAAV,wBAAU,EAAV,IAAU,EAAE,CAAC;gBAAhC,IAAM,SAAS,mBAAA;gBAClB,IAAI,CAAC,SAAS,CAAC,cAAc,CAC3B,SAAS,EACT,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAC7C,CAAC;gBACF,OAAO,IAAI,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAE1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IAEa,yCAAgB,GAA9B;;;;gBACE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;oBAC1E,sBAAO;gBACT,CAAC;gBACK,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;gBACzE,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,sBAAO,IAAI,EAAC;gBACd,CAAC;gBAEK,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBACrC,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;gBAC/B,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAE/B,IAAI,WAAW,GAAG,UAAU,CAAC,SAAS,GAAG,aAAa,EAAE,CAAC;oBACvD,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;oBAC1D,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,6BAA6B;oBACtF,sBAAO,EAAE,EAAC;gBACZ,CAAC;gBAED,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC5C,sBAAO,UAAU,CAAC,OAAO,IAAI,EAAE,EAAC;;;KACjC;IAEa,0CAAiB,GAA/B;;;;;;;wBACE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACnB,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;wBACvE,CAAC;wBACkB,qBAAM,CAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,CAAS;gCACtD,MAAM,EAAE,aAAa;6BACtB,CAAC,CAAA,EAAA;;wBAFI,UAAU,GAAG,SAEjB;wBACF,sDAAsD;wBACtD,IAAI,CAAC,UAAU,EAAE,CAAC;4BAChB,OAAO,CAAC,KAAK,CACX,4DAAqD,UAAU,CAAE,CAClE,CAAC;wBACJ,CAAC;wBAED,sBAAO,QAAQ,CAAC,UAAoB,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAC;;;;KACtD;IAEO,uDAA8B,GAAtC;QAAA,iBAUC;;QATC,IAAM,QAAQ,GAAG;YAAC,cAAkB;iBAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;gBAAlB,yBAAkB;;YAClC,OAAA,KAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAa,CAAC;QAA1C,CAA0C,CAAC;QAE7C,MAAA,IAAI,CAAC,SAAS,0CAAE,EAAE,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAC;QAEhE,IAAM,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpE,MAAA,IAAI,CAAC,SAAS,0CAAE,EAAE,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;QACxD,IAAI,CAAC,4BAA4B,CAAC,YAAY,CAAC,GAAG,qBAAqB,CAAC;IAC1E,CAAC;IAEO,qDAA4B,GAApC;QAAA,iBAKC;;QAJC,IAAM,QAAQ,GAAG;YAAC,cAAkB;iBAAlB,UAAkB,EAAlB,qBAAkB,EAAlB,IAAkB;gBAAlB,yBAAkB;;YAClC,OAAA,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC;QAAtC,CAAsC,CAAC;QACzC,MAAA,IAAI,CAAC,QAAQ,0CAAE,EAAE,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAC5C,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC;IAC/D,CAAC;IAEa,yCAAgB,GAA9B,UAA+B,SAAmB;;;;gBAChD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACnB,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;oBAChC,IAAI,UAAU,KAAK,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAChD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;oBACtC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC/B,CAAC;;;;KACF;IAEa,2CAAkB,GAAhC,UAAiC,OAAe;;;;;;wBAC9C,IAAI,OAAO,KAAK,IAAI,CAAC,uBAAuB,EAAE,CAAC;4BAC7C,wCAAwC;4BACxC,sBAAO;wBACT,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;wBACzC,CAAC;wBAED,KAAA,IAAI,CAAA;wBAAkB,qBAAM,IAAI,CAAC,iBAAiB,EAAE,EAAA;;wBAApD,GAAK,cAAc,GAAG,SAA8B,CAAC;wBAErD,IAAI,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,SAAA,EAAE,CAAC,CAAC;wBACxD,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;;;;;KAClC;IAEO,8CAAqB,GAA7B;QACE,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAM,OAAO,GAAG;YACd,QAAQ,EAAE,IAAI,CAAC,cAAc;YAC7B,OAAO,EAAE,IAAI,CAAC,uBAAuB;SACtC,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QACzC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAEa,uCAAc,GAA5B,UAA6B,UAAkB;;;;;;wBAC7C,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;6BAClD,CAAC,IAAI,CAAC,uBAAuB,EAA7B,wBAA6B;wBAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACnB,OAAO,CAAC,KAAK,CACX,OAAO,EACP,gFAAgF,CACjF,CAAC;4BACF,sBAAO;wBACT,CAAC;;;;wBAG0C,qBAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;gCACnE,MAAM,EAAE,cAAc;6BACvB,CAAC,EAAA;;wBAFI,GAAG,GAAgC,SAEvC;wBACF,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BAC7B,OAAO,CAAC,KAAK,CACX,OAAO,EACP,oFAAoF,CACrF,CAAC;4BACF,sBAAO;wBACT,CAAC;wBAED,IAAI,CAAC,uBAAuB,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;;;wBAEtC,8DAA8D;wBAC9D,IAAK,KAAW,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;4BAC/B,iHAAiH;4BACjH,OAAO,CAAC,KAAK,CACX,OAAO,EACP,oFAAoF,EACpF,KAAG,CACJ,CAAC;4BACF,sBAAO;wBACT,CAAC;;4BAIL,sBAAO,IAAI,CAAC,KAAK,CAAC;4BAChB,OAAO,EAAE,IAAI,CAAC,cAAc;4BAC5B,OAAO,EAAE,IAAI,CAAC,uBAAuB;yBACtC,CAAC,EAAC;;;;KACJ;IAED;;;OAGG;IACK,2CAAkB,GAA1B,UAA2B,OAAe;QACxC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QAED,IAAM,WAAW,GAAG;YAClB,OAAO,SAAA;YACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,cAAc,CAAC,OAAO,CACpB,IAAI,CAAC,uBAAuB,EAC5B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,2CAAkB,GAA1B;QACE,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IAC1D,CAAC;IAED,6BAAI,GAAJ,UAAK,MAAc,EAAE,OAAgB;QACnC,IAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,gCAAO,GAAP,UAAQ,EAA2D;YAAzD,OAAO,aAAA,EAAE,OAAO,aAAA;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC;QAEvC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE;YACpC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;IACL,CAAC;IAED,mCAAU,GAAV,UAAW,MAAgD;QACzD,IAAM,OAAO,GAAG,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,KAAI,IAAI,CAAC,uBAAuB,CAAC;QAChE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,6EAA6E;YAC7E,yBAAyB;YACzB,OAAO;QACT,CAAC;QAED,IAAM,OAAO,GAAG;YACd,QAAQ,EAAE,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,KAAI,IAAI,CAAC,cAAc;YAChD,OAAO,SAAA;SACR,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAChC,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QAEzC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED,8BAAK,GAAL,UAAM,EAA4D;YAA1D,OAAO,aAAA,EAAE,OAAO,aAAA;QACtB,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CACb,4IAA4I,CAC7I,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAEzC,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,EAAE;YAC1C,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,uBAAuB;SACjD,CAAC,CAAC;IACL,CAAC;IAED,6BAAI,GAAJ;QACE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,8BAAK,GAAL,UAAM,SAAiB,EAAE,SAAc;QACrC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IACH,qBAAC;AAAD,CAAC,AA1cD,IA0cC"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { FormoAnalytics } from './FormoAnalytics';
3
+ import { FormoAnalyticsProviderProps } from './types';
4
+ export declare const FormoAnalyticsContext: React.Context<FormoAnalytics | undefined>;
5
+ export declare const FormoAnalyticsProvider: ({ apiKey, options, disabled, children, }: FormoAnalyticsProviderProps) => import("react/jsx-runtime").JSX.Element;
6
+ export declare const useFormoAnalytics: () => FormoAnalytics | undefined;
7
+ //# sourceMappingURL=FormoAnalyticsProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormoAnalyticsProvider.d.ts","sourceRoot":"","sources":["../../../src/FormoAnalyticsProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAMtD,eAAO,MAAM,qBAAqB,2CAEjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,6CAKhC,2BAA2B,4CAiE7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,kCAQ7B,CAAC"}
@@ -0,0 +1,122 @@
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 { jsx as _jsx } from "react/jsx-runtime";
38
+ import { createContext, useContext, useEffect, useState, useRef, } from 'react';
39
+ import { FormoAnalytics } from './FormoAnalytics';
40
+ import { ErrorBoundary } from '@highlight-run/react';
41
+ import { H } from 'highlight.run';
42
+ var HIGHLIGHT_PROJECT_ID = process.env.REACT_APP_HIGHLIGHT_PROJECT_ID;
43
+ export var FormoAnalyticsContext = createContext(undefined);
44
+ export var FormoAnalyticsProvider = function (_a) {
45
+ var apiKey = _a.apiKey, options = _a.options, disabled = _a.disabled, children = _a.children;
46
+ var _b = useState(), sdk = _b[0], setSdk = _b[1];
47
+ var _c = useState(false), isInitialized = _c[0], setIsInitialized = _c[1];
48
+ var initializedStartedRef = useRef(false);
49
+ useEffect(function () {
50
+ var initialize = function () { return __awaiter(void 0, void 0, void 0, function () {
51
+ var sdkInstance, error_1;
52
+ return __generator(this, function (_a) {
53
+ switch (_a.label) {
54
+ case 0:
55
+ if (!apiKey) {
56
+ console.error('FormoAnalyticsProvider: No API key provided');
57
+ return [2 /*return*/];
58
+ }
59
+ if (disabled) {
60
+ console.warn('FormoAnalytics is disabled');
61
+ return [2 /*return*/];
62
+ }
63
+ if (initializedStartedRef.current)
64
+ return [2 /*return*/];
65
+ initializedStartedRef.current = true;
66
+ // Initialize Highlight.run if project ID is available
67
+ if (HIGHLIGHT_PROJECT_ID) {
68
+ try {
69
+ H.init(HIGHLIGHT_PROJECT_ID, {
70
+ serviceName: 'formo-analytics-sdk',
71
+ tracingOrigins: true,
72
+ networkRecording: {
73
+ enabled: true,
74
+ recordHeadersAndBody: true,
75
+ urlBlocklist: [
76
+ 'https://www.googleapis.com/identitytoolkit',
77
+ 'https://securetoken.googleapis.com',
78
+ ],
79
+ },
80
+ });
81
+ console.log('Highlight.run initialized successfully');
82
+ }
83
+ catch (error) {
84
+ console.error('Failed to initialize Highlight.run', error);
85
+ }
86
+ }
87
+ _a.label = 1;
88
+ case 1:
89
+ _a.trys.push([1, 3, 4, 5]);
90
+ return [4 /*yield*/, FormoAnalytics.init(apiKey, options)];
91
+ case 2:
92
+ sdkInstance = _a.sent();
93
+ setSdk(sdkInstance);
94
+ console.log('FormoAnalytics SDK initialized successfully');
95
+ return [3 /*break*/, 5];
96
+ case 3:
97
+ error_1 = _a.sent();
98
+ console.error('Failed to initialize FormoAnalytics SDK', error_1);
99
+ return [3 /*break*/, 5];
100
+ case 4:
101
+ setIsInitialized(true); // Ensure UI renders even after failure
102
+ return [7 /*endfinally*/];
103
+ case 5: return [2 /*return*/];
104
+ }
105
+ });
106
+ }); };
107
+ initialize();
108
+ }, [apiKey, disabled, options]);
109
+ if (!isInitialized) {
110
+ // Optionally show a loading state until initialization attempt finishes
111
+ return _jsx("div", { children: "Loading analytics..." });
112
+ }
113
+ return (_jsx(ErrorBoundary, { onError: function (error, info) { return H === null || H === void 0 ? void 0 : H.consumeError(error, info); }, children: _jsx(FormoAnalyticsContext.Provider, { value: sdk, children: children }) }));
114
+ };
115
+ export var useFormoAnalytics = function () {
116
+ var context = useContext(FormoAnalyticsContext);
117
+ if (!context) {
118
+ console.warn('useFormoAnalytics called without a valid context');
119
+ }
120
+ return context; // Return undefined if SDK is not initialized, handle accordingly in consumer
121
+ };
122
+ //# sourceMappingURL=FormoAnalyticsProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormoAnalyticsProvider.js","sourceRoot":"","sources":["../../../src/FormoAnalyticsProvider.tsx"],"names":[],"mappings":"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"}