@xylabs/pixel 1.2.4 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +6 -1
  2. package/dist/Api/Api.js +0 -2
  3. package/dist/Api/Api.js.map +1 -1
  4. package/dist/UtmFields.js +3 -2
  5. package/dist/UtmFields.js.map +1 -1
  6. package/dist/{node-esm/src → esm2017}/Api/Api.d.ts +7 -7
  7. package/dist/{node-esm/src → esm2017}/Api/UserEvent.d.ts +18 -18
  8. package/dist/{node-esm/src → esm2017}/Api/UserEventSystem.d.ts +3 -3
  9. package/dist/esm2017/{src/Api → Api}/index.d.ts +5 -5
  10. package/dist/esm2017/{src/CommonFields.d.ts → CommonFields.d.ts} +5 -5
  11. package/dist/{esm5/src → esm2017}/ExIds.d.ts +10 -10
  12. package/dist/{node-esm/src → esm2017}/FunnelStartedFields.d.ts +5 -5
  13. package/dist/esm2017/{src/Pixel.d.ts → Pixel.d.ts} +23 -23
  14. package/dist/{node-esm/src → esm2017}/Referrer.d.ts +13 -13
  15. package/dist/{esm5/src → esm2017}/TestStartedFields.d.ts +5 -5
  16. package/dist/esm2017/{src/UniqueUserId.d.ts → UniqueUserId.d.ts} +8 -8
  17. package/dist/{esm5/src → esm2017}/UserClickFields.d.ts +6 -6
  18. package/dist/{node-esm/src → esm2017}/UserEventHandler.d.ts +11 -11
  19. package/dist/{node-esm/src → esm2017}/UtmFields.d.ts +9 -9
  20. package/dist/esm2017/{src/ViewContentFields.d.ts → ViewContentFields.d.ts} +6 -6
  21. package/dist/{esm5/src → esm2017}/XyLabsTrackingEventJson.d.ts +19 -19
  22. package/dist/esm2017/{src/XyUserEventHandler.d.ts → XyUserEventHandler.d.ts} +13 -13
  23. package/dist/esm2017/getSystemInfo.d.ts +2 -0
  24. package/dist/esm2017/index.d.ts +14 -1
  25. package/dist/esm2017/index.js +390 -213
  26. package/dist/esm2017/index.js.map +1 -1
  27. package/dist/{esm2017/src → esm5}/Api/Api.d.ts +7 -7
  28. package/dist/{node/src → esm5}/Api/UserEvent.d.ts +18 -18
  29. package/dist/esm5/{src/Api → Api}/UserEventSystem.d.ts +3 -3
  30. package/dist/{node-esm/src → esm5}/Api/index.d.ts +5 -5
  31. package/dist/{node-esm/src → esm5}/CommonFields.d.ts +5 -5
  32. package/dist/{node-esm/src → esm5}/ExIds.d.ts +10 -10
  33. package/dist/{node/src → esm5}/FunnelStartedFields.d.ts +5 -5
  34. package/dist/esm5/{src/Pixel.d.ts → Pixel.d.ts} +23 -23
  35. package/dist/{node/src → esm5}/Referrer.d.ts +13 -13
  36. package/dist/{esm2017/src → esm5}/TestStartedFields.d.ts +5 -5
  37. package/dist/esm5/{src/UniqueUserId.d.ts → UniqueUserId.d.ts} +8 -8
  38. package/dist/{node-esm/src → esm5}/UserClickFields.d.ts +6 -6
  39. package/dist/{node/src → esm5}/UserEventHandler.d.ts +11 -11
  40. package/dist/{node/src → esm5}/UtmFields.d.ts +9 -9
  41. package/dist/esm5/{src/ViewContentFields.d.ts → ViewContentFields.d.ts} +6 -6
  42. package/dist/{esm2017/src → esm5}/XyLabsTrackingEventJson.d.ts +19 -19
  43. package/dist/esm5/{src/XyUserEventHandler.d.ts → XyUserEventHandler.d.ts} +13 -13
  44. package/dist/esm5/getSystemInfo.d.ts +2 -0
  45. package/dist/esm5/index.d.ts +14 -1
  46. package/dist/esm5/index.js +311 -296
  47. package/dist/esm5/index.js.map +1 -1
  48. package/dist/getSystemInfo.d.ts +1 -2
  49. package/dist/getSystemInfo.js +2 -2
  50. package/dist/getSystemInfo.js.map +1 -1
  51. package/dist/node/{src/Api → Api}/Api.d.ts +7 -7
  52. package/dist/{esm5/src → node}/Api/UserEvent.d.ts +18 -18
  53. package/dist/{esm2017/src → node}/Api/UserEventSystem.d.ts +3 -3
  54. package/dist/node/{src/Api → Api}/index.d.ts +5 -5
  55. package/dist/node/{src/CommonFields.d.ts → CommonFields.d.ts} +5 -5
  56. package/dist/node/{src/ExIds.d.ts → ExIds.d.ts} +10 -10
  57. package/dist/{esm2017/src → node}/FunnelStartedFields.d.ts +5 -5
  58. package/dist/node/{src/Pixel.d.ts → Pixel.d.ts} +23 -23
  59. package/dist/{esm5/src → node}/Referrer.d.ts +13 -13
  60. package/dist/node/{src/TestStartedFields.d.ts → TestStartedFields.d.ts} +5 -5
  61. package/dist/node/{src/UniqueUserId.d.ts → UniqueUserId.d.ts} +8 -8
  62. package/dist/node/{src/UserClickFields.d.ts → UserClickFields.d.ts} +6 -6
  63. package/dist/{esm2017/src → node}/UserEventHandler.d.ts +11 -11
  64. package/dist/{esm5/src → node}/UtmFields.d.ts +9 -9
  65. package/dist/node/{src/ViewContentFields.d.ts → ViewContentFields.d.ts} +6 -6
  66. package/dist/node/{src/XyLabsTrackingEventJson.d.ts → XyLabsTrackingEventJson.d.ts} +19 -19
  67. package/dist/node/{src/XyUserEventHandler.d.ts → XyUserEventHandler.d.ts} +13 -13
  68. package/dist/node/getSystemInfo.d.ts +2 -0
  69. package/dist/node/index.d.ts +14 -1
  70. package/dist/node/index.js +311 -297
  71. package/dist/node/index.js.map +1 -1
  72. package/dist/{esm5/src → node-esm}/Api/Api.d.ts +7 -7
  73. package/dist/{esm2017/src → node-esm}/Api/UserEvent.d.ts +18 -18
  74. package/dist/{node/src → node-esm}/Api/UserEventSystem.d.ts +3 -3
  75. package/dist/{esm5/src → node-esm}/Api/index.d.ts +5 -5
  76. package/dist/{esm5/src → node-esm}/CommonFields.d.ts +5 -5
  77. package/dist/{esm2017/src → node-esm}/ExIds.d.ts +10 -10
  78. package/dist/{esm5/src → node-esm}/FunnelStartedFields.d.ts +5 -5
  79. package/dist/node-esm/{src/Pixel.d.ts → Pixel.d.ts} +23 -23
  80. package/dist/{esm2017/src → node-esm}/Referrer.d.ts +13 -13
  81. package/dist/node-esm/{src/TestStartedFields.d.ts → TestStartedFields.d.ts} +5 -5
  82. package/dist/node-esm/{src/UniqueUserId.d.ts → UniqueUserId.d.ts} +8 -8
  83. package/dist/{esm2017/src → node-esm}/UserClickFields.d.ts +6 -6
  84. package/dist/{esm5/src → node-esm}/UserEventHandler.d.ts +11 -11
  85. package/dist/{esm2017/src → node-esm}/UtmFields.d.ts +9 -9
  86. package/dist/node-esm/{src/ViewContentFields.d.ts → ViewContentFields.d.ts} +6 -6
  87. package/dist/node-esm/{src/XyLabsTrackingEventJson.d.ts → XyLabsTrackingEventJson.d.ts} +19 -19
  88. package/dist/node-esm/{src/XyUserEventHandler.d.ts → XyUserEventHandler.d.ts} +13 -13
  89. package/dist/node-esm/getSystemInfo.d.ts +2 -0
  90. package/dist/node-esm/index.d.ts +14 -1
  91. package/dist/node-esm/index.js +390 -213
  92. package/dist/node-esm/index.js.map +1 -1
  93. package/package.json +20 -27
  94. package/rollup.config.js +2 -120
  95. package/src/Api/Api.ts +0 -2
  96. package/src/getSystemInfo.ts +2 -2
  97. package/dist/esm2017/index.node.d.ts +0 -1
  98. package/dist/esm2017/src/Pixel.spec.d.ts +0 -1
  99. package/dist/esm2017/src/getSystemInfo.d.ts +0 -3
  100. package/dist/esm2017/src/index.d.ts +0 -14
  101. package/dist/esm5/index.node.d.ts +0 -1
  102. package/dist/esm5/src/Pixel.spec.d.ts +0 -1
  103. package/dist/esm5/src/getSystemInfo.d.ts +0 -3
  104. package/dist/esm5/src/index.d.ts +0 -14
  105. package/dist/node/index.node.d.ts +0 -1
  106. package/dist/node/src/Pixel.spec.d.ts +0 -1
  107. package/dist/node/src/getSystemInfo.d.ts +0 -3
  108. package/dist/node/src/index.d.ts +0 -14
  109. package/dist/node-esm/index.node.d.ts +0 -1
  110. package/dist/node-esm/src/Pixel.spec.d.ts +0 -1
  111. package/dist/node-esm/src/getSystemInfo.d.ts +0 -3
  112. package/dist/node-esm/src/index.d.ts +0 -14
  113. package/index.node.ts +0 -1
  114. package/index.ts +0 -1
@@ -5,109 +5,60 @@ import { Mutex } from 'async-mutex';
5
5
  import Cookies from 'js-cookie';
6
6
  import md5 from 'md5';
7
7
  import axios from 'axios';
8
- import Bowser from 'bowser';
8
+ import { parse } from 'bowser';
9
9
 
10
- var Referrer = /** @class */ (function () {
11
- function Referrer() {
12
- var _a, _b;
13
- this.session = (_a = this.getFromSession()) !== null && _a !== void 0 ? _a : document.referrer;
14
- sessionStorage.setItem(Referrer.storageId, this.session);
15
- this.local = (_b = this.getFromLocal()) !== null && _b !== void 0 ? _b : document.referrer;
16
- window.localStorage.setItem(Referrer.storageId, this.local);
17
- }
18
- Referrer.prototype.getFromLocal = function () {
19
- var value = window.localStorage.getItem(Referrer.storageId);
20
- if (value && value.length > 0) {
21
- return value;
22
- }
23
- };
24
- Referrer.prototype.getFromSession = function () {
25
- var value = sessionStorage.getItem(Referrer.storageId);
26
- if (value && value.length > 0) {
27
- return value;
28
- }
29
- };
30
- Referrer.prototype.toJson = function () {
31
- if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {
32
- return {
33
- local: this.local,
34
- session: this.session,
35
- };
36
- }
37
- };
38
- Referrer.storageId = '_coin_referrer';
39
- return Referrer;
10
+ var Referrer = /** @class */ (function () {
11
+ function Referrer() {
12
+ var _a, _b;
13
+ this.session = (_a = this.getFromSession()) !== null && _a !== void 0 ? _a : document.referrer;
14
+ sessionStorage.setItem(Referrer.storageId, this.session);
15
+ this.local = (_b = this.getFromLocal()) !== null && _b !== void 0 ? _b : document.referrer;
16
+ window.localStorage.setItem(Referrer.storageId, this.local);
17
+ }
18
+ Referrer.prototype.getFromLocal = function () {
19
+ var value = window.localStorage.getItem(Referrer.storageId);
20
+ if (value && value.length > 0) {
21
+ return value;
22
+ }
23
+ };
24
+ Referrer.prototype.getFromSession = function () {
25
+ var value = sessionStorage.getItem(Referrer.storageId);
26
+ if (value && value.length > 0) {
27
+ return value;
28
+ }
29
+ };
30
+ Referrer.prototype.toJson = function () {
31
+ if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {
32
+ return {
33
+ local: this.local,
34
+ session: this.session,
35
+ };
36
+ }
37
+ };
38
+ Referrer.storageId = '_coin_referrer';
39
+ return Referrer;
40
40
  }());
41
41
 
42
- var UniqueUserId = /** @class */ (function () {
43
- function UniqueUserId() {
44
- var _a;
45
- this.id = (_a = window.localStorage.getItem(UniqueUserId.localStorageId)) !== null && _a !== void 0 ? _a : this.generateId();
46
- window.localStorage.setItem(UniqueUserId.localStorageId, this.id);
47
- }
48
- UniqueUserId.prototype.generateId = function () {
49
- return randomBytes(16).toString('base64');
50
- };
51
- UniqueUserId.prototype.toString = function () {
52
- return this.id;
53
- };
54
- UniqueUserId.localStorageId = '_coin_cid';
55
- return UniqueUserId;
42
+ var UniqueUserId = /** @class */ (function () {
43
+ function UniqueUserId() {
44
+ var _a;
45
+ this.id = (_a = window.localStorage.getItem(UniqueUserId.localStorageId)) !== null && _a !== void 0 ? _a : this.generateId();
46
+ window.localStorage.setItem(UniqueUserId.localStorageId, this.id);
47
+ }
48
+ UniqueUserId.prototype.generateId = function () {
49
+ return randomBytes(16).toString('base64');
50
+ };
51
+ UniqueUserId.prototype.toString = function () {
52
+ return this.id;
53
+ };
54
+ UniqueUserId.localStorageId = '_coin_cid';
55
+ return UniqueUserId;
56
56
  }());
57
57
 
58
- var UserEventHandler = /** @class */ (function () {
59
- function UserEventHandler() {
60
- }
61
- return UserEventHandler;
62
- }());
63
-
64
- var UtmFields = /** @class */ (function () {
65
- function UtmFields() {
66
- var _a;
67
- this.fields = [];
68
- this.getUtmRecord = function () {
69
- var _a, _b;
70
- var record = {};
71
- var parsedQueryString = (_b = (_a = document.location.search.split('?')[1]) === null || _a === void 0 ? void 0 : _a.split('&')) !== null && _b !== void 0 ? _b : [];
72
- parsedQueryString.map(function (item) {
73
- var _a = item.split('='), fullKey = _a[0], value = _a[1];
74
- var _b = fullKey.split('_'), keyCategory = _b[0], keyName = _b[1];
75
- if (keyCategory === 'utm') {
76
- record[keyName] = value;
77
- }
78
- });
79
- return Object.keys(record).length > 0 ? record : null;
80
- };
81
- var storedString = (_a = window.localStorage.getItem(UtmFields.localStorageId)) !== null && _a !== void 0 ? _a : '[]';
82
- try {
83
- this.fields = JSON.parse(storedString);
84
- }
85
- catch (_b) {
86
- this.fields = [];
87
- }
88
- //this clears the old object version if needed
89
- if (!Array.isArray(this.fields)) {
90
- this.fields = [];
91
- }
92
- this.update();
93
- window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields));
94
- }
95
- //check the query string and if there an new/updated utm values, add them to the fields
96
- UtmFields.prototype.update = function () {
97
- var _a;
98
- var record = this.getUtmRecord();
99
- if (record) {
100
- if (!isEqual(this.fields[this.fields.length - 1], record)) {
101
- this.fields.push(record);
102
- }
103
- }
104
- return (_a = this.fields) !== null && _a !== void 0 ? _a : undefined;
105
- };
106
- UtmFields.prototype.toString = function () {
107
- return JSON.stringify(this.fields);
108
- };
109
- UtmFields.localStorageId = '_coin_utm';
110
- return UtmFields;
58
+ var UserEventHandler = /** @class */ (function () {
59
+ function UserEventHandler() {
60
+ }
61
+ return UserEventHandler;
111
62
  }());
112
63
 
113
64
  /*! *****************************************************************************
@@ -188,212 +139,276 @@ function __generator(thisArg, body) {
188
139
  } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
189
140
  if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
190
141
  }
142
+ }
143
+
144
+ function __read(o, n) {
145
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
146
+ if (!m) return o;
147
+ var i = m.call(o), r, ar = [], e;
148
+ try {
149
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
150
+ }
151
+ catch (error) { e = { error: error }; }
152
+ finally {
153
+ try {
154
+ if (r && !r.done && (m = i["return"])) m.call(i);
155
+ }
156
+ finally { if (e) throw e.error; }
157
+ }
158
+ return ar;
191
159
  }
192
160
 
193
- var apiBaseUri = {
194
- beta: 'https://pixel.xylabs.com',
195
- local: 'http://localhost:3030',
196
- prod: 'https://pixel.xylabs.com',
197
- };
198
- var PixelApi = /** @class */ (function () {
199
- /* baseUri can either be a preset (prod, beta, local), or a specific uri */
200
- function PixelApi(baseUri) {
201
- if (baseUri === void 0) { baseUri = 'prod'; }
202
- console.log("baseUri: ".concat(baseUri));
203
- this.endPoint = apiBaseUri[baseUri] ? "".concat(apiBaseUri[baseUri], "/t/event/queue") : baseUri;
204
- console.log("EndPoint: ".concat(this.endPoint));
205
- }
206
- PixelApi.prototype.trackEvents = function (events) {
207
- return __awaiter(this, void 0, void 0, function () {
208
- return __generator(this, function (_a) {
209
- switch (_a.label) {
210
- case 0: return [4 /*yield*/, axios.post(this.endPoint, events)];
211
- case 1: return [2 /*return*/, (_a.sent()).data];
212
- }
213
- });
214
- });
215
- };
216
- return PixelApi;
161
+ var UtmFields = /** @class */ (function () {
162
+ function UtmFields() {
163
+ var _a;
164
+ this.fields = [];
165
+ this.getUtmRecord = function () {
166
+ var _a, _b;
167
+ var record = {};
168
+ var parsedQueryString = (_b = (_a = document.location.search.split('?')[1]) === null || _a === void 0 ? void 0 : _a.split('&')) !== null && _b !== void 0 ? _b : [];
169
+ parsedQueryString.map(function (item) {
170
+ var _a = __read(item.split('='), 2), fullKey = _a[0], value = _a[1];
171
+ var _b = __read(fullKey.split('_'), 2), keyCategory = _b[0], keyName = _b[1];
172
+ if (keyCategory === 'utm') {
173
+ record[keyName] = value;
174
+ }
175
+ });
176
+ return Object.keys(record).length > 0 ? record : null;
177
+ };
178
+ var storedString = (_a = window.localStorage.getItem(UtmFields.localStorageId)) !== null && _a !== void 0 ? _a : '[]';
179
+ try {
180
+ this.fields = JSON.parse(storedString);
181
+ }
182
+ catch (_b) {
183
+ this.fields = [];
184
+ }
185
+ //this clears the old object version if needed
186
+ if (!Array.isArray(this.fields)) {
187
+ this.fields = [];
188
+ }
189
+ this.update();
190
+ window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields));
191
+ }
192
+ //check the query string and if there an new/updated utm values, add them to the fields
193
+ UtmFields.prototype.update = function () {
194
+ var _a;
195
+ var record = this.getUtmRecord();
196
+ if (record) {
197
+ if (!isEqual(this.fields[this.fields.length - 1], record)) {
198
+ this.fields.push(record);
199
+ }
200
+ }
201
+ return (_a = this.fields) !== null && _a !== void 0 ? _a : undefined;
202
+ };
203
+ UtmFields.prototype.toString = function () {
204
+ return JSON.stringify(this.fields);
205
+ };
206
+ UtmFields.localStorageId = '_coin_utm';
207
+ return UtmFields;
217
208
  }());
218
209
 
219
- var systemInfo = undefined;
220
- var getSystemInfo = function () {
221
- try {
222
- systemInfo = systemInfo || Bowser.parse(window.navigator.userAgent);
223
- }
224
- catch (ex) {
225
- console.log("getSystemInfo Error: ".concat(ex));
226
- }
227
- return systemInfo;
210
+ var apiBaseUri = {
211
+ beta: 'https://pixel.xylabs.com',
212
+ local: 'http://localhost:3030',
213
+ prod: 'https://pixel.xylabs.com',
228
214
  };
215
+ var PixelApi = /** @class */ (function () {
216
+ /* baseUri can either be a preset (prod, beta, local), or a specific uri */
217
+ function PixelApi(baseUri) {
218
+ if (baseUri === void 0) { baseUri = 'prod'; }
219
+ this.endPoint = apiBaseUri[baseUri] ? "".concat(apiBaseUri[baseUri], "/t/event/queue") : baseUri;
220
+ }
221
+ PixelApi.prototype.trackEvents = function (events) {
222
+ return __awaiter(this, void 0, void 0, function () {
223
+ return __generator(this, function (_a) {
224
+ switch (_a.label) {
225
+ case 0: return [4 /*yield*/, axios.post(this.endPoint, events)];
226
+ case 1: return [2 /*return*/, (_a.sent()).data];
227
+ }
228
+ });
229
+ });
230
+ };
231
+ return PixelApi;
232
+ }());
229
233
 
230
- var XyPixel = /** @class */ (function () {
231
- function XyPixel(pixelId) {
232
- this.queue = [];
233
- this.cid = new UniqueUserId().id;
234
- this.queueMutex = new Mutex();
235
- this.pixelId = pixelId;
236
- }
237
- XyPixel.prototype.identify = function (email) {
238
- this.email = email;
239
- this.email_hash = email ? md5(email) : undefined;
240
- };
241
- XyPixel.prototype.updateFbId = function () {
242
- var _a;
243
- this.exids = __assign({
244
- fbc: Cookies.get('_fbc'),
245
- fbp: Cookies.get('_fbp'),
246
- ga: Cookies.get('_ga'),
247
- gclid: Cookies.get('_gclid'),
248
- rdt_uid: Cookies.get('rdt_uid'),
249
- scid: Cookies.get('_scid'),
250
- tt_sessionId: (_a = sessionStorage.getItem('tt_sessionId')) !== null && _a !== void 0 ? _a : undefined,
251
- });
252
- };
253
- XyPixel.prototype.tryFlushQueue = function () {
254
- return __awaiter(this, void 0, void 0, function () {
255
- var _this = this;
256
- return __generator(this, function (_a) {
257
- switch (_a.label) {
258
- case 0: return [4 /*yield*/, this.queueMutex.runExclusive(function () { return __awaiter(_this, void 0, void 0, function () {
259
- var api, events, ex_1;
260
- return __generator(this, function (_a) {
261
- switch (_a.label) {
262
- case 0:
263
- if (this.queue.length === 0)
264
- return [2 /*return*/];
265
- api = XyPixel.api;
266
- if (!api) return [3 /*break*/, 4];
267
- events = this.queue;
268
- this.queue = [];
269
- _a.label = 1;
270
- case 1:
271
- _a.trys.push([1, 3, , 4]);
272
- return [4 /*yield*/, api.trackEvents(events)];
273
- case 2:
274
- _a.sent();
275
- return [3 /*break*/, 4];
276
- case 3:
277
- ex_1 = _a.sent();
278
- if (events) {
279
- //put it back since it failed
280
- this.queue = this.queue.concat(events);
281
- }
282
- console.error(ex_1);
283
- return [3 /*break*/, 4];
284
- case 4: return [2 /*return*/];
285
- }
286
- });
287
- }); })];
288
- case 1:
289
- _a.sent();
290
- return [2 /*return*/];
291
- }
292
- });
293
- });
294
- };
295
- XyPixel.prototype.send = function (event, fields) {
296
- var _a;
297
- return __awaiter(this, void 0, void 0, function () {
298
- var utm, referrer;
299
- return __generator(this, function (_b) {
300
- switch (_b.label) {
301
- case 0:
302
- this.updateFbId();
303
- utm = XyPixel.utmFields().update();
304
- referrer = new Referrer();
305
- this.queue.push(__assign({
306
- cid: this.cid,
307
- create_time: Date.now(),
308
- email_hash: (_a = this.email_hash) !== null && _a !== void 0 ? _a : undefined,
309
- event: event,
310
- exids: this.exids,
311
- fields: fields,
312
- host: document.location.host,
313
- pathname: document.location.pathname,
314
- pixel: this.pixelId,
315
- referrer: referrer.toJson(),
316
- system: getSystemInfo(),
317
- utm: utm,
318
- }));
319
- return [4 /*yield*/, this.tryFlushQueue()];
320
- case 1:
321
- _b.sent();
322
- return [2 /*return*/];
323
- }
324
- });
325
- });
326
- };
327
- Object.defineProperty(XyPixel, "instance", {
328
- get: function () {
329
- return assertEx(this._instance, 'XyPixel uninitialized');
330
- },
331
- enumerable: false,
332
- configurable: true
333
- });
334
- XyPixel.init = function (pixelId) {
335
- this._instance = new XyPixel(pixelId);
336
- return this._instance;
337
- };
338
- XyPixel.selectApi = function (api) {
339
- this.api = api;
340
- };
341
- XyPixel.utmFields = function () {
342
- if (XyPixel.utmFieldsObj === undefined) {
343
- XyPixel.utmFieldsObj = new UtmFields();
344
- }
345
- return XyPixel.utmFieldsObj;
346
- };
347
- XyPixel.api = new PixelApi();
348
- return XyPixel;
234
+ var systemInfo = undefined;
235
+ var getSystemInfo = function () {
236
+ try {
237
+ systemInfo = systemInfo || parse(window.navigator.userAgent);
238
+ }
239
+ catch (ex) {
240
+ console.log("getSystemInfo Error: ".concat(ex));
241
+ }
242
+ return systemInfo;
243
+ };
244
+
245
+ var XyPixel = /** @class */ (function () {
246
+ function XyPixel(pixelId) {
247
+ this.queue = [];
248
+ this.cid = new UniqueUserId().id;
249
+ this.queueMutex = new Mutex();
250
+ this.pixelId = pixelId;
251
+ }
252
+ XyPixel.prototype.identify = function (email) {
253
+ this.email = email;
254
+ this.email_hash = email ? md5(email) : undefined;
255
+ };
256
+ XyPixel.prototype.updateFbId = function () {
257
+ var _a;
258
+ this.exids = __assign({
259
+ fbc: Cookies.get('_fbc'),
260
+ fbp: Cookies.get('_fbp'),
261
+ ga: Cookies.get('_ga'),
262
+ gclid: Cookies.get('_gclid'),
263
+ rdt_uid: Cookies.get('rdt_uid'),
264
+ scid: Cookies.get('_scid'),
265
+ tt_sessionId: (_a = sessionStorage.getItem('tt_sessionId')) !== null && _a !== void 0 ? _a : undefined,
266
+ });
267
+ };
268
+ XyPixel.prototype.tryFlushQueue = function () {
269
+ return __awaiter(this, void 0, void 0, function () {
270
+ var _this = this;
271
+ return __generator(this, function (_a) {
272
+ switch (_a.label) {
273
+ case 0: return [4 /*yield*/, this.queueMutex.runExclusive(function () { return __awaiter(_this, void 0, void 0, function () {
274
+ var api, events, ex_1;
275
+ return __generator(this, function (_a) {
276
+ switch (_a.label) {
277
+ case 0:
278
+ if (this.queue.length === 0)
279
+ return [2 /*return*/];
280
+ api = XyPixel.api;
281
+ if (!api) return [3 /*break*/, 4];
282
+ events = this.queue;
283
+ this.queue = [];
284
+ _a.label = 1;
285
+ case 1:
286
+ _a.trys.push([1, 3, , 4]);
287
+ return [4 /*yield*/, api.trackEvents(events)];
288
+ case 2:
289
+ _a.sent();
290
+ return [3 /*break*/, 4];
291
+ case 3:
292
+ ex_1 = _a.sent();
293
+ if (events) {
294
+ //put it back since it failed
295
+ this.queue = this.queue.concat(events);
296
+ }
297
+ console.error(ex_1);
298
+ return [3 /*break*/, 4];
299
+ case 4: return [2 /*return*/];
300
+ }
301
+ });
302
+ }); })];
303
+ case 1:
304
+ _a.sent();
305
+ return [2 /*return*/];
306
+ }
307
+ });
308
+ });
309
+ };
310
+ XyPixel.prototype.send = function (event, fields) {
311
+ var _a;
312
+ return __awaiter(this, void 0, void 0, function () {
313
+ var utm, referrer;
314
+ return __generator(this, function (_b) {
315
+ switch (_b.label) {
316
+ case 0:
317
+ this.updateFbId();
318
+ utm = XyPixel.utmFields().update();
319
+ referrer = new Referrer();
320
+ this.queue.push(__assign({
321
+ cid: this.cid,
322
+ create_time: Date.now(),
323
+ email_hash: (_a = this.email_hash) !== null && _a !== void 0 ? _a : undefined,
324
+ event: event,
325
+ exids: this.exids,
326
+ fields: fields,
327
+ host: document.location.host,
328
+ pathname: document.location.pathname,
329
+ pixel: this.pixelId,
330
+ referrer: referrer.toJson(),
331
+ system: getSystemInfo(),
332
+ utm: utm,
333
+ }));
334
+ return [4 /*yield*/, this.tryFlushQueue()];
335
+ case 1:
336
+ _b.sent();
337
+ return [2 /*return*/];
338
+ }
339
+ });
340
+ });
341
+ };
342
+ Object.defineProperty(XyPixel, "instance", {
343
+ get: function () {
344
+ return assertEx(this._instance, 'XyPixel uninitialized');
345
+ },
346
+ enumerable: false,
347
+ configurable: true
348
+ });
349
+ XyPixel.init = function (pixelId) {
350
+ this._instance = new XyPixel(pixelId);
351
+ return this._instance;
352
+ };
353
+ XyPixel.selectApi = function (api) {
354
+ this.api = api;
355
+ };
356
+ XyPixel.utmFields = function () {
357
+ if (XyPixel.utmFieldsObj === undefined) {
358
+ XyPixel.utmFieldsObj = new UtmFields();
359
+ }
360
+ return XyPixel.utmFieldsObj;
361
+ };
362
+ XyPixel.api = new PixelApi();
363
+ return XyPixel;
349
364
  }());
350
365
 
351
- var XyUserEventHandler = /** @class */ (function (_super) {
352
- __extends(XyUserEventHandler, _super);
353
- function XyUserEventHandler() {
354
- return _super.call(this) || this;
355
- }
356
- XyUserEventHandler.prototype.testStarted = function (fields) {
357
- return __awaiter(this, void 0, void 0, function () {
358
- return __generator(this, function (_a) {
359
- switch (_a.label) {
360
- case 0: return [4 /*yield*/, XyPixel.instance.send('TestStarted', fields)];
361
- case 1: return [2 /*return*/, _a.sent()];
362
- }
363
- });
364
- });
365
- };
366
- XyUserEventHandler.prototype.funnelStarted = function (fields) {
367
- return __awaiter(this, void 0, void 0, function () {
368
- return __generator(this, function (_a) {
369
- switch (_a.label) {
370
- case 0: return [4 /*yield*/, XyPixel.instance.send('FunnelStarted', fields)];
371
- case 1: return [2 /*return*/, _a.sent()];
372
- }
373
- });
374
- });
375
- };
376
- XyUserEventHandler.prototype.viewContent = function (fields) {
377
- return __awaiter(this, void 0, void 0, function () {
378
- return __generator(this, function (_a) {
379
- switch (_a.label) {
380
- case 0: return [4 /*yield*/, XyPixel.instance.send('ViewContent', fields)];
381
- case 1: return [2 /*return*/, _a.sent()];
382
- }
383
- });
384
- });
385
- };
386
- XyUserEventHandler.prototype.userClick = function (fields) {
387
- return __awaiter(this, void 0, void 0, function () {
388
- return __generator(this, function (_a) {
389
- switch (_a.label) {
390
- case 0: return [4 /*yield*/, XyPixel.instance.send('ViewPage', fields)];
391
- case 1: return [2 /*return*/, _a.sent()];
392
- }
393
- });
394
- });
395
- };
396
- return XyUserEventHandler;
366
+ var XyUserEventHandler = /** @class */ (function (_super) {
367
+ __extends(XyUserEventHandler, _super);
368
+ function XyUserEventHandler() {
369
+ return _super.call(this) || this;
370
+ }
371
+ XyUserEventHandler.prototype.testStarted = function (fields) {
372
+ return __awaiter(this, void 0, void 0, function () {
373
+ return __generator(this, function (_a) {
374
+ switch (_a.label) {
375
+ case 0: return [4 /*yield*/, XyPixel.instance.send('TestStarted', fields)];
376
+ case 1: return [2 /*return*/, _a.sent()];
377
+ }
378
+ });
379
+ });
380
+ };
381
+ XyUserEventHandler.prototype.funnelStarted = function (fields) {
382
+ return __awaiter(this, void 0, void 0, function () {
383
+ return __generator(this, function (_a) {
384
+ switch (_a.label) {
385
+ case 0: return [4 /*yield*/, XyPixel.instance.send('FunnelStarted', fields)];
386
+ case 1: return [2 /*return*/, _a.sent()];
387
+ }
388
+ });
389
+ });
390
+ };
391
+ XyUserEventHandler.prototype.viewContent = function (fields) {
392
+ return __awaiter(this, void 0, void 0, function () {
393
+ return __generator(this, function (_a) {
394
+ switch (_a.label) {
395
+ case 0: return [4 /*yield*/, XyPixel.instance.send('ViewContent', fields)];
396
+ case 1: return [2 /*return*/, _a.sent()];
397
+ }
398
+ });
399
+ });
400
+ };
401
+ XyUserEventHandler.prototype.userClick = function (fields) {
402
+ return __awaiter(this, void 0, void 0, function () {
403
+ return __generator(this, function (_a) {
404
+ switch (_a.label) {
405
+ case 0: return [4 /*yield*/, XyPixel.instance.send('ViewPage', fields)];
406
+ case 1: return [2 /*return*/, _a.sent()];
407
+ }
408
+ });
409
+ });
410
+ };
411
+ return XyUserEventHandler;
397
412
  }(UserEventHandler));
398
413
 
399
414
  export { PixelApi, Referrer, UniqueUserId, UserEventHandler, UtmFields, XyPixel, XyUserEventHandler };