diff --git a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx index f13c48c288..c844853fbe 100644 --- a/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx +++ b/invokeai/frontend/web/src/features/nodes/components/flow/nodes/Invocation/fields/InputFieldRenderer.tsx @@ -113,155 +113,248 @@ type InputFieldProps = { }; export const InputFieldRenderer = memo(({ nodeId, fieldName }: InputFieldProps) => { - const fieldInstance = useInputFieldInstance(nodeId, fieldName); - const fieldTemplate = useInputFieldTemplate(nodeId, fieldName); + const field = useInputFieldInstance(nodeId, fieldName); + const template = useInputFieldTemplate(nodeId, fieldName); - if (isStringFieldCollectionInputInstance(fieldInstance) && isStringFieldCollectionInputTemplate(fieldTemplate)) { - return ; + if (isStringFieldCollectionInputTemplate(template)) { + if (!isStringFieldCollectionInputInstance(field)) { + return null; + } + return ; } - if (isStringFieldInputInstance(fieldInstance) && isStringFieldInputTemplate(fieldTemplate)) { - if (fieldTemplate.ui_component === 'textarea') { - return ; + if (isStringFieldInputTemplate(template)) { + if (!isStringFieldInputInstance(field)) { + return null; + } + if (template.ui_component === 'textarea') { + return ; } else { - return ; + return ; } } - if (isBooleanFieldInputInstance(fieldInstance) && isBooleanFieldInputTemplate(fieldTemplate)) { - return ; + if (isBooleanFieldInputTemplate(template)) { + if (!isBooleanFieldInputInstance(field)) { + return null; + } + return ; } - if (isFloatFieldInputInstance(fieldInstance) && isFloatFieldInputTemplate(fieldTemplate)) { - return ; + if (isIntegerFieldInputTemplate(template)) { + if (!isIntegerFieldInputInstance(field)) { + return null; + } + return ; } - if (isFloatFieldCollectionInputInstance(fieldInstance) && isFloatFieldCollectionInputTemplate(fieldTemplate)) { - return ; + if (isFloatFieldInputTemplate(template)) { + if (!isFloatFieldInputInstance(field)) { + return null; + } + return ; } - if (isIntegerFieldInputInstance(fieldInstance) && isIntegerFieldInputTemplate(fieldTemplate)) { - return ; + if (isIntegerFieldCollectionInputTemplate(template)) { + if (!isIntegerFieldCollectionInputInstance(field)) { + return null; + } + return ; } - if (isIntegerFieldCollectionInputInstance(fieldInstance) && isIntegerFieldCollectionInputTemplate(fieldTemplate)) { - return ; + if (isFloatFieldCollectionInputTemplate(template)) { + if (!isFloatFieldCollectionInputInstance(field)) { + return null; + } + return ; } - if (isEnumFieldInputInstance(fieldInstance) && isEnumFieldInputTemplate(fieldTemplate)) { - return ; + if (isEnumFieldInputTemplate(template)) { + if (!isEnumFieldInputInstance(field)) { + return null; + } + return ; } - if (isImageFieldCollectionInputInstance(fieldInstance) && isImageFieldCollectionInputTemplate(fieldTemplate)) { - return ; + if (isImageFieldCollectionInputTemplate(template)) { + if (!isImageFieldCollectionInputInstance(field)) { + return null; + } + return ; } - if (isImageFieldInputInstance(fieldInstance) && isImageFieldInputTemplate(fieldTemplate)) { - return ; + if (isImageFieldInputTemplate(template)) { + if (!isImageFieldInputInstance(field)) { + return null; + } + return ; } - if (isBoardFieldInputInstance(fieldInstance) && isBoardFieldInputTemplate(fieldTemplate)) { - return ; + if (isBoardFieldInputTemplate(template)) { + if (!isBoardFieldInputInstance(field)) { + return null; + } + return ; } - if (isMainModelFieldInputInstance(fieldInstance) && isMainModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isMainModelFieldInputTemplate(template)) { + if (!isMainModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isModelIdentifierFieldInputInstance(fieldInstance) && isModelIdentifierFieldInputTemplate(fieldTemplate)) { - return ; + if (isModelIdentifierFieldInputTemplate(template)) { + if (!isModelIdentifierFieldInputInstance(field)) { + return null; + } + return ; } - if (isSDXLRefinerModelFieldInputInstance(fieldInstance) && isSDXLRefinerModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isSDXLRefinerModelFieldInputTemplate(template)) { + if (!isSDXLRefinerModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isVAEModelFieldInputInstance(fieldInstance) && isVAEModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isVAEModelFieldInputTemplate(template)) { + if (!isVAEModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isT5EncoderModelFieldInputInstance(fieldInstance) && isT5EncoderModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isT5EncoderModelFieldInputTemplate(template)) { + if (!isT5EncoderModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isCLIPEmbedModelFieldInputInstance(fieldInstance) && isCLIPEmbedModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isCLIPEmbedModelFieldInputTemplate(template)) { + if (!isCLIPEmbedModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isCLIPLEmbedModelFieldInputInstance(fieldInstance) && isCLIPLEmbedModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isCLIPLEmbedModelFieldInputTemplate(template)) { + if (!isCLIPLEmbedModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isCLIPGEmbedModelFieldInputInstance(fieldInstance) && isCLIPGEmbedModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isCLIPGEmbedModelFieldInputTemplate(template)) { + if (!isCLIPGEmbedModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isControlLoRAModelFieldInputInstance(fieldInstance) && isControlLoRAModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isControlLoRAModelFieldInputTemplate(template)) { + if (!isControlLoRAModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isFluxVAEModelFieldInputInstance(fieldInstance) && isFluxVAEModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isFluxVAEModelFieldInputTemplate(template)) { + if (!isFluxVAEModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isLoRAModelFieldInputInstance(fieldInstance) && isLoRAModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isLoRAModelFieldInputTemplate(template)) { + if (!isLoRAModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isControlNetModelFieldInputInstance(fieldInstance) && isControlNetModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isControlNetModelFieldInputTemplate(template)) { + if (!isControlNetModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isIPAdapterModelFieldInputInstance(fieldInstance) && isIPAdapterModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isIPAdapterModelFieldInputTemplate(template)) { + if (!isIPAdapterModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isT2IAdapterModelFieldInputInstance(fieldInstance) && isT2IAdapterModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isT2IAdapterModelFieldInputTemplate(template)) { + if (!isT2IAdapterModelFieldInputInstance(field)) { + return null; + } + return ; } - if ( - isSpandrelImageToImageModelFieldInputInstance(fieldInstance) && - isSpandrelImageToImageModelFieldInputTemplate(fieldTemplate) - ) { - return ( - - ); + if (isSpandrelImageToImageModelFieldInputTemplate(template)) { + if (!isSpandrelImageToImageModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isColorFieldInputInstance(fieldInstance) && isColorFieldInputTemplate(fieldTemplate)) { - return ; + if (isColorFieldInputTemplate(template)) { + if (!isColorFieldInputInstance(field)) { + return null; + } + return ; } - if (isFluxMainModelFieldInputInstance(fieldInstance) && isFluxMainModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isFluxMainModelFieldInputTemplate(template)) { + if (!isFluxMainModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isSD3MainModelFieldInputInstance(fieldInstance) && isSD3MainModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isSD3MainModelFieldInputTemplate(template)) { + if (!isSD3MainModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isSDXLMainModelFieldInputInstance(fieldInstance) && isSDXLMainModelFieldInputTemplate(fieldTemplate)) { - return ; + if (isSDXLMainModelFieldInputTemplate(template)) { + if (!isSDXLMainModelFieldInputInstance(field)) { + return null; + } + return ; } - if (isSchedulerFieldInputInstance(fieldInstance) && isSchedulerFieldInputTemplate(fieldTemplate)) { - return ; + if (isSchedulerFieldInputTemplate(template)) { + if (!isSchedulerFieldInputInstance(field)) { + return null; + } + return ; } - if (isFloatGeneratorFieldInputInstance(fieldInstance) && isFloatGeneratorFieldInputTemplate(fieldTemplate)) { - return ; + if (isFloatGeneratorFieldInputTemplate(template)) { + if (!isFloatGeneratorFieldInputInstance(field)) { + return null; + } + return ; } - if (isIntegerGeneratorFieldInputInstance(fieldInstance) && isIntegerGeneratorFieldInputTemplate(fieldTemplate)) { - return ; + if (isIntegerGeneratorFieldInputTemplate(template)) { + if (!isIntegerGeneratorFieldInputInstance(field)) { + return null; + } + return ; } - if (isStringGeneratorFieldInputInstance(fieldInstance) && isStringGeneratorFieldInputTemplate(fieldTemplate)) { - return ; + if (isStringGeneratorFieldInputTemplate(template)) { + if (!isStringGeneratorFieldInputInstance(field)) { + return null; + } + return ; } return null; diff --git a/invokeai/frontend/web/src/features/nodes/types/field.ts b/invokeai/frontend/web/src/features/nodes/types/field.ts index c5e1482cb2..ccfa41a5f7 100644 --- a/invokeai/frontend/web/src/features/nodes/types/field.ts +++ b/invokeai/frontend/web/src/features/nodes/types/field.ts @@ -1,4 +1,3 @@ -import { buildTypeGuard } from 'features/parameters/types/parameterSchemas'; import { isNil, trim } from 'lodash-es'; import MersenneTwister from 'mtwist'; import { assert } from 'tsafe'; @@ -89,7 +88,10 @@ const zIntegerCollectionFieldType = zFieldTypeBase.extend({ cardinality: z.literal(COLLECTION), originalType: zStatelessFieldType.optional(), }); -export const isIntegerCollectionFieldType = buildTypeGuard(zIntegerCollectionFieldType); +export const isIntegerCollectionFieldType = ( + fieldType: FieldType +): fieldType is z.infer => + fieldType.name === 'IntegerField' && fieldType.cardinality === COLLECTION; const zFloatFieldType = zFieldTypeBase.extend({ name: z.literal('FloatField'), @@ -100,7 +102,10 @@ const zFloatCollectionFieldType = zFieldTypeBase.extend({ cardinality: z.literal(COLLECTION), originalType: zStatelessFieldType.optional(), }); -export const isFloatCollectionFieldType = buildTypeGuard(zFloatCollectionFieldType); +export const isFloatCollectionFieldType = ( + fieldType: FieldType +): fieldType is z.infer => + fieldType.name === 'FloatField' && fieldType.cardinality === COLLECTION; const zStringFieldType = zFieldTypeBase.extend({ name: z.literal('StringField'), @@ -111,7 +116,10 @@ const zStringCollectionFieldType = zFieldTypeBase.extend({ cardinality: z.literal(COLLECTION), originalType: zStatelessFieldType.optional(), }); -export const isStringCollectionFieldType = buildTypeGuard(zStringCollectionFieldType); +export const isStringCollectionFieldType = ( + fieldType: FieldType +): fieldType is z.infer => + fieldType.name === 'StringField' && fieldType.cardinality === COLLECTION; const zBooleanFieldType = zFieldTypeBase.extend({ name: z.literal('BooleanField'), @@ -130,7 +138,11 @@ const zImageCollectionFieldType = zFieldTypeBase.extend({ cardinality: z.literal(COLLECTION), originalType: zStatelessFieldType.optional(), }); -export const isImageCollectionFieldType = buildTypeGuard(zImageCollectionFieldType); +export const isImageCollectionFieldType = ( + fieldType: FieldType +): fieldType is z.infer => + fieldType.name === 'ImageField' && fieldType.cardinality === COLLECTION; + const zBoardFieldType = zFieldTypeBase.extend({ name: z.literal('BoardField'), originalType: zStatelessFieldType.optional(), @@ -272,6 +284,22 @@ export const isSingleOrCollection = (fieldType: FieldType): boolean => fieldType.cardinality === zCardinality.enum.SINGLE_OR_COLLECTION; // #endregion +const buildInstanceTypeGuard = (schema: T) => { + return (val: unknown): val is z.infer => schema.safeParse(val).success; +}; + +const buildTemplateTypeGuard = + (name: string, cardinality?: 'SINGLE' | 'COLLECTION' | 'SINGLE_OR_COLLECTION') => + (template: FieldInputTemplate): template is T => { + if (template.type.name !== name) { + return false; + } + if (cardinality) { + return template.type.cardinality === cardinality; + } + return true; + }; + // #region IntegerField export const zIntegerFieldValue = z.number().int(); @@ -294,8 +322,8 @@ const zIntegerFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type IntegerFieldValue = z.infer; export type IntegerFieldInputInstance = z.infer; export type IntegerFieldInputTemplate = z.infer; -export const isIntegerFieldInputInstance = buildTypeGuard(zIntegerFieldInputInstance); -export const isIntegerFieldInputTemplate = buildTypeGuard(zIntegerFieldInputTemplate); +export const isIntegerFieldInputInstance = buildInstanceTypeGuard(zIntegerFieldInputInstance); +export const isIntegerFieldInputTemplate = buildTemplateTypeGuard('IntegerField', 'SINGLE'); // #endregion // #region IntegerField Collection @@ -332,12 +360,14 @@ const zIntegerFieldCollectionOutputTemplate = zFieldOutputTemplateBase.extend({ export type IntegerFieldCollectionValue = z.infer; export type IntegerFieldCollectionInputInstance = z.infer; export type IntegerFieldCollectionInputTemplate = z.infer; -export const isIntegerFieldCollectionInputInstance = buildTypeGuard(zIntegerFieldCollectionInputInstance); -export const isIntegerFieldCollectionInputTemplate = buildTypeGuard(zIntegerFieldCollectionInputTemplate); +export const isIntegerFieldCollectionInputInstance = buildInstanceTypeGuard(zIntegerFieldCollectionInputInstance); +export const isIntegerFieldCollectionInputTemplate = buildTemplateTypeGuard( + 'IntegerField', + 'COLLECTION' +); // #endregion // #region FloatField - export const zFloatFieldValue = z.number(); const zFloatFieldInputInstance = zFieldInputInstanceBase.extend({ value: zFloatFieldValue, @@ -358,8 +388,8 @@ const zFloatFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type FloatFieldValue = z.infer; export type FloatFieldInputInstance = z.infer; export type FloatFieldInputTemplate = z.infer; -export const isFloatFieldInputInstance = buildTypeGuard(zFloatFieldInputInstance); -export const isFloatFieldInputTemplate = buildTypeGuard(zFloatFieldInputTemplate); +export const isFloatFieldInputInstance = buildInstanceTypeGuard(zFloatFieldInputInstance); +export const isFloatFieldInputTemplate = buildTemplateTypeGuard('FloatField', 'SINGLE'); // #endregion // #region FloatField Collection @@ -389,19 +419,20 @@ const zFloatFieldCollectionInputTemplate = zFieldInputTemplateBase }, { message: 'maxItems must be greater than or equal to minItems' } ); - const zFloatFieldCollectionOutputTemplate = zFieldOutputTemplateBase.extend({ type: zFloatCollectionFieldType, }); export type FloatFieldCollectionValue = z.infer; export type FloatFieldCollectionInputInstance = z.infer; export type FloatFieldCollectionInputTemplate = z.infer; -export const isFloatFieldCollectionInputInstance = buildTypeGuard(zFloatFieldCollectionInputInstance); -export const isFloatFieldCollectionInputTemplate = buildTypeGuard(zFloatFieldCollectionInputTemplate); +export const isFloatFieldCollectionInputInstance = buildInstanceTypeGuard(zFloatFieldCollectionInputInstance); +export const isFloatFieldCollectionInputTemplate = buildTemplateTypeGuard( + 'FloatField', + 'COLLECTION' +); // #endregion // #region StringField - export const zStringFieldValue = z.string(); const zStringFieldInputInstance = zFieldInputInstanceBase.extend({ value: zStringFieldValue, @@ -426,6 +457,12 @@ const zStringFieldInputTemplate = zFieldInputTemplateBase const zStringFieldOutputTemplate = zFieldOutputTemplateBase.extend({ type: zStringFieldType, }); +export type StringFieldValue = z.infer; +export type StringFieldInputInstance = z.infer; +export type StringFieldInputTemplate = z.infer; +export const isStringFieldInputInstance = buildInstanceTypeGuard(zStringFieldInputInstance); +export const isStringFieldInputTemplate = buildTemplateTypeGuard('StringField', 'SINGLE'); +// #endregion // #region StringField Collection export const zStringFieldCollectionValue = z.array(zStringFieldValue).optional(); @@ -467,19 +504,14 @@ const zStringFieldCollectionOutputTemplate = zFieldOutputTemplateBase.extend({ export type StringFieldCollectionValue = z.infer; export type StringFieldCollectionInputInstance = z.infer; export type StringFieldCollectionInputTemplate = z.infer; -export const isStringFieldCollectionInputInstance = buildTypeGuard(zStringFieldCollectionInputInstance); -export const isStringFieldCollectionInputTemplate = buildTypeGuard(zStringFieldCollectionInputTemplate); -// #endregion - -export type StringFieldValue = z.infer; -export type StringFieldInputInstance = z.infer; -export type StringFieldInputTemplate = z.infer; -export const isStringFieldInputInstance = buildTypeGuard(zStringFieldInputInstance); -export const isStringFieldInputTemplate = buildTypeGuard(zStringFieldInputTemplate); +export const isStringFieldCollectionInputInstance = buildInstanceTypeGuard(zStringFieldCollectionInputInstance); +export const isStringFieldCollectionInputTemplate = buildTemplateTypeGuard( + 'StringField', + 'COLLECTION' +); // #endregion // #region BooleanField - export const zBooleanFieldValue = z.boolean(); const zBooleanFieldInputInstance = zFieldInputInstanceBase.extend({ value: zBooleanFieldValue, @@ -495,12 +527,11 @@ const zBooleanFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type BooleanFieldValue = z.infer; export type BooleanFieldInputInstance = z.infer; export type BooleanFieldInputTemplate = z.infer; -export const isBooleanFieldInputInstance = buildTypeGuard(zBooleanFieldInputInstance); -export const isBooleanFieldInputTemplate = buildTypeGuard(zBooleanFieldInputTemplate); +export const isBooleanFieldInputInstance = buildInstanceTypeGuard(zBooleanFieldInputInstance); +export const isBooleanFieldInputTemplate = buildTemplateTypeGuard('BooleanField'); // #endregion // #region EnumField - export const zEnumFieldValue = z.string(); const zEnumFieldInputInstance = zFieldInputInstanceBase.extend({ value: zEnumFieldValue, @@ -518,8 +549,8 @@ const zEnumFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type EnumFieldValue = z.infer; export type EnumFieldInputInstance = z.infer; export type EnumFieldInputTemplate = z.infer; -export const isEnumFieldInputInstance = buildTypeGuard(zEnumFieldInputInstance); -export const isEnumFieldInputTemplate = buildTypeGuard(zEnumFieldInputTemplate); +export const isEnumFieldInputInstance = buildInstanceTypeGuard(zEnumFieldInputInstance); +export const isEnumFieldInputTemplate = buildTemplateTypeGuard('EnumField'); // #endregion // #region ImageField @@ -538,8 +569,8 @@ const zImageFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type ImageFieldValue = z.infer; export type ImageFieldInputInstance = z.infer; export type ImageFieldInputTemplate = z.infer; -export const isImageFieldInputInstance = buildTypeGuard(zImageFieldInputInstance); -export const isImageFieldInputTemplate = buildTypeGuard(zImageFieldInputTemplate); +export const isImageFieldInputInstance = buildInstanceTypeGuard(zImageFieldInputInstance); +export const isImageFieldInputTemplate = buildTemplateTypeGuard('ImageField', 'SINGLE'); // #endregion // #region ImageField Collection @@ -571,12 +602,14 @@ const zImageFieldCollectionOutputTemplate = zFieldOutputTemplateBase.extend({ export type ImageFieldCollectionValue = z.infer; export type ImageFieldCollectionInputInstance = z.infer; export type ImageFieldCollectionInputTemplate = z.infer; -export const isImageFieldCollectionInputInstance = buildTypeGuard(zImageFieldCollectionInputInstance); -export const isImageFieldCollectionInputTemplate = buildTypeGuard(zImageFieldCollectionInputTemplate); +export const isImageFieldCollectionInputInstance = buildInstanceTypeGuard(zImageFieldCollectionInputInstance); +export const isImageFieldCollectionInputTemplate = buildTemplateTypeGuard( + 'ImageField', + 'COLLECTION' +); // #endregion // #region BoardField - export const zBoardFieldValue = zBoardField.optional(); const zBoardFieldInputInstance = zFieldInputInstanceBase.extend({ value: zBoardFieldValue, @@ -592,12 +625,11 @@ const zBoardFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type BoardFieldValue = z.infer; export type BoardFieldInputInstance = z.infer; export type BoardFieldInputTemplate = z.infer; -export const isBoardFieldInputInstance = buildTypeGuard(zBoardFieldInputInstance); -export const isBoardFieldInputTemplate = buildTypeGuard(zBoardFieldInputTemplate); +export const isBoardFieldInputInstance = buildInstanceTypeGuard(zBoardFieldInputInstance); +export const isBoardFieldInputTemplate = buildTemplateTypeGuard('BoardField'); // #endregion // #region ColorField - export const zColorFieldValue = zColorField.optional(); const zColorFieldInputInstance = zFieldInputInstanceBase.extend({ value: zColorFieldValue, @@ -613,12 +645,11 @@ const zColorFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type ColorFieldValue = z.infer; export type ColorFieldInputInstance = z.infer; export type ColorFieldInputTemplate = z.infer; -export const isColorFieldInputInstance = buildTypeGuard(zColorFieldInputInstance); -export const isColorFieldInputTemplate = buildTypeGuard(zColorFieldInputTemplate); +export const isColorFieldInputInstance = buildInstanceTypeGuard(zColorFieldInputInstance); +export const isColorFieldInputTemplate = buildTemplateTypeGuard('ColorField'); // #endregion // #region MainModelField - export const zMainModelFieldValue = zModelIdentifierField.optional(); const zMainModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zMainModelFieldValue, @@ -634,8 +665,8 @@ const zMainModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type MainModelFieldValue = z.infer; export type MainModelFieldInputInstance = z.infer; export type MainModelFieldInputTemplate = z.infer; -export const isMainModelFieldInputInstance = buildTypeGuard(zMainModelFieldInputInstance); -export const isMainModelFieldInputTemplate = buildTypeGuard(zMainModelFieldInputTemplate); +export const isMainModelFieldInputInstance = buildInstanceTypeGuard(zMainModelFieldInputInstance); +export const isMainModelFieldInputTemplate = buildTemplateTypeGuard('MainModelField'); // #endregion // #region ModelIdentifierField @@ -654,12 +685,12 @@ const zModelIdentifierFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type ModelIdentifierFieldValue = z.infer; export type ModelIdentifierFieldInputInstance = z.infer; export type ModelIdentifierFieldInputTemplate = z.infer; -export const isModelIdentifierFieldInputInstance = buildTypeGuard(zModelIdentifierFieldInputInstance); -export const isModelIdentifierFieldInputTemplate = buildTypeGuard(zModelIdentifierFieldInputTemplate); +export const isModelIdentifierFieldInputInstance = buildInstanceTypeGuard(zModelIdentifierFieldInputInstance); +export const isModelIdentifierFieldInputTemplate = + buildTemplateTypeGuard('ModelIdentifierField'); // #endregion // #region SDXLMainModelField - const zSDXLMainModelFieldValue = zMainModelFieldValue; // TODO: Narrow to SDXL models only. const zSDXLMainModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zSDXLMainModelFieldValue, @@ -674,12 +705,12 @@ const zSDXLMainModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ }); export type SDXLMainModelFieldInputInstance = z.infer; export type SDXLMainModelFieldInputTemplate = z.infer; -export const isSDXLMainModelFieldInputInstance = buildTypeGuard(zSDXLMainModelFieldInputInstance); -export const isSDXLMainModelFieldInputTemplate = buildTypeGuard(zSDXLMainModelFieldInputTemplate); +export const isSDXLMainModelFieldInputInstance = buildInstanceTypeGuard(zSDXLMainModelFieldInputInstance); +export const isSDXLMainModelFieldInputTemplate = + buildTemplateTypeGuard('SDXLMainModelField'); // #endregion // #region SD3MainModelField - const zSD3MainModelFieldValue = zMainModelFieldValue; // TODO: Narrow to SDXL models only. const zSD3MainModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zSD3MainModelFieldValue, @@ -694,13 +725,12 @@ const zSD3MainModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ }); export type SD3MainModelFieldInputInstance = z.infer; export type SD3MainModelFieldInputTemplate = z.infer; -export const isSD3MainModelFieldInputInstance = buildTypeGuard(zSD3MainModelFieldInputInstance); -export const isSD3MainModelFieldInputTemplate = buildTypeGuard(zSD3MainModelFieldInputTemplate); - +export const isSD3MainModelFieldInputInstance = buildInstanceTypeGuard(zSD3MainModelFieldInputInstance); +export const isSD3MainModelFieldInputTemplate = + buildTemplateTypeGuard('SD3MainModelField'); // #endregion // #region FluxMainModelField - const zFluxMainModelFieldValue = zMainModelFieldValue; // TODO: Narrow to SDXL models only. const zFluxMainModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zFluxMainModelFieldValue, @@ -715,13 +745,12 @@ const zFluxMainModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ }); export type FluxMainModelFieldInputInstance = z.infer; export type FluxMainModelFieldInputTemplate = z.infer; -export const isFluxMainModelFieldInputInstance = buildTypeGuard(zFluxMainModelFieldInputInstance); -export const isFluxMainModelFieldInputTemplate = buildTypeGuard(zFluxMainModelFieldInputTemplate); - +export const isFluxMainModelFieldInputInstance = buildInstanceTypeGuard(zFluxMainModelFieldInputInstance); +export const isFluxMainModelFieldInputTemplate = + buildTemplateTypeGuard('FluxMainModelField'); // #endregion // #region SDXLRefinerModelField - /** @alias */ // tells knip to ignore this duplicate export export const zSDXLRefinerModelFieldValue = zMainModelFieldValue; // TODO: Narrow to SDXL Refiner models only. const zSDXLRefinerModelFieldInputInstance = zFieldInputInstanceBase.extend({ @@ -738,8 +767,9 @@ const zSDXLRefinerModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type SDXLRefinerModelFieldValue = z.infer; export type SDXLRefinerModelFieldInputInstance = z.infer; export type SDXLRefinerModelFieldInputTemplate = z.infer; -export const isSDXLRefinerModelFieldInputInstance = buildTypeGuard(zSDXLRefinerModelFieldInputInstance); -export const isSDXLRefinerModelFieldInputTemplate = buildTypeGuard(zSDXLRefinerModelFieldInputTemplate); +export const isSDXLRefinerModelFieldInputInstance = buildInstanceTypeGuard(zSDXLRefinerModelFieldInputInstance); +export const isSDXLRefinerModelFieldInputTemplate = + buildTemplateTypeGuard('SDXLRefinerModelField'); // #endregion // #region VAEModelField @@ -759,12 +789,11 @@ const zVAEModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type VAEModelFieldValue = z.infer; export type VAEModelFieldInputInstance = z.infer; export type VAEModelFieldInputTemplate = z.infer; -export const isVAEModelFieldInputInstance = buildTypeGuard(zVAEModelFieldInputInstance); -export const isVAEModelFieldInputTemplate = buildTypeGuard(zVAEModelFieldInputTemplate); +export const isVAEModelFieldInputInstance = buildInstanceTypeGuard(zVAEModelFieldInputInstance); +export const isVAEModelFieldInputTemplate = buildTemplateTypeGuard('VAEModelField'); // #endregion // #region LoRAModelField - export const zLoRAModelFieldValue = zModelIdentifierField.optional(); const zLoRAModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zLoRAModelFieldValue, @@ -780,12 +809,11 @@ const zLoRAModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type LoRAModelFieldValue = z.infer; export type LoRAModelFieldInputInstance = z.infer; export type LoRAModelFieldInputTemplate = z.infer; -export const isLoRAModelFieldInputInstance = buildTypeGuard(zLoRAModelFieldInputInstance); -export const isLoRAModelFieldInputTemplate = buildTypeGuard(zLoRAModelFieldInputTemplate); +export const isLoRAModelFieldInputInstance = buildInstanceTypeGuard(zLoRAModelFieldInputInstance); +export const isLoRAModelFieldInputTemplate = buildTemplateTypeGuard('LoRAModelField'); // #endregion // #region ControlNetModelField - export const zControlNetModelFieldValue = zModelIdentifierField.optional(); const zControlNetModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zControlNetModelFieldValue, @@ -801,12 +829,12 @@ const zControlNetModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type ControlNetModelFieldValue = z.infer; export type ControlNetModelFieldInputInstance = z.infer; export type ControlNetModelFieldInputTemplate = z.infer; -export const isControlNetModelFieldInputInstance = buildTypeGuard(zControlNetModelFieldInputInstance); -export const isControlNetModelFieldInputTemplate = buildTypeGuard(zControlNetModelFieldInputTemplate); +export const isControlNetModelFieldInputInstance = buildInstanceTypeGuard(zControlNetModelFieldInputInstance); +export const isControlNetModelFieldInputTemplate = + buildTemplateTypeGuard('ControlNetModelField'); // #endregion // #region IPAdapterModelField - export const zIPAdapterModelFieldValue = zModelIdentifierField.optional(); const zIPAdapterModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zIPAdapterModelFieldValue, @@ -822,12 +850,12 @@ const zIPAdapterModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type IPAdapterModelFieldValue = z.infer; export type IPAdapterModelFieldInputInstance = z.infer; export type IPAdapterModelFieldInputTemplate = z.infer; -export const isIPAdapterModelFieldInputInstance = buildTypeGuard(zIPAdapterModelFieldInputInstance); -export const isIPAdapterModelFieldInputTemplate = buildTypeGuard(zIPAdapterModelFieldInputTemplate); +export const isIPAdapterModelFieldInputInstance = buildInstanceTypeGuard(zIPAdapterModelFieldInputInstance); +export const isIPAdapterModelFieldInputTemplate = + buildTemplateTypeGuard('IPAdapterModelField'); // #endregion // #region T2IAdapterField - export const zT2IAdapterModelFieldValue = zModelIdentifierField.optional(); const zT2IAdapterModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zT2IAdapterModelFieldValue, @@ -843,12 +871,12 @@ const zT2IAdapterModelFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type T2IAdapterModelFieldValue = z.infer; export type T2IAdapterModelFieldInputInstance = z.infer; export type T2IAdapterModelFieldInputTemplate = z.infer; -export const isT2IAdapterModelFieldInputInstance = buildTypeGuard(zT2IAdapterModelFieldInputInstance); -export const isT2IAdapterModelFieldInputTemplate = buildTypeGuard(zT2IAdapterModelFieldInputTemplate); +export const isT2IAdapterModelFieldInputInstance = buildInstanceTypeGuard(zT2IAdapterModelFieldInputInstance); +export const isT2IAdapterModelFieldInputTemplate = + buildTemplateTypeGuard('T2IAdapterModelField'); // #endregion // #region SpandrelModelToModelField - export const zSpandrelImageToImageModelFieldValue = zModelIdentifierField.optional(); const zSpandrelImageToImageModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zSpandrelImageToImageModelFieldValue, @@ -864,12 +892,11 @@ const zSpandrelImageToImageModelFieldOutputTemplate = zFieldOutputTemplateBase.e export type SpandrelImageToImageModelFieldValue = z.infer; export type SpandrelImageToImageModelFieldInputInstance = z.infer; export type SpandrelImageToImageModelFieldInputTemplate = z.infer; -export const isSpandrelImageToImageModelFieldInputInstance = buildTypeGuard( +export const isSpandrelImageToImageModelFieldInputInstance = buildInstanceTypeGuard( zSpandrelImageToImageModelFieldInputInstance ); -export const isSpandrelImageToImageModelFieldInputTemplate = buildTypeGuard( - zSpandrelImageToImageModelFieldInputTemplate -); +export const isSpandrelImageToImageModelFieldInputTemplate = + buildTemplateTypeGuard('SpandrelImageToImageModelField'); // #endregion // #region T5EncoderModelField @@ -883,18 +910,15 @@ const zT5EncoderModelFieldInputTemplate = zFieldInputTemplateBase.extend({ originalType: zFieldType.optional(), default: zT5EncoderModelFieldValue, }); - export type T5EncoderModelFieldValue = z.infer; - export type T5EncoderModelFieldInputInstance = z.infer; export type T5EncoderModelFieldInputTemplate = z.infer; -export const isT5EncoderModelFieldInputInstance = buildTypeGuard(zT5EncoderModelFieldInputInstance); -export const isT5EncoderModelFieldInputTemplate = buildTypeGuard(zT5EncoderModelFieldInputTemplate); - +export const isT5EncoderModelFieldInputInstance = buildInstanceTypeGuard(zT5EncoderModelFieldInputInstance); +export const isT5EncoderModelFieldInputTemplate = + buildTemplateTypeGuard('T5EncoderModelField'); // #endregion // #region FluxVAEModelField - export const zFluxVAEModelFieldValue = zModelIdentifierField.optional(); const zFluxVAEModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zFluxVAEModelFieldValue, @@ -904,18 +928,15 @@ const zFluxVAEModelFieldInputTemplate = zFieldInputTemplateBase.extend({ originalType: zFieldType.optional(), default: zFluxVAEModelFieldValue, }); - export type FluxVAEModelFieldValue = z.infer; - export type FluxVAEModelFieldInputInstance = z.infer; export type FluxVAEModelFieldInputTemplate = z.infer; -export const isFluxVAEModelFieldInputInstance = buildTypeGuard(zFluxVAEModelFieldInputInstance); -export const isFluxVAEModelFieldInputTemplate = buildTypeGuard(zFluxVAEModelFieldInputTemplate); - +export const isFluxVAEModelFieldInputInstance = buildInstanceTypeGuard(zFluxVAEModelFieldInputInstance); +export const isFluxVAEModelFieldInputTemplate = + buildTemplateTypeGuard('FluxVAEModelField'); // #endregion // #region CLIPEmbedModelField - export const zCLIPEmbedModelFieldValue = zModelIdentifierField.optional(); const zCLIPEmbedModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zCLIPEmbedModelFieldValue, @@ -925,18 +946,15 @@ const zCLIPEmbedModelFieldInputTemplate = zFieldInputTemplateBase.extend({ originalType: zFieldType.optional(), default: zCLIPEmbedModelFieldValue, }); - export type CLIPEmbedModelFieldValue = z.infer; - export type CLIPEmbedModelFieldInputInstance = z.infer; export type CLIPEmbedModelFieldInputTemplate = z.infer; -export const isCLIPEmbedModelFieldInputInstance = buildTypeGuard(zCLIPEmbedModelFieldInputInstance); -export const isCLIPEmbedModelFieldInputTemplate = buildTypeGuard(zCLIPEmbedModelFieldInputTemplate); - +export const isCLIPEmbedModelFieldInputInstance = buildInstanceTypeGuard(zCLIPEmbedModelFieldInputInstance); +export const isCLIPEmbedModelFieldInputTemplate = + buildTemplateTypeGuard('CLIPEmbedModelField'); // #endregion // #region CLIPLEmbedModelField - export const zCLIPLEmbedModelFieldValue = zModelIdentifierField.optional(); const zCLIPLEmbedModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zCLIPLEmbedModelFieldValue, @@ -946,18 +964,15 @@ const zCLIPLEmbedModelFieldInputTemplate = zFieldInputTemplateBase.extend({ originalType: zFieldType.optional(), default: zCLIPLEmbedModelFieldValue, }); - export type CLIPLEmbedModelFieldValue = z.infer; - export type CLIPLEmbedModelFieldInputInstance = z.infer; export type CLIPLEmbedModelFieldInputTemplate = z.infer; -export const isCLIPLEmbedModelFieldInputInstance = buildTypeGuard(zCLIPLEmbedModelFieldInputInstance); -export const isCLIPLEmbedModelFieldInputTemplate = buildTypeGuard(zCLIPLEmbedModelFieldInputTemplate); - +export const isCLIPLEmbedModelFieldInputInstance = buildInstanceTypeGuard(zCLIPLEmbedModelFieldInputInstance); +export const isCLIPLEmbedModelFieldInputTemplate = + buildTemplateTypeGuard('CLIPLEmbedModelField'); // #endregion // #region CLIPGEmbedModelField - export const zCLIPGEmbedModelFieldValue = zModelIdentifierField.optional(); const zCLIPGEmbedModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zCLIPGEmbedModelFieldValue, @@ -967,18 +982,15 @@ const zCLIPGEmbedModelFieldInputTemplate = zFieldInputTemplateBase.extend({ originalType: zFieldType.optional(), default: zCLIPGEmbedModelFieldValue, }); - export type CLIPGEmbedModelFieldValue = z.infer; - export type CLIPGEmbedModelFieldInputInstance = z.infer; export type CLIPGEmbedModelFieldInputTemplate = z.infer; -export const isCLIPGEmbedModelFieldInputInstance = buildTypeGuard(zCLIPGEmbedModelFieldInputInstance); -export const isCLIPGEmbedModelFieldInputTemplate = buildTypeGuard(zCLIPGEmbedModelFieldInputTemplate); - +export const isCLIPGEmbedModelFieldInputInstance = buildInstanceTypeGuard(zCLIPGEmbedModelFieldInputInstance); +export const isCLIPGEmbedModelFieldInputTemplate = + buildTemplateTypeGuard('CLIPGEmbedModelField'); // #endregion // #region ControlLoRAModelField - export const zControlLoRAModelFieldValue = zModelIdentifierField.optional(); const zControlLoRAModelFieldInputInstance = zFieldInputInstanceBase.extend({ value: zControlLoRAModelFieldValue, @@ -988,18 +1000,15 @@ const zControlLoRAModelFieldInputTemplate = zFieldInputTemplateBase.extend({ originalType: zFieldType.optional(), default: zControlLoRAModelFieldValue, }); - export type ControlLoRAModelFieldValue = z.infer; - export type ControlLoRAModelFieldInputInstance = z.infer; export type ControlLoRAModelFieldInputTemplate = z.infer; -export const isControlLoRAModelFieldInputInstance = buildTypeGuard(zControlLoRAModelFieldInputInstance); -export const isControlLoRAModelFieldInputTemplate = buildTypeGuard(zControlLoRAModelFieldInputTemplate); - +export const isControlLoRAModelFieldInputInstance = buildInstanceTypeGuard(zControlLoRAModelFieldInputInstance); +export const isControlLoRAModelFieldInputTemplate = + buildTemplateTypeGuard('ControlLoRAModelField'); // #endregion // #region SchedulerField - export const zSchedulerFieldValue = zSchedulerField.optional(); const zSchedulerFieldInputInstance = zFieldInputInstanceBase.extend({ value: zSchedulerFieldValue, @@ -1015,8 +1024,8 @@ const zSchedulerFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type SchedulerFieldValue = z.infer; export type SchedulerFieldInputInstance = z.infer; export type SchedulerFieldInputTemplate = z.infer; -export const isSchedulerFieldInputInstance = buildTypeGuard(zSchedulerFieldInputInstance); -export const isSchedulerFieldInputTemplate = buildTypeGuard(zSchedulerFieldInputTemplate); +export const isSchedulerFieldInputInstance = buildInstanceTypeGuard(zSchedulerFieldInputInstance); +export const isSchedulerFieldInputTemplate = buildTemplateTypeGuard('SchedulerField'); // #endregion // #region FloatGeneratorField @@ -1137,8 +1146,9 @@ const zFloatGeneratorFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type FloatGeneratorFieldValue = z.infer; export type FloatGeneratorFieldInputInstance = z.infer; export type FloatGeneratorFieldInputTemplate = z.infer; -export const isFloatGeneratorFieldInputInstance = buildTypeGuard(zFloatGeneratorFieldInputInstance); -export const isFloatGeneratorFieldInputTemplate = buildTypeGuard(zFloatGeneratorFieldInputTemplate); +export const isFloatGeneratorFieldInputInstance = buildInstanceTypeGuard(zFloatGeneratorFieldInputInstance); +export const isFloatGeneratorFieldInputTemplate = + buildTemplateTypeGuard('FloatGeneratorField'); export const resolveFloatGeneratorField = ({ value }: FloatGeneratorFieldInputInstance) => { if (value.values) { return value.values; @@ -1288,8 +1298,9 @@ const zIntegerGeneratorFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type IntegerGeneratorFieldValue = z.infer; export type IntegerGeneratorFieldInputInstance = z.infer; export type IntegerGeneratorFieldInputTemplate = z.infer; -export const isIntegerGeneratorFieldInputInstance = buildTypeGuard(zIntegerGeneratorFieldInputInstance); -export const isIntegerGeneratorFieldInputTemplate = buildTypeGuard(zIntegerGeneratorFieldInputTemplate); +export const isIntegerGeneratorFieldInputInstance = buildInstanceTypeGuard(zIntegerGeneratorFieldInputInstance); +export const isIntegerGeneratorFieldInputTemplate = + buildTemplateTypeGuard('IntegerGeneratorField'); export const resolveIntegerGeneratorField = ({ value }: IntegerGeneratorFieldInputInstance) => { if (value.values) { return value.values; @@ -1405,8 +1416,11 @@ const zStringGeneratorFieldOutputTemplate = zFieldOutputTemplateBase.extend({ export type StringGeneratorFieldValue = z.infer; export type StringGeneratorFieldInputInstance = z.infer; export type StringGeneratorFieldInputTemplate = z.infer; -export const isStringGeneratorFieldInputInstance = buildTypeGuard(zStringGeneratorFieldInputInstance); -export const isStringGeneratorFieldInputTemplate = buildTypeGuard(zStringGeneratorFieldInputTemplate); +export const isStringGeneratorFieldInputInstance = buildInstanceTypeGuard(zStringGeneratorFieldInputInstance); +export const isStringGeneratorFieldInputTemplate = buildTemplateTypeGuard( + zStringGeneratorFieldType.shape.name.value +); + export const resolveStringGeneratorField = ({ value }: StringGeneratorFieldInputInstance) => { if (value.values) { return value.values; @@ -1561,7 +1575,6 @@ const zStatefulFieldInputInstance = z.union([ export const zFieldInputInstance = z.union([zStatefulFieldInputInstance, zStatelessFieldInputInstance]); export type FieldInputInstance = z.infer; -export const isFieldInputInstance = buildTypeGuard(zFieldInputInstance); // #endregion // #region StatefulFieldInputTemplate & FieldInputTemplate @@ -1605,7 +1618,6 @@ const zStatefulFieldInputTemplate = z.union([ export const zFieldInputTemplate = z.union([zStatefulFieldInputTemplate, zStatelessFieldInputTemplate]); export type FieldInputTemplate = z.infer; -export const isFieldInputTemplate = buildTypeGuard(zFieldInputTemplate); // #endregion // #region StatefulFieldOutputTemplate & FieldOutputTemplate @@ -1643,3 +1655,7 @@ const zStatefulFieldOutputTemplate = z.union([ export const zFieldOutputTemplate = z.union([zStatefulFieldOutputTemplate, zStatelessFieldOutputTemplate]); export type FieldOutputTemplate = z.infer; // #endregion + +// #region FieldInputTemplate Type Guards + +// #endregion