@xylabs/pixel 1.2.6 → 1.3.4

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 (156) hide show
  1. package/README.md +6 -1
  2. package/dist/Pixel.js +5 -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 → cjs5}/Api/Api.d.ts +7 -7
  7. package/dist/{node-esm/src → cjs5}/Api/UserEvent.d.ts +18 -18
  8. package/dist/{node-esm/src → cjs5}/Api/UserEventSystem.d.ts +3 -3
  9. package/dist/{esm2017/src → cjs5}/Api/index.d.ts +5 -5
  10. package/dist/{esm2017/src → cjs5}/CommonFields.d.ts +5 -5
  11. package/dist/{esm5/src → cjs5}/ExIds.d.ts +10 -10
  12. package/dist/{node-esm/src → cjs5}/FunnelStartedFields.d.ts +5 -5
  13. package/dist/{esm2017/src → cjs5}/Pixel.d.ts +23 -23
  14. package/dist/{node-esm/src → cjs5}/Referrer.d.ts +13 -13
  15. package/dist/{esm5/src → cjs5}/TestStartedFields.d.ts +5 -5
  16. package/dist/{esm2017/src → cjs5}/UniqueUserId.d.ts +8 -8
  17. package/dist/{esm5/src → cjs5}/UserClickFields.d.ts +6 -6
  18. package/dist/{node-esm/src → cjs5}/UserEventHandler.d.ts +11 -11
  19. package/dist/{node-esm/src → cjs5}/UtmFields.d.ts +9 -9
  20. package/dist/{esm2017/src → cjs5}/ViewContentFields.d.ts +6 -6
  21. package/dist/{esm5/src → cjs5}/XyLabsTrackingEventJson.d.ts +19 -19
  22. package/dist/{esm2017/src → cjs5}/XyUserEventHandler.d.ts +13 -13
  23. package/dist/cjs5/getSystemInfo.d.ts +2 -0
  24. package/dist/{node-esm/src → cjs5}/index.d.ts +14 -14
  25. package/dist/cjs5/index.js +438 -0
  26. package/dist/cjs5/index.js.map +1 -0
  27. package/dist/{esm2017/src → esm2015}/Api/Api.d.ts +7 -7
  28. package/dist/{node/src → esm2015}/Api/UserEvent.d.ts +18 -18
  29. package/dist/{esm5/src → esm2015}/Api/UserEventSystem.d.ts +3 -3
  30. package/dist/{node-esm/src → esm2015}/Api/index.d.ts +5 -5
  31. package/dist/{node-esm/src → esm2015}/CommonFields.d.ts +5 -5
  32. package/dist/{node-esm/src → esm2015}/ExIds.d.ts +10 -10
  33. package/dist/{node/src → esm2015}/FunnelStartedFields.d.ts +5 -5
  34. package/dist/{esm5/src → esm2015}/Pixel.d.ts +23 -23
  35. package/dist/{node/src → esm2015}/Referrer.d.ts +13 -13
  36. package/dist/{esm2017/src → esm2015}/TestStartedFields.d.ts +5 -5
  37. package/dist/{esm5/src → esm2015}/UniqueUserId.d.ts +8 -8
  38. package/dist/{node-esm/src → esm2015}/UserClickFields.d.ts +6 -6
  39. package/dist/{node/src → esm2015}/UserEventHandler.d.ts +11 -11
  40. package/dist/{node/src → esm2015}/UtmFields.d.ts +9 -9
  41. package/dist/{esm5/src → esm2015}/ViewContentFields.d.ts +6 -6
  42. package/dist/{esm2017/src → esm2015}/XyLabsTrackingEventJson.d.ts +19 -19
  43. package/dist/{esm5/src → esm2015}/XyUserEventHandler.d.ts +13 -13
  44. package/dist/esm2015/getSystemInfo.d.ts +2 -0
  45. package/dist/{esm5/src → esm2015}/index.d.ts +14 -14
  46. package/dist/esm2015/index.js +420 -0
  47. package/dist/esm2015/index.js.map +1 -0
  48. package/dist/{esm5/src → esm2017}/Api/Api.d.ts +7 -7
  49. package/dist/esm2017/{src/Api → Api}/UserEvent.d.ts +18 -18
  50. package/dist/{node/src → esm2017}/Api/UserEventSystem.d.ts +3 -3
  51. package/dist/{esm5/src → esm2017}/Api/index.d.ts +5 -5
  52. package/dist/{esm5/src → esm2017}/CommonFields.d.ts +5 -5
  53. package/dist/esm2017/{src/ExIds.d.ts → ExIds.d.ts} +10 -10
  54. package/dist/{esm5/src → esm2017}/FunnelStartedFields.d.ts +5 -5
  55. package/dist/{node-esm/src → esm2017}/Pixel.d.ts +23 -23
  56. package/dist/esm2017/{src/Referrer.d.ts → Referrer.d.ts} +13 -13
  57. package/dist/{node-esm/src → esm2017}/TestStartedFields.d.ts +5 -5
  58. package/dist/{node-esm/src → esm2017}/UniqueUserId.d.ts +8 -8
  59. package/dist/esm2017/{src/UserClickFields.d.ts → UserClickFields.d.ts} +6 -6
  60. package/dist/{esm5/src → esm2017}/UserEventHandler.d.ts +11 -11
  61. package/dist/esm2017/{src/UtmFields.d.ts → UtmFields.d.ts} +9 -9
  62. package/dist/{node-esm/src → esm2017}/ViewContentFields.d.ts +6 -6
  63. package/dist/{node-esm/src → esm2017}/XyLabsTrackingEventJson.d.ts +19 -19
  64. package/dist/{node-esm/src → esm2017}/XyUserEventHandler.d.ts +13 -13
  65. package/dist/esm2017/getSystemInfo.d.ts +2 -0
  66. package/dist/esm2017/index.d.ts +14 -1
  67. package/dist/esm2017/index.js +395 -211
  68. package/dist/esm2017/index.js.map +1 -1
  69. package/dist/{node/src → esm5}/Api/Api.d.ts +7 -7
  70. package/dist/esm5/{src/Api → Api}/UserEvent.d.ts +18 -18
  71. package/dist/{esm2017/src → esm5}/Api/UserEventSystem.d.ts +3 -3
  72. package/dist/{node/src → esm5}/Api/index.d.ts +5 -5
  73. package/dist/{node/src → esm5}/CommonFields.d.ts +5 -5
  74. package/dist/{node/src → esm5}/ExIds.d.ts +10 -10
  75. package/dist/{esm2017/src → esm5}/FunnelStartedFields.d.ts +5 -5
  76. package/dist/{node/src → esm5}/Pixel.d.ts +23 -23
  77. package/dist/esm5/{src/Referrer.d.ts → Referrer.d.ts} +13 -13
  78. package/dist/{node/src → esm5}/TestStartedFields.d.ts +5 -5
  79. package/dist/{node/src → esm5}/UniqueUserId.d.ts +8 -8
  80. package/dist/{node/src → esm5}/UserClickFields.d.ts +6 -6
  81. package/dist/{esm2017/src → esm5}/UserEventHandler.d.ts +11 -11
  82. package/dist/esm5/{src/UtmFields.d.ts → UtmFields.d.ts} +9 -9
  83. package/dist/{node/src → esm5}/ViewContentFields.d.ts +6 -6
  84. package/dist/{node/src → esm5}/XyLabsTrackingEventJson.d.ts +19 -19
  85. package/dist/{node/src → esm5}/XyUserEventHandler.d.ts +13 -13
  86. package/dist/esm5/getSystemInfo.d.ts +2 -0
  87. package/dist/esm5/index.d.ts +14 -1
  88. package/dist/esm5/index.js +316 -294
  89. package/dist/esm5/index.js.map +1 -1
  90. package/dist/getSystemInfo.d.ts +1 -2
  91. package/dist/getSystemInfo.js +2 -2
  92. package/dist/getSystemInfo.js.map +1 -1
  93. package/dist/node/Api/Api.d.ts +7 -0
  94. package/dist/node/Api/UserEvent.d.ts +18 -0
  95. package/dist/node/Api/UserEventSystem.d.ts +3 -0
  96. package/dist/node/Api/index.d.ts +5 -0
  97. package/dist/node/CommonFields.d.ts +5 -0
  98. package/dist/node/ExIds.d.ts +10 -0
  99. package/dist/node/FunnelStartedFields.d.ts +5 -0
  100. package/dist/node/Pixel.d.ts +23 -0
  101. package/dist/node/Referrer.d.ts +13 -0
  102. package/dist/node/TestStartedFields.d.ts +5 -0
  103. package/dist/node/UniqueUserId.d.ts +8 -0
  104. package/dist/node/UserClickFields.d.ts +6 -0
  105. package/dist/node/UserEventHandler.d.ts +11 -0
  106. package/dist/node/UtmFields.d.ts +9 -0
  107. package/dist/node/ViewContentFields.d.ts +6 -0
  108. package/dist/node/XyLabsTrackingEventJson.d.ts +19 -0
  109. package/dist/node/XyUserEventHandler.d.ts +13 -0
  110. package/dist/node/getSystemInfo.d.ts +2 -0
  111. package/dist/node/index.d.ts +14 -1
  112. package/dist/node/index.js +316 -295
  113. package/dist/node/index.js.map +1 -1
  114. package/dist/node-esm/Api/Api.d.ts +7 -0
  115. package/dist/node-esm/Api/UserEvent.d.ts +18 -0
  116. package/dist/node-esm/Api/UserEventSystem.d.ts +3 -0
  117. package/dist/node-esm/Api/index.d.ts +5 -0
  118. package/dist/node-esm/CommonFields.d.ts +5 -0
  119. package/dist/node-esm/ExIds.d.ts +10 -0
  120. package/dist/node-esm/FunnelStartedFields.d.ts +5 -0
  121. package/dist/node-esm/Pixel.d.ts +23 -0
  122. package/dist/node-esm/Referrer.d.ts +13 -0
  123. package/dist/node-esm/TestStartedFields.d.ts +5 -0
  124. package/dist/node-esm/UniqueUserId.d.ts +8 -0
  125. package/dist/node-esm/UserClickFields.d.ts +6 -0
  126. package/dist/node-esm/UserEventHandler.d.ts +11 -0
  127. package/dist/node-esm/UtmFields.d.ts +9 -0
  128. package/dist/node-esm/ViewContentFields.d.ts +6 -0
  129. package/dist/node-esm/XyLabsTrackingEventJson.d.ts +19 -0
  130. package/dist/node-esm/XyUserEventHandler.d.ts +13 -0
  131. package/dist/node-esm/getSystemInfo.d.ts +2 -0
  132. package/dist/node-esm/index.d.ts +14 -1
  133. package/dist/node-esm/index.js +395 -211
  134. package/dist/node-esm/index.js.map +1 -1
  135. package/jest.config.cjs +22 -3
  136. package/package.json +16 -25
  137. package/rollup.config.js +2 -120
  138. package/src/Pixel.spec.ts +2 -1
  139. package/src/Pixel.ts +6 -0
  140. package/src/getSystemInfo.ts +2 -2
  141. package/dist/esm2017/index.node.d.ts +0 -1
  142. package/dist/esm2017/src/Pixel.spec.d.ts +0 -1
  143. package/dist/esm2017/src/getSystemInfo.d.ts +0 -3
  144. package/dist/esm2017/src/index.d.ts +0 -14
  145. package/dist/esm5/index.node.d.ts +0 -1
  146. package/dist/esm5/src/Pixel.spec.d.ts +0 -1
  147. package/dist/esm5/src/getSystemInfo.d.ts +0 -3
  148. package/dist/node/index.node.d.ts +0 -1
  149. package/dist/node/src/Pixel.spec.d.ts +0 -1
  150. package/dist/node/src/getSystemInfo.d.ts +0 -3
  151. package/dist/node/src/index.d.ts +0 -14
  152. package/dist/node-esm/index.node.d.ts +0 -1
  153. package/dist/node-esm/src/Pixel.spec.d.ts +0 -1
  154. package/dist/node-esm/src/getSystemInfo.d.ts +0 -3
  155. package/index.node.ts +0 -1
  156. package/index.ts +0 -1
@@ -1,13 +1,13 @@
1
- declare class Referrer {
2
- private static storageId;
3
- local: string;
4
- session: string;
5
- constructor();
6
- private getFromLocal;
7
- private getFromSession;
8
- toJson(): {
9
- local: string;
10
- session: string;
11
- } | undefined;
12
- }
13
- export default Referrer;
1
+ declare class Referrer {
2
+ private static storageId;
3
+ local: string;
4
+ session: string;
5
+ constructor();
6
+ private getFromLocal;
7
+ private getFromSession;
8
+ toJson(): {
9
+ local: string;
10
+ session: string;
11
+ } | undefined;
12
+ }
13
+ export default Referrer;
@@ -1,5 +1,5 @@
1
- import CommonFields from './CommonFields';
2
- interface TestStartedFields extends CommonFields {
3
- name: string;
4
- }
5
- export default TestStartedFields;
1
+ import CommonFields from './CommonFields';
2
+ interface TestStartedFields extends CommonFields {
3
+ name: string;
4
+ }
5
+ export default TestStartedFields;
@@ -1,8 +1,8 @@
1
- declare class UniqueUserId {
2
- private static localStorageId;
3
- id: string;
4
- constructor();
5
- private generateId;
6
- toString(): string;
7
- }
8
- export default UniqueUserId;
1
+ declare class UniqueUserId {
2
+ private static localStorageId;
3
+ id: string;
4
+ constructor();
5
+ private generateId;
6
+ toString(): string;
7
+ }
8
+ export default UniqueUserId;
@@ -1,6 +1,6 @@
1
- import CommonFields from './CommonFields';
2
- interface UserClickFields extends CommonFields {
3
- elementName: string;
4
- elementType: string;
5
- }
6
- export default UserClickFields;
1
+ import CommonFields from './CommonFields';
2
+ interface UserClickFields extends CommonFields {
3
+ elementName: string;
4
+ elementType: string;
5
+ }
6
+ export default UserClickFields;
@@ -1,11 +1,11 @@
1
- import FunnelStartedFields from './FunnelStartedFields';
2
- import TestStartedFields from './TestStartedFields';
3
- import UserClickFields from './UserClickFields';
4
- import ViewContentFields from './ViewContentFields';
5
- declare abstract class UserEventHandler<T> {
6
- abstract testStarted(fields: T | TestStartedFields): Promise<void>;
7
- abstract funnelStarted(fields: T | FunnelStartedFields): Promise<void>;
8
- abstract viewContent(fields: T | ViewContentFields): Promise<void>;
9
- abstract userClick(fields: T | UserClickFields): Promise<void>;
10
- }
11
- export default UserEventHandler;
1
+ import FunnelStartedFields from './FunnelStartedFields';
2
+ import TestStartedFields from './TestStartedFields';
3
+ import UserClickFields from './UserClickFields';
4
+ import ViewContentFields from './ViewContentFields';
5
+ declare abstract class UserEventHandler<T> {
6
+ abstract testStarted(fields: T | TestStartedFields): Promise<void>;
7
+ abstract funnelStarted(fields: T | FunnelStartedFields): Promise<void>;
8
+ abstract viewContent(fields: T | ViewContentFields): Promise<void>;
9
+ abstract userClick(fields: T | UserClickFields): Promise<void>;
10
+ }
11
+ export default UserEventHandler;
@@ -1,9 +1,9 @@
1
- declare class UtmFields {
2
- private static localStorageId;
3
- fields: Record<string, string>[];
4
- constructor();
5
- getUtmRecord: () => Record<string, string> | null;
6
- update(): Record<string, string>[];
7
- toString(): string;
8
- }
9
- export default UtmFields;
1
+ declare class UtmFields {
2
+ private static localStorageId;
3
+ fields: Record<string, string>[];
4
+ constructor();
5
+ getUtmRecord: () => Record<string, string> | null;
6
+ update(): Record<string, string>[];
7
+ toString(): string;
8
+ }
9
+ export default UtmFields;
@@ -1,6 +1,6 @@
1
- import CommonFields from './CommonFields';
2
- interface ViewContentFields extends CommonFields {
3
- name: string;
4
- path: string;
5
- }
6
- export default ViewContentFields;
1
+ import CommonFields from './CommonFields';
2
+ interface ViewContentFields extends CommonFields {
3
+ name: string;
4
+ path: string;
5
+ }
6
+ export default ViewContentFields;
@@ -1,19 +1,19 @@
1
- export interface XyLabsTrackingEventJson {
2
- cid: string;
3
- create_time?: number;
4
- email?: string;
5
- email_hash?: string;
6
- event?: string;
7
- exids?: Record<string, string>;
8
- fields?: Record<string, unknown>;
9
- host?: string;
10
- pathname?: string;
11
- pixel?: string;
12
- receive_time?: number;
13
- rid?: string;
14
- uid?: string;
15
- utm?: Record<string, string>[] | Record<string, string[]>;
16
- system?: unknown;
17
- ip?: string;
18
- ua?: string;
19
- }
1
+ export interface XyLabsTrackingEventJson {
2
+ cid: string;
3
+ create_time?: number;
4
+ email?: string;
5
+ email_hash?: string;
6
+ event?: string;
7
+ exids?: Record<string, string>;
8
+ fields?: Record<string, unknown>;
9
+ host?: string;
10
+ pathname?: string;
11
+ pixel?: string;
12
+ receive_time?: number;
13
+ rid?: string;
14
+ uid?: string;
15
+ utm?: Record<string, string>[] | Record<string, string[]>;
16
+ system?: unknown;
17
+ ip?: string;
18
+ ua?: string;
19
+ }
@@ -1,13 +1,13 @@
1
- import FunnelStartedFields from './FunnelStartedFields';
2
- import TestStartedFields from './TestStartedFields';
3
- import UserClickFields from './UserClickFields';
4
- import UserEventHandler from './UserEventHandler';
5
- import ViewContentFields from './ViewContentFields';
6
- declare class XyUserEventHandler<T extends Record<string, unknown>> extends UserEventHandler<T> {
7
- constructor();
8
- testStarted(fields: T | TestStartedFields): Promise<void>;
9
- funnelStarted(fields: T | FunnelStartedFields): Promise<void>;
10
- viewContent(fields: T | ViewContentFields): Promise<void>;
11
- userClick(fields: T | UserClickFields): Promise<void>;
12
- }
13
- export default XyUserEventHandler;
1
+ import FunnelStartedFields from './FunnelStartedFields';
2
+ import TestStartedFields from './TestStartedFields';
3
+ import UserClickFields from './UserClickFields';
4
+ import UserEventHandler from './UserEventHandler';
5
+ import ViewContentFields from './ViewContentFields';
6
+ declare class XyUserEventHandler<T extends Record<string, unknown>> extends UserEventHandler<T> {
7
+ constructor();
8
+ testStarted(fields: T | TestStartedFields): Promise<void>;
9
+ funnelStarted(fields: T | FunnelStartedFields): Promise<void>;
10
+ viewContent(fields: T | ViewContentFields): Promise<void>;
11
+ userClick(fields: T | UserClickFields): Promise<void>;
12
+ }
13
+ export default XyUserEventHandler;
@@ -0,0 +1,2 @@
1
+ declare const getSystemInfo: () => import("bowser").Parser.ParsedResult | undefined;
2
+ export default getSystemInfo;
@@ -1,14 +1,14 @@
1
- import FunnelStartedFields from './FunnelStartedFields';
2
- import Referrer from './Referrer';
3
- import TestStartedFields from './TestStartedFields';
4
- import UniqueUserId from './UniqueUserId';
5
- import UserClickFields from './UserClickFields';
6
- import UserEventHandler from './UserEventHandler';
7
- import UtmFields from './UtmFields';
8
- import ViewContentFields from './ViewContentFields';
9
- import XyUserEventHandler from './XyUserEventHandler';
10
- export * from './Api';
11
- export * from './Pixel';
12
- export * from './XyLabsTrackingEventJson';
13
- export { Referrer, UniqueUserId, UserEventHandler, UtmFields, XyUserEventHandler };
14
- export type { FunnelStartedFields, TestStartedFields, UserClickFields, ViewContentFields };
1
+ import FunnelStartedFields from './FunnelStartedFields';
2
+ import Referrer from './Referrer';
3
+ import TestStartedFields from './TestStartedFields';
4
+ import UniqueUserId from './UniqueUserId';
5
+ import UserClickFields from './UserClickFields';
6
+ import UserEventHandler from './UserEventHandler';
7
+ import UtmFields from './UtmFields';
8
+ import ViewContentFields from './ViewContentFields';
9
+ import XyUserEventHandler from './XyUserEventHandler';
10
+ export * from './Api';
11
+ export * from './Pixel';
12
+ export * from './XyLabsTrackingEventJson';
13
+ export { Referrer, UniqueUserId, UserEventHandler, UtmFields, XyUserEventHandler };
14
+ export type { FunnelStartedFields, TestStartedFields, UserClickFields, ViewContentFields };
@@ -0,0 +1,420 @@
1
+ import randomBytes from 'randombytes';
2
+ import isEqual from 'lodash/isEqual';
3
+ import { assertEx } from '@xylabs/sdk-js';
4
+ import { Mutex } from 'async-mutex';
5
+ import Cookies from 'js-cookie';
6
+ import md5 from 'md5';
7
+ import axios from 'axios';
8
+ import { parse } from 'bowser';
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;
40
+ }());
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;
56
+ }());
57
+
58
+ var UserEventHandler = /** @class */ (function () {
59
+ function UserEventHandler() {
60
+ }
61
+ return UserEventHandler;
62
+ }());
63
+
64
+ /*! *****************************************************************************
65
+ Copyright (c) Microsoft Corporation.
66
+
67
+ Permission to use, copy, modify, and/or distribute this software for any
68
+ purpose with or without fee is hereby granted.
69
+
70
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
71
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
72
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
73
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
74
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
75
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
76
+ PERFORMANCE OF THIS SOFTWARE.
77
+ ***************************************************************************** */
78
+ /* global Reflect, Promise */
79
+
80
+ var extendStatics = function(d, b) {
81
+ extendStatics = Object.setPrototypeOf ||
82
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
83
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
84
+ return extendStatics(d, b);
85
+ };
86
+
87
+ function __extends(d, b) {
88
+ if (typeof b !== "function" && b !== null)
89
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
90
+ extendStatics(d, b);
91
+ function __() { this.constructor = d; }
92
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
93
+ }
94
+
95
+ var __assign = function() {
96
+ __assign = Object.assign || function __assign(t) {
97
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
98
+ s = arguments[i];
99
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
100
+ }
101
+ return t;
102
+ };
103
+ return __assign.apply(this, arguments);
104
+ };
105
+
106
+ function __awaiter(thisArg, _arguments, P, generator) {
107
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
108
+ return new (P || (P = Promise))(function (resolve, reject) {
109
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
110
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
111
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
112
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
113
+ });
114
+ }
115
+
116
+ function __generator(thisArg, body) {
117
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
118
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
119
+ function verb(n) { return function (v) { return step([n, v]); }; }
120
+ function step(op) {
121
+ if (f) throw new TypeError("Generator is already executing.");
122
+ while (_) try {
123
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
124
+ if (y = 0, t) op = [op[0] & 2, t.value];
125
+ switch (op[0]) {
126
+ case 0: case 1: t = op; break;
127
+ case 4: _.label++; return { value: op[1], done: false };
128
+ case 5: _.label++; y = op[1]; op = [0]; continue;
129
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
130
+ default:
131
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
132
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
133
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
134
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
135
+ if (t[2]) _.ops.pop();
136
+ _.trys.pop(); continue;
137
+ }
138
+ op = body.call(thisArg, _);
139
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
140
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
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;
159
+ }
160
+
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;
208
+ }());
209
+
210
+ var apiBaseUri = {
211
+ beta: 'https://pixel.xylabs.com',
212
+ local: 'http://localhost:3030',
213
+ prod: 'https://pixel.xylabs.com',
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
+ }());
233
+
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
+ return [4 /*yield*/, this.tryFlushQueue()];
340
+ case 1:
341
+ _b.sent();
342
+ return [2 /*return*/];
343
+ }
344
+ });
345
+ });
346
+ };
347
+ Object.defineProperty(XyPixel, "instance", {
348
+ get: function () {
349
+ return assertEx(this._instance, 'XyPixel uninitialized');
350
+ },
351
+ enumerable: false,
352
+ configurable: true
353
+ });
354
+ XyPixel.init = function (pixelId) {
355
+ this._instance = new XyPixel(pixelId);
356
+ return this._instance;
357
+ };
358
+ XyPixel.selectApi = function (api) {
359
+ this.api = api;
360
+ };
361
+ XyPixel.utmFields = function () {
362
+ if (XyPixel.utmFieldsObj === undefined) {
363
+ XyPixel.utmFieldsObj = new UtmFields();
364
+ }
365
+ return XyPixel.utmFieldsObj;
366
+ };
367
+ XyPixel.api = new PixelApi();
368
+ return XyPixel;
369
+ }());
370
+
371
+ var XyUserEventHandler = /** @class */ (function (_super) {
372
+ __extends(XyUserEventHandler, _super);
373
+ function XyUserEventHandler() {
374
+ return _super.call(this) || this;
375
+ }
376
+ XyUserEventHandler.prototype.testStarted = 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('TestStarted', fields)];
381
+ case 1: return [2 /*return*/, _a.sent()];
382
+ }
383
+ });
384
+ });
385
+ };
386
+ XyUserEventHandler.prototype.funnelStarted = 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('FunnelStarted', fields)];
391
+ case 1: return [2 /*return*/, _a.sent()];
392
+ }
393
+ });
394
+ });
395
+ };
396
+ XyUserEventHandler.prototype.viewContent = function (fields) {
397
+ return __awaiter(this, void 0, void 0, function () {
398
+ return __generator(this, function (_a) {
399
+ switch (_a.label) {
400
+ case 0: return [4 /*yield*/, XyPixel.instance.send('ViewContent', fields)];
401
+ case 1: return [2 /*return*/, _a.sent()];
402
+ }
403
+ });
404
+ });
405
+ };
406
+ XyUserEventHandler.prototype.userClick = function (fields) {
407
+ return __awaiter(this, void 0, void 0, function () {
408
+ return __generator(this, function (_a) {
409
+ switch (_a.label) {
410
+ case 0: return [4 /*yield*/, XyPixel.instance.send('ViewPage', fields)];
411
+ case 1: return [2 /*return*/, _a.sent()];
412
+ }
413
+ });
414
+ });
415
+ };
416
+ return XyUserEventHandler;
417
+ }(UserEventHandler));
418
+
419
+ export { PixelApi, Referrer, UniqueUserId, UserEventHandler, UtmFields, XyPixel, XyUserEventHandler };
420
+ //# sourceMappingURL=index.js.map