add strict null check and fix codes

This commit is contained in:
Yanzhen Yu
2018-10-08 11:20:48 +08:00
parent 4a1137748c
commit 978e12b089
5 changed files with 14 additions and 4 deletions

View File

@@ -1,4 +1,5 @@
import snapshot from './snapshot';
import rebuild from './rebuild';
export * from './types';
export { snapshot, rebuild };

View File

@@ -62,7 +62,11 @@ function rebuild(n: serializedNodeWithId): Node | null {
if (n.type === NodeType.Document || n.type === NodeType.Element) {
for (const childN of n.childNodes) {
const childNode = rebuild(childN);
root.appendChild(childNode);
if (!childNode) {
console.warn('Failed to rebuild', childN);
} else {
root.appendChild(childNode);
}
}
}
return root;

View File

@@ -98,7 +98,7 @@ function serializeNode(n: Node, doc: Document): serializedNode | false {
}
return {
type: NodeType.Text,
textContent,
textContent: textContent || '',
};
case n.CDATA_SECTION_NODE:
return {
@@ -108,7 +108,7 @@ function serializeNode(n: Node, doc: Document): serializedNode | false {
case n.COMMENT_NODE:
return {
type: NodeType.Comment,
textContent: (n as Comment).textContent,
textContent: (n as Comment).textContent || '',
};
default:
return false;
@@ -130,7 +130,10 @@ function _snapshot(n: Node, doc: Document): serializedNodeWithId | null {
serializedNode.type === NodeType.Element
) {
for (const childN of Array.from(n.childNodes)) {
serializedNode.childNodes.push(_snapshot(childN, doc));
const serializedChildNode = _snapshot(childN, doc);
if (serializedChildNode) {
serializedNode.childNodes.push(serializedChildNode);
}
}
}
return serializedNode;