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' import { Type, Transform, plainToClass } from 'class-transformer'
export class BaseInputSpec<T = any> { export class BaseInputSpec<T = any> {
name: string
type: string type: string
default?: T default?: T
@@ -89,12 +90,15 @@ export class ComfyInputsSpec {
if (!record) return record if (!record) return record
const result: Record<string, BaseInputSpec> = {} const result: Record<string, BaseInputSpec> = {}
for (const [key, value] of Object.entries(record)) { for (const [key, value] of Object.entries(record)) {
result[key] = ComfyInputsSpec.transformSingleInputSpec(value) result[key] = ComfyInputsSpec.transformSingleInputSpec(key, value)
} }
return result return result
} }
private static transformSingleInputSpec(value: any): BaseInputSpec { private static transformSingleInputSpec(
name: string,
value: any
): BaseInputSpec {
if (!BaseInputSpec.isInputSpec(value)) return value if (!BaseInputSpec.isInputSpec(value)) return value
const [typeRaw, spec] = value const [typeRaw, spec] = value
@@ -102,21 +106,22 @@ export class ComfyInputsSpec {
switch (type) { switch (type) {
case 'INT': case 'INT':
return plainToClass(IntInputSpec, { type, ...spec }) return plainToClass(IntInputSpec, { name, type, ...spec })
case 'FLOAT': case 'FLOAT':
return plainToClass(FloatInputSpec, { type, ...spec }) return plainToClass(FloatInputSpec, { name, type, ...spec })
case 'BOOLEAN': case 'BOOLEAN':
return plainToClass(BooleanInputSpec, { type, ...spec }) return plainToClass(BooleanInputSpec, { name, type, ...spec })
case 'STRING': case 'STRING':
return plainToClass(StringInputSpec, { type, ...spec }) return plainToClass(StringInputSpec, { name, type, ...spec })
case 'COMBO': case 'COMBO':
return plainToClass(ComboInputSpec, { return plainToClass(ComboInputSpec, {
name,
type, type,
...spec, ...spec,
comboOptions: typeRaw comboOptions: typeRaw
}) })
default: 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.min).toBe(0)
expect(intInput.max).toBe(100) expect(intInput.max).toBe(100)
expect(intInput.default).toBe(50) expect(intInput.default).toBe(50)
expect(intInput.name).toBe('intInput')
expect(stringInput.default).toBe('Hello') expect(stringInput.default).toBe('Hello')
expect(stringInput.multiline).toBe(true) expect(stringInput.multiline).toBe(true)
expect(stringInput.name).toBe('stringInput')
}) })
it('should correctly transform optional input specs', () => { it('should correctly transform optional input specs', () => {