@ai-sdk/provider-utils
Version:
24 lines (20 loc) • 674 B
text/typescript
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();
};