@xylabs/pixel 1.1.6 → 1.2.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.
- package/dist/Api/Api.d.ts +0 -1
- package/dist/Api/Api.js +22 -21
- package/dist/Api/Api.js.map +1 -1
- package/dist/Api/UserEvent.d.ts +0 -1
- package/dist/Api/UserEventSystem.d.ts +0 -1
- package/dist/Api/index.d.ts +0 -1
- package/dist/CommonFields.d.ts +0 -1
- package/dist/ExIds.d.ts +0 -1
- package/dist/FunnelStartedFields.d.ts +0 -1
- package/dist/Pixel.d.ts +2 -4
- package/dist/Pixel.js +99 -74
- package/dist/Pixel.js.map +1 -1
- package/dist/Referrer.d.ts +0 -1
- package/dist/Referrer.js +14 -13
- package/dist/Referrer.js.map +1 -1
- package/dist/TestStartedFields.d.ts +0 -1
- package/dist/UniqueUserId.d.ts +0 -1
- package/dist/UniqueUserId.js +11 -10
- package/dist/UniqueUserId.js.map +1 -1
- package/dist/UserClickFields.d.ts +0 -1
- package/dist/UserEventHandler.d.ts +0 -1
- package/dist/UserEventHandler.js +5 -2
- package/dist/UserEventHandler.js.map +1 -1
- package/dist/UtmFields.d.ts +0 -1
- package/dist/UtmFields.js +18 -17
- package/dist/UtmFields.js.map +1 -1
- package/dist/ViewContentFields.d.ts +0 -1
- package/dist/XyLabsTrackingEventJson.d.ts +19 -0
- package/dist/XyLabsTrackingEventJson.js +2 -0
- package/dist/XyLabsTrackingEventJson.js.map +1 -0
- package/dist/XyUserEventHandler.d.ts +0 -1
- package/dist/XyUserEventHandler.js +44 -30
- package/dist/XyUserEventHandler.js.map +1 -1
- package/dist/esm2017/index.d.ts +1 -0
- package/dist/esm2017/index.js +238 -0
- package/dist/esm2017/index.js.map +1 -0
- package/dist/esm2017/index.node.d.ts +1 -0
- package/dist/esm2017/src/Api/Api.d.ts +7 -0
- package/dist/esm2017/src/Api/UserEvent.d.ts +18 -0
- package/dist/esm2017/src/Api/UserEventSystem.d.ts +3 -0
- package/dist/esm2017/src/Api/index.d.ts +5 -0
- package/dist/esm2017/src/CommonFields.d.ts +5 -0
- package/dist/esm2017/src/ExIds.d.ts +10 -0
- package/dist/esm2017/src/FunnelStartedFields.d.ts +5 -0
- package/dist/esm2017/src/Pixel.d.ts +23 -0
- package/dist/esm2017/src/Pixel.spec.d.ts +1 -0
- package/dist/esm2017/src/Referrer.d.ts +13 -0
- package/dist/esm2017/src/TestStartedFields.d.ts +5 -0
- package/dist/esm2017/src/UniqueUserId.d.ts +8 -0
- package/dist/esm2017/src/UserClickFields.d.ts +6 -0
- package/dist/esm2017/src/UserEventHandler.d.ts +11 -0
- package/dist/esm2017/src/UtmFields.d.ts +9 -0
- package/dist/esm2017/src/ViewContentFields.d.ts +6 -0
- package/dist/esm2017/src/XyLabsTrackingEventJson.d.ts +19 -0
- package/dist/esm2017/src/XyUserEventHandler.d.ts +13 -0
- package/dist/esm2017/src/getSystemInfo.d.ts +3 -0
- package/dist/esm2017/src/index.d.ts +14 -0
- package/dist/esm5/index.d.ts +1 -0
- package/dist/esm5/index.js +400 -0
- package/dist/esm5/index.js.map +1 -0
- package/dist/esm5/index.node.d.ts +1 -0
- package/dist/esm5/src/Api/Api.d.ts +7 -0
- package/dist/esm5/src/Api/UserEvent.d.ts +18 -0
- package/dist/esm5/src/Api/UserEventSystem.d.ts +3 -0
- package/dist/esm5/src/Api/index.d.ts +5 -0
- package/dist/esm5/src/CommonFields.d.ts +5 -0
- package/dist/esm5/src/ExIds.d.ts +10 -0
- package/dist/esm5/src/FunnelStartedFields.d.ts +5 -0
- package/dist/esm5/src/Pixel.d.ts +23 -0
- package/dist/esm5/src/Pixel.spec.d.ts +1 -0
- package/dist/esm5/src/Referrer.d.ts +13 -0
- package/dist/esm5/src/TestStartedFields.d.ts +5 -0
- package/dist/esm5/src/UniqueUserId.d.ts +8 -0
- package/dist/esm5/src/UserClickFields.d.ts +6 -0
- package/dist/esm5/src/UserEventHandler.d.ts +11 -0
- package/dist/esm5/src/UtmFields.d.ts +9 -0
- package/dist/esm5/src/ViewContentFields.d.ts +6 -0
- package/dist/esm5/src/XyLabsTrackingEventJson.d.ts +19 -0
- package/dist/esm5/src/XyUserEventHandler.d.ts +13 -0
- package/dist/esm5/src/getSystemInfo.d.ts +3 -0
- package/dist/esm5/src/index.d.ts +14 -0
- package/dist/getSystemInfo.d.ts +0 -1
- package/dist/getSystemInfo.js +3 -3
- package/dist/getSystemInfo.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/node/index.d.ts +1 -0
- package/dist/node/index.js +419 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/index.node.d.ts +1 -0
- package/dist/node/src/Api/Api.d.ts +7 -0
- package/dist/node/src/Api/UserEvent.d.ts +18 -0
- package/dist/node/src/Api/UserEventSystem.d.ts +3 -0
- package/dist/node/src/Api/index.d.ts +5 -0
- package/dist/node/src/CommonFields.d.ts +5 -0
- package/dist/node/src/ExIds.d.ts +10 -0
- package/dist/node/src/FunnelStartedFields.d.ts +5 -0
- package/dist/node/src/Pixel.d.ts +23 -0
- package/dist/node/src/Pixel.spec.d.ts +1 -0
- package/dist/node/src/Referrer.d.ts +13 -0
- package/dist/node/src/TestStartedFields.d.ts +5 -0
- package/dist/node/src/UniqueUserId.d.ts +8 -0
- package/dist/node/src/UserClickFields.d.ts +6 -0
- package/dist/node/src/UserEventHandler.d.ts +11 -0
- package/dist/node/src/UtmFields.d.ts +9 -0
- package/dist/node/src/ViewContentFields.d.ts +6 -0
- package/dist/node/src/XyLabsTrackingEventJson.d.ts +19 -0
- package/dist/node/src/XyUserEventHandler.d.ts +13 -0
- package/dist/node/src/getSystemInfo.d.ts +3 -0
- package/dist/node/src/index.d.ts +14 -0
- package/dist/node-esm/index.d.ts +1 -0
- package/dist/node-esm/index.js +238 -0
- package/dist/node-esm/index.js.map +1 -0
- package/dist/node-esm/index.node.d.ts +1 -0
- package/dist/node-esm/package.json +1 -0
- package/dist/node-esm/src/Api/Api.d.ts +7 -0
- package/dist/node-esm/src/Api/UserEvent.d.ts +18 -0
- package/dist/node-esm/src/Api/UserEventSystem.d.ts +3 -0
- package/dist/node-esm/src/Api/index.d.ts +5 -0
- package/dist/node-esm/src/CommonFields.d.ts +5 -0
- package/dist/node-esm/src/ExIds.d.ts +10 -0
- package/dist/node-esm/src/FunnelStartedFields.d.ts +5 -0
- package/dist/node-esm/src/Pixel.d.ts +23 -0
- package/dist/node-esm/src/Pixel.spec.d.ts +1 -0
- package/dist/node-esm/src/Referrer.d.ts +13 -0
- package/dist/node-esm/src/TestStartedFields.d.ts +5 -0
- package/dist/node-esm/src/UniqueUserId.d.ts +8 -0
- package/dist/node-esm/src/UserClickFields.d.ts +6 -0
- package/dist/node-esm/src/UserEventHandler.d.ts +11 -0
- package/dist/node-esm/src/UtmFields.d.ts +9 -0
- package/dist/node-esm/src/ViewContentFields.d.ts +6 -0
- package/dist/node-esm/src/XyLabsTrackingEventJson.d.ts +19 -0
- package/dist/node-esm/src/XyUserEventHandler.d.ts +13 -0
- package/dist/node-esm/src/getSystemInfo.d.ts +3 -0
- package/dist/node-esm/src/index.d.ts +14 -0
- package/index.node.ts +1 -0
- package/index.ts +1 -0
- package/jest.config.cjs +1 -1
- package/package.json +35 -12
- package/rollup.config.js +123 -0
- package/src/Api/Api.ts +6 -4
- package/src/Pixel.spec.ts +10 -0
- package/src/Pixel.ts +2 -4
- package/src/Referrer.ts +2 -2
- package/src/UniqueUserId.ts +2 -2
- package/src/UtmFields.ts +2 -2
- package/src/XyLabsTrackingEventJson.ts +19 -0
- package/src/XyUserEventHandler.ts +1 -1
- package/src/index.ts +3 -2
- package/dist/Api/Api.d.ts.map +0 -1
- package/dist/Api/UserEvent.d.ts.map +0 -1
- package/dist/Api/UserEventSystem.d.ts.map +0 -1
- package/dist/Api/index.d.ts.map +0 -1
- package/dist/CommonFields.d.ts.map +0 -1
- package/dist/ExIds.d.ts.map +0 -1
- package/dist/FunnelStartedFields.d.ts.map +0 -1
- package/dist/Pixel.d.ts.map +0 -1
- package/dist/Referrer.d.ts.map +0 -1
- package/dist/TestStartedFields.d.ts.map +0 -1
- package/dist/UniqueUserId.d.ts.map +0 -1
- package/dist/UserClickFields.d.ts.map +0 -1
- package/dist/UserEventHandler.d.ts.map +0 -1
- package/dist/UtmFields.d.ts.map +0 -1
- package/dist/ViewContentFields.d.ts.map +0 -1
- package/dist/XyUserEventHandler.d.ts.map +0 -1
- package/dist/getSystemInfo.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
|
@@ -0,0 +1,400 @@
|
|
|
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 Bowser 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
|
+
var UtmFields = /** @class */ (function () {
|
|
65
|
+
function UtmFields() {
|
|
66
|
+
var _a;
|
|
67
|
+
this.fields = [];
|
|
68
|
+
this.getUtmRecord = function () {
|
|
69
|
+
var _a, _b;
|
|
70
|
+
var record = {};
|
|
71
|
+
var parsedQueryString = (_b = (_a = document.location.search.split('?')[1]) === null || _a === void 0 ? void 0 : _a.split('&')) !== null && _b !== void 0 ? _b : [];
|
|
72
|
+
parsedQueryString.map(function (item) {
|
|
73
|
+
var _a = item.split('='), fullKey = _a[0], value = _a[1];
|
|
74
|
+
var _b = fullKey.split('_'), keyCategory = _b[0], keyName = _b[1];
|
|
75
|
+
if (keyCategory === 'utm') {
|
|
76
|
+
record[keyName] = value;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
return Object.keys(record).length > 0 ? record : null;
|
|
80
|
+
};
|
|
81
|
+
var storedString = (_a = window.localStorage.getItem(UtmFields.localStorageId)) !== null && _a !== void 0 ? _a : '[]';
|
|
82
|
+
try {
|
|
83
|
+
this.fields = JSON.parse(storedString);
|
|
84
|
+
}
|
|
85
|
+
catch (_b) {
|
|
86
|
+
this.fields = [];
|
|
87
|
+
}
|
|
88
|
+
//this clears the old object version if needed
|
|
89
|
+
if (!Array.isArray(this.fields)) {
|
|
90
|
+
this.fields = [];
|
|
91
|
+
}
|
|
92
|
+
this.update();
|
|
93
|
+
window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields));
|
|
94
|
+
}
|
|
95
|
+
//check the query string and if there an new/updated utm values, add them to the fields
|
|
96
|
+
UtmFields.prototype.update = function () {
|
|
97
|
+
var _a;
|
|
98
|
+
var record = this.getUtmRecord();
|
|
99
|
+
if (record) {
|
|
100
|
+
if (!isEqual(this.fields[this.fields.length - 1], record)) {
|
|
101
|
+
this.fields.push(record);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return (_a = this.fields) !== null && _a !== void 0 ? _a : undefined;
|
|
105
|
+
};
|
|
106
|
+
UtmFields.prototype.toString = function () {
|
|
107
|
+
return JSON.stringify(this.fields);
|
|
108
|
+
};
|
|
109
|
+
UtmFields.localStorageId = '_coin_utm';
|
|
110
|
+
return UtmFields;
|
|
111
|
+
}());
|
|
112
|
+
|
|
113
|
+
/*! *****************************************************************************
|
|
114
|
+
Copyright (c) Microsoft Corporation.
|
|
115
|
+
|
|
116
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
117
|
+
purpose with or without fee is hereby granted.
|
|
118
|
+
|
|
119
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
120
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
121
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
122
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
123
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
124
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
125
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
126
|
+
***************************************************************************** */
|
|
127
|
+
/* global Reflect, Promise */
|
|
128
|
+
|
|
129
|
+
var extendStatics = function(d, b) {
|
|
130
|
+
extendStatics = Object.setPrototypeOf ||
|
|
131
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
132
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
133
|
+
return extendStatics(d, b);
|
|
134
|
+
};
|
|
135
|
+
|
|
136
|
+
function __extends(d, b) {
|
|
137
|
+
if (typeof b !== "function" && b !== null)
|
|
138
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
139
|
+
extendStatics(d, b);
|
|
140
|
+
function __() { this.constructor = d; }
|
|
141
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
var __assign = function() {
|
|
145
|
+
__assign = Object.assign || function __assign(t) {
|
|
146
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
147
|
+
s = arguments[i];
|
|
148
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
|
|
149
|
+
}
|
|
150
|
+
return t;
|
|
151
|
+
};
|
|
152
|
+
return __assign.apply(this, arguments);
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
function __awaiter(thisArg, _arguments, P, generator) {
|
|
156
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
157
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
158
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
159
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
160
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
161
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
function __generator(thisArg, body) {
|
|
166
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
167
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
168
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
169
|
+
function step(op) {
|
|
170
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
171
|
+
while (_) try {
|
|
172
|
+
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;
|
|
173
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
174
|
+
switch (op[0]) {
|
|
175
|
+
case 0: case 1: t = op; break;
|
|
176
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
177
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
178
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
179
|
+
default:
|
|
180
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
181
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
182
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
183
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
184
|
+
if (t[2]) _.ops.pop();
|
|
185
|
+
_.trys.pop(); continue;
|
|
186
|
+
}
|
|
187
|
+
op = body.call(thisArg, _);
|
|
188
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
189
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
var apiBaseUri = {
|
|
194
|
+
beta: 'https://pixel.xylabs.com',
|
|
195
|
+
local: 'http://localhost:3030',
|
|
196
|
+
prod: 'https://pixel.xylabs.com',
|
|
197
|
+
};
|
|
198
|
+
var PixelApi = /** @class */ (function () {
|
|
199
|
+
/* baseUri can either be a preset (prod, beta, local), or a specific uri */
|
|
200
|
+
function PixelApi(baseUri) {
|
|
201
|
+
if (baseUri === void 0) { baseUri = 'prod'; }
|
|
202
|
+
console.log("baseUri: ".concat(baseUri));
|
|
203
|
+
this.endPoint = apiBaseUri[baseUri] ? "".concat(apiBaseUri[baseUri], "/t/event/queue") : baseUri;
|
|
204
|
+
console.log("EndPoint: ".concat(this.endPoint));
|
|
205
|
+
}
|
|
206
|
+
PixelApi.prototype.trackEvents = function (events) {
|
|
207
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
208
|
+
return __generator(this, function (_a) {
|
|
209
|
+
switch (_a.label) {
|
|
210
|
+
case 0: return [4 /*yield*/, axios.post(this.endPoint, events)];
|
|
211
|
+
case 1: return [2 /*return*/, (_a.sent()).data];
|
|
212
|
+
}
|
|
213
|
+
});
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
return PixelApi;
|
|
217
|
+
}());
|
|
218
|
+
|
|
219
|
+
var systemInfo = undefined;
|
|
220
|
+
var getSystemInfo = function () {
|
|
221
|
+
try {
|
|
222
|
+
systemInfo = systemInfo || Bowser.parse(window.navigator.userAgent);
|
|
223
|
+
}
|
|
224
|
+
catch (ex) {
|
|
225
|
+
console.log("getSystemInfo Error: ".concat(ex));
|
|
226
|
+
}
|
|
227
|
+
return systemInfo;
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
var XyPixel = /** @class */ (function () {
|
|
231
|
+
function XyPixel(pixelId) {
|
|
232
|
+
this.queue = [];
|
|
233
|
+
this.cid = new UniqueUserId().id;
|
|
234
|
+
this.queueMutex = new Mutex();
|
|
235
|
+
this.pixelId = pixelId;
|
|
236
|
+
}
|
|
237
|
+
XyPixel.prototype.identify = function (email) {
|
|
238
|
+
this.email = email;
|
|
239
|
+
this.email_hash = email ? md5(email) : undefined;
|
|
240
|
+
};
|
|
241
|
+
XyPixel.prototype.updateFbId = function () {
|
|
242
|
+
var _a;
|
|
243
|
+
this.exids = __assign({
|
|
244
|
+
fbc: Cookies.get('_fbc'),
|
|
245
|
+
fbp: Cookies.get('_fbp'),
|
|
246
|
+
ga: Cookies.get('_ga'),
|
|
247
|
+
gclid: Cookies.get('_gclid'),
|
|
248
|
+
rdt_uid: Cookies.get('rdt_uid'),
|
|
249
|
+
scid: Cookies.get('_scid'),
|
|
250
|
+
tt_sessionId: (_a = sessionStorage.getItem('tt_sessionId')) !== null && _a !== void 0 ? _a : undefined,
|
|
251
|
+
});
|
|
252
|
+
};
|
|
253
|
+
XyPixel.prototype.tryFlushQueue = function () {
|
|
254
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
255
|
+
var _this = this;
|
|
256
|
+
return __generator(this, function (_a) {
|
|
257
|
+
switch (_a.label) {
|
|
258
|
+
case 0: return [4 /*yield*/, this.queueMutex.runExclusive(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
259
|
+
var api, events, ex_1;
|
|
260
|
+
return __generator(this, function (_a) {
|
|
261
|
+
switch (_a.label) {
|
|
262
|
+
case 0:
|
|
263
|
+
if (this.queue.length === 0)
|
|
264
|
+
return [2 /*return*/];
|
|
265
|
+
api = XyPixel.api;
|
|
266
|
+
if (!api) return [3 /*break*/, 4];
|
|
267
|
+
events = this.queue;
|
|
268
|
+
this.queue = [];
|
|
269
|
+
_a.label = 1;
|
|
270
|
+
case 1:
|
|
271
|
+
_a.trys.push([1, 3, , 4]);
|
|
272
|
+
return [4 /*yield*/, api.trackEvents(events)];
|
|
273
|
+
case 2:
|
|
274
|
+
_a.sent();
|
|
275
|
+
return [3 /*break*/, 4];
|
|
276
|
+
case 3:
|
|
277
|
+
ex_1 = _a.sent();
|
|
278
|
+
if (events) {
|
|
279
|
+
//put it back since it failed
|
|
280
|
+
this.queue = this.queue.concat(events);
|
|
281
|
+
}
|
|
282
|
+
console.error(ex_1);
|
|
283
|
+
return [3 /*break*/, 4];
|
|
284
|
+
case 4: return [2 /*return*/];
|
|
285
|
+
}
|
|
286
|
+
});
|
|
287
|
+
}); })];
|
|
288
|
+
case 1:
|
|
289
|
+
_a.sent();
|
|
290
|
+
return [2 /*return*/];
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
};
|
|
295
|
+
XyPixel.prototype.send = function (event, fields) {
|
|
296
|
+
var _a;
|
|
297
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
298
|
+
var utm, referrer;
|
|
299
|
+
return __generator(this, function (_b) {
|
|
300
|
+
switch (_b.label) {
|
|
301
|
+
case 0:
|
|
302
|
+
this.updateFbId();
|
|
303
|
+
utm = XyPixel.utmFields().update();
|
|
304
|
+
referrer = new Referrer();
|
|
305
|
+
this.queue.push(__assign({
|
|
306
|
+
cid: this.cid,
|
|
307
|
+
create_time: Date.now(),
|
|
308
|
+
email_hash: (_a = this.email_hash) !== null && _a !== void 0 ? _a : undefined,
|
|
309
|
+
event: event,
|
|
310
|
+
exids: this.exids,
|
|
311
|
+
fields: fields,
|
|
312
|
+
host: document.location.host,
|
|
313
|
+
pathname: document.location.pathname,
|
|
314
|
+
pixel: this.pixelId,
|
|
315
|
+
referrer: referrer.toJson(),
|
|
316
|
+
system: getSystemInfo(),
|
|
317
|
+
utm: utm,
|
|
318
|
+
}));
|
|
319
|
+
return [4 /*yield*/, this.tryFlushQueue()];
|
|
320
|
+
case 1:
|
|
321
|
+
_b.sent();
|
|
322
|
+
return [2 /*return*/];
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
});
|
|
326
|
+
};
|
|
327
|
+
Object.defineProperty(XyPixel, "instance", {
|
|
328
|
+
get: function () {
|
|
329
|
+
return assertEx(this._instance, 'XyPixel uninitialized');
|
|
330
|
+
},
|
|
331
|
+
enumerable: false,
|
|
332
|
+
configurable: true
|
|
333
|
+
});
|
|
334
|
+
XyPixel.init = function (pixelId) {
|
|
335
|
+
this._instance = new XyPixel(pixelId);
|
|
336
|
+
return this._instance;
|
|
337
|
+
};
|
|
338
|
+
XyPixel.selectApi = function (api) {
|
|
339
|
+
this.api = api;
|
|
340
|
+
};
|
|
341
|
+
XyPixel.utmFields = function () {
|
|
342
|
+
if (XyPixel.utmFieldsObj === undefined) {
|
|
343
|
+
XyPixel.utmFieldsObj = new UtmFields();
|
|
344
|
+
}
|
|
345
|
+
return XyPixel.utmFieldsObj;
|
|
346
|
+
};
|
|
347
|
+
XyPixel.api = new PixelApi();
|
|
348
|
+
return XyPixel;
|
|
349
|
+
}());
|
|
350
|
+
|
|
351
|
+
var XyUserEventHandler = /** @class */ (function (_super) {
|
|
352
|
+
__extends(XyUserEventHandler, _super);
|
|
353
|
+
function XyUserEventHandler() {
|
|
354
|
+
return _super.call(this) || this;
|
|
355
|
+
}
|
|
356
|
+
XyUserEventHandler.prototype.testStarted = function (fields) {
|
|
357
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
358
|
+
return __generator(this, function (_a) {
|
|
359
|
+
switch (_a.label) {
|
|
360
|
+
case 0: return [4 /*yield*/, XyPixel.instance.send('TestStarted', fields)];
|
|
361
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
});
|
|
365
|
+
};
|
|
366
|
+
XyUserEventHandler.prototype.funnelStarted = function (fields) {
|
|
367
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
368
|
+
return __generator(this, function (_a) {
|
|
369
|
+
switch (_a.label) {
|
|
370
|
+
case 0: return [4 /*yield*/, XyPixel.instance.send('FunnelStarted', fields)];
|
|
371
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
372
|
+
}
|
|
373
|
+
});
|
|
374
|
+
});
|
|
375
|
+
};
|
|
376
|
+
XyUserEventHandler.prototype.viewContent = function (fields) {
|
|
377
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
378
|
+
return __generator(this, function (_a) {
|
|
379
|
+
switch (_a.label) {
|
|
380
|
+
case 0: return [4 /*yield*/, XyPixel.instance.send('ViewContent', fields)];
|
|
381
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
});
|
|
385
|
+
};
|
|
386
|
+
XyUserEventHandler.prototype.userClick = function (fields) {
|
|
387
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
388
|
+
return __generator(this, function (_a) {
|
|
389
|
+
switch (_a.label) {
|
|
390
|
+
case 0: return [4 /*yield*/, XyPixel.instance.send('ViewPage', fields)];
|
|
391
|
+
case 1: return [2 /*return*/, _a.sent()];
|
|
392
|
+
}
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
};
|
|
396
|
+
return XyUserEventHandler;
|
|
397
|
+
}(UserEventHandler));
|
|
398
|
+
|
|
399
|
+
export { PixelApi, Referrer, UniqueUserId, UserEventHandler, UtmFields, XyPixel, XyUserEventHandler };
|
|
400
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/Referrer.ts","../../src/UniqueUserId.ts","../../src/UserEventHandler.ts","../../src/UtmFields.ts","../../src/Api/Api.ts","../../src/getSystemInfo.ts","../../src/Pixel.ts","../../src/XyUserEventHandler.ts"],"sourcesContent":["class Referrer {\n private static storageId = '_coin_referrer'\n public local: string\n public session: string\n constructor() {\n this.session = this.getFromSession() ?? document.referrer\n sessionStorage.setItem(Referrer.storageId, this.session)\n this.local = this.getFromLocal() ?? document.referrer\n window.localStorage.setItem(Referrer.storageId, this.local)\n }\n\n private getFromLocal() {\n const value = window.localStorage.getItem(Referrer.storageId)\n if (value && value.length > 0) {\n return value\n }\n }\n\n private getFromSession() {\n const value = sessionStorage.getItem(Referrer.storageId)\n if (value && value.length > 0) {\n return value\n }\n }\n\n public toJson() {\n if ((this.local && this.local.length > 0) || (this.session && this.session.length > 0)) {\n return {\n local: this.local,\n session: this.session,\n }\n }\n }\n}\n\nexport default Referrer\n","import randomBytes from 'randombytes'\n\nclass UniqueUserId {\n private static localStorageId = '_coin_cid'\n public id: string\n constructor() {\n this.id = window.localStorage.getItem(UniqueUserId.localStorageId) ?? this.generateId()\n window.localStorage.setItem(UniqueUserId.localStorageId, this.id)\n }\n private generateId() {\n return randomBytes(16).toString('base64')\n }\n\n public toString() {\n return this.id\n }\n}\n\nexport default UniqueUserId\n","import FunnelStartedFields from './FunnelStartedFields'\nimport TestStartedFields from './TestStartedFields'\nimport UserClickFields from './UserClickFields'\nimport ViewContentFields from './ViewContentFields'\n\nabstract class UserEventHandler<T> {\n abstract testStarted(fields: T | TestStartedFields): Promise<void>\n abstract funnelStarted(fields: T | FunnelStartedFields): Promise<void>\n abstract viewContent(fields: T | ViewContentFields): Promise<void>\n abstract userClick(fields: T | UserClickFields): Promise<void>\n}\n\nexport default UserEventHandler\n","import isEqual from 'lodash/isEqual'\n\nclass UtmFields {\n private static localStorageId = '_coin_utm'\n public fields: Record<string, string>[] = []\n constructor() {\n const storedString = window.localStorage.getItem(UtmFields.localStorageId) ?? '[]'\n try {\n this.fields = JSON.parse(storedString)\n } catch {\n this.fields = []\n }\n //this clears the old object version if needed\n if (!Array.isArray(this.fields)) {\n this.fields = []\n }\n this.update()\n window.localStorage.setItem(UtmFields.localStorageId, JSON.stringify(this.fields))\n }\n\n public getUtmRecord = () => {\n const record: Record<string, string> = {}\n const parsedQueryString = document.location.search.split('?')[1]?.split('&') ?? []\n parsedQueryString.map((item) => {\n const [fullKey, value] = item.split('=')\n const [keyCategory, keyName] = fullKey.split('_')\n if (keyCategory === 'utm') {\n record[keyName] = value\n }\n })\n return Object.keys(record).length > 0 ? record : null\n }\n\n //check the query string and if there an new/updated utm values, add them to the fields\n public update() {\n const record = this.getUtmRecord()\n if (record) {\n if (!isEqual(this.fields[this.fields.length - 1], record)) {\n this.fields.push(record)\n }\n }\n return this.fields ?? undefined\n }\n\n public toString() {\n return JSON.stringify(this.fields)\n }\n}\n\nexport default UtmFields\n","import axios from 'axios'\n\nimport UserEvent from './UserEvent'\n\nconst apiBaseUri: Record<string, string> = {\n beta: 'https://pixel.xylabs.com',\n local: 'http://localhost:3030',\n prod: 'https://pixel.xylabs.com',\n}\n\nclass PixelApi {\n private endPoint: string\n\n /* baseUri can either be a preset (prod, beta, local), or a specific uri */\n constructor(baseUri = 'prod') {\n console.log(`baseUri: ${baseUri}`)\n this.endPoint = apiBaseUri[baseUri] ? `${apiBaseUri[baseUri]}/t/event/queue` : baseUri\n console.log(`EndPoint: ${this.endPoint}`)\n }\n\n public async trackEvents(events: UserEvent[]) {\n return (await axios.post(this.endPoint, events)).data\n }\n}\n\nexport default PixelApi\n","import Bowser from 'bowser'\n\nimport { UserEventSystem } from './Api'\n\nlet systemInfo: UserEventSystem | undefined = undefined\n\nconst getSystemInfo = () => {\n try {\n systemInfo = systemInfo || Bowser.parse(window.navigator.userAgent)\n } catch (ex) {\n console.log(`getSystemInfo Error: ${ex}`)\n }\n return systemInfo\n}\n\nexport default getSystemInfo\n","import { assertEx } from '@xylabs/sdk-js'\nimport { Mutex } from 'async-mutex'\nimport Cookies from 'js-cookie'\nimport md5 from 'md5'\n\nimport { PixelApi, UserEvent } from './Api'\nimport ExIds from './ExIds'\nimport getSystemInfo from './getSystemInfo'\nimport Referrer from './Referrer'\nimport UniqueUserId from './UniqueUserId'\nimport UtmFields from './UtmFields'\n\nexport class XyPixel {\n public pixelId?: string\n public email?: string\n public email_hash?: string | null\n public queue: UserEvent[] = []\n public cid = new UniqueUserId().id\n public exids?: ExIds\n private queueMutex = new Mutex()\n\n private constructor(pixelId: string) {\n this.pixelId = pixelId\n }\n\n public identify(email?: string) {\n this.email = email\n this.email_hash = email ? md5(email) : undefined\n }\n\n private updateFbId() {\n this.exids = {\n ...{\n fbc: Cookies.get('_fbc'),\n fbp: Cookies.get('_fbp'),\n ga: Cookies.get('_ga'),\n gclid: Cookies.get('_gclid'),\n rdt_uid: Cookies.get('rdt_uid'),\n scid: Cookies.get('_scid'),\n tt_sessionId: sessionStorage.getItem('tt_sessionId') ?? undefined,\n },\n }\n }\n\n private async tryFlushQueue() {\n await this.queueMutex.runExclusive(async () => {\n if (this.queue.length === 0) return\n const api = XyPixel.api\n if (api) {\n const events = this.queue\n this.queue = []\n try {\n await api.trackEvents(events)\n } catch (ex) {\n if (events) {\n //put it back since it failed\n this.queue = this.queue.concat(events)\n }\n console.error(ex)\n }\n }\n })\n }\n\n private static utmFieldsObj: UtmFields\n private static utmFields = () => {\n if (XyPixel.utmFieldsObj === undefined) {\n XyPixel.utmFieldsObj = new UtmFields()\n }\n return XyPixel.utmFieldsObj\n }\n\n public async send<T extends Record<string, unknown>>(event: string, fields?: T) {\n this.updateFbId()\n const utm = XyPixel.utmFields().update()\n const referrer = new Referrer()\n this.queue.push({\n ...{\n cid: this.cid,\n create_time: Date.now(),\n email_hash: this.email_hash ?? undefined,\n event,\n exids: this.exids,\n fields,\n host: document.location.host,\n pathname: document.location.pathname,\n pixel: this.pixelId,\n referrer: referrer.toJson(),\n system: getSystemInfo(),\n utm,\n },\n })\n await this.tryFlushQueue()\n }\n\n private static _instance?: XyPixel\n public static get instance(): XyPixel {\n return assertEx(this._instance, 'XyPixel uninitialized')\n }\n\n public static init(pixelId: string) {\n this._instance = new XyPixel(pixelId)\n return this._instance\n }\n\n public static api = new PixelApi()\n public static selectApi(api: PixelApi) {\n this.api = api\n }\n}\n","import FunnelStartedFields from './FunnelStartedFields'\nimport { XyPixel } from './Pixel'\nimport TestStartedFields from './TestStartedFields'\nimport UserClickFields from './UserClickFields'\nimport UserEventHandler from './UserEventHandler'\nimport ViewContentFields from './ViewContentFields'\n\nclass XyUserEventHandler<T extends Record<string, unknown>> extends UserEventHandler<T> {\n constructor() {\n super()\n }\n public async testStarted(fields: T | TestStartedFields) {\n return await XyPixel.instance.send('TestStarted', fields)\n }\n public async funnelStarted(fields: T | FunnelStartedFields) {\n return await XyPixel.instance.send('FunnelStarted', fields)\n }\n public async viewContent(fields: T | ViewContentFields) {\n return await XyPixel.instance.send('ViewContent', fields)\n }\n public async userClick(fields: T | UserClickFields) {\n return await XyPixel.instance.send('ViewPage', fields)\n }\n}\n\nexport default XyUserEventHandler\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import UserEventSystem from './UserEventSystem';
|
|
2
|
+
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
|
+
}
|
|
18
|
+
export default UserEvent;
|
|
@@ -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 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +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;
|
|
@@ -0,0 +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;
|
|
@@ -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,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;
|
|
@@ -0,0 +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 };
|
package/dist/getSystemInfo.d.ts
CHANGED