@appsurify-testmap/rrweb-all 3.1.1-alpha.3 → 3.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/rrweb-all.cjs +350 -62
- package/dist/rrweb-all.cjs.map +1 -1
- package/dist/rrweb-all.js +350 -62
- package/dist/rrweb-all.js.map +1 -1
- package/dist/rrweb-all.umd.cjs +358 -62
- package/dist/rrweb-all.umd.cjs.map +3 -3
- package/dist/rrweb-all.umd.min.cjs +44 -44
- package/dist/rrweb-all.umd.min.cjs.map +3 -3
- package/package.json +4 -4
package/dist/rrweb-all.cjs
CHANGED
|
@@ -15470,6 +15470,30 @@ class MutationBuffer {
|
|
|
15470
15470
|
this.shadowDomManager.reset();
|
|
15471
15471
|
this.canvasManager.reset();
|
|
15472
15472
|
}
|
|
15473
|
+
/**
|
|
15474
|
+
* Clear all accumulated mutation data without emitting.
|
|
15475
|
+
* Used after freeze+debounce checkout — FullSnapshot already captured the state.
|
|
15476
|
+
*/
|
|
15477
|
+
resetBuffers() {
|
|
15478
|
+
this.addedSet = /* @__PURE__ */ new Set();
|
|
15479
|
+
this.movedSet = /* @__PURE__ */ new Set();
|
|
15480
|
+
this.droppedSet = /* @__PURE__ */ new Set();
|
|
15481
|
+
this.removesSubTreeCache = /* @__PURE__ */ new Set();
|
|
15482
|
+
this.mapRemoves = [];
|
|
15483
|
+
this.movedMap = {};
|
|
15484
|
+
this.attributes = [];
|
|
15485
|
+
this.texts = [];
|
|
15486
|
+
this.attributeMap = /* @__PURE__ */ new WeakMap();
|
|
15487
|
+
this.removes = [];
|
|
15488
|
+
}
|
|
15489
|
+
/**
|
|
15490
|
+
* Clear frozen flag without triggering emit.
|
|
15491
|
+
* Used after freeze+debounce checkout — buffers already cleared by resetBuffers().
|
|
15492
|
+
*/
|
|
15493
|
+
unsetFrozen() {
|
|
15494
|
+
this.frozen = false;
|
|
15495
|
+
this.canvasManager.unfreeze();
|
|
15496
|
+
}
|
|
15473
15497
|
}
|
|
15474
15498
|
function deepDelete(addsSet, n2) {
|
|
15475
15499
|
addsSet.delete(n2);
|
|
@@ -15835,6 +15859,30 @@ function initNavigationObserver({
|
|
|
15835
15859
|
handlers.push(restoreReplaceState);
|
|
15836
15860
|
handlers.push(on("popstate", () => emitNavigation("popstate"), win));
|
|
15837
15861
|
handlers.push(on("hashchange", () => emitNavigation("hashchange"), win));
|
|
15862
|
+
const useNavigationAPI = typeof sampling.navigation === "object" ? sampling.navigation.useNavigationAPI ?? true : true;
|
|
15863
|
+
if (useNavigationAPI && "navigation" in win) {
|
|
15864
|
+
try {
|
|
15865
|
+
const nav = win.navigation;
|
|
15866
|
+
const handler = (event) => {
|
|
15867
|
+
var _a2;
|
|
15868
|
+
const navEvent = event;
|
|
15869
|
+
if (navEvent.navigationType === "push" || navEvent.navigationType === "replace") {
|
|
15870
|
+
const destUrl = (_a2 = navEvent.destination) == null ? void 0 : _a2.url;
|
|
15871
|
+
if (destUrl && destUrl !== lastHref) {
|
|
15872
|
+
navigationCb({
|
|
15873
|
+
href: destUrl,
|
|
15874
|
+
oldHref: lastHref,
|
|
15875
|
+
navigationType: "navigate"
|
|
15876
|
+
});
|
|
15877
|
+
lastHref = destUrl;
|
|
15878
|
+
}
|
|
15879
|
+
}
|
|
15880
|
+
};
|
|
15881
|
+
nav.addEventListener("navigate", handler);
|
|
15882
|
+
handlers.push(() => nav.removeEventListener("navigate", handler));
|
|
15883
|
+
} catch {
|
|
15884
|
+
}
|
|
15885
|
+
}
|
|
15838
15886
|
return callbackWrapper(() => {
|
|
15839
15887
|
handlers.forEach((h) => h());
|
|
15840
15888
|
});
|
|
@@ -17880,10 +17928,13 @@ class VisibilityManager {
|
|
|
17880
17928
|
}
|
|
17881
17929
|
flushBuffer() {
|
|
17882
17930
|
var _a2;
|
|
17931
|
+
if (this.frozen || this.locked) return;
|
|
17883
17932
|
if (this.buffer.size === 0) return;
|
|
17884
|
-
|
|
17885
|
-
|
|
17933
|
+
const mutations = Array.from(this.buffer.values());
|
|
17934
|
+
const count = mutations.length;
|
|
17886
17935
|
this.buffer.clear();
|
|
17936
|
+
this.mutationCb({ mutations });
|
|
17937
|
+
(_a2 = this.notifyActivity) == null ? void 0 : _a2.call(this, count);
|
|
17887
17938
|
}
|
|
17888
17939
|
observe(el) {
|
|
17889
17940
|
if (this.disabled) return;
|
|
@@ -17897,6 +17948,10 @@ class VisibilityManager {
|
|
|
17897
17948
|
}
|
|
17898
17949
|
freeze() {
|
|
17899
17950
|
this.frozen = true;
|
|
17951
|
+
if (this.debounceTimer) {
|
|
17952
|
+
clearTimeout(this.debounceTimer);
|
|
17953
|
+
this.debounceTimer = null;
|
|
17954
|
+
}
|
|
17900
17955
|
}
|
|
17901
17956
|
unfreeze() {
|
|
17902
17957
|
this.frozen = false;
|
|
@@ -17904,9 +17959,33 @@ class VisibilityManager {
|
|
|
17904
17959
|
}
|
|
17905
17960
|
lock() {
|
|
17906
17961
|
this.locked = true;
|
|
17962
|
+
if (this.debounceTimer) {
|
|
17963
|
+
clearTimeout(this.debounceTimer);
|
|
17964
|
+
this.debounceTimer = null;
|
|
17965
|
+
}
|
|
17907
17966
|
}
|
|
17908
17967
|
unlock() {
|
|
17909
17968
|
this.locked = false;
|
|
17969
|
+
this.buffer.clear();
|
|
17970
|
+
if (this.debounceTimer) {
|
|
17971
|
+
clearTimeout(this.debounceTimer);
|
|
17972
|
+
this.debounceTimer = null;
|
|
17973
|
+
}
|
|
17974
|
+
if (!this.disabled && this.elements.size > 0) {
|
|
17975
|
+
this.previousState = computeVisibility(this.elements, /* @__PURE__ */ new Map(), {
|
|
17976
|
+
root: this.root,
|
|
17977
|
+
threshold: this.threshold,
|
|
17978
|
+
sensitivity: this.sensitivity,
|
|
17979
|
+
rootMargin: this.rootMargin
|
|
17980
|
+
});
|
|
17981
|
+
}
|
|
17982
|
+
}
|
|
17983
|
+
/**
|
|
17984
|
+
* Clear frozen flag without triggering flush.
|
|
17985
|
+
* Used after freeze+debounce checkout — buffer already cleared by unlock().
|
|
17986
|
+
*/
|
|
17987
|
+
unsetFrozen() {
|
|
17988
|
+
this.frozen = false;
|
|
17910
17989
|
}
|
|
17911
17990
|
reset() {
|
|
17912
17991
|
this.elements.clear();
|
|
@@ -17922,6 +18001,164 @@ class VisibilityManager {
|
|
|
17922
18001
|
}
|
|
17923
18002
|
}
|
|
17924
18003
|
}
|
|
18004
|
+
const DEFAULT_SETTLE_TIMEOUT = 150;
|
|
18005
|
+
const DEFAULT_MAX_WAIT = 5e3;
|
|
18006
|
+
const DEFAULT_DEBOUNCE = 100;
|
|
18007
|
+
class NavigationManager {
|
|
18008
|
+
constructor(options) {
|
|
18009
|
+
__publicField(this, "frozen", false);
|
|
18010
|
+
__publicField(this, "locked", false);
|
|
18011
|
+
__publicField(this, "disabled", false);
|
|
18012
|
+
__publicField(this, "settleTimeout");
|
|
18013
|
+
__publicField(this, "maxWait");
|
|
18014
|
+
__publicField(this, "debounceMs");
|
|
18015
|
+
__publicField(this, "settlingObserver", null);
|
|
18016
|
+
__publicField(this, "debounceTimer", null);
|
|
18017
|
+
__publicField(this, "settleCheckTimer", null);
|
|
18018
|
+
__publicField(this, "maxWaitTimer", null);
|
|
18019
|
+
__publicField(this, "lastMutationTime", 0);
|
|
18020
|
+
__publicField(this, "pendingNavigation", null);
|
|
18021
|
+
__publicField(this, "doc");
|
|
18022
|
+
__publicField(this, "onSnapshot");
|
|
18023
|
+
const { doc, config, onSnapshot } = options;
|
|
18024
|
+
this.doc = doc;
|
|
18025
|
+
this.onSnapshot = callbackWrapper(onSnapshot);
|
|
18026
|
+
this.settleTimeout = config.settleTimeout ?? DEFAULT_SETTLE_TIMEOUT;
|
|
18027
|
+
this.maxWait = config.maxWait ?? DEFAULT_MAX_WAIT;
|
|
18028
|
+
this.debounceMs = config.debounce ?? DEFAULT_DEBOUNCE;
|
|
18029
|
+
}
|
|
18030
|
+
handleNavigation(data) {
|
|
18031
|
+
if (this.disabled) return;
|
|
18032
|
+
if (this.locked) return;
|
|
18033
|
+
this.cancelTimers();
|
|
18034
|
+
this.disconnectSettlingObserver();
|
|
18035
|
+
this.pendingNavigation = data;
|
|
18036
|
+
if (this.frozen) {
|
|
18037
|
+
return;
|
|
18038
|
+
}
|
|
18039
|
+
this.startDebounce();
|
|
18040
|
+
}
|
|
18041
|
+
cancelPending() {
|
|
18042
|
+
this.cancelTimers();
|
|
18043
|
+
this.disconnectSettlingObserver();
|
|
18044
|
+
this.pendingNavigation = null;
|
|
18045
|
+
}
|
|
18046
|
+
freeze() {
|
|
18047
|
+
this.frozen = true;
|
|
18048
|
+
this.cancelTimers();
|
|
18049
|
+
this.disconnectSettlingObserver();
|
|
18050
|
+
}
|
|
18051
|
+
unfreeze() {
|
|
18052
|
+
this.frozen = false;
|
|
18053
|
+
if (this.pendingNavigation && !this.locked && !this.disabled) {
|
|
18054
|
+
this.startDebounce();
|
|
18055
|
+
}
|
|
18056
|
+
}
|
|
18057
|
+
lock() {
|
|
18058
|
+
this.locked = true;
|
|
18059
|
+
this.cancelTimers();
|
|
18060
|
+
this.disconnectSettlingObserver();
|
|
18061
|
+
}
|
|
18062
|
+
unlock() {
|
|
18063
|
+
this.locked = false;
|
|
18064
|
+
this.pendingNavigation = null;
|
|
18065
|
+
}
|
|
18066
|
+
unsetFrozen() {
|
|
18067
|
+
this.frozen = false;
|
|
18068
|
+
}
|
|
18069
|
+
reset() {
|
|
18070
|
+
this.cancelTimers();
|
|
18071
|
+
this.disconnectSettlingObserver();
|
|
18072
|
+
this.pendingNavigation = null;
|
|
18073
|
+
this.frozen = false;
|
|
18074
|
+
this.locked = false;
|
|
18075
|
+
}
|
|
18076
|
+
destroy() {
|
|
18077
|
+
this.reset();
|
|
18078
|
+
this.disabled = true;
|
|
18079
|
+
}
|
|
18080
|
+
startDebounce() {
|
|
18081
|
+
this.debounceTimer = setTimeout(() => {
|
|
18082
|
+
this.debounceTimer = null;
|
|
18083
|
+
this.startDOMSettling();
|
|
18084
|
+
}, this.debounceMs);
|
|
18085
|
+
}
|
|
18086
|
+
startDOMSettling() {
|
|
18087
|
+
if (this.frozen || this.locked || this.disabled) return;
|
|
18088
|
+
this.lastMutationTime = performance.now();
|
|
18089
|
+
const ObserverCtor = mutationObserverCtor();
|
|
18090
|
+
this.settlingObserver = new ObserverCtor(() => {
|
|
18091
|
+
this.lastMutationTime = performance.now();
|
|
18092
|
+
if (this.settleCheckTimer !== null) {
|
|
18093
|
+
clearTimeout(this.settleCheckTimer);
|
|
18094
|
+
}
|
|
18095
|
+
this.settleCheckTimer = setTimeout(
|
|
18096
|
+
() => this.checkSettled(),
|
|
18097
|
+
this.settleTimeout
|
|
18098
|
+
);
|
|
18099
|
+
});
|
|
18100
|
+
this.settlingObserver.observe(this.doc, {
|
|
18101
|
+
childList: true,
|
|
18102
|
+
subtree: true,
|
|
18103
|
+
attributes: true,
|
|
18104
|
+
characterData: true
|
|
18105
|
+
});
|
|
18106
|
+
this.settleCheckTimer = setTimeout(
|
|
18107
|
+
() => this.checkSettled(),
|
|
18108
|
+
this.settleTimeout
|
|
18109
|
+
);
|
|
18110
|
+
this.maxWaitTimer = setTimeout(() => {
|
|
18111
|
+
this.maxWaitTimer = null;
|
|
18112
|
+
this.completeSettling();
|
|
18113
|
+
}, this.maxWait);
|
|
18114
|
+
}
|
|
18115
|
+
checkSettled() {
|
|
18116
|
+
this.settleCheckTimer = null;
|
|
18117
|
+
const elapsed = performance.now() - this.lastMutationTime;
|
|
18118
|
+
if (elapsed >= this.settleTimeout) {
|
|
18119
|
+
this.completeSettling();
|
|
18120
|
+
} else {
|
|
18121
|
+
this.settleCheckTimer = setTimeout(
|
|
18122
|
+
() => this.checkSettled(),
|
|
18123
|
+
this.settleTimeout - elapsed
|
|
18124
|
+
);
|
|
18125
|
+
}
|
|
18126
|
+
}
|
|
18127
|
+
completeSettling() {
|
|
18128
|
+
if (this.frozen || this.locked || this.disabled) return;
|
|
18129
|
+
if (!this.pendingNavigation) return;
|
|
18130
|
+
this.cancelTimers();
|
|
18131
|
+
this.disconnectSettlingObserver();
|
|
18132
|
+
this.pendingNavigation = null;
|
|
18133
|
+
requestAnimationFrame(() => {
|
|
18134
|
+
requestAnimationFrame(() => {
|
|
18135
|
+
if (!this.frozen && !this.locked && !this.disabled) {
|
|
18136
|
+
this.onSnapshot(true);
|
|
18137
|
+
}
|
|
18138
|
+
});
|
|
18139
|
+
});
|
|
18140
|
+
}
|
|
18141
|
+
cancelTimers() {
|
|
18142
|
+
if (this.debounceTimer !== null) {
|
|
18143
|
+
clearTimeout(this.debounceTimer);
|
|
18144
|
+
this.debounceTimer = null;
|
|
18145
|
+
}
|
|
18146
|
+
if (this.settleCheckTimer !== null) {
|
|
18147
|
+
clearTimeout(this.settleCheckTimer);
|
|
18148
|
+
this.settleCheckTimer = null;
|
|
18149
|
+
}
|
|
18150
|
+
if (this.maxWaitTimer !== null) {
|
|
18151
|
+
clearTimeout(this.maxWaitTimer);
|
|
18152
|
+
this.maxWaitTimer = null;
|
|
18153
|
+
}
|
|
18154
|
+
}
|
|
18155
|
+
disconnectSettlingObserver() {
|
|
18156
|
+
if (this.settlingObserver) {
|
|
18157
|
+
this.settlingObserver.disconnect();
|
|
18158
|
+
this.settlingObserver = null;
|
|
18159
|
+
}
|
|
18160
|
+
}
|
|
18161
|
+
}
|
|
17925
18162
|
class StylesheetManager {
|
|
17926
18163
|
constructor(options) {
|
|
17927
18164
|
__publicField(this, "trackedLinkElements", /* @__PURE__ */ new WeakSet());
|
|
@@ -18005,43 +18242,13 @@ class ProcessedNodeManager {
|
|
|
18005
18242
|
destroy() {
|
|
18006
18243
|
}
|
|
18007
18244
|
}
|
|
18008
|
-
const version$1 = "3.
|
|
18245
|
+
const version$1 = "3.3.0-alpha.1";
|
|
18009
18246
|
let wrappedEmit;
|
|
18010
18247
|
let takeFullSnapshot$1;
|
|
18011
18248
|
let canvasManager;
|
|
18012
18249
|
let recording = false;
|
|
18013
18250
|
const customEventQueue = [];
|
|
18014
18251
|
let flushCustomEventQueue$1;
|
|
18015
|
-
function waitForDOMStabilization(win) {
|
|
18016
|
-
const maxWaitMs = 5e3;
|
|
18017
|
-
return new Promise((resolve2) => {
|
|
18018
|
-
const captureAfterPaint = () => {
|
|
18019
|
-
requestAnimationFrame(() => {
|
|
18020
|
-
requestAnimationFrame(() => {
|
|
18021
|
-
resolve2();
|
|
18022
|
-
});
|
|
18023
|
-
});
|
|
18024
|
-
};
|
|
18025
|
-
const safeResolve = /* @__PURE__ */ (() => {
|
|
18026
|
-
let called = false;
|
|
18027
|
-
return () => {
|
|
18028
|
-
if (!called) {
|
|
18029
|
-
called = true;
|
|
18030
|
-
captureAfterPaint();
|
|
18031
|
-
}
|
|
18032
|
-
};
|
|
18033
|
-
})();
|
|
18034
|
-
if (["interactive", "complete"].includes(win.document.readyState)) {
|
|
18035
|
-
safeResolve();
|
|
18036
|
-
} else {
|
|
18037
|
-
win.addEventListener("DOMContentLoaded", safeResolve, { once: true });
|
|
18038
|
-
win.addEventListener("load", safeResolve, { once: true });
|
|
18039
|
-
setTimeout(() => {
|
|
18040
|
-
safeResolve();
|
|
18041
|
-
}, maxWaitMs);
|
|
18042
|
-
}
|
|
18043
|
-
});
|
|
18044
|
-
}
|
|
18045
18252
|
try {
|
|
18046
18253
|
if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {
|
|
18047
18254
|
const cleanFrame = document.createElement("iframe");
|
|
@@ -18059,6 +18266,7 @@ function record(options = {}) {
|
|
|
18059
18266
|
checkoutEveryNms,
|
|
18060
18267
|
checkoutEveryNth,
|
|
18061
18268
|
checkoutEveryNvm,
|
|
18269
|
+
checkoutDebounce,
|
|
18062
18270
|
blockClass = "rr-block",
|
|
18063
18271
|
blockSelector = null,
|
|
18064
18272
|
ignoreClass = "rr-ignore",
|
|
@@ -18153,6 +18361,10 @@ function record(options = {}) {
|
|
|
18153
18361
|
let lastFullSnapshotEvent;
|
|
18154
18362
|
let incrementalSnapshotCount = 0;
|
|
18155
18363
|
let visibilityMutationCount = 0;
|
|
18364
|
+
let checkoutId = 0;
|
|
18365
|
+
let checkoutPending = false;
|
|
18366
|
+
let checkoutDebounceTimer = null;
|
|
18367
|
+
let checkoutFreezeTimestamp = null;
|
|
18156
18368
|
const eventProcessor = (e2) => {
|
|
18157
18369
|
for (const plugin3 of plugins || []) {
|
|
18158
18370
|
if (plugin3.eventProcessor) {
|
|
@@ -18165,13 +18377,32 @@ function record(options = {}) {
|
|
|
18165
18377
|
}
|
|
18166
18378
|
return e2;
|
|
18167
18379
|
};
|
|
18380
|
+
const executeCheckout = () => {
|
|
18381
|
+
checkoutDebounceTimer = null;
|
|
18382
|
+
checkoutPending = false;
|
|
18383
|
+
checkoutFreezeTimestamp = null;
|
|
18384
|
+
navigationManager == null ? void 0 : navigationManager.cancelPending();
|
|
18385
|
+
takeFullSnapshot$1(true);
|
|
18386
|
+
mutationBuffers.forEach((buf) => {
|
|
18387
|
+
buf.resetBuffers();
|
|
18388
|
+
buf.unsetFrozen();
|
|
18389
|
+
});
|
|
18390
|
+
if (visibilityManager) {
|
|
18391
|
+
visibilityManager.unsetFrozen();
|
|
18392
|
+
}
|
|
18393
|
+
if (navigationManager) {
|
|
18394
|
+
navigationManager.unsetFrozen();
|
|
18395
|
+
}
|
|
18396
|
+
};
|
|
18168
18397
|
wrappedEmit = (r2, isCheckout) => {
|
|
18169
18398
|
var _a2;
|
|
18170
18399
|
const e2 = r2;
|
|
18171
18400
|
e2.timestamp = nowTimestamp();
|
|
18172
|
-
|
|
18401
|
+
e2.checkoutId = checkoutId;
|
|
18402
|
+
if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && !checkoutPending && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {
|
|
18173
18403
|
mutationBuffers.forEach((buf) => buf.unfreeze());
|
|
18174
18404
|
visibilityManager == null ? void 0 : visibilityManager.unfreeze();
|
|
18405
|
+
navigationManager == null ? void 0 : navigationManager.unfreeze();
|
|
18175
18406
|
}
|
|
18176
18407
|
if (inEmittingFrame) {
|
|
18177
18408
|
emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);
|
|
@@ -18196,7 +18427,29 @@ function record(options = {}) {
|
|
|
18196
18427
|
const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;
|
|
18197
18428
|
const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;
|
|
18198
18429
|
if (exceedCount || exceedTime) {
|
|
18199
|
-
|
|
18430
|
+
if (checkoutDebounce) {
|
|
18431
|
+
if (!checkoutPending) {
|
|
18432
|
+
checkoutPending = true;
|
|
18433
|
+
checkoutFreezeTimestamp = nowTimestamp();
|
|
18434
|
+
mutationBuffers.forEach((buf) => buf.freeze());
|
|
18435
|
+
visibilityManager == null ? void 0 : visibilityManager.freeze();
|
|
18436
|
+
}
|
|
18437
|
+
if (checkoutDebounceTimer) {
|
|
18438
|
+
clearTimeout(checkoutDebounceTimer);
|
|
18439
|
+
}
|
|
18440
|
+
const frozenDuration = nowTimestamp() - checkoutFreezeTimestamp;
|
|
18441
|
+
const maxFreeze = checkoutDebounce * 3;
|
|
18442
|
+
if (frozenDuration >= maxFreeze) {
|
|
18443
|
+
executeCheckout();
|
|
18444
|
+
} else {
|
|
18445
|
+
checkoutDebounceTimer = setTimeout(
|
|
18446
|
+
() => executeCheckout(),
|
|
18447
|
+
checkoutDebounce
|
|
18448
|
+
);
|
|
18449
|
+
}
|
|
18450
|
+
} else {
|
|
18451
|
+
takeFullSnapshot$1(true);
|
|
18452
|
+
}
|
|
18200
18453
|
}
|
|
18201
18454
|
}
|
|
18202
18455
|
}
|
|
@@ -18311,8 +18564,30 @@ function record(options = {}) {
|
|
|
18311
18564
|
notifyActivity: checkoutEveryNvm != null ? (count) => {
|
|
18312
18565
|
visibilityMutationCount += count;
|
|
18313
18566
|
if (visibilityMutationCount >= checkoutEveryNvm) {
|
|
18314
|
-
takeFullSnapshot$1(true);
|
|
18315
18567
|
visibilityMutationCount = 0;
|
|
18568
|
+
if (checkoutDebounce) {
|
|
18569
|
+
if (!checkoutPending) {
|
|
18570
|
+
checkoutPending = true;
|
|
18571
|
+
checkoutFreezeTimestamp = nowTimestamp();
|
|
18572
|
+
mutationBuffers.forEach((buf) => buf.freeze());
|
|
18573
|
+
visibilityManager == null ? void 0 : visibilityManager.freeze();
|
|
18574
|
+
}
|
|
18575
|
+
if (checkoutDebounceTimer) {
|
|
18576
|
+
clearTimeout(checkoutDebounceTimer);
|
|
18577
|
+
}
|
|
18578
|
+
const frozenDuration = nowTimestamp() - checkoutFreezeTimestamp;
|
|
18579
|
+
const maxFreeze = checkoutDebounce * 3;
|
|
18580
|
+
if (frozenDuration >= maxFreeze) {
|
|
18581
|
+
executeCheckout();
|
|
18582
|
+
} else {
|
|
18583
|
+
checkoutDebounceTimer = setTimeout(
|
|
18584
|
+
() => executeCheckout(),
|
|
18585
|
+
checkoutDebounce
|
|
18586
|
+
);
|
|
18587
|
+
}
|
|
18588
|
+
} else {
|
|
18589
|
+
takeFullSnapshot$1(true);
|
|
18590
|
+
}
|
|
18316
18591
|
}
|
|
18317
18592
|
} : void 0
|
|
18318
18593
|
});
|
|
@@ -18321,6 +18596,7 @@ function record(options = {}) {
|
|
|
18321
18596
|
if (!recordDOM) {
|
|
18322
18597
|
return;
|
|
18323
18598
|
}
|
|
18599
|
+
checkoutId++;
|
|
18324
18600
|
wrappedEmit(
|
|
18325
18601
|
{
|
|
18326
18602
|
type: EventType.Meta,
|
|
@@ -18336,6 +18612,7 @@ function record(options = {}) {
|
|
|
18336
18612
|
shadowDomManager.init();
|
|
18337
18613
|
mutationBuffers.forEach((buf) => buf.lock());
|
|
18338
18614
|
visibilityManager == null ? void 0 : visibilityManager.lock();
|
|
18615
|
+
navigationManager == null ? void 0 : navigationManager.lock();
|
|
18339
18616
|
const node2 = snapshot(document, {
|
|
18340
18617
|
mirror,
|
|
18341
18618
|
blockClass,
|
|
@@ -18387,6 +18664,7 @@ function record(options = {}) {
|
|
|
18387
18664
|
);
|
|
18388
18665
|
mutationBuffers.forEach((buf) => buf.unlock());
|
|
18389
18666
|
visibilityManager == null ? void 0 : visibilityManager.unlock();
|
|
18667
|
+
navigationManager == null ? void 0 : navigationManager.unlock();
|
|
18390
18668
|
if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)
|
|
18391
18669
|
stylesheetManager.adoptStyleSheets(
|
|
18392
18670
|
document.adoptedStyleSheets,
|
|
@@ -18399,6 +18677,31 @@ function record(options = {}) {
|
|
|
18399
18677
|
}
|
|
18400
18678
|
customEventQueue.length = 0;
|
|
18401
18679
|
};
|
|
18680
|
+
let navigationManager;
|
|
18681
|
+
const navigationSampling = sampling.navigation;
|
|
18682
|
+
if (navigationSampling !== false) {
|
|
18683
|
+
const navConfig = typeof navigationSampling === "object" ? navigationSampling : {};
|
|
18684
|
+
navigationManager = new NavigationManager({
|
|
18685
|
+
doc: document,
|
|
18686
|
+
config: navConfig,
|
|
18687
|
+
onSnapshot: (isCheckout) => {
|
|
18688
|
+
if (checkoutPending) {
|
|
18689
|
+
if (checkoutDebounceTimer) {
|
|
18690
|
+
clearTimeout(checkoutDebounceTimer);
|
|
18691
|
+
checkoutDebounceTimer = null;
|
|
18692
|
+
}
|
|
18693
|
+
checkoutPending = false;
|
|
18694
|
+
checkoutFreezeTimestamp = null;
|
|
18695
|
+
mutationBuffers.forEach((buf) => {
|
|
18696
|
+
buf.resetBuffers();
|
|
18697
|
+
buf.unsetFrozen();
|
|
18698
|
+
});
|
|
18699
|
+
visibilityManager == null ? void 0 : visibilityManager.unsetFrozen();
|
|
18700
|
+
}
|
|
18701
|
+
takeFullSnapshot$1(isCheckout);
|
|
18702
|
+
}
|
|
18703
|
+
});
|
|
18704
|
+
}
|
|
18402
18705
|
try {
|
|
18403
18706
|
const handlers = [];
|
|
18404
18707
|
const observe = (doc) => {
|
|
@@ -18429,14 +18732,11 @@ function record(options = {}) {
|
|
|
18429
18732
|
}
|
|
18430
18733
|
}),
|
|
18431
18734
|
navigationCb: (navData) => {
|
|
18432
|
-
|
|
18433
|
-
|
|
18434
|
-
|
|
18435
|
-
|
|
18436
|
-
|
|
18437
|
-
navData.href
|
|
18438
|
-
);
|
|
18439
|
-
takeFullSnapshot$1(true);
|
|
18735
|
+
if (navigationManager) {
|
|
18736
|
+
navigationManager.handleNavigation(navData);
|
|
18737
|
+
} else {
|
|
18738
|
+
takeFullSnapshot$1(true);
|
|
18739
|
+
}
|
|
18440
18740
|
},
|
|
18441
18741
|
inputCb: (v2) => wrappedEmit({
|
|
18442
18742
|
type: EventType.IncrementalSnapshot,
|
|
@@ -18555,23 +18855,6 @@ function record(options = {}) {
|
|
|
18555
18855
|
flushCustomEventQueue$1();
|
|
18556
18856
|
}
|
|
18557
18857
|
};
|
|
18558
|
-
const runInit = async () => {
|
|
18559
|
-
if (flushCustomEvent === "before") {
|
|
18560
|
-
flushCustomEventQueue$1();
|
|
18561
|
-
}
|
|
18562
|
-
if (recordAfter === "DOMContentStabilized") {
|
|
18563
|
-
console.debug(`[${nowTimestamp()}] [rrweb:record] 🟢 Waiting for DOM stabilization...`);
|
|
18564
|
-
await waitForDOMStabilization(window);
|
|
18565
|
-
console.debug(`[${nowTimestamp()}] [rrweb:record] ✅ DOM stabilized, starting recording`);
|
|
18566
|
-
}
|
|
18567
|
-
console.debug(`[${nowTimestamp()}] [rrweb:record] ✅ Init dom and takeFullSnapshot `);
|
|
18568
|
-
takeFullSnapshot$1();
|
|
18569
|
-
handlers.push(observe(document));
|
|
18570
|
-
recording = true;
|
|
18571
|
-
if (flushCustomEvent === "after") {
|
|
18572
|
-
flushCustomEventQueue$1();
|
|
18573
|
-
}
|
|
18574
|
-
};
|
|
18575
18858
|
if (document.readyState === "interactive" || document.readyState === "complete") {
|
|
18576
18859
|
init();
|
|
18577
18860
|
} else {
|
|
@@ -18599,8 +18882,13 @@ function record(options = {}) {
|
|
|
18599
18882
|
);
|
|
18600
18883
|
}
|
|
18601
18884
|
return () => {
|
|
18885
|
+
if (checkoutDebounceTimer) {
|
|
18886
|
+
clearTimeout(checkoutDebounceTimer);
|
|
18887
|
+
checkoutDebounceTimer = null;
|
|
18888
|
+
}
|
|
18602
18889
|
flushCustomEventQueue$1();
|
|
18603
18890
|
handlers.forEach((h) => h());
|
|
18891
|
+
navigationManager == null ? void 0 : navigationManager.destroy();
|
|
18604
18892
|
processedNodeManager.destroy();
|
|
18605
18893
|
recording = false;
|
|
18606
18894
|
unregisterErrorHandler();
|
|
@@ -21525,7 +21813,7 @@ class Replayer {
|
|
|
21525
21813
|
this.config.logger.log(REPLAY_CONSOLE_PREFIX, ...args);
|
|
21526
21814
|
}
|
|
21527
21815
|
}
|
|
21528
|
-
const version = "3.
|
|
21816
|
+
const version = "3.3.0-alpha.1";
|
|
21529
21817
|
const { getVersion } = record;
|
|
21530
21818
|
const { isRecording } = record;
|
|
21531
21819
|
const { flushCustomEventQueue } = record;
|