@highlight-run/rrweb 2.1.3 → 2.1.6

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 (64) hide show
  1. package/dist/plugins/console-record.js +3 -3
  2. package/dist/plugins/console-record.min.js +3 -3
  3. package/dist/plugins/console-record.min.js.map +1 -1
  4. package/dist/plugins/console-replay.min.js.map +1 -1
  5. package/dist/record/rrweb-record-pack.min.js.map +1 -1
  6. package/dist/record/rrweb-record.js +3 -3
  7. package/dist/record/rrweb-record.min.js +3 -3
  8. package/dist/record/rrweb-record.min.js.map +1 -1
  9. package/dist/replay/rrweb-replay-unpack.js +3 -3
  10. package/dist/replay/rrweb-replay-unpack.min.js +3 -3
  11. package/dist/replay/rrweb-replay-unpack.min.js.map +1 -1
  12. package/dist/replay/rrweb-replay.js +4 -4
  13. package/dist/replay/rrweb-replay.min.js +4 -4
  14. package/dist/replay/rrweb-replay.min.js.map +1 -1
  15. package/dist/rrweb-all.js +10 -10
  16. package/dist/rrweb-all.min.js +10 -10
  17. package/dist/rrweb-all.min.js.map +1 -1
  18. package/dist/rrweb.js +5 -5
  19. package/dist/rrweb.min.js +5 -5
  20. package/dist/rrweb.min.js.map +1 -1
  21. package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +16 -7
  22. package/lib/record/rrweb-record.js +16 -7
  23. package/lib/rrweb-all.js +16 -7
  24. package/lib/rrweb.js +16 -7
  25. package/package.json +3 -3
  26. package/typings/entries/all.d.ts +0 -0
  27. package/typings/entries/record-pack.d.ts +0 -0
  28. package/typings/entries/replay-unpack.d.ts +0 -0
  29. package/typings/index.d.ts +0 -0
  30. package/typings/packer/base.d.ts +0 -0
  31. package/typings/packer/index.d.ts +0 -0
  32. package/typings/packer/pack.d.ts +0 -0
  33. package/typings/packer/unpack.d.ts +0 -0
  34. package/typings/plugins/console/record/error-stack-parser.d.ts +0 -0
  35. package/typings/plugins/console/record/index.d.ts +0 -0
  36. package/typings/plugins/console/record/stringify.d.ts +0 -0
  37. package/typings/plugins/console/replay/index.d.ts +0 -0
  38. package/typings/plugins/sequential-id/record/index.d.ts +0 -0
  39. package/typings/plugins/sequential-id/replay/index.d.ts +0 -0
  40. package/typings/record/iframe-manager.d.ts +0 -0
  41. package/typings/record/index.d.ts +0 -0
  42. package/typings/record/mutation.d.ts +0 -0
  43. package/typings/record/observer.d.ts +0 -0
  44. package/typings/record/observers/canvas/2d.d.ts +0 -0
  45. package/typings/record/observers/canvas/canvas-manager.d.ts +0 -0
  46. package/typings/record/observers/canvas/canvas.d.ts +0 -0
  47. package/typings/record/observers/canvas/serialize-args.d.ts +0 -0
  48. package/typings/record/observers/canvas/webgl.d.ts +0 -0
  49. package/typings/record/shadow-dom-manager.d.ts +0 -0
  50. package/typings/record/stylesheet-manager.d.ts +0 -0
  51. package/typings/record/workers/image-bitmap-data-url-worker.d.ts +0 -0
  52. package/typings/replay/canvas/2d.d.ts +0 -0
  53. package/typings/replay/canvas/deserialize-args.d.ts +0 -0
  54. package/typings/replay/canvas/index.d.ts +0 -0
  55. package/typings/replay/canvas/webgl.d.ts +0 -0
  56. package/typings/replay/index.d.ts +0 -0
  57. package/typings/replay/machine.d.ts +0 -0
  58. package/typings/replay/smoothscroll.d.ts +0 -0
  59. package/typings/replay/styles/inject-style.d.ts +0 -0
  60. package/typings/replay/timer.d.ts +0 -0
  61. package/typings/rrdom/index.d.ts +0 -0
  62. package/typings/rrdom/tree-node.d.ts +0 -0
  63. package/typings/types.d.ts +0 -0
  64. package/typings/utils.d.ts +0 -0
@@ -571,8 +571,8 @@ function serializeTextNode(n, options) {
571
571
  }
572
572
  function serializeElementNode(n, options) {
573
573
  var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, maskTextClass = options.maskTextClass, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, enableStrictPrivacy = options.enableStrictPrivacy, rootId = options.rootId;
574
- var needBlock = _isBlockedElement(n, blockClass, blockSelector) ||
575
- _isBlockedElement(n, maskTextClass, blockSelector);
574
+ var needBlock = _isBlockedElement(n, blockClass, blockSelector);
575
+ var needMask = _isBlockedElement(n, maskTextClass, null);
576
576
  var tagName = getValidTagName(n);
577
577
  var attributes = {};
578
578
  var len = n.attributes.length;
@@ -646,7 +646,7 @@ function serializeElementNode(n, options) {
646
646
  }
647
647
  }
648
648
  }
649
- if (tagName === 'img' && inlineImages) {
649
+ if (tagName === 'img' && inlineImages && !needBlock && !needMask) {
650
650
  if (!canvasService) {
651
651
  canvasService = doc.createElement('canvas');
652
652
  canvasCtx = canvasService.getContext('2d');
@@ -687,14 +687,16 @@ function serializeElementNode(n, options) {
687
687
  attributes.rr_scrollTop = n.scrollTop;
688
688
  }
689
689
  }
690
- if (needBlock || (tagName === 'img' && enableStrictPrivacy)) {
690
+ if (needBlock || needMask || (tagName === 'img' && enableStrictPrivacy)) {
691
691
  var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;
692
692
  attributes = {
693
693
  "class": attributes["class"],
694
694
  rr_width: "".concat(width, "px"),
695
695
  rr_height: "".concat(height, "px")
696
696
  };
697
- needBlock = true;
697
+ if (enableStrictPrivacy) {
698
+ needBlock = true;
699
+ }
698
700
  }
699
701
  if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {
700
702
  if (!n.contentDocument) {
@@ -709,6 +711,7 @@ function serializeElementNode(n, options) {
709
711
  childNodes: [],
710
712
  isSVG: isSVGElement(n) || undefined,
711
713
  needBlock: needBlock,
714
+ needMask: needMask,
712
715
  rootId: rootId
713
716
  };
714
717
  }
@@ -839,14 +842,20 @@ function serializeNodeWithId(n, options) {
839
842
  onSerialize(n);
840
843
  }
841
844
  var recordChild = !skipChild;
845
+ var strictPrivacy = enableStrictPrivacy;
842
846
  if (serializedNode.type === NodeType.Element) {
843
847
  recordChild = recordChild && !serializedNode.needBlock;
844
- if (serializedNode.needBlock && serializedNode.tagName === 'img') {
848
+ strictPrivacy =
849
+ enableStrictPrivacy ||
850
+ !!serializedNode.needBlock ||
851
+ !!serializedNode.needMask;
852
+ if (strictPrivacy && serializedNode.tagName === 'img') {
845
853
  var clone = n.cloneNode();
846
854
  clone.src = '';
847
855
  mirror.add(clone, serializedNode);
848
856
  }
849
857
  delete serializedNode.needBlock;
858
+ delete serializedNode.needMask;
850
859
  var shadowRoot = n.shadowRoot;
851
860
  if (shadowRoot && isNativeShadowDom(shadowRoot))
852
861
  serializedNode.isShadowHost = true;
@@ -882,7 +891,7 @@ function serializeNodeWithId(n, options) {
882
891
  onStylesheetLoad: onStylesheetLoad,
883
892
  stylesheetLoadTimeout: stylesheetLoadTimeout,
884
893
  keepIframeSrcFn: keepIframeSrcFn,
885
- enableStrictPrivacy: enableStrictPrivacy
894
+ enableStrictPrivacy: strictPrivacy
886
895
  };
887
896
  for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {
888
897
  var childN = _m[_i];
@@ -573,8 +573,8 @@ function serializeTextNode(n, options) {
573
573
  }
574
574
  function serializeElementNode(n, options) {
575
575
  var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, maskTextClass = options.maskTextClass, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, enableStrictPrivacy = options.enableStrictPrivacy, rootId = options.rootId;
576
- var needBlock = _isBlockedElement(n, blockClass, blockSelector) ||
577
- _isBlockedElement(n, maskTextClass, blockSelector);
576
+ var needBlock = _isBlockedElement(n, blockClass, blockSelector);
577
+ var needMask = _isBlockedElement(n, maskTextClass, null);
578
578
  var tagName = getValidTagName(n);
579
579
  var attributes = {};
580
580
  var len = n.attributes.length;
@@ -648,7 +648,7 @@ function serializeElementNode(n, options) {
648
648
  }
649
649
  }
650
650
  }
651
- if (tagName === 'img' && inlineImages) {
651
+ if (tagName === 'img' && inlineImages && !needBlock && !needMask) {
652
652
  if (!canvasService) {
653
653
  canvasService = doc.createElement('canvas');
654
654
  canvasCtx = canvasService.getContext('2d');
@@ -689,14 +689,16 @@ function serializeElementNode(n, options) {
689
689
  attributes.rr_scrollTop = n.scrollTop;
690
690
  }
691
691
  }
692
- if (needBlock || (tagName === 'img' && enableStrictPrivacy)) {
692
+ if (needBlock || needMask || (tagName === 'img' && enableStrictPrivacy)) {
693
693
  var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;
694
694
  attributes = {
695
695
  "class": attributes["class"],
696
696
  rr_width: "".concat(width, "px"),
697
697
  rr_height: "".concat(height, "px")
698
698
  };
699
- needBlock = true;
699
+ if (enableStrictPrivacy) {
700
+ needBlock = true;
701
+ }
700
702
  }
701
703
  if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {
702
704
  if (!n.contentDocument) {
@@ -711,6 +713,7 @@ function serializeElementNode(n, options) {
711
713
  childNodes: [],
712
714
  isSVG: isSVGElement(n) || undefined,
713
715
  needBlock: needBlock,
716
+ needMask: needMask,
714
717
  rootId: rootId
715
718
  };
716
719
  }
@@ -841,14 +844,20 @@ function serializeNodeWithId(n, options) {
841
844
  onSerialize(n);
842
845
  }
843
846
  var recordChild = !skipChild;
847
+ var strictPrivacy = enableStrictPrivacy;
844
848
  if (serializedNode.type === NodeType.Element) {
845
849
  recordChild = recordChild && !serializedNode.needBlock;
846
- if (serializedNode.needBlock && serializedNode.tagName === 'img') {
850
+ strictPrivacy =
851
+ enableStrictPrivacy ||
852
+ !!serializedNode.needBlock ||
853
+ !!serializedNode.needMask;
854
+ if (strictPrivacy && serializedNode.tagName === 'img') {
847
855
  var clone = n.cloneNode();
848
856
  clone.src = '';
849
857
  mirror.add(clone, serializedNode);
850
858
  }
851
859
  delete serializedNode.needBlock;
860
+ delete serializedNode.needMask;
852
861
  var shadowRoot = n.shadowRoot;
853
862
  if (shadowRoot && isNativeShadowDom(shadowRoot))
854
863
  serializedNode.isShadowHost = true;
@@ -884,7 +893,7 @@ function serializeNodeWithId(n, options) {
884
893
  onStylesheetLoad: onStylesheetLoad,
885
894
  stylesheetLoadTimeout: stylesheetLoadTimeout,
886
895
  keepIframeSrcFn: keepIframeSrcFn,
887
- enableStrictPrivacy: enableStrictPrivacy
896
+ enableStrictPrivacy: strictPrivacy
888
897
  };
889
898
  for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {
890
899
  var childN = _m[_i];
package/lib/rrweb-all.js CHANGED
@@ -575,8 +575,8 @@ function serializeTextNode(n, options) {
575
575
  }
576
576
  function serializeElementNode(n, options) {
577
577
  var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, maskTextClass = options.maskTextClass, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, enableStrictPrivacy = options.enableStrictPrivacy, rootId = options.rootId;
578
- var needBlock = _isBlockedElement(n, blockClass, blockSelector) ||
579
- _isBlockedElement(n, maskTextClass, blockSelector);
578
+ var needBlock = _isBlockedElement(n, blockClass, blockSelector);
579
+ var needMask = _isBlockedElement(n, maskTextClass, null);
580
580
  var tagName = getValidTagName$1(n);
581
581
  var attributes = {};
582
582
  var len = n.attributes.length;
@@ -650,7 +650,7 @@ function serializeElementNode(n, options) {
650
650
  }
651
651
  }
652
652
  }
653
- if (tagName === 'img' && inlineImages) {
653
+ if (tagName === 'img' && inlineImages && !needBlock && !needMask) {
654
654
  if (!canvasService) {
655
655
  canvasService = doc.createElement('canvas');
656
656
  canvasCtx = canvasService.getContext('2d');
@@ -691,14 +691,16 @@ function serializeElementNode(n, options) {
691
691
  attributes.rr_scrollTop = n.scrollTop;
692
692
  }
693
693
  }
694
- if (needBlock || (tagName === 'img' && enableStrictPrivacy)) {
694
+ if (needBlock || needMask || (tagName === 'img' && enableStrictPrivacy)) {
695
695
  var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;
696
696
  attributes = {
697
697
  "class": attributes["class"],
698
698
  rr_width: "".concat(width, "px"),
699
699
  rr_height: "".concat(height, "px")
700
700
  };
701
- needBlock = true;
701
+ if (enableStrictPrivacy) {
702
+ needBlock = true;
703
+ }
702
704
  }
703
705
  if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {
704
706
  if (!n.contentDocument) {
@@ -713,6 +715,7 @@ function serializeElementNode(n, options) {
713
715
  childNodes: [],
714
716
  isSVG: isSVGElement(n) || undefined,
715
717
  needBlock: needBlock,
718
+ needMask: needMask,
716
719
  rootId: rootId
717
720
  };
718
721
  }
@@ -843,14 +846,20 @@ function serializeNodeWithId(n, options) {
843
846
  onSerialize(n);
844
847
  }
845
848
  var recordChild = !skipChild;
849
+ var strictPrivacy = enableStrictPrivacy;
846
850
  if (serializedNode.type === NodeType$2.Element) {
847
851
  recordChild = recordChild && !serializedNode.needBlock;
848
- if (serializedNode.needBlock && serializedNode.tagName === 'img') {
852
+ strictPrivacy =
853
+ enableStrictPrivacy ||
854
+ !!serializedNode.needBlock ||
855
+ !!serializedNode.needMask;
856
+ if (strictPrivacy && serializedNode.tagName === 'img') {
849
857
  var clone = n.cloneNode();
850
858
  clone.src = '';
851
859
  mirror.add(clone, serializedNode);
852
860
  }
853
861
  delete serializedNode.needBlock;
862
+ delete serializedNode.needMask;
854
863
  var shadowRoot = n.shadowRoot;
855
864
  if (shadowRoot && isNativeShadowDom(shadowRoot))
856
865
  serializedNode.isShadowHost = true;
@@ -886,7 +895,7 @@ function serializeNodeWithId(n, options) {
886
895
  onStylesheetLoad: onStylesheetLoad,
887
896
  stylesheetLoadTimeout: stylesheetLoadTimeout,
888
897
  keepIframeSrcFn: keepIframeSrcFn,
889
- enableStrictPrivacy: enableStrictPrivacy
898
+ enableStrictPrivacy: strictPrivacy
890
899
  };
891
900
  for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {
892
901
  var childN = _m[_i];
package/lib/rrweb.js CHANGED
@@ -575,8 +575,8 @@ function serializeTextNode(n, options) {
575
575
  }
576
576
  function serializeElementNode(n, options) {
577
577
  var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, maskTextClass = options.maskTextClass, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, enableStrictPrivacy = options.enableStrictPrivacy, rootId = options.rootId;
578
- var needBlock = _isBlockedElement(n, blockClass, blockSelector) ||
579
- _isBlockedElement(n, maskTextClass, blockSelector);
578
+ var needBlock = _isBlockedElement(n, blockClass, blockSelector);
579
+ var needMask = _isBlockedElement(n, maskTextClass, null);
580
580
  var tagName = getValidTagName$1(n);
581
581
  var attributes = {};
582
582
  var len = n.attributes.length;
@@ -650,7 +650,7 @@ function serializeElementNode(n, options) {
650
650
  }
651
651
  }
652
652
  }
653
- if (tagName === 'img' && inlineImages) {
653
+ if (tagName === 'img' && inlineImages && !needBlock && !needMask) {
654
654
  if (!canvasService) {
655
655
  canvasService = doc.createElement('canvas');
656
656
  canvasCtx = canvasService.getContext('2d');
@@ -691,14 +691,16 @@ function serializeElementNode(n, options) {
691
691
  attributes.rr_scrollTop = n.scrollTop;
692
692
  }
693
693
  }
694
- if (needBlock || (tagName === 'img' && enableStrictPrivacy)) {
694
+ if (needBlock || needMask || (tagName === 'img' && enableStrictPrivacy)) {
695
695
  var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;
696
696
  attributes = {
697
697
  "class": attributes["class"],
698
698
  rr_width: "".concat(width, "px"),
699
699
  rr_height: "".concat(height, "px")
700
700
  };
701
- needBlock = true;
701
+ if (enableStrictPrivacy) {
702
+ needBlock = true;
703
+ }
702
704
  }
703
705
  if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {
704
706
  if (!n.contentDocument) {
@@ -713,6 +715,7 @@ function serializeElementNode(n, options) {
713
715
  childNodes: [],
714
716
  isSVG: isSVGElement(n) || undefined,
715
717
  needBlock: needBlock,
718
+ needMask: needMask,
716
719
  rootId: rootId
717
720
  };
718
721
  }
@@ -843,14 +846,20 @@ function serializeNodeWithId(n, options) {
843
846
  onSerialize(n);
844
847
  }
845
848
  var recordChild = !skipChild;
849
+ var strictPrivacy = enableStrictPrivacy;
846
850
  if (serializedNode.type === NodeType$2.Element) {
847
851
  recordChild = recordChild && !serializedNode.needBlock;
848
- if (serializedNode.needBlock && serializedNode.tagName === 'img') {
852
+ strictPrivacy =
853
+ enableStrictPrivacy ||
854
+ !!serializedNode.needBlock ||
855
+ !!serializedNode.needMask;
856
+ if (strictPrivacy && serializedNode.tagName === 'img') {
849
857
  var clone = n.cloneNode();
850
858
  clone.src = '';
851
859
  mirror.add(clone, serializedNode);
852
860
  }
853
861
  delete serializedNode.needBlock;
862
+ delete serializedNode.needMask;
854
863
  var shadowRoot = n.shadowRoot;
855
864
  if (shadowRoot && isNativeShadowDom(shadowRoot))
856
865
  serializedNode.isShadowHost = true;
@@ -886,7 +895,7 @@ function serializeNodeWithId(n, options) {
886
895
  onStylesheetLoad: onStylesheetLoad,
887
896
  stylesheetLoadTimeout: stylesheetLoadTimeout,
888
897
  keepIframeSrcFn: keepIframeSrcFn,
889
- enableStrictPrivacy: enableStrictPrivacy
898
+ enableStrictPrivacy: strictPrivacy
890
899
  };
891
900
  for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {
892
901
  var childN = _m[_i];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@highlight-run/rrweb",
3
- "version": "2.1.3",
3
+ "version": "2.1.6",
4
4
  "description": "record and replay the web",
5
5
  "scripts": {
6
6
  "prepare": "npm run prepack",
@@ -76,12 +76,12 @@
76
76
  },
77
77
  "dependencies": {
78
78
  "@highlight-run/rrdom": "0.1.17",
79
- "@highlight-run/rrweb-snapshot": "1.1.26",
79
+ "@highlight-run/rrweb-snapshot": "1.1.29",
80
80
  "@types/css-font-loading-module": "0.0.7",
81
81
  "@xstate/fsm": "^1.4.0",
82
82
  "base64-arraybuffer": "^1.0.1",
83
83
  "fflate": "^0.4.4",
84
84
  "mitt": "^3.0.0"
85
85
  },
86
- "gitHead": "98757c19f85bda25f5c29047f67d32ab7fd851f3"
86
+ "gitHead": "decc1b7fa6e0f0f50d3777c5abae92df455bd3e7"
87
87
  }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes