@highlight-run/rrweb 2.0.7 → 2.0.10
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 +1 -1
- package/dist/plugins/console-record.min.js +1 -1
- 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 +7 -7
- package/dist/rrweb-all.min.js +7 -7
- 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 +47 -24
- package/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js +10 -0
- package/lib/replay/rrweb-replay-unpack.js +57 -24
- package/lib/replay/rrweb-replay.js +57 -24
- package/lib/rrweb-all.js +57 -24
- package/lib/rrweb.js +57 -24
- package/package.json +4 -4
package/lib/rrweb.js
CHANGED
|
@@ -1706,6 +1706,7 @@ function buildNode(n, options) {
|
|
|
1706
1706
|
if (!image.currentSrc.startsWith('data:')) {
|
|
1707
1707
|
image.setAttribute('rrweb-original-src', n.attributes.src);
|
|
1708
1708
|
image.src = value;
|
|
1709
|
+
image.setAttribute('rrweb-inline-src', value);
|
|
1709
1710
|
}
|
|
1710
1711
|
}
|
|
1711
1712
|
if (name_1 === 'rr_width') {
|
|
@@ -1734,6 +1735,15 @@ function buildNode(n, options) {
|
|
|
1734
1735
|
for (var name_1 in n.attributes) {
|
|
1735
1736
|
_loop_1(name_1);
|
|
1736
1737
|
}
|
|
1738
|
+
if (tagName === 'img') {
|
|
1739
|
+
var image = node_1;
|
|
1740
|
+
if (!image.currentSrc.startsWith('data:')) {
|
|
1741
|
+
var inlineSrc = image.getAttribute('rrweb-inline-src');
|
|
1742
|
+
if (inlineSrc === null || inlineSrc === void 0 ? void 0 : inlineSrc.startsWith('data:')) {
|
|
1743
|
+
image.src = inlineSrc;
|
|
1744
|
+
}
|
|
1745
|
+
}
|
|
1746
|
+
}
|
|
1737
1747
|
if (n.isShadowHost) {
|
|
1738
1748
|
if (!node_1.shadowRoot) {
|
|
1739
1749
|
node_1.attachShadow({ mode: 'open' });
|
|
@@ -4895,7 +4905,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
4895
4905
|
break;
|
|
4896
4906
|
}
|
|
4897
4907
|
case NodeType$1.Element: {
|
|
4898
|
-
const oldElement =
|
|
4908
|
+
const oldElement = oldTree;
|
|
4899
4909
|
const newRRElement = newTree;
|
|
4900
4910
|
diffProps(oldElement, newRRElement, rrnodeMirror);
|
|
4901
4911
|
scrollDataToApply = newRRElement.scrollData;
|
|
@@ -4903,7 +4913,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
4903
4913
|
switch (newRRElement.tagName) {
|
|
4904
4914
|
case 'AUDIO':
|
|
4905
4915
|
case 'VIDEO': {
|
|
4906
|
-
const oldMediaElement =
|
|
4916
|
+
const oldMediaElement = oldTree;
|
|
4907
4917
|
const newMediaRRElement = newRRElement;
|
|
4908
4918
|
if (newMediaRRElement.paused !== undefined)
|
|
4909
4919
|
newMediaRRElement.paused
|
|
@@ -4918,7 +4928,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
4918
4928
|
break;
|
|
4919
4929
|
}
|
|
4920
4930
|
case 'CANVAS':
|
|
4921
|
-
newTree.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation,
|
|
4931
|
+
newTree.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation, oldTree));
|
|
4922
4932
|
break;
|
|
4923
4933
|
case 'STYLE':
|
|
4924
4934
|
applyVirtualStyleRulesToNode(oldElement, newTree.rules);
|
|
@@ -4945,8 +4955,7 @@ function diff(oldTree, newTree, replayer, rrnodeMirror) {
|
|
|
4945
4955
|
scrollDataToApply && replayer.applyScroll(scrollDataToApply, true);
|
|
4946
4956
|
inputDataToApply && replayer.applyInput(inputDataToApply);
|
|
4947
4957
|
if (newTree.nodeName === 'IFRAME') {
|
|
4948
|
-
const oldContentDocument =
|
|
4949
|
-
.contentDocument;
|
|
4958
|
+
const oldContentDocument = oldTree.contentDocument;
|
|
4950
4959
|
const newIFrameElement = newTree;
|
|
4951
4960
|
if (oldContentDocument) {
|
|
4952
4961
|
const sn = rrnodeMirror.getMeta(newIFrameElement.contentDocument);
|
|
@@ -5007,16 +5016,26 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
5007
5016
|
newEndNode = newChildren[--newEndIndex];
|
|
5008
5017
|
}
|
|
5009
5018
|
else if (replayer.mirror.getId(oldStartNode) === rrnodeMirror.getId(newEndNode)) {
|
|
5010
|
-
|
|
5011
|
-
|
|
5012
|
-
|
|
5013
|
-
|
|
5019
|
+
try {
|
|
5020
|
+
parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);
|
|
5021
|
+
}
|
|
5022
|
+
catch (e) {
|
|
5023
|
+
console.error(e, parentNode, oldStartNode, oldEndNode);
|
|
5024
|
+
diff(oldStartNode, newEndNode, replayer, rrnodeMirror);
|
|
5025
|
+
oldStartNode = oldChildren[++oldStartIndex];
|
|
5026
|
+
newEndNode = newChildren[--newEndIndex];
|
|
5027
|
+
}
|
|
5014
5028
|
}
|
|
5015
5029
|
else if (replayer.mirror.getId(oldEndNode) === rrnodeMirror.getId(newStartNode)) {
|
|
5016
|
-
|
|
5017
|
-
|
|
5018
|
-
|
|
5019
|
-
|
|
5030
|
+
try {
|
|
5031
|
+
parentNode.insertBefore(oldEndNode, oldStartNode);
|
|
5032
|
+
}
|
|
5033
|
+
catch (e) {
|
|
5034
|
+
console.error(e, parentNode, oldEndNode, oldStartNode);
|
|
5035
|
+
diff(oldEndNode, newStartNode, replayer, rrnodeMirror);
|
|
5036
|
+
oldEndNode = oldChildren[--oldEndIndex];
|
|
5037
|
+
newStartNode = newChildren[++newStartIndex];
|
|
5038
|
+
}
|
|
5020
5039
|
}
|
|
5021
5040
|
else {
|
|
5022
5041
|
if (!oldIdToIndex) {
|
|
@@ -5030,21 +5049,31 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
5030
5049
|
indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];
|
|
5031
5050
|
if (indexInOld) {
|
|
5032
5051
|
const nodeToMove = oldChildren[indexInOld];
|
|
5033
|
-
|
|
5034
|
-
|
|
5035
|
-
|
|
5052
|
+
try {
|
|
5053
|
+
parentNode.insertBefore(nodeToMove, oldStartNode);
|
|
5054
|
+
}
|
|
5055
|
+
catch (e) {
|
|
5056
|
+
console.error(e, parentNode, nodeToMove, oldStartNode);
|
|
5057
|
+
diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
|
|
5058
|
+
oldChildren[indexInOld] = undefined;
|
|
5059
|
+
}
|
|
5036
5060
|
}
|
|
5037
5061
|
else {
|
|
5038
5062
|
const newNode = createOrGetNode(newStartNode, replayer.mirror, rrnodeMirror);
|
|
5039
5063
|
if (((_a = replayer.mirror.getMeta(parentNode)) === null || _a === void 0 ? void 0 : _a.type) === NodeType$1.Document &&
|
|
5040
5064
|
((_b = replayer.mirror.getMeta(newNode)) === null || _b === void 0 ? void 0 : _b.type) === NodeType$1.Element &&
|
|
5041
|
-
|
|
5042
|
-
parentNode.removeChild(
|
|
5065
|
+
parentNode.documentElement) {
|
|
5066
|
+
parentNode.removeChild(parentNode.documentElement);
|
|
5043
5067
|
oldChildren[oldStartIndex] = undefined;
|
|
5044
5068
|
oldStartNode = undefined;
|
|
5045
5069
|
}
|
|
5046
|
-
|
|
5047
|
-
|
|
5070
|
+
try {
|
|
5071
|
+
parentNode.insertBefore(newNode, oldStartNode || null);
|
|
5072
|
+
}
|
|
5073
|
+
catch (e) {
|
|
5074
|
+
console.error(e, parentNode, newNode, oldStartNode || null);
|
|
5075
|
+
diff(newNode, newStartNode, replayer, rrnodeMirror);
|
|
5076
|
+
}
|
|
5048
5077
|
}
|
|
5049
5078
|
newStartNode = newChildren[++newStartIndex];
|
|
5050
5079
|
}
|
|
@@ -5059,8 +5088,13 @@ function diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirr
|
|
|
5059
5088
|
});
|
|
5060
5089
|
for (; newStartIndex <= newEndIndex; ++newStartIndex) {
|
|
5061
5090
|
const newNode = createOrGetNode(newChildren[newStartIndex], replayer.mirror, rrnodeMirror);
|
|
5062
|
-
|
|
5063
|
-
|
|
5091
|
+
try {
|
|
5092
|
+
parentNode.insertBefore(newNode, referenceNode);
|
|
5093
|
+
}
|
|
5094
|
+
catch (e) {
|
|
5095
|
+
console.error(e, parentNode, newNode, referenceNode);
|
|
5096
|
+
diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
|
|
5097
|
+
}
|
|
5064
5098
|
}
|
|
5065
5099
|
}
|
|
5066
5100
|
else if (newStartIndex > newEndIndex) {
|
|
@@ -5114,8 +5148,7 @@ function getNestedRule(rules, position) {
|
|
|
5114
5148
|
return rule;
|
|
5115
5149
|
}
|
|
5116
5150
|
else {
|
|
5117
|
-
return getNestedRule(
|
|
5118
|
-
.cssRules, position.slice(2));
|
|
5151
|
+
return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));
|
|
5119
5152
|
}
|
|
5120
5153
|
}
|
|
5121
5154
|
var StyleRuleType;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@highlight-run/rrweb",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.10",
|
|
4
4
|
"description": "record and replay the web",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"prepare": "npm run prepack",
|
|
@@ -74,13 +74,13 @@
|
|
|
74
74
|
"typescript": "^4.6.2"
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@highlight-run/rrdom": "
|
|
78
|
-
"@highlight-run/rrweb-snapshot": "
|
|
77
|
+
"@highlight-run/rrdom": ">0.1.2",
|
|
78
|
+
"@highlight-run/rrweb-snapshot": ">1.1.15",
|
|
79
79
|
"@types/css-font-loading-module": "0.0.7",
|
|
80
80
|
"@xstate/fsm": "^1.4.0",
|
|
81
81
|
"base64-arraybuffer": "^1.0.1",
|
|
82
82
|
"fflate": "^0.4.4",
|
|
83
83
|
"mitt": "^1.1.3"
|
|
84
84
|
},
|
|
85
|
-
"gitHead": "
|
|
85
|
+
"gitHead": "c728b71c3929ea9e81c7ade31cb31b465b54e883"
|
|
86
86
|
}
|