@xylabs/pixel 1.3.1 → 1.3.5
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.
- package/README.md +6 -1
- package/dist/Api/Api.d.ts +2 -3
- package/dist/Api/Api.js +10 -18
- package/dist/Api/Api.js.map +1 -1
- package/dist/Api/UserEvent.d.ts +2 -3
- package/dist/Api/UserEventSystem.d.ts +1 -2
- package/dist/Api/index.d.ts +3 -5
- package/dist/Api/index.js +3 -2
- package/dist/Api/index.js.map +1 -1
- package/dist/CommonFields.d.ts +1 -2
- package/dist/ExIds.d.ts +1 -2
- package/dist/FunnelStartedFields.d.ts +2 -3
- package/dist/Pixel.d.ts +1 -1
- package/dist/Pixel.js +74 -103
- package/dist/Pixel.js.map +1 -1
- package/dist/Referrer.d.ts +1 -2
- package/dist/Referrer.js +12 -14
- package/dist/Referrer.js.map +1 -1
- package/dist/TestStartedFields.d.ts +2 -3
- package/dist/UniqueUserId.d.ts +1 -2
- package/dist/UniqueUserId.js +8 -10
- package/dist/UniqueUserId.js.map +1 -1
- package/dist/UserClickFields.d.ts +2 -3
- package/dist/UserEventHandler.d.ts +5 -6
- package/dist/UserEventHandler.js +2 -6
- package/dist/UserEventHandler.js.map +1 -1
- package/dist/UtmFields.d.ts +1 -2
- package/dist/UtmFields.js +16 -19
- package/dist/UtmFields.js.map +1 -1
- package/dist/ViewContentFields.d.ts +2 -3
- package/dist/XyUserEventHandler.d.ts +6 -7
- package/dist/XyUserEventHandler.js +22 -45
- package/dist/XyUserEventHandler.js.map +1 -1
- package/dist/cjs5/Api/Api.d.ts +6 -0
- package/dist/cjs5/Api/UserEvent.d.ts +17 -0
- package/dist/cjs5/Api/UserEventSystem.d.ts +2 -0
- package/dist/cjs5/Api/index.d.ts +3 -0
- package/dist/cjs5/CommonFields.d.ts +4 -0
- package/dist/cjs5/ExIds.d.ts +9 -0
- package/dist/cjs5/FunnelStartedFields.d.ts +4 -0
- package/dist/cjs5/Pixel.d.ts +23 -0
- package/dist/cjs5/Referrer.d.ts +12 -0
- package/dist/cjs5/TestStartedFields.d.ts +4 -0
- package/dist/cjs5/UniqueUserId.d.ts +7 -0
- package/dist/cjs5/UserClickFields.d.ts +5 -0
- package/dist/cjs5/UserEventHandler.d.ts +10 -0
- package/dist/cjs5/UtmFields.d.ts +8 -0
- package/dist/cjs5/ViewContentFields.d.ts +5 -0
- package/dist/cjs5/XyLabsTrackingEventJson.d.ts +19 -0
- package/dist/cjs5/XyUserEventHandler.d.ts +12 -0
- package/dist/cjs5/getSystemInfo.d.ts +1 -0
- package/dist/cjs5/index.d.ts +12 -0
- package/dist/cjs5/index.js +298 -0
- package/dist/cjs5/index.js.map +1 -0
- package/dist/esm2015/Api/Api.d.ts +6 -0
- package/dist/esm2015/Api/UserEvent.d.ts +17 -0
- package/dist/esm2015/Api/UserEventSystem.d.ts +2 -0
- package/dist/esm2015/Api/index.d.ts +3 -0
- package/dist/esm2015/CommonFields.d.ts +4 -0
- package/dist/esm2015/ExIds.d.ts +9 -0
- package/dist/esm2015/FunnelStartedFields.d.ts +4 -0
- package/dist/esm2015/Pixel.d.ts +23 -0
- package/dist/esm2015/Referrer.d.ts +12 -0
- package/dist/esm2015/TestStartedFields.d.ts +4 -0
- package/dist/esm2015/UniqueUserId.d.ts +7 -0
- package/dist/esm2015/UserClickFields.d.ts +5 -0
- package/dist/esm2015/UserEventHandler.d.ts +10 -0
- package/dist/esm2015/UtmFields.d.ts +8 -0
- package/dist/esm2015/ViewContentFields.d.ts +5 -0
- package/dist/esm2015/XyLabsTrackingEventJson.d.ts +19 -0
- package/dist/esm2015/XyUserEventHandler.d.ts +12 -0
- package/dist/esm2015/getSystemInfo.d.ts +1 -0
- package/dist/esm2015/index.d.ts +12 -0
- package/dist/esm2015/index.js +280 -0
- package/dist/esm2015/index.js.map +1 -0
- package/dist/esm2017/Api/Api.d.ts +2 -3
- package/dist/esm2017/Api/UserEvent.d.ts +2 -3
- package/dist/esm2017/Api/UserEventSystem.d.ts +1 -2
- package/dist/esm2017/Api/index.d.ts +3 -5
- package/dist/esm2017/CommonFields.d.ts +1 -2
- package/dist/esm2017/ExIds.d.ts +1 -2
- package/dist/esm2017/FunnelStartedFields.d.ts +2 -3
- package/dist/esm2017/Pixel.d.ts +1 -1
- package/dist/esm2017/Referrer.d.ts +1 -2
- package/dist/esm2017/TestStartedFields.d.ts +2 -3
- package/dist/esm2017/UniqueUserId.d.ts +1 -2
- package/dist/esm2017/UserClickFields.d.ts +2 -3
- package/dist/esm2017/UserEventHandler.d.ts +5 -6
- package/dist/esm2017/UtmFields.d.ts +1 -2
- package/dist/esm2017/ViewContentFields.d.ts +2 -3
- package/dist/esm2017/XyUserEventHandler.d.ts +6 -7
- package/dist/esm2017/getSystemInfo.d.ts +1 -2
- package/dist/esm2017/index.d.ts +9 -11
- package/dist/esm2017/index.js +181 -316
- package/dist/esm2017/index.js.map +1 -1
- package/dist/esm5/Api/Api.d.ts +2 -3
- package/dist/esm5/Api/UserEvent.d.ts +2 -3
- package/dist/esm5/Api/UserEventSystem.d.ts +1 -2
- package/dist/esm5/Api/index.d.ts +3 -5
- package/dist/esm5/CommonFields.d.ts +1 -2
- package/dist/esm5/ExIds.d.ts +1 -2
- package/dist/esm5/FunnelStartedFields.d.ts +2 -3
- package/dist/esm5/Pixel.d.ts +1 -1
- package/dist/esm5/Referrer.d.ts +1 -2
- package/dist/esm5/TestStartedFields.d.ts +2 -3
- package/dist/esm5/UniqueUserId.d.ts +1 -2
- package/dist/esm5/UserClickFields.d.ts +2 -3
- package/dist/esm5/UserEventHandler.d.ts +5 -6
- package/dist/esm5/UtmFields.d.ts +1 -2
- package/dist/esm5/ViewContentFields.d.ts +2 -3
- package/dist/esm5/XyUserEventHandler.d.ts +6 -7
- package/dist/esm5/getSystemInfo.d.ts +1 -2
- package/dist/esm5/index.d.ts +9 -11
- package/dist/esm5/index.js +181 -316
- package/dist/esm5/index.js.map +1 -1
- package/dist/getSystemInfo.d.ts +1 -2
- package/dist/getSystemInfo.js +3 -4
- package/dist/getSystemInfo.js.map +1 -1
- package/dist/index.d.ts +9 -11
- package/dist/index.js +9 -6
- package/dist/index.js.map +1 -1
- package/dist/node/Api/Api.d.ts +2 -3
- package/dist/node/Api/UserEvent.d.ts +2 -3
- package/dist/node/Api/UserEventSystem.d.ts +1 -2
- package/dist/node/Api/index.d.ts +3 -5
- package/dist/node/CommonFields.d.ts +1 -2
- package/dist/node/ExIds.d.ts +1 -2
- package/dist/node/FunnelStartedFields.d.ts +2 -3
- package/dist/node/Pixel.d.ts +1 -1
- package/dist/node/Referrer.d.ts +1 -2
- package/dist/node/TestStartedFields.d.ts +2 -3
- package/dist/node/UniqueUserId.d.ts +1 -2
- package/dist/node/UserClickFields.d.ts +2 -3
- package/dist/node/UserEventHandler.d.ts +5 -6
- package/dist/node/UtmFields.d.ts +1 -2
- package/dist/node/ViewContentFields.d.ts +2 -3
- package/dist/node/XyUserEventHandler.d.ts +6 -7
- package/dist/node/getSystemInfo.d.ts +1 -2
- package/dist/node/index.d.ts +9 -11
- package/dist/node/index.js +184 -319
- package/dist/node/index.js.map +1 -1
- package/dist/node-esm/Api/Api.d.ts +2 -3
- package/dist/node-esm/Api/UserEvent.d.ts +2 -3
- package/dist/node-esm/Api/UserEventSystem.d.ts +1 -2
- package/dist/node-esm/Api/index.d.ts +3 -5
- package/dist/node-esm/CommonFields.d.ts +1 -2
- package/dist/node-esm/ExIds.d.ts +1 -2
- package/dist/node-esm/FunnelStartedFields.d.ts +2 -3
- package/dist/node-esm/Pixel.d.ts +1 -1
- package/dist/node-esm/Referrer.d.ts +1 -2
- package/dist/node-esm/TestStartedFields.d.ts +2 -3
- package/dist/node-esm/UniqueUserId.d.ts +1 -2
- package/dist/node-esm/UserClickFields.d.ts +2 -3
- package/dist/node-esm/UserEventHandler.d.ts +5 -6
- package/dist/node-esm/UtmFields.d.ts +1 -2
- package/dist/node-esm/ViewContentFields.d.ts +2 -3
- package/dist/node-esm/XyUserEventHandler.d.ts +6 -7
- package/dist/node-esm/getSystemInfo.d.ts +1 -2
- package/dist/node-esm/index.d.ts +9 -11
- package/dist/node-esm/index.js +181 -316
- package/dist/node-esm/index.js.map +1 -1
- package/jest.config.cjs +22 -3
- package/package.json +5 -8
- package/src/Api/Api.ts +2 -4
- package/src/Api/UserEvent.ts +2 -4
- package/src/Api/UserEventSystem.ts +1 -3
- package/src/Api/index.ts +3 -6
- package/src/CommonFields.ts +1 -3
- package/src/ExIds.ts +1 -3
- package/src/FunnelStartedFields.ts +2 -4
- package/src/Pixel.spec.ts +2 -1
- package/src/Pixel.ts +11 -5
- package/src/Referrer.ts +1 -3
- package/src/TestStartedFields.ts +2 -4
- package/src/UniqueUserId.ts +1 -3
- package/src/UserClickFields.ts +2 -4
- package/src/UserEventHandler.ts +5 -7
- package/src/UtmFields.ts +1 -3
- package/src/ViewContentFields.ts +2 -4
- package/src/XyUserEventHandler.ts +6 -8
- package/src/getSystemInfo.ts +1 -3
- package/src/index.ts +9 -13
package/dist/UtmFields.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UtmFields.js","sourceRoot":"","sources":["../src/UtmFields.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UtmFields.js","sourceRoot":"","sources":["../src/UtmFields.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,gBAAgB,CAAA;AAEpC,MAAM,OAAO,SAAS;IAGpB;;QADO,WAAM,GAA6B,EAAE,CAAA;QAgBrC,iBAAY,GAAG,GAAG,EAAE;;YACzB,MAAM,MAAM,GAA2B,EAAE,CAAA;YACzC,MAAM,iBAAiB,GAAG,MAAA,MAAA,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,0CAAE,KAAK,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAA;YAClF,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC7B,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACxC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;gBACjD,IAAI,WAAW,KAAK,KAAK,EAAE;oBACzB,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAA;iBACxB;YACH,CAAC,CAAC,CAAA;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA;QACvD,CAAC,CAAA;QAzBC,MAAM,YAAY,GAAG,MAAA,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,mCAAI,IAAI,CAAA;QAClF,IAAI;YACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;SACvC;QAAC,WAAM;YACN,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;SACjB;QACD,8CAA8C;QAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC/B,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;SACjB;QACD,IAAI,CAAC,MAAM,EAAE,CAAA;QACb,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACpF,CAAC;IAeD,uFAAuF;IAChF,MAAM;;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAClC,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE;gBACzD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;aACzB;SACF;QACD,OAAO,MAAA,IAAI,CAAC,MAAM,mCAAI,SAAS,CAAA;IACjC,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACpC,CAAC;;AA3Cc,wBAAc,GAAG,WAAW,CAAA"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import CommonFields from './CommonFields';
|
|
2
|
-
interface ViewContentFields extends CommonFields {
|
|
1
|
+
import { CommonFields } from './CommonFields';
|
|
2
|
+
export interface ViewContentFields extends CommonFields {
|
|
3
3
|
name: string;
|
|
4
4
|
path: string;
|
|
5
5
|
}
|
|
6
|
-
export default ViewContentFields;
|
|
@@ -1,13 +1,12 @@
|
|
|
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> {
|
|
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
|
+
export declare class XyUserEventHandler<T extends Record<string, unknown>> extends UserEventHandler<T> {
|
|
7
7
|
constructor();
|
|
8
8
|
testStarted(fields: T | TestStartedFields): Promise<void>;
|
|
9
9
|
funnelStarted(fields: T | FunnelStartedFields): Promise<void>;
|
|
10
10
|
viewContent(fields: T | ViewContentFields): Promise<void>;
|
|
11
11
|
userClick(fields: T | UserClickFields): Promise<void>;
|
|
12
12
|
}
|
|
13
|
-
export default XyUserEventHandler;
|
|
@@ -1,52 +1,29 @@
|
|
|
1
|
-
import { __awaiter
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
2
|
import { XyPixel } from './Pixel';
|
|
3
|
-
import UserEventHandler from './UserEventHandler';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return _super.call(this) || this;
|
|
3
|
+
import { UserEventHandler } from './UserEventHandler';
|
|
4
|
+
export class XyUserEventHandler extends UserEventHandler {
|
|
5
|
+
constructor() {
|
|
6
|
+
super();
|
|
8
7
|
}
|
|
9
|
-
|
|
10
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
11
|
-
return
|
|
12
|
-
switch (_a.label) {
|
|
13
|
-
case 0: return [4 /*yield*/, XyPixel.instance.send('TestStarted', fields)];
|
|
14
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
15
|
-
}
|
|
16
|
-
});
|
|
8
|
+
testStarted(fields) {
|
|
9
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
10
|
+
return yield XyPixel.instance.send('TestStarted', fields);
|
|
17
11
|
});
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
21
|
-
return
|
|
22
|
-
switch (_a.label) {
|
|
23
|
-
case 0: return [4 /*yield*/, XyPixel.instance.send('FunnelStarted', fields)];
|
|
24
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
25
|
-
}
|
|
26
|
-
});
|
|
12
|
+
}
|
|
13
|
+
funnelStarted(fields) {
|
|
14
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
15
|
+
return yield XyPixel.instance.send('FunnelStarted', fields);
|
|
27
16
|
});
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
31
|
-
return
|
|
32
|
-
switch (_a.label) {
|
|
33
|
-
case 0: return [4 /*yield*/, XyPixel.instance.send('ViewContent', fields)];
|
|
34
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
35
|
-
}
|
|
36
|
-
});
|
|
17
|
+
}
|
|
18
|
+
viewContent(fields) {
|
|
19
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
return yield XyPixel.instance.send('ViewContent', fields);
|
|
37
21
|
});
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
41
|
-
return
|
|
42
|
-
switch (_a.label) {
|
|
43
|
-
case 0: return [4 /*yield*/, XyPixel.instance.send('ViewPage', fields)];
|
|
44
|
-
case 1: return [2 /*return*/, _a.sent()];
|
|
45
|
-
}
|
|
46
|
-
});
|
|
22
|
+
}
|
|
23
|
+
userClick(fields) {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return yield XyPixel.instance.send('ViewPage', fields);
|
|
47
26
|
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
}(UserEventHandler));
|
|
51
|
-
export default XyUserEventHandler;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
52
29
|
//# sourceMappingURL=XyUserEventHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XyUserEventHandler.js","sourceRoot":"","sources":["../src/XyUserEventHandler.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGjC,OAAO,gBAAgB,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"XyUserEventHandler.js","sourceRoot":"","sources":["../src/XyUserEventHandler.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGrD,MAAM,OAAO,kBAAsD,SAAQ,gBAAmB;IAC5F;QACE,KAAK,EAAE,CAAA;IACT,CAAC;IACY,WAAW,CAAC,MAA6B;;YACpD,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAC3D,CAAC;KAAA;IACY,aAAa,CAAC,MAA+B;;YACxD,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAA;QAC7D,CAAC;KAAA;IACY,WAAW,CAAC,MAA6B;;YACpD,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAA;QAC3D,CAAC;KAAA;IACY,SAAS,CAAC,MAA2B;;YAChD,OAAO,MAAM,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QACxD,CAAC;KAAA;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { UserEventSystem } from './UserEventSystem';
|
|
2
|
+
export interface UserEvent {
|
|
3
|
+
cid: string;
|
|
4
|
+
create_time?: number;
|
|
5
|
+
email?: string;
|
|
6
|
+
email_hash?: string;
|
|
7
|
+
event?: 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?: UserEventSystem;
|
|
17
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { PixelApi, UserEvent } from './Api';
|
|
2
|
+
import { ExIds } from './ExIds';
|
|
3
|
+
export declare class XyPixel {
|
|
4
|
+
pixelId?: string;
|
|
5
|
+
email?: string;
|
|
6
|
+
email_hash?: string | null;
|
|
7
|
+
queue: UserEvent[];
|
|
8
|
+
cid: string;
|
|
9
|
+
exids?: ExIds;
|
|
10
|
+
private queueMutex;
|
|
11
|
+
private constructor();
|
|
12
|
+
identify(email?: string): void;
|
|
13
|
+
private updateFbId;
|
|
14
|
+
private tryFlushQueue;
|
|
15
|
+
private static utmFieldsObj;
|
|
16
|
+
private static utmFields;
|
|
17
|
+
send<T extends Record<string, unknown>>(event: string, fields?: T): Promise<void>;
|
|
18
|
+
private static _instance?;
|
|
19
|
+
static get instance(): XyPixel;
|
|
20
|
+
static init(pixelId: string): XyPixel;
|
|
21
|
+
static api: PixelApi;
|
|
22
|
+
static selectApi(api: PixelApi): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FunnelStartedFields } from './FunnelStartedFields';
|
|
2
|
+
import { TestStartedFields } from './TestStartedFields';
|
|
3
|
+
import { UserClickFields } from './UserClickFields';
|
|
4
|
+
import { ViewContentFields } from './ViewContentFields';
|
|
5
|
+
export 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
|
+
}
|
|
@@ -0,0 +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
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
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
|
+
export 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
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getSystemInfo: () => import("bowser").Parser.ParsedResult | undefined;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './Api';
|
|
2
|
+
export * from './FunnelStartedFields';
|
|
3
|
+
export * from './Pixel';
|
|
4
|
+
export * from './Referrer';
|
|
5
|
+
export * from './TestStartedFields';
|
|
6
|
+
export * from './UniqueUserId';
|
|
7
|
+
export * from './UserClickFields';
|
|
8
|
+
export * from './UserEventHandler';
|
|
9
|
+
export * from './UtmFields';
|
|
10
|
+
export * from './ViewContentFields';
|
|
11
|
+
export * from './XyLabsTrackingEventJson';
|
|
12
|
+
export * from './XyUserEventHandler';
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var axios = require('axios');
|
|
6
|
+
var sdkJs = require('@xylabs/sdk-js');
|
|
7
|
+
var asyncMutex = require('async-mutex');
|
|
8
|
+
var Cookies = require('js-cookie');
|
|
9
|
+
var md5 = require('md5');
|
|
10
|
+
var bowser = require('bowser');
|
|
11
|
+
var randomBytes = require('randombytes');
|
|
12
|
+
var isEqual = require('lodash/isEqual');
|
|
13
|
+
|
|
14
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
|
+
|
|
16
|
+
var axios__default = /*#__PURE__*/_interopDefaultLegacy(axios);
|
|
17
|
+
var Cookies__default = /*#__PURE__*/_interopDefaultLegacy(Cookies);
|
|
18
|
+
var md5__default = /*#__PURE__*/_interopDefaultLegacy(md5);
|
|
19
|
+
var randomBytes__default = /*#__PURE__*/_interopDefaultLegacy(randomBytes);
|
|
20
|
+
var isEqual__default = /*#__PURE__*/_interopDefaultLegacy(isEqual);
|
|
21
|
+
|
|
22
|
+
/*! *****************************************************************************
|
|
23
|
+
Copyright (c) Microsoft Corporation.
|
|
24
|
+
|
|
25
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
26
|
+
purpose with or without fee is hereby granted.
|
|
27
|
+
|
|
28
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
29
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
30
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
31
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
32
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
33
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
34
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
35
|
+
***************************************************************************** */
|
|
36
|
+
|
|
37
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
38
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
39
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
40
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
41
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
42
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
43
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const apiBaseUri = {
|
|
48
|
+
beta: 'https://pixel.xylabs.com',
|
|
49
|
+
local: 'http://localhost:3030',
|
|
50
|
+
prod: 'https://pixel.xylabs.com',
|
|
51
|
+
};
|
|
52
|
+
class PixelApi {
|
|
53
|
+
/* baseUri can either be a preset (prod, beta, local), or a specific uri */
|
|
54
|
+
constructor(baseUri = 'prod') {
|
|
55
|
+
this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri;
|
|
56
|
+
}
|
|
57
|
+
trackEvents(events) {
|
|
58
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
return (yield axios__default["default"].post(this.endPoint, events)).data;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
let systemInfo = undefined;
|
|
65
|
+
const getSystemInfo = () => {
|
|
66
|
+
try {
|
|
67
|
+
systemInfo = systemInfo || bowser.parse(window.navigator.userAgent);
|
|
68
|
+
}
|
|
69
|
+
catch (ex) {
|
|
70
|
+
console.log(`getSystemInfo Error: ${ex}`);
|
|
71
|
+
}
|
|
72
|
+
return systemInfo;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
class Referrer {
|
|
76
|
+
constructor() {
|
|
77
|
+
var _a, _b;
|
|
78
|
+
this.session = (_a = this.getFromSession()) !== null && _a !== void 0 ? _a : document.referrer;
|
|
79
|
+
sessionStorage.setItem(Referrer.storageId, this.session);
|
|
80
|
+
this.local = (_b = this.getFromLocal()) !== null && _b !== void 0 ? _b : document.referrer;
|
|
81
|
+
window.localStorage.setItem(Referrer.storageId, this.local);
|
|
82
|
+
}
|
|
83
|
+
getFromLocal() {
|
|
84
|
+
const value = window.localStorage.getItem(Referrer.storageId);
|
|
85
|
+
if (value && value.length > 0) {
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
getFromSession() {
|
|
90
|
+
const value = sessionStorage.getItem(Referrer.storageId);
|
|
91
|
+
if (value && value.length > 0) {
|
|
92
|
+
return value;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
toJson() {
|
|
96
|
+
if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {
|
|
97
|
+
return {
|
|
98
|
+
local: this.local,
|
|
99
|
+
session: this.session,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
Referrer.storageId = '_coin_referrer';
|
|
105
|
+
|
|
106
|
+
class UniqueUserId {
|
|
107
|
+
constructor() {
|
|
108
|
+
var _a;
|
|
109
|
+
this.id = (_a = window.localStorage.getItem(UniqueUserId.localStorageId)) !== null && _a !== void 0 ? _a : this.generateId();
|
|
110
|
+
window.localStorage.setItem(UniqueUserId.localStorageId, this.id);
|
|
111
|
+
}
|
|
112
|
+
generateId() {
|
|
113
|
+
return randomBytes__default["default"](16).toString('base64');
|
|
114
|
+
}
|
|
115
|
+
toString() {
|
|
116
|
+
return this.id;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
UniqueUserId.localStorageId = '_coin_cid';
|
|
120
|
+
|
|
121
|
+
class UtmFields {
|
|
122
|
+
constructor() {
|
|
123
|
+
var _a;
|
|
124
|
+
this.fields = [];
|
|
125
|
+
this.getUtmRecord = () => {
|
|
126
|
+
var _a, _b;
|
|
127
|
+
const record = {};
|
|
128
|
+
const parsedQueryString = (_b = (_a = document.location.search.split('?')[1]) === null || _a === void 0 ? void 0 : _a.split('&')) !== null && _b !== void 0 ? _b : [];
|
|
129
|
+
parsedQueryString.map((item) => {
|
|
130
|
+
const [fullKey, value] = item.split('=');
|
|
131
|
+
const [keyCategory, keyName] = fullKey.split('_');
|
|
132
|
+
if (keyCategory === 'utm') {
|
|
133
|
+
record[keyName] = value;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return Object.keys(record).length > 0 ? record : null;
|
|
137
|
+
};
|
|
138
|
+
const storedString = (_a = window.localStorage.getItem(UtmFields.localStorageId)) !== null && _a !== void 0 ? _a : '[]';
|
|
139
|
+
try {
|
|
140
|
+
this.fields = JSON.parse(storedString);
|
|
141
|
+
}
|
|
142
|
+
catch (_b) {
|
|
143
|
+
this.fields = [];
|
|
144
|
+
}
|
|
145
|
+
//this clears the old object version if needed
|
|
146
|
+
if (!Array.isArray(this.fields)) {
|
|
147
|
+
this.fields = [];
|
|
148
|
+
}
|
|
149
|
+
this.update();
|
|
150
|
+
window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields));
|
|
151
|
+
}
|
|
152
|
+
//check the query string and if there an new/updated utm values, add them to the fields
|
|
153
|
+
update() {
|
|
154
|
+
var _a;
|
|
155
|
+
const record = this.getUtmRecord();
|
|
156
|
+
if (record) {
|
|
157
|
+
if (!isEqual__default["default"](this.fields[this.fields.length - 1], record)) {
|
|
158
|
+
this.fields.push(record);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return (_a = this.fields) !== null && _a !== void 0 ? _a : undefined;
|
|
162
|
+
}
|
|
163
|
+
toString() {
|
|
164
|
+
return JSON.stringify(this.fields);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
UtmFields.localStorageId = '_coin_utm';
|
|
168
|
+
|
|
169
|
+
const emailHashLocalStorageName = 'xy_email_hash';
|
|
170
|
+
class XyPixel {
|
|
171
|
+
constructor(pixelId) {
|
|
172
|
+
this.queue = [];
|
|
173
|
+
this.cid = new UniqueUserId().id;
|
|
174
|
+
this.queueMutex = new asyncMutex.Mutex();
|
|
175
|
+
this.pixelId = pixelId;
|
|
176
|
+
this.email_hash = localStorage.getItem(emailHashLocalStorageName);
|
|
177
|
+
}
|
|
178
|
+
identify(email) {
|
|
179
|
+
this.email = email;
|
|
180
|
+
this.email_hash = email ? md5__default["default"](email) : undefined;
|
|
181
|
+
if (this.email_hash) {
|
|
182
|
+
localStorage.setItem(emailHashLocalStorageName, this.email_hash);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
updateFbId() {
|
|
186
|
+
var _a;
|
|
187
|
+
this.exids = Object.assign({
|
|
188
|
+
fbc: Cookies__default["default"].get('_fbc'),
|
|
189
|
+
fbp: Cookies__default["default"].get('_fbp'),
|
|
190
|
+
ga: Cookies__default["default"].get('_ga'),
|
|
191
|
+
gclid: Cookies__default["default"].get('_gclid'),
|
|
192
|
+
rdt_uid: Cookies__default["default"].get('rdt_uid'),
|
|
193
|
+
scid: Cookies__default["default"].get('_scid'),
|
|
194
|
+
tt_sessionId: (_a = sessionStorage.getItem('tt_sessionId')) !== null && _a !== void 0 ? _a : undefined,
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
tryFlushQueue() {
|
|
198
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
199
|
+
yield this.queueMutex.runExclusive(() => __awaiter(this, void 0, void 0, function* () {
|
|
200
|
+
if (this.queue.length === 0)
|
|
201
|
+
return;
|
|
202
|
+
const api = XyPixel.api;
|
|
203
|
+
if (api) {
|
|
204
|
+
const events = this.queue;
|
|
205
|
+
this.queue = [];
|
|
206
|
+
try {
|
|
207
|
+
yield api.trackEvents(events);
|
|
208
|
+
}
|
|
209
|
+
catch (ex) {
|
|
210
|
+
if (events) {
|
|
211
|
+
//put it back since it failed
|
|
212
|
+
this.queue = this.queue.concat(events);
|
|
213
|
+
}
|
|
214
|
+
console.error(ex);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}));
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
send(event, fields) {
|
|
221
|
+
var _a;
|
|
222
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
223
|
+
this.updateFbId();
|
|
224
|
+
const utm = XyPixel.utmFields().update();
|
|
225
|
+
const referrer = new Referrer();
|
|
226
|
+
this.queue.push(Object.assign({
|
|
227
|
+
cid: this.cid,
|
|
228
|
+
create_time: Date.now(),
|
|
229
|
+
email_hash: (_a = this.email_hash) !== null && _a !== void 0 ? _a : undefined,
|
|
230
|
+
event,
|
|
231
|
+
exids: this.exids,
|
|
232
|
+
fields,
|
|
233
|
+
host: document.location.host,
|
|
234
|
+
pathname: document.location.pathname,
|
|
235
|
+
pixel: this.pixelId,
|
|
236
|
+
referrer: referrer.toJson(),
|
|
237
|
+
system: getSystemInfo(),
|
|
238
|
+
utm,
|
|
239
|
+
}));
|
|
240
|
+
yield this.tryFlushQueue();
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
static get instance() {
|
|
244
|
+
return sdkJs.assertEx(this._instance, 'XyPixel uninitialized');
|
|
245
|
+
}
|
|
246
|
+
static init(pixelId) {
|
|
247
|
+
this._instance = new XyPixel(pixelId);
|
|
248
|
+
return this._instance;
|
|
249
|
+
}
|
|
250
|
+
static selectApi(api) {
|
|
251
|
+
this.api = api;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
XyPixel.utmFields = () => {
|
|
255
|
+
if (XyPixel.utmFieldsObj === undefined) {
|
|
256
|
+
XyPixel.utmFieldsObj = new UtmFields();
|
|
257
|
+
}
|
|
258
|
+
return XyPixel.utmFieldsObj;
|
|
259
|
+
};
|
|
260
|
+
XyPixel.api = new PixelApi();
|
|
261
|
+
|
|
262
|
+
class UserEventHandler {
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
class XyUserEventHandler extends UserEventHandler {
|
|
266
|
+
constructor() {
|
|
267
|
+
super();
|
|
268
|
+
}
|
|
269
|
+
testStarted(fields) {
|
|
270
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
271
|
+
return yield XyPixel.instance.send('TestStarted', fields);
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
funnelStarted(fields) {
|
|
275
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
276
|
+
return yield XyPixel.instance.send('FunnelStarted', fields);
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
viewContent(fields) {
|
|
280
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
281
|
+
return yield XyPixel.instance.send('ViewContent', fields);
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
userClick(fields) {
|
|
285
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
286
|
+
return yield XyPixel.instance.send('ViewPage', fields);
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
exports.PixelApi = PixelApi;
|
|
292
|
+
exports.Referrer = Referrer;
|
|
293
|
+
exports.UniqueUserId = UniqueUserId;
|
|
294
|
+
exports.UserEventHandler = UserEventHandler;
|
|
295
|
+
exports.UtmFields = UtmFields;
|
|
296
|
+
exports.XyPixel = XyPixel;
|
|
297
|
+
exports.XyUserEventHandler = XyUserEventHandler;
|
|
298
|
+
//# sourceMappingURL=index.js.map
|