Skip to content

Commit

Permalink
improve error handling in rrdom (#76)
Browse files Browse the repository at this point in the history
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 authored Jun 17, 2022
1 parent 32a0a83 commit c728b71
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 10 deletions.
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

0 comments on commit c728b71

Please sign in to comment.