openai
Version:
The official TypeScript library for the OpenAI API
38 lines (33 loc) • 865 B
text/typescript
import { ZodLiteralDef } from 'zod';
import { Refs } from '../Refs';
export type JsonSchema7LiteralType =
| {
type: 'string' | 'number' | 'integer' | 'boolean';
const: string | number | boolean;
}
| {
type: 'object' | 'array';
};
export function parseLiteralDef(def: ZodLiteralDef, refs: Refs): JsonSchema7LiteralType {
const parsedType = typeof def.value;
if (
parsedType !== 'bigint' &&
parsedType !== 'number' &&
parsedType !== 'boolean' &&
parsedType !== 'string'
) {
return {
type: Array.isArray(def.value) ? 'array' : 'object',
};
}
if (refs.target === 'openApi3') {
return {
type: parsedType === 'bigint' ? 'integer' : parsedType,
enum: [def.value],
} as any;
}
return {
type: parsedType === 'bigint' ? 'integer' : parsedType,
const: def.value,
};
}