@highlight-run/rrweb 2.0.8 → 2.0.11
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/plugins/console-record.js +5 -5
- package/dist/plugins/console-record.min.js +5 -5
- package/dist/plugins/console-record.min.js.map +1 -1
- package/dist/plugins/console-replay.js +3 -3
- package/dist/plugins/console-replay.min.js +3 -3
- package/dist/plugins/console-replay.min.js.map +1 -1
- package/dist/record/rrweb-record-pack.js +2 -2
- package/dist/record/rrweb-record-pack.min.js +2 -2
- package/dist/record/rrweb-record-pack.min.js.map +1 -1
- package/dist/record/rrweb-record.js +3 -3
- package/dist/record/rrweb-record.min.js +3 -3
- package/dist/record/rrweb-record.min.js.map +1 -1
- package/dist/replay/rrweb-replay-unpack.js +3 -4
- package/dist/replay/rrweb-replay-unpack.min.js +3 -4
- package/dist/replay/rrweb-replay-unpack.min.js.map +1 -1
- package/dist/replay/rrweb-replay.js +3 -4
- package/dist/replay/rrweb-replay.min.js +3 -4
- package/dist/replay/rrweb-replay.min.js.map +1 -1
- package/dist/rrweb-all.js +24 -25
- package/dist/rrweb-all.min.js +24 -25
- package/dist/rrweb-all.min.js.map +1 -1
- package/dist/rrweb.js +14 -15
- package/dist/rrweb.min.js +14 -15
- package/dist/rrweb.min.js.map +1 -1
- package/es/rrweb/packages/rrdom/es/virtual-dom.js +51 -90
- package/es/rrweb/packages/rrweb/src/index.js +1 -1
- package/es/rrweb/packages/rrweb/src/record/index.js +6 -3
- package/es/rrweb/packages/rrweb/src/record/mutation.js +1 -1
- package/es/rrweb/packages/rrweb/src/record/observer.js +1 -1
- package/es/rrweb/packages/rrweb/src/replay/index.js +1 -1
- package/es/rrweb/packages/rrweb/src/utils.js +1 -1
- package/lib/plugins/console-record.js +1 -9
- package/lib/plugins/console-replay.js +1 -9
- package/lib/record/rrweb-record-pack.js +3 -9
- package/lib/record/rrweb-record.js +21 -1061
- package/lib/replay/rrweb-replay-unpack.js +96 -1015
- package/lib/replay/rrweb-replay.js +96 -1015
- package/lib/rrweb-all.js +141 -2034
- package/lib/rrweb.js +141 -2034
- package/package.json +4 -4
- package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +0 -1858
|
@@ -1,66 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
(function (NodeType) {
|
|
3
|
-
NodeType[NodeType["Document"] = 0] = "Document";
|
|
4
|
-
NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
|
|
5
|
-
NodeType[NodeType["Element"] = 2] = "Element";
|
|
6
|
-
NodeType[NodeType["Text"] = 3] = "Text";
|
|
7
|
-
NodeType[NodeType["CDATA"] = 4] = "CDATA";
|
|
8
|
-
NodeType[NodeType["Comment"] = 5] = "Comment";
|
|
9
|
-
})(NodeType$1 || (NodeType$1 = {}));
|
|
10
|
-
var Mirror$1 = (function () {
|
|
11
|
-
function Mirror() {
|
|
12
|
-
this.idNodeMap = new Map();
|
|
13
|
-
this.nodeMetaMap = new WeakMap();
|
|
14
|
-
}
|
|
15
|
-
Mirror.prototype.getId = function (n) {
|
|
16
|
-
var _a;
|
|
17
|
-
if (!n)
|
|
18
|
-
return -1;
|
|
19
|
-
var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;
|
|
20
|
-
return id !== null && id !== void 0 ? id : -1;
|
|
21
|
-
};
|
|
22
|
-
Mirror.prototype.getNode = function (id) {
|
|
23
|
-
return this.idNodeMap.get(id) || null;
|
|
24
|
-
};
|
|
25
|
-
Mirror.prototype.getIds = function () {
|
|
26
|
-
return Array.from(this.idNodeMap.keys());
|
|
27
|
-
};
|
|
28
|
-
Mirror.prototype.getMeta = function (n) {
|
|
29
|
-
return this.nodeMetaMap.get(n) || null;
|
|
30
|
-
};
|
|
31
|
-
Mirror.prototype.removeNodeFromMap = function (n) {
|
|
32
|
-
var _this = this;
|
|
33
|
-
var id = this.getId(n);
|
|
34
|
-
this.idNodeMap["delete"](id);
|
|
35
|
-
if (n.childNodes) {
|
|
36
|
-
n.childNodes.forEach(function (childNode) {
|
|
37
|
-
return _this.removeNodeFromMap(childNode);
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
Mirror.prototype.has = function (id) {
|
|
42
|
-
return this.idNodeMap.has(id);
|
|
43
|
-
};
|
|
44
|
-
Mirror.prototype.hasNode = function (node) {
|
|
45
|
-
return this.nodeMetaMap.has(node);
|
|
46
|
-
};
|
|
47
|
-
Mirror.prototype.add = function (n, meta) {
|
|
48
|
-
var id = meta.id;
|
|
49
|
-
this.idNodeMap.set(id, n);
|
|
50
|
-
this.nodeMetaMap.set(n, meta);
|
|
51
|
-
};
|
|
52
|
-
Mirror.prototype.replace = function (id, n) {
|
|
53
|
-
this.idNodeMap.set(id, n);
|
|
54
|
-
};
|
|
55
|
-
Mirror.prototype.reset = function () {
|
|
56
|
-
this.idNodeMap = new Map();
|
|
57
|
-
this.nodeMetaMap = new WeakMap();
|
|
58
|
-
};
|
|
59
|
-
return Mirror;
|
|
60
|
-
}());
|
|
61
|
-
function createMirror$1() {
|
|
62
|
-
return new Mirror$1();
|
|
63
|
-
}
|
|
1
|
+
import { NodeType as NodeType$1, createMirror as createMirror$1 } from '@highlight-run/rrweb-snapshot';
|
|
64
2
|
|
|
65
3
|
function parseCSSText(cssText) {
|
|
66
4
|
const res = {};
|
|
@@ -535,7 +473,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
535
473
|
break;
|
|
536
474
|
}
|
|
537
475
|
case NodeType$1.Element: {
|
|
538
|
-
const oldElement =
|
|
476
|
+
const oldElement = oldTree;
|
|
539
477
|
const newRRElement = newTree;
|
|
540
478
|
diffProps(oldElement, newRRElement, rrnodeMirror);
|
|
541
479
|
scrollDataToApply = newRRElement.scrollData;
|
|
@@ -543,7 +481,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
543
481
|
switch (newRRElement.tagName) {
|
|
544
482
|
case 'AUDIO':
|
|
545
483
|
case 'VIDEO': {
|
|
546
|
-
const oldMediaElement =
|
|
484
|
+
const oldMediaElement = oldTree;
|
|
547
485
|
const newMediaRRElement = newRRElement;
|
|
548
486
|
if (newMediaRRElement.paused !== undefined)
|
|
549
487
|
newMediaRRElement.paused
|
|
@@ -558,7 +496,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
558
496
|
break;
|
|
559
497
|
}
|
|
560
498
|
case 'CANVAS':
|
|
561
|
-
newTree.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation,
|
|
499
|
+
newTree.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation, oldTree));
|
|
562
500
|
break;
|
|
563
501
|
case 'STYLE':
|
|
564
502
|
applyVirtualStyleRulesToNode(oldElement, newTree.rules);
|
|
@@ -585,8 +523,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
585
523
|
scrollDataToApply && replayer.applyScroll(scrollDataToApply, true);
|
|
586
524
|
inputDataToApply && replayer.applyInput(inputDataToApply);
|
|
587
525
|
if (newTree.nodeName === 'IFRAME') {
|
|
588
|
-
const oldContentDocument =
|
|
589
|
-
.contentDocument;
|
|
526
|
+
const oldContentDocument = oldTree.contentDocument;
|
|
590
527
|
const newIFrameElement = newTree;
|
|
591
528
|
if (oldContentDocument) {
|
|
592
529
|
const sn = rrnodeMirror.getMeta(newIFrameElement.contentDocument);
|
|
@@ -625,7 +562,7 @@ function diffProps(oldTree, newTree, rrnodeMirror) {
|
|
|
625
562
|
newTree.scrollTop && (oldTree.scrollTop = newTree.scrollTop);
|
|
626
563
|
}
|
|
627
564
|
function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirror) {
|
|
628
|
-
var _a
|
|
565
|
+
var _a;
|
|
629
566
|
let oldStartIndex = 0, oldEndIndex = oldChildren.length - 1, newStartIndex = 0, newEndIndex = newChildren.length - 1;
|
|
630
567
|
let oldStartNode = oldChildren[oldStartIndex], oldEndNode = oldChildren[oldEndIndex], newStartNode = newChildren[newStartIndex], newEndNode = newChildren[newEndIndex];
|
|
631
568
|
let oldIdToIndex = undefined, indexInOld;
|
|
@@ -647,16 +584,26 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
647
584
|
newEndNode = newChildren[--newEndIndex];
|
|
648
585
|
}
|
|
649
586
|
else if (replayer.mirror.getId(oldStartNode) === rrnodeMirror.getId(newEndNode)) {
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
587
|
+
try {
|
|
588
|
+
parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);
|
|
589
|
+
diff(oldStartNode, newEndNode, replayer, rrnodeMirror);
|
|
590
|
+
oldStartNode = oldChildren[++oldStartIndex];
|
|
591
|
+
newEndNode = newChildren[--newEndIndex];
|
|
592
|
+
}
|
|
593
|
+
catch (e) {
|
|
594
|
+
console.error(e, parentNode, oldStartNode, oldEndNode);
|
|
595
|
+
}
|
|
654
596
|
}
|
|
655
597
|
else if (replayer.mirror.getId(oldEndNode) === rrnodeMirror.getId(newStartNode)) {
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
598
|
+
try {
|
|
599
|
+
parentNode.insertBefore(oldEndNode, oldStartNode);
|
|
600
|
+
diff(oldEndNode, newStartNode, replayer, rrnodeMirror);
|
|
601
|
+
oldEndNode = oldChildren[--oldEndIndex];
|
|
602
|
+
newStartNode = newChildren[++newStartIndex];
|
|
603
|
+
}
|
|
604
|
+
catch (e) {
|
|
605
|
+
console.error(e, parentNode, oldEndNode, oldStartNode);
|
|
606
|
+
}
|
|
660
607
|
}
|
|
661
608
|
else {
|
|
662
609
|
if (!oldIdToIndex) {
|
|
@@ -670,21 +617,31 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
670
617
|
indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];
|
|
671
618
|
if (indexInOld) {
|
|
672
619
|
const nodeToMove = oldChildren[indexInOld];
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
620
|
+
try {
|
|
621
|
+
parentNode.insertBefore(nodeToMove, oldStartNode);
|
|
622
|
+
diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
|
|
623
|
+
oldChildren[indexInOld] = undefined;
|
|
624
|
+
}
|
|
625
|
+
catch (e) {
|
|
626
|
+
console.error(e, parentNode, nodeToMove, oldStartNode);
|
|
627
|
+
}
|
|
676
628
|
}
|
|
677
629
|
else {
|
|
678
630
|
const newNode = createOrGetNode(newStartNode, replayer.mirror, rrnodeMirror);
|
|
679
|
-
if (
|
|
680
|
-
((
|
|
681
|
-
|
|
682
|
-
parentNode.removeChild(
|
|
631
|
+
if (parentNode.nodeName === '#document' &&
|
|
632
|
+
((_a = replayer.mirror.getMeta(newNode)) === null || _a === void 0 ? void 0 : _a.type) === NodeType$1.Element &&
|
|
633
|
+
parentNode.documentElement) {
|
|
634
|
+
parentNode.removeChild(parentNode.documentElement);
|
|
683
635
|
oldChildren[oldStartIndex] = undefined;
|
|
684
636
|
oldStartNode = undefined;
|
|
685
637
|
}
|
|
686
|
-
|
|
687
|
-
|
|
638
|
+
try {
|
|
639
|
+
parentNode.insertBefore(newNode, oldStartNode || null);
|
|
640
|
+
diff(newNode, newStartNode, replayer, rrnodeMirror);
|
|
641
|
+
}
|
|
642
|
+
catch (e) {
|
|
643
|
+
console.error(e, parentNode, newNode, oldStartNode || null);
|
|
644
|
+
}
|
|
688
645
|
}
|
|
689
646
|
newStartNode = newChildren[++newStartIndex];
|
|
690
647
|
}
|
|
@@ -699,8 +656,13 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
699
656
|
});
|
|
700
657
|
for (; newStartIndex <= newEndIndex; ++newStartIndex) {
|
|
701
658
|
const newNode = createOrGetNode(newChildren[newStartIndex], replayer.mirror, rrnodeMirror);
|
|
702
|
-
|
|
703
|
-
|
|
659
|
+
try {
|
|
660
|
+
parentNode.insertBefore(newNode, referenceNode);
|
|
661
|
+
diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
|
|
662
|
+
}
|
|
663
|
+
catch (e) {
|
|
664
|
+
console.error(e, parentNode, newNode, referenceNode);
|
|
665
|
+
}
|
|
704
666
|
}
|
|
705
667
|
}
|
|
706
668
|
else if (newStartIndex > newEndIndex) {
|
|
@@ -754,8 +716,7 @@ function getNestedRule(rules, position) {
|
|
|
754
716
|
return rule;
|
|
755
717
|
}
|
|
756
718
|
else {
|
|
757
|
-
return getNestedRule(
|
|
758
|
-
.cssRules, position.slice(2));
|
|
719
|
+
return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));
|
|
759
720
|
}
|
|
760
721
|
}
|
|
761
722
|
var StyleRuleType;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import record from './record/index.js';
|
|
2
2
|
export { default as record } from './record/index.js';
|
|
3
|
-
import '
|
|
3
|
+
import '@highlight-run/rrweb-snapshot';
|
|
4
4
|
import '../../rrdom/es/virtual-dom.js';
|
|
5
5
|
export { EventType, IncrementalSource, MouseInteractions, ReplayerEvents } from './types.js';
|
|
6
6
|
import * as utils from './utils.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createMirror, snapshot } from '
|
|
1
|
+
import { createMirror, snapshot } from '@highlight-run/rrweb-snapshot';
|
|
2
2
|
import { initObservers, mutationBuffers } from './observer.js';
|
|
3
|
-
import { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, hasShadowRoot } from '../utils.js';
|
|
3
|
+
import { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';
|
|
4
4
|
import { EventType, IncrementalSource } from '../types.js';
|
|
5
5
|
import { IframeManager } from './iframe-manager.js';
|
|
6
6
|
import { ShadowDomManager } from './shadow-dom-manager.js';
|
|
@@ -180,6 +180,9 @@ function record(options = {}) {
|
|
|
180
180
|
if (isSerializedIframe(n, mirror)) {
|
|
181
181
|
iframeManager.addIframe(n);
|
|
182
182
|
}
|
|
183
|
+
if (isSerializedStylesheet(n, mirror)) {
|
|
184
|
+
stylesheetManager.addStylesheet(n);
|
|
185
|
+
}
|
|
183
186
|
if (hasShadowRoot(n)) {
|
|
184
187
|
shadowDomManager.addShadowRoot(n.shadowRoot, document);
|
|
185
188
|
}
|
|
@@ -189,7 +192,7 @@ function record(options = {}) {
|
|
|
189
192
|
shadowDomManager.observeAttachShadow(iframe);
|
|
190
193
|
},
|
|
191
194
|
onStylesheetLoad: (linkEl, childSn) => {
|
|
192
|
-
|
|
195
|
+
stylesheetManager.attachStylesheet(linkEl, childSn, mirror);
|
|
193
196
|
},
|
|
194
197
|
keepIframeSrcFn,
|
|
195
198
|
});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { obfuscateText, isShadowRoot, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '
|
|
1
|
+
import { obfuscateText, isShadowRoot, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '@highlight-run/rrweb-snapshot';
|
|
2
2
|
import { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';
|
|
3
3
|
|
|
4
4
|
function isNodeInLinkedList(n) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { maskInputValue } from '
|
|
1
|
+
import { maskInputValue } from '@highlight-run/rrweb-snapshot';
|
|
2
2
|
import { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent, isCanvasNode } from '../utils.js';
|
|
3
3
|
import { MouseInteractions, IncrementalSource } from '../types.js';
|
|
4
4
|
import MutationBuffer from './mutation.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __awaiter } from './../../../../ext/tslib/tslib.es6.js';
|
|
2
|
-
import { createCache, createMirror, rebuild, buildNodeWithSN, NodeType } from '
|
|
2
|
+
import { createCache, createMirror, rebuild, buildNodeWithSN, NodeType } from '@highlight-run/rrweb-snapshot';
|
|
3
3
|
import { RRDocument, diff, createOrGetNode, getDefaultSN, StyleRuleType, buildFromDom, buildFromNode } from '../../../rrdom/es/virtual-dom.js';
|
|
4
4
|
import * as mitt_es from './../../../../ext/mitt/dist/mitt.es.js';
|
|
5
5
|
import mitt$1 from './../../../../ext/mitt/dist/mitt.es.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '
|
|
1
|
+
import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '@highlight-run/rrweb-snapshot';
|
|
2
2
|
|
|
3
3
|
function on(type, fn, target = document) {
|
|
4
4
|
const options = { capture: true, passive: true };
|
|
@@ -2,15 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
(function (NodeType) {
|
|
7
|
-
NodeType[NodeType["Document"] = 0] = "Document";
|
|
8
|
-
NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
|
|
9
|
-
NodeType[NodeType["Element"] = 2] = "Element";
|
|
10
|
-
NodeType[NodeType["Text"] = 3] = "Text";
|
|
11
|
-
NodeType[NodeType["CDATA"] = 4] = "CDATA";
|
|
12
|
-
NodeType[NodeType["Comment"] = 5] = "Comment";
|
|
13
|
-
})(NodeType || (NodeType = {}));
|
|
5
|
+
require('@highlight-run/rrweb-snapshot');
|
|
14
6
|
|
|
15
7
|
const DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +
|
|
16
8
|
'\r\n' +
|
|
@@ -2,15 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
(function (NodeType) {
|
|
7
|
-
NodeType[NodeType["Document"] = 0] = "Document";
|
|
8
|
-
NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
|
|
9
|
-
NodeType[NodeType["Element"] = 2] = "Element";
|
|
10
|
-
NodeType[NodeType["Text"] = 3] = "Text";
|
|
11
|
-
NodeType[NodeType["CDATA"] = 4] = "CDATA";
|
|
12
|
-
NodeType[NodeType["Comment"] = 5] = "Comment";
|
|
13
|
-
})(NodeType || (NodeType = {}));
|
|
5
|
+
require('@highlight-run/rrweb-snapshot');
|
|
14
6
|
|
|
15
7
|
const DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +
|
|
16
8
|
'\r\n' +
|
|
@@ -2,15 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
6
|
-
(function (NodeType) {
|
|
7
|
-
NodeType[NodeType["Document"] = 0] = "Document";
|
|
8
|
-
NodeType[NodeType["DocumentType"] = 1] = "DocumentType";
|
|
9
|
-
NodeType[NodeType["Element"] = 2] = "Element";
|
|
10
|
-
NodeType[NodeType["Text"] = 3] = "Text";
|
|
11
|
-
NodeType[NodeType["CDATA"] = 4] = "CDATA";
|
|
12
|
-
NodeType[NodeType["Comment"] = 5] = "Comment";
|
|
13
|
-
})(NodeType || (NodeType = {}));
|
|
5
|
+
var rrwebSnapshot = require('@highlight-run/rrweb-snapshot');
|
|
14
6
|
|
|
15
7
|
const DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +
|
|
16
8
|
'\r\n' +
|
|
@@ -206,6 +198,8 @@ function createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {
|
|
|
206
198
|
createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0KSB7DQogICAgICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7DQogICAgICAgICAgICBjb25zdCBpZCA9IGAke3dpZHRofS0ke2hlaWdodH1gOw0KICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgIHJldHVybiB0cmFuc3BhcmVudEJsb2JNYXAuZ2V0KGlkKTsNCiAgICAgICAgICAgIGNvbnN0IG9mZnNjcmVlbiA9IG5ldyBPZmZzY3JlZW5DYW52YXMod2lkdGgsIGhlaWdodCk7DQogICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgIGNvbnN0IGJsb2IgPSB5aWVsZCBvZmZzY3JlZW4uY29udmVydFRvQmxvYigpOw0KICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICBjb25zdCBiYXNlNjQgPSBlbmNvZGUoYXJyYXlCdWZmZXIpOw0KICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgIHJldHVybiBiYXNlNjQ7DQogICAgICAgIH0pOw0KICAgIH0NCiAgICBjb25zdCB3b3JrZXIgPSBzZWxmOw0KICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlvbiAoZSkgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgaWYgKCEoJ09mZnNjcmVlbkNhbnZhcycgaW4gZ2xvYmFsVGhpcykpDQogICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkOiBlLmRhdGEuaWQgfSk7DQogICAgICAgICAgICBjb25zdCB7IGlkLCBiaXRtYXAsIHdpZHRoLCBoZWlnaHQgfSA9IGUuZGF0YTsNCiAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgY3R4LmRyYXdJbWFnZShiaXRtYXAsIDAsIDApOw0KICAgICAgICAgICAgYml0bWFwLmNsb3NlKCk7DQogICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoKTsNCiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICBjb25zdCBhcnJheUJ1ZmZlciA9IHlpZWxkIGJsb2IuYXJyYXlCdWZmZXIoKTsNCiAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgbGFzdEJsb2JNYXAuc2V0KGlkLCBiYXNlNjQpOw0KICAgICAgICAgICAgICAgIHJldHVybiB3b3JrZXIucG9zdE1lc3NhZ2UoeyBpZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmIChsYXN0QmxvYk1hcC5nZXQoaWQpID09PSBiYXNlNjQpDQogICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICBpZCwNCiAgICAgICAgICAgICAgICB0eXBlLA0KICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICB3aWR0aCwNCiAgICAgICAgICAgICAgICBoZWlnaHQsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);
|
|
207
199
|
/* eslint-enable */
|
|
208
200
|
|
|
201
|
+
rrwebSnapshot.createMirror();
|
|
202
|
+
|
|
209
203
|
// DEFLATE is a complex format; to read this code, you should probably check the RFC first:
|
|
210
204
|
|
|
211
205
|
// aliases for shorter compressed code (most minifers don't do this)
|