openai
Version:
The official TypeScript library for the OpenAI API
37 lines (30 loc) • 967 B
text/typescript
import { ZodSetDef } from 'zod';
import { ErrorMessages, setResponseValueAndErrors } from '../errorMessages';
import { JsonSchema7Type, parseDef } from '../parseDef';
import { Refs } from '../Refs';
export type JsonSchema7SetType = {
type: 'array';
uniqueItems: true;
items?: JsonSchema7Type | undefined;
minItems?: number;
maxItems?: number;
errorMessage?: ErrorMessages<JsonSchema7SetType>;
};
export function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {
const items = parseDef(def.valueType._def, {
...refs,
currentPath: [...refs.currentPath, 'items'],
});
const schema: JsonSchema7SetType = {
type: 'array',
uniqueItems: true,
items,
};
if (def.minSize) {
setResponseValueAndErrors(schema, 'minItems', def.minSize.value, def.minSize.message, refs);
}
if (def.maxSize) {
setResponseValueAndErrors(schema, 'maxItems', def.maxSize.value, def.maxSize.message, refs);
}
return schema;
}