@xylabs/pixel 1.2.5 → 1.3.3

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 (116) hide show
  1. package/README.md +6 -1
  2. package/dist/Pixel.js +6 -0
  3. package/dist/Pixel.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 +396 -211
  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 +317 -294
  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 +317 -295
  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 +396 -211
  92. package/dist/node-esm/index.js.map +1 -1
  93. package/jest.config.cjs +22 -3
  94. package/package.json +20 -27
  95. package/rollup.config.js +2 -120
  96. package/src/Pixel.spec.ts +2 -1
  97. package/src/Pixel.ts +7 -0
  98. package/src/getSystemInfo.ts +2 -2
  99. package/dist/esm2017/index.node.d.ts +0 -1
  100. package/dist/esm2017/src/Pixel.spec.d.ts +0 -1
  101. package/dist/esm2017/src/getSystemInfo.d.ts +0 -3
  102. package/dist/esm2017/src/index.d.ts +0 -14
  103. package/dist/esm5/index.node.d.ts +0 -1
  104. package/dist/esm5/src/Pixel.spec.d.ts +0 -1
  105. package/dist/esm5/src/getSystemInfo.d.ts +0 -3
  106. package/dist/esm5/src/index.d.ts +0 -14
  107. package/dist/node/index.node.d.ts +0 -1
  108. package/dist/node/src/Pixel.spec.d.ts +0 -1
  109. package/dist/node/src/getSystemInfo.d.ts +0 -3
  110. package/dist/node/src/index.d.ts +0 -14
  111. package/dist/node-esm/index.node.d.ts +0 -1
  112. package/dist/node-esm/src/Pixel.spec.d.ts +0 -1
  113. package/dist/node-esm/src/getSystemInfo.d.ts +0 -3
  114. package/dist/node-esm/src/index.d.ts +0 -14
  115. package/index.node.ts +0 -1
  116. 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,210 +139,282 @@ 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
- this.endPoint = apiBaseUri[baseUri] ? "".concat(apiBaseUri[baseUri], "/t/event/queue") : baseUri;
203
- }
204
- PixelApi.prototype.trackEvents = function (events) {
205
- return __awaiter(this, void 0, void 0, function () {
206
- return __generator(this, function (_a) {
207
- switch (_a.label) {
208
- case 0: return [4 /*yield*/, axios.post(this.endPoint, events)];
209
- case 1: return [2 /*return*/, (_a.sent()).data];
210
- }
211
- });
212
- });
213
- };
214
- 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;
215
208
  }());
216
209
 
217
- var systemInfo = undefined;
218
- var getSystemInfo = function () {
219
- try {
220
- systemInfo = systemInfo || Bowser.parse(window.navigator.userAgent);
221
- }
222
- catch (ex) {
223
- console.log("getSystemInfo Error: ".concat(ex));
224
- }
225
- return systemInfo;
210
+ var apiBaseUri = {
211
+ beta: 'https://pixel.xylabs.com',
212
+ local: 'http://localhost:3030',
213
+ prod: 'https://pixel.xylabs.com',
226
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
+ }());
227
233
 
228
- var XyPixel = /** @class */ (function () {
229
- function XyPixel(pixelId) {
230
- this.queue = [];
231
- this.cid = new UniqueUserId().id;
232
- this.queueMutex = new Mutex();
233
- this.pixelId = pixelId;
234
- }
235
- XyPixel.prototype.identify = function (email) {
236
- this.email = email;
237
- this.email_hash = email ? md5(email) : undefined;
238
- };
239
- XyPixel.prototype.updateFbId = function () {
240
- var _a;
241
- this.exids = __assign({
242
- fbc: Cookies.get('_fbc'),
243
- fbp: Cookies.get('_fbp'),
244
- ga: Cookies.get('_ga'),
245
- gclid: Cookies.get('_gclid'),
246
- rdt_uid: Cookies.get('rdt_uid'),
247
- scid: Cookies.get('_scid'),
248
- tt_sessionId: (_a = sessionStorage.getItem('tt_sessionId')) !== null && _a !== void 0 ? _a : undefined,
249
- });
250
- };
251
- XyPixel.prototype.tryFlushQueue = function () {
252
- return __awaiter(this, void 0, void 0, function () {
253
- var _this = this;
254
- return __generator(this, function (_a) {
255
- switch (_a.label) {
256
- case 0: return [4 /*yield*/, this.queueMutex.runExclusive(function () { return __awaiter(_this, void 0, void 0, function () {
257
- var api, events, ex_1;
258
- return __generator(this, function (_a) {
259
- switch (_a.label) {
260
- case 0:
261
- if (this.queue.length === 0)
262
- return [2 /*return*/];
263
- api = XyPixel.api;
264
- if (!api) return [3 /*break*/, 4];
265
- events = this.queue;
266
- this.queue = [];
267
- _a.label = 1;
268
- case 1:
269
- _a.trys.push([1, 3, , 4]);
270
- return [4 /*yield*/, api.trackEvents(events)];
271
- case 2:
272
- _a.sent();
273
- return [3 /*break*/, 4];
274
- case 3:
275
- ex_1 = _a.sent();
276
- if (events) {
277
- //put it back since it failed
278
- this.queue = this.queue.concat(events);
279
- }
280
- console.error(ex_1);
281
- return [3 /*break*/, 4];
282
- case 4: return [2 /*return*/];
283
- }
284
- });
285
- }); })];
286
- case 1:
287
- _a.sent();
288
- return [2 /*return*/];
289
- }
290
- });
291
- });
292
- };
293
- XyPixel.prototype.send = function (event, fields) {
294
- var _a;
295
- return __awaiter(this, void 0, void 0, function () {
296
- var utm, referrer;
297
- return __generator(this, function (_b) {
298
- switch (_b.label) {
299
- case 0:
300
- this.updateFbId();
301
- utm = XyPixel.utmFields().update();
302
- referrer = new Referrer();
303
- this.queue.push(__assign({
304
- cid: this.cid,
305
- create_time: Date.now(),
306
- email_hash: (_a = this.email_hash) !== null && _a !== void 0 ? _a : undefined,
307
- event: event,
308
- exids: this.exids,
309
- fields: fields,
310
- host: document.location.host,
311
- pathname: document.location.pathname,
312
- pixel: this.pixelId,
313
- referrer: referrer.toJson(),
314
- system: getSystemInfo(),
315
- utm: utm,
316
- }));
317
- return [4 /*yield*/, this.tryFlushQueue()];
318
- case 1:
319
- _b.sent();
320
- return [2 /*return*/];
321
- }
322
- });
323
- });
324
- };
325
- Object.defineProperty(XyPixel, "instance", {
326
- get: function () {
327
- return assertEx(this._instance, 'XyPixel uninitialized');
328
- },
329
- enumerable: false,
330
- configurable: true
331
- });
332
- XyPixel.init = function (pixelId) {
333
- this._instance = new XyPixel(pixelId);
334
- return this._instance;
335
- };
336
- XyPixel.selectApi = function (api) {
337
- this.api = api;
338
- };
339
- XyPixel.utmFields = function () {
340
- if (XyPixel.utmFieldsObj === undefined) {
341
- XyPixel.utmFieldsObj = new UtmFields();
342
- }
343
- return XyPixel.utmFieldsObj;
344
- };
345
- XyPixel.api = new PixelApi();
346
- 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 emailHashLocalStorageName = 'xy_email_hash';
246
+ var XyPixel = /** @class */ (function () {
247
+ function XyPixel(pixelId) {
248
+ this.queue = [];
249
+ this.cid = new UniqueUserId().id;
250
+ this.queueMutex = new Mutex();
251
+ this.pixelId = pixelId;
252
+ this.email_hash = localStorage.getItem(emailHashLocalStorageName);
253
+ }
254
+ XyPixel.prototype.identify = function (email) {
255
+ this.email = email;
256
+ this.email_hash = email ? md5(email) : undefined;
257
+ if (this.email_hash) {
258
+ localStorage.setItem(emailHashLocalStorageName, this.email_hash);
259
+ }
260
+ };
261
+ XyPixel.prototype.updateFbId = function () {
262
+ var _a;
263
+ this.exids = __assign({
264
+ fbc: Cookies.get('_fbc'),
265
+ fbp: Cookies.get('_fbp'),
266
+ ga: Cookies.get('_ga'),
267
+ gclid: Cookies.get('_gclid'),
268
+ rdt_uid: Cookies.get('rdt_uid'),
269
+ scid: Cookies.get('_scid'),
270
+ tt_sessionId: (_a = sessionStorage.getItem('tt_sessionId')) !== null && _a !== void 0 ? _a : undefined,
271
+ });
272
+ };
273
+ XyPixel.prototype.tryFlushQueue = function () {
274
+ return __awaiter(this, void 0, void 0, function () {
275
+ var _this = this;
276
+ return __generator(this, function (_a) {
277
+ switch (_a.label) {
278
+ case 0: return [4 /*yield*/, this.queueMutex.runExclusive(function () { return __awaiter(_this, void 0, void 0, function () {
279
+ var api, events, ex_1;
280
+ return __generator(this, function (_a) {
281
+ switch (_a.label) {
282
+ case 0:
283
+ if (this.queue.length === 0)
284
+ return [2 /*return*/];
285
+ api = XyPixel.api;
286
+ if (!api) return [3 /*break*/, 4];
287
+ events = this.queue;
288
+ this.queue = [];
289
+ _a.label = 1;
290
+ case 1:
291
+ _a.trys.push([1, 3, , 4]);
292
+ return [4 /*yield*/, api.trackEvents(events)];
293
+ case 2:
294
+ _a.sent();
295
+ return [3 /*break*/, 4];
296
+ case 3:
297
+ ex_1 = _a.sent();
298
+ if (events) {
299
+ //put it back since it failed
300
+ this.queue = this.queue.concat(events);
301
+ }
302
+ console.error(ex_1);
303
+ return [3 /*break*/, 4];
304
+ case 4: return [2 /*return*/];
305
+ }
306
+ });
307
+ }); })];
308
+ case 1:
309
+ _a.sent();
310
+ return [2 /*return*/];
311
+ }
312
+ });
313
+ });
314
+ };
315
+ XyPixel.prototype.send = function (event, fields) {
316
+ var _a;
317
+ return __awaiter(this, void 0, void 0, function () {
318
+ var utm, referrer;
319
+ return __generator(this, function (_b) {
320
+ switch (_b.label) {
321
+ case 0:
322
+ this.updateFbId();
323
+ utm = XyPixel.utmFields().update();
324
+ referrer = new Referrer();
325
+ this.queue.push(__assign({
326
+ cid: this.cid,
327
+ create_time: Date.now(),
328
+ email_hash: (_a = this.email_hash) !== null && _a !== void 0 ? _a : undefined,
329
+ event: event,
330
+ exids: this.exids,
331
+ fields: fields,
332
+ host: document.location.host,
333
+ pathname: document.location.pathname,
334
+ pixel: this.pixelId,
335
+ referrer: referrer.toJson(),
336
+ system: getSystemInfo(),
337
+ utm: utm,
338
+ }));
339
+ console.log("Queue: ".concat(JSON.stringify(this.queue, null, 2)));
340
+ return [4 /*yield*/, this.tryFlushQueue()];
341
+ case 1:
342
+ _b.sent();
343
+ return [2 /*return*/];
344
+ }
345
+ });
346
+ });
347
+ };
348
+ Object.defineProperty(XyPixel, "instance", {
349
+ get: function () {
350
+ return assertEx(this._instance, 'XyPixel uninitialized');
351
+ },
352
+ enumerable: false,
353
+ configurable: true
354
+ });
355
+ XyPixel.init = function (pixelId) {
356
+ this._instance = new XyPixel(pixelId);
357
+ return this._instance;
358
+ };
359
+ XyPixel.selectApi = function (api) {
360
+ this.api = api;
361
+ };
362
+ XyPixel.utmFields = function () {
363
+ if (XyPixel.utmFieldsObj === undefined) {
364
+ XyPixel.utmFieldsObj = new UtmFields();
365
+ }
366
+ return XyPixel.utmFieldsObj;
367
+ };
368
+ XyPixel.api = new PixelApi();
369
+ return XyPixel;
347
370
  }());
348
371
 
349
- var XyUserEventHandler = /** @class */ (function (_super) {
350
- __extends(XyUserEventHandler, _super);
351
- function XyUserEventHandler() {
352
- return _super.call(this) || this;
353
- }
354
- XyUserEventHandler.prototype.testStarted = function (fields) {
355
- return __awaiter(this, void 0, void 0, function () {
356
- return __generator(this, function (_a) {
357
- switch (_a.label) {
358
- case 0: return [4 /*yield*/, XyPixel.instance.send('TestStarted', fields)];
359
- case 1: return [2 /*return*/, _a.sent()];
360
- }
361
- });
362
- });
363
- };
364
- XyUserEventHandler.prototype.funnelStarted = function (fields) {
365
- return __awaiter(this, void 0, void 0, function () {
366
- return __generator(this, function (_a) {
367
- switch (_a.label) {
368
- case 0: return [4 /*yield*/, XyPixel.instance.send('FunnelStarted', fields)];
369
- case 1: return [2 /*return*/, _a.sent()];
370
- }
371
- });
372
- });
373
- };
374
- XyUserEventHandler.prototype.viewContent = function (fields) {
375
- return __awaiter(this, void 0, void 0, function () {
376
- return __generator(this, function (_a) {
377
- switch (_a.label) {
378
- case 0: return [4 /*yield*/, XyPixel.instance.send('ViewContent', fields)];
379
- case 1: return [2 /*return*/, _a.sent()];
380
- }
381
- });
382
- });
383
- };
384
- XyUserEventHandler.prototype.userClick = function (fields) {
385
- return __awaiter(this, void 0, void 0, function () {
386
- return __generator(this, function (_a) {
387
- switch (_a.label) {
388
- case 0: return [4 /*yield*/, XyPixel.instance.send('ViewPage', fields)];
389
- case 1: return [2 /*return*/, _a.sent()];
390
- }
391
- });
392
- });
393
- };
394
- return XyUserEventHandler;
372
+ var XyUserEventHandler = /** @class */ (function (_super) {
373
+ __extends(XyUserEventHandler, _super);
374
+ function XyUserEventHandler() {
375
+ return _super.call(this) || this;
376
+ }
377
+ XyUserEventHandler.prototype.testStarted = function (fields) {
378
+ return __awaiter(this, void 0, void 0, function () {
379
+ return __generator(this, function (_a) {
380
+ switch (_a.label) {
381
+ case 0: return [4 /*yield*/, XyPixel.instance.send('TestStarted', fields)];
382
+ case 1: return [2 /*return*/, _a.sent()];
383
+ }
384
+ });
385
+ });
386
+ };
387
+ XyUserEventHandler.prototype.funnelStarted = function (fields) {
388
+ return __awaiter(this, void 0, void 0, function () {
389
+ return __generator(this, function (_a) {
390
+ switch (_a.label) {
391
+ case 0: return [4 /*yield*/, XyPixel.instance.send('FunnelStarted', fields)];
392
+ case 1: return [2 /*return*/, _a.sent()];
393
+ }
394
+ });
395
+ });
396
+ };
397
+ XyUserEventHandler.prototype.viewContent = function (fields) {
398
+ return __awaiter(this, void 0, void 0, function () {
399
+ return __generator(this, function (_a) {
400
+ switch (_a.label) {
401
+ case 0: return [4 /*yield*/, XyPixel.instance.send('ViewContent', fields)];
402
+ case 1: return [2 /*return*/, _a.sent()];
403
+ }
404
+ });
405
+ });
406
+ };
407
+ XyUserEventHandler.prototype.userClick = function (fields) {
408
+ return __awaiter(this, void 0, void 0, function () {
409
+ return __generator(this, function (_a) {
410
+ switch (_a.label) {
411
+ case 0: return [4 /*yield*/, XyPixel.instance.send('ViewPage', fields)];
412
+ case 1: return [2 /*return*/, _a.sent()];
413
+ }
414
+ });
415
+ });
416
+ };
417
+ return XyUserEventHandler;
395
418
  }(UserEventHandler));
396
419
 
397
420
  export { PixelApi, Referrer, UniqueUserId, UserEventHandler, UtmFields, XyPixel, XyUserEventHandler };