@usermaven/nextjs 1.4.1-rc.62 → 1.4.1-rc.64
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/lib/index.es.js +207 -229
- package/package.json +2 -2
package/lib/index.es.js
CHANGED
|
@@ -9,7 +9,7 @@ const UsermavenProvider = function ({ children, client }) {
|
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
var v = /* @__PURE__ */ ((i) => (i[i.DEBUG = 0] = "DEBUG", i[i.INFO = 1] = "INFO", i[i.WARN = 2] = "WARN", i[i.ERROR = 3] = "ERROR", i))(v || {});
|
|
12
|
-
class
|
|
12
|
+
class W {
|
|
13
13
|
constructor(e) {
|
|
14
14
|
this.level = e;
|
|
15
15
|
}
|
|
@@ -26,10 +26,10 @@ class V {
|
|
|
26
26
|
this.level <= 3 && console.error("[Usermaven Error]:", e, ...t);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
function
|
|
30
|
-
return new
|
|
29
|
+
function g(i = 0) {
|
|
30
|
+
return new W(i);
|
|
31
31
|
}
|
|
32
|
-
const
|
|
32
|
+
const U = {
|
|
33
33
|
logLevel: v.ERROR,
|
|
34
34
|
useBeaconApi: !1,
|
|
35
35
|
forceUseFetch: !1,
|
|
@@ -55,7 +55,7 @@ const I = {
|
|
|
55
55
|
maskAllText: !1,
|
|
56
56
|
maskAllElementAttributes: !1
|
|
57
57
|
};
|
|
58
|
-
class
|
|
58
|
+
class X {
|
|
59
59
|
constructor(e) {
|
|
60
60
|
this.domain = e, this.cookieDomain = this.getCookieDomain();
|
|
61
61
|
}
|
|
@@ -104,39 +104,39 @@ class Q {
|
|
|
104
104
|
return s ? s[0] : "";
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
|
-
const
|
|
107
|
+
const K = Object.prototype, G = K.hasOwnProperty, Y = Array.prototype, $ = Y.forEach, A = {};
|
|
108
108
|
function Z(i, e, t) {
|
|
109
109
|
if (Array.isArray(i)) {
|
|
110
|
-
if (
|
|
110
|
+
if ($ && i.forEach === $)
|
|
111
111
|
i.forEach(e, t);
|
|
112
112
|
else if ("length" in i && i.length === +i.length) {
|
|
113
113
|
for (let s = 0, n = i.length; s < n; s++)
|
|
114
|
-
if (s in i && e.call(t, i[s], s) ===
|
|
114
|
+
if (s in i && e.call(t, i[s], s) === A)
|
|
115
115
|
return;
|
|
116
116
|
}
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
const
|
|
119
|
+
const x = function(i) {
|
|
120
120
|
return i.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
|
|
121
|
-
},
|
|
121
|
+
}, j = function(i) {
|
|
122
122
|
for (const e in i)
|
|
123
123
|
typeof i[e] == "function" && (i[e] = i[e].bind(i));
|
|
124
124
|
};
|
|
125
|
-
function
|
|
125
|
+
function f(i, e, t) {
|
|
126
126
|
if (i != null) {
|
|
127
|
-
if (
|
|
127
|
+
if ($ && Array.isArray(i) && i.forEach === $)
|
|
128
128
|
i.forEach(e, t);
|
|
129
129
|
else if ("length" in i && i.length === +i.length) {
|
|
130
130
|
for (let s = 0, n = i.length; s < n; s++)
|
|
131
|
-
if (s in i && e.call(t, i[s], s) ===
|
|
131
|
+
if (s in i && e.call(t, i[s], s) === A)
|
|
132
132
|
return;
|
|
133
133
|
} else
|
|
134
134
|
for (const s in i)
|
|
135
|
-
if (
|
|
135
|
+
if (G.call(i, s) && e.call(t, i[s], s) === A)
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
138
|
}
|
|
139
|
-
const
|
|
139
|
+
const ee = function(i, ...e) {
|
|
140
140
|
return Z(e, function(t) {
|
|
141
141
|
for (const s in t)
|
|
142
142
|
t[s] !== void 0 && (i[s] = t[s]);
|
|
@@ -145,18 +145,18 @@ const Y = function(i, ...e) {
|
|
|
145
145
|
function _(i, e) {
|
|
146
146
|
return i.indexOf(e) !== -1;
|
|
147
147
|
}
|
|
148
|
-
const
|
|
148
|
+
const te = function(i) {
|
|
149
149
|
try {
|
|
150
150
|
return /^\s*\bfunction\b/.test(i);
|
|
151
151
|
} catch {
|
|
152
152
|
return !1;
|
|
153
153
|
}
|
|
154
|
-
},
|
|
154
|
+
}, ie = function(i) {
|
|
155
155
|
return i === void 0;
|
|
156
|
-
},
|
|
156
|
+
}, m = function() {
|
|
157
157
|
const i = function(s, n, r, o, c) {
|
|
158
158
|
if (!s) {
|
|
159
|
-
|
|
159
|
+
g().error("No valid element provided to register_event");
|
|
160
160
|
return;
|
|
161
161
|
}
|
|
162
162
|
if (s.addEventListener && !o)
|
|
@@ -171,7 +171,7 @@ const F = function(i) {
|
|
|
171
171
|
if (o = o || t(window.event), !o)
|
|
172
172
|
return;
|
|
173
173
|
let c = !0, l;
|
|
174
|
-
|
|
174
|
+
te(r) && (l = r(o));
|
|
175
175
|
const a = n.call(s, o);
|
|
176
176
|
return (l === !1 || a === !1) && (c = !1), c;
|
|
177
177
|
};
|
|
@@ -184,19 +184,19 @@ const F = function(i) {
|
|
|
184
184
|
}, t.stopPropagation = function() {
|
|
185
185
|
this.cancelBubble = !0;
|
|
186
186
|
}, i;
|
|
187
|
-
}(),
|
|
187
|
+
}(), se = function(i) {
|
|
188
188
|
return function(...e) {
|
|
189
189
|
try {
|
|
190
190
|
return i.apply(this, e);
|
|
191
191
|
} catch (t) {
|
|
192
|
-
|
|
192
|
+
g().error("Implementation error. Please turn on debug and contact support@usermaven.com.", t);
|
|
193
193
|
}
|
|
194
194
|
};
|
|
195
195
|
}, z = function(i) {
|
|
196
196
|
for (const e in i)
|
|
197
|
-
typeof i[e] == "function" && (i[e] =
|
|
197
|
+
typeof i[e] == "function" && (i[e] = se(i[e]));
|
|
198
198
|
};
|
|
199
|
-
function
|
|
199
|
+
function R(i) {
|
|
200
200
|
for (let e in i)
|
|
201
201
|
(i[e] === "" || i[e] === null || i[e] === void 0 || typeof i[e] == "object" && Object.keys(i[e]).length === 0) && delete i[e];
|
|
202
202
|
return i;
|
|
@@ -205,26 +205,26 @@ function u() {
|
|
|
205
205
|
try {
|
|
206
206
|
return typeof window < "u" && window.document !== void 0 && window.document.createElement !== void 0;
|
|
207
207
|
} catch {
|
|
208
|
-
return
|
|
208
|
+
return g().warn("window is not available"), !1;
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
|
-
function
|
|
211
|
+
function p(i = 5) {
|
|
212
212
|
const e = new Uint8Array(i);
|
|
213
213
|
return crypto.getRandomValues(e), Array.from(e, (t) => t.toString(36).padStart(2, "0")).join("").slice(0, i);
|
|
214
214
|
}
|
|
215
|
-
function
|
|
215
|
+
function ne(i) {
|
|
216
216
|
return i.replace(
|
|
217
217
|
/([-_][a-z])/g,
|
|
218
218
|
(e) => e.toUpperCase().replace("-", "").replace("_", "")
|
|
219
219
|
);
|
|
220
220
|
}
|
|
221
|
-
function
|
|
222
|
-
return typeof i != "object" || i === null ? i : Array.isArray(i) ? i.map(
|
|
223
|
-
const s =
|
|
224
|
-
return e[s] =
|
|
221
|
+
function H(i) {
|
|
222
|
+
return typeof i != "object" || i === null ? i : Array.isArray(i) ? i.map(H) : Object.keys(i).reduce((e, t) => {
|
|
223
|
+
const s = ne(t);
|
|
224
|
+
return e[s] = H(i[t]), e;
|
|
225
225
|
}, {});
|
|
226
226
|
}
|
|
227
|
-
function
|
|
227
|
+
function E(i) {
|
|
228
228
|
switch (typeof i.className) {
|
|
229
229
|
case "string":
|
|
230
230
|
return i.className;
|
|
@@ -234,13 +234,13 @@ function P(i) {
|
|
|
234
234
|
return "";
|
|
235
235
|
}
|
|
236
236
|
}
|
|
237
|
-
function
|
|
237
|
+
function L(i) {
|
|
238
238
|
let e = "";
|
|
239
|
-
return
|
|
240
|
-
B(t) && t.textContent && (e +=
|
|
241
|
-
}),
|
|
239
|
+
return O(i) && !M(i) && i.childNodes && i.childNodes.length && f(i.childNodes, function(t) {
|
|
240
|
+
B(t) && t.textContent && (e += x(t.textContent).split(/(\s+)/).filter(P).join("").replace(/[\r\n]/g, " ").replace(/[ ]+/g, " ").substring(0, 255));
|
|
241
|
+
}), x(e);
|
|
242
242
|
}
|
|
243
|
-
function
|
|
243
|
+
function q(i) {
|
|
244
244
|
return !!i && i.nodeType === 1;
|
|
245
245
|
}
|
|
246
246
|
function d(i, e) {
|
|
@@ -249,22 +249,22 @@ function d(i, e) {
|
|
|
249
249
|
function B(i) {
|
|
250
250
|
return !!i && i.nodeType === 3;
|
|
251
251
|
}
|
|
252
|
-
function
|
|
252
|
+
function N(i) {
|
|
253
253
|
return !!i && i.nodeType === 11;
|
|
254
254
|
}
|
|
255
255
|
const b = ["a", "button", "form", "input", "select", "textarea", "label"];
|
|
256
|
-
function
|
|
257
|
-
if (!i || d(i, "html") || !
|
|
256
|
+
function re(i, e) {
|
|
257
|
+
if (!i || d(i, "html") || !q(i))
|
|
258
258
|
return !1;
|
|
259
259
|
let t = i;
|
|
260
260
|
for (; t && !d(t, "body"); ) {
|
|
261
261
|
if (t.classList && t.classList.contains("um-no-capture"))
|
|
262
262
|
return !1;
|
|
263
|
-
t.parentNode &&
|
|
263
|
+
t.parentNode && N(t.parentNode) ? t = t.parentNode.host : t = t.parentNode;
|
|
264
264
|
}
|
|
265
265
|
let s = !1;
|
|
266
266
|
for (t = i; t && !d(t, "body"); ) {
|
|
267
|
-
if (t.parentNode &&
|
|
267
|
+
if (t.parentNode && N(t.parentNode)) {
|
|
268
268
|
t = t.parentNode.host, t && b.indexOf(t.tagName.toLowerCase()) > -1 && (s = !0);
|
|
269
269
|
continue;
|
|
270
270
|
}
|
|
@@ -296,51 +296,42 @@ function ie(i, e) {
|
|
|
296
296
|
return s ? e.type === "click" : e.type === "click" && (b.indexOf(r) > -1 || i.getAttribute("contenteditable") === "true");
|
|
297
297
|
}
|
|
298
298
|
}
|
|
299
|
-
function
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
if (typeof i.hasAttribute == "function") {
|
|
303
|
-
if (i.hasAttribute(w.FORCE_CAPTURE_ATTR))
|
|
304
|
-
return !0;
|
|
305
|
-
if (i.hasAttribute(w.PREVENT_CAPTURE_ATTR))
|
|
306
|
-
return !1;
|
|
307
|
-
}
|
|
308
|
-
let e = i;
|
|
309
|
-
for (; e && e.parentElement && !d(e, "body"); ) {
|
|
310
|
-
const n = P(e).split(" ");
|
|
299
|
+
function O(i) {
|
|
300
|
+
for (let s = i; s.parentNode && !d(s, "body"); s = s.parentNode) {
|
|
301
|
+
const n = E(s).split(" ");
|
|
311
302
|
if (_(n, "ph-sensitive") || _(n, "ph-no-capture"))
|
|
312
303
|
return !1;
|
|
313
|
-
e = e.parentElement;
|
|
314
304
|
}
|
|
315
|
-
if (_(
|
|
305
|
+
if (_(E(i).split(" "), "ph-include"))
|
|
316
306
|
return !0;
|
|
317
|
-
const
|
|
318
|
-
if (typeof
|
|
319
|
-
switch (
|
|
307
|
+
const e = i.type || "";
|
|
308
|
+
if (typeof e == "string")
|
|
309
|
+
switch (e.toLowerCase()) {
|
|
320
310
|
case "hidden":
|
|
311
|
+
return !1;
|
|
321
312
|
case "password":
|
|
322
313
|
return !1;
|
|
323
314
|
}
|
|
324
|
-
const
|
|
325
|
-
return !(typeof
|
|
315
|
+
const t = i.name || i.id || "";
|
|
316
|
+
return !(typeof t == "string" && /^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(t.replace(/[^a-zA-Z0-9]/g, "")));
|
|
326
317
|
}
|
|
327
|
-
function
|
|
318
|
+
function M(i) {
|
|
328
319
|
const e = ["button", "checkbox", "submit", "reset"];
|
|
329
320
|
return !!(d(i, "input") && !e.includes(i.type) || d(i, "select") || d(i, "textarea") || i.getAttribute("contenteditable") === "true");
|
|
330
321
|
}
|
|
331
|
-
function
|
|
332
|
-
return !(i === null ||
|
|
322
|
+
function P(i) {
|
|
323
|
+
return !(i === null || ie(i) || typeof i == "string" && (i = x(i), /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/.test((i || "").replace(/[- ]/g, "")) || /(^\d{3}-?\d{2}-?\d{4}$)/.test(i)));
|
|
333
324
|
}
|
|
334
|
-
function
|
|
325
|
+
function oe(i) {
|
|
335
326
|
return typeof i == "string" ? i.substring(0, 10) === "_ngcontent" || i.substring(0, 7) === "_nghost" : !1;
|
|
336
327
|
}
|
|
337
|
-
function
|
|
338
|
-
return
|
|
328
|
+
function T() {
|
|
329
|
+
return p(10);
|
|
339
330
|
}
|
|
340
|
-
function
|
|
331
|
+
function ae(i) {
|
|
341
332
|
return /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(String(i).toLowerCase());
|
|
342
333
|
}
|
|
343
|
-
function
|
|
334
|
+
function ce(i, e) {
|
|
344
335
|
let t;
|
|
345
336
|
return function(...s) {
|
|
346
337
|
const n = () => {
|
|
@@ -349,7 +340,7 @@ function re(i, e) {
|
|
|
349
340
|
clearTimeout(t), t = setTimeout(n, e);
|
|
350
341
|
};
|
|
351
342
|
}
|
|
352
|
-
function
|
|
343
|
+
function le(i) {
|
|
353
344
|
const e = {}, t = i.replace(/^\?/, "").split("&");
|
|
354
345
|
for (let s = 0; s < t.length; s++) {
|
|
355
346
|
const n = t[s].split("=");
|
|
@@ -357,21 +348,21 @@ function oe(i) {
|
|
|
357
348
|
}
|
|
358
349
|
return e;
|
|
359
350
|
}
|
|
360
|
-
function
|
|
351
|
+
function I(i) {
|
|
361
352
|
return typeof i == "string" || i instanceof String;
|
|
362
353
|
}
|
|
363
354
|
function k(i) {
|
|
364
355
|
return i !== null && typeof i == "object" && i.constructor === Object;
|
|
365
356
|
}
|
|
366
|
-
function
|
|
357
|
+
function ue(i) {
|
|
367
358
|
if (i === null)
|
|
368
359
|
return v.ERROR;
|
|
369
360
|
const e = i.toUpperCase(), t = v[e];
|
|
370
361
|
return t || t === 0 ? t : v.ERROR;
|
|
371
362
|
}
|
|
372
|
-
class
|
|
363
|
+
class he {
|
|
373
364
|
constructor(e) {
|
|
374
|
-
this.maxScrollDepth = 0, this.milestones = [25, 50, 75, 90], this.lastScrollDepth = 0, this.client = e, this.documentElement = document.documentElement, this.debouncedHandleScroll =
|
|
365
|
+
this.maxScrollDepth = 0, this.milestones = [25, 50, 75, 90], this.lastScrollDepth = 0, this.client = e, this.documentElement = document.documentElement, this.debouncedHandleScroll = ce(this.handleScroll.bind(this), 250), this.initializeEventListener();
|
|
375
366
|
}
|
|
376
367
|
initializeEventListener() {
|
|
377
368
|
window.addEventListener("scroll", this.debouncedHandleScroll);
|
|
@@ -420,9 +411,9 @@ class ce {
|
|
|
420
411
|
});
|
|
421
412
|
}
|
|
422
413
|
}
|
|
423
|
-
const
|
|
424
|
-
constructor(e, t, s =
|
|
425
|
-
this.logger = s, this.scrollDepth = null, this.client = e, this.options = t, this.scrollDepth = new
|
|
414
|
+
const C = class C {
|
|
415
|
+
constructor(e, t, s = g()) {
|
|
416
|
+
this.logger = s, this.scrollDepth = null, this.customProperties = [], this.client = e, this.options = t, this.scrollDepth = new he(e), j(this), z(this);
|
|
426
417
|
}
|
|
427
418
|
init() {
|
|
428
419
|
if (!(document && document.body)) {
|
|
@@ -435,7 +426,7 @@ const y = class y {
|
|
|
435
426
|
const e = (t) => {
|
|
436
427
|
t = t || window.event, this.captureEvent(t);
|
|
437
428
|
};
|
|
438
|
-
|
|
429
|
+
m(document, "submit", e, !1, !0), m(document, "change", e, !1, !0), m(document, "click", e, !1, !0), m(document, "visibilitychange", e, !1, !0), m(document, "scroll", e, !1, !0), m(window, "popstate", e, !1, !0);
|
|
439
430
|
}
|
|
440
431
|
isPageRefresh() {
|
|
441
432
|
if ("PerformanceNavigationTiming" in window) {
|
|
@@ -452,63 +443,89 @@ const y = class y {
|
|
|
452
443
|
return (s = this.scrollDepth) == null || s.track(), !0;
|
|
453
444
|
if (e.type === "visibilitychange" && document.visibilityState === "hidden" || e.type === "popstate")
|
|
454
445
|
return this.isPageRefresh() || (n = this.scrollDepth) == null || n.send(), !0;
|
|
455
|
-
if (t &&
|
|
456
|
-
const r =
|
|
446
|
+
if (t && re(t, e)) {
|
|
447
|
+
const r = [t];
|
|
448
|
+
let o = t;
|
|
449
|
+
for (; o.parentNode && !d(o, "body"); ) {
|
|
450
|
+
if (N(o.parentNode)) {
|
|
451
|
+
r.push(o.parentNode.host), o = o.parentNode.host;
|
|
452
|
+
continue;
|
|
453
|
+
}
|
|
454
|
+
r.push(o.parentNode), o = o.parentNode;
|
|
455
|
+
}
|
|
456
|
+
const c = [];
|
|
457
|
+
let l, a = !1;
|
|
458
|
+
if (f(r, (w) => {
|
|
459
|
+
const J = O(w);
|
|
460
|
+
w.tagName.toLowerCase() === "a" && (l = w.getAttribute("href"), l = J && P(l) && l);
|
|
461
|
+
const Q = E(w).split(" ");
|
|
462
|
+
_(Q, "ph-no-capture") && (a = !0), c.push(
|
|
463
|
+
this.getPropertiesFromElement(
|
|
464
|
+
w,
|
|
465
|
+
this.options.maskAllElementAttributes ?? !1,
|
|
466
|
+
this.options.maskAllText ?? !1
|
|
467
|
+
)
|
|
468
|
+
);
|
|
469
|
+
}), this.options.maskAllText || (c[0].$el_text = L(t)), l && (c[0].attr__href = l), a)
|
|
470
|
+
return !1;
|
|
471
|
+
const h = ee(
|
|
457
472
|
this.getDefaultProperties(e.type),
|
|
458
473
|
{
|
|
459
|
-
$elements:
|
|
460
|
-
}
|
|
474
|
+
$elements: c
|
|
475
|
+
},
|
|
476
|
+
this.getCustomProperties(r)
|
|
461
477
|
);
|
|
462
|
-
return this.client.track("$autocapture",
|
|
478
|
+
return this.client.track("$autocapture", h), !0;
|
|
463
479
|
}
|
|
464
480
|
}
|
|
465
|
-
|
|
466
|
-
|
|
481
|
+
getCustomProperties(e) {
|
|
482
|
+
const t = {};
|
|
483
|
+
return f(this.customProperties, (s) => {
|
|
484
|
+
f(s.event_selectors, (n) => {
|
|
485
|
+
const r = document.querySelectorAll(n);
|
|
486
|
+
f(r, (o) => {
|
|
487
|
+
_(e, o) && O(o) && (t[s.name] = this.extractCustomPropertyValue(s));
|
|
488
|
+
});
|
|
489
|
+
});
|
|
490
|
+
}), t;
|
|
491
|
+
}
|
|
492
|
+
extractCustomPropertyValue(e) {
|
|
493
|
+
const t = [];
|
|
494
|
+
return f(document.querySelectorAll(e.css_selector), function(s) {
|
|
495
|
+
let n;
|
|
496
|
+
["input", "select"].indexOf(s.tagName.toLowerCase()) > -1 ? n = s.value : s.textContent && (n = s.textContent), P(n) && t.push(n);
|
|
497
|
+
}), t.join(", ");
|
|
467
498
|
}
|
|
468
499
|
getEventTarget(e) {
|
|
469
500
|
var t;
|
|
470
501
|
return typeof e.target > "u" ? e.srcElement || null : (t = e.target) != null && t.shadowRoot ? e.composedPath()[0] || null : e.target || null;
|
|
471
502
|
}
|
|
472
|
-
|
|
473
|
-
const
|
|
474
|
-
|
|
475
|
-
for (; s.parentNode && !d(s, "body"); )
|
|
476
|
-
x(s.parentNode) ? (t.push(s.parentNode.host), s = s.parentNode.host) : (t.push(s.parentNode), s = s.parentNode);
|
|
477
|
-
return t;
|
|
478
|
-
}
|
|
479
|
-
getElementsJson(e, t) {
|
|
480
|
-
const s = [];
|
|
481
|
-
let n = null, r = !1;
|
|
482
|
-
return S(e, (o) => {
|
|
483
|
-
if (d(o, "a")) {
|
|
484
|
-
const l = o.getAttribute("href");
|
|
485
|
-
l !== null && M(o) && H(l) && (n = l);
|
|
486
|
-
}
|
|
487
|
-
const c = P(o).split(" ");
|
|
488
|
-
_(c, "ph-no-capture") && (r = !0), s.push(this.getPropertiesFromElement(o));
|
|
489
|
-
}), this.options.maskAllText || (s[0].$el_text = this.sanitizeText(O(e[0]))), n !== null && (s[0].attr__href = n), r ? [] : s;
|
|
490
|
-
}
|
|
491
|
-
getPropertiesFromElement(e) {
|
|
492
|
-
const t = {
|
|
493
|
-
tag_name: e.tagName.toLowerCase()
|
|
503
|
+
getPropertiesFromElement(e, t, s) {
|
|
504
|
+
const n = e.tagName.toLowerCase(), r = {
|
|
505
|
+
tag_name: n
|
|
494
506
|
};
|
|
495
|
-
b.indexOf(
|
|
496
|
-
const
|
|
497
|
-
|
|
498
|
-
|
|
507
|
+
b.indexOf(n) > -1 && !s && (r.$el_text = L(e));
|
|
508
|
+
const o = E(e);
|
|
509
|
+
o.length > 0 && (r.classes = o.split(" ").filter(function(h) {
|
|
510
|
+
return h !== "";
|
|
511
|
+
})), f(e.attributes, function(h) {
|
|
512
|
+
M(e) && ["name", "id", "class"].indexOf(h.name) === -1 || !t && P(h.value) && !oe(h.name) && (r["attr__" + h.name] = h.value);
|
|
499
513
|
});
|
|
500
|
-
let
|
|
501
|
-
for (;
|
|
502
|
-
|
|
503
|
-
return
|
|
514
|
+
let c = 1, l = 1, a = e;
|
|
515
|
+
for (; a = this.previousElementSibling(a); )
|
|
516
|
+
c++, a.tagName === e.tagName && l++;
|
|
517
|
+
return r.nth_child = c, r.nth_of_type = l, r;
|
|
504
518
|
}
|
|
505
519
|
previousElementSibling(e) {
|
|
506
520
|
if (e.previousElementSibling)
|
|
507
521
|
return e.previousElementSibling;
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
522
|
+
{
|
|
523
|
+
let t = e;
|
|
524
|
+
do
|
|
525
|
+
t = t.previousSibling;
|
|
526
|
+
while (t && !q(t));
|
|
527
|
+
return t;
|
|
528
|
+
}
|
|
512
529
|
}
|
|
513
530
|
getDefaultProperties(e) {
|
|
514
531
|
return {
|
|
@@ -516,30 +533,6 @@ const y = class y {
|
|
|
516
533
|
$ce_version: 1
|
|
517
534
|
};
|
|
518
535
|
}
|
|
519
|
-
// Input sanitization and XSS prevention methods
|
|
520
|
-
sanitizeText(e) {
|
|
521
|
-
e = e.replace(/<[^>]*?>/g, ""), e = this.encodeHtml(e);
|
|
522
|
-
const t = this.options.propertiesStringMaxLength || 255;
|
|
523
|
-
return e.length > t && (e = e.substring(0, t) + "..."), e;
|
|
524
|
-
}
|
|
525
|
-
sanitizeUrl(e) {
|
|
526
|
-
if (!e) return "";
|
|
527
|
-
try {
|
|
528
|
-
const t = new URL(e, window.location.href);
|
|
529
|
-
return t.protocol !== "http:" && t.protocol !== "https:" ? "" : encodeURI(t.toString());
|
|
530
|
-
} catch {
|
|
531
|
-
return this.encodeHtml(e);
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
sanitizeAttributeValue(e, t) {
|
|
535
|
-
switch (e.toLowerCase()) {
|
|
536
|
-
case "href":
|
|
537
|
-
case "src":
|
|
538
|
-
return this.sanitizeUrl(t);
|
|
539
|
-
default:
|
|
540
|
-
return this.encodeHtml(t);
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
536
|
encodeHtml(e) {
|
|
544
537
|
return e.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
|
|
545
538
|
}
|
|
@@ -551,13 +544,10 @@ const y = class y {
|
|
|
551
544
|
n += e.charCodeAt(r);
|
|
552
545
|
return n % t < s;
|
|
553
546
|
}
|
|
554
|
-
static isBrowserSupported() {
|
|
555
|
-
return F(document.querySelectorAll);
|
|
556
|
-
}
|
|
557
547
|
};
|
|
558
|
-
|
|
559
|
-
let
|
|
560
|
-
class
|
|
548
|
+
C.FORCE_CAPTURE_ATTR = "data-um-force-capture", C.PREVENT_CAPTURE_ATTR = "data-um-no-capture";
|
|
549
|
+
let S = C;
|
|
550
|
+
class ge {
|
|
561
551
|
constructor(e) {
|
|
562
552
|
this.client = e, this.lastPageUrl = window.location.href, this.trackInitialPageview(), this.initializePageviewTracking();
|
|
563
553
|
}
|
|
@@ -586,8 +576,8 @@ class le {
|
|
|
586
576
|
}));
|
|
587
577
|
}
|
|
588
578
|
}
|
|
589
|
-
class
|
|
590
|
-
constructor(e, t, s =
|
|
579
|
+
class de {
|
|
580
|
+
constructor(e, t, s = g()) {
|
|
591
581
|
this.trackingHost = e, this.logger = s, this.config = t;
|
|
592
582
|
}
|
|
593
583
|
async send(e) {
|
|
@@ -599,13 +589,13 @@ class ue {
|
|
|
599
589
|
}
|
|
600
590
|
constructUrl(e) {
|
|
601
591
|
const t = this.config.cookiePolicy !== "keep" ? `&cookie_policy=${this.config.cookiePolicy}` : "", s = this.config.ipPolicy !== "keep" ? `&ip_policy=${this.config.ipPolicy}` : "", n = u() ? "/api/v1/event" : "/api/v1/s2s/event";
|
|
602
|
-
return this.config.randomizeUrl ? `${this.trackingHost}/api.${
|
|
592
|
+
return this.config.randomizeUrl ? `${this.trackingHost}/api.${p()}?p_${p()}=${e}${t}${s}` : `${this.trackingHost}${n}?token=${e}${t}${s}`;
|
|
603
593
|
}
|
|
604
594
|
// Note: Beacon API doesn't support custom headers, so we can't use them here.
|
|
605
595
|
// If custom headers are crucial, you might want to fall back to XHR or Fetch in those cases.
|
|
606
596
|
}
|
|
607
|
-
class
|
|
608
|
-
constructor(e, t, s =
|
|
597
|
+
class D {
|
|
598
|
+
constructor(e, t, s = g()) {
|
|
609
599
|
this.trackingHost = e, this.logger = s, this.config = t;
|
|
610
600
|
}
|
|
611
601
|
async send(e) {
|
|
@@ -623,7 +613,7 @@ class U {
|
|
|
623
613
|
}
|
|
624
614
|
constructUrl(e) {
|
|
625
615
|
const t = this.config.cookiePolicy !== "keep" ? `&cookie_policy=${this.config.cookiePolicy}` : "", s = this.config.ipPolicy !== "keep" ? `&ip_policy=${this.config.ipPolicy}` : "", n = u() ? "/api/v1/event" : "/api/v1/s2s/event";
|
|
626
|
-
return this.config.randomizeUrl ? `${this.trackingHost}/api.${
|
|
616
|
+
return this.config.randomizeUrl ? `${this.trackingHost}/api.${p()}?p_${p()}=${e}${t}${s}` : `${this.trackingHost}${n}?token=${e}${t}${s}`;
|
|
627
617
|
}
|
|
628
618
|
getCustomHeaders() {
|
|
629
619
|
return typeof this.config.customHeaders == "function" ? this.config.customHeaders() : this.config.customHeaders ? this.config.customHeaders : {};
|
|
@@ -632,8 +622,8 @@ class U {
|
|
|
632
622
|
this.logger.debug(`Response received. Status: ${e}, Body: ${t}`);
|
|
633
623
|
}
|
|
634
624
|
}
|
|
635
|
-
class
|
|
636
|
-
constructor(e, t, s =
|
|
625
|
+
class fe {
|
|
626
|
+
constructor(e, t, s = g()) {
|
|
637
627
|
this.trackingHost = e, this.logger = s, this.config = t;
|
|
638
628
|
}
|
|
639
629
|
send(e) {
|
|
@@ -652,7 +642,7 @@ class he {
|
|
|
652
642
|
}
|
|
653
643
|
constructUrl(e) {
|
|
654
644
|
const t = this.config.cookiePolicy !== "keep" ? `&cookie_policy=${this.config.cookiePolicy}` : "", s = this.config.ipPolicy !== "keep" ? `&ip_policy=${this.config.ipPolicy}` : "", n = u() ? "/api/v1/event" : "/api/v1/s2s/event";
|
|
655
|
-
return this.config.randomizeUrl ? `${this.trackingHost}/api.${
|
|
645
|
+
return this.config.randomizeUrl ? `${this.trackingHost}/api.${p()}?p_${p()}=${e}${t}${s}` : `${this.trackingHost}${n}?token=${e}${t}${s}`;
|
|
656
646
|
}
|
|
657
647
|
getCustomHeaders() {
|
|
658
648
|
return typeof this.config.customHeaders == "function" ? this.config.customHeaders() : this.config.customHeaders ? this.config.customHeaders : {};
|
|
@@ -661,9 +651,9 @@ class he {
|
|
|
661
651
|
this.logger.debug(`Response received. Status: ${e}, Body: ${t}`);
|
|
662
652
|
}
|
|
663
653
|
}
|
|
664
|
-
class
|
|
654
|
+
class V {
|
|
665
655
|
constructor(e, t) {
|
|
666
|
-
this.storage = {}, this.prefix = `usermaven_${e}_`, this.load(), this.logger = t ||
|
|
656
|
+
this.storage = {}, this.prefix = `usermaven_${e}_`, this.load(), this.logger = t || g();
|
|
667
657
|
}
|
|
668
658
|
set(e, t) {
|
|
669
659
|
this.storage[e] = t, this.save();
|
|
@@ -701,7 +691,7 @@ class J {
|
|
|
701
691
|
}
|
|
702
692
|
}
|
|
703
693
|
}
|
|
704
|
-
class
|
|
694
|
+
class pe {
|
|
705
695
|
constructor() {
|
|
706
696
|
this.storage = {};
|
|
707
697
|
}
|
|
@@ -720,10 +710,10 @@ class ge {
|
|
|
720
710
|
this.storage = {};
|
|
721
711
|
}
|
|
722
712
|
}
|
|
723
|
-
class
|
|
713
|
+
class F {
|
|
724
714
|
// Default to true for server-side
|
|
725
|
-
constructor(e, t = 3, s = 1e3, n = 10, r = 1e3, o =
|
|
726
|
-
this.transport = e, this.maxRetries = t, this.retryInterval = s, this.batchSize = n, this.batchInterval = r, this.logger = o, this.queue = [], this.processing = !1, this.batchTimeoutId = null, this.isOnline = !0, this.persistence = new
|
|
715
|
+
constructor(e, t = 3, s = 1e3, n = 10, r = 1e3, o = g()) {
|
|
716
|
+
this.transport = e, this.maxRetries = t, this.retryInterval = s, this.batchSize = n, this.batchInterval = r, this.logger = o, this.queue = [], this.processing = !1, this.batchTimeoutId = null, this.isOnline = !0, this.persistence = new V("offline_queue"), u() && (this.isOnline = navigator.onLine, this.loadQueueFromStorage(), this.initNetworkListeners(), this.scheduleBatch());
|
|
727
717
|
}
|
|
728
718
|
add(e) {
|
|
729
719
|
const t = { payload: e, retries: 0, timestamp: Date.now() };
|
|
@@ -767,7 +757,7 @@ class D {
|
|
|
767
757
|
u() && this.persistence.set("queue", JSON.stringify(this.queue));
|
|
768
758
|
}
|
|
769
759
|
}
|
|
770
|
-
class
|
|
760
|
+
class me {
|
|
771
761
|
constructor(e) {
|
|
772
762
|
this.clicks = [], this.threshold = 3, this.timeWindow = 2e3, this.distanceThreshold = 30, this.client = e, this.initializeEventListener(), z(this);
|
|
773
763
|
}
|
|
@@ -801,8 +791,8 @@ class de {
|
|
|
801
791
|
}), this.clicks = [];
|
|
802
792
|
}
|
|
803
793
|
}
|
|
804
|
-
class
|
|
805
|
-
constructor(e, t, s =
|
|
794
|
+
class ye {
|
|
795
|
+
constructor(e, t, s = g()) {
|
|
806
796
|
this.trackingHost = e, this.logger = s, this.config = t;
|
|
807
797
|
}
|
|
808
798
|
async send(e) {
|
|
@@ -837,7 +827,7 @@ class fe {
|
|
|
837
827
|
return typeof this.config.customHeaders == "function" ? this.config.customHeaders() : this.config.customHeaders ? this.config.customHeaders : {};
|
|
838
828
|
}
|
|
839
829
|
}
|
|
840
|
-
class
|
|
830
|
+
class y {
|
|
841
831
|
constructor(e, t = "all", s = {}) {
|
|
842
832
|
this.instance = e, this.trackingType = t, this.options = s, document.readyState === "loading" ? document.addEventListener("DOMContentLoaded", this.initialize.bind(this)) : this.initialize();
|
|
843
833
|
}
|
|
@@ -852,18 +842,18 @@ class m {
|
|
|
852
842
|
}
|
|
853
843
|
handleFormSubmit(e) {
|
|
854
844
|
const t = e.target, s = this._getFormDetails(t);
|
|
855
|
-
this.instance.track("$form",
|
|
845
|
+
this.instance.track("$form", R(s)), this.options.trackFieldChanges && this.trackFieldChanges(t);
|
|
856
846
|
}
|
|
857
847
|
trackFieldChanges(e) {
|
|
858
848
|
e.querySelectorAll("input, select, textarea").forEach((s) => {
|
|
859
849
|
s.addEventListener("change", (n) => {
|
|
860
850
|
const r = this._getFieldProps(n.target, 0);
|
|
861
|
-
this.instance.track("$form_field_change",
|
|
851
|
+
this.instance.track("$form_field_change", R(r));
|
|
862
852
|
});
|
|
863
853
|
});
|
|
864
854
|
}
|
|
865
855
|
static getInstance(e, t = "all", s = {}) {
|
|
866
|
-
return
|
|
856
|
+
return y.instance || (y.instance = new y(e, t, s)), y.instance;
|
|
867
857
|
}
|
|
868
858
|
_getFormDetails(e) {
|
|
869
859
|
const t = {
|
|
@@ -951,9 +941,9 @@ class m {
|
|
|
951
941
|
return e.slice(t, s + 1);
|
|
952
942
|
}
|
|
953
943
|
}
|
|
954
|
-
class
|
|
944
|
+
class we {
|
|
955
945
|
constructor(e) {
|
|
956
|
-
this.config = this.mergeConfig(e,
|
|
946
|
+
this.config = this.mergeConfig(e, U), this.logger = g(this.config.logLevel), this.namespace = e.namespace || "usermaven", this.transport = this.initializeTransport(this.config), this.persistence = this.initializePersistence(), this.retryQueue = new F(
|
|
957
947
|
this.transport,
|
|
958
948
|
this.config.maxSendAttempts || 3,
|
|
959
949
|
this.config.minSendTimeout || 1e3,
|
|
@@ -964,13 +954,13 @@ class pe {
|
|
|
964
954
|
), u() && this.initializeBrowserFeatures(), this.anonymousId = this.getOrCreateAnonymousId(), this.logger.info(`Usermaven client initialized for namespace: ${this.namespace}`);
|
|
965
955
|
}
|
|
966
956
|
initializeBrowserFeatures() {
|
|
967
|
-
if (this.cookieManager = new
|
|
957
|
+
if (this.cookieManager = new X(this.config.cookieDomain), this.config.autocapture && S.enabledForProject(this.config.key) && (this.autoCapture = new S(this, this.config, this.logger), this.autoCapture.init()), this.config.formTracking) {
|
|
968
958
|
const e = this.config.formTracking === !0 ? "all" : this.config.formTracking;
|
|
969
|
-
this.formTracking =
|
|
959
|
+
this.formTracking = y.getInstance(this, e || "none", {
|
|
970
960
|
trackFieldChanges: !1
|
|
971
961
|
});
|
|
972
962
|
}
|
|
973
|
-
this.config.autoPageview && (this.pageviewTracking = new
|
|
963
|
+
this.config.autoPageview && (this.pageviewTracking = new ge(this)), this.config.crossDomainLinking && this.manageCrossDomainLinking(), this.config.rageClick && (this.rageClick = new me(this)), this.setupPageLeaveTracking();
|
|
974
964
|
}
|
|
975
965
|
/**
|
|
976
966
|
* Recursively merge the provided configuration with the existing defaultConfig
|
|
@@ -985,7 +975,7 @@ class pe {
|
|
|
985
975
|
}), n;
|
|
986
976
|
}
|
|
987
977
|
init(e) {
|
|
988
|
-
this.config = { ...this.config, ...e }, this.logger =
|
|
978
|
+
this.config = { ...this.config, ...e }, this.logger = g(this.config.logLevel), this.namespace = e.namespace || this.namespace, this.transport = this.initializeTransport(e), this.persistence = this.initializePersistence(), this.retryQueue = new F(
|
|
989
979
|
this.transport,
|
|
990
980
|
this.config.maxSendAttempts || 3,
|
|
991
981
|
this.config.minSendTimeout || 1e3,
|
|
@@ -1018,59 +1008,48 @@ class pe {
|
|
|
1018
1008
|
return e;
|
|
1019
1009
|
}
|
|
1020
1010
|
initializeTransport(e) {
|
|
1011
|
+
const t = "https://events.usermaven.com";
|
|
1021
1012
|
if (!u())
|
|
1022
|
-
return new
|
|
1023
|
-
const
|
|
1024
|
-
if (e.useBeaconApi &&
|
|
1025
|
-
return new
|
|
1026
|
-
if (e.forceUseFetch &&
|
|
1027
|
-
return new
|
|
1028
|
-
if (t)
|
|
1029
|
-
return new he(e.trackingHost, e, this.logger);
|
|
1013
|
+
return new ye(e.trackingHost || t, e);
|
|
1014
|
+
const s = "XMLHttpRequest" in window, n = typeof fetch < "u", r = typeof navigator < "u" && "sendBeacon" in navigator;
|
|
1015
|
+
if (e.useBeaconApi && r)
|
|
1016
|
+
return new de(e.trackingHost || t, e, this.logger);
|
|
1017
|
+
if (e.forceUseFetch && n)
|
|
1018
|
+
return new D(e.trackingHost || t, e, this.logger);
|
|
1030
1019
|
if (s)
|
|
1031
|
-
return new
|
|
1020
|
+
return new fe(e.trackingHost || t, e, this.logger);
|
|
1021
|
+
if (n)
|
|
1022
|
+
return new D(e.trackingHost || t, e, this.logger);
|
|
1032
1023
|
throw new Error("No suitable transport method available");
|
|
1033
1024
|
}
|
|
1034
1025
|
initializePersistence() {
|
|
1035
|
-
return this.config.disableEventPersistence || !u() ? new
|
|
1026
|
+
return this.config.disableEventPersistence || !u() ? new pe() : new V(`${this.namespace}_${this.config.key}`, this.logger);
|
|
1036
1027
|
}
|
|
1037
1028
|
getOrCreateAnonymousId() {
|
|
1038
1029
|
var s, n;
|
|
1039
1030
|
if (!u())
|
|
1040
|
-
return
|
|
1031
|
+
return T();
|
|
1041
1032
|
if (this.config.privacyPolicy === "strict" || this.config.cookiePolicy === "strict")
|
|
1042
1033
|
return "";
|
|
1043
1034
|
const e = this.config.cookieName || `${this.namespace}_id_${this.config.key}`;
|
|
1044
1035
|
let t = (s = this.cookieManager) == null ? void 0 : s.get(e);
|
|
1045
1036
|
if (!t) {
|
|
1046
1037
|
if (this.config.crossDomainLinking) {
|
|
1047
|
-
const c = new URLSearchParams(window.location.search).get("_um"), a = window.location.hash.substring(1).split("~"),
|
|
1048
|
-
t = c ||
|
|
1038
|
+
const c = new URLSearchParams(window.location.search).get("_um"), a = window.location.hash.substring(1).split("~"), h = a.length > 1 ? a[1] : void 0;
|
|
1039
|
+
t = c || h || T();
|
|
1049
1040
|
}
|
|
1050
|
-
t || (t =
|
|
1041
|
+
t || (t = T());
|
|
1051
1042
|
const r = 365 * 10;
|
|
1052
1043
|
(n = this.cookieManager) == null || n.set(e, t, r, document.location.protocol !== "http:", !1);
|
|
1053
1044
|
}
|
|
1054
1045
|
return t;
|
|
1055
1046
|
}
|
|
1056
|
-
generateFingerprint() {
|
|
1057
|
-
const e = navigator.userAgent, t = `${screen.width}x${screen.height}`, s = screen.colorDepth, n = Intl.DateTimeFormat().resolvedOptions().timeZone, r = `${e}|${t}|${s}|${n}`;
|
|
1058
|
-
return this.hashString(r);
|
|
1059
|
-
}
|
|
1060
|
-
hashString(e) {
|
|
1061
|
-
let t = 0;
|
|
1062
|
-
for (let s = 0; s < e.length; s++) {
|
|
1063
|
-
const n = e.charCodeAt(s);
|
|
1064
|
-
t = (t << 5) - t + n, t = t & t;
|
|
1065
|
-
}
|
|
1066
|
-
return t.toString(36);
|
|
1067
|
-
}
|
|
1068
1047
|
async id(e, t = !1) {
|
|
1069
1048
|
if (!k(e))
|
|
1070
1049
|
throw new Error("User data must be an object");
|
|
1071
|
-
if (e.email && !
|
|
1050
|
+
if (e.email && !ae(e.email))
|
|
1072
1051
|
throw new Error("Invalid email provided");
|
|
1073
|
-
if (!e.id || !
|
|
1052
|
+
if (!e.id || !I(e.id))
|
|
1074
1053
|
throw new Error("User ID must be a string");
|
|
1075
1054
|
const s = e.id;
|
|
1076
1055
|
if (this.persistence.set("userId", s), this.persistence.set("userProps", e), !t) {
|
|
@@ -1086,7 +1065,7 @@ class pe {
|
|
|
1086
1065
|
this.trackInternal(e, t, s);
|
|
1087
1066
|
}
|
|
1088
1067
|
trackInternal(e, t, s = !1) {
|
|
1089
|
-
if (!
|
|
1068
|
+
if (!I(e))
|
|
1090
1069
|
throw new Error("Event name must be a string");
|
|
1091
1070
|
if (t !== void 0 && (typeof t != "object" || t === null || Array.isArray(t)))
|
|
1092
1071
|
throw new Error("Event payload must be a non-null object and not an array");
|
|
@@ -1114,7 +1093,7 @@ class pe {
|
|
|
1114
1093
|
this.persistence.set("companyProps", e), t || await this.track("group", e), this.logger.info("Company identified:", e);
|
|
1115
1094
|
}
|
|
1116
1095
|
createEventPayload(e, t) {
|
|
1117
|
-
const s = this.persistence.get("userProps") || {}, n = this.persistence.get("companyProps") || void 0, r = this.persistence.get("userId"), o = this.persistence.get("global_props") || {}, c = this.persistence.get(`props_${e}`) || {};
|
|
1096
|
+
const s = this.persistence.get("userProps") || {}, n = this.persistence.get("companyProps") || (s == null ? void 0 : s.company) || {}, r = this.persistence.get("userId"), o = this.persistence.get("global_props") || {}, c = this.persistence.get(`props_${e}`) || {};
|
|
1118
1097
|
let l = t || {};
|
|
1119
1098
|
const a = {
|
|
1120
1099
|
event_id: "",
|
|
@@ -1135,12 +1114,11 @@ class pe {
|
|
|
1135
1114
|
...c
|
|
1136
1115
|
};
|
|
1137
1116
|
if (e === "$autocapture") {
|
|
1138
|
-
const
|
|
1139
|
-
a.autocapture_attributes =
|
|
1140
|
-
} else
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
}), a.event_attributes = l;
|
|
1117
|
+
const h = this.processAutocaptureAttributes(t || {});
|
|
1118
|
+
a.autocapture_attributes = h;
|
|
1119
|
+
} else e !== "user_identify" && e !== "group" && (Array.isArray(this.config.propertyBlacklist) && this.config.propertyBlacklist.forEach((h) => {
|
|
1120
|
+
delete l[h];
|
|
1121
|
+
}), a.event_attributes = l);
|
|
1144
1122
|
return u() && (a.referer = document.referrer, a.url = window.location.href, a.page_title = document.title, a.doc_path = window.location.pathname, a.doc_host = window.location.hostname, a.doc_search = window.location.search, a.screen_resolution = `${window.screen.width}x${window.screen.height}`, a.vp_size = `${window.innerWidth}x${window.innerHeight}`, a.user_agent = navigator.userAgent, a.user_language = navigator.language, a.doc_encoding = document.characterSet, a.utm = this.getUtmParams()), a;
|
|
1145
1123
|
}
|
|
1146
1124
|
processAutocaptureAttributes(e) {
|
|
@@ -1163,7 +1141,7 @@ class pe {
|
|
|
1163
1141
|
return e;
|
|
1164
1142
|
}
|
|
1165
1143
|
getUtmParams() {
|
|
1166
|
-
const e = {}, t =
|
|
1144
|
+
const e = {}, t = le(window.location.search);
|
|
1167
1145
|
return ["utm_source", "utm_medium", "utm_campaign", "utm_term", "utm_content"].forEach((n) => {
|
|
1168
1146
|
t[n] && (e[n.replace("utm_", "")] = t[n]);
|
|
1169
1147
|
}), e;
|
|
@@ -1244,20 +1222,20 @@ class pe {
|
|
|
1244
1222
|
n && this.persistence.save(), this.logger.debug(`Property unset: ${e}`, `Event type: ${s || "global"}`);
|
|
1245
1223
|
}
|
|
1246
1224
|
}
|
|
1247
|
-
function
|
|
1248
|
-
const e = JSON.parse(JSON.stringify(i)), t =
|
|
1225
|
+
function ke(i) {
|
|
1226
|
+
const e = JSON.parse(JSON.stringify(i)), t = H(e), s = { ...U, ...t };
|
|
1249
1227
|
if (!s.key)
|
|
1250
1228
|
throw new Error("API key is required!");
|
|
1251
1229
|
if (!s.trackingHost)
|
|
1252
1230
|
throw new Error("Tracking host is required!");
|
|
1253
|
-
return new
|
|
1231
|
+
return new we(s);
|
|
1254
1232
|
}
|
|
1255
|
-
function
|
|
1233
|
+
function ve(i) {
|
|
1256
1234
|
var n;
|
|
1257
1235
|
const e = {
|
|
1258
1236
|
key: i.getAttribute("data-key") || void 0,
|
|
1259
1237
|
trackingHost: i.getAttribute("data-tracking-host") || "https://events.usermaven.com",
|
|
1260
|
-
logLevel:
|
|
1238
|
+
logLevel: ue(i.getAttribute("data-log-level")),
|
|
1261
1239
|
autocapture: i.getAttribute("data-autocapture") === "true",
|
|
1262
1240
|
formTracking: i.getAttribute("data-form-tracking") === "false" ? !1 : i.getAttribute("data-form-tracking") === "true" ? "all" : i.getAttribute("data-form-tracking"),
|
|
1263
1241
|
autoPageview: i.getAttribute("data-auto-pageview") === "true",
|
|
@@ -1282,10 +1260,10 @@ function ye(i) {
|
|
|
1282
1260
|
domains: i.getAttribute("data-domains") || void 0,
|
|
1283
1261
|
maskAllText: i.getAttribute("data-mask-all-text") === "true",
|
|
1284
1262
|
maskAllElementAttributes: i.getAttribute("data-mask-all-element-attributes") === "true"
|
|
1285
|
-
}, t =
|
|
1286
|
-
u() && t.pageview(),
|
|
1263
|
+
}, t = ke(e), s = e.namespace || "usermaven";
|
|
1264
|
+
u() && t.pageview(), _e(s, t);
|
|
1287
1265
|
}
|
|
1288
|
-
function
|
|
1266
|
+
function _e(i, e) {
|
|
1289
1267
|
let t = !1;
|
|
1290
1268
|
const s = [], n = [];
|
|
1291
1269
|
function r() {
|
|
@@ -1298,8 +1276,8 @@ function we(i, e) {
|
|
|
1298
1276
|
n.forEach((a) => a()), n.length = 0;
|
|
1299
1277
|
}
|
|
1300
1278
|
window[i] = function(...a) {
|
|
1301
|
-
const
|
|
1302
|
-
if (
|
|
1279
|
+
const h = a[0];
|
|
1280
|
+
if (h === "onLoad") {
|
|
1303
1281
|
typeof a[1] == "function" && (t ? a[1]() : n.push(a[1]));
|
|
1304
1282
|
return;
|
|
1305
1283
|
}
|
|
@@ -1307,9 +1285,9 @@ function we(i, e) {
|
|
|
1307
1285
|
s.push(a);
|
|
1308
1286
|
return;
|
|
1309
1287
|
}
|
|
1310
|
-
if (typeof e[
|
|
1311
|
-
return e[
|
|
1312
|
-
console.error(`Method ${
|
|
1288
|
+
if (typeof e[h] == "function")
|
|
1289
|
+
return e[h].apply(e, a.slice(1));
|
|
1290
|
+
console.error(`Method ${h} not found on UsermavenClient`);
|
|
1313
1291
|
};
|
|
1314
1292
|
const c = `${i}Q`, l = window[c] || [];
|
|
1315
1293
|
for (window[c] = l, l.push = function(...a) {
|
|
@@ -1324,13 +1302,13 @@ function we(i, e) {
|
|
|
1324
1302
|
u() && function(i, e) {
|
|
1325
1303
|
const t = i.currentScript;
|
|
1326
1304
|
function s() {
|
|
1327
|
-
t && t.src.includes("lib.js") &&
|
|
1305
|
+
t && t.src.includes("lib.js") && ve(t);
|
|
1328
1306
|
}
|
|
1329
1307
|
typeof e < "u" && (i.readyState === "loading" ? i.addEventListener("DOMContentLoaded", s) : s());
|
|
1330
1308
|
}(document, window);
|
|
1331
1309
|
|
|
1332
1310
|
function createClient(params) {
|
|
1333
|
-
return
|
|
1311
|
+
return ke(params);
|
|
1334
1312
|
}
|
|
1335
1313
|
|
|
1336
1314
|
function useUsermaven() {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usermaven/nextjs",
|
|
3
|
-
"version": "1.4.1-rc.
|
|
3
|
+
"version": "1.4.1-rc.64",
|
|
4
4
|
"description": "Usermaven JavaScript SDK for NextJS",
|
|
5
5
|
"author": "Usermaven <hello@usermaven.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"access": "public"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@usermaven/sdk-js": "1.4.1-rc.
|
|
21
|
+
"@usermaven/sdk-js": "1.4.1-rc.64",
|
|
22
22
|
"cookie": "^0.5.0"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|