@appsurify-testmap/rrweb 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.cjs +350 -62
- package/dist/rrweb.cjs.map +1 -1
- package/dist/rrweb.d.cts +1 -0
- package/dist/rrweb.d.ts +1 -0
- package/dist/rrweb.js +350 -62
- package/dist/rrweb.js.map +1 -1
- package/dist/rrweb.umd.cjs +358 -62
- package/dist/rrweb.umd.cjs.map +3 -3
- package/dist/rrweb.umd.min.cjs +42 -42
- package/dist/rrweb.umd.min.cjs.map +4 -4
- package/package.json +5 -5
package/dist/rrweb.cjs
CHANGED
|
@@ -15490,6 +15490,30 @@ class MutationBuffer {
|
|
|
15490
15490
|
this.shadowDomManager.reset();
|
|
15491
15491
|
this.canvasManager.reset();
|
|
15492
15492
|
}
|
|
15493
|
+
/**
|
|
15494
|
+
* Clear all accumulated mutation data without emitting.
|
|
15495
|
+
* Used after freeze+debounce checkout — FullSnapshot already captured the state.
|
|
15496
|
+
*/
|
|
15497
|
+
resetBuffers() {
|
|
15498
|
+
this.addedSet = /* @__PURE__ */ new Set();
|
|
15499
|
+
this.movedSet = /* @__PURE__ */ new Set();
|
|
15500
|
+
this.droppedSet = /* @__PURE__ */ new Set();
|
|
15501
|
+
this.removesSubTreeCache = /* @__PURE__ */ new Set();
|
|
15502
|
+
this.mapRemoves = [];
|
|
15503
|
+
this.movedMap = {};
|
|
15504
|
+
this.attributes = [];
|
|
15505
|
+
this.texts = [];
|
|
15506
|
+
this.attributeMap = /* @__PURE__ */ new WeakMap();
|
|
15507
|
+
this.removes = [];
|
|
15508
|
+
}
|
|
15509
|
+
/**
|
|
15510
|
+
* Clear frozen flag without triggering emit.
|
|
15511
|
+
* Used after freeze+debounce checkout — buffers already cleared by resetBuffers().
|
|
15512
|
+
*/
|
|
15513
|
+
unsetFrozen() {
|
|
15514
|
+
this.frozen = false;
|
|
15515
|
+
this.canvasManager.unfreeze();
|
|
15516
|
+
}
|
|
15493
15517
|
}
|
|
15494
15518
|
function deepDelete(addsSet, n2) {
|
|
15495
15519
|
addsSet.delete(n2);
|
|
@@ -15855,6 +15879,30 @@ function initNavigationObserver({
|
|
|
15855
15879
|
handlers.push(restoreReplaceState);
|
|
15856
15880
|
handlers.push(on("popstate", () => emitNavigation("popstate"), win));
|
|
15857
15881
|
handlers.push(on("hashchange", () => emitNavigation("hashchange"), win));
|
|
15882
|
+
const useNavigationAPI = typeof sampling.navigation === "object" ? sampling.navigation.useNavigationAPI ?? true : true;
|
|
15883
|
+
if (useNavigationAPI && "navigation" in win) {
|
|
15884
|
+
try {
|
|
15885
|
+
const nav = win.navigation;
|
|
15886
|
+
const handler = (event) => {
|
|
15887
|
+
var _a2;
|
|
15888
|
+
const navEvent = event;
|
|
15889
|
+
if (navEvent.navigationType === "push" || navEvent.navigationType === "replace") {
|
|
15890
|
+
const destUrl = (_a2 = navEvent.destination) == null ? void 0 : _a2.url;
|
|
15891
|
+
if (destUrl && destUrl !== lastHref) {
|
|
15892
|
+
navigationCb({
|
|
15893
|
+
href: destUrl,
|
|
15894
|
+
oldHref: lastHref,
|
|
15895
|
+
navigationType: "navigate"
|
|
15896
|
+
});
|
|
15897
|
+
lastHref = destUrl;
|
|
15898
|
+
}
|
|
15899
|
+
}
|
|
15900
|
+
};
|
|
15901
|
+
nav.addEventListener("navigate", handler);
|
|
15902
|
+
handlers.push(() => nav.removeEventListener("navigate", handler));
|
|
15903
|
+
} catch {
|
|
15904
|
+
}
|
|
15905
|
+
}
|
|
15858
15906
|
return callbackWrapper(() => {
|
|
15859
15907
|
handlers.forEach((h) => h());
|
|
15860
15908
|
});
|
|
@@ -17900,10 +17948,13 @@ class VisibilityManager {
|
|
|
17900
17948
|
}
|
|
17901
17949
|
flushBuffer() {
|
|
17902
17950
|
var _a2;
|
|
17951
|
+
if (this.frozen || this.locked) return;
|
|
17903
17952
|
if (this.buffer.size === 0) return;
|
|
17904
|
-
|
|
17905
|
-
|
|
17953
|
+
const mutations = Array.from(this.buffer.values());
|
|
17954
|
+
const count = mutations.length;
|
|
17906
17955
|
this.buffer.clear();
|
|
17956
|
+
this.mutationCb({ mutations });
|
|
17957
|
+
(_a2 = this.notifyActivity) == null ? void 0 : _a2.call(this, count);
|
|
17907
17958
|
}
|
|
17908
17959
|
observe(el) {
|
|
17909
17960
|
if (this.disabled) return;
|
|
@@ -17917,6 +17968,10 @@ class VisibilityManager {
|
|
|
17917
17968
|
}
|
|
17918
17969
|
freeze() {
|
|
17919
17970
|
this.frozen = true;
|
|
17971
|
+
if (this.debounceTimer) {
|
|
17972
|
+
clearTimeout(this.debounceTimer);
|
|
17973
|
+
this.debounceTimer = null;
|
|
17974
|
+
}
|
|
17920
17975
|
}
|
|
17921
17976
|
unfreeze() {
|
|
17922
17977
|
this.frozen = false;
|
|
@@ -17924,9 +17979,33 @@ class VisibilityManager {
|
|
|
17924
17979
|
}
|
|
17925
17980
|
lock() {
|
|
17926
17981
|
this.locked = true;
|
|
17982
|
+
if (this.debounceTimer) {
|
|
17983
|
+
clearTimeout(this.debounceTimer);
|
|
17984
|
+
this.debounceTimer = null;
|
|
17985
|
+
}
|
|
17927
17986
|
}
|
|
17928
17987
|
unlock() {
|
|
17929
17988
|
this.locked = false;
|
|
17989
|
+
this.buffer.clear();
|
|
17990
|
+
if (this.debounceTimer) {
|
|
17991
|
+
clearTimeout(this.debounceTimer);
|
|
17992
|
+
this.debounceTimer = null;
|
|
17993
|
+
}
|
|
17994
|
+
if (!this.disabled && this.elements.size > 0) {
|
|
17995
|
+
this.previousState = computeVisibility(this.elements, /* @__PURE__ */ new Map(), {
|
|
17996
|
+
root: this.root,
|
|
17997
|
+
threshold: this.threshold,
|
|
17998
|
+
sensitivity: this.sensitivity,
|
|
17999
|
+
rootMargin: this.rootMargin
|
|
18000
|
+
});
|
|
18001
|
+
}
|
|
18002
|
+
}
|
|
18003
|
+
/**
|
|
18004
|
+
* Clear frozen flag without triggering flush.
|
|
18005
|
+
* Used after freeze+debounce checkout — buffer already cleared by unlock().
|
|
18006
|
+
*/
|
|
18007
|
+
unsetFrozen() {
|
|
18008
|
+
this.frozen = false;
|
|
17930
18009
|
}
|
|
17931
18010
|
reset() {
|
|
17932
18011
|
this.elements.clear();
|
|
@@ -17942,6 +18021,164 @@ class VisibilityManager {
|
|
|
17942
18021
|
}
|
|
17943
18022
|
}
|
|
17944
18023
|
}
|
|
18024
|
+
const DEFAULT_SETTLE_TIMEOUT = 150;
|
|
18025
|
+
const DEFAULT_MAX_WAIT = 5e3;
|
|
18026
|
+
const DEFAULT_DEBOUNCE = 100;
|
|
18027
|
+
class NavigationManager {
|
|
18028
|
+
constructor(options) {
|
|
18029
|
+
__publicField(this, "frozen", false);
|
|
18030
|
+
__publicField(this, "locked", false);
|
|
18031
|
+
__publicField(this, "disabled", false);
|
|
18032
|
+
__publicField(this, "settleTimeout");
|
|
18033
|
+
__publicField(this, "maxWait");
|
|
18034
|
+
__publicField(this, "debounceMs");
|
|
18035
|
+
__publicField(this, "settlingObserver", null);
|
|
18036
|
+
__publicField(this, "debounceTimer", null);
|
|
18037
|
+
__publicField(this, "settleCheckTimer", null);
|
|
18038
|
+
__publicField(this, "maxWaitTimer", null);
|
|
18039
|
+
__publicField(this, "lastMutationTime", 0);
|
|
18040
|
+
__publicField(this, "pendingNavigation", null);
|
|
18041
|
+
__publicField(this, "doc");
|
|
18042
|
+
__publicField(this, "onSnapshot");
|
|
18043
|
+
const { doc, config, onSnapshot } = options;
|
|
18044
|
+
this.doc = doc;
|
|
18045
|
+
this.onSnapshot = callbackWrapper(onSnapshot);
|
|
18046
|
+
this.settleTimeout = config.settleTimeout ?? DEFAULT_SETTLE_TIMEOUT;
|
|
18047
|
+
this.maxWait = config.maxWait ?? DEFAULT_MAX_WAIT;
|
|
18048
|
+
this.debounceMs = config.debounce ?? DEFAULT_DEBOUNCE;
|
|
18049
|
+
}
|
|
18050
|
+
handleNavigation(data) {
|
|
18051
|
+
if (this.disabled) return;
|
|
18052
|
+
if (this.locked) return;
|
|
18053
|
+
this.cancelTimers();
|
|
18054
|
+
this.disconnectSettlingObserver();
|
|
18055
|
+
this.pendingNavigation = data;
|
|
18056
|
+
if (this.frozen) {
|
|
18057
|
+
return;
|
|
18058
|
+
}
|
|
18059
|
+
this.startDebounce();
|
|
18060
|
+
}
|
|
18061
|
+
cancelPending() {
|
|
18062
|
+
this.cancelTimers();
|
|
18063
|
+
this.disconnectSettlingObserver();
|
|
18064
|
+
this.pendingNavigation = null;
|
|
18065
|
+
}
|
|
18066
|
+
freeze() {
|
|
18067
|
+
this.frozen = true;
|
|
18068
|
+
this.cancelTimers();
|
|
18069
|
+
this.disconnectSettlingObserver();
|
|
18070
|
+
}
|
|
18071
|
+
unfreeze() {
|
|
18072
|
+
this.frozen = false;
|
|
18073
|
+
if (this.pendingNavigation && !this.locked && !this.disabled) {
|
|
18074
|
+
this.startDebounce();
|
|
18075
|
+
}
|
|
18076
|
+
}
|
|
18077
|
+
lock() {
|
|
18078
|
+
this.locked = true;
|
|
18079
|
+
this.cancelTimers();
|
|
18080
|
+
this.disconnectSettlingObserver();
|
|
18081
|
+
}
|
|
18082
|
+
unlock() {
|
|
18083
|
+
this.locked = false;
|
|
18084
|
+
this.pendingNavigation = null;
|
|
18085
|
+
}
|
|
18086
|
+
unsetFrozen() {
|
|
18087
|
+
this.frozen = false;
|
|
18088
|
+
}
|
|
18089
|
+
reset() {
|
|
18090
|
+
this.cancelTimers();
|
|
18091
|
+
this.disconnectSettlingObserver();
|
|
18092
|
+
this.pendingNavigation = null;
|
|
18093
|
+
this.frozen = false;
|
|
18094
|
+
this.locked = false;
|
|
18095
|
+
}
|
|
18096
|
+
destroy() {
|
|
18097
|
+
this.reset();
|
|
18098
|
+
this.disabled = true;
|
|
18099
|
+
}
|
|
18100
|
+
startDebounce() {
|
|
18101
|
+
this.debounceTimer = setTimeout(() => {
|
|
18102
|
+
this.debounceTimer = null;
|
|
18103
|
+
this.startDOMSettling();
|
|
18104
|
+
}, this.debounceMs);
|
|
18105
|
+
}
|
|
18106
|
+
startDOMSettling() {
|
|
18107
|
+
if (this.frozen || this.locked || this.disabled) return;
|
|
18108
|
+
this.lastMutationTime = performance.now();
|
|
18109
|
+
const ObserverCtor = mutationObserverCtor();
|
|
18110
|
+
this.settlingObserver = new ObserverCtor(() => {
|
|
18111
|
+
this.lastMutationTime = performance.now();
|
|
18112
|
+
if (this.settleCheckTimer !== null) {
|
|
18113
|
+
clearTimeout(this.settleCheckTimer);
|
|
18114
|
+
}
|
|
18115
|
+
this.settleCheckTimer = setTimeout(
|
|
18116
|
+
() => this.checkSettled(),
|
|
18117
|
+
this.settleTimeout
|
|
18118
|
+
);
|
|
18119
|
+
});
|
|
18120
|
+
this.settlingObserver.observe(this.doc, {
|
|
18121
|
+
childList: true,
|
|
18122
|
+
subtree: true,
|
|
18123
|
+
attributes: true,
|
|
18124
|
+
characterData: true
|
|
18125
|
+
});
|
|
18126
|
+
this.settleCheckTimer = setTimeout(
|
|
18127
|
+
() => this.checkSettled(),
|
|
18128
|
+
this.settleTimeout
|
|
18129
|
+
);
|
|
18130
|
+
this.maxWaitTimer = setTimeout(() => {
|
|
18131
|
+
this.maxWaitTimer = null;
|
|
18132
|
+
this.completeSettling();
|
|
18133
|
+
}, this.maxWait);
|
|
18134
|
+
}
|
|
18135
|
+
checkSettled() {
|
|
18136
|
+
this.settleCheckTimer = null;
|
|
18137
|
+
const elapsed = performance.now() - this.lastMutationTime;
|
|
18138
|
+
if (elapsed >= this.settleTimeout) {
|
|
18139
|
+
this.completeSettling();
|
|
18140
|
+
} else {
|
|
18141
|
+
this.settleCheckTimer = setTimeout(
|
|
18142
|
+
() => this.checkSettled(),
|
|
18143
|
+
this.settleTimeout - elapsed
|
|
18144
|
+
);
|
|
18145
|
+
}
|
|
18146
|
+
}
|
|
18147
|
+
completeSettling() {
|
|
18148
|
+
if (this.frozen || this.locked || this.disabled) return;
|
|
18149
|
+
if (!this.pendingNavigation) return;
|
|
18150
|
+
this.cancelTimers();
|
|
18151
|
+
this.disconnectSettlingObserver();
|
|
18152
|
+
this.pendingNavigation = null;
|
|
18153
|
+
requestAnimationFrame(() => {
|
|
18154
|
+
requestAnimationFrame(() => {
|
|
18155
|
+
if (!this.frozen && !this.locked && !this.disabled) {
|
|
18156
|
+
this.onSnapshot(true);
|
|
18157
|
+
}
|
|
18158
|
+
});
|
|
18159
|
+
});
|
|
18160
|
+
}
|
|
18161
|
+
cancelTimers() {
|
|
18162
|
+
if (this.debounceTimer !== null) {
|
|
18163
|
+
clearTimeout(this.debounceTimer);
|
|
18164
|
+
this.debounceTimer = null;
|
|
18165
|
+
}
|
|
18166
|
+
if (this.settleCheckTimer !== null) {
|
|
18167
|
+
clearTimeout(this.settleCheckTimer);
|
|
18168
|
+
this.settleCheckTimer = null;
|
|
18169
|
+
}
|
|
18170
|
+
if (this.maxWaitTimer !== null) {
|
|
18171
|
+
clearTimeout(this.maxWaitTimer);
|
|
18172
|
+
this.maxWaitTimer = null;
|
|
18173
|
+
}
|
|
18174
|
+
}
|
|
18175
|
+
disconnectSettlingObserver() {
|
|
18176
|
+
if (this.settlingObserver) {
|
|
18177
|
+
this.settlingObserver.disconnect();
|
|
18178
|
+
this.settlingObserver = null;
|
|
18179
|
+
}
|
|
18180
|
+
}
|
|
18181
|
+
}
|
|
17945
18182
|
class StylesheetManager {
|
|
17946
18183
|
constructor(options) {
|
|
17947
18184
|
__publicField(this, "trackedLinkElements", /* @__PURE__ */ new WeakSet());
|
|
@@ -18025,43 +18262,13 @@ class ProcessedNodeManager {
|
|
|
18025
18262
|
destroy() {
|
|
18026
18263
|
}
|
|
18027
18264
|
}
|
|
18028
|
-
const version$1 = "3.
|
|
18265
|
+
const version$1 = "3.3.0-alpha.1";
|
|
18029
18266
|
let wrappedEmit;
|
|
18030
18267
|
let takeFullSnapshot$1;
|
|
18031
18268
|
let canvasManager;
|
|
18032
18269
|
let recording = false;
|
|
18033
18270
|
const customEventQueue = [];
|
|
18034
18271
|
let flushCustomEventQueue$1;
|
|
18035
|
-
function waitForDOMStabilization(win) {
|
|
18036
|
-
const maxWaitMs = 5e3;
|
|
18037
|
-
return new Promise((resolve2) => {
|
|
18038
|
-
const captureAfterPaint = () => {
|
|
18039
|
-
requestAnimationFrame(() => {
|
|
18040
|
-
requestAnimationFrame(() => {
|
|
18041
|
-
resolve2();
|
|
18042
|
-
});
|
|
18043
|
-
});
|
|
18044
|
-
};
|
|
18045
|
-
const safeResolve = /* @__PURE__ */ (() => {
|
|
18046
|
-
let called = false;
|
|
18047
|
-
return () => {
|
|
18048
|
-
if (!called) {
|
|
18049
|
-
called = true;
|
|
18050
|
-
captureAfterPaint();
|
|
18051
|
-
}
|
|
18052
|
-
};
|
|
18053
|
-
})();
|
|
18054
|
-
if (["interactive", "complete"].includes(win.document.readyState)) {
|
|
18055
|
-
safeResolve();
|
|
18056
|
-
} else {
|
|
18057
|
-
win.addEventListener("DOMContentLoaded", safeResolve, { once: true });
|
|
18058
|
-
win.addEventListener("load", safeResolve, { once: true });
|
|
18059
|
-
setTimeout(() => {
|
|
18060
|
-
safeResolve();
|
|
18061
|
-
}, maxWaitMs);
|
|
18062
|
-
}
|
|
18063
|
-
});
|
|
18064
|
-
}
|
|
18065
18272
|
try {
|
|
18066
18273
|
if (Array.from([1], (x2) => x2 * 2)[0] !== 2) {
|
|
18067
18274
|
const cleanFrame = document.createElement("iframe");
|
|
@@ -18079,6 +18286,7 @@ function record(options = {}) {
|
|
|
18079
18286
|
checkoutEveryNms,
|
|
18080
18287
|
checkoutEveryNth,
|
|
18081
18288
|
checkoutEveryNvm,
|
|
18289
|
+
checkoutDebounce,
|
|
18082
18290
|
blockClass = "rr-block",
|
|
18083
18291
|
blockSelector = null,
|
|
18084
18292
|
ignoreClass = "rr-ignore",
|
|
@@ -18173,6 +18381,10 @@ function record(options = {}) {
|
|
|
18173
18381
|
let lastFullSnapshotEvent;
|
|
18174
18382
|
let incrementalSnapshotCount = 0;
|
|
18175
18383
|
let visibilityMutationCount = 0;
|
|
18384
|
+
let checkoutId = 0;
|
|
18385
|
+
let checkoutPending = false;
|
|
18386
|
+
let checkoutDebounceTimer = null;
|
|
18387
|
+
let checkoutFreezeTimestamp = null;
|
|
18176
18388
|
const eventProcessor = (e2) => {
|
|
18177
18389
|
for (const plugin3 of plugins || []) {
|
|
18178
18390
|
if (plugin3.eventProcessor) {
|
|
@@ -18185,13 +18397,32 @@ function record(options = {}) {
|
|
|
18185
18397
|
}
|
|
18186
18398
|
return e2;
|
|
18187
18399
|
};
|
|
18400
|
+
const executeCheckout = () => {
|
|
18401
|
+
checkoutDebounceTimer = null;
|
|
18402
|
+
checkoutPending = false;
|
|
18403
|
+
checkoutFreezeTimestamp = null;
|
|
18404
|
+
navigationManager == null ? void 0 : navigationManager.cancelPending();
|
|
18405
|
+
takeFullSnapshot$1(true);
|
|
18406
|
+
mutationBuffers.forEach((buf) => {
|
|
18407
|
+
buf.resetBuffers();
|
|
18408
|
+
buf.unsetFrozen();
|
|
18409
|
+
});
|
|
18410
|
+
if (visibilityManager) {
|
|
18411
|
+
visibilityManager.unsetFrozen();
|
|
18412
|
+
}
|
|
18413
|
+
if (navigationManager) {
|
|
18414
|
+
navigationManager.unsetFrozen();
|
|
18415
|
+
}
|
|
18416
|
+
};
|
|
18188
18417
|
wrappedEmit = (r2, isCheckout) => {
|
|
18189
18418
|
var _a2;
|
|
18190
18419
|
const e2 = r2;
|
|
18191
18420
|
e2.timestamp = nowTimestamp();
|
|
18192
|
-
|
|
18421
|
+
e2.checkoutId = checkoutId;
|
|
18422
|
+
if (((_a2 = mutationBuffers[0]) == null ? void 0 : _a2.isFrozen()) && !checkoutPending && e2.type !== EventType.FullSnapshot && !(e2.type === EventType.IncrementalSnapshot && e2.data.source === IncrementalSource.Mutation)) {
|
|
18193
18423
|
mutationBuffers.forEach((buf) => buf.unfreeze());
|
|
18194
18424
|
visibilityManager == null ? void 0 : visibilityManager.unfreeze();
|
|
18425
|
+
navigationManager == null ? void 0 : navigationManager.unfreeze();
|
|
18195
18426
|
}
|
|
18196
18427
|
if (inEmittingFrame) {
|
|
18197
18428
|
emit == null ? void 0 : emit(eventProcessor(e2), isCheckout);
|
|
@@ -18216,7 +18447,29 @@ function record(options = {}) {
|
|
|
18216
18447
|
const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;
|
|
18217
18448
|
const exceedTime = checkoutEveryNms && e2.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;
|
|
18218
18449
|
if (exceedCount || exceedTime) {
|
|
18219
|
-
|
|
18450
|
+
if (checkoutDebounce) {
|
|
18451
|
+
if (!checkoutPending) {
|
|
18452
|
+
checkoutPending = true;
|
|
18453
|
+
checkoutFreezeTimestamp = nowTimestamp();
|
|
18454
|
+
mutationBuffers.forEach((buf) => buf.freeze());
|
|
18455
|
+
visibilityManager == null ? void 0 : visibilityManager.freeze();
|
|
18456
|
+
}
|
|
18457
|
+
if (checkoutDebounceTimer) {
|
|
18458
|
+
clearTimeout(checkoutDebounceTimer);
|
|
18459
|
+
}
|
|
18460
|
+
const frozenDuration = nowTimestamp() - checkoutFreezeTimestamp;
|
|
18461
|
+
const maxFreeze = checkoutDebounce * 3;
|
|
18462
|
+
if (frozenDuration >= maxFreeze) {
|
|
18463
|
+
executeCheckout();
|
|
18464
|
+
} else {
|
|
18465
|
+
checkoutDebounceTimer = setTimeout(
|
|
18466
|
+
() => executeCheckout(),
|
|
18467
|
+
checkoutDebounce
|
|
18468
|
+
);
|
|
18469
|
+
}
|
|
18470
|
+
} else {
|
|
18471
|
+
takeFullSnapshot$1(true);
|
|
18472
|
+
}
|
|
18220
18473
|
}
|
|
18221
18474
|
}
|
|
18222
18475
|
}
|
|
@@ -18331,8 +18584,30 @@ function record(options = {}) {
|
|
|
18331
18584
|
notifyActivity: checkoutEveryNvm != null ? (count) => {
|
|
18332
18585
|
visibilityMutationCount += count;
|
|
18333
18586
|
if (visibilityMutationCount >= checkoutEveryNvm) {
|
|
18334
|
-
takeFullSnapshot$1(true);
|
|
18335
18587
|
visibilityMutationCount = 0;
|
|
18588
|
+
if (checkoutDebounce) {
|
|
18589
|
+
if (!checkoutPending) {
|
|
18590
|
+
checkoutPending = true;
|
|
18591
|
+
checkoutFreezeTimestamp = nowTimestamp();
|
|
18592
|
+
mutationBuffers.forEach((buf) => buf.freeze());
|
|
18593
|
+
visibilityManager == null ? void 0 : visibilityManager.freeze();
|
|
18594
|
+
}
|
|
18595
|
+
if (checkoutDebounceTimer) {
|
|
18596
|
+
clearTimeout(checkoutDebounceTimer);
|
|
18597
|
+
}
|
|
18598
|
+
const frozenDuration = nowTimestamp() - checkoutFreezeTimestamp;
|
|
18599
|
+
const maxFreeze = checkoutDebounce * 3;
|
|
18600
|
+
if (frozenDuration >= maxFreeze) {
|
|
18601
|
+
executeCheckout();
|
|
18602
|
+
} else {
|
|
18603
|
+
checkoutDebounceTimer = setTimeout(
|
|
18604
|
+
() => executeCheckout(),
|
|
18605
|
+
checkoutDebounce
|
|
18606
|
+
);
|
|
18607
|
+
}
|
|
18608
|
+
} else {
|
|
18609
|
+
takeFullSnapshot$1(true);
|
|
18610
|
+
}
|
|
18336
18611
|
}
|
|
18337
18612
|
} : void 0
|
|
18338
18613
|
});
|
|
@@ -18341,6 +18616,7 @@ function record(options = {}) {
|
|
|
18341
18616
|
if (!recordDOM) {
|
|
18342
18617
|
return;
|
|
18343
18618
|
}
|
|
18619
|
+
checkoutId++;
|
|
18344
18620
|
wrappedEmit(
|
|
18345
18621
|
{
|
|
18346
18622
|
type: EventType.Meta,
|
|
@@ -18356,6 +18632,7 @@ function record(options = {}) {
|
|
|
18356
18632
|
shadowDomManager.init();
|
|
18357
18633
|
mutationBuffers.forEach((buf) => buf.lock());
|
|
18358
18634
|
visibilityManager == null ? void 0 : visibilityManager.lock();
|
|
18635
|
+
navigationManager == null ? void 0 : navigationManager.lock();
|
|
18359
18636
|
const node2 = snapshot(document, {
|
|
18360
18637
|
mirror,
|
|
18361
18638
|
blockClass,
|
|
@@ -18407,6 +18684,7 @@ function record(options = {}) {
|
|
|
18407
18684
|
);
|
|
18408
18685
|
mutationBuffers.forEach((buf) => buf.unlock());
|
|
18409
18686
|
visibilityManager == null ? void 0 : visibilityManager.unlock();
|
|
18687
|
+
navigationManager == null ? void 0 : navigationManager.unlock();
|
|
18410
18688
|
if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)
|
|
18411
18689
|
stylesheetManager.adoptStyleSheets(
|
|
18412
18690
|
document.adoptedStyleSheets,
|
|
@@ -18419,6 +18697,31 @@ function record(options = {}) {
|
|
|
18419
18697
|
}
|
|
18420
18698
|
customEventQueue.length = 0;
|
|
18421
18699
|
};
|
|
18700
|
+
let navigationManager;
|
|
18701
|
+
const navigationSampling = sampling.navigation;
|
|
18702
|
+
if (navigationSampling !== false) {
|
|
18703
|
+
const navConfig = typeof navigationSampling === "object" ? navigationSampling : {};
|
|
18704
|
+
navigationManager = new NavigationManager({
|
|
18705
|
+
doc: document,
|
|
18706
|
+
config: navConfig,
|
|
18707
|
+
onSnapshot: (isCheckout) => {
|
|
18708
|
+
if (checkoutPending) {
|
|
18709
|
+
if (checkoutDebounceTimer) {
|
|
18710
|
+
clearTimeout(checkoutDebounceTimer);
|
|
18711
|
+
checkoutDebounceTimer = null;
|
|
18712
|
+
}
|
|
18713
|
+
checkoutPending = false;
|
|
18714
|
+
checkoutFreezeTimestamp = null;
|
|
18715
|
+
mutationBuffers.forEach((buf) => {
|
|
18716
|
+
buf.resetBuffers();
|
|
18717
|
+
buf.unsetFrozen();
|
|
18718
|
+
});
|
|
18719
|
+
visibilityManager == null ? void 0 : visibilityManager.unsetFrozen();
|
|
18720
|
+
}
|
|
18721
|
+
takeFullSnapshot$1(isCheckout);
|
|
18722
|
+
}
|
|
18723
|
+
});
|
|
18724
|
+
}
|
|
18422
18725
|
try {
|
|
18423
18726
|
const handlers = [];
|
|
18424
18727
|
const observe = (doc) => {
|
|
@@ -18449,14 +18752,11 @@ function record(options = {}) {
|
|
|
18449
18752
|
}
|
|
18450
18753
|
}),
|
|
18451
18754
|
navigationCb: (navData) => {
|
|
18452
|
-
|
|
18453
|
-
|
|
18454
|
-
|
|
18455
|
-
|
|
18456
|
-
|
|
18457
|
-
navData.href
|
|
18458
|
-
);
|
|
18459
|
-
takeFullSnapshot$1(true);
|
|
18755
|
+
if (navigationManager) {
|
|
18756
|
+
navigationManager.handleNavigation(navData);
|
|
18757
|
+
} else {
|
|
18758
|
+
takeFullSnapshot$1(true);
|
|
18759
|
+
}
|
|
18460
18760
|
},
|
|
18461
18761
|
inputCb: (v2) => wrappedEmit({
|
|
18462
18762
|
type: EventType.IncrementalSnapshot,
|
|
@@ -18575,23 +18875,6 @@ function record(options = {}) {
|
|
|
18575
18875
|
flushCustomEventQueue$1();
|
|
18576
18876
|
}
|
|
18577
18877
|
};
|
|
18578
|
-
const runInit = async () => {
|
|
18579
|
-
if (flushCustomEvent === "before") {
|
|
18580
|
-
flushCustomEventQueue$1();
|
|
18581
|
-
}
|
|
18582
|
-
if (recordAfter === "DOMContentStabilized") {
|
|
18583
|
-
console.debug(`[${nowTimestamp()}] [rrweb:record] 🟢 Waiting for DOM stabilization...`);
|
|
18584
|
-
await waitForDOMStabilization(window);
|
|
18585
|
-
console.debug(`[${nowTimestamp()}] [rrweb:record] ✅ DOM stabilized, starting recording`);
|
|
18586
|
-
}
|
|
18587
|
-
console.debug(`[${nowTimestamp()}] [rrweb:record] ✅ Init dom and takeFullSnapshot `);
|
|
18588
|
-
takeFullSnapshot$1();
|
|
18589
|
-
handlers.push(observe(document));
|
|
18590
|
-
recording = true;
|
|
18591
|
-
if (flushCustomEvent === "after") {
|
|
18592
|
-
flushCustomEventQueue$1();
|
|
18593
|
-
}
|
|
18594
|
-
};
|
|
18595
18878
|
if (document.readyState === "interactive" || document.readyState === "complete") {
|
|
18596
18879
|
init();
|
|
18597
18880
|
} else {
|
|
@@ -18619,8 +18902,13 @@ function record(options = {}) {
|
|
|
18619
18902
|
);
|
|
18620
18903
|
}
|
|
18621
18904
|
return () => {
|
|
18905
|
+
if (checkoutDebounceTimer) {
|
|
18906
|
+
clearTimeout(checkoutDebounceTimer);
|
|
18907
|
+
checkoutDebounceTimer = null;
|
|
18908
|
+
}
|
|
18622
18909
|
flushCustomEventQueue$1();
|
|
18623
18910
|
handlers.forEach((h) => h());
|
|
18911
|
+
navigationManager == null ? void 0 : navigationManager.destroy();
|
|
18624
18912
|
processedNodeManager.destroy();
|
|
18625
18913
|
recording = false;
|
|
18626
18914
|
unregisterErrorHandler();
|
|
@@ -21553,7 +21841,7 @@ class Replayer {
|
|
|
21553
21841
|
this.config.logger.log(REPLAY_CONSOLE_PREFIX, ...args);
|
|
21554
21842
|
}
|
|
21555
21843
|
}
|
|
21556
|
-
const version = "3.
|
|
21844
|
+
const version = "3.3.0-alpha.1";
|
|
21557
21845
|
const { getVersion } = record;
|
|
21558
21846
|
const { isRecording } = record;
|
|
21559
21847
|
const { flushCustomEventQueue } = record;
|