Add name field to BaseInputSpec (#226)

This commit is contained in:
Chenlei Hu
2024-07-25 21:07:16 -04:00
committed by GitHub
parent 0ec15ba101
commit c97ff6fd85
2 changed files with 14 additions and 7 deletions

View File

@@ -4,6 +4,7 @@ import { defineStore } from 'pinia'
import { Type, Transform, plainToClass } from 'class-transformer'
export class BaseInputSpec<T = any> {
name: string
type: string
default?: T
@@ -89,12 +90,15 @@ export class ComfyInputsSpec {
if (!record) return record
const result: Record<string, BaseInputSpec> = {}
for (const [key, value] of Object.entries(record)) {
result[key] = ComfyInputsSpec.transformSingleInputSpec(value)
result[key] = ComfyInputsSpec.transformSingleInputSpec(key, value)
}
return result
}
private static transformSingleInputSpec(value: any): BaseInputSpec {
private static transformSingleInputSpec(
name: string,
value: any
): BaseInputSpec {
if (!BaseInputSpec.isInputSpec(value)) return value
const [typeRaw, spec] = value
@@ -102,21 +106,22 @@ export class ComfyInputsSpec {
switch (type) {
case 'INT':
return plainToClass(IntInputSpec, { type, ...spec })
return plainToClass(IntInputSpec, { name, type, ...spec })
case 'FLOAT':
return plainToClass(FloatInputSpec, { type, ...spec })
return plainToClass(FloatInputSpec, { name, type, ...spec })
case 'BOOLEAN':
return plainToClass(BooleanInputSpec, { type, ...spec })
return plainToClass(BooleanInputSpec, { name, type, ...spec })
case 'STRING':
return plainToClass(StringInputSpec, { type, ...spec })
return plainToClass(StringInputSpec, { name, type, ...spec })
case 'COMBO':
return plainToClass(ComboInputSpec, {
name,
type,
...spec,
comboOptions: typeRaw
})
default:
return plainToClass(CustomInputSpec, { type, ...spec })
return plainToClass(CustomInputSpec, { name, type, ...spec })
}
}
}

View File

@@ -56,8 +56,10 @@ describe('ComfyInputsSpec', () => {
expect(intInput.min).toBe(0)
expect(intInput.max).toBe(100)
expect(intInput.default).toBe(50)
expect(intInput.name).toBe('intInput')
expect(stringInput.default).toBe('Hello')
expect(stringInput.multiline).toBe(true)
expect(stringInput.name).toBe('stringInput')
})
it('should correctly transform optional input specs', () => {