UNPKG

@asteasolutions/zod-to-openapi

Version:
41 lines (40 loc) 1.44 kB
import { ParameterObject, SchemaObject } from 'openapi3-ts/oas30'; import type { z, ZodObject, ZodRawShape, ZodTypeAny } from 'zod'; declare type ExampleValue<T> = T extends Date ? string : T; export interface ZodOpenAPIMetadata<T = any, E = ExampleValue<T>> extends SchemaObject { param?: Partial<ParameterObject> & { example?: E; }; example?: E; examples?: E[]; default?: T; } export interface ZodOpenAPIInternalMetadata { refId?: string; extendedFrom?: { refId: string; schema: ZodObject<ZodRawShape>; }; } export interface ZodOpenApiFullMetadata<T = any> { _internal?: ZodOpenAPIInternalMetadata; metadata?: ZodOpenAPIMetadata<T>; } declare module 'zod' { interface ZodTypeDef { openapi?: ZodOpenApiFullMetadata; } interface ZodType<Output = any, Def extends ZodTypeDef = ZodTypeDef, Input = Output> { openapi<T extends ZodTypeAny>(this: T, metadata: Partial<ZodOpenAPIMetadata<z.infer<T>>>): T; /** * This method should NOT be used outside of @astesolution/zod-to-openapi code! * Any usage of it can lead to unexpected consequences when generating the * OpenApi schemas! * * @deprecated */ internal_openapi<T extends ZodTypeAny>(this: T, metadata: Partial<ZodOpenAPIInternalMetadata>): T; } } export declare function extendZodWithOpenApi(zod: typeof z): void; export {};