Disable node def validation by default (#1190)

* Add setting

* Make node def validation optional
This commit is contained in:
Chenlei Hu
2024-10-09 16:02:27 -04:00
committed by GitHub
parent f6466d7062
commit f94bdc358b
3 changed files with 22 additions and 3 deletions

View File

@@ -273,9 +273,15 @@ class ComfyApi extends EventTarget {
* Loads node object definitions for the graph * Loads node object definitions for the graph
* @returns The node definitions * @returns The node definitions
*/ */
async getNodeDefs(): Promise<Record<string, ComfyNodeDef>> { async getNodeDefs({ validate = false }: { validate?: boolean } = {}): Promise<
Record<string, ComfyNodeDef>
> {
const resp = await this.fetchApi('/object_info', { cache: 'no-store' }) const resp = await this.fetchApi('/object_info', { cache: 'no-store' })
const objectInfoUnsafe = await resp.json() const objectInfoUnsafe = await resp.json()
if (!validate) {
return objectInfoUnsafe
}
// Validate node definitions against zod schema. (slow)
const objectInfo: Record<string, ComfyNodeDef> = {} const objectInfo: Record<string, ComfyNodeDef> = {}
for (const key in objectInfoUnsafe) { for (const key in objectInfoUnsafe) {
const validatedDef = validateComfyNodeDef( const validatedDef = validateComfyNodeDef(

View File

@@ -1968,7 +1968,9 @@ export class ComfyApp {
*/ */
async registerNodes() { async registerNodes() {
// Load node definitions from the backend // Load node definitions from the backend
const defs = await api.getNodeDefs() const defs = await api.getNodeDefs({
validate: useSettingStore().get('Comfy.Validation.NodeDefs')
})
await this.registerNodesFromDefs(defs) await this.registerNodesFromDefs(defs)
await this.#invokeExtensionsAsync('registerCustomNodes') await this.#invokeExtensionsAsync('registerCustomNodes')
if (this.vueAppReady) { if (this.vueAppReady) {
@@ -2911,7 +2913,9 @@ export class ComfyApp {
useModelStore().clearCache() useModelStore().clearCache()
} }
const defs = await api.getNodeDefs() const defs = await api.getNodeDefs({
validate: useSettingStore().get('Comfy.Validation.NodeDefs')
})
for (const nodeId in defs) { for (const nodeId in defs) {
this.registerNodeDef(nodeId, defs[nodeId]) this.registerNodeDef(nodeId, defs[nodeId])

View File

@@ -435,5 +435,14 @@ export const CORE_SETTINGS: SettingParams[] = [
defaultValue: false, defaultValue: false,
experimental: true, experimental: true,
versionAdded: '1.3.11' versionAdded: '1.3.11'
},
{
id: 'Comfy.Validation.NodeDefs',
name: 'Validate node definitions (slow)',
type: 'boolean',
tooltip:
'Recommended for node developers. This will validate all node definitions on startup.',
defaultValue: false,
versionAdded: '1.3.14'
} }
] ]