@highlight-run/rrweb 2.0.12 → 2.0.14
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.min.js.map +1 -1
- package/dist/plugins/console-replay.min.js.map +1 -1
- 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 +4 -4
- package/dist/replay/rrweb-replay-unpack.min.js +4 -4
- package/dist/replay/rrweb-replay-unpack.min.js.map +1 -1
- package/dist/replay/rrweb-replay.js +4 -4
- package/dist/replay/rrweb-replay.min.js +4 -4
- package/dist/replay/rrweb-replay.min.js.map +1 -1
- package/dist/rrweb-all.js +8 -8
- package/dist/rrweb-all.min.js +8 -8
- package/dist/rrweb-all.min.js.map +1 -1
- package/dist/rrweb.js +5 -5
- package/dist/rrweb.min.js +5 -5
- package/dist/rrweb.min.js.map +1 -1
- package/es/rrweb/packages/rrdom/es/{virtual-dom.js → rrdom.js} +84 -109
- package/es/rrweb/packages/rrweb/src/index.js +1 -1
- package/es/rrweb/packages/rrweb/src/record/index.js +2 -0
- package/es/rrweb/packages/rrweb/src/record/mutation.js +12 -1
- package/es/rrweb/packages/rrweb/src/replay/index.js +3 -3
- package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +1860 -1861
- package/lib/plugins/console-record.js +8 -8
- package/lib/plugins/console-replay.js +8 -8
- package/lib/record/rrweb-record-pack.js +8 -8
- package/lib/record/rrweb-record.js +1055 -1043
- package/lib/replay/rrweb-replay-unpack.js +968 -993
- package/lib/replay/rrweb-replay.js +968 -993
- package/lib/rrweb-all.js +1960 -1973
- package/lib/rrweb.js +1960 -1973
- package/package.json +4 -4
- package/typings/record/mutation.d.ts +1 -0
- package/typings/replay/index.d.ts +1 -1
- package/typings/types.d.ts +3 -2
- package/typings/utils.d.ts +1 -1
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
var NodeType$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";
|
|
1
|
+
var NodeType$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
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();
|
|
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
63
|
}
|
|
64
64
|
|
|
65
65
|
function parseCSSText(cssText) {
|
|
@@ -646,26 +646,16 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
646
646
|
newEndNode = newChildren[--newEndIndex];
|
|
647
647
|
}
|
|
648
648
|
else if (replayer.mirror.getId(oldStartNode) === rrnodeMirror.getId(newEndNode)) {
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
newEndNode = newChildren[--newEndIndex];
|
|
654
|
-
}
|
|
655
|
-
catch (e) {
|
|
656
|
-
console.error(e, parentNode, oldStartNode, oldEndNode);
|
|
657
|
-
}
|
|
649
|
+
parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);
|
|
650
|
+
diff(oldStartNode, newEndNode, replayer, rrnodeMirror);
|
|
651
|
+
oldStartNode = oldChildren[++oldStartIndex];
|
|
652
|
+
newEndNode = newChildren[--newEndIndex];
|
|
658
653
|
}
|
|
659
654
|
else if (replayer.mirror.getId(oldEndNode) === rrnodeMirror.getId(newStartNode)) {
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
newStartNode = newChildren[++newStartIndex];
|
|
665
|
-
}
|
|
666
|
-
catch (e) {
|
|
667
|
-
console.error(e, parentNode, oldEndNode, oldStartNode);
|
|
668
|
-
}
|
|
655
|
+
parentNode.insertBefore(oldEndNode, oldStartNode);
|
|
656
|
+
diff(oldEndNode, newStartNode, replayer, rrnodeMirror);
|
|
657
|
+
oldEndNode = oldChildren[--oldEndIndex];
|
|
658
|
+
newStartNode = newChildren[++newStartIndex];
|
|
669
659
|
}
|
|
670
660
|
else {
|
|
671
661
|
if (!oldIdToIndex) {
|
|
@@ -679,14 +669,9 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
679
669
|
indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];
|
|
680
670
|
if (indexInOld) {
|
|
681
671
|
const nodeToMove = oldChildren[indexInOld];
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
oldChildren[indexInOld] = undefined;
|
|
686
|
-
}
|
|
687
|
-
catch (e) {
|
|
688
|
-
console.error(e, parentNode, nodeToMove, oldStartNode);
|
|
689
|
-
}
|
|
672
|
+
parentNode.insertBefore(nodeToMove, oldStartNode);
|
|
673
|
+
diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
|
|
674
|
+
oldChildren[indexInOld] = undefined;
|
|
690
675
|
}
|
|
691
676
|
else {
|
|
692
677
|
const newNode = createOrGetNode(newStartNode, replayer.mirror, rrnodeMirror);
|
|
@@ -697,13 +682,8 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
697
682
|
oldChildren[oldStartIndex] = undefined;
|
|
698
683
|
oldStartNode = undefined;
|
|
699
684
|
}
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
diff(newNode, newStartNode, replayer, rrnodeMirror);
|
|
703
|
-
}
|
|
704
|
-
catch (e) {
|
|
705
|
-
console.error(e, parentNode, newNode, oldStartNode || null);
|
|
706
|
-
}
|
|
685
|
+
parentNode.insertBefore(newNode, oldStartNode || null);
|
|
686
|
+
diff(newNode, newStartNode, replayer, rrnodeMirror);
|
|
707
687
|
}
|
|
708
688
|
newStartNode = newChildren[++newStartIndex];
|
|
709
689
|
}
|
|
@@ -718,13 +698,8 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
718
698
|
});
|
|
719
699
|
for (; newStartIndex <= newEndIndex; ++newStartIndex) {
|
|
720
700
|
const newNode = createOrGetNode(newChildren[newStartIndex], replayer.mirror, rrnodeMirror);
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
|
|
724
|
-
}
|
|
725
|
-
catch (e) {
|
|
726
|
-
console.error(e, parentNode, newNode, referenceNode);
|
|
727
|
-
}
|
|
701
|
+
parentNode.insertBefore(newNode, referenceNode);
|
|
702
|
+
diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
|
|
728
703
|
}
|
|
729
704
|
}
|
|
730
705
|
else if (newStartIndex > newEndIndex) {
|
|
@@ -958,11 +933,11 @@ function buildFromNode(node, rrdom, domMirror, parentRRNode) {
|
|
|
958
933
|
}
|
|
959
934
|
break;
|
|
960
935
|
case NodeType.DOCUMENT_TYPE_NODE:
|
|
961
|
-
const documentType =
|
|
936
|
+
const documentType = node;
|
|
962
937
|
rrNode = rrdom.createDocumentType(documentType.name, documentType.publicId, documentType.systemId);
|
|
963
938
|
break;
|
|
964
939
|
case NodeType.ELEMENT_NODE:
|
|
965
|
-
const elementNode =
|
|
940
|
+
const elementNode = node;
|
|
966
941
|
const tagName = getValidTagName(elementNode);
|
|
967
942
|
rrNode = rrdom.createElement(tagName);
|
|
968
943
|
const rrElement = rrNode;
|
|
@@ -973,13 +948,13 @@ function buildFromNode(node, rrdom, domMirror, parentRRNode) {
|
|
|
973
948
|
elementNode.scrollTop && (rrElement.scrollTop = elementNode.scrollTop);
|
|
974
949
|
break;
|
|
975
950
|
case NodeType.TEXT_NODE:
|
|
976
|
-
rrNode = rrdom.createTextNode(
|
|
951
|
+
rrNode = rrdom.createTextNode(node.textContent || '');
|
|
977
952
|
break;
|
|
978
953
|
case NodeType.CDATA_SECTION_NODE:
|
|
979
|
-
rrNode = rrdom.createCDATASection(
|
|
954
|
+
rrNode = rrdom.createCDATASection(node.data);
|
|
980
955
|
break;
|
|
981
956
|
case NodeType.COMMENT_NODE:
|
|
982
|
-
rrNode = rrdom.createComment(
|
|
957
|
+
rrNode = rrdom.createComment(node.textContent || '');
|
|
983
958
|
break;
|
|
984
959
|
case NodeType.DOCUMENT_FRAGMENT_NODE:
|
|
985
960
|
rrNode = parentRRNode.attachShadow({ mode: 'open' });
|
|
@@ -1015,8 +990,8 @@ function buildFromDom(dom, domMirror = createMirror$1(), rrdom = new RRDocument(
|
|
|
1015
990
|
node.nodeType === NodeType.ELEMENT_NODE ||
|
|
1016
991
|
node.nodeType === NodeType.DOCUMENT_FRAGMENT_NODE) {
|
|
1017
992
|
if (node.nodeType === NodeType.ELEMENT_NODE &&
|
|
1018
|
-
|
|
1019
|
-
walk(
|
|
993
|
+
node.shadowRoot)
|
|
994
|
+
walk(node.shadowRoot, rrNode);
|
|
1020
995
|
node.childNodes.forEach((childNode) => walk(childNode, rrNode));
|
|
1021
996
|
}
|
|
1022
997
|
}
|
|
@@ -1119,4 +1094,4 @@ function getDefaultSN(node, id) {
|
|
|
1119
1094
|
}
|
|
1120
1095
|
}
|
|
1121
1096
|
|
|
1122
|
-
export { Mirror, RRCDATASection, RRCanvasElement, RRComment, RRDocument, RRDocumentType, RRElement, RRIFrameElement, RRMediaElement, BaseRRNode as RRNode, RRStyleElement, RRText, StyleRuleType, buildFromDom, buildFromNode, createMirror, createOrGetNode, diff, getDefaultSN };
|
|
1097
|
+
export { BaseRRCDATASectionImpl, BaseRRCommentImpl, BaseRRDocumentImpl, BaseRRDocumentTypeImpl, BaseRRElementImpl, BaseRRMediaElementImpl, BaseRRNode, BaseRRTextImpl, ClassList, Mirror, NodeType, RRCDATASection, RRCanvasElement, RRComment, RRDocument, RRDocumentType, RRElement, RRIFrameElement, RRMediaElement, BaseRRNode as RRNode, RRStyleElement, RRText, StyleRuleType, buildFromDom, buildFromNode, createMirror, createOrGetNode, diff, getDefaultSN };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import record from './record/index.js';
|
|
2
2
|
export { default as record } from './record/index.js';
|
|
3
3
|
import '../../rrweb-snapshot/es/rrweb-snapshot.js';
|
|
4
|
-
import '../../rrdom/es/
|
|
4
|
+
import '../../rrdom/es/rrdom.js';
|
|
5
5
|
export { EventType, IncrementalSource, MouseInteractions, ReplayerEvents } from './types.js';
|
|
6
6
|
import * as utils from './utils.js';
|
|
7
7
|
export { utils };
|
|
@@ -148,6 +148,7 @@ function record(options = {}) {
|
|
|
148
148
|
iframeManager,
|
|
149
149
|
stylesheetManager,
|
|
150
150
|
canvasManager,
|
|
151
|
+
keepIframeSrcFn,
|
|
151
152
|
enableStrictPrivacy
|
|
152
153
|
},
|
|
153
154
|
mirror,
|
|
@@ -284,6 +285,7 @@ function record(options = {}) {
|
|
|
284
285
|
doc,
|
|
285
286
|
maskInputFn,
|
|
286
287
|
maskTextFn,
|
|
288
|
+
keepIframeSrcFn,
|
|
287
289
|
blockSelector,
|
|
288
290
|
slimDOMOptions,
|
|
289
291
|
mirror,
|
|
@@ -305,6 +305,16 @@ class MutationBuffer {
|
|
|
305
305
|
return;
|
|
306
306
|
}
|
|
307
307
|
let item = this.attributes.find((a) => a.node === m.target);
|
|
308
|
+
if (target.tagName === 'IFRAME' &&
|
|
309
|
+
m.attributeName === 'src' &&
|
|
310
|
+
!this.keepIframeSrcFn(value)) {
|
|
311
|
+
if (!target.contentDocument) {
|
|
312
|
+
m.attributeName = 'rr_src';
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
return;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
308
318
|
if (!item) {
|
|
309
319
|
item = {
|
|
310
320
|
node: m.target,
|
|
@@ -350,7 +360,7 @@ class MutationBuffer {
|
|
|
350
360
|
break;
|
|
351
361
|
}
|
|
352
362
|
}
|
|
353
|
-
item.attributes[m.attributeName] = transformAttribute(this.doc,
|
|
363
|
+
item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);
|
|
354
364
|
}
|
|
355
365
|
break;
|
|
356
366
|
}
|
|
@@ -424,6 +434,7 @@ class MutationBuffer {
|
|
|
424
434
|
'maskInputOptions',
|
|
425
435
|
'maskTextFn',
|
|
426
436
|
'maskInputFn',
|
|
437
|
+
'keepIframeSrcFn',
|
|
427
438
|
'recordCanvas',
|
|
428
439
|
'inlineImages',
|
|
429
440
|
'slimDOMOptions',
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __awaiter } from './../../../../ext/tslib/tslib.es6.js';
|
|
2
2
|
import { createCache, createMirror, rebuild, buildNodeWithSN, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';
|
|
3
|
-
import { RRDocument, diff, createOrGetNode, getDefaultSN, StyleRuleType, buildFromDom, buildFromNode } from '../../../rrdom/es/
|
|
3
|
+
import { RRDocument, diff, createOrGetNode, getDefaultSN, StyleRuleType, buildFromDom, buildFromNode } from '../../../rrdom/es/rrdom.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';
|
|
6
6
|
import { polyfill } from './smoothscroll.js';
|
|
@@ -634,7 +634,7 @@ class Replayer {
|
|
|
634
634
|
const styleEl = document.createElement('style');
|
|
635
635
|
documentElement.insertBefore(styleEl, head);
|
|
636
636
|
for (let idx = 0; idx < injectStylesRules.length; idx++) {
|
|
637
|
-
|
|
637
|
+
styleEl.sheet.insertRule(injectStylesRules[idx], idx);
|
|
638
638
|
}
|
|
639
639
|
}
|
|
640
640
|
}
|
|
@@ -1019,7 +1019,7 @@ class Replayer {
|
|
|
1019
1019
|
if (!target) {
|
|
1020
1020
|
return this.debugNodeNotFound(d, d.id);
|
|
1021
1021
|
}
|
|
1022
|
-
const styleSheet =
|
|
1022
|
+
const styleSheet = target.sheet;
|
|
1023
1023
|
(_d = d.adds) === null || _d === void 0 ? void 0 : _d.forEach(({ rule, index: nestedIndex }) => {
|
|
1024
1024
|
try {
|
|
1025
1025
|
if (Array.isArray(nestedIndex)) {
|