Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
improve error handling in rrdom
During live mode, we encounter rrdom errors related to
the replay of iframes. Ensure we handle these errors correctly rather
than crashing.
  • Loading branch information
Vadman97 committed Jun 17, 2022
commit 205480f9dcf1cf211bd6e45e71d0b514880be24a
2 changes: 1 addition & 1 deletion packages/rrdom/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@highlight-run/rrdom",
"version": "0.1.8",
"version": "0.1.9",
"scripts": {
"dev": "rollup -c -w",
"bundle": "rollup --config",
Expand Down
16 changes: 8 additions & 8 deletions packages/rrdom/src/diff.ts
Original file line number Diff line number Diff line change
Expand Up @@ -283,22 +283,22 @@ function diffChildren(
) {
try {
parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);
} catch (e) {
console.error(e, parentNode, oldStartNode, oldEndNode);
diff(oldStartNode, newEndNode, replayer, rrnodeMirror);
oldStartNode = oldChildren[++oldStartIndex];
newEndNode = newChildren[--newEndIndex];
} catch (e) {
console.error(e, parentNode, oldStartNode, oldEndNode);
}
} else if (
replayer.mirror.getId(oldEndNode) === rrnodeMirror.getId(newStartNode)
) {
try {
parentNode.insertBefore(oldEndNode, oldStartNode);
} catch (e) {
console.error(e, parentNode, oldEndNode, oldStartNode);
diff(oldEndNode, newStartNode, replayer, rrnodeMirror);
oldEndNode = oldChildren[--oldEndIndex];
newStartNode = newChildren[++newStartIndex];
} catch (e) {
console.error(e, parentNode, oldEndNode, oldStartNode);
}
} else {
if (!oldIdToIndex) {
Expand All @@ -314,10 +314,10 @@ function diffChildren(
const nodeToMove = oldChildren[indexInOld]!;
try {
parentNode.insertBefore(nodeToMove, oldStartNode);
diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
oldChildren[indexInOld] = undefined;
} catch (e) {
console.error(e, parentNode, nodeToMove, oldStartNode);
diff(nodeToMove, newStartNode, replayer, rrnodeMirror);
oldChildren[indexInOld] = undefined;
}
} else {
const newNode = createOrGetNode(
Expand All @@ -341,9 +341,9 @@ function diffChildren(
}
try {
parentNode.insertBefore(newNode, oldStartNode || null);
diff(newNode, newStartNode, replayer, rrnodeMirror);
} catch (e) {
console.error(e, parentNode, newNode, oldStartNode || null);
diff(newNode, newStartNode, replayer, rrnodeMirror);
}
}
newStartNode = newChildren[++newStartIndex];
Expand All @@ -367,9 +367,9 @@ function diffChildren(
);
try {
parentNode.insertBefore(newNode, referenceNode);
diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
} catch (e) {
console.error(e, parentNode, newNode, referenceNode);
diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);
}
}
} else if (newStartIndex > newEndIndex) {
Expand Down
2 changes: 1 addition & 1 deletion packages/rrweb/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@highlight-run/rrweb",
"version": "2.0.9",
"version": "2.0.10",
"description": "record and replay the web",
"scripts": {
"prepare": "npm run prepack",
Expand Down