UNPKG

chanfana

Version:

OpenAPI 3 and 3.1 schema generator and validator for Hono, itty-router and more!

793 lines (768 loc) 37.5 kB
import * as _asteasolutions_zod_to_openapi from '@asteasolutions/zod-to-openapi'; import { ZodMediaTypeObject, RouteConfig, OpenAPIRegistry } from '@asteasolutions/zod-to-openapi'; export { extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi'; import * as openapi3_ts_oas30 from 'openapi3-ts/oas30'; import { OpenAPIObject, HeadersObject as HeadersObject$1, LinksObject as LinksObject$1 } from 'openapi3-ts/oas30'; import * as openapi3_ts_oas31 from 'openapi3-ts/oas31'; import { HeadersObject as HeadersObject$2, LinksObject as LinksObject$2 } from 'openapi3-ts/oas31'; import * as zod from 'zod'; import { AnyZodObject, ZodEffects, ZodType, z } from 'zod'; import { Hono, Input } from 'hono'; import { Env, Schema, MergeSchemaPath, MergePath, BlankInput, HandlerResponse, H, ToSchema, TypedResponse } from 'hono/types'; type Simplify<T> = { [KeyType in keyof T]: T[KeyType]; } & {}; type IsEqual<A, B> = (<G>() => G extends A ? 1 : 2) extends <G>() => G extends B ? 1 : 2 ? true : false; type Filter<KeyType, ExcludeType> = IsEqual<KeyType, ExcludeType> extends true ? never : KeyType extends ExcludeType ? never : KeyType; type ExceptOptions = { requireExactProps?: boolean; }; type Except<ObjectType, KeysType extends keyof ObjectType, Options extends ExceptOptions = { requireExactProps: false; }> = { [KeyType in keyof ObjectType as Filter<KeyType, KeysType>]: ObjectType[KeyType]; } & (Options["requireExactProps"] extends true ? Partial<Record<KeysType, never>> : {}); type SetOptional<BaseType, Keys extends keyof BaseType> = Simplify<Except<BaseType, Keys> & Partial<Pick<BaseType, Keys>>>; type SetRequired<BaseType, Keys extends keyof BaseType> = BaseType extends unknown ? Simplify<Except<BaseType, Keys> & Required<Pick<BaseType, Keys>>> : never; type OpenAPIObjectConfig = Omit<OpenAPIObject, "paths" | "components" | "webhooks">; type OpenAPIObjectConfigV31 = Omit<OpenAPIObject, "paths" | "components" | "webhooks">; type HeadersObject = HeadersObject$1 | HeadersObject$2; type LinksObject = LinksObject$1 | LinksObject$2; type ZodMediaType = "application/json" | "text/html" | "text/plain" | "application/xml" | (string & {}); type ZodContentObject = Partial<Record<ZodMediaType, ZodMediaTypeObject>>; interface ZodRequestBody { description?: string; content: ZodContentObject; required?: boolean; } interface ResponseConfig { description: string; headers?: AnyZodObject | HeadersObject; links?: LinksObject; content?: ZodContentObject; } type RouteParameter = AnyZodObject | ZodEffects<AnyZodObject, unknown, unknown> | undefined; interface RouterOptions { base?: string; schema?: Partial<OpenAPIObjectConfigV31 | OpenAPIObjectConfig>; docs_url?: string | null; redoc_url?: string | null; openapi_url?: string | null; raiseUnknownParameters?: boolean; generateOperationIds?: boolean; openapiVersion?: "3" | "3.1"; } interface RouteOptions { router: any; raiseUnknownParameters: boolean; route: string; urlParams: Array<string>; } interface ParameterType { default?: string | number | boolean; description?: string; example?: string | number | boolean; required?: boolean; deprecated?: boolean; } interface StringParameterType extends ParameterType { format?: string; } interface EnumerationParameterType extends StringParameterType { values: Record<string, any>; enumCaseSensitive?: boolean; } interface RegexParameterType extends StringParameterType { pattern: RegExp; patternError?: string; } type RequestTypes = { body?: ZodRequestBody; params?: AnyZodObject; query?: AnyZodObject; cookies?: AnyZodObject; headers?: AnyZodObject | ZodType<unknown>[]; }; type OpenAPIRouteSchema = Simplify<Omit<RouteConfig, "responses" | "method" | "path" | "request"> & { request?: RequestTypes; responses?: { [statusCode: string]: ResponseConfig; }; }>; type ValidatedData<S> = S extends OpenAPIRouteSchema ? { query: GetRequest<S> extends NonNullable<GetRequest<S>> ? GetOutput<GetRequest<S>, "query"> : undefined; params: GetRequest<S> extends NonNullable<GetRequest<S>> ? GetOutput<GetRequest<S>, "params"> : undefined; headers: GetRequest<S> extends NonNullable<GetRequest<S>> ? GetOutput<GetRequest<S>, "headers"> : undefined; body: GetRequest<S> extends NonNullable<GetRequest<S>> ? GetBody<GetPartBody<GetRequest<S>, "body">> : undefined; } : { query: undefined; params: undefined; headers: undefined; body: undefined; }; type GetRequest<T extends OpenAPIRouteSchema> = T["request"]; type GetOutput<T extends object | undefined, P extends keyof T> = T extends NonNullable<T> ? T[P] extends AnyZodObject ? z.output<T[P]> : undefined : undefined; type GetPartBody<T extends RequestTypes, P extends keyof T> = T[P] extends ZodRequestBody ? T[P] : undefined; type GetBody<T extends ZodRequestBody | undefined> = T extends NonNullable<T> ? T["content"]["application/json"] extends NonNullable<T["content"]["application/json"]> ? T["content"]["application/json"]["schema"] extends z.ZodTypeAny ? z.output<T["content"]["application/json"]["schema"]> : undefined : undefined : undefined; declare class OpenAPIRegistryMerger extends OpenAPIRegistry { _definitions: { route: { path: string; }; }[]; merge(registry: OpenAPIRegistryMerger, basePath?: string): void; } type OpenAPIRouterType<M> = { original: M; options: RouterOptions; registry: OpenAPIRegistryMerger; }; declare class OpenAPIHandler { router: any; options: RouterOptions; registry: OpenAPIRegistryMerger; allowedMethods: string[]; constructor(router: any, options?: RouterOptions); createDocsRoutes(): void; getGeneratedSchema(): any; registerNestedRouter(params: { method: string; nestedRouter: any; path?: string; }): any[]; parseRoute(path: string): string; registerRoute(params: { method: string; path: string; handlers: any[]; doRegister?: boolean; }): any[]; handleCommonProxy(target: any, prop: string, ...args: any[]): any; getRequest(args: any[]): void; getUrlParams(args: any[]): Record<string, any>; getBindings(args: any[]): Record<string, any>; } declare function convertParams<M = z.ZodType>(field: any, params: any): M; declare function Arr(innerType: any, params?: ParameterType): z.ZodArray<any>; declare function Obj(fields: object, params?: ParameterType): z.ZodObject<any>; declare function Num(params?: ParameterType): z.ZodNumber; declare function Int(params?: ParameterType): z.ZodNumber; declare function Str(params?: ParameterType): z.ZodString; declare function DateTime(params?: ParameterType): z.ZodString; declare function Regex(params: RegexParameterType): z.ZodString; declare function Email(params?: ParameterType): z.ZodString; declare function Uuid(params?: ParameterType): z.ZodString; declare function Hostname(params?: ParameterType): z.ZodString; declare function Ipv4(params?: ParameterType): z.ZodString; declare function Ipv6(params?: ParameterType): z.ZodString; declare function Ip(params?: ParameterType): z.ZodString; declare function DateOnly(params?: ParameterType): z.ZodString; declare function Bool(params?: ParameterType): z.ZodBoolean; declare function Enumeration(params: EnumerationParameterType): z.ZodEnum<any>; declare function coerceInputs(data: Record<string, any>, schema?: RouteParameter): Record<string, any> | null; declare class OpenAPIRoute<HandleArgs extends Array<object> = any> { handle(...args: any[]): Response | Promise<Response> | object | Promise<object>; static isRoute: boolean; args: HandleArgs; validatedData: any; params: RouteOptions; schema: OpenAPIRouteSchema; constructor(params: RouteOptions); getValidatedData<S = any>(): Promise<ValidatedData<S>>; getSchema(): OpenAPIRouteSchema; getSchemaZod(): OpenAPIRouteSchema; handleValidationError(errors: z.ZodIssue[]): Response; execute(...args: HandleArgs): Promise<Response>; validateRequest(request: Request): Promise<any>; } declare function getSwaggerUI(schemaUrl: string): string; declare function getReDocUI(schemaUrl: string): string; declare function jsonResp(data: any, params?: object): Response; type JsonContent<T> = { content: { "application/json": { schema: z.ZodType<T>; }; }; }; type InferSchemaType<T> = T extends z.ZodType ? z.infer<T> : T; declare const contentJson: <T>(schema: T) => JsonContent<InferSchemaType<T>>; type IttyRouterOpenAPIRouterType<M> = OpenAPIRouterType<M> & { all(path: string, endpoint: typeof OpenAPIRoute<any>): (M & any)["all"]; all(path: string, router: M): (M & any)["all"]; delete(path: string, endpoint: typeof OpenAPIRoute<any>): (M & any)["delete"]; delete(path: string, router: M): (M & any)["delete"]; get(path: string, endpoint: typeof OpenAPIRoute<any>): (M & any)["get"]; get(path: string, router: M): (M & any)["get"]; head(path: string, endpoint: typeof OpenAPIRoute<any>): (M & any)["head"]; head(path: string, router: M): (M & any)["head"]; patch(path: string, endpoint: typeof OpenAPIRoute<any>): (M & any)["patch"]; patch(path: string, router: M): (M & any)["patch"]; post(path: string, endpoint: typeof OpenAPIRoute<any>): (M & any)["post"]; post(path: string, router: M): (M & any)["post"]; put(path: string, endpoint: typeof OpenAPIRoute<any>): (M & any)["put"]; put(path: string, router: M): (M & any)["put"]; }; declare class IttyRouterOpenAPIHandler extends OpenAPIHandler { getRequest(args: any[]): any; getUrlParams(args: any[]): Record<string, any>; getBindings(args: any[]): Record<string, any>; } declare function fromIttyRouter<M>(router: M, options?: RouterOptions): M & IttyRouterOpenAPIRouterType<M>; type MergeTypedResponse<T> = T extends Promise<infer T2> ? T2 extends TypedResponse ? T2 : TypedResponse : T extends TypedResponse ? T : TypedResponse; type HonoOpenAPIRouterType<E extends Env = Env, S extends Schema = {}, BasePath extends string = "/"> = OpenAPIRouterType<Hono<E, S, BasePath>> & { on(method: string, path: string, endpoint: typeof OpenAPIRoute<any>): Hono<E, S, BasePath>["on"]; on(method: string, path: string, router: Hono<E, S, BasePath>): Hono<E, S, BasePath>["on"]; route<SubPath extends string, SubEnv extends Env, SubSchema extends Schema, SubBasePath extends string>(path: SubPath, app: HonoOpenAPIRouterType<SubEnv, SubSchema, SubBasePath>): HonoOpenAPIRouterType<E, MergeSchemaPath<SubSchema, MergePath<BasePath, SubPath>> | S, BasePath>; all<P extends string, I extends Input = BlankInput, R extends HandlerResponse<any> = any>(path: P, endpoint: typeof OpenAPIRoute<any> | H): HonoOpenAPIRouterType<E, S & ToSchema<"all", MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>; delete<P extends string, I extends Input = BlankInput, R extends HandlerResponse<any> = any>(path: P, endpoint: typeof OpenAPIRoute<any> | H): HonoOpenAPIRouterType<E, S & ToSchema<"delete", MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>; delete(path: string, router: Hono<E, S, BasePath>): Hono<E, S, BasePath>["delete"]; get<P extends string, I extends Input = BlankInput, R extends HandlerResponse<any> = any>(path: P, endpoint: typeof OpenAPIRoute<any> | H): HonoOpenAPIRouterType<E, S & ToSchema<"get", MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>; get(path: string, router: Hono<E, S, BasePath>): Hono<E, S, BasePath>["get"]; patch<P extends string, I extends Input = BlankInput, R extends HandlerResponse<any> = any>(path: P, endpoint: typeof OpenAPIRoute<any> | H): HonoOpenAPIRouterType<E, S & ToSchema<"patch", MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>; patch(path: string, router: Hono<E, S, BasePath>): Hono<E, S, BasePath>["patch"]; post<P extends string, I extends Input = BlankInput, R extends HandlerResponse<any> = any>(path: P, endpoint: typeof OpenAPIRoute<any> | H): HonoOpenAPIRouterType<E, S & ToSchema<"post", MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>; post(path: string, router: Hono<E, S, BasePath>): Hono<E, S, BasePath>["post"]; put<P extends string, I extends Input = BlankInput, R extends HandlerResponse<any> = any>(path: P, endpoint: typeof OpenAPIRoute<any> | H): HonoOpenAPIRouterType<E, S & ToSchema<"put", MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>; put(path: string, router: Hono<E, S, BasePath>): Hono<E, S, BasePath>["put"]; } & Hono<E, S, BasePath>; declare class HonoOpenAPIHandler extends OpenAPIHandler { getRequest(args: any[]): any; getUrlParams(args: any[]): Record<string, any>; getBindings(args: any[]): Record<string, any>; } declare function fromHono<M extends Hono<E, S, BasePath>, E extends Env = M extends Hono<infer E, any, any> ? E : never, S extends Schema = M extends Hono<any, infer S, any> ? S : never, BasePath extends string = M extends Hono<any, any, infer BP> ? BP : never>(router: M, options?: RouterOptions): HonoOpenAPIRouterType<E, S, BasePath>; declare function isAnyZodType(schema: object): schema is z.ZodType; declare function isSpecificZodType(field: any, typeName: string): boolean; declare function legacyTypeIntoZod(type: any, params?: any): z.ZodType; declare class ApiException extends Error { isVisible: boolean; message: string; default_message: string; status: number; code: number; includesPath: boolean; constructor(message?: string); buildResponse(): { code: number; message: string; }[]; static schema(): { [x: number]: { content: { "application/json": { schema: z.ZodType<{ success: z.ZodLiteral<false>; errors: { code: number; message: string; }[]; }, z.ZodTypeDef, { success: z.ZodLiteral<false>; errors: { code: number; message: string; }[]; }>; }; }; description: string; }; }; } declare class InputValidationException extends ApiException { isVisible: boolean; default_message: string; status: number; code: number; path: null; includesPath: boolean; constructor(message?: string, path?: any); buildResponse(): { code: number; message: string; path: null; }[]; } declare class MultiException extends ApiException { isVisible: boolean; errors: Array<ApiException>; status: number; constructor(errors: Array<ApiException>); buildResponse(): { code: number; message: string; }[]; } declare class NotFoundException extends ApiException { isVisible: boolean; default_message: string; status: number; code: number; } type FilterCondition = { field: string; operator: string; value: string | number | boolean | null; }; type ListFilters = { filters: Array<FilterCondition>; options: { page?: number; per_page?: number; order_by?: string; order_by_direction?: "asc" | "desc"; }; }; type Filters = { filters: Array<FilterCondition>; }; type UpdateFilters = { filters: Array<FilterCondition>; updatedData: Record<string, any>; }; type Model = { tableName: string; schema: AnyZodObject; primaryKeys: Array<string>; serializer?: (obj: object) => object; serializerSchema?: AnyZodObject; }; type ModelComplete = SetRequired<Model, "serializer" | "serializerSchema">; type MetaInput = { model: Model; fields?: AnyZodObject; pathParameters?: Array<string>; }; type Meta = { model: ModelComplete; fields: AnyZodObject; }; type O<M extends Meta> = z.infer<M["model"]["schema"]>; type ListResult<O> = { result: Array<O>; }; declare function MetaGenerator(meta: MetaInput): { fields: AnyZodObject; model: { tableName: string; schema: AnyZodObject; primaryKeys: Array<string>; serializer: ((obj: object) => object) | ((obj: any) => any); serializerSchema: AnyZodObject; }; pathParameters: string[] | null; }; type Logger = { log: (...args: any[]) => void; info: (...args: any[]) => void; warn: (...args: any[]) => void; error: (...args: any[]) => void; debug: (...args: any[]) => void; trace: (...args: any[]) => void; }; declare class CreateEndpoint<HandleArgs extends Array<object> = Array<object>> extends OpenAPIRoute<HandleArgs> { _meta: MetaInput; get meta(): { fields: zod.AnyZodObject; model: { tableName: string; schema: zod.AnyZodObject; primaryKeys: Array<string>; serializer: ((obj: object) => object) | ((obj: any) => any); serializerSchema: zod.AnyZodObject; }; pathParameters: string[] | null; }; getSchema(): { servers?: openapi3_ts_oas30.ServerObject[] | undefined; security?: openapi3_ts_oas30.SecurityRequirementObject[] | openapi3_ts_oas31.SecurityRequirementObject[] | undefined; tags?: string[] | undefined; externalDocs?: openapi3_ts_oas30.ExternalDocumentationObject | openapi3_ts_oas31.ExternalDocumentationObject | undefined; deprecated?: boolean | undefined; description?: string | undefined; summary?: string | undefined; operationId?: string | undefined; parameters?: (openapi3_ts_oas30.ParameterObject | openapi3_ts_oas30.ReferenceObject)[] | (openapi3_ts_oas31.ParameterObject | openapi3_ts_oas31.ReferenceObject)[] | undefined; requestBody?: openapi3_ts_oas30.ReferenceObject | openapi3_ts_oas31.ReferenceObject | openapi3_ts_oas30.RequestBodyObject | openapi3_ts_oas31.RequestBodyObject | undefined; callbacks?: openapi3_ts_oas30.CallbacksObject | openapi3_ts_oas31.CallbacksObject | undefined; request: RequestTypes | { body: ZodRequestBody | { content: { "application/json": { schema: zod.ZodType<{ [x: string]: any; [x: number]: any; [x: symbol]: any; }, zod.ZodTypeDef, { [x: string]: any; [x: number]: any; [x: symbol]: any; }>; }; }; }; params: zod.AnyZodObject | zod.ZodObject<Pick<any, never>, any, any, {}, {}> | undefined; query?: zod.AnyZodObject; cookies?: zod.AnyZodObject; headers?: zod.AnyZodObject | zod.ZodType<unknown>[]; }; responses: { [statusCode: string]: ResponseConfig; } | { "201": { description: string; headers?: zod.AnyZodObject | (openapi3_ts_oas30.HeadersObject | openapi3_ts_oas31.HeadersObject); links?: openapi3_ts_oas30.LinksObject | openapi3_ts_oas31.LinksObject; content: Partial<Record<ZodMediaType, _asteasolutions_zod_to_openapi.ZodMediaTypeObject>> | { "application/json": { schema: zod.ZodType<{ success: BooleanConstructor; result: zod.AnyZodObject; }, zod.ZodTypeDef, { success: BooleanConstructor; result: zod.AnyZodObject; }>; }; }; }; }; }; getObject(): Promise<O<typeof this.meta>>; before(data: O<typeof this.meta>): Promise<O<typeof this.meta>>; after(data: O<typeof this.meta>): Promise<O<typeof this.meta>>; create(data: O<typeof this.meta>): Promise<O<typeof this.meta>>; handle(...args: HandleArgs): Promise<Response>; } declare class DeleteEndpoint<HandleArgs extends Array<object> = Array<object>> extends OpenAPIRoute<HandleArgs> { _meta: MetaInput; get meta(): { fields: zod.AnyZodObject; model: { tableName: string; schema: zod.AnyZodObject; primaryKeys: Array<string>; serializer: ((obj: object) => object) | ((obj: any) => any); serializerSchema: zod.AnyZodObject; }; pathParameters: string[] | null; }; getSchema(): { servers?: openapi3_ts_oas30.ServerObject[] | undefined; security?: openapi3_ts_oas30.SecurityRequirementObject[] | openapi3_ts_oas31.SecurityRequirementObject[] | undefined; tags?: string[] | undefined; externalDocs?: openapi3_ts_oas30.ExternalDocumentationObject | openapi3_ts_oas31.ExternalDocumentationObject | undefined; deprecated?: boolean | undefined; description?: string | undefined; summary?: string | undefined; operationId?: string | undefined; parameters?: (openapi3_ts_oas30.ParameterObject | openapi3_ts_oas30.ReferenceObject)[] | (openapi3_ts_oas31.ParameterObject | openapi3_ts_oas31.ReferenceObject)[] | undefined; requestBody?: openapi3_ts_oas30.ReferenceObject | openapi3_ts_oas31.ReferenceObject | openapi3_ts_oas30.RequestBodyObject | openapi3_ts_oas31.RequestBodyObject | undefined; callbacks?: openapi3_ts_oas30.CallbacksObject | openapi3_ts_oas31.CallbacksObject | undefined; request: RequestTypes | { body: ZodRequestBody | { content: { "application/json": { schema: zod.ZodType<{}, zod.ZodTypeDef, {}>; }; }; } | undefined; params: zod.AnyZodObject | zod.ZodObject<Pick<Pick<any, never>, never>, any, any, {}, {}> | undefined; query?: zod.AnyZodObject; cookies?: zod.AnyZodObject; headers?: zod.AnyZodObject | zod.ZodType<unknown>[]; }; responses: { [statusCode: string]: ResponseConfig; } | { "200": { description: string; headers?: zod.AnyZodObject | (openapi3_ts_oas30.HeadersObject | openapi3_ts_oas31.HeadersObject); links?: openapi3_ts_oas30.LinksObject | openapi3_ts_oas31.LinksObject; content: Partial<Record<ZodMediaType, _asteasolutions_zod_to_openapi.ZodMediaTypeObject>> | { "application/json": { schema: zod.ZodType<{ success: BooleanConstructor; result: zod.AnyZodObject; }, zod.ZodTypeDef, { success: BooleanConstructor; result: zod.AnyZodObject; }>; }; }; }; }; }; getFilters(): Promise<Filters>; before(oldObj: O<typeof this.meta>, filters: Filters): Promise<Filters>; after(data: O<typeof this.meta>): Promise<O<typeof this.meta>>; delete(oldObj: O<typeof this.meta>, filters: Filters): Promise<O<typeof this.meta> | null>; getObject(filters: Filters): Promise<O<typeof this.meta> | null>; handle(...args: HandleArgs): Promise<{ success: boolean; result: any; }>; } declare class ReadEndpoint<HandleArgs extends Array<object> = Array<object>> extends OpenAPIRoute<HandleArgs> { _meta: MetaInput; get meta(): { fields: zod.AnyZodObject; model: { tableName: string; schema: zod.AnyZodObject; primaryKeys: Array<string>; serializer: ((obj: object) => object) | ((obj: any) => any); serializerSchema: zod.AnyZodObject; }; pathParameters: string[] | null; }; getSchema(): { servers?: openapi3_ts_oas30.ServerObject[] | undefined; security?: openapi3_ts_oas30.SecurityRequirementObject[] | openapi3_ts_oas31.SecurityRequirementObject[] | undefined; tags?: string[] | undefined; externalDocs?: openapi3_ts_oas30.ExternalDocumentationObject | openapi3_ts_oas31.ExternalDocumentationObject | undefined; deprecated?: boolean | undefined; description?: string | undefined; summary?: string | undefined; operationId?: string | undefined; parameters?: (openapi3_ts_oas30.ParameterObject | openapi3_ts_oas30.ReferenceObject)[] | (openapi3_ts_oas31.ParameterObject | openapi3_ts_oas31.ReferenceObject)[] | undefined; requestBody?: openapi3_ts_oas30.ReferenceObject | openapi3_ts_oas31.ReferenceObject | openapi3_ts_oas30.RequestBodyObject | openapi3_ts_oas31.RequestBodyObject | undefined; callbacks?: openapi3_ts_oas30.CallbacksObject | openapi3_ts_oas31.CallbacksObject | undefined; request: RequestTypes | { body?: ZodRequestBody; params: zod.AnyZodObject | zod.ZodObject<Pick<any, never>, any, any, {}, {}> | undefined; query?: zod.AnyZodObject; cookies?: zod.AnyZodObject; headers?: zod.AnyZodObject | zod.ZodType<unknown>[]; }; responses: { [statusCode: string]: ResponseConfig; } | { "200": { description: string; headers?: zod.AnyZodObject | (openapi3_ts_oas30.HeadersObject | openapi3_ts_oas31.HeadersObject); links?: openapi3_ts_oas30.LinksObject | openapi3_ts_oas31.LinksObject; content: Partial<Record<ZodMediaType, _asteasolutions_zod_to_openapi.ZodMediaTypeObject>> | { "application/json": { schema: zod.ZodType<{ success: BooleanConstructor; result: zod.AnyZodObject; }, zod.ZodTypeDef, { success: BooleanConstructor; result: zod.AnyZodObject; }>; }; }; }; }; }; getFilters(): Promise<ListFilters>; before(filters: ListFilters): Promise<ListFilters>; after(data: O<typeof this.meta>): Promise<O<typeof this.meta>>; fetch(filters: ListFilters): Promise<O<typeof this.meta> | null>; handle(...args: HandleArgs): Promise<{ success: boolean; result: any; }>; } declare class ListEndpoint<HandleArgs extends Array<object> = Array<object>> extends OpenAPIRoute<HandleArgs> { _meta: MetaInput; get meta(): { fields: AnyZodObject; model: { tableName: string; schema: AnyZodObject; primaryKeys: Array<string>; serializer: ((obj: object) => object) | ((obj: any) => any); serializerSchema: AnyZodObject; }; pathParameters: string[] | null; }; filterFields?: Array<string>; searchFields?: Array<string>; searchFieldName: string; optionFields: string[]; orderByFields: never[]; defaultOrderBy?: string; getSchema(): { servers?: openapi3_ts_oas30.ServerObject[] | undefined; security?: openapi3_ts_oas30.SecurityRequirementObject[] | openapi3_ts_oas31.SecurityRequirementObject[] | undefined; tags?: string[] | undefined; externalDocs?: openapi3_ts_oas30.ExternalDocumentationObject | openapi3_ts_oas31.ExternalDocumentationObject | undefined; deprecated?: boolean | undefined; description?: string | undefined; summary?: string | undefined; operationId?: string | undefined; parameters?: (openapi3_ts_oas30.ParameterObject | openapi3_ts_oas30.ReferenceObject)[] | (openapi3_ts_oas31.ParameterObject | openapi3_ts_oas31.ReferenceObject)[] | undefined; requestBody?: openapi3_ts_oas30.ReferenceObject | openapi3_ts_oas31.ReferenceObject | openapi3_ts_oas30.RequestBodyObject | openapi3_ts_oas31.RequestBodyObject | undefined; callbacks?: openapi3_ts_oas30.CallbacksObject | openapi3_ts_oas31.CallbacksObject | undefined; request: RequestTypes | { body?: ZodRequestBody; params: AnyZodObject | z.ZodObject<Pick<any, never>, any, any, {}, {}> | undefined; query: AnyZodObject | z.ZodObject<z.objectUtil.extendShape<{ page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; per_page: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; }, Omit<Pick<any, never>, keyof Mask>>, "strip", z.ZodTypeAny, { page: number; per_page: number; }, { page?: number | undefined; per_page?: number | undefined; }>; cookies?: AnyZodObject; headers?: AnyZodObject | z.ZodType<unknown>[]; }; responses: { [statusCode: string]: ResponseConfig; } | { "200": { description: string; headers?: AnyZodObject | (openapi3_ts_oas30.HeadersObject | openapi3_ts_oas31.HeadersObject); links?: openapi3_ts_oas30.LinksObject | openapi3_ts_oas31.LinksObject; content: Partial<Record<ZodMediaType, _asteasolutions_zod_to_openapi.ZodMediaTypeObject>> | { "application/json": { schema: z.ZodType<{ success: BooleanConstructor; result: AnyZodObject[]; }, z.ZodTypeDef, { success: BooleanConstructor; result: AnyZodObject[]; }>; }; }; }; }; }; getFilters(): Promise<ListFilters>; before(filters: ListFilters): Promise<ListFilters>; after(data: ListResult<O<typeof this.meta>>): Promise<ListResult<O<typeof this.meta>>>; list(filters: ListFilters): Promise<ListResult<O<typeof this.meta>>>; handle(...args: HandleArgs): Promise<{ result: { [x: string]: any; }[]; success: boolean; }>; } declare class UpdateEndpoint<HandleArgs extends Array<object> = Array<object>> extends OpenAPIRoute<HandleArgs> { _meta: MetaInput; get meta(): { fields: zod.AnyZodObject; model: { tableName: string; schema: zod.AnyZodObject; primaryKeys: Array<string>; serializer: ((obj: object) => object) | ((obj: any) => any); serializerSchema: zod.AnyZodObject; }; pathParameters: string[] | null; }; getSchema(): { servers?: openapi3_ts_oas30.ServerObject[] | undefined; security?: openapi3_ts_oas30.SecurityRequirementObject[] | openapi3_ts_oas31.SecurityRequirementObject[] | undefined; tags?: string[] | undefined; externalDocs?: openapi3_ts_oas30.ExternalDocumentationObject | openapi3_ts_oas31.ExternalDocumentationObject | undefined; deprecated?: boolean | undefined; description?: string | undefined; summary?: string | undefined; operationId?: string | undefined; parameters?: (openapi3_ts_oas30.ParameterObject | openapi3_ts_oas30.ReferenceObject)[] | (openapi3_ts_oas31.ParameterObject | openapi3_ts_oas31.ReferenceObject)[] | undefined; requestBody?: openapi3_ts_oas30.ReferenceObject | openapi3_ts_oas31.ReferenceObject | openapi3_ts_oas30.RequestBodyObject | openapi3_ts_oas31.RequestBodyObject | undefined; callbacks?: openapi3_ts_oas30.CallbacksObject | openapi3_ts_oas31.CallbacksObject | undefined; request: RequestTypes | { body: ZodRequestBody | { content: { "application/json": { schema: zod.ZodType<{ [x: string]: any; [x: number]: any; [x: symbol]: any; }, zod.ZodTypeDef, { [x: string]: any; [x: number]: any; [x: symbol]: any; }>; }; }; }; params: zod.AnyZodObject | zod.ZodObject<Pick<any, never>, any, any, {}, {}> | undefined; query?: zod.AnyZodObject; cookies?: zod.AnyZodObject; headers?: zod.AnyZodObject | zod.ZodType<unknown>[]; }; responses: { [statusCode: string]: ResponseConfig; } | { "200": { description: string; headers?: zod.AnyZodObject | (openapi3_ts_oas30.HeadersObject | openapi3_ts_oas31.HeadersObject); links?: openapi3_ts_oas30.LinksObject | openapi3_ts_oas31.LinksObject; content: Partial<Record<ZodMediaType, _asteasolutions_zod_to_openapi.ZodMediaTypeObject>> | { "application/json": { schema: zod.ZodType<{ success: BooleanConstructor; result: zod.AnyZodObject; }, zod.ZodTypeDef, { success: BooleanConstructor; result: zod.AnyZodObject; }>; }; }; }; }; }; getFilters(): Promise<UpdateFilters>; before(oldObj: O<typeof this.meta>, filters: UpdateFilters): Promise<UpdateFilters>; after(data: O<typeof this.meta>): Promise<O<typeof this.meta>>; getObject(filters: UpdateFilters): Promise<O<typeof this.meta> | null>; update(oldObj: O<typeof this.meta>, filters: UpdateFilters): Promise<O<typeof this.meta>>; handle(...args: HandleArgs): Promise<{ success: boolean; result: any; }>; } declare class D1CreateEndpoint<HandleArgs extends Array<object> = Array<object>> extends CreateEndpoint<HandleArgs> { dbName: string; logger?: Logger; constraintsMessages: Record<string, InputValidationException>; getDBBinding(): D1Database; create(data: O<typeof this.meta>): Promise<O<typeof this.meta>>; } declare class D1DeleteEndpoint<HandleArgs extends Array<object> = Array<object>> extends DeleteEndpoint<HandleArgs> { dbName: string; logger?: Logger; getDBBinding(): D1Database; getSafeFilters(filters: Filters): { conditions: string[]; conditionsParams: string[]; }; getObject(filters: Filters): Promise<O<typeof this.meta> | null>; delete(oldObj: O<typeof this.meta>, filters: Filters): Promise<O<typeof this.meta> | null>; } declare class D1ReadEndpoint<HandleArgs extends Array<object> = Array<object>> extends ReadEndpoint<HandleArgs> { dbName: string; logger?: Logger; getDBBinding(): D1Database; fetch(filters: ListFilters): Promise<O<typeof this.meta> | null>; } declare class D1ListEndpoint<HandleArgs extends Array<object> = Array<object>> extends ListEndpoint<HandleArgs> { dbName: string; logger?: Logger; getDBBinding(): D1Database; list(filters: ListFilters): Promise<ListResult<O<typeof this.meta>> & { result_info: object; }>; } declare class D1UpdateEndpoint<HandleArgs extends Array<object> = Array<object>> extends UpdateEndpoint<HandleArgs> { dbName: string; logger?: Logger; constraintsMessages: Record<string, InputValidationException>; getDBBinding(): D1Database; getSafeFilters(filters: UpdateFilters): { conditions: string[]; conditionsParams: string[]; }; getObject(filters: UpdateFilters): Promise<object | null>; update(oldObj: O<typeof this.meta>, filters: UpdateFilters): Promise<O<typeof this.meta>>; } export { ApiException, Arr, Bool, CreateEndpoint, D1CreateEndpoint, D1DeleteEndpoint, D1ListEndpoint, D1ReadEndpoint, D1UpdateEndpoint, DateOnly, DateTime, DeleteEndpoint, Email, Enumeration, type EnumerationParameterType, type Except, type FilterCondition, type Filters, HonoOpenAPIHandler, type HonoOpenAPIRouterType, Hostname, InputValidationException, Int, Ip, Ipv4, Ipv6, type IsEqual, IttyRouterOpenAPIHandler, type IttyRouterOpenAPIRouterType, ListEndpoint, type ListFilters, type ListResult, type Logger, type Meta, MetaGenerator, type MetaInput, type Model, type ModelComplete, MultiException, NotFoundException, Num, type O, Obj, OpenAPIHandler, type OpenAPIObjectConfig, type OpenAPIObjectConfigV31, OpenAPIRegistryMerger, OpenAPIRoute, type OpenAPIRouteSchema, type OpenAPIRouterType, type ParameterType, ReadEndpoint, Regex, type RegexParameterType, type RequestTypes, type ResponseConfig, type RouteOptions, type RouteParameter, type RouterOptions, type SetOptional, type SetRequired, type Simplify, Str, type StringParameterType, UpdateEndpoint, type UpdateFilters, Uuid, type ValidatedData, type ZodContentObject, type ZodMediaType, type ZodRequestBody, coerceInputs, contentJson, convertParams, fromHono, fromIttyRouter, getReDocUI, getSwaggerUI, isAnyZodType, isSpecificZodType, jsonResp, legacyTypeIntoZod };