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