@xylabs/pixel 7.0.8 → 8.0.0

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 (50) hide show
  1. package/README.md +1 -1417
  2. package/dist/browser/index.d.ts +1 -14
  3. package/dist/browser/index.d.ts.map +1 -1
  4. package/dist/browser/index.mjs +2 -534
  5. package/dist/browser/index.mjs.map +3 -3
  6. package/dist/browser/model.d.ts +1 -8
  7. package/dist/browser/model.d.ts.map +1 -1
  8. package/dist/browser/model.mjs +2 -0
  9. package/dist/browser/model.mjs.map +3 -3
  10. package/package.json +10 -7
  11. package/dist/browser/Api/Api.d.ts +0 -13
  12. package/dist/browser/Api/Api.d.ts.map +0 -1
  13. package/dist/browser/Api/UserEvent.d.ts +0 -26
  14. package/dist/browser/Api/UserEvent.d.ts.map +0 -1
  15. package/dist/browser/Api/UserEventSystem.d.ts +0 -26
  16. package/dist/browser/Api/UserEventSystem.d.ts.map +0 -1
  17. package/dist/browser/Api/index.d.ts +0 -4
  18. package/dist/browser/Api/index.d.ts.map +0 -1
  19. package/dist/browser/CommonFields.d.ts +0 -6
  20. package/dist/browser/CommonFields.d.ts.map +0 -1
  21. package/dist/browser/ExIds.d.ts +0 -11
  22. package/dist/browser/ExIds.d.ts.map +0 -1
  23. package/dist/browser/FunnelStartedFields.d.ts +0 -6
  24. package/dist/browser/FunnelStartedFields.d.ts.map +0 -1
  25. package/dist/browser/Pixel.d.ts +0 -47
  26. package/dist/browser/Pixel.d.ts.map +0 -1
  27. package/dist/browser/PurchaseFields.d.ts +0 -9
  28. package/dist/browser/PurchaseFields.d.ts.map +0 -1
  29. package/dist/browser/Referrer.d.ts +0 -18
  30. package/dist/browser/Referrer.d.ts.map +0 -1
  31. package/dist/browser/TestStartedFields.d.ts +0 -6
  32. package/dist/browser/TestStartedFields.d.ts.map +0 -1
  33. package/dist/browser/UniqueUserId.d.ts +0 -10
  34. package/dist/browser/UniqueUserId.d.ts.map +0 -1
  35. package/dist/browser/UserClickFields.d.ts +0 -9
  36. package/dist/browser/UserClickFields.d.ts.map +0 -1
  37. package/dist/browser/UserEventHandler.d.ts +0 -18
  38. package/dist/browser/UserEventHandler.d.ts.map +0 -1
  39. package/dist/browser/UtmFields.d.ts +0 -19
  40. package/dist/browser/UtmFields.d.ts.map +0 -1
  41. package/dist/browser/ViewContentFields.d.ts +0 -7
  42. package/dist/browser/ViewContentFields.d.ts.map +0 -1
  43. package/dist/browser/XyLabsTrackingEventJson.d.ts +0 -22
  44. package/dist/browser/XyLabsTrackingEventJson.d.ts.map +0 -1
  45. package/dist/browser/XyUserEventHandler.d.ts +0 -22
  46. package/dist/browser/XyUserEventHandler.d.ts.map +0 -1
  47. package/dist/browser/getSystemInfo.d.ts +0 -8
  48. package/dist/browser/getSystemInfo.d.ts.map +0 -1
  49. package/dist/browser/md5Raw.d.ts +0 -3
  50. package/dist/browser/md5Raw.d.ts.map +0 -1
@@ -1,15 +1,2 @@
1
- export * from './Api/index.ts';
2
- export * from './CommonFields.ts';
3
- export * from './FunnelStartedFields.ts';
4
- export * from './Pixel.ts';
5
- export * from './PurchaseFields.ts';
6
- export * from './Referrer.ts';
7
- export * from './TestStartedFields.ts';
8
- export * from './UniqueUserId.ts';
9
- export * from './UserClickFields.ts';
10
- export * from './UserEventHandler.ts';
11
- export * from './UtmFields.ts';
12
- export * from './ViewContentFields.ts';
13
- export * from './XyLabsTrackingEventJson.ts';
14
- export * from './XyUserEventHandler.ts';
1
+ export * from '@ariestools/pixel';
15
2
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,mBAAmB,CAAA;AACjC,cAAc,0BAA0B,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,qBAAqB,CAAA;AACnC,cAAc,eAAe,CAAA;AAC7B,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,wBAAwB,CAAA;AACtC,cAAc,8BAA8B,CAAA;AAC5C,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -1,535 +1,3 @@
1
- // src/Api/Api.ts
2
- import { fetchJsonPost } from "@xylabs/sdk/fetch";
3
- import { isUndefined } from "@xylabs/sdk/typeof";
4
- var apiBaseUri = {
5
- beta: "https://pixel.xylabs.com",
6
- local: "http://localhost:3030",
7
- prod: "https://pixel.xylabs.com"
8
- };
9
- var PixelApi = class {
10
- endPoint;
11
- /* baseUri can either be a preset (prod, beta, local), or a specific URI */
12
- constructor(baseUri = "prod") {
13
- this.endPoint = isUndefined(apiBaseUri[baseUri]) ? baseUri : `${apiBaseUri[baseUri]}/t/event/queue`;
14
- }
15
- /**
16
- * Sends an array of user events to the tracking API.
17
- * @param events - The events to submit
18
- * @returns The response data from the API
19
- */
20
- async trackEvents(events) {
21
- const response = await fetchJsonPost(this.endPoint, events);
22
- return response.data;
23
- }
24
- };
25
-
26
- // src/Pixel.ts
27
- import { assertEx } from "@xylabs/sdk/assert";
28
- import { Mutex } from "async-mutex";
29
-
30
- // src/getSystemInfo.ts
31
- var cache = {};
32
- var firstMatch = (value, expressions) => {
33
- for (const expression of expressions) {
34
- const match = expression.exec(value);
35
- if (match?.[1] !== void 0 && match[1] !== "") return match[1].replaceAll("_", ".");
36
- }
37
- };
38
- var browserFromUserAgentData = (userAgentData) => {
39
- const brands = userAgentData?.brands ?? [];
40
- return brands.find(({ brand }) => !/not.?a.?brand/i.test(brand) && brand !== "Chromium") ?? brands.find(({ brand }) => brand === "Chromium");
41
- };
42
- var parseBrowser = (userAgent, userAgentData) => {
43
- const brand = browserFromUserAgentData(userAgentData);
44
- if (brand !== void 0) return { name: brand.brand, version: brand.version };
45
- const browserParsers = [
46
- [/Edg\/([\d.]+)/, "Microsoft Edge"],
47
- [/OPR\/([\d.]+)/, "Opera"],
48
- [/Firefox\/([\d.]+)/, "Firefox"],
49
- [/Chrome\/([\d.]+)/, "Chrome"],
50
- [/Version\/([\d.]+).*Safari\//, "Safari"]
51
- ];
52
- for (const [expression, name] of browserParsers) {
53
- const version = firstMatch(userAgent, [expression]);
54
- if (version !== void 0) return { name, version };
55
- }
56
- return userAgent.length > 0 ? { name: "Unknown" } : void 0;
57
- };
58
- var parseEngine = (userAgent) => {
59
- if (/Chrome\/|Chromium\/|Edg\/|OPR\//.test(userAgent)) {
60
- return { name: "Blink" };
61
- }
62
- const webkitVersion = firstMatch(userAgent, [/AppleWebKit\/([\d.]+)/]);
63
- if (webkitVersion !== void 0) return { name: "WebKit", version: webkitVersion };
64
- const geckoVersion = firstMatch(userAgent, [/Gecko\/([\d.]+)/]);
65
- if (geckoVersion !== void 0) return { name: "Gecko", version: geckoVersion };
66
- return userAgent.length > 0 ? { name: "Unknown" } : void 0;
67
- };
68
- var parseOS = (userAgent, userAgentData) => {
69
- const platform = userAgentData?.platform;
70
- if (platform !== void 0 && platform.length > 0) return { name: platform };
71
- const osParsers = [
72
- [/Windows NT ([\d.]+)/, "Windows"],
73
- [/Android ([\d.]+)/, "Android"],
74
- [/(?:iPhone|iPad|iPod).*OS ([\d_]+)/, "iOS"],
75
- [/Mac OS X ([\d_]+)/, "macOS"]
76
- ];
77
- for (const [expression, name] of osParsers) {
78
- const version = firstMatch(userAgent, [expression]);
79
- if (version !== void 0) return { name, version };
80
- }
81
- if (userAgent.includes("Linux")) return { name: "Linux" };
82
- return userAgent.length > 0 ? { name: "Unknown" } : void 0;
83
- };
84
- var parsePlatform = (navigator, userAgent) => {
85
- const type = navigator.userAgentData?.mobile === true || /Android|Mobi|iPhone|iPad|iPod/i.test(userAgent) ? "mobile" : "desktop";
86
- const platform = navigator.userAgentData?.platform;
87
- const vendor = navigator.vendor ?? "";
88
- return {
89
- type,
90
- vendor: vendor.length > 0 ? vendor : platform
91
- };
92
- };
93
- var parseSystemInfo = () => {
94
- const navigator = globalThis.navigator;
95
- const userAgent = navigator?.userAgent ?? "";
96
- if (navigator === void 0 || userAgent.length === 0 && navigator.userAgentData === void 0) return void 0;
97
- return {
98
- browser: parseBrowser(userAgent, navigator.userAgentData),
99
- engine: parseEngine(userAgent),
100
- os: parseOS(userAgent, navigator.userAgentData),
101
- platform: parsePlatform(navigator, userAgent)
102
- };
103
- };
104
- var getSystemInfo = () => {
105
- try {
106
- cache.systemInfo ??= parseSystemInfo();
107
- } catch (ex) {
108
- console.log(`getSystemInfo Error: ${ex instanceof Error ? ex.message : String(ex)}`);
109
- }
110
- return cache.systemInfo;
111
- };
112
-
113
- // src/md5Raw.ts
114
- var shiftAmounts = [
115
- 7,
116
- 12,
117
- 17,
118
- 22,
119
- 7,
120
- 12,
121
- 17,
122
- 22,
123
- 7,
124
- 12,
125
- 17,
126
- 22,
127
- 7,
128
- 12,
129
- 17,
130
- 22,
131
- 5,
132
- 9,
133
- 14,
134
- 20,
135
- 5,
136
- 9,
137
- 14,
138
- 20,
139
- 5,
140
- 9,
141
- 14,
142
- 20,
143
- 5,
144
- 9,
145
- 14,
146
- 20,
147
- 4,
148
- 11,
149
- 16,
150
- 23,
151
- 4,
152
- 11,
153
- 16,
154
- 23,
155
- 4,
156
- 11,
157
- 16,
158
- 23,
159
- 4,
160
- 11,
161
- 16,
162
- 23,
163
- 6,
164
- 10,
165
- 15,
166
- 21,
167
- 6,
168
- 10,
169
- 15,
170
- 21,
171
- 6,
172
- 10,
173
- 15,
174
- 21,
175
- 6,
176
- 10,
177
- 15,
178
- 21
179
- ];
180
- var constants = Array.from(
181
- { length: 64 },
182
- (_, index) => Math.trunc(Math.abs(Math.sin(index + 1)) * 4294967296) >>> 0
183
- );
184
- var initialState = {
185
- a: 1732584193,
186
- b: 4023233417,
187
- c: 2562383102,
188
- d: 271733878
189
- };
190
- var leftRotate = (value, shift) => (value << shift | value >>> 32 - shift) >>> 0;
191
- var getRoundValues = (index, state) => {
192
- const {
193
- b,
194
- c,
195
- d
196
- } = state;
197
- if (index < 16) return { f: b & c | ~b & d, g: index };
198
- if (index < 32) return { f: d & b | ~d & c, g: (5 * index + 1) % 16 };
199
- if (index < 48) return { f: b ^ c ^ d, g: (3 * index + 5) % 16 };
200
- return { f: c ^ (b | ~d), g: 7 * index % 16 };
201
- };
202
- var buildPaddedMessage = (value) => {
203
- const encoder = new TextEncoder();
204
- const message = encoder.encode(value);
205
- const bitLength = BigInt(message.length) * 8n;
206
- const paddingLength = (56 - (message.length + 1) % 64 + 64) % 64;
207
- const bytes = new Uint8Array(message.length + 1 + paddingLength + 8);
208
- bytes.set(message);
209
- bytes[message.length] = 128;
210
- const view = new DataView(bytes.buffer);
211
- view.setUint32(bytes.length - 8, Number(bitLength & 4294967295n), true);
212
- view.setUint32(bytes.length - 4, Number(bitLength >> 32n & 4294967295n), true);
213
- return view;
214
- };
215
- var readWords = (view, offset) => {
216
- return Array.from({ length: 16 }, (_, index) => view.getUint32(offset + index * 4, true));
217
- };
218
- var hashBlock = (view, offset, state) => {
219
- const words = readWords(view, offset);
220
- const working = { ...state };
221
- for (let index = 0; index < 64; index++) {
222
- const { f, g } = getRoundValues(index, working);
223
- const previousD = working.d;
224
- working.d = working.c;
225
- working.c = working.b;
226
- working.b = working.b + leftRotate(working.a + f + constants[index] + words[g] >>> 0, shiftAmounts[index]) >>> 0;
227
- working.a = previousD;
228
- }
229
- return {
230
- a: state.a + working.a >>> 0,
231
- b: state.b + working.b >>> 0,
232
- c: state.c + working.c >>> 0,
233
- d: state.d + working.d >>> 0
234
- };
235
- };
236
- var digestToRawString = ({
237
- a,
238
- b,
239
- c,
240
- d
241
- }) => {
242
- const bytes = new Uint8Array(16);
243
- const view = new DataView(bytes.buffer);
244
- for (const [index, word] of [a, b, c, d].entries()) {
245
- view.setUint32(index * 4, word, true);
246
- }
247
- return String.fromCodePoint(...bytes);
248
- };
249
- var md5Raw = (value) => {
250
- const view = buildPaddedMessage(value);
251
- let state = initialState;
252
- for (let offset = 0; offset < view.byteLength; offset += 64) {
253
- state = hashBlock(view, offset, state);
254
- }
255
- return digestToRawString(state);
256
- };
257
-
258
- // src/Referrer.ts
259
- var Referrer = class _Referrer {
260
- static storageId = "_coin_referrer";
261
- local;
262
- session;
263
- constructor() {
264
- this.session = this.getFromSession() ?? document.referrer;
265
- sessionStorage.setItem(_Referrer.storageId, this.session);
266
- this.local = this.getFromLocal() ?? document.referrer;
267
- globalThis.localStorage.setItem(_Referrer.storageId, this.local);
268
- }
269
- /**
270
- * Returns the referrer data as a JSON object, or undefined if both values are empty.
271
- * @returns An object with local and session referrer strings, or undefined
272
- */
273
- toJson() {
274
- if (this.local.length > 0 || this.session.length > 0) {
275
- return {
276
- local: this.local,
277
- session: this.session
278
- };
279
- }
280
- }
281
- getFromLocal() {
282
- const value = globalThis.localStorage.getItem(_Referrer.storageId);
283
- if (value !== null && value.length > 0) {
284
- return value;
285
- }
286
- }
287
- getFromSession() {
288
- const value = sessionStorage.getItem(_Referrer.storageId);
289
- if (value !== null && value.length > 0) {
290
- return value;
291
- }
292
- }
293
- };
294
-
295
- // src/UniqueUserId.ts
296
- var UniqueUserId = class _UniqueUserId {
297
- static localStorageId = "_coin_cid";
298
- id;
299
- constructor() {
300
- this.id = globalThis.localStorage.getItem(_UniqueUserId.localStorageId) ?? this.generateId();
301
- globalThis.localStorage.setItem(_UniqueUserId.localStorageId, this.id);
302
- }
303
- /** Returns the unique user ID as a string. */
304
- toString() {
305
- return this.id;
306
- }
307
- generateId() {
308
- return crypto.randomUUID();
309
- }
310
- };
311
-
312
- // src/UtmFields.ts
313
- var isStringRecord = (value) => typeof value === "object" && value !== null && Object.values(value).every((item) => typeof item === "string");
314
- var isStringRecordArray = (value) => Array.isArray(value) && value.every(isStringRecord);
315
- var recordsEqual = (left, right) => {
316
- if (left === void 0) return false;
317
- const leftEntries = Object.entries(left);
318
- if (leftEntries.length !== Object.keys(right).length) return false;
319
- return leftEntries.every(([key, value]) => right[key] === value);
320
- };
321
- var UtmFields = class _UtmFields {
322
- static localStorageId = "_coin_utm";
323
- fields = [];
324
- constructor() {
325
- const storedString = globalThis.localStorage.getItem(_UtmFields.localStorageId) ?? "[]";
326
- try {
327
- const storedFields = JSON.parse(storedString);
328
- this.fields = isStringRecordArray(storedFields) ? storedFields : [];
329
- } catch {
330
- this.fields = [];
331
- }
332
- this.update();
333
- globalThis.localStorage.setItem(_UtmFields.localStorageId, JSON.stringify(this.fields));
334
- }
335
- /**
336
- * Parses UTM parameters from the current URL query string.
337
- * @returns A record of UTM key-value pairs, or null if none are present
338
- */
339
- getUtmRecord = () => {
340
- const record = {};
341
- const parsedQueryString = document.location.search.split("?", 2)[1]?.split("&") ?? [];
342
- for (const item of parsedQueryString) {
343
- const [fullKey, value] = item.split("=");
344
- const [keyCategory, keyName] = fullKey.split("_");
345
- if (keyCategory === "utm") {
346
- record[keyName] = value;
347
- }
348
- }
349
- return Object.keys(record).length > 0 ? record : null;
350
- };
351
- /** Returns the UTM fields history as a JSON string. */
352
- toString() {
353
- return JSON.stringify(this.fields);
354
- }
355
- /**
356
- * Checks the query string for new UTM values and appends them to the history if changed.
357
- * @returns The current UTM fields array, or undefined if empty
358
- */
359
- // check the query string and if there an new/updated utm values, add them to the fields
360
- update() {
361
- const record = this.getUtmRecord();
362
- if (record && !recordsEqual(this.fields.at(-1), record)) {
363
- this.fields.push(record);
364
- }
365
- return this.fields ?? void 0;
366
- }
367
- };
368
-
369
- // src/Pixel.ts
370
- var emailHashLocalStorageName = "xy_email_hash";
371
- var getCookieValue = (name) => {
372
- const encodedName = encodeURIComponent(name);
373
- const cookie = globalThis.document?.cookie;
374
- if (cookie === void 0 || cookie.length === 0) return void 0;
375
- const cookies = cookie.split("; ");
376
- for (const item of cookies) {
377
- const separatorIndex = item.indexOf("=");
378
- const key = separatorIndex === -1 ? item : item.slice(0, separatorIndex);
379
- if (key === encodedName || key === name) {
380
- const value = separatorIndex === -1 ? "" : item.slice(separatorIndex + 1);
381
- return decodeURIComponent(value);
382
- }
383
- }
384
- };
385
- var XyPixel = class _XyPixel {
386
- static api = new PixelApi();
387
- static _instance;
388
- static utmFieldsObj;
389
- cid;
390
- email;
391
- email_hash;
392
- exids;
393
- pixelId;
394
- queue = [];
395
- queueMutex = new Mutex();
396
- constructor(pixelId) {
397
- const uniqueUserId = new UniqueUserId();
398
- this.cid = uniqueUserId.id;
399
- this.pixelId = pixelId;
400
- this.email_hash = localStorage.getItem(emailHashLocalStorageName);
401
- }
402
- /** Returns the singleton XyPixel instance, throwing if not yet initialized. */
403
- static get instance() {
404
- return assertEx(this._instance, () => "XyPixel uninitialized");
405
- }
406
- /**
407
- * Initializes the XyPixel singleton with the given pixel ID.
408
- * @param pixelId - The pixel identifier for this tracking instance
409
- * @returns The newly created XyPixel instance
410
- */
411
- static init(pixelId) {
412
- this._instance = new _XyPixel(pixelId);
413
- return this._instance;
414
- }
415
- /**
416
- * Replaces the default PixelApi instance used for sending events.
417
- * @param API - The PixelApi instance to use
418
- */
419
- static selectApi(api) {
420
- this.api = api;
421
- }
422
- static utmFields = () => {
423
- this.utmFieldsObj ??= new UtmFields();
424
- return this.utmFieldsObj;
425
- };
426
- /**
427
- * Associates an email address with this pixel instance, hashing it for privacy.
428
- * @param email - The email address to identify the user with
429
- */
430
- identify(email) {
431
- this.email = email;
432
- this.email_hash = email !== void 0 && email.length > 0 ? md5Raw(email) : void 0;
433
- if (this.email_hash !== void 0) {
434
- localStorage.setItem(emailHashLocalStorageName, this.email_hash);
435
- }
436
- }
437
- /**
438
- * Queues a tracking event and attempts to flush the queue to the API.
439
- * @param event - The event name
440
- * @param fields - Optional event-specific fields
441
- * @param eventId - Optional unique event identifier
442
- */
443
- async send(event, fields, eventId) {
444
- this.updateFbId();
445
- const utm = _XyPixel.utmFields().update();
446
- const referrer = new Referrer();
447
- this.queue.push({
448
- cid: this.cid,
449
- create_time: Date.now(),
450
- email_hash: this.email_hash ?? void 0,
451
- event,
452
- event_id: eventId,
453
- exids: this.exids,
454
- fields,
455
- host: document.location.host,
456
- pathname: document.location.pathname,
457
- pixel: this.pixelId,
458
- referrer: referrer.toJson(),
459
- system: getSystemInfo(),
460
- utm
461
- });
462
- await this.tryFlushQueue();
463
- }
464
- async tryFlushQueue() {
465
- await this.queueMutex.runExclusive(async () => {
466
- if (this.queue.length === 0) return;
467
- const api = _XyPixel.api;
468
- if (api !== void 0) {
469
- const events = this.queue;
470
- this.queue = [];
471
- try {
472
- await api.trackEvents(events);
473
- } catch (ex) {
474
- if (events !== void 0) {
475
- this.queue = [...this.queue, ...events];
476
- }
477
- console.error(ex);
478
- }
479
- }
480
- });
481
- }
482
- updateFbId() {
483
- this.exids = {
484
- fbc: getCookieValue("_fbc"),
485
- fbp: getCookieValue("_fbp"),
486
- ga: getCookieValue("_ga"),
487
- gclid: getCookieValue("_gcl_aw"),
488
- rdt_uid: getCookieValue("rdt_uid"),
489
- scid: getCookieValue("_scid"),
490
- tt_sessionId: sessionStorage.getItem("tt_sessionId") ?? void 0
491
- };
492
- }
493
- };
494
-
495
- // src/UserEventHandler.ts
496
- var UserEventHandler = class {
497
- };
498
-
499
- // src/XyUserEventHandler.ts
500
- import { toSafeJsonObject } from "@xylabs/sdk/object";
501
- var XyUserEventHandler = class extends UserEventHandler {
502
- constructor() {
503
- super();
504
- }
505
- /** Sends a funnel-started event via the pixel API. */
506
- async funnelStarted(fields) {
507
- return await XyPixel.instance.send("FunnelStarted", toSafeJsonObject(fields, [], 10));
508
- }
509
- /** Sends a purchase event via the pixel API. */
510
- async purchase(fields) {
511
- return await XyPixel.instance.send("Purchase", toSafeJsonObject(fields, [], 10));
512
- }
513
- /** Sends a test-started event via the pixel API. */
514
- async testStarted(fields) {
515
- return await XyPixel.instance.send("TestStarted", toSafeJsonObject(fields, [], 10));
516
- }
517
- /** Sends a user click event via the pixel API. */
518
- async userClick(fields) {
519
- return await XyPixel.instance.send("ViewPage", toSafeJsonObject(fields, [], 10));
520
- }
521
- /** Sends a view-content event via the pixel API. */
522
- async viewContent(fields) {
523
- return await XyPixel.instance.send("ViewContent", toSafeJsonObject(fields, [], 10));
524
- }
525
- };
526
- export {
527
- PixelApi,
528
- Referrer,
529
- UniqueUserId,
530
- UserEventHandler,
531
- UtmFields,
532
- XyPixel,
533
- XyUserEventHandler
534
- };
1
+ // src/index.ts
2
+ export * from "@ariestools/pixel";
535
3
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/Api/Api.ts", "../../src/Pixel.ts", "../../src/getSystemInfo.ts", "../../src/md5Raw.ts", "../../src/Referrer.ts", "../../src/UniqueUserId.ts", "../../src/UtmFields.ts", "../../src/UserEventHandler.ts", "../../src/XyUserEventHandler.ts"],
4
- "sourcesContent": ["import { fetchJsonPost } from '@xylabs/sdk/fetch'\nimport { isUndefined } from '@xylabs/sdk/typeof'\n\nimport type { UserEvent } from './UserEvent.ts'\n\nconst apiBaseUri: Record<string, string> = {\n beta: 'https://pixel.xylabs.com',\n local: 'http://localhost:3030',\n prod: 'https://pixel.xylabs.com',\n}\n\n/** HTTP client for sending tracking events to the XY Labs pixel API. */\nexport class PixelApi {\n private endPoint: string\n\n /* baseUri can either be a preset (prod, beta, local), or a specific URI */\n constructor(baseUri = 'prod') {\n this.endPoint = isUndefined(apiBaseUri[baseUri]) ? baseUri : `${apiBaseUri[baseUri]}/t/event/queue`\n }\n\n /**\n * Sends an array of user events to the tracking API.\n * @param events - The events to submit\n * @returns The response data from the API\n */\n async trackEvents(events: UserEvent[]) {\n const response = await fetchJsonPost(this.endPoint, events)\n return response.data\n }\n}\n", "import { assertEx } from '@xylabs/sdk/assert'\nimport type { JsonObject } from '@xylabs/sdk/object'\nimport { Mutex } from 'async-mutex'\n\nimport type { UserEvent } from './Api/index.ts'\nimport { PixelApi } from './Api/index.ts'\nimport type { ExIds } from './ExIds.ts'\nimport { getSystemInfo } from './getSystemInfo.ts'\nimport { md5Raw } from './md5Raw.ts'\nimport { Referrer } from './Referrer.ts'\nimport { UniqueUserId } from './UniqueUserId.ts'\nimport { UtmFields } from './UtmFields.ts'\n\nconst emailHashLocalStorageName = 'xy_email_hash'\n\nconst getCookieValue = (name: string): string | undefined => {\n const encodedName = encodeURIComponent(name)\n const cookie = globalThis.document?.cookie\n if (cookie === undefined || cookie.length === 0) return undefined\n const cookies = cookie.split('; ')\n for (const item of cookies) {\n const separatorIndex = item.indexOf('=')\n const key = separatorIndex === -1 ? item : item.slice(0, separatorIndex)\n if (key === encodedName || key === name) {\n const value = separatorIndex === -1 ? '' : item.slice(separatorIndex + 1)\n return decodeURIComponent(value)\n }\n }\n}\n\n/** Singleton pixel tracker that queues and sends user events to the XY Labs tracking API. */\nexport class XyPixel {\n static api = new PixelApi()\n\n private static _instance?: XyPixel\n private static utmFieldsObj: UtmFields\n\n cid: string\n email?: string\n email_hash?: string | null\n exids?: ExIds\n pixelId?: string\n\n queue: UserEvent[] = []\n\n private queueMutex = new Mutex()\n\n private constructor(pixelId: string) {\n const uniqueUserId = new UniqueUserId()\n this.cid = uniqueUserId.id\n this.pixelId = pixelId\n this.email_hash = localStorage.getItem(emailHashLocalStorageName)\n }\n\n /** Returns the singleton XyPixel instance, throwing if not yet initialized. */\n static get instance(): XyPixel {\n return assertEx(this._instance, () => 'XyPixel uninitialized')\n }\n\n /**\n * Initializes the XyPixel singleton with the given pixel ID.\n * @param pixelId - The pixel identifier for this tracking instance\n * @returns The newly created XyPixel instance\n */\n static init(pixelId: string) {\n this._instance = new XyPixel(pixelId)\n return this._instance\n }\n\n /**\n * Replaces the default PixelApi instance used for sending events.\n * @param API - The PixelApi instance to use\n */\n static selectApi(api: PixelApi) {\n this.api = api\n }\n\n private static utmFields = () => {\n this.utmFieldsObj ??= new UtmFields()\n return this.utmFieldsObj\n }\n\n /**\n * Associates an email address with this pixel instance, hashing it for privacy.\n * @param email - The email address to identify the user with\n */\n identify(email?: string) {\n this.email = email\n this.email_hash = (email !== undefined && email.length > 0) ? md5Raw(email) : undefined\n if (this.email_hash !== undefined) {\n localStorage.setItem(emailHashLocalStorageName, this.email_hash)\n }\n }\n\n /**\n * Queues a tracking event and attempts to flush the queue to the API.\n * @param event - The event name\n * @param fields - Optional event-specific fields\n * @param eventId - Optional unique event identifier\n */\n async send<T extends JsonObject>(event: string, fields?: T, eventId?: string) {\n this.updateFbId()\n const utm = XyPixel.utmFields().update()\n const referrer = new Referrer()\n this.queue.push({\n cid: this.cid,\n create_time: Date.now(),\n email_hash: this.email_hash ?? undefined,\n event,\n event_id: eventId,\n exids: this.exids,\n fields,\n host: document.location.host,\n pathname: document.location.pathname,\n pixel: this.pixelId,\n referrer: referrer.toJson(),\n system: getSystemInfo(),\n utm,\n })\n await this.tryFlushQueue()\n }\n\n private async tryFlushQueue() {\n await this.queueMutex.runExclusive(async () => {\n if (this.queue.length === 0) return\n const api = XyPixel.api\n if (api !== undefined) {\n const events = this.queue\n this.queue = []\n try {\n await api.trackEvents(events)\n } catch (ex) {\n if (events !== undefined) {\n // put it back since it failed\n this.queue = [...this.queue, ...events]\n }\n\n console.error(ex)\n }\n }\n })\n }\n\n private updateFbId() {\n this.exids = {\n fbc: getCookieValue('_fbc'),\n fbp: getCookieValue('_fbp'),\n ga: getCookieValue('_ga'),\n gclid: getCookieValue('_gcl_aw'),\n rdt_uid: getCookieValue('rdt_uid'),\n scid: getCookieValue('_scid'),\n tt_sessionId: sessionStorage.getItem('tt_sessionId') ?? undefined,\n }\n }\n}\n", "import type { UserEventSystem } from './Api/index.ts'\n\ninterface UserAgentBrand {\n brand: string\n version: string\n}\n\ninterface NavigatorUserAgentDataLike {\n brands?: UserAgentBrand[]\n mobile?: boolean\n platform?: string\n}\n\ntype NavigatorWithUserAgentData = Navigator & {\n userAgentData?: NavigatorUserAgentDataLike\n}\n\nconst cache: { systemInfo?: UserEventSystem } = {}\n\nconst firstMatch = (value: string, expressions: RegExp[]) => {\n for (const expression of expressions) {\n const match = expression.exec(value)\n if (match?.[1] !== undefined && match[1] !== '') return match[1].replaceAll('_', '.')\n }\n}\n\nconst browserFromUserAgentData = (userAgentData?: NavigatorUserAgentDataLike) => {\n const brands = userAgentData?.brands ?? []\n return brands.find(({ brand }) => !/not.?a.?brand/i.test(brand) && brand !== 'Chromium') ?? brands.find(({ brand }) => brand === 'Chromium')\n}\n\nconst parseBrowser = (userAgent: string, userAgentData?: NavigatorUserAgentDataLike): UserEventSystem['browser'] => {\n const brand = browserFromUserAgentData(userAgentData)\n if (brand !== undefined) return { name: brand.brand, version: brand.version }\n\n const browserParsers: [RegExp, string][] = [\n [/Edg\\/([\\d.]+)/, 'Microsoft Edge'],\n [/OPR\\/([\\d.]+)/, 'Opera'],\n [/Firefox\\/([\\d.]+)/, 'Firefox'],\n [/Chrome\\/([\\d.]+)/, 'Chrome'],\n [/Version\\/([\\d.]+).*Safari\\//, 'Safari'],\n ]\n\n for (const [expression, name] of browserParsers) {\n const version = firstMatch(userAgent, [expression])\n if (version !== undefined) return { name, version }\n }\n\n return userAgent.length > 0 ? { name: 'Unknown' } : undefined\n}\n\nconst parseEngine = (userAgent: string): UserEventSystem['engine'] => {\n if (/Chrome\\/|Chromium\\/|Edg\\/|OPR\\//.test(userAgent)) {\n return { name: 'Blink' }\n }\n\n const webkitVersion = firstMatch(userAgent, [/AppleWebKit\\/([\\d.]+)/])\n if (webkitVersion !== undefined) return { name: 'WebKit', version: webkitVersion }\n\n const geckoVersion = firstMatch(userAgent, [/Gecko\\/([\\d.]+)/])\n if (geckoVersion !== undefined) return { name: 'Gecko', version: geckoVersion }\n\n return userAgent.length > 0 ? { name: 'Unknown' } : undefined\n}\n\nconst parseOS = (userAgent: string, userAgentData?: NavigatorUserAgentDataLike): UserEventSystem['os'] => {\n const platform = userAgentData?.platform\n if (platform !== undefined && platform.length > 0) return { name: platform }\n\n const osParsers: [RegExp, string][] = [\n [/Windows NT ([\\d.]+)/, 'Windows'],\n [/Android ([\\d.]+)/, 'Android'],\n [/(?:iPhone|iPad|iPod).*OS ([\\d_]+)/, 'iOS'],\n [/Mac OS X ([\\d_]+)/, 'macOS'],\n ]\n\n for (const [expression, name] of osParsers) {\n const version = firstMatch(userAgent, [expression])\n if (version !== undefined) return { name, version }\n }\n\n if (userAgent.includes('Linux')) return { name: 'Linux' }\n return userAgent.length > 0 ? { name: 'Unknown' } : undefined\n}\n\nconst parsePlatform = (navigator: NavigatorWithUserAgentData, userAgent: string): UserEventSystem['platform'] => {\n const type = navigator.userAgentData?.mobile === true || /Android|Mobi|iPhone|iPad|iPod/i.test(userAgent) ? 'mobile' : 'desktop'\n const platform = navigator.userAgentData?.platform\n const vendor = navigator.vendor ?? ''\n\n return {\n type,\n vendor: vendor.length > 0 ? vendor : platform,\n }\n}\n\nconst parseSystemInfo = (): UserEventSystem | undefined => {\n const navigator = globalThis.navigator as NavigatorWithUserAgentData | undefined\n const userAgent = navigator?.userAgent ?? ''\n\n if (navigator === undefined || (userAgent.length === 0 && navigator.userAgentData === undefined)) return undefined\n\n return {\n browser: parseBrowser(userAgent, navigator.userAgentData),\n engine: parseEngine(userAgent),\n os: parseOS(userAgent, navigator.userAgentData),\n platform: parsePlatform(navigator, userAgent),\n }\n}\n\n/**\n * Returns parsed browser, OS, and engine information from the user agent string.\n * Results are cached after the first call.\n * @returns The parsed system info, or undefined if parsing fails\n */\nexport const getSystemInfo = () => {\n try {\n cache.systemInfo ??= parseSystemInfo()\n } catch (ex) {\n console.log(`getSystemInfo Error: ${ex instanceof Error ? ex.message : String(ex)}`)\n }\n return cache.systemInfo\n}\n", "interface Md5State {\n a: number\n b: number\n c: number\n d: number\n}\n\nconst shiftAmounts = [\n 7,\n 12,\n 17,\n 22,\n 7,\n 12,\n 17,\n 22,\n 7,\n 12,\n 17,\n 22,\n 7,\n 12,\n 17,\n 22,\n 5,\n 9,\n 14,\n 20,\n 5,\n 9,\n 14,\n 20,\n 5,\n 9,\n 14,\n 20,\n 5,\n 9,\n 14,\n 20,\n 4,\n 11,\n 16,\n 23,\n 4,\n 11,\n 16,\n 23,\n 4,\n 11,\n 16,\n 23,\n 4,\n 11,\n 16,\n 23,\n 6,\n 10,\n 15,\n 21,\n 6,\n 10,\n 15,\n 21,\n 6,\n 10,\n 15,\n 21,\n 6,\n 10,\n 15,\n 21,\n]\n\nconst constants = Array.from(\n { length: 64 },\n (_, index) => Math.trunc(Math.abs(Math.sin(index + 1)) * 4_294_967_296) >>> 0,\n)\n\nconst initialState: Md5State = {\n a: 1_732_584_193,\n b: 4_023_233_417,\n c: 2_562_383_102,\n d: 271_733_878,\n}\n\nconst leftRotate = (value: number, shift: number) => ((value << shift) | (value >>> (32 - shift))) >>> 0\n\nconst getRoundValues = (index: number, state: Md5State): { f: number; g: number } => {\n const {\n b, c, d,\n } = state\n\n if (index < 16) return { f: (b & c) | (~b & d), g: index }\n if (index < 32) return { f: (d & b) | (~d & c), g: (5 * index + 1) % 16 }\n if (index < 48) return { f: b ^ c ^ d, g: (3 * index + 5) % 16 }\n return { f: c ^ (b | ~d), g: (7 * index) % 16 }\n}\n\nconst buildPaddedMessage = (value: string) => {\n const encoder = new TextEncoder()\n const message = encoder.encode(value)\n const bitLength = BigInt(message.length) * 8n\n const paddingLength = (56 - ((message.length + 1) % 64) + 64) % 64\n const bytes = new Uint8Array(message.length + 1 + paddingLength + 8)\n bytes.set(message)\n bytes[message.length] = 0x80\n\n const view = new DataView(bytes.buffer)\n view.setUint32(bytes.length - 8, Number(bitLength & 4_294_967_295n), true)\n view.setUint32(bytes.length - 4, Number((bitLength >> 32n) & 4_294_967_295n), true)\n return view\n}\n\nconst readWords = (view: DataView, offset: number) => {\n return Array.from({ length: 16 }, (_, index) => view.getUint32(offset + index * 4, true))\n}\n\nconst hashBlock = (view: DataView, offset: number, state: Md5State): Md5State => {\n const words = readWords(view, offset)\n const working = { ...state }\n\n for (let index = 0; index < 64; index++) {\n const { f, g } = getRoundValues(index, working)\n const previousD = working.d\n working.d = working.c\n working.c = working.b\n working.b = (working.b + leftRotate((working.a + f + constants[index] + words[g]) >>> 0, shiftAmounts[index])) >>> 0\n working.a = previousD\n }\n\n return {\n a: (state.a + working.a) >>> 0,\n b: (state.b + working.b) >>> 0,\n c: (state.c + working.c) >>> 0,\n d: (state.d + working.d) >>> 0,\n }\n}\n\nconst digestToRawString = ({\n a, b, c, d,\n}: Md5State) => {\n const bytes = new Uint8Array(16)\n const view = new DataView(bytes.buffer)\n for (const [index, word] of [a, b, c, d].entries()) {\n view.setUint32(index * 4, word, true)\n }\n return String.fromCodePoint(...bytes)\n}\n\n/** Returns SparkMD5-compatible raw MD5 output for a UTF-8 string. */\nexport const md5Raw = (value: string) => {\n const view = buildPaddedMessage(value)\n let state = initialState\n for (let offset = 0; offset < view.byteLength; offset += 64) {\n state = hashBlock(view, offset, state)\n }\n return digestToRawString(state)\n}\n", "/** Tracks and persists the document referrer in both session and local storage. */\nexport class Referrer {\n private static storageId = '_coin_referrer'\n local: string\n session: string\n constructor() {\n this.session = this.getFromSession() ?? document.referrer\n sessionStorage.setItem(Referrer.storageId, this.session)\n this.local = this.getFromLocal() ?? document.referrer\n globalThis.localStorage.setItem(Referrer.storageId, this.local)\n }\n\n /**\n * Returns the referrer data as a JSON object, or undefined if both values are empty.\n * @returns An object with local and session referrer strings, or undefined\n */\n toJson() {\n if ((this.local.length > 0) || (this.session.length > 0)) {\n return {\n local: this.local,\n session: this.session,\n }\n }\n }\n\n private getFromLocal() {\n const value = globalThis.localStorage.getItem(Referrer.storageId)\n if (value !== null && value.length > 0) {\n return value\n }\n }\n\n private getFromSession() {\n const value = sessionStorage.getItem(Referrer.storageId)\n if (value !== null && value.length > 0) {\n return value\n }\n }\n}\n", "/** Generates and persists a unique user identifier in localStorage. */\nexport class UniqueUserId {\n private static localStorageId = '_coin_cid'\n id: string\n\n constructor() {\n this.id = globalThis.localStorage.getItem(UniqueUserId.localStorageId) ?? this.generateId()\n globalThis.localStorage.setItem(UniqueUserId.localStorageId, this.id)\n }\n\n /** Returns the unique user ID as a string. */\n toString() {\n return this.id\n }\n\n private generateId() {\n return crypto.randomUUID()\n }\n}\n", "const isStringRecord = (value: unknown): value is Record<string, string> =>\n typeof value === 'object' && value !== null && Object.values(value).every(item => typeof item === 'string')\n\nconst isStringRecordArray = (value: unknown): value is Record<string, string>[] =>\n Array.isArray(value) && value.every(isStringRecord)\n\nconst recordsEqual = (left: Record<string, string> | undefined, right: Record<string, string>): boolean => {\n if (left === undefined) return false\n const leftEntries = Object.entries(left)\n if (leftEntries.length !== Object.keys(right).length) return false\n return leftEntries.every(([key, value]) => right[key] === value)\n}\n\n/** Tracks UTM campaign parameters from query strings, persisting history in localStorage. */\nexport class UtmFields {\n private static localStorageId = '_coin_utm'\n fields: Record<string, string>[] = []\n constructor() {\n const storedString = globalThis.localStorage.getItem(UtmFields.localStorageId) ?? '[]'\n try {\n const storedFields: unknown = JSON.parse(storedString)\n this.fields = isStringRecordArray(storedFields) ? storedFields : []\n } catch {\n this.fields = []\n }\n this.update()\n globalThis.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields))\n }\n\n /**\n * Parses UTM parameters from the current URL query string.\n * @returns A record of UTM key-value pairs, or null if none are present\n */\n getUtmRecord = () => {\n const record: Record<string, string> = {}\n const parsedQueryString = document.location.search.split('?', 2)[1]?.split('&') ?? []\n for (const item of parsedQueryString) {\n const [fullKey, value] = item.split('=')\n const [keyCategory, keyName] = fullKey.split('_')\n if (keyCategory === 'utm') {\n record[keyName] = value\n }\n }\n return Object.keys(record).length > 0 ? record : null\n }\n\n /** Returns the UTM fields history as a JSON string. */\n toString() {\n return JSON.stringify(this.fields)\n }\n\n /**\n * Checks the query string for new UTM values and appends them to the history if changed.\n * @returns The current UTM fields array, or undefined if empty\n */\n // check the query string and if there an new/updated utm values, add them to the fields\n update() {\n const record = this.getUtmRecord()\n if (record && !recordsEqual(this.fields.at(-1), record)) {\n this.fields.push(record)\n }\n return this.fields ?? undefined\n }\n}\n", "import type { EmptyObject } from '@xylabs/sdk/object'\nimport type { Promisable } from '@xylabs/sdk/promise'\n\nimport type { FunnelStartedFields } from './FunnelStartedFields.ts'\nimport type { TestStartedFields } from './TestStartedFields.ts'\nimport type { UserClickFields } from './UserClickFields.ts'\nimport type { ViewContentFields } from './ViewContentFields.ts'\n\n/** Abstract base class for handling user tracking events. */\nexport abstract class UserEventHandler<TData extends EmptyObject> {\n /** Tracks a funnel-started event. */\n abstract funnelStarted<T extends TData>(fields: T | FunnelStartedFields): Promisable<void>\n /** Tracks a test-started event. */\n abstract testStarted<T extends TData>(fields: T | TestStartedFields): Promisable<void>\n /** Tracks a user click event. */\n abstract userClick<T extends TData>(fields: T | UserClickFields): Promisable<void>\n /** Tracks a view-content event. */\n abstract viewContent<T extends TData>(fields: T | ViewContentFields): Promisable<void>\n}\n", "import { type EmptyObject, toSafeJsonObject } from '@xylabs/sdk/object'\n\nimport type { FunnelStartedFields } from './FunnelStartedFields.ts'\nimport { XyPixel } from './Pixel.ts'\nimport type { PurchaseFields } from './PurchaseFields.ts'\nimport type { TestStartedFields } from './TestStartedFields.ts'\nimport type { UserClickFields } from './UserClickFields.ts'\nimport { UserEventHandler } from './UserEventHandler.ts'\nimport type { ViewContentFields } from './ViewContentFields.ts'\n\n/** Concrete event handler that sends tracking events through the XyPixel singleton. */\nexport class XyUserEventHandler<T extends EmptyObject = EmptyObject> extends UserEventHandler<T> {\n constructor() {\n super()\n }\n\n /** Sends a funnel-started event via the pixel API. */\n async funnelStarted(fields: T | FunnelStartedFields) {\n return await XyPixel.instance.send('FunnelStarted', toSafeJsonObject(fields, [], 10))\n }\n\n /** Sends a purchase event via the pixel API. */\n async purchase(fields: T | PurchaseFields) {\n return await XyPixel.instance.send('Purchase', toSafeJsonObject(fields, [], 10))\n }\n\n /** Sends a test-started event via the pixel API. */\n async testStarted(fields: T | TestStartedFields) {\n return await XyPixel.instance.send('TestStarted', toSafeJsonObject(fields, [], 10))\n }\n\n /** Sends a user click event via the pixel API. */\n async userClick(fields: T | UserClickFields) {\n return await XyPixel.instance.send('ViewPage', toSafeJsonObject(fields, [], 10))\n }\n\n /** Sends a view-content event via the pixel API. */\n async viewContent(fields: T | ViewContentFields) {\n return await XyPixel.instance.send('ViewContent', toSafeJsonObject(fields, [], 10))\n }\n}\n"],
5
- "mappings": ";AAAA,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAI5B,IAAM,aAAqC;AAAA,EACzC,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR;AAGO,IAAM,WAAN,MAAe;AAAA,EACZ;AAAA;AAAA,EAGR,YAAY,UAAU,QAAQ;AAC5B,SAAK,WAAW,YAAY,WAAW,OAAO,CAAC,IAAI,UAAU,GAAG,WAAW,OAAO,CAAC;AAAA,EACrF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,YAAY,QAAqB;AACrC,UAAM,WAAW,MAAM,cAAc,KAAK,UAAU,MAAM;AAC1D,WAAO,SAAS;AAAA,EAClB;AACF;;;AC7BA,SAAS,gBAAgB;AAEzB,SAAS,aAAa;;;ACetB,IAAM,QAA0C,CAAC;AAEjD,IAAM,aAAa,CAAC,OAAe,gBAA0B;AAC3D,aAAW,cAAc,aAAa;AACpC,UAAM,QAAQ,WAAW,KAAK,KAAK;AACnC,QAAI,QAAQ,CAAC,MAAM,UAAa,MAAM,CAAC,MAAM,GAAI,QAAO,MAAM,CAAC,EAAE,WAAW,KAAK,GAAG;AAAA,EACtF;AACF;AAEA,IAAM,2BAA2B,CAAC,kBAA+C;AAC/E,QAAM,SAAS,eAAe,UAAU,CAAC;AACzC,SAAO,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC,iBAAiB,KAAK,KAAK,KAAK,UAAU,UAAU,KAAK,OAAO,KAAK,CAAC,EAAE,MAAM,MAAM,UAAU,UAAU;AAC7I;AAEA,IAAM,eAAe,CAAC,WAAmB,kBAA2E;AAClH,QAAM,QAAQ,yBAAyB,aAAa;AACpD,MAAI,UAAU,OAAW,QAAO,EAAE,MAAM,MAAM,OAAO,SAAS,MAAM,QAAQ;AAE5E,QAAM,iBAAqC;AAAA,IACzC,CAAC,iBAAiB,gBAAgB;AAAA,IAClC,CAAC,iBAAiB,OAAO;AAAA,IACzB,CAAC,qBAAqB,SAAS;AAAA,IAC/B,CAAC,oBAAoB,QAAQ;AAAA,IAC7B,CAAC,+BAA+B,QAAQ;AAAA,EAC1C;AAEA,aAAW,CAAC,YAAY,IAAI,KAAK,gBAAgB;AAC/C,UAAM,UAAU,WAAW,WAAW,CAAC,UAAU,CAAC;AAClD,QAAI,YAAY,OAAW,QAAO,EAAE,MAAM,QAAQ;AAAA,EACpD;AAEA,SAAO,UAAU,SAAS,IAAI,EAAE,MAAM,UAAU,IAAI;AACtD;AAEA,IAAM,cAAc,CAAC,cAAiD;AACpE,MAAI,kCAAkC,KAAK,SAAS,GAAG;AACrD,WAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AAEA,QAAM,gBAAgB,WAAW,WAAW,CAAC,uBAAuB,CAAC;AACrE,MAAI,kBAAkB,OAAW,QAAO,EAAE,MAAM,UAAU,SAAS,cAAc;AAEjF,QAAM,eAAe,WAAW,WAAW,CAAC,iBAAiB,CAAC;AAC9D,MAAI,iBAAiB,OAAW,QAAO,EAAE,MAAM,SAAS,SAAS,aAAa;AAE9E,SAAO,UAAU,SAAS,IAAI,EAAE,MAAM,UAAU,IAAI;AACtD;AAEA,IAAM,UAAU,CAAC,WAAmB,kBAAsE;AACxG,QAAM,WAAW,eAAe;AAChC,MAAI,aAAa,UAAa,SAAS,SAAS,EAAG,QAAO,EAAE,MAAM,SAAS;AAE3E,QAAM,YAAgC;AAAA,IACpC,CAAC,uBAAuB,SAAS;AAAA,IACjC,CAAC,oBAAoB,SAAS;AAAA,IAC9B,CAAC,qCAAqC,KAAK;AAAA,IAC3C,CAAC,qBAAqB,OAAO;AAAA,EAC/B;AAEA,aAAW,CAAC,YAAY,IAAI,KAAK,WAAW;AAC1C,UAAM,UAAU,WAAW,WAAW,CAAC,UAAU,CAAC;AAClD,QAAI,YAAY,OAAW,QAAO,EAAE,MAAM,QAAQ;AAAA,EACpD;AAEA,MAAI,UAAU,SAAS,OAAO,EAAG,QAAO,EAAE,MAAM,QAAQ;AACxD,SAAO,UAAU,SAAS,IAAI,EAAE,MAAM,UAAU,IAAI;AACtD;AAEA,IAAM,gBAAgB,CAAC,WAAuC,cAAmD;AAC/G,QAAM,OAAO,UAAU,eAAe,WAAW,QAAQ,iCAAiC,KAAK,SAAS,IAAI,WAAW;AACvH,QAAM,WAAW,UAAU,eAAe;AAC1C,QAAM,SAAS,UAAU,UAAU;AAEnC,SAAO;AAAA,IACL;AAAA,IACA,QAAQ,OAAO,SAAS,IAAI,SAAS;AAAA,EACvC;AACF;AAEA,IAAM,kBAAkB,MAAmC;AACzD,QAAM,YAAY,WAAW;AAC7B,QAAM,YAAY,WAAW,aAAa;AAE1C,MAAI,cAAc,UAAc,UAAU,WAAW,KAAK,UAAU,kBAAkB,OAAY,QAAO;AAEzG,SAAO;AAAA,IACL,SAAS,aAAa,WAAW,UAAU,aAAa;AAAA,IACxD,QAAQ,YAAY,SAAS;AAAA,IAC7B,IAAI,QAAQ,WAAW,UAAU,aAAa;AAAA,IAC9C,UAAU,cAAc,WAAW,SAAS;AAAA,EAC9C;AACF;AAOO,IAAM,gBAAgB,MAAM;AACjC,MAAI;AACF,UAAM,eAAe,gBAAgB;AAAA,EACvC,SAAS,IAAI;AACX,YAAQ,IAAI,wBAAwB,cAAc,QAAQ,GAAG,UAAU,OAAO,EAAE,CAAC,EAAE;AAAA,EACrF;AACA,SAAO,MAAM;AACf;;;ACnHA,IAAM,eAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,IAAM,YAAY,MAAM;AAAA,EACtB,EAAE,QAAQ,GAAG;AAAA,EACb,CAAC,GAAG,UAAU,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,QAAQ,CAAC,CAAC,IAAI,UAAa,MAAM;AAC9E;AAEA,IAAM,eAAyB;AAAA,EAC7B,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AAAA,EACH,GAAG;AACL;AAEA,IAAM,aAAa,CAAC,OAAe,WAAoB,SAAS,QAAU,UAAW,KAAK,WAAa;AAEvG,IAAM,iBAAiB,CAAC,OAAe,UAA8C;AACnF,QAAM;AAAA,IACJ;AAAA,IAAG;AAAA,IAAG;AAAA,EACR,IAAI;AAEJ,MAAI,QAAQ,GAAI,QAAO,EAAE,GAAI,IAAI,IAAM,CAAC,IAAI,GAAI,GAAG,MAAM;AACzD,MAAI,QAAQ,GAAI,QAAO,EAAE,GAAI,IAAI,IAAM,CAAC,IAAI,GAAI,IAAI,IAAI,QAAQ,KAAK,GAAG;AACxE,MAAI,QAAQ,GAAI,QAAO,EAAE,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,GAAG;AAC/D,SAAO,EAAE,GAAG,KAAK,IAAI,CAAC,IAAI,GAAI,IAAI,QAAS,GAAG;AAChD;AAEA,IAAM,qBAAqB,CAAC,UAAkB;AAC5C,QAAM,UAAU,IAAI,YAAY;AAChC,QAAM,UAAU,QAAQ,OAAO,KAAK;AACpC,QAAM,YAAY,OAAO,QAAQ,MAAM,IAAI;AAC3C,QAAM,iBAAiB,MAAO,QAAQ,SAAS,KAAK,KAAM,MAAM;AAChE,QAAM,QAAQ,IAAI,WAAW,QAAQ,SAAS,IAAI,gBAAgB,CAAC;AACnE,QAAM,IAAI,OAAO;AACjB,QAAM,QAAQ,MAAM,IAAI;AAExB,QAAM,OAAO,IAAI,SAAS,MAAM,MAAM;AACtC,OAAK,UAAU,MAAM,SAAS,GAAG,OAAO,YAAY,WAAc,GAAG,IAAI;AACzE,OAAK,UAAU,MAAM,SAAS,GAAG,OAAQ,aAAa,MAAO,WAAc,GAAG,IAAI;AAClF,SAAO;AACT;AAEA,IAAM,YAAY,CAAC,MAAgB,WAAmB;AACpD,SAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,CAAC,GAAG,UAAU,KAAK,UAAU,SAAS,QAAQ,GAAG,IAAI,CAAC;AAC1F;AAEA,IAAM,YAAY,CAAC,MAAgB,QAAgB,UAA8B;AAC/E,QAAM,QAAQ,UAAU,MAAM,MAAM;AACpC,QAAM,UAAU,EAAE,GAAG,MAAM;AAE3B,WAAS,QAAQ,GAAG,QAAQ,IAAI,SAAS;AACvC,UAAM,EAAE,GAAG,EAAE,IAAI,eAAe,OAAO,OAAO;AAC9C,UAAM,YAAY,QAAQ;AAC1B,YAAQ,IAAI,QAAQ;AACpB,YAAQ,IAAI,QAAQ;AACpB,YAAQ,IAAK,QAAQ,IAAI,WAAY,QAAQ,IAAI,IAAI,UAAU,KAAK,IAAI,MAAM,CAAC,MAAO,GAAG,aAAa,KAAK,CAAC,MAAO;AACnH,YAAQ,IAAI;AAAA,EACd;AAEA,SAAO;AAAA,IACL,GAAI,MAAM,IAAI,QAAQ,MAAO;AAAA,IAC7B,GAAI,MAAM,IAAI,QAAQ,MAAO;AAAA,IAC7B,GAAI,MAAM,IAAI,QAAQ,MAAO;AAAA,IAC7B,GAAI,MAAM,IAAI,QAAQ,MAAO;AAAA,EAC/B;AACF;AAEA,IAAM,oBAAoB,CAAC;AAAA,EACzB;AAAA,EAAG;AAAA,EAAG;AAAA,EAAG;AACX,MAAgB;AACd,QAAM,QAAQ,IAAI,WAAW,EAAE;AAC/B,QAAM,OAAO,IAAI,SAAS,MAAM,MAAM;AACtC,aAAW,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,QAAQ,GAAG;AAClD,SAAK,UAAU,QAAQ,GAAG,MAAM,IAAI;AAAA,EACtC;AACA,SAAO,OAAO,cAAc,GAAG,KAAK;AACtC;AAGO,IAAM,SAAS,CAAC,UAAkB;AACvC,QAAM,OAAO,mBAAmB,KAAK;AACrC,MAAI,QAAQ;AACZ,WAAS,SAAS,GAAG,SAAS,KAAK,YAAY,UAAU,IAAI;AAC3D,YAAQ,UAAU,MAAM,QAAQ,KAAK;AAAA,EACvC;AACA,SAAO,kBAAkB,KAAK;AAChC;;;AC7JO,IAAM,WAAN,MAAM,UAAS;AAAA,EACpB,OAAe,YAAY;AAAA,EAC3B;AAAA,EACA;AAAA,EACA,cAAc;AACZ,SAAK,UAAU,KAAK,eAAe,KAAK,SAAS;AACjD,mBAAe,QAAQ,UAAS,WAAW,KAAK,OAAO;AACvD,SAAK,QAAQ,KAAK,aAAa,KAAK,SAAS;AAC7C,eAAW,aAAa,QAAQ,UAAS,WAAW,KAAK,KAAK;AAAA,EAChE;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS;AACP,QAAK,KAAK,MAAM,SAAS,KAAO,KAAK,QAAQ,SAAS,GAAI;AACxD,aAAO;AAAA,QACL,OAAO,KAAK;AAAA,QACZ,SAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAAA,EACF;AAAA,EAEQ,eAAe;AACrB,UAAM,QAAQ,WAAW,aAAa,QAAQ,UAAS,SAAS;AAChE,QAAI,UAAU,QAAQ,MAAM,SAAS,GAAG;AACtC,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,iBAAiB;AACvB,UAAM,QAAQ,eAAe,QAAQ,UAAS,SAAS;AACvD,QAAI,UAAU,QAAQ,MAAM,SAAS,GAAG;AACtC,aAAO;AAAA,IACT;AAAA,EACF;AACF;;;ACrCO,IAAM,eAAN,MAAM,cAAa;AAAA,EACxB,OAAe,iBAAiB;AAAA,EAChC;AAAA,EAEA,cAAc;AACZ,SAAK,KAAK,WAAW,aAAa,QAAQ,cAAa,cAAc,KAAK,KAAK,WAAW;AAC1F,eAAW,aAAa,QAAQ,cAAa,gBAAgB,KAAK,EAAE;AAAA,EACtE;AAAA;AAAA,EAGA,WAAW;AACT,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ,aAAa;AACnB,WAAO,OAAO,WAAW;AAAA,EAC3B;AACF;;;AClBA,IAAM,iBAAiB,CAAC,UACtB,OAAO,UAAU,YAAY,UAAU,QAAQ,OAAO,OAAO,KAAK,EAAE,MAAM,UAAQ,OAAO,SAAS,QAAQ;AAE5G,IAAM,sBAAsB,CAAC,UAC3B,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,cAAc;AAEpD,IAAM,eAAe,CAAC,MAA0C,UAA2C;AACzG,MAAI,SAAS,OAAW,QAAO;AAC/B,QAAM,cAAc,OAAO,QAAQ,IAAI;AACvC,MAAI,YAAY,WAAW,OAAO,KAAK,KAAK,EAAE,OAAQ,QAAO;AAC7D,SAAO,YAAY,MAAM,CAAC,CAAC,KAAK,KAAK,MAAM,MAAM,GAAG,MAAM,KAAK;AACjE;AAGO,IAAM,YAAN,MAAM,WAAU;AAAA,EACrB,OAAe,iBAAiB;AAAA,EAChC,SAAmC,CAAC;AAAA,EACpC,cAAc;AACZ,UAAM,eAAe,WAAW,aAAa,QAAQ,WAAU,cAAc,KAAK;AAClF,QAAI;AACF,YAAM,eAAwB,KAAK,MAAM,YAAY;AACrD,WAAK,SAAS,oBAAoB,YAAY,IAAI,eAAe,CAAC;AAAA,IACpE,QAAQ;AACN,WAAK,SAAS,CAAC;AAAA,IACjB;AACA,SAAK,OAAO;AACZ,eAAW,aAAa,QAAQ,WAAU,gBAAgB,KAAK,UAAU,KAAK,MAAM,CAAC;AAAA,EACvF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,eAAe,MAAM;AACnB,UAAM,SAAiC,CAAC;AACxC,UAAM,oBAAoB,SAAS,SAAS,OAAO,MAAM,KAAK,CAAC,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,CAAC;AACpF,eAAW,QAAQ,mBAAmB;AACpC,YAAM,CAAC,SAAS,KAAK,IAAI,KAAK,MAAM,GAAG;AACvC,YAAM,CAAC,aAAa,OAAO,IAAI,QAAQ,MAAM,GAAG;AAChD,UAAI,gBAAgB,OAAO;AACzB,eAAO,OAAO,IAAI;AAAA,MACpB;AAAA,IACF;AACA,WAAO,OAAO,KAAK,MAAM,EAAE,SAAS,IAAI,SAAS;AAAA,EACnD;AAAA;AAAA,EAGA,WAAW;AACT,WAAO,KAAK,UAAU,KAAK,MAAM;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAS;AACP,UAAM,SAAS,KAAK,aAAa;AACjC,QAAI,UAAU,CAAC,aAAa,KAAK,OAAO,GAAG,EAAE,GAAG,MAAM,GAAG;AACvD,WAAK,OAAO,KAAK,MAAM;AAAA,IACzB;AACA,WAAO,KAAK,UAAU;AAAA,EACxB;AACF;;;ALlDA,IAAM,4BAA4B;AAElC,IAAM,iBAAiB,CAAC,SAAqC;AAC3D,QAAM,cAAc,mBAAmB,IAAI;AAC3C,QAAM,SAAS,WAAW,UAAU;AACpC,MAAI,WAAW,UAAa,OAAO,WAAW,EAAG,QAAO;AACxD,QAAM,UAAU,OAAO,MAAM,IAAI;AACjC,aAAW,QAAQ,SAAS;AAC1B,UAAM,iBAAiB,KAAK,QAAQ,GAAG;AACvC,UAAM,MAAM,mBAAmB,KAAK,OAAO,KAAK,MAAM,GAAG,cAAc;AACvE,QAAI,QAAQ,eAAe,QAAQ,MAAM;AACvC,YAAM,QAAQ,mBAAmB,KAAK,KAAK,KAAK,MAAM,iBAAiB,CAAC;AACxE,aAAO,mBAAmB,KAAK;AAAA,IACjC;AAAA,EACF;AACF;AAGO,IAAM,UAAN,MAAM,SAAQ;AAAA,EACnB,OAAO,MAAM,IAAI,SAAS;AAAA,EAE1B,OAAe;AAAA,EACf,OAAe;AAAA,EAEf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA,QAAqB,CAAC;AAAA,EAEd,aAAa,IAAI,MAAM;AAAA,EAEvB,YAAY,SAAiB;AACnC,UAAM,eAAe,IAAI,aAAa;AACtC,SAAK,MAAM,aAAa;AACxB,SAAK,UAAU;AACf,SAAK,aAAa,aAAa,QAAQ,yBAAyB;AAAA,EAClE;AAAA;AAAA,EAGA,WAAW,WAAoB;AAC7B,WAAO,SAAS,KAAK,WAAW,MAAM,uBAAuB;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,KAAK,SAAiB;AAC3B,SAAK,YAAY,IAAI,SAAQ,OAAO;AACpC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,UAAU,KAAe;AAC9B,SAAK,MAAM;AAAA,EACb;AAAA,EAEA,OAAe,YAAY,MAAM;AAC/B,SAAK,iBAAiB,IAAI,UAAU;AACpC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,OAAgB;AACvB,SAAK,QAAQ;AACb,SAAK,aAAc,UAAU,UAAa,MAAM,SAAS,IAAK,OAAO,KAAK,IAAI;AAC9E,QAAI,KAAK,eAAe,QAAW;AACjC,mBAAa,QAAQ,2BAA2B,KAAK,UAAU;AAAA,IACjE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,KAA2B,OAAe,QAAY,SAAkB;AAC5E,SAAK,WAAW;AAChB,UAAM,MAAM,SAAQ,UAAU,EAAE,OAAO;AACvC,UAAM,WAAW,IAAI,SAAS;AAC9B,SAAK,MAAM,KAAK;AAAA,MACd,KAAK,KAAK;AAAA,MACV,aAAa,KAAK,IAAI;AAAA,MACtB,YAAY,KAAK,cAAc;AAAA,MAC/B;AAAA,MACA,UAAU;AAAA,MACV,OAAO,KAAK;AAAA,MACZ;AAAA,MACA,MAAM,SAAS,SAAS;AAAA,MACxB,UAAU,SAAS,SAAS;AAAA,MAC5B,OAAO,KAAK;AAAA,MACZ,UAAU,SAAS,OAAO;AAAA,MAC1B,QAAQ,cAAc;AAAA,MACtB;AAAA,IACF,CAAC;AACD,UAAM,KAAK,cAAc;AAAA,EAC3B;AAAA,EAEA,MAAc,gBAAgB;AAC5B,UAAM,KAAK,WAAW,aAAa,YAAY;AAC7C,UAAI,KAAK,MAAM,WAAW,EAAG;AAC7B,YAAM,MAAM,SAAQ;AACpB,UAAI,QAAQ,QAAW;AACrB,cAAM,SAAS,KAAK;AACpB,aAAK,QAAQ,CAAC;AACd,YAAI;AACF,gBAAM,IAAI,YAAY,MAAM;AAAA,QAC9B,SAAS,IAAI;AACX,cAAI,WAAW,QAAW;AAExB,iBAAK,QAAQ,CAAC,GAAG,KAAK,OAAO,GAAG,MAAM;AAAA,UACxC;AAEA,kBAAQ,MAAM,EAAE;AAAA,QAClB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEQ,aAAa;AACnB,SAAK,QAAQ;AAAA,MACX,KAAK,eAAe,MAAM;AAAA,MAC1B,KAAK,eAAe,MAAM;AAAA,MAC1B,IAAI,eAAe,KAAK;AAAA,MACxB,OAAO,eAAe,SAAS;AAAA,MAC/B,SAAS,eAAe,SAAS;AAAA,MACjC,MAAM,eAAe,OAAO;AAAA,MAC5B,cAAc,eAAe,QAAQ,cAAc,KAAK;AAAA,IAC1D;AAAA,EACF;AACF;;;AMjJO,IAAe,mBAAf,MAA2D;AASlE;;;AClBA,SAA2B,wBAAwB;AAW5C,IAAM,qBAAN,cAAsE,iBAAoB;AAAA,EAC/F,cAAc;AACZ,UAAM;AAAA,EACR;AAAA;AAAA,EAGA,MAAM,cAAc,QAAiC;AACnD,WAAO,MAAM,QAAQ,SAAS,KAAK,iBAAiB,iBAAiB,QAAQ,CAAC,GAAG,EAAE,CAAC;AAAA,EACtF;AAAA;AAAA,EAGA,MAAM,SAAS,QAA4B;AACzC,WAAO,MAAM,QAAQ,SAAS,KAAK,YAAY,iBAAiB,QAAQ,CAAC,GAAG,EAAE,CAAC;AAAA,EACjF;AAAA;AAAA,EAGA,MAAM,YAAY,QAA+B;AAC/C,WAAO,MAAM,QAAQ,SAAS,KAAK,eAAe,iBAAiB,QAAQ,CAAC,GAAG,EAAE,CAAC;AAAA,EACpF;AAAA;AAAA,EAGA,MAAM,UAAU,QAA6B;AAC3C,WAAO,MAAM,QAAQ,SAAS,KAAK,YAAY,iBAAiB,QAAQ,CAAC,GAAG,EAAE,CAAC;AAAA,EACjF;AAAA;AAAA,EAGA,MAAM,YAAY,QAA+B;AAC/C,WAAO,MAAM,QAAQ,SAAS,KAAK,eAAe,iBAAiB,QAAQ,CAAC,GAAG,EAAE,CAAC;AAAA,EACpF;AACF;",
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["export * from '@ariestools/pixel'\n"],
5
+ "mappings": ";AAAA,cAAc;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,2 @@
1
- export type * from './CommonFields.ts';
2
- export type * from './ExIds.ts';
3
- export type * from './FunnelStartedFields.ts';
4
- export type * from './PurchaseFields.ts';
5
- export type * from './TestStartedFields.ts';
6
- export type * from './UserClickFields.ts';
7
- export type * from './ViewContentFields.ts';
8
- export type * from './XyLabsTrackingEventJson.ts';
1
+ export * from '@ariestools/pixel/model';
9
2
  //# sourceMappingURL=model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,mBAAmB,mBAAmB,CAAA;AACtC,mBAAmB,YAAY,CAAA;AAC/B,mBAAmB,0BAA0B,CAAA;AAC7C,mBAAmB,qBAAqB,CAAA;AACxC,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,sBAAsB,CAAA;AACzC,mBAAmB,wBAAwB,CAAA;AAC3C,mBAAmB,8BAA8B,CAAA"}
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/model.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAA"}
@@ -1 +1,3 @@
1
+ // src/model.ts
2
+ export * from "@ariestools/pixel/model";
1
3
  //# sourceMappingURL=model.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
3
+ "sources": ["../../src/model.ts"],
4
+ "sourcesContent": ["export * from '@ariestools/pixel/model'\n"],
5
+ "mappings": ";AAAA,cAAc;",
6
6
  "names": []
7
7
  }