Spaces:
Build error
Build error
| import { isDefined } from '@/utils'; | |
| import { type BaseOutputSchemaV2 } from '@/workflow/workflow-schema/types/base-output-schema.type'; | |
| const buildPath = (parentPath: string, key: string): string => | |
| parentPath ? `${parentPath}.${key}` : key; | |
| export const getOutputSchemaMismatchIssues = ( | |
| declaredSchema: BaseOutputSchemaV2, | |
| expectedSchema: BaseOutputSchemaV2, | |
| parentPath = '', | |
| ): string[] => { | |
| const issues: string[] = []; | |
| for (const [key, expectedField] of Object.entries(expectedSchema)) { | |
| const path = buildPath(parentPath, key); | |
| const declaredField = declaredSchema[key]; | |
| if (!isDefined(declaredField)) { | |
| issues.push(`Missing key "${path}" in declared output schema.`); | |
| continue; | |
| } | |
| if (expectedField.isLeaf !== declaredField.isLeaf) { | |
| issues.push( | |
| `Type mismatch at "${path}": expected ${ | |
| expectedField.isLeaf ? expectedField.type : 'object' | |
| } but declared ${declaredField.isLeaf ? declaredField.type : 'object'}.`, | |
| ); | |
| continue; | |
| } | |
| if (!expectedField.isLeaf && !declaredField.isLeaf) { | |
| issues.push( | |
| ...getOutputSchemaMismatchIssues( | |
| declaredField.value, | |
| expectedField.value, | |
| path, | |
| ), | |
| ); | |
| continue; | |
| } | |
| if ( | |
| expectedField.isLeaf && | |
| declaredField.isLeaf && | |
| expectedField.type !== 'unknown' && | |
| declaredField.type !== 'unknown' && | |
| expectedField.type !== declaredField.type | |
| ) { | |
| issues.push( | |
| `Type mismatch at "${path}": expected ${expectedField.type} but declared ${declaredField.type}.`, | |
| ); | |
| } | |
| } | |
| return issues; | |
| }; | |