Files
ComfyUI_frontend/src/workbench/extensions/manager/utils/graphHasMissingNodes.ts
2025-11-26 17:50:32 -07:00

38 lines
1.0 KiB
TypeScript

import { unref } from 'vue'
import type { MaybeRef } from 'vue'
import type {
LGraph,
LGraphNode,
Subgraph
} from '@/lib/litegraph/src/litegraph'
import type { ComfyNodeDefImpl } from '@/stores/nodeDefStore'
import { collectAllNodes } from '@/utils/graphTraversalUtil'
export type NodeDefLookup = Record<string, ComfyNodeDefImpl | undefined>
const isNodeMissingDefinition = (
node: LGraphNode,
nodeDefsByName: NodeDefLookup
) => {
const nodeName = node?.type
if (!nodeName) return false
return !nodeDefsByName[nodeName]
}
export const collectMissingNodes = (
graph: LGraph | Subgraph | null | undefined,
nodeDefsByName: MaybeRef<NodeDefLookup>
): LGraphNode[] => {
if (!graph) return []
const lookup = unref(nodeDefsByName)
return collectAllNodes(graph, (node) => isNodeMissingDefinition(node, lookup))
}
export const graphHasMissingNodes = (
graph: LGraph | Subgraph | null | undefined,
nodeDefsByName: MaybeRef<NodeDefLookup>
) => {
return collectMissingNodes(graph, nodeDefsByName).length > 0
}