add strict null check and fix codes

This commit is contained in:
Yanzhen Yu
2026-04-01 12:00:00 +08:00
parent c496e3edea
commit ac5293f162
5 changed files with 14 additions and 4 deletions

1
index.d.ts vendored
View File

@@ -1,4 +1,5 @@
import { serializedNodeWithId } from './src/types';
export * from './src/types';
export function snapshot(n: Document): serializedNodeWithId | null;
export function rebuild(n: serializedNodeWithId): Node | null;

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;

View File

@@ -2,6 +2,7 @@
"compilerOptions": {
"module": "commonjs",
"noImplicitAny": true,
"strictNullChecks": true,
"removeComments": true,
"preserveConstEnums": true,
"sourceMap": true,