clarity-js 0.8.20 → 0.8.22
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/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +273 -123
- package/build/clarity.min.js +1 -1
- package/build/clarity.module.js +273 -123
- package/build/clarity.performance.js +1 -1
- package/package.json +1 -1
- package/src/core/version.ts +1 -1
- package/src/data/metadata.ts +1 -1
- package/src/data/upload.ts +19 -3
- package/src/interaction/click.ts +1 -1
- package/src/interaction/pointer.ts +2 -2
- package/src/interaction/resize.ts +6 -2
- package/src/performance/blank.ts +1 -0
- package/src/performance/observer.ts +1 -1
- package/types/data.d.ts +2 -0
package/build/clarity.module.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
var dom = /*#__PURE__*/Object.freeze({
|
|
2
2
|
__proto__: null,
|
|
3
|
-
get add () { return add; },
|
|
3
|
+
get add () { return add$1; },
|
|
4
4
|
get get () { return get; },
|
|
5
|
-
get getId () { return getId; },
|
|
5
|
+
get getId () { return getId$1; },
|
|
6
6
|
get getNode () { return getNode; },
|
|
7
7
|
get getValue () { return getValue; },
|
|
8
8
|
get has () { return has$1; },
|
|
@@ -187,7 +187,7 @@ function stop$F() {
|
|
|
187
187
|
startTime = 0;
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
var version$1 = "0.8.
|
|
190
|
+
var version$1 = "0.8.22";
|
|
191
191
|
|
|
192
192
|
// tslint:disable: no-bitwise
|
|
193
193
|
function hash (input, precision) {
|
|
@@ -1257,7 +1257,7 @@ function recompute$8(evt) {
|
|
|
1257
1257
|
var value = element.value;
|
|
1258
1258
|
var checksum = value && value.length >= 5 /* Setting.WordLength */ && config$2.fraud && "password,secret,pass,social,ssn,code,hidden" /* Mask.Exclude */.indexOf(element.type) === -1 ? hash(value, 28 /* Setting.ChecksumPrecision */) : "" /* Constant.Empty */;
|
|
1259
1259
|
state$a.push({ time: time(evt), event: 42 /* Event.Change */, data: { target: target(evt), type: element.type, value: value, checksum: checksum } });
|
|
1260
|
-
schedule(encode$
|
|
1260
|
+
schedule(encode$4.bind(this, 42 /* Event.Change */));
|
|
1261
1261
|
}
|
|
1262
1262
|
}
|
|
1263
1263
|
function reset$m() {
|
|
@@ -1295,7 +1295,7 @@ function observe$b(root) {
|
|
|
1295
1295
|
function handler$3(event, root, evt) {
|
|
1296
1296
|
handler$3.dn = 6 /* FunctionNames.ClickHandler */;
|
|
1297
1297
|
var frame = iframe(root);
|
|
1298
|
-
var d = frame ? frame.contentDocument.documentElement : document.documentElement;
|
|
1298
|
+
var d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
1299
1299
|
var x = "pageX" in evt ? Math.round(evt.pageX) : ("clientX" in evt ? Math.round(evt["clientX"] + d.scrollLeft) : null);
|
|
1300
1300
|
var y = "pageY" in evt ? Math.round(evt.pageY) : ("clientY" in evt ? Math.round(evt["clientY"] + d.scrollTop) : null);
|
|
1301
1301
|
// In case of iframe, we adjust (x,y) to be relative to top parent's origin
|
|
@@ -1341,7 +1341,7 @@ function handler$3(event, root, evt) {
|
|
|
1341
1341
|
isFullText: textInfo.isFullText,
|
|
1342
1342
|
}
|
|
1343
1343
|
});
|
|
1344
|
-
schedule(encode$
|
|
1344
|
+
schedule(encode$4.bind(this, event));
|
|
1345
1345
|
}
|
|
1346
1346
|
}
|
|
1347
1347
|
function link(node) {
|
|
@@ -1432,7 +1432,7 @@ function observe$a(root) {
|
|
|
1432
1432
|
function recompute$7(action, evt) {
|
|
1433
1433
|
recompute$7.dn = 7 /* FunctionNames.ClipboardRecompute */;
|
|
1434
1434
|
state$8.push({ time: time(evt), event: 38 /* Event.Clipboard */, data: { target: target(evt), action: action } });
|
|
1435
|
-
schedule(encode$
|
|
1435
|
+
schedule(encode$4.bind(this, 38 /* Event.Clipboard */));
|
|
1436
1436
|
}
|
|
1437
1437
|
function reset$k() {
|
|
1438
1438
|
state$8 = [];
|
|
@@ -1473,7 +1473,7 @@ function recompute$6(evt) {
|
|
|
1473
1473
|
}
|
|
1474
1474
|
}
|
|
1475
1475
|
function process$7(event) {
|
|
1476
|
-
schedule(encode$
|
|
1476
|
+
schedule(encode$4.bind(this, event));
|
|
1477
1477
|
}
|
|
1478
1478
|
function reset$j() {
|
|
1479
1479
|
state$7 = [];
|
|
@@ -1505,7 +1505,7 @@ function observe$8(root) {
|
|
|
1505
1505
|
function mouse(event, root, evt) {
|
|
1506
1506
|
mouse.dn = 10 /* FunctionNames.PointerMouse */;
|
|
1507
1507
|
var frame = iframe(root);
|
|
1508
|
-
var d = frame ? frame.contentDocument.documentElement : document.documentElement;
|
|
1508
|
+
var d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
1509
1509
|
var x = "pageX" in evt ? Math.round(evt.pageX) : ("clientX" in evt ? Math.round(evt["clientX"] + d.scrollLeft) : null);
|
|
1510
1510
|
var y = "pageY" in evt ? Math.round(evt.pageY) : ("clientY" in evt ? Math.round(evt["clientY"] + d.scrollTop) : null);
|
|
1511
1511
|
// In case of iframe, we adjust (x,y) to be relative to top parent's origin
|
|
@@ -1522,7 +1522,7 @@ function mouse(event, root, evt) {
|
|
|
1522
1522
|
function touch(event, root, evt) {
|
|
1523
1523
|
touch.dn = 11 /* FunctionNames.PointerTouch */;
|
|
1524
1524
|
var frame = iframe(root);
|
|
1525
|
-
var d = frame ? frame.contentDocument.documentElement : document.documentElement;
|
|
1525
|
+
var d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;
|
|
1526
1526
|
var touches = evt.changedTouches;
|
|
1527
1527
|
var t = time(evt);
|
|
1528
1528
|
if (touches) {
|
|
@@ -1584,7 +1584,7 @@ function handler$2(current) {
|
|
|
1584
1584
|
}
|
|
1585
1585
|
}
|
|
1586
1586
|
function process$6(event) {
|
|
1587
|
-
schedule(encode$
|
|
1587
|
+
schedule(encode$4.bind(this, event));
|
|
1588
1588
|
}
|
|
1589
1589
|
function reset$i() {
|
|
1590
1590
|
state$6 = [];
|
|
@@ -1606,43 +1606,6 @@ function stop$t() {
|
|
|
1606
1606
|
}
|
|
1607
1607
|
}
|
|
1608
1608
|
|
|
1609
|
-
var data$c;
|
|
1610
|
-
var timeout$4 = null;
|
|
1611
|
-
var initialStateLogged = false;
|
|
1612
|
-
function start$u() {
|
|
1613
|
-
initialStateLogged = false;
|
|
1614
|
-
bind(window, "resize", recompute$5);
|
|
1615
|
-
recompute$5();
|
|
1616
|
-
}
|
|
1617
|
-
function recompute$5() {
|
|
1618
|
-
recompute$5.dn = 12 /* FunctionNames.ResizeRecompute */;
|
|
1619
|
-
var de = document.documentElement;
|
|
1620
|
-
// window.innerWidth includes width of the scrollbar and is not a true representation of the viewport width.
|
|
1621
|
-
// Therefore, when possible, use documentElement's clientWidth property.
|
|
1622
|
-
data$c = {
|
|
1623
|
-
width: de && "clientWidth" in de ? Math.min(de.clientWidth, window.innerWidth) : window.innerWidth,
|
|
1624
|
-
height: de && "clientHeight" in de ? Math.min(de.clientHeight, window.innerHeight) : window.innerHeight,
|
|
1625
|
-
};
|
|
1626
|
-
if (initialStateLogged) {
|
|
1627
|
-
clearTimeout$1(timeout$4);
|
|
1628
|
-
timeout$4 = setTimeout$1(process$5, 500 /* Setting.LookAhead */, 11 /* Event.Resize */);
|
|
1629
|
-
}
|
|
1630
|
-
else {
|
|
1631
|
-
encode$3(11 /* Event.Resize */);
|
|
1632
|
-
initialStateLogged = true;
|
|
1633
|
-
}
|
|
1634
|
-
}
|
|
1635
|
-
function process$5(event) {
|
|
1636
|
-
schedule(encode$3.bind(this, event));
|
|
1637
|
-
}
|
|
1638
|
-
function reset$h() {
|
|
1639
|
-
data$c = null;
|
|
1640
|
-
clearTimeout$1(timeout$4);
|
|
1641
|
-
}
|
|
1642
|
-
function stop$s() {
|
|
1643
|
-
reset$h();
|
|
1644
|
-
}
|
|
1645
|
-
|
|
1646
1609
|
/**
|
|
1647
1610
|
* Creates a throttled version of the provided function that only executes at most once
|
|
1648
1611
|
* every specified duration in milliseconds, ensuring the last event is not lost.
|
|
@@ -1691,6 +1654,45 @@ function throttle(func, duration) {
|
|
|
1691
1654
|
return throttledFunction;
|
|
1692
1655
|
}
|
|
1693
1656
|
|
|
1657
|
+
var data$c;
|
|
1658
|
+
var timeout$4 = null;
|
|
1659
|
+
var initialStateLogged = false;
|
|
1660
|
+
var throttledRecompute$1 = throttle(recompute$5, 500 /* Setting.LookAhead */);
|
|
1661
|
+
function start$u() {
|
|
1662
|
+
initialStateLogged = false;
|
|
1663
|
+
bind(window, "resize", throttledRecompute$1);
|
|
1664
|
+
recompute$5();
|
|
1665
|
+
}
|
|
1666
|
+
function recompute$5() {
|
|
1667
|
+
recompute$5.dn = 12 /* FunctionNames.ResizeRecompute */;
|
|
1668
|
+
var de = document.documentElement;
|
|
1669
|
+
// window.innerWidth includes width of the scrollbar and is not a true representation of the viewport width.
|
|
1670
|
+
// Therefore, when possible, use documentElement's clientWidth property.
|
|
1671
|
+
data$c = {
|
|
1672
|
+
width: de && "clientWidth" in de ? Math.min(de.clientWidth, window.innerWidth) : window.innerWidth,
|
|
1673
|
+
height: de && "clientHeight" in de ? Math.min(de.clientHeight, window.innerHeight) : window.innerHeight,
|
|
1674
|
+
};
|
|
1675
|
+
if (initialStateLogged) {
|
|
1676
|
+
clearTimeout$1(timeout$4);
|
|
1677
|
+
timeout$4 = setTimeout$1(process$5, 500 /* Setting.LookAhead */, 11 /* Event.Resize */);
|
|
1678
|
+
}
|
|
1679
|
+
else {
|
|
1680
|
+
encode$4(11 /* Event.Resize */);
|
|
1681
|
+
initialStateLogged = true;
|
|
1682
|
+
}
|
|
1683
|
+
}
|
|
1684
|
+
function process$5(event) {
|
|
1685
|
+
schedule(encode$4.bind(this, event));
|
|
1686
|
+
}
|
|
1687
|
+
function reset$h() {
|
|
1688
|
+
data$c = null;
|
|
1689
|
+
clearTimeout$1(timeout$4);
|
|
1690
|
+
throttledRecompute$1.cleanup();
|
|
1691
|
+
}
|
|
1692
|
+
function stop$s() {
|
|
1693
|
+
reset$h();
|
|
1694
|
+
}
|
|
1695
|
+
|
|
1694
1696
|
var state$5 = [];
|
|
1695
1697
|
var initialTop = null;
|
|
1696
1698
|
var initialBottom = null;
|
|
@@ -1774,7 +1776,7 @@ function reset$g() {
|
|
|
1774
1776
|
initialBottom = null;
|
|
1775
1777
|
}
|
|
1776
1778
|
function process$4(event) {
|
|
1777
|
-
schedule(encode$
|
|
1779
|
+
schedule(encode$4.bind(this, event));
|
|
1778
1780
|
}
|
|
1779
1781
|
function similar(last, current) {
|
|
1780
1782
|
var dx = last.data.x - current.data.x;
|
|
@@ -1843,7 +1845,7 @@ function recompute$3(root) {
|
|
|
1843
1845
|
timeout$2 = setTimeout$1(process$3, 500 /* Setting.LookAhead */, 21 /* Event.Selection */);
|
|
1844
1846
|
}
|
|
1845
1847
|
function process$3(event) {
|
|
1846
|
-
schedule(encode$
|
|
1848
|
+
schedule(encode$4.bind(this, event));
|
|
1847
1849
|
}
|
|
1848
1850
|
function reset$f() {
|
|
1849
1851
|
previous = null;
|
|
@@ -1864,7 +1866,7 @@ function observe$5(root) {
|
|
|
1864
1866
|
function recompute$2(evt) {
|
|
1865
1867
|
recompute$2.dn = 16 /* FunctionNames.SubmitRecompute */;
|
|
1866
1868
|
state$4.push({ time: time(evt), event: 39 /* Event.Submit */, data: { target: target(evt) } });
|
|
1867
|
-
schedule(encode$
|
|
1869
|
+
schedule(encode$4.bind(this, 39 /* Event.Submit */));
|
|
1868
1870
|
}
|
|
1869
1871
|
function reset$e() {
|
|
1870
1872
|
state$4 = [];
|
|
@@ -1880,7 +1882,7 @@ function start$q() {
|
|
|
1880
1882
|
function recompute$1(evt) {
|
|
1881
1883
|
recompute$1.dn = 17 /* FunctionNames.UnloadRecompute */;
|
|
1882
1884
|
data$a = { name: evt.type, persisted: evt.persisted ? 1 /* BooleanFlag.True */ : 0 /* BooleanFlag.False */ };
|
|
1883
|
-
encode$
|
|
1885
|
+
encode$4(26 /* Event.Unload */, time(evt));
|
|
1884
1886
|
stop();
|
|
1885
1887
|
}
|
|
1886
1888
|
function reset$d() {
|
|
@@ -1899,7 +1901,7 @@ function recompute(evt) {
|
|
|
1899
1901
|
if (evt === void 0) { evt = null; }
|
|
1900
1902
|
recompute.dn = 18 /* FunctionNames.VisibilityRecompute */;
|
|
1901
1903
|
data$9 = { visible: "visibilityState" in document ? document.visibilityState : "default" };
|
|
1902
|
-
encode$
|
|
1904
|
+
encode$4(28 /* Event.Visibility */, time(evt));
|
|
1903
1905
|
}
|
|
1904
1906
|
function reset$c() {
|
|
1905
1907
|
data$9 = null;
|
|
@@ -2078,13 +2080,13 @@ function checkDocumentStyles(documentNode, timestamp) {
|
|
|
2078
2080
|
}
|
|
2079
2081
|
currentStyleSheets.push(styleSheet[styleSheetId]);
|
|
2080
2082
|
}
|
|
2081
|
-
var documentId = getId(documentNode, true);
|
|
2083
|
+
var documentId = getId$1(documentNode, true);
|
|
2082
2084
|
if (!styleSheetMap[documentId]) {
|
|
2083
2085
|
styleSheetMap[documentId] = [];
|
|
2084
2086
|
}
|
|
2085
2087
|
if (!arraysEqual(currentStyleSheets, styleSheetMap[documentId])) {
|
|
2086
2088
|
// Using -1 to signify the root document node as we don't track that as part of our nodeMap
|
|
2087
|
-
trackStyleAdoption(timestamp, documentNode == document ? -1 : getId(documentNode), 3 /* StyleSheetOperation.SetAdoptedStyles */, currentStyleSheets);
|
|
2089
|
+
trackStyleAdoption(timestamp, documentNode == document ? -1 : getId$1(documentNode), 3 /* StyleSheetOperation.SetAdoptedStyles */, currentStyleSheets);
|
|
2088
2090
|
styleSheetMap[documentId] = currentStyleSheets;
|
|
2089
2091
|
styleTimeMap[documentId] = timestamp;
|
|
2090
2092
|
}
|
|
@@ -2092,7 +2094,7 @@ function checkDocumentStyles(documentNode, timestamp) {
|
|
|
2092
2094
|
function compute$7() {
|
|
2093
2095
|
for (var _i = 0, documentNodes_1 = documentNodes; _i < documentNodes_1.length; _i++) {
|
|
2094
2096
|
var documentNode = documentNodes_1[_i];
|
|
2095
|
-
var docId = documentNode == document ? -1 : getId(documentNode);
|
|
2097
|
+
var docId = documentNode == document ? -1 : getId$1(documentNode);
|
|
2096
2098
|
var ts = docId in styleTimeMap ? styleTimeMap[docId] : null;
|
|
2097
2099
|
checkDocumentStyles(documentNode, ts);
|
|
2098
2100
|
}
|
|
@@ -2118,7 +2120,7 @@ function trackStyleChange(time, id, operation, cssRules) {
|
|
|
2118
2120
|
cssRules: cssRules
|
|
2119
2121
|
}
|
|
2120
2122
|
});
|
|
2121
|
-
encode$
|
|
2123
|
+
encode$5(46 /* Event.StyleSheetUpdate */);
|
|
2122
2124
|
}
|
|
2123
2125
|
function trackStyleAdoption(time, id, operation, newIds) {
|
|
2124
2126
|
sheetAdoptionState.push({
|
|
@@ -2130,7 +2132,7 @@ function trackStyleAdoption(time, id, operation, newIds) {
|
|
|
2130
2132
|
newIds: newIds
|
|
2131
2133
|
}
|
|
2132
2134
|
});
|
|
2133
|
-
encode$
|
|
2135
|
+
encode$5(45 /* Event.StyleSheetAdoption */);
|
|
2134
2136
|
}
|
|
2135
2137
|
function arraysEqual(a, b) {
|
|
2136
2138
|
if (a.length !== b.length) {
|
|
@@ -2202,7 +2204,7 @@ function track$6(time, id, operation, keyFrames, timing, targetId, timeline) {
|
|
|
2202
2204
|
timeline: timeline
|
|
2203
2205
|
}
|
|
2204
2206
|
});
|
|
2205
|
-
encode$
|
|
2207
|
+
encode$5(44 /* Event.Animation */);
|
|
2206
2208
|
}
|
|
2207
2209
|
function stop$k() {
|
|
2208
2210
|
reset$a();
|
|
@@ -2219,7 +2221,7 @@ function overrideAnimationHelper(functionToOverride, name) {
|
|
|
2219
2221
|
function trackAnimationOperation(animation, name) {
|
|
2220
2222
|
if (active()) {
|
|
2221
2223
|
var effect = animation.effect;
|
|
2222
|
-
var target = (effect === null || effect === void 0 ? void 0 : effect.target) ? getId(effect.target) : null;
|
|
2224
|
+
var target = (effect === null || effect === void 0 ? void 0 : effect.target) ? getId$1(effect.target) : null;
|
|
2223
2225
|
if (target !== null && effect.getKeyframes && effect.getTiming) {
|
|
2224
2226
|
if (!animation[animationId]) {
|
|
2225
2227
|
animation[animationId] = shortid();
|
|
@@ -2255,7 +2257,7 @@ function trackAnimationOperation(animation, name) {
|
|
|
2255
2257
|
}
|
|
2256
2258
|
}
|
|
2257
2259
|
|
|
2258
|
-
function encode$
|
|
2260
|
+
function encode$5 (type, timer, ts) {
|
|
2259
2261
|
if (timer === void 0) { timer = null; }
|
|
2260
2262
|
if (ts === void 0) { ts = null; }
|
|
2261
2263
|
return __awaiter(this, void 0, void 0, function () {
|
|
@@ -2380,7 +2382,7 @@ function encode$4 (type, timer, ts) {
|
|
|
2380
2382
|
case "attributes":
|
|
2381
2383
|
for (attr in data[key]) {
|
|
2382
2384
|
if (data[key][attr] !== undefined) {
|
|
2383
|
-
tokens.push(attribute(attr, data[key][attr], privacy));
|
|
2385
|
+
tokens.push(attribute$1(attr, data[key][attr], privacy));
|
|
2384
2386
|
}
|
|
2385
2387
|
}
|
|
2386
2388
|
break;
|
|
@@ -2423,7 +2425,7 @@ function size(value) {
|
|
|
2423
2425
|
function str(input) {
|
|
2424
2426
|
return input.toString(36);
|
|
2425
2427
|
}
|
|
2426
|
-
function attribute(key, value, privacy) {
|
|
2428
|
+
function attribute$1(key, value, privacy) {
|
|
2427
2429
|
return "".concat(key, "=").concat(text$1(value, key.indexOf("data-" /* Constant.DataAttribute */) === 0 ? "data-" /* Constant.DataAttribute */ : key, privacy));
|
|
2428
2430
|
}
|
|
2429
2431
|
|
|
@@ -2456,14 +2458,14 @@ function compute$6() {
|
|
|
2456
2458
|
// Check that width or height has changed from before, and also that width & height are not null values
|
|
2457
2459
|
if ((data$8 === null || width !== data$8.width || height !== data$8.height) && width !== null && height !== null) {
|
|
2458
2460
|
data$8 = { width: width, height: height };
|
|
2459
|
-
encode$
|
|
2461
|
+
encode$5(8 /* Event.Document */);
|
|
2460
2462
|
}
|
|
2461
2463
|
}
|
|
2462
2464
|
function stop$j() {
|
|
2463
2465
|
reset$9();
|
|
2464
2466
|
}
|
|
2465
2467
|
|
|
2466
|
-
function traverse (root, timer, source, timestamp) {
|
|
2468
|
+
function traverse$1 (root, timer, source, timestamp) {
|
|
2467
2469
|
return __awaiter(this, void 0, void 0, function () {
|
|
2468
2470
|
var queue, entry, next, state$1, subnode;
|
|
2469
2471
|
return __generator(this, function (_a) {
|
|
@@ -2656,7 +2658,7 @@ function process$2() {
|
|
|
2656
2658
|
case 4:
|
|
2657
2659
|
_i++;
|
|
2658
2660
|
return [3 /*break*/, 2];
|
|
2659
|
-
case 5: return [4 /*yield*/, encode$
|
|
2661
|
+
case 5: return [4 /*yield*/, encode$5(6 /* Event.Mutation */, timer, record.time)];
|
|
2660
2662
|
case 6:
|
|
2661
2663
|
_d.sent();
|
|
2662
2664
|
return [3 /*break*/, 1];
|
|
@@ -2682,7 +2684,7 @@ function process$2() {
|
|
|
2682
2684
|
processThrottledMutations();
|
|
2683
2685
|
}
|
|
2684
2686
|
if (!(Object.keys(throttledMutations).length === 0 && processedMutations)) return [3 /*break*/, 13];
|
|
2685
|
-
return [4 /*yield*/, encode$
|
|
2687
|
+
return [4 /*yield*/, encode$5(6 /* Event.Mutation */, timer, time())];
|
|
2686
2688
|
case 12:
|
|
2687
2689
|
_d.sent();
|
|
2688
2690
|
_d.label = 13;
|
|
@@ -2769,7 +2771,7 @@ function processNodeList(list, source, timer, timestamp) {
|
|
|
2769
2771
|
if (!(i < length)) return [3 /*break*/, 6];
|
|
2770
2772
|
node = list[i];
|
|
2771
2773
|
if (!(source === 1 /* Source.ChildListAdd */)) return [3 /*break*/, 2];
|
|
2772
|
-
traverse(node, timer, source, timestamp);
|
|
2774
|
+
traverse$1(node, timer, source, timestamp);
|
|
2773
2775
|
return [3 /*break*/, 5];
|
|
2774
2776
|
case 2:
|
|
2775
2777
|
state$1 = state(timer);
|
|
@@ -3055,7 +3057,7 @@ function processNode (node, source, timestamp) {
|
|
|
3055
3057
|
case Node.ELEMENT_NODE:
|
|
3056
3058
|
var element = node;
|
|
3057
3059
|
var tag = element.tagName;
|
|
3058
|
-
var attributes = getAttributes(element);
|
|
3060
|
+
var attributes = getAttributes$1(element);
|
|
3059
3061
|
// In some cases, external libraries like vue-fragment, can modify parentNode property to not be in sync with the DOM
|
|
3060
3062
|
// For correctness, we first look at parentElement and if it not present then fall back to using parentNode
|
|
3061
3063
|
parent = node.parentElement ? node.parentElement : (node.parentNode ? node.parentNode : null);
|
|
@@ -3235,7 +3237,7 @@ function getCssRules(sheet) {
|
|
|
3235
3237
|
}
|
|
3236
3238
|
return value;
|
|
3237
3239
|
}
|
|
3238
|
-
function getAttributes(element) {
|
|
3240
|
+
function getAttributes$1(element) {
|
|
3239
3241
|
var output = {};
|
|
3240
3242
|
var attributes = element.attributes;
|
|
3241
3243
|
if (attributes && attributes.length > 0) {
|
|
@@ -3347,9 +3349,9 @@ var selector = /*#__PURE__*/Object.freeze({
|
|
|
3347
3349
|
reset: reset$8
|
|
3348
3350
|
});
|
|
3349
3351
|
|
|
3350
|
-
var index = 1;
|
|
3352
|
+
var index$1 = 1;
|
|
3351
3353
|
var nodesMap = null; // Maps id => node to retrieve further node details using id.
|
|
3352
|
-
var values = [];
|
|
3354
|
+
var values$1 = [];
|
|
3353
3355
|
var updateMap = [];
|
|
3354
3356
|
var hashMap = {};
|
|
3355
3357
|
var override = [];
|
|
@@ -3359,7 +3361,7 @@ var maskExclude = [];
|
|
|
3359
3361
|
var maskDisable = [];
|
|
3360
3362
|
var maskTags = [];
|
|
3361
3363
|
// The WeakMap object is a collection of key/value pairs in which the keys are weakly referenced
|
|
3362
|
-
var idMap = null; // Maps node => id.
|
|
3364
|
+
var idMap$1 = null; // Maps node => id.
|
|
3363
3365
|
var iframeMap = null; // Maps iframe's contentDocument => parent iframe element
|
|
3364
3366
|
var iframeContentMap = null; // Maps parent iframe element => iframe's contentDocument & contentWindow
|
|
3365
3367
|
var privacyMap = null; // Maps node => Privacy (enum)
|
|
@@ -3372,8 +3374,8 @@ function stop$h() {
|
|
|
3372
3374
|
reset$7();
|
|
3373
3375
|
}
|
|
3374
3376
|
function reset$7() {
|
|
3375
|
-
index = 1;
|
|
3376
|
-
values = [];
|
|
3377
|
+
index$1 = 1;
|
|
3378
|
+
values$1 = [];
|
|
3377
3379
|
updateMap = [];
|
|
3378
3380
|
hashMap = {};
|
|
3379
3381
|
override = [];
|
|
@@ -3383,7 +3385,7 @@ function reset$7() {
|
|
|
3383
3385
|
maskDisable = "radio,checkbox,range,button,reset,submit" /* Mask.Disable */.split("," /* Constant.Comma */);
|
|
3384
3386
|
maskTags = "INPUT,SELECT,TEXTAREA" /* Mask.Tags */.split("," /* Constant.Comma */);
|
|
3385
3387
|
nodesMap = new Map();
|
|
3386
|
-
idMap = new WeakMap();
|
|
3388
|
+
idMap$1 = new WeakMap();
|
|
3387
3389
|
iframeMap = new WeakMap();
|
|
3388
3390
|
iframeContentMap = new WeakMap();
|
|
3389
3391
|
privacyMap = new WeakMap();
|
|
@@ -3414,32 +3416,32 @@ function parse(root, init) {
|
|
|
3414
3416
|
log$1(5 /* Code.Selector */, 1 /* Severity.Warning */, e ? e.name : null);
|
|
3415
3417
|
}
|
|
3416
3418
|
}
|
|
3417
|
-
function getId(node, autogen) {
|
|
3419
|
+
function getId$1(node, autogen) {
|
|
3418
3420
|
if (autogen === void 0) { autogen = false; }
|
|
3419
3421
|
if (node === null) {
|
|
3420
3422
|
return null;
|
|
3421
3423
|
}
|
|
3422
|
-
var id = idMap.get(node);
|
|
3424
|
+
var id = idMap$1.get(node);
|
|
3423
3425
|
if (!id && autogen) {
|
|
3424
|
-
id = index++;
|
|
3425
|
-
idMap.set(node, id);
|
|
3426
|
+
id = index$1++;
|
|
3427
|
+
idMap$1.set(node, id);
|
|
3426
3428
|
}
|
|
3427
3429
|
return id ? id : null;
|
|
3428
3430
|
}
|
|
3429
|
-
function add(node, parent, data, source) {
|
|
3430
|
-
var parentId = parent ? getId(parent) : null;
|
|
3431
|
+
function add$1(node, parent, data, source) {
|
|
3432
|
+
var parentId = parent ? getId$1(parent) : null;
|
|
3431
3433
|
// Do not add detached nodes
|
|
3432
3434
|
if ((!parent || !parentId) && node.host == null && node.nodeType !== Node.DOCUMENT_TYPE_NODE) {
|
|
3433
3435
|
return;
|
|
3434
3436
|
}
|
|
3435
|
-
var id = getId(node, true);
|
|
3437
|
+
var id = getId$1(node, true);
|
|
3436
3438
|
var previousId = getPreviousId(node);
|
|
3437
3439
|
var parentValue = null;
|
|
3438
3440
|
var regionId = exists(node) ? id : null;
|
|
3439
3441
|
var fraudId = fraudMap.has(node) ? fraudMap.get(node) : null;
|
|
3440
3442
|
var privacyId = config$2.content ? 1 /* Privacy.Sensitive */ : 3 /* Privacy.TextImage */;
|
|
3441
|
-
if (parentId >= 0 && values[parentId]) {
|
|
3442
|
-
parentValue = values[parentId];
|
|
3443
|
+
if (parentId >= 0 && values$1[parentId]) {
|
|
3444
|
+
parentValue = values$1[parentId];
|
|
3443
3445
|
parentValue.children.push(id);
|
|
3444
3446
|
regionId = regionId === null ? parentValue.region : regionId;
|
|
3445
3447
|
fraudId = fraudId === null ? parentValue.metadata.fraud : fraudId;
|
|
@@ -3451,7 +3453,7 @@ function add(node, parent, data, source) {
|
|
|
3451
3453
|
regionId = id;
|
|
3452
3454
|
}
|
|
3453
3455
|
nodesMap.set(id, node);
|
|
3454
|
-
values[id] = {
|
|
3456
|
+
values$1[id] = {
|
|
3455
3457
|
id: id,
|
|
3456
3458
|
parent: parentId,
|
|
3457
3459
|
previous: previousId,
|
|
@@ -3462,19 +3464,19 @@ function add(node, parent, data, source) {
|
|
|
3462
3464
|
region: regionId,
|
|
3463
3465
|
metadata: { active: true, suspend: false, privacy: privacyId, position: null, fraud: fraudId, size: null },
|
|
3464
3466
|
};
|
|
3465
|
-
privacy(node, values[id], parentValue);
|
|
3466
|
-
updateSelector(values[id]);
|
|
3467
|
-
updateImageSize(values[id]);
|
|
3467
|
+
privacy(node, values$1[id], parentValue);
|
|
3468
|
+
updateSelector(values$1[id]);
|
|
3469
|
+
updateImageSize(values$1[id]);
|
|
3468
3470
|
track$4(id, source);
|
|
3469
3471
|
}
|
|
3470
3472
|
function update(node, parent, data, source) {
|
|
3471
|
-
var id = getId(node);
|
|
3472
|
-
var parentId = parent ? getId(parent) : null;
|
|
3473
|
+
var id = getId$1(node);
|
|
3474
|
+
var parentId = parent ? getId$1(parent) : null;
|
|
3473
3475
|
var previousId = getPreviousId(node);
|
|
3474
3476
|
var changed = false;
|
|
3475
3477
|
var parentChanged = false;
|
|
3476
|
-
if (id in values) {
|
|
3477
|
-
var value = values[id];
|
|
3478
|
+
if (id in values$1) {
|
|
3479
|
+
var value = values$1[id];
|
|
3478
3480
|
value.metadata.active = true;
|
|
3479
3481
|
// Handle case where internal ordering may have changed
|
|
3480
3482
|
if (value.previous !== previousId) {
|
|
@@ -3488,10 +3490,10 @@ function update(node, parent, data, source) {
|
|
|
3488
3490
|
value.parent = parentId;
|
|
3489
3491
|
// Move this node to the right location under new parent
|
|
3490
3492
|
if (parentId !== null && parentId >= 0) {
|
|
3491
|
-
var childIndex = previousId === null ? 0 : values[parentId].children.indexOf(previousId) + 1;
|
|
3492
|
-
values[parentId].children.splice(childIndex, 0, id);
|
|
3493
|
+
var childIndex = previousId === null ? 0 : values$1[parentId].children.indexOf(previousId) + 1;
|
|
3494
|
+
values$1[parentId].children.splice(childIndex, 0, id);
|
|
3493
3495
|
// Update region after the move
|
|
3494
|
-
value.region = exists(node) ? id : values[parentId].region;
|
|
3496
|
+
value.region = exists(node) ? id : values$1[parentId].region;
|
|
3495
3497
|
}
|
|
3496
3498
|
else {
|
|
3497
3499
|
// Mark this element as deleted if the parent has been updated to null
|
|
@@ -3499,9 +3501,9 @@ function update(node, parent, data, source) {
|
|
|
3499
3501
|
}
|
|
3500
3502
|
// Remove reference to this node from the old parent
|
|
3501
3503
|
if (oldParentId !== null && oldParentId >= 0) {
|
|
3502
|
-
var nodeIndex = values[oldParentId].children.indexOf(id);
|
|
3504
|
+
var nodeIndex = values$1[oldParentId].children.indexOf(id);
|
|
3503
3505
|
if (nodeIndex >= 0) {
|
|
3504
|
-
values[oldParentId].children.splice(nodeIndex, 1);
|
|
3506
|
+
values$1[oldParentId].children.splice(nodeIndex, 1);
|
|
3505
3507
|
}
|
|
3506
3508
|
}
|
|
3507
3509
|
parentChanged = true;
|
|
@@ -3631,7 +3633,7 @@ function position(parent, child) {
|
|
|
3631
3633
|
child.metadata.position = 1;
|
|
3632
3634
|
var idx = parent ? parent.children.indexOf(child.id) : -1;
|
|
3633
3635
|
while (idx-- > 0) {
|
|
3634
|
-
var sibling = values[parent.children[idx]];
|
|
3636
|
+
var sibling = values$1[parent.children[idx]];
|
|
3635
3637
|
if (child.data.tag === sibling.data.tag) {
|
|
3636
3638
|
child.metadata.position = sibling.metadata.position + 1;
|
|
3637
3639
|
break;
|
|
@@ -3640,7 +3642,7 @@ function position(parent, child) {
|
|
|
3640
3642
|
return child.metadata.position;
|
|
3641
3643
|
}
|
|
3642
3644
|
function updateSelector(value) {
|
|
3643
|
-
var parent = value.parent && value.parent in values ? values[value.parent] : null;
|
|
3645
|
+
var parent = value.parent && value.parent in values$1 ? values$1[value.parent] : null;
|
|
3644
3646
|
var prefix = parent ? parent.selector : null;
|
|
3645
3647
|
var d = value.data;
|
|
3646
3648
|
var p = position(parent, value);
|
|
@@ -3658,35 +3660,35 @@ function getNode(id) {
|
|
|
3658
3660
|
return nodesMap.has(id) ? nodesMap.get(id) : null;
|
|
3659
3661
|
}
|
|
3660
3662
|
function getValue(id) {
|
|
3661
|
-
if (id in values) {
|
|
3662
|
-
return values[id];
|
|
3663
|
+
if (id in values$1) {
|
|
3664
|
+
return values$1[id];
|
|
3663
3665
|
}
|
|
3664
3666
|
return null;
|
|
3665
3667
|
}
|
|
3666
3668
|
function get(node) {
|
|
3667
|
-
var id = getId(node);
|
|
3668
|
-
return id in values ? values[id] : null;
|
|
3669
|
+
var id = getId$1(node);
|
|
3670
|
+
return id in values$1 ? values$1[id] : null;
|
|
3669
3671
|
}
|
|
3670
3672
|
function lookup(hash) {
|
|
3671
3673
|
return hash in hashMap ? hashMap[hash] : null;
|
|
3672
3674
|
}
|
|
3673
3675
|
function has$1(node) {
|
|
3674
|
-
return nodesMap.has(getId(node));
|
|
3676
|
+
return nodesMap.has(getId$1(node));
|
|
3675
3677
|
}
|
|
3676
3678
|
function updates$2() {
|
|
3677
3679
|
var output = [];
|
|
3678
3680
|
for (var _i = 0, updateMap_1 = updateMap; _i < updateMap_1.length; _i++) {
|
|
3679
3681
|
var id = updateMap_1[_i];
|
|
3680
|
-
if (id in values) {
|
|
3681
|
-
output.push(values[id]);
|
|
3682
|
+
if (id in values$1) {
|
|
3683
|
+
output.push(values$1[id]);
|
|
3682
3684
|
}
|
|
3683
3685
|
}
|
|
3684
3686
|
updateMap = [];
|
|
3685
3687
|
return output;
|
|
3686
3688
|
}
|
|
3687
3689
|
function remove(id, source) {
|
|
3688
|
-
if (id in values) {
|
|
3689
|
-
var value = values[id];
|
|
3690
|
+
if (id in values$1) {
|
|
3691
|
+
var value = values$1[id];
|
|
3690
3692
|
value.metadata.active = false;
|
|
3691
3693
|
value.parent = null;
|
|
3692
3694
|
track$4(id, source);
|
|
@@ -3706,7 +3708,7 @@ function removeNodeFromNodesMap(id) {
|
|
|
3706
3708
|
removeObserver(iframe_1);
|
|
3707
3709
|
}
|
|
3708
3710
|
nodesMap.delete(id);
|
|
3709
|
-
var value = id in values ? values[id] : null;
|
|
3711
|
+
var value = id in values$1 ? values$1[id] : null;
|
|
3710
3712
|
if (value && value.children) {
|
|
3711
3713
|
for (var _i = 0, _a = value.children; _i < _a.length; _i++) {
|
|
3712
3714
|
var childId = _a[_i];
|
|
@@ -3733,7 +3735,7 @@ function getPreviousId(node) {
|
|
|
3733
3735
|
// Some nodes may not have an ID by design since Clarity skips over tags like SCRIPT, NOSCRIPT, META, COMMENTS, etc..
|
|
3734
3736
|
// In that case, we keep going back and check for their sibling until we find a sibling with ID or no more sibling nodes are left.
|
|
3735
3737
|
while (id === null && node.previousSibling) {
|
|
3736
|
-
id = getId(node.previousSibling);
|
|
3738
|
+
id = getId$1(node.previousSibling);
|
|
3737
3739
|
node = node.previousSibling;
|
|
3738
3740
|
}
|
|
3739
3741
|
return id;
|
|
@@ -3816,7 +3818,7 @@ function compute$5() {
|
|
|
3816
3818
|
var q = [];
|
|
3817
3819
|
for (var _i = 0, queue_1 = queue$1; _i < queue_1.length; _i++) {
|
|
3818
3820
|
var r = queue_1[_i];
|
|
3819
|
-
var id = getId(r.node);
|
|
3821
|
+
var id = getId$1(r.node);
|
|
3820
3822
|
if (id) {
|
|
3821
3823
|
r.state.data.id = id;
|
|
3822
3824
|
regions[id] = r.state.data;
|
|
@@ -3829,7 +3831,7 @@ function compute$5() {
|
|
|
3829
3831
|
queue$1 = q;
|
|
3830
3832
|
// Schedule encode only when we have at least one valid data entry
|
|
3831
3833
|
if (state$2.length > 0) {
|
|
3832
|
-
encode$
|
|
3834
|
+
encode$5(7 /* Event.Region */);
|
|
3833
3835
|
}
|
|
3834
3836
|
}
|
|
3835
3837
|
function handler$1(entries) {
|
|
@@ -3844,7 +3846,7 @@ function handler$1(entries) {
|
|
|
3844
3846
|
// like search box - one for desktop, and another for mobile. In those cases, CSS media queries determine which one should be visible.
|
|
3845
3847
|
// Also, if these regions ever become non-zero width or height (through AJAX, user action or orientation change) - we will automatically start monitoring them from that point onwards
|
|
3846
3848
|
if (regionMap.has(target) && rect.width + rect.height > 0 && viewport && viewport.width > 0 && viewport.height > 0) {
|
|
3847
|
-
var id = target ? getId(target) : null;
|
|
3849
|
+
var id = target ? getId$1(target) : null;
|
|
3848
3850
|
var data = id in regions ? regions[id] : { id: id, name: regionMap.get(target), interaction: 16 /* InteractionState.None */, visibility: 0 /* RegionVisibility.Rendered */ };
|
|
3849
3851
|
// For regions that have relatively smaller area, we look at intersection ratio and see the overlap relative to element's area
|
|
3850
3852
|
// However, for larger regions, area of regions could be bigger than viewport and therefore comparison is relative to visible area
|
|
@@ -3865,7 +3867,7 @@ function handler$1(entries) {
|
|
|
3865
3867
|
}
|
|
3866
3868
|
}
|
|
3867
3869
|
if (state$2.length > 0) {
|
|
3868
|
-
encode$
|
|
3870
|
+
encode$5(7 /* Event.Region */);
|
|
3869
3871
|
}
|
|
3870
3872
|
}
|
|
3871
3873
|
function process$1(n, d, s, v) {
|
|
@@ -3932,7 +3934,7 @@ function metadata$2(node, event, text) {
|
|
|
3932
3934
|
return output;
|
|
3933
3935
|
}
|
|
3934
3936
|
|
|
3935
|
-
function encode$
|
|
3937
|
+
function encode$4 (type, ts) {
|
|
3936
3938
|
if (ts === void 0) { ts = null; }
|
|
3937
3939
|
return __awaiter(this, void 0, void 0, function () {
|
|
3938
3940
|
var t, tokens, _i, _a, entry, pTarget, _b, _c, entry, cTarget, cHash, _d, _e, entry, target, r, u, _f, _g, entry, iTarget, s, startTarget, endTarget, _h, _j, entry, sTarget, top_1, bottom, sTopHash, sBottomHash, _k, _l, entry, target, _m, _o, entry, target, _p, _q, entry, v;
|
|
@@ -4171,13 +4173,146 @@ function compute$4() {
|
|
|
4171
4173
|
}
|
|
4172
4174
|
}
|
|
4173
4175
|
state$1 = temp; // Drop events less than the min time
|
|
4174
|
-
encode$
|
|
4176
|
+
encode$4(22 /* Event.Timeline */);
|
|
4175
4177
|
}
|
|
4176
4178
|
function stop$f() {
|
|
4177
4179
|
state$1 = [];
|
|
4178
4180
|
reset$5();
|
|
4179
4181
|
}
|
|
4180
4182
|
|
|
4183
|
+
function encode$3 (type) {
|
|
4184
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
4185
|
+
var eventTime, tokens, d, values$1, _i, values_1, value, privacy, data, _a, _b, key, attr;
|
|
4186
|
+
return __generator(this, function (_c) {
|
|
4187
|
+
eventTime = time();
|
|
4188
|
+
tokens = [eventTime, type];
|
|
4189
|
+
switch (type) {
|
|
4190
|
+
case 8 /* Event.Document */:
|
|
4191
|
+
d = data$8;
|
|
4192
|
+
tokens.push(d.width);
|
|
4193
|
+
tokens.push(d.height);
|
|
4194
|
+
track$8(type, d.width, d.height);
|
|
4195
|
+
queue(tokens);
|
|
4196
|
+
break;
|
|
4197
|
+
case 43 /* Event.Snapshot */:
|
|
4198
|
+
values$1 = values;
|
|
4199
|
+
// Only encode and queue DOM updates if we have valid updates to report back
|
|
4200
|
+
if (values$1.length > 0) {
|
|
4201
|
+
for (_i = 0, values_1 = values$1; _i < values_1.length; _i++) {
|
|
4202
|
+
value = values_1[_i];
|
|
4203
|
+
privacy = value.metadata.privacy;
|
|
4204
|
+
data = value.data;
|
|
4205
|
+
for (_a = 0, _b = ["tag", "attributes", "value"]; _a < _b.length; _a++) {
|
|
4206
|
+
key = _b[_a];
|
|
4207
|
+
if (data[key]) {
|
|
4208
|
+
switch (key) {
|
|
4209
|
+
case "tag":
|
|
4210
|
+
tokens.push(value.id);
|
|
4211
|
+
if (value.parent) {
|
|
4212
|
+
tokens.push(value.parent);
|
|
4213
|
+
}
|
|
4214
|
+
if (value.previous) {
|
|
4215
|
+
tokens.push(value.previous);
|
|
4216
|
+
}
|
|
4217
|
+
tokens.push(data[key]);
|
|
4218
|
+
break;
|
|
4219
|
+
case "attributes":
|
|
4220
|
+
for (attr in data[key]) {
|
|
4221
|
+
if (data[key][attr] !== undefined) {
|
|
4222
|
+
tokens.push(attribute(attr, data[key][attr], privacy));
|
|
4223
|
+
}
|
|
4224
|
+
}
|
|
4225
|
+
break;
|
|
4226
|
+
case "value":
|
|
4227
|
+
tokens.push(text$1(data[key], data.tag, privacy));
|
|
4228
|
+
break;
|
|
4229
|
+
}
|
|
4230
|
+
}
|
|
4231
|
+
}
|
|
4232
|
+
}
|
|
4233
|
+
queue(tokenize(tokens), true);
|
|
4234
|
+
}
|
|
4235
|
+
break;
|
|
4236
|
+
}
|
|
4237
|
+
return [2 /*return*/];
|
|
4238
|
+
});
|
|
4239
|
+
});
|
|
4240
|
+
}
|
|
4241
|
+
function attribute(key, value, privacy) {
|
|
4242
|
+
return "".concat(key, "=").concat(text$1(value, key.indexOf("data-" /* Constant.DataAttribute */) === 0 ? "data-" /* Constant.DataAttribute */ : key, privacy));
|
|
4243
|
+
}
|
|
4244
|
+
|
|
4245
|
+
var values = [];
|
|
4246
|
+
var index = 1;
|
|
4247
|
+
var idMap = null; // Maps node => id.
|
|
4248
|
+
function snapshot() {
|
|
4249
|
+
values = [];
|
|
4250
|
+
traverse(document);
|
|
4251
|
+
encode$3(43 /* Event.Snapshot */);
|
|
4252
|
+
}
|
|
4253
|
+
function traverse(root) {
|
|
4254
|
+
var queue = [root];
|
|
4255
|
+
while (queue.length > 0) {
|
|
4256
|
+
var attributes = null, tag = null, value = null;
|
|
4257
|
+
var node = queue.shift();
|
|
4258
|
+
var next = node.firstChild;
|
|
4259
|
+
var parent_1 = node.parentElement ? node.parentElement : (node.parentNode ? node.parentNode : null);
|
|
4260
|
+
while (next) {
|
|
4261
|
+
queue.push(next);
|
|
4262
|
+
next = next.nextSibling;
|
|
4263
|
+
}
|
|
4264
|
+
// Process the node
|
|
4265
|
+
var type = node.nodeType;
|
|
4266
|
+
switch (type) {
|
|
4267
|
+
case Node.DOCUMENT_TYPE_NODE:
|
|
4268
|
+
var doctype = node;
|
|
4269
|
+
tag = "*D" /* Constant.DocumentTag */;
|
|
4270
|
+
attributes = { name: doctype.name, publicId: doctype.publicId, systemId: doctype.systemId };
|
|
4271
|
+
break;
|
|
4272
|
+
case Node.TEXT_NODE:
|
|
4273
|
+
value = node.nodeValue;
|
|
4274
|
+
tag = idMap.get(parent_1) ? "*T" /* Constant.TextTag */ : tag;
|
|
4275
|
+
break;
|
|
4276
|
+
case Node.ELEMENT_NODE:
|
|
4277
|
+
var element = node;
|
|
4278
|
+
attributes = getAttributes(element);
|
|
4279
|
+
tag = ["NOSCRIPT", "SCRIPT", "STYLE"].indexOf(element.tagName) < 0 ? element.tagName : tag;
|
|
4280
|
+
break;
|
|
4281
|
+
}
|
|
4282
|
+
add(node, parent_1, { tag: tag, attributes: attributes, value: value });
|
|
4283
|
+
}
|
|
4284
|
+
}
|
|
4285
|
+
/* Helper Functions - Snapshot Traversal */
|
|
4286
|
+
function getAttributes(element) {
|
|
4287
|
+
var output = {};
|
|
4288
|
+
var attributes = element.attributes;
|
|
4289
|
+
if (attributes && attributes.length > 0) {
|
|
4290
|
+
for (var i = 0; i < attributes.length; i++) {
|
|
4291
|
+
output[attributes[i].name] = attributes[i].value;
|
|
4292
|
+
}
|
|
4293
|
+
}
|
|
4294
|
+
return output;
|
|
4295
|
+
}
|
|
4296
|
+
function getId(node) {
|
|
4297
|
+
if (node === null) {
|
|
4298
|
+
return null;
|
|
4299
|
+
}
|
|
4300
|
+
if (idMap.has(node)) {
|
|
4301
|
+
return idMap.get(node);
|
|
4302
|
+
}
|
|
4303
|
+
idMap.set(node, index);
|
|
4304
|
+
return index++;
|
|
4305
|
+
}
|
|
4306
|
+
function add(node, parent, data) {
|
|
4307
|
+
if (node && data && data.tag) {
|
|
4308
|
+
var id = getId(node);
|
|
4309
|
+
var parentId = parent ? idMap.get(parent) : null;
|
|
4310
|
+
var previous = node.previousSibling ? idMap.get(node.previousSibling) : null;
|
|
4311
|
+
var metadata_1 = { active: true, suspend: false, privacy: 5 /* Privacy.Snapshot */, position: null, fraud: null, size: null };
|
|
4312
|
+
values.push({ id: id, parent: parentId, previous: previous, children: [], data: data, selector: null, hash: null, region: null, metadata: metadata_1 });
|
|
4313
|
+
}
|
|
4314
|
+
}
|
|
4315
|
+
|
|
4181
4316
|
var discoverBytes = 0;
|
|
4182
4317
|
var playbackBytes = 0;
|
|
4183
4318
|
var playback;
|
|
@@ -4328,6 +4463,7 @@ function stringify(encoded) {
|
|
|
4328
4463
|
return encoded.p.length > 0 ? "{\"e\":".concat(encoded.e, ",\"a\":").concat(encoded.a, ",\"p\":").concat(encoded.p, "}") : "{\"e\":".concat(encoded.e, ",\"a\":").concat(encoded.a, "}");
|
|
4329
4464
|
}
|
|
4330
4465
|
function send(payload, zipped, sequence, beacon) {
|
|
4466
|
+
var _a;
|
|
4331
4467
|
if (beacon === void 0) { beacon = false; }
|
|
4332
4468
|
// Upload data if a valid URL is defined in the config
|
|
4333
4469
|
if (typeof config$2.upload === "string" /* Constant.String */) {
|
|
@@ -4337,15 +4473,22 @@ function send(payload, zipped, sequence, beacon) {
|
|
|
4337
4473
|
// The advantage to using sendBeacon is that browser can decide to upload asynchronously, improving chances of success
|
|
4338
4474
|
// However, we don't want to rely on it for every payload, since we have no ability to retry if the upload failed.
|
|
4339
4475
|
// Also, in case of sendBeacon, we do not have a way to alter HTTP headers and therefore can't send compressed payload
|
|
4340
|
-
if (beacon && "sendBeacon"
|
|
4476
|
+
if (beacon && navigator && navigator["sendBeacon"]) {
|
|
4341
4477
|
try {
|
|
4342
4478
|
// Navigator needs to be bound to sendBeacon before it is used to avoid errors in some browsers
|
|
4343
4479
|
dispatched = navigator.sendBeacon.bind(navigator)(url_1, payload);
|
|
4344
4480
|
if (dispatched) {
|
|
4345
4481
|
done(sequence);
|
|
4346
4482
|
}
|
|
4483
|
+
else {
|
|
4484
|
+
// If sendBeacon fails, we report the error and continue with XHR upload
|
|
4485
|
+
report(new Error("".concat("BeaconError" /* Constant.BeaconError */, ": ").concat(payload.length)));
|
|
4486
|
+
}
|
|
4487
|
+
}
|
|
4488
|
+
catch (error) {
|
|
4489
|
+
// If sendBeacon fails, we report the error and continue with XHR upload
|
|
4490
|
+
report(new Error("".concat("BeaconError" /* Constant.BeaconError */, ": ").concat((_a = error === null || error === void 0 ? void 0 : error.message) === null || _a === void 0 ? void 0 : _a.substring(0, 50), " : ").concat(payload.length)));
|
|
4347
4491
|
}
|
|
4348
|
-
catch ( /* do nothing - and we will automatically fallback to XHR below */_a) { /* do nothing - and we will automatically fallback to XHR below */ }
|
|
4349
4492
|
}
|
|
4350
4493
|
// Before initiating XHR upload, we check if the data has already been uploaded using sendBeacon
|
|
4351
4494
|
// There are two cases when dispatched could still be false:
|
|
@@ -4405,6 +4548,9 @@ function check$3(xhr, sequence) {
|
|
|
4405
4548
|
if (xhr.status === 0) {
|
|
4406
4549
|
config$2.upload = config$2.fallback ? config$2.fallback : config$2.upload;
|
|
4407
4550
|
}
|
|
4551
|
+
// Capture the status code and number of attempts so we can report it back to the server
|
|
4552
|
+
track$1 = { sequence: sequence, attempts: transitData.attempts, status: xhr.status };
|
|
4553
|
+
encode$1(2 /* Event.Upload */);
|
|
4408
4554
|
// In all other cases, re-attempt sending the same data
|
|
4409
4555
|
// For retry we always fallback to string payload, even though we may have attempted
|
|
4410
4556
|
// sending zipped payload earlier
|
|
@@ -4480,6 +4626,10 @@ function response(payload) {
|
|
|
4480
4626
|
signalsEvent(parts[1]);
|
|
4481
4627
|
}
|
|
4482
4628
|
break;
|
|
4629
|
+
case "SNAPSHOT" /* Constant.Snapshot */:
|
|
4630
|
+
config$2.lean = false; // Disable lean mode to ensure we can send playback information to server.
|
|
4631
|
+
snapshot();
|
|
4632
|
+
break;
|
|
4483
4633
|
}
|
|
4484
4634
|
}
|
|
4485
4635
|
}
|
|
@@ -4796,11 +4946,11 @@ function discover() {
|
|
|
4796
4946
|
ts = time();
|
|
4797
4947
|
timer = { id: id(), cost: 3 /* Metric.LayoutCost */ };
|
|
4798
4948
|
start$d(timer);
|
|
4799
|
-
return [4 /*yield*/, traverse(document, timer, 0 /* Source.Discover */, ts)];
|
|
4949
|
+
return [4 /*yield*/, traverse$1(document, timer, 0 /* Source.Discover */, ts)];
|
|
4800
4950
|
case 1:
|
|
4801
4951
|
_a.sent();
|
|
4802
4952
|
checkDocumentStyles(document, ts);
|
|
4803
|
-
return [4 /*yield*/, encode$
|
|
4953
|
+
return [4 /*yield*/, encode$5(5 /* Event.Discover */, timer, ts)];
|
|
4804
4954
|
case 2:
|
|
4805
4955
|
_a.sent();
|
|
4806
4956
|
stop$c(timer);
|
|
@@ -5078,7 +5228,7 @@ function start$8() {
|
|
|
5078
5228
|
var _a, _b, _c;
|
|
5079
5229
|
rootDomain = null;
|
|
5080
5230
|
var ua = navigator && "userAgent" in navigator ? navigator.userAgent : "" /* Constant.Empty */;
|
|
5081
|
-
var timezone = (_c = (_b = (_a = Intl === null || Intl === void 0 ? void 0 : Intl.DateTimeFormat()) === null || _a === void 0 ? void 0 : _a.resolvedOptions()) === null || _b === void 0 ? void 0 : _b.timeZone) !== null && _c !== void 0 ? _c : '';
|
|
5231
|
+
var timezone = (_c = (typeof Intl !== 'undefined' && ((_b = (_a = Intl === null || Intl === void 0 ? void 0 : Intl.DateTimeFormat()) === null || _a === void 0 ? void 0 : _a.resolvedOptions()) === null || _b === void 0 ? void 0 : _b.timeZone))) !== null && _c !== void 0 ? _c : '';
|
|
5082
5232
|
var timezoneOffset = new Date().getTimezoneOffset().toString();
|
|
5083
5233
|
var ancestorOrigins = window.location.ancestorOrigins ? Array.from(window.location.ancestorOrigins).toString() : '';
|
|
5084
5234
|
var title = document && document.title ? document.title : "" /* Constant.Empty */;
|
|
@@ -5920,7 +6070,7 @@ var observer;
|
|
|
5920
6070
|
var types = ["navigation" /* Constant.Navigation */, "resource" /* Constant.Resource */, "longtask" /* Constant.LongTask */, "first-input" /* Constant.FID */, "layout-shift" /* Constant.CLS */, "largest-contentful-paint" /* Constant.LCP */, "event" /* Constant.PerformanceEventTiming */];
|
|
5921
6071
|
function start$2() {
|
|
5922
6072
|
// Capture connection properties, if available
|
|
5923
|
-
if (navigator && "connection"
|
|
6073
|
+
if (navigator && navigator["connection"]) {
|
|
5924
6074
|
log(27 /* Dimension.ConnectionType */, navigator["connection"]["effectiveType"]);
|
|
5925
6075
|
}
|
|
5926
6076
|
// Check the browser support performance observer as a pre-requisite for any performance measurement
|