@nommos/core 0.0.12 → 0.0.13
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/package.json +3 -2
- package/src/index.js +7 -10
- package/src/index.js.map +1 -1
- package/src/lib/constants.js +12 -15
- package/src/lib/constants.js.map +1 -1
- package/src/lib/data-attribution.js +48 -53
- package/src/lib/data-attribution.js.map +1 -1
- package/src/lib/enums.js +6 -9
- package/src/lib/enums.js.map +1 -1
- package/src/lib/event-tracker.js +55 -46
- package/src/lib/event-tracker.js.map +1 -1
- package/src/lib/types.js +1 -2
- package/src/lib/utils.js +6 -12
- package/src/lib/utils.js.map +1 -1
- package/src/lib/webSocket-client.js +12 -18
- package/src/lib/webSocket-client.js.map +1 -1
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
tslib_1.__exportStar(require("./lib/data-attribution"), exports);
|
|
9
|
-
tslib_1.__exportStar(require("./lib/webSocket-client"), exports);
|
|
10
|
-
tslib_1.__exportStar(require("./lib/event-tracker"), exports);
|
|
1
|
+
export * from './lib/enums';
|
|
2
|
+
export * from './lib/types';
|
|
3
|
+
export * from './lib/utils';
|
|
4
|
+
export * from './lib/constants';
|
|
5
|
+
export * from './lib/data-attribution';
|
|
6
|
+
export * from './lib/webSocket-client';
|
|
7
|
+
export * from './lib/event-tracker';
|
|
11
8
|
//# sourceMappingURL=index.js.map
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nommos/core/src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../nommos/core/src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC"}
|
package/src/lib/constants.js
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
exports.ONE_DAY_MS = 24 * 60 * 60 * 1000;
|
|
13
|
-
exports.ANALYTICS_QUEUE = '/queue/user.activity';
|
|
14
|
-
exports.BROWSER_DEFS = [
|
|
1
|
+
export const CONFIG_ENDPOINT = 'https://api.nommos.ai/api/tracking-module/config';
|
|
2
|
+
export const SOURCE_KEY = 'attr:source';
|
|
3
|
+
export const AFFILIATE_KEY = 'attr:affiliate';
|
|
4
|
+
export const PARRAINAGE_KEY = 'attr:parrainage';
|
|
5
|
+
export const AFFILIATE_HISTORY_KEY = 'attr:affiliate:history'; // { v: string[], e: number }
|
|
6
|
+
export const ONE_YEAR_MS = 365 * 24 * 60 * 60 * 1000;
|
|
7
|
+
export const BROWSER_KEY = 'anon:device_id';
|
|
8
|
+
export const CONFIG_CACHE_KEY = 'nommos:config:cache';
|
|
9
|
+
export const ONE_DAY_MS = 24 * 60 * 60 * 1000;
|
|
10
|
+
export const ANALYTICS_QUEUE = '/queue/user.activity';
|
|
11
|
+
export const BROWSER_DEFS = [
|
|
15
12
|
[/Edg\/([\d.]+)/, 'Edge'],
|
|
16
13
|
[/OPR\/([\d.]+)/, 'Opera'],
|
|
17
14
|
[/Chrome\/([\d.]+)/, 'Chrome'], // Edge/Opera are checked first, so this is safe
|
|
@@ -30,7 +27,7 @@ exports.BROWSER_DEFS = [
|
|
|
30
27
|
[/Puffin\/([\d.]+)/, 'Puffin'],
|
|
31
28
|
[/DuckDuckGo\/([\d.]+)/, 'DuckDuckGo'],
|
|
32
29
|
];
|
|
33
|
-
|
|
30
|
+
export const OS_DEFS = [
|
|
34
31
|
[/Windows NT ([\d.]+)/i, 'Windows'],
|
|
35
32
|
[/Android\s+([\d.]+)/i, 'Android'],
|
|
36
33
|
[/iPhone OS (\d+[_\d.]*)/i, 'iOS', (m) => m[1].replace(/_/g, '.')],
|
package/src/lib/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const utils_1 = require("./utils");
|
|
9
|
-
const uuid_1 = require("uuid");
|
|
10
|
-
class DataAttribution {
|
|
1
|
+
import { BehaviorSubject, from, of } from 'rxjs';
|
|
2
|
+
import { catchError, map, switchMap } from 'rxjs/operators';
|
|
3
|
+
import { AFFILIATE_HISTORY_KEY, AFFILIATE_KEY, BROWSER_KEY, ONE_YEAR_MS, PARRAINAGE_KEY, SOURCE_KEY, } from './constants';
|
|
4
|
+
import { SITE_SOURCE } from './enums';
|
|
5
|
+
import { getQueryParams, normString } from './utils';
|
|
6
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
7
|
+
export class DataAttribution {
|
|
11
8
|
constructor(urlTrackingKey) {
|
|
12
9
|
this.urlTrackingKey = urlTrackingKey;
|
|
13
10
|
this.latestAffiliateCandidate = null;
|
|
14
11
|
this.lastCapturedAffiliateIsNew = false;
|
|
15
12
|
this.currentUserIP = '';
|
|
16
|
-
this.loadedUserIp = new
|
|
13
|
+
this.loadedUserIp = new BehaviorSubject(false);
|
|
17
14
|
this.loadedUserIp$ = this.loadedUserIp.asObservable();
|
|
18
|
-
this.hasParrainOrAffiliate = new
|
|
15
|
+
this.hasParrainOrAffiliate = new BehaviorSubject(false);
|
|
19
16
|
this.hasParrainOrAffiliate$ = this.hasParrainOrAffiliate.asObservable();
|
|
20
|
-
this.stripUrlTrackedParams = new
|
|
17
|
+
this.stripUrlTrackedParams = new BehaviorSubject(false);
|
|
21
18
|
this.stripUrlTrackedParams$ = this.stripUrlTrackedParams.asObservable();
|
|
22
19
|
}
|
|
23
20
|
/**
|
|
@@ -41,10 +38,10 @@ class DataAttribution {
|
|
|
41
38
|
* Persistence: 1 year (via cookie), infinite via localStorage.
|
|
42
39
|
*/
|
|
43
40
|
get browserId() {
|
|
44
|
-
let v = localStorage.getItem(
|
|
41
|
+
let v = localStorage.getItem(BROWSER_KEY);
|
|
45
42
|
if (!v) {
|
|
46
|
-
v = (
|
|
47
|
-
localStorage.setItem(
|
|
43
|
+
v = uuidv4();
|
|
44
|
+
localStorage.setItem(BROWSER_KEY, v);
|
|
48
45
|
document.cookie = `device_id=${v}; path=/; max-age=${365 * 24 * 60 * 60}`;
|
|
49
46
|
}
|
|
50
47
|
return v;
|
|
@@ -63,26 +60,25 @@ class DataAttribution {
|
|
|
63
60
|
* Fetches for the current public address of the user (machine on which the application is used).
|
|
64
61
|
*/
|
|
65
62
|
fetchIp() {
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
this.currentUserIP = (_a = data === null || data === void 0 ? void 0 : data.ip) !== null && _a !== void 0 ? _a : '';
|
|
63
|
+
return from(fetch('https://api.ipify.org?format=json')).pipe(switchMap((res) => from(res.json())), // flatten inner promise
|
|
64
|
+
map((data) => {
|
|
65
|
+
this.currentUserIP = data?.ip ?? '';
|
|
70
66
|
}), // extract IP or ''
|
|
71
|
-
|
|
67
|
+
catchError(() => of()) // on any error, return ''
|
|
72
68
|
);
|
|
73
69
|
}
|
|
74
70
|
get source() {
|
|
75
|
-
const v = sessionStorage.getItem(
|
|
76
|
-
return v != null && v.length > 0 ? v :
|
|
71
|
+
const v = sessionStorage.getItem(SOURCE_KEY);
|
|
72
|
+
return v != null && v.length > 0 ? v : SITE_SOURCE.DIRECT;
|
|
77
73
|
}
|
|
78
74
|
/** Current affiliate from session; empty string if absent. */
|
|
79
75
|
get affiliate() {
|
|
80
|
-
const v = sessionStorage.getItem(
|
|
76
|
+
const v = sessionStorage.getItem(AFFILIATE_KEY);
|
|
81
77
|
return v != null && v.length > 0 ? v : null;
|
|
82
78
|
}
|
|
83
79
|
/** Current parrainage from session; empty string if absent. */
|
|
84
80
|
get parrainage() {
|
|
85
|
-
const v = sessionStorage.getItem(
|
|
81
|
+
const v = sessionStorage.getItem(PARRAINAGE_KEY);
|
|
86
82
|
return v != null && v.length > 0 ? v : null;
|
|
87
83
|
}
|
|
88
84
|
/**
|
|
@@ -95,31 +91,31 @@ class DataAttribution {
|
|
|
95
91
|
return this.lastCapturedAffiliateIsNew;
|
|
96
92
|
}
|
|
97
93
|
captureTrackingParamsFromCurrentUrl(stripFromUrl, currentUrl) {
|
|
98
|
-
const queryParams =
|
|
99
|
-
const source = queryParams
|
|
94
|
+
const queryParams = getQueryParams(currentUrl);
|
|
95
|
+
const source = queryParams?.[this.urlTrackingKey.source];
|
|
100
96
|
let shouldStrip = false;
|
|
101
97
|
// Capture source (session-scoped)
|
|
102
98
|
if (source !== undefined) {
|
|
103
|
-
sessionStorage.setItem(
|
|
99
|
+
sessionStorage.setItem(SOURCE_KEY, String(source).trim());
|
|
104
100
|
shouldStrip = true;
|
|
105
101
|
}
|
|
106
102
|
if (this.urlTrackingKey.parrainageKey || this.urlTrackingKey.affiliateKey) {
|
|
107
103
|
const parrainage = this.urlTrackingKey.parrainageKey
|
|
108
|
-
? queryParams
|
|
104
|
+
? queryParams?.[this.urlTrackingKey.parrainageKey]
|
|
109
105
|
: undefined; // parrainage code
|
|
110
106
|
const affiliate = this.urlTrackingKey.affiliateKey
|
|
111
|
-
? queryParams
|
|
107
|
+
? queryParams?.[this.urlTrackingKey.affiliateKey]
|
|
112
108
|
: undefined; // affiliate code
|
|
113
109
|
shouldStrip = affiliate !== undefined;
|
|
114
110
|
this.capturePartnerParams(parrainage, affiliate);
|
|
115
111
|
}
|
|
116
112
|
// Ensure default source
|
|
117
|
-
if (!sessionStorage.getItem(
|
|
118
|
-
sessionStorage.setItem(
|
|
113
|
+
if (!sessionStorage.getItem(SOURCE_KEY)) {
|
|
114
|
+
sessionStorage.setItem(SOURCE_KEY, SITE_SOURCE.DIRECT);
|
|
119
115
|
}
|
|
120
116
|
// Ensure affiliate key exists in session
|
|
121
|
-
if (!sessionStorage.getItem(
|
|
122
|
-
sessionStorage.setItem(
|
|
117
|
+
if (!sessionStorage.getItem(AFFILIATE_KEY)) {
|
|
118
|
+
sessionStorage.setItem(AFFILIATE_KEY, '');
|
|
123
119
|
}
|
|
124
120
|
// Optionally strip params we consumed
|
|
125
121
|
if (stripFromUrl && shouldStrip) {
|
|
@@ -134,7 +130,7 @@ class DataAttribution {
|
|
|
134
130
|
// Capture affiliate: keep current in session, and record to 1-year history
|
|
135
131
|
if (parrainage !== undefined) {
|
|
136
132
|
const rawParrainage = String(parrainage).trim();
|
|
137
|
-
sessionStorage.setItem(
|
|
133
|
+
sessionStorage.setItem(PARRAINAGE_KEY, rawParrainage);
|
|
138
134
|
}
|
|
139
135
|
}
|
|
140
136
|
if (this.urlTrackingKey.affiliateKey) {
|
|
@@ -142,8 +138,8 @@ class DataAttribution {
|
|
|
142
138
|
this.lastCapturedAffiliateIsNew = false;
|
|
143
139
|
if (affiliate !== undefined) {
|
|
144
140
|
const affiliateRef = String(affiliate).trim();
|
|
145
|
-
sessionStorage.setItem(
|
|
146
|
-
const lc =
|
|
141
|
+
sessionStorage.setItem(AFFILIATE_KEY, affiliateRef);
|
|
142
|
+
const lc = normString(affiliateRef);
|
|
147
143
|
if (lc.length > 0) {
|
|
148
144
|
const isInHistory = this.historyHas(lc);
|
|
149
145
|
this.latestAffiliateCandidate = lc;
|
|
@@ -162,53 +158,52 @@ class DataAttribution {
|
|
|
162
158
|
}
|
|
163
159
|
/* ---------- History (array with TTL in localStorage) ---------- */
|
|
164
160
|
getHistory() {
|
|
165
|
-
const raw = localStorage.getItem(
|
|
161
|
+
const raw = localStorage.getItem(AFFILIATE_HISTORY_KEY);
|
|
166
162
|
if (!raw)
|
|
167
163
|
return [];
|
|
168
164
|
try {
|
|
169
165
|
const parsed = JSON.parse(raw);
|
|
170
166
|
if (!parsed || typeof parsed.e !== 'number' || !Array.isArray(parsed.v)) {
|
|
171
|
-
localStorage.removeItem(
|
|
167
|
+
localStorage.removeItem(AFFILIATE_HISTORY_KEY);
|
|
172
168
|
return [];
|
|
173
169
|
}
|
|
174
170
|
if (Date.now() > parsed.e) {
|
|
175
|
-
localStorage.removeItem(
|
|
171
|
+
localStorage.removeItem(AFFILIATE_HISTORY_KEY);
|
|
176
172
|
return [];
|
|
177
173
|
}
|
|
178
174
|
// Ensure strings + lowercased normalization
|
|
179
|
-
return parsed.v.map((x) =>
|
|
175
|
+
return parsed.v.map((x) => normString(String(x)));
|
|
180
176
|
}
|
|
181
|
-
catch
|
|
182
|
-
localStorage.removeItem(
|
|
177
|
+
catch {
|
|
178
|
+
localStorage.removeItem(AFFILIATE_HISTORY_KEY);
|
|
183
179
|
return [];
|
|
184
180
|
}
|
|
185
181
|
}
|
|
186
182
|
setHistory(arr) {
|
|
187
|
-
const unique = Array.from(new Set(arr.map(
|
|
188
|
-
const payload = { v: unique, e: Date.now() +
|
|
189
|
-
localStorage.setItem(
|
|
183
|
+
const unique = Array.from(new Set(arr.map(normString)));
|
|
184
|
+
const payload = { v: unique, e: Date.now() + ONE_YEAR_MS };
|
|
185
|
+
localStorage.setItem(AFFILIATE_HISTORY_KEY, JSON.stringify(payload));
|
|
190
186
|
}
|
|
191
187
|
historyHas(codeLc) {
|
|
192
|
-
return this.getHistory().includes(
|
|
188
|
+
return this.getHistory().includes(normString(codeLc));
|
|
193
189
|
}
|
|
194
190
|
pushHistory(codeLc) {
|
|
195
191
|
const hist = this.getHistory();
|
|
196
|
-
if (!hist.includes(
|
|
197
|
-
hist.push(
|
|
192
|
+
if (!hist.includes(normString(codeLc))) {
|
|
193
|
+
hist.push(normString(codeLc));
|
|
198
194
|
}
|
|
199
195
|
// Always refresh TTL (rolling 1-year window)
|
|
200
196
|
this.setHistory(hist);
|
|
201
197
|
}
|
|
202
198
|
/** Explicit reset if needed SOURCE_KEY. */
|
|
203
199
|
clearSourceSession() {
|
|
204
|
-
sessionStorage.removeItem(
|
|
200
|
+
sessionStorage.removeItem(SOURCE_KEY);
|
|
205
201
|
}
|
|
206
202
|
clearAffiliateSession() {
|
|
207
|
-
sessionStorage.removeItem(
|
|
203
|
+
sessionStorage.removeItem(AFFILIATE_KEY);
|
|
208
204
|
}
|
|
209
205
|
clearAffiliateHistory() {
|
|
210
|
-
localStorage.removeItem(
|
|
206
|
+
localStorage.removeItem(AFFILIATE_HISTORY_KEY);
|
|
211
207
|
}
|
|
212
208
|
}
|
|
213
|
-
exports.DataAttribution = DataAttribution;
|
|
214
209
|
//# sourceMappingURL=data-attribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-attribution.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/data-attribution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"data-attribution.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/data-attribution.ts"],"names":[],"mappings":"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"}
|
package/src/lib/enums.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SITE_SOURCE = exports.ANALYTICS_ACTION_STATE = exports.ANALYTICS_ACTION = void 0;
|
|
4
1
|
/** Analytics Actions carried out by user to be tracked */
|
|
5
|
-
var ANALYTICS_ACTION;
|
|
2
|
+
export var ANALYTICS_ACTION;
|
|
6
3
|
(function (ANALYTICS_ACTION) {
|
|
7
4
|
ANALYTICS_ACTION["SIGNIN"] = "SIGNIN";
|
|
8
5
|
ANALYTICS_ACTION["REGISTRATION"] = "REGISTRATION";
|
|
@@ -13,9 +10,9 @@ var ANALYTICS_ACTION;
|
|
|
13
10
|
ANALYTICS_ACTION["DEPOSIT"] = "DEPOSIT";
|
|
14
11
|
ANALYTICS_ACTION["VISIT"] = "VISIT";
|
|
15
12
|
ANALYTICS_ACTION["COUPON"] = "COUPON";
|
|
16
|
-
})(ANALYTICS_ACTION || (
|
|
13
|
+
})(ANALYTICS_ACTION || (ANALYTICS_ACTION = {}));
|
|
17
14
|
/** States of analytics actions carried out by user */
|
|
18
|
-
var ANALYTICS_ACTION_STATE;
|
|
15
|
+
export var ANALYTICS_ACTION_STATE;
|
|
19
16
|
(function (ANALYTICS_ACTION_STATE) {
|
|
20
17
|
ANALYTICS_ACTION_STATE["SELECT"] = "SELECT";
|
|
21
18
|
ANALYTICS_ACTION_STATE["UNSELECT"] = "UN_SELECT";
|
|
@@ -23,9 +20,9 @@ var ANALYTICS_ACTION_STATE;
|
|
|
23
20
|
ANALYTICS_ACTION_STATE["SUCCESS"] = "SUCCESS";
|
|
24
21
|
ANALYTICS_ACTION_STATE["FAILURE"] = "FAILURE";
|
|
25
22
|
ANALYTICS_ACTION_STATE["INIT"] = "INIT";
|
|
26
|
-
})(ANALYTICS_ACTION_STATE || (
|
|
23
|
+
})(ANALYTICS_ACTION_STATE || (ANALYTICS_ACTION_STATE = {}));
|
|
27
24
|
/** Source from which the user originates to access the current site. */
|
|
28
|
-
var SITE_SOURCE;
|
|
25
|
+
export var SITE_SOURCE;
|
|
29
26
|
(function (SITE_SOURCE) {
|
|
30
27
|
SITE_SOURCE["FACEBOOK"] = "FACEBOOK";
|
|
31
28
|
SITE_SOURCE["INSTAGRAM"] = "INSTAGRAM";
|
|
@@ -33,5 +30,5 @@ var SITE_SOURCE;
|
|
|
33
30
|
SITE_SOURCE["TELEGRAM"] = "TELEGRAM";
|
|
34
31
|
SITE_SOURCE["DIRECT"] = "DIRECT";
|
|
35
32
|
SITE_SOURCE["SMS"] = "SMS";
|
|
36
|
-
})(SITE_SOURCE || (
|
|
33
|
+
})(SITE_SOURCE || (SITE_SOURCE = {}));
|
|
37
34
|
//# sourceMappingURL=enums.js.map
|
package/src/lib/enums.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/enums.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/enums.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,MAAM,CAAN,IAAY,gBAUX;AAVD,WAAY,gBAAgB;IAC1B,qCAAiB,CAAA;IACjB,iDAA6B,CAAA;IAC7B,+BAAW,CAAA;IACX,iCAAa,CAAA;IACb,6CAAyB,CAAA;IACzB,mCAAe,CAAA;IACf,uCAAmB,CAAA;IACnB,mCAAe,CAAA;IACf,qCAAiB,CAAA;AACnB,CAAC,EAVW,gBAAgB,KAAhB,gBAAgB,QAU3B;AAED,uDAAuD;AACvD,MAAM,CAAN,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,2CAAiB,CAAA;IACjB,gDAAsB,CAAA;IACtB,2CAAiB,CAAA;IACjB,6CAAmB,CAAA;IACnB,6CAAmB,CAAA;IACnB,uCAAa,CAAA;AACf,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,QAOjC;AAED,wEAAwE;AACxE,MAAM,CAAN,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,oCAAqB,CAAA;IACrB,sCAAuB,CAAA;IACvB,kCAAmB,CAAA;IACnB,oCAAqB,CAAA;IACrB,gCAAiB,CAAA;IACjB,0BAAW,CAAA;AACb,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB"}
|
package/src/lib/event-tracker.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const utils_1 = require("./utils");
|
|
10
|
-
const constants_1 = require("./constants");
|
|
11
|
-
class EventTracker {
|
|
1
|
+
import { forkJoin, from, of, Subject } from 'rxjs';
|
|
2
|
+
import { catchError, map, switchMap } from 'rxjs/operators';
|
|
3
|
+
import { WebSocketClient } from './webSocket-client';
|
|
4
|
+
import { DataAttribution } from './data-attribution';
|
|
5
|
+
import { ANALYTICS_ACTION_STATE } from './enums';
|
|
6
|
+
import { userAgentInfo } from './utils';
|
|
7
|
+
import { CONFIG_ENDPOINT, CONFIG_CACHE_KEY, ONE_DAY_MS } from './constants';
|
|
8
|
+
export class EventTracker {
|
|
12
9
|
/**
|
|
13
10
|
* Creates a new analytics tracker instance and initializes the attribution
|
|
14
11
|
* engine and WebSocket connection if tracking is enabled.
|
|
@@ -18,7 +15,7 @@ class EventTracker {
|
|
|
18
15
|
this.ipSubscription = null;
|
|
19
16
|
this.eventSubscription = null;
|
|
20
17
|
this.webSocketConnectedSubscription = null;
|
|
21
|
-
this.analyticsEvents = new
|
|
18
|
+
this.analyticsEvents = new Subject();
|
|
22
19
|
this.analyticsEvents$ = this.analyticsEvents.asObservable();
|
|
23
20
|
/**
|
|
24
21
|
* Internal state map used to track SELECT/UNSELECT status of toggleable actions.
|
|
@@ -34,9 +31,11 @@ class EventTracker {
|
|
|
34
31
|
DEPOSIT: false,
|
|
35
32
|
COUPON: false,
|
|
36
33
|
};
|
|
37
|
-
this.cfg =
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
this.cfg = {
|
|
35
|
+
...config,
|
|
36
|
+
};
|
|
37
|
+
this.ws = new WebSocketClient();
|
|
38
|
+
this.da = new DataAttribution(urlTrackingKey);
|
|
40
39
|
this.init(this.cfg);
|
|
41
40
|
}
|
|
42
41
|
/**
|
|
@@ -74,26 +73,39 @@ class EventTracker {
|
|
|
74
73
|
* @param userId - User identifier
|
|
75
74
|
* @param currentUrl - URL of the page where the action was carried out by the user
|
|
76
75
|
*/
|
|
77
|
-
trackEvent(action, state =
|
|
78
|
-
if (state ===
|
|
79
|
-
const newState = selected
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
trackEvent(action, state = ANALYTICS_ACTION_STATE.SELECT, data = null, toggle = true, selected = null, userId = '', currentUrl = '') {
|
|
77
|
+
if (state === ANALYTICS_ACTION_STATE.SELECT) {
|
|
78
|
+
const newState = selected ??
|
|
79
|
+
(toggle
|
|
80
|
+
? !this.getActionSelectState(action)
|
|
81
|
+
: this.getActionSelectState(action));
|
|
82
82
|
this.setActionSelectState(action, newState);
|
|
83
83
|
state = newState
|
|
84
|
-
?
|
|
85
|
-
:
|
|
84
|
+
? ANALYTICS_ACTION_STATE.SELECT
|
|
85
|
+
: ANALYTICS_ACTION_STATE.UNSELECT;
|
|
86
86
|
}
|
|
87
|
-
else if (state ===
|
|
87
|
+
else if (state === ANALYTICS_ACTION_STATE.UNSELECT) {
|
|
88
88
|
this.setActionSelectState(action, false);
|
|
89
89
|
}
|
|
90
|
-
const { channel, os, browser } =
|
|
91
|
-
const eventTracked =
|
|
92
|
-
|
|
90
|
+
const { channel, os, browser } = userAgentInfo(navigator.userAgent || '');
|
|
91
|
+
const eventTracked = {
|
|
92
|
+
ip: this.da.userIp,
|
|
93
|
+
channel,
|
|
94
|
+
timeStamp: Date.now(),
|
|
95
|
+
source: this.da.source,
|
|
96
|
+
action,
|
|
97
|
+
state,
|
|
98
|
+
uid: userId,
|
|
99
|
+
bid: this.da.browserId,
|
|
100
|
+
brand_id: this.cfg.brand_id,
|
|
101
|
+
meta: {
|
|
93
102
|
os,
|
|
94
103
|
browser,
|
|
95
104
|
page: currentUrl,
|
|
96
|
-
}
|
|
105
|
+
},
|
|
106
|
+
...(data && { data }),
|
|
107
|
+
...(this.da.affiliate && { affiliateCode: this.da.affiliate }),
|
|
108
|
+
};
|
|
97
109
|
console.log(eventTracked);
|
|
98
110
|
this.analyticsEvents.next(eventTracked);
|
|
99
111
|
}
|
|
@@ -101,7 +113,7 @@ class EventTracker {
|
|
|
101
113
|
if (cfg.token) {
|
|
102
114
|
const ipFetch$ = this.da.fetchIp();
|
|
103
115
|
const configFetch$ = this.fetchConfig(cfg.token);
|
|
104
|
-
this.ipSubscription =
|
|
116
|
+
this.ipSubscription = forkJoin([ipFetch$, configFetch$]).subscribe(() => {
|
|
105
117
|
this.da.setLoadedIP();
|
|
106
118
|
if (!this.cfg.enableTracking) {
|
|
107
119
|
return;
|
|
@@ -126,7 +138,6 @@ class EventTracker {
|
|
|
126
138
|
});
|
|
127
139
|
this.webSocketConnectedSubscription =
|
|
128
140
|
this.ws.stompAnalyticsConnected$.subscribe((connected) => {
|
|
129
|
-
var _a;
|
|
130
141
|
if (connected) {
|
|
131
142
|
// Try to gracefully close on tab unload
|
|
132
143
|
window.addEventListener('beforeunload', () => {
|
|
@@ -137,34 +148,34 @@ class EventTracker {
|
|
|
137
148
|
console.error('[DME Analytics SDK] disconnect error:', error);
|
|
138
149
|
}
|
|
139
150
|
});
|
|
140
|
-
|
|
151
|
+
this.webSocketConnectedSubscription?.unsubscribe();
|
|
141
152
|
}
|
|
142
153
|
});
|
|
143
154
|
}
|
|
144
155
|
}
|
|
145
156
|
fetchConfig(token) {
|
|
146
157
|
// 1. Check Cache First
|
|
147
|
-
const cached = localStorage.getItem(`${
|
|
158
|
+
const cached = localStorage.getItem(`${CONFIG_CACHE_KEY}:${token}`);
|
|
148
159
|
if (cached) {
|
|
149
160
|
try {
|
|
150
161
|
const { timestamp, data } = JSON.parse(cached);
|
|
151
|
-
if (Date.now() - timestamp <
|
|
162
|
+
if (Date.now() - timestamp < ONE_DAY_MS) {
|
|
152
163
|
console.log('[Nommos Tracker] Using cached config');
|
|
153
164
|
this.applyConfig(data);
|
|
154
|
-
return
|
|
165
|
+
return of(null);
|
|
155
166
|
}
|
|
156
167
|
}
|
|
157
168
|
catch (e) {
|
|
158
|
-
localStorage.removeItem(`${
|
|
169
|
+
localStorage.removeItem(`${CONFIG_CACHE_KEY}:${token}`);
|
|
159
170
|
}
|
|
160
171
|
}
|
|
161
|
-
const url = `${
|
|
162
|
-
return
|
|
172
|
+
const url = `${CONFIG_ENDPOINT}/${token}`;
|
|
173
|
+
return from(fetch(url)).pipe(switchMap((res) => {
|
|
163
174
|
if (!res.ok) {
|
|
164
175
|
throw new Error(`Failed to fetch config: ${res.statusText}`);
|
|
165
176
|
}
|
|
166
|
-
return
|
|
167
|
-
}),
|
|
177
|
+
return from(res.json());
|
|
178
|
+
}), map((data) => {
|
|
168
179
|
this.applyConfig(data);
|
|
169
180
|
// 2. Save to Cache on Success
|
|
170
181
|
if (this.cfg.enableTracking !== false) {
|
|
@@ -172,11 +183,11 @@ class EventTracker {
|
|
|
172
183
|
timestamp: Date.now(),
|
|
173
184
|
data
|
|
174
185
|
};
|
|
175
|
-
localStorage.setItem(`${
|
|
186
|
+
localStorage.setItem(`${CONFIG_CACHE_KEY}:${token}`, JSON.stringify(cachePayload));
|
|
176
187
|
}
|
|
177
|
-
}),
|
|
188
|
+
}), catchError((err) => {
|
|
178
189
|
console.error('[Nommos Tracker] Error fetching from the endpoint:', err);
|
|
179
|
-
return
|
|
190
|
+
return of(null);
|
|
180
191
|
}));
|
|
181
192
|
}
|
|
182
193
|
applyConfig(data) {
|
|
@@ -193,11 +204,9 @@ class EventTracker {
|
|
|
193
204
|
this.cfg.brand_id = data.brand_id;
|
|
194
205
|
}
|
|
195
206
|
unsubscribe() {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
(_c = this.webSocketConnectedSubscription) === null || _c === void 0 ? void 0 : _c.unsubscribe();
|
|
207
|
+
this.ipSubscription?.unsubscribe();
|
|
208
|
+
this.eventSubscription?.unsubscribe();
|
|
209
|
+
this.webSocketConnectedSubscription?.unsubscribe();
|
|
200
210
|
}
|
|
201
211
|
}
|
|
202
|
-
exports.EventTracker = EventTracker;
|
|
203
212
|
//# sourceMappingURL=event-tracker.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-tracker.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/event-tracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"event-tracker.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/event-tracker.ts"],"names":[],"mappings":"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"}
|
package/src/lib/types.js
CHANGED
package/src/lib/utils.js
CHANGED
|
@@ -1,15 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.userAgentInfo = exports.normString = void 0;
|
|
4
|
-
exports.getQueryParams = getQueryParams;
|
|
5
|
-
const constants_1 = require("./constants");
|
|
1
|
+
import { BROWSER_DEFS, OS_DEFS } from './constants';
|
|
6
2
|
/**
|
|
7
3
|
* Gets all the query parameters found on a given url
|
|
8
4
|
*
|
|
9
5
|
* @param url - the url from which we want to get the query parameters from
|
|
10
6
|
* @returns A record of query parameters' name and value
|
|
11
7
|
*/
|
|
12
|
-
function getQueryParams(url) {
|
|
8
|
+
export function getQueryParams(url) {
|
|
13
9
|
const params = {};
|
|
14
10
|
const urlObj = new URL(url);
|
|
15
11
|
urlObj.searchParams.forEach((value, key) => {
|
|
@@ -26,19 +22,17 @@ function getQueryParams(url) {
|
|
|
26
22
|
* @param s - string to convert
|
|
27
23
|
* @returns normalized string in lowerCase and no trailing space.
|
|
28
24
|
*/
|
|
29
|
-
const normString = (s) => s.trim().toLowerCase();
|
|
30
|
-
exports.normString = normString;
|
|
25
|
+
export const normString = (s) => s.trim().toLowerCase();
|
|
31
26
|
/**
|
|
32
27
|
* Extract the browser, the operating system and the channel (3 or 7) from the user agent of a device
|
|
33
28
|
* @param ua - User Agent of the device
|
|
34
29
|
* @returns An Object with the browser, operating system and the channel used by the user agent.
|
|
35
30
|
*/
|
|
36
|
-
const userAgentInfo = (ua) => ({
|
|
37
|
-
browser: detect(ua,
|
|
38
|
-
os: detect(ua,
|
|
31
|
+
export const userAgentInfo = (ua) => ({
|
|
32
|
+
browser: detect(ua, BROWSER_DEFS),
|
|
33
|
+
os: detect(ua, OS_DEFS),
|
|
39
34
|
channel: /Mobi|Android|iPhone|iPad|iPod|Windows Phone/i.test(ua) ? 3 : 7,
|
|
40
35
|
});
|
|
41
|
-
exports.userAgentInfo = userAgentInfo;
|
|
42
36
|
const detect = (ua, defs, fallback = 'Unknown') => {
|
|
43
37
|
for (const [re, name, map] of defs) {
|
|
44
38
|
const m = new RegExp(re).exec(ua);
|
package/src/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAIpD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IAE5B,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACzC,iCAAiC;QACjC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,EAAU,EACuC,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC;IACjC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,8CAA8C,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACzE,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,IAAa,EAAE,QAAQ,GAAG,SAAS,EAAU,EAAE;IACzE,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const stompjs_1 = require("@stomp/stompjs");
|
|
5
|
-
const rxjs_1 = require("rxjs");
|
|
6
|
-
const constants_1 = require("./constants");
|
|
1
|
+
import { Client } from '@stomp/stompjs';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import { ANALYTICS_QUEUE } from './constants';
|
|
7
4
|
/**
|
|
8
5
|
* WebSocketClient
|
|
9
6
|
* ----------------
|
|
@@ -17,7 +14,7 @@ const constants_1 = require("./constants");
|
|
|
17
14
|
* Intended to be used inside applications where analytics events must
|
|
18
15
|
* never be lost due to temporary connection issues.
|
|
19
16
|
*/
|
|
20
|
-
class WebSocketClient {
|
|
17
|
+
export class WebSocketClient {
|
|
21
18
|
constructor() {
|
|
22
19
|
/**
|
|
23
20
|
* The underlying STOMP client instance.
|
|
@@ -29,7 +26,7 @@ class WebSocketClient {
|
|
|
29
26
|
* becomes connected. They are automatically flushed on connection.
|
|
30
27
|
*/
|
|
31
28
|
this.pendingEvents = [];
|
|
32
|
-
this.stompAnalyticsConnected = new
|
|
29
|
+
this.stompAnalyticsConnected = new BehaviorSubject(false);
|
|
33
30
|
/**
|
|
34
31
|
* Reactive connection state for consumers who want to listen for
|
|
35
32
|
* connection availability changes.
|
|
@@ -46,15 +43,14 @@ class WebSocketClient {
|
|
|
46
43
|
* @returns A configured but not yet activated STOMP `Client` instance.
|
|
47
44
|
*/
|
|
48
45
|
createStompClient(cfg) {
|
|
49
|
-
var _a, _b, _c, _d;
|
|
50
46
|
console.log('[Nommos Tracker] Rabbit Configs... ', cfg);
|
|
51
|
-
const client = new
|
|
52
|
-
brokerURL:
|
|
47
|
+
const client = new Client({
|
|
48
|
+
brokerURL: cfg.rabbitUrl ?? '',
|
|
53
49
|
connectHeaders: {
|
|
54
|
-
login:
|
|
55
|
-
passcode:
|
|
50
|
+
login: cfg.username ?? '',
|
|
51
|
+
passcode: cfg.password ?? '',
|
|
56
52
|
},
|
|
57
|
-
reconnectDelay:
|
|
53
|
+
reconnectDelay: cfg.reconnectDelay ?? 5000,
|
|
58
54
|
});
|
|
59
55
|
if (cfg.mode === 'dev') {
|
|
60
56
|
client.debug = (msg) => console.log('[Nommos Tracker]', msg);
|
|
@@ -103,13 +99,12 @@ class WebSocketClient {
|
|
|
103
99
|
* @param payload The analytics event to send.
|
|
104
100
|
*/
|
|
105
101
|
publishAnalyticsMessage(payload) {
|
|
106
|
-
|
|
107
|
-
if (!((_a = this.analyticsClient) === null || _a === void 0 ? void 0 : _a.connected) || this.analyticsClient == null) {
|
|
102
|
+
if (!this.analyticsClient?.connected || this.analyticsClient == null) {
|
|
108
103
|
this.pendingEvents.push(payload);
|
|
109
104
|
return;
|
|
110
105
|
}
|
|
111
106
|
this.analyticsClient.publish({
|
|
112
|
-
destination:
|
|
107
|
+
destination: ANALYTICS_QUEUE,
|
|
113
108
|
headers: { 'content-type': 'application/json' },
|
|
114
109
|
body: JSON.stringify(payload),
|
|
115
110
|
});
|
|
@@ -128,5 +123,4 @@ class WebSocketClient {
|
|
|
128
123
|
}
|
|
129
124
|
}
|
|
130
125
|
}
|
|
131
|
-
exports.WebSocketClient = WebSocketClient;
|
|
132
126
|
//# sourceMappingURL=webSocket-client.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webSocket-client.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/webSocket-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webSocket-client.js","sourceRoot":"","sources":["../../../../../nommos/core/src/lib/webSocket-client.ts"],"names":[],"mappings":"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"}
|