From e4cfab885aef87306da241143a3acb4973d93090 Mon Sep 17 00:00:00 2001 From: codetypes Date: Wed, 5 Nov 2025 13:54:48 +0800 Subject: [PATCH] fix check node of sub tree --- src/components/register-node.ts | 2 +- src/misc/b3util.ts | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/components/register-node.ts b/src/components/register-node.ts index fff80f8..f50d0c3 100644 --- a/src/components/register-node.ts +++ b/src/components/register-node.ts @@ -746,7 +746,7 @@ class TreeNode extends Rect { if ( !b3util.nodeDefs.has(data.name) || - (data.path && !node.children?.length) || + (data.path && !data.$mtime) || (nodeDef.group && !nodeDef.group.some((g) => b3util.usingGroups?.[g])) || !b3util.isValidNodeData(data) || foundUndefined(data.input) || diff --git a/src/misc/b3util.ts b/src/misc/b3util.ts index bd73059..b437897 100644 --- a/src/misc/b3util.ts +++ b/src/misc/b3util.ts @@ -702,6 +702,7 @@ export const refreshNodeData = (tree: TreeData, node: NodeData, id: number) => { alertError(`循环引用节点:${node.path}`, 4); return id; } + delete node.$mtime; parsingStack.push(node.path); try { const subtreePath = workdir + "/" + node.path; @@ -741,15 +742,23 @@ export const refreshNodeData = (tree: TreeData, node: NodeData, id: number) => { }; export const createBuildData = (path: string) => { + const clearUnnecessaryKey = (data: NodeData | TreeData) => { + for (const key in data) { + if (key.startsWith("$")) { + delete data[key as keyof (NodeData | TreeData)]; + } + } + }; + try { const treeModel: TreeData = readTree(path); refreshNodeData(treeModel, treeModel.root, 1); dfs(treeModel.root, (node) => (node.id = treeModel.prefix + node.id)); treeModel.name = Path.basenameWithoutExt(path); treeModel.root = createFileData(treeModel.root, true); - dfs(treeModel.root, (node) => delete (node as Partial).$id); - delete (treeModel as Partial).$override; - return treeModel as TreeData; + dfs(treeModel.root, (node) => clearUnnecessaryKey(node)); + clearUnnecessaryKey(treeModel); + return treeModel; } catch (e) { console.log("build error:", path, e); }