UNPKG

@ai-sdk/provider-utils

Version:
24 lines (20 loc) 674 B
import type { ZodOptionalDef } from 'zod/v3'; import { parseDef } from '../parse-def'; import type { JsonSchema7Type } from '../parse-types'; import type { Refs } from '../refs'; import { parseAnyDef } from './any'; export const parseOptionalDef = ( def: ZodOptionalDef, refs: Refs, ): JsonSchema7Type | undefined => { if (refs.currentPath.toString() === refs.propertyPath?.toString()) { return parseDef(def.innerType._def, refs); } const innerSchema = parseDef(def.innerType._def, { ...refs, currentPath: [...refs.currentPath, 'anyOf', '1'], }); return innerSchema ? { anyOf: [{ not: parseAnyDef() }, innerSchema] } : parseAnyDef(); };