@asteasolutions/zod-to-openapi
Version:
Builds OpenAPI schemas from Zod schemas
41 lines (40 loc) • 1.44 kB
TypeScript
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 {};