@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.
Files changed (37) hide show
  1. package/dist/plugins/console-record.min.js.map +1 -1
  2. package/dist/plugins/console-replay.min.js.map +1 -1
  3. package/dist/record/rrweb-record-pack.min.js.map +1 -1
  4. package/dist/record/rrweb-record.js +3 -3
  5. package/dist/record/rrweb-record.min.js +3 -3
  6. package/dist/record/rrweb-record.min.js.map +1 -1
  7. package/dist/replay/rrweb-replay-unpack.js +4 -4
  8. package/dist/replay/rrweb-replay-unpack.min.js +4 -4
  9. package/dist/replay/rrweb-replay-unpack.min.js.map +1 -1
  10. package/dist/replay/rrweb-replay.js +4 -4
  11. package/dist/replay/rrweb-replay.min.js +4 -4
  12. package/dist/replay/rrweb-replay.min.js.map +1 -1
  13. package/dist/rrweb-all.js +8 -8
  14. package/dist/rrweb-all.min.js +8 -8
  15. package/dist/rrweb-all.min.js.map +1 -1
  16. package/dist/rrweb.js +5 -5
  17. package/dist/rrweb.min.js +5 -5
  18. package/dist/rrweb.min.js.map +1 -1
  19. package/es/rrweb/packages/rrdom/es/{virtual-dom.js → rrdom.js} +84 -109
  20. package/es/rrweb/packages/rrweb/src/index.js +1 -1
  21. package/es/rrweb/packages/rrweb/src/record/index.js +2 -0
  22. package/es/rrweb/packages/rrweb/src/record/mutation.js +12 -1
  23. package/es/rrweb/packages/rrweb/src/replay/index.js +3 -3
  24. package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +1860 -1861
  25. package/lib/plugins/console-record.js +8 -8
  26. package/lib/plugins/console-replay.js +8 -8
  27. package/lib/record/rrweb-record-pack.js +8 -8
  28. package/lib/record/rrweb-record.js +1055 -1043
  29. package/lib/replay/rrweb-replay-unpack.js +968 -993
  30. package/lib/replay/rrweb-replay.js +968 -993
  31. package/lib/rrweb-all.js +1960 -1973
  32. package/lib/rrweb.js +1960 -1973
  33. package/package.json +4 -4
  34. package/typings/record/mutation.d.ts +1 -0
  35. package/typings/replay/index.d.ts +1 -1
  36. package/typings/types.d.ts +3 -2
  37. 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
- try {
650
- parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);
651
- diff(oldStartNode, newEndNode, replayer, rrnodeMirror);
652
- oldStartNode = oldChildren[++oldStartIndex];
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
- try {
661
- parentNode.insertBefore(oldEndNode, oldStartNode);
662
- diff(oldEndNode, newStartNode, replayer, rrnodeMirror);
663
- oldEndNode = oldChildren[--oldEndIndex];
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
- try {
683
- parentNode.insertBefore(nodeToMove, oldStartNode);
684
- diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
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
- try {
701
- parentNode.insertBefore(newNode, oldStartNode || null);
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
- try {
722
- parentNode.insertBefore(newNode, referenceNode);
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 = (node);
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 = (node);
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((node).textContent || '');
951
+ rrNode = rrdom.createTextNode(node.textContent || '');
977
952
  break;
978
953
  case NodeType.CDATA_SECTION_NODE:
979
- rrNode = rrdom.createCDATASection((node).data);
954
+ rrNode = rrdom.createCDATASection(node.data);
980
955
  break;
981
956
  case NodeType.COMMENT_NODE:
982
- rrNode = rrdom.createComment((node).textContent || '');
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
- (node).shadowRoot)
1019
- walk((node).shadowRoot, rrNode);
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/virtual-dom.js';
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, m.target.tagName, m.attributeName, value);
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/virtual-dom.js';
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
- (styleEl.sheet).insertRule(injectStylesRules[idx], idx);
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 = (target).sheet;
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)) {