@hono/zod-openapi 1.1.5 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,211 +1,195 @@
1
- import { RouteConfig as RouteConfig$1, ZodRequestBody, ZodContentObject, ZodMediaTypeObject, OpenApiGeneratorV3, OpenAPIRegistry } from '@asteasolutions/zod-to-openapi';
2
- export { extendZodWithOpenApi } from '@asteasolutions/zod-to-openapi';
3
- import { TypedResponse, Env, ValidationTargets, Context, MiddlewareHandler, Input, Handler, Schema, Hono, ToSchema } from 'hono';
4
- import { H, MergePath, MergeSchemaPath } from 'hono/types';
5
- import { InfoStatusCode, SuccessStatusCode, RedirectStatusCode, ClientErrorStatusCode, ServerErrorStatusCode, StatusCode } from 'hono/utils/http-status';
6
- import { JSONParsed, RemoveBlankRecord } from 'hono/utils/types';
7
- import { OpenAPIObject } from 'openapi3-ts/oas30';
8
- import { OpenAPIObject as OpenAPIObject$1 } from 'openapi3-ts/oas31';
9
- import { ZodType, z, ZodError } from 'zod';
10
- export { z } from 'zod';
1
+ import { OpenAPIRegistry, OpenApiGeneratorV3, RouteConfig as RouteConfig$1, ZodContentObject, ZodMediaTypeObject, ZodRequestBody, extendZodWithOpenApi } from "@asteasolutions/zod-to-openapi";
2
+ import { Context, Env, ErrorHandler, Handler, Hono, Input, MiddlewareHandler, NotFoundHandler, Schema, ToSchema, TypedResponse, ValidationTargets } from "hono";
3
+ import { H, MergePath, MergeSchemaPath } from "hono/types";
4
+ import { ClientErrorStatusCode, InfoStatusCode, RedirectStatusCode, ServerErrorStatusCode, StatusCode, SuccessStatusCode } from "hono/utils/http-status";
5
+ import { JSONParsed, RemoveBlankRecord } from "hono/utils/types";
6
+ import { OpenAPIObject } from "openapi3-ts/oas30";
7
+ import { OpenAPIObject as OpenAPIObject$1 } from "openapi3-ts/oas31";
8
+ import { ZodError, ZodType, z } from "zod";
9
+
10
+ //#region src/index.d.ts
11
11
 
12
12
  type MaybePromise<T> = Promise<T> | T;
13
13
  type RouteConfig = RouteConfig$1 & {
14
- middleware?: H | H[];
15
- hide?: boolean;
14
+ middleware?: H | H[];
15
+ hide?: boolean;
16
16
  };
17
17
  type RequestTypes = {
18
- body?: ZodRequestBody;
19
- params?: ZodType;
20
- query?: ZodType;
21
- cookies?: ZodType;
22
- headers?: ZodType | ZodType[];
18
+ body?: ZodRequestBody;
19
+ params?: ZodType;
20
+ query?: ZodType;
21
+ cookies?: ZodType;
22
+ headers?: ZodType | ZodType[];
23
23
  };
24
- type IsJson<T> = T extends string ? T extends `application/${infer Start}json${infer _End}` ? Start extends '' | `${string}+` | `vnd.${string}+` ? 'json' : never : never : never;
25
- type IsForm<T> = T extends string ? T extends `multipart/form-data${infer _Rest}` | `application/x-www-form-urlencoded${infer _Rest}` ? 'form' : never : never;
26
- type ReturnJsonOrTextOrResponse<ContentType, Content, Status extends keyof StatusCodeRangeDefinitions | StatusCode> = ContentType extends string ? ContentType extends `application/${infer Start}json${infer _End}` ? Start extends '' | `${string}+` | `vnd.${string}+` ? TypedResponse<JSONParsed<Content>, ExtractStatusCode<Status>, 'json'> : never : ContentType extends `text/plain${infer _Rest}` ? TypedResponse<Content, ExtractStatusCode<Status>, 'text'> : Response : never;
27
- type RequestPart<R extends RouteConfig, Part extends string> = Part extends keyof R['request'] ? R['request'][Part] : {};
24
+ type IsJson<T> = T extends string ? T extends `application/${infer Start}json${infer _End}` ? Start extends "" | `${string}+` | `vnd.${string}+` ? "json" : never : never : never;
25
+ type IsForm<T> = T extends string ? T extends `multipart/form-data${infer _Rest}` | `application/x-www-form-urlencoded${infer _Rest}` ? "form" : never : never;
26
+ type ReturnJsonOrTextOrResponse<ContentType, Content$1, Status$1 extends keyof StatusCodeRangeDefinitions | StatusCode> = ContentType extends string ? ContentType extends `application/${infer Start}json${infer _End}` ? Start extends "" | `${string}+` | `vnd.${string}+` ? TypedResponse<JSONParsed<Content$1>, ExtractStatusCode<Status$1>, "json"> : never : ContentType extends `text/plain${infer _Rest}` ? TypedResponse<Content$1, ExtractStatusCode<Status$1>, "text"> : Response : never;
27
+ type RequestPart<R$1 extends RouteConfig, Part extends string> = Part extends keyof R$1["request"] ? R$1["request"][Part] : {};
28
28
  type HasUndefined<T> = undefined extends T ? true : false;
29
- type InputTypeBase<R extends RouteConfig, Part extends string, Type extends keyof ValidationTargets> = R['request'] extends RequestTypes ? RequestPart<R, Part> extends ZodType ? {
30
- in: {
31
- [K in Type]: HasUndefined<ValidationTargets[K]> extends true ? {
32
- [K2 in keyof z.input<RequestPart<R, Part>>]?: z.input<RequestPart<R, Part>>[K2];
33
- } : {
34
- [K2 in keyof z.input<RequestPart<R, Part>>]: z.input<RequestPart<R, Part>>[K2];
35
- };
36
- };
37
- out: {
38
- [K in Type]: z.output<RequestPart<R, Part>>;
39
- };
29
+ type InputTypeBase<R$1 extends RouteConfig, Part extends string, Type extends keyof ValidationTargets> = R$1["request"] extends RequestTypes ? RequestPart<R$1, Part> extends ZodType ? {
30
+ in: { [K in Type]: HasUndefined<ValidationTargets[K]> extends true ? { [K2 in keyof z.input<RequestPart<R$1, Part>>]?: z.input<RequestPart<R$1, Part>>[K2] } : { [K2 in keyof z.input<RequestPart<R$1, Part>>]: z.input<RequestPart<R$1, Part>>[K2] } };
31
+ out: { [K in Type]: z.output<RequestPart<R$1, Part>> };
40
32
  } : {} : {};
41
- type InputTypeJson<R extends RouteConfig> = R['request'] extends RequestTypes ? R['request']['body'] extends ZodRequestBody ? R['request']['body']['content'] extends ZodContentObject ? IsJson<keyof R['request']['body']['content']> extends never ? {} : R['request']['body']['content'][keyof R['request']['body']['content']] extends Record<'schema', ZodType<any>> ? {
42
- in: {
43
- json: z.input<R['request']['body']['content'][keyof R['request']['body']['content']]['schema']>;
44
- };
45
- out: {
46
- json: z.output<R['request']['body']['content'][keyof R['request']['body']['content']]['schema']>;
47
- };
33
+ type InputTypeJson<R$1 extends RouteConfig> = R$1["request"] extends RequestTypes ? R$1["request"]["body"] extends ZodRequestBody ? R$1["request"]["body"]["content"] extends ZodContentObject ? IsJson<keyof R$1["request"]["body"]["content"]> extends never ? {} : R$1["request"]["body"]["content"][keyof R$1["request"]["body"]["content"]] extends Record<"schema", ZodType<any>> ? {
34
+ in: {
35
+ json: z.input<R$1["request"]["body"]["content"][keyof R$1["request"]["body"]["content"]]["schema"]>;
36
+ };
37
+ out: {
38
+ json: z.output<R$1["request"]["body"]["content"][keyof R$1["request"]["body"]["content"]]["schema"]>;
39
+ };
48
40
  } : {} : {} : {} : {};
49
- type InputTypeForm<R extends RouteConfig> = R['request'] extends RequestTypes ? R['request']['body'] extends ZodRequestBody ? R['request']['body']['content'] extends ZodContentObject ? IsForm<keyof R['request']['body']['content']> extends never ? {} : R['request']['body']['content'][keyof R['request']['body']['content']] extends Record<'schema', ZodType<any>> ? {
50
- in: {
51
- form: z.input<R['request']['body']['content'][keyof R['request']['body']['content']]['schema']>;
52
- };
53
- out: {
54
- form: z.output<R['request']['body']['content'][keyof R['request']['body']['content']]['schema']>;
55
- };
41
+ type InputTypeForm<R$1 extends RouteConfig> = R$1["request"] extends RequestTypes ? R$1["request"]["body"] extends ZodRequestBody ? R$1["request"]["body"]["content"] extends ZodContentObject ? IsForm<keyof R$1["request"]["body"]["content"]> extends never ? {} : R$1["request"]["body"]["content"][keyof R$1["request"]["body"]["content"]] extends Record<"schema", ZodType<any>> ? {
42
+ in: {
43
+ form: z.input<R$1["request"]["body"]["content"][keyof R$1["request"]["body"]["content"]]["schema"]>;
44
+ };
45
+ out: {
46
+ form: z.output<R$1["request"]["body"]["content"][keyof R$1["request"]["body"]["content"]]["schema"]>;
47
+ };
56
48
  } : {} : {} : {} : {};
57
- type InputTypeParam<R extends RouteConfig> = InputTypeBase<R, 'params', 'param'>;
58
- type InputTypeQuery<R extends RouteConfig> = InputTypeBase<R, 'query', 'query'>;
59
- type InputTypeHeader<R extends RouteConfig> = InputTypeBase<R, 'headers', 'header'>;
60
- type InputTypeCookie<R extends RouteConfig> = InputTypeBase<R, 'cookies', 'cookie'>;
61
- type ExtractContent<T> = T extends {
62
- [K in keyof T]: infer A;
63
- } ? A extends Record<'schema', ZodType> ? z.infer<A['schema']> : never : never;
49
+ type InputTypeParam<R$1 extends RouteConfig> = InputTypeBase<R$1, "params", "param">;
50
+ type InputTypeQuery<R$1 extends RouteConfig> = InputTypeBase<R$1, "query", "query">;
51
+ type InputTypeHeader<R$1 extends RouteConfig> = InputTypeBase<R$1, "headers", "header">;
52
+ type InputTypeCookie<R$1 extends RouteConfig> = InputTypeBase<R$1, "cookies", "cookie">;
53
+ type ExtractContent<T> = T extends { [K in keyof T]: infer A } ? A extends Record<"schema", ZodType> ? z.infer<A["schema"]> : never : never;
64
54
  type StatusCodeRangeDefinitions = {
65
- '1XX': InfoStatusCode;
66
- '2XX': SuccessStatusCode;
67
- '3XX': RedirectStatusCode;
68
- '4XX': ClientErrorStatusCode;
69
- '5XX': ServerErrorStatusCode;
55
+ "1XX": InfoStatusCode;
56
+ "2XX": SuccessStatusCode;
57
+ "3XX": RedirectStatusCode;
58
+ "4XX": ClientErrorStatusCode;
59
+ "5XX": ServerErrorStatusCode;
70
60
  };
71
61
  type RouteConfigStatusCode = keyof StatusCodeRangeDefinitions | StatusCode;
72
62
  type ExtractStatusCode<T extends RouteConfigStatusCode> = T extends keyof StatusCodeRangeDefinitions ? StatusCodeRangeDefinitions[T] : T;
73
- type DefinedStatusCodes<R extends RouteConfig> = keyof R['responses'] & RouteConfigStatusCode;
74
- type RouteConfigToTypedResponse<R extends RouteConfig> = {
75
- [Status in DefinedStatusCodes<R>]: R['responses'][Status] extends {
76
- content: infer Content;
77
- } ? undefined extends Content ? never : ReturnJsonOrTextOrResponse<keyof R['responses'][Status]['content'], ExtractContent<R['responses'][Status]['content']>, Status> : TypedResponse<{}, ExtractStatusCode<Status>, string>;
78
- }[DefinedStatusCodes<R>] | ('default' extends keyof R['responses'] ? R['responses']['default'] extends {
79
- content: infer Content;
80
- } ? undefined extends Content ? never : ReturnJsonOrTextOrResponse<keyof Content, ExtractContent<Content>, Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>> : TypedResponse<{}, Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R>>>, string> : never);
81
- type Hook<T, E extends Env, P extends string, R> = (result: {
82
- target: keyof ValidationTargets;
63
+ type DefinedStatusCodes<R$1 extends RouteConfig> = keyof R$1["responses"] & RouteConfigStatusCode;
64
+ type RouteConfigToTypedResponse<R$1 extends RouteConfig> = { [Status in DefinedStatusCodes<R$1>]: R$1["responses"][Status] extends {
65
+ content: infer Content;
66
+ } ? undefined extends Content ? never : ReturnJsonOrTextOrResponse<keyof R$1["responses"][Status]["content"], ExtractContent<R$1["responses"][Status]["content"]>, Status> : TypedResponse<{}, ExtractStatusCode<Status>, string> }[DefinedStatusCodes<R$1>] | ("default" extends keyof R$1["responses"] ? R$1["responses"]["default"] extends {
67
+ content: infer Content;
68
+ } ? undefined extends Content ? never : ReturnJsonOrTextOrResponse<keyof Content, ExtractContent<Content>, Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R$1>>>> : TypedResponse<{}, Exclude<StatusCode, ExtractStatusCode<DefinedStatusCodes<R$1>>>, string> : never);
69
+ type Hook<T, E$1 extends Env, P$1 extends string, R$1> = (result: {
70
+ target: keyof ValidationTargets;
83
71
  } & ({
84
- success: true;
85
- data: T;
72
+ success: true;
73
+ data: T;
86
74
  } | {
87
- success: false;
88
- error: ZodError;
89
- }), c: Context<E, P>) => R;
75
+ success: false;
76
+ error: ZodError;
77
+ }), c: Context<E$1, P$1>) => R$1;
90
78
  type ConvertPathType<T extends string> = T extends `${infer Start}/{${infer Param}}${infer Rest}` ? `${Start}/:${Param}${ConvertPathType<Rest>}` : T;
91
- type OpenAPIHonoOptions<E extends Env> = {
92
- defaultHook?: Hook<any, E, any, any>;
79
+ type OpenAPIHonoOptions<E$1 extends Env> = {
80
+ defaultHook?: Hook<any, E$1, any, any>;
93
81
  };
94
- type HonoInit<E extends Env> = ConstructorParameters<typeof Hono>[0] & OpenAPIHonoOptions<E>;
82
+ type HonoInit<E$1 extends Env> = ConstructorParameters<typeof Hono>[0] & OpenAPIHonoOptions<E$1>;
95
83
  /**
96
- * Turns `T | T[] | undefined` into `T[]`
97
- */
84
+ * Turns `T | T[] | undefined` into `T[]`
85
+ */
98
86
  type AsArray<T> = T extends undefined ? [] : T extends any[] ? T : [T];
99
87
  /**
100
- * Like simplify but recursive
101
- */
102
- type DeepSimplify<T> = {
103
- [KeyType in keyof T]: T[KeyType] extends Record<string, unknown> ? DeepSimplify<T[KeyType]> : T[KeyType];
104
- } & {};
88
+ * Like simplify but recursive
89
+ */
90
+ type DeepSimplify<T> = { [KeyType in keyof T]: T[KeyType] extends Record<string, unknown> ? DeepSimplify<T[KeyType]> : T[KeyType] } & {};
105
91
  /**
106
- * Helper to infer generics from {@link MiddlewareHandler}
107
- */
92
+ * Helper to infer generics from {@link MiddlewareHandler}
93
+ */
108
94
  type OfHandlerType<T extends MiddlewareHandler> = T extends MiddlewareHandler<infer E, infer P, infer I> ? {
109
- env: E;
110
- path: P;
111
- input: I;
95
+ env: E;
96
+ path: P;
97
+ input: I;
112
98
  } : never;
113
99
  /**
114
- * Reduce a tuple of middleware handlers into a single
115
- * handler representing the composition of all
116
- * handlers.
117
- */
118
- type MiddlewareToHandlerType<M extends MiddlewareHandler<any, any, any>[]> = M extends [
119
- infer First,
120
- infer Second,
121
- ...infer Rest
122
- ] ? First extends MiddlewareHandler<any, any, any> ? Second extends MiddlewareHandler<any, any, any> ? Rest extends MiddlewareHandler<any, any, any>[] ? MiddlewareToHandlerType<[
123
- MiddlewareHandler<DeepSimplify<OfHandlerType<First>['env'] & OfHandlerType<Second>['env']>, // Combine envs
124
- OfHandlerType<First>['path'], // Keep path from First
125
- OfHandlerType<First>['input']>,
126
- ...Rest
127
- ]> : never : never : never : M extends [infer Last] ? Last : MiddlewareHandler<Env>;
128
- type RouteMiddlewareParams<R extends RouteConfig> = OfHandlerType<MiddlewareToHandlerType<AsArray<R['middleware']>>>;
129
- type RouteConfigToEnv<R extends RouteConfig> = RouteMiddlewareParams<R> extends never ? Env : RouteMiddlewareParams<R>['env'];
130
- type RouteHandler<R extends RouteConfig, E extends Env = RouteConfigToEnv<R>, I extends Input = InputTypeParam<R> & InputTypeQuery<R> & InputTypeHeader<R> & InputTypeCookie<R> & InputTypeForm<R> & InputTypeJson<R>, P extends string = ConvertPathType<R['path']>> = Handler<E, P, I, R extends {
131
- responses: {
132
- [statusCode: number]: {
133
- content: {
134
- [mediaType: string]: ZodMediaTypeObject;
135
- };
136
- };
100
+ * Reduce a tuple of middleware handlers into a single
101
+ * handler representing the composition of all
102
+ * handlers.
103
+ */
104
+ type MiddlewareToHandlerType<M extends MiddlewareHandler<any, any, any>[]> = M extends [infer First, infer Second, ...infer Rest] ? First extends MiddlewareHandler<any, any, any> ? Second extends MiddlewareHandler<any, any, any> ? Rest extends MiddlewareHandler<any, any, any>[] ? MiddlewareToHandlerType<[MiddlewareHandler<DeepSimplify<OfHandlerType<First>["env"] & OfHandlerType<Second>["env"]>, OfHandlerType<First>["path"], OfHandlerType<First>["input"]>, ...Rest]> : never : never : never : M extends [infer Last] ? Last : MiddlewareHandler<Env>;
105
+ type RouteMiddlewareParams<R$1 extends RouteConfig> = OfHandlerType<MiddlewareToHandlerType<AsArray<R$1["middleware"]>>>;
106
+ type RouteConfigToEnv<R$1 extends RouteConfig> = RouteMiddlewareParams<R$1> extends never ? Env : RouteMiddlewareParams<R$1>["env"];
107
+ type RouteHandler<R$1 extends RouteConfig, E$1 extends Env = RouteConfigToEnv<R$1>, I$1 extends Input = InputTypeParam<R$1> & InputTypeQuery<R$1> & InputTypeHeader<R$1> & InputTypeCookie<R$1> & InputTypeForm<R$1> & InputTypeJson<R$1>, P$1 extends string = ConvertPathType<R$1["path"]>> = Handler<E$1, P$1, I$1, R$1 extends {
108
+ responses: {
109
+ [statusCode: number]: {
110
+ content: {
111
+ [mediaType: string]: ZodMediaTypeObject;
112
+ };
137
113
  };
138
- } ? MaybePromise<RouteConfigToTypedResponse<R>> : MaybePromise<RouteConfigToTypedResponse<R>> | MaybePromise<Response>>;
139
- type RouteHook<R extends RouteConfig, E extends Env = RouteConfigToEnv<R>, I extends Input = InputTypeParam<R> & InputTypeQuery<R> & InputTypeHeader<R> & InputTypeCookie<R> & InputTypeForm<R> & InputTypeJson<R>, P extends string = ConvertPathType<R['path']>> = Hook<I, E, P, RouteConfigToTypedResponse<R> | Response | Promise<Response> | void | Promise<void>>;
140
- type OpenAPIObjectConfig = Parameters<InstanceType<typeof OpenApiGeneratorV3>['generateDocument']>[0];
141
- type OpenAPIObjectConfigure<E extends Env, P extends string> = OpenAPIObjectConfig | ((context: Context<E, P>) => OpenAPIObjectConfig);
114
+ };
115
+ } ? MaybePromise<RouteConfigToTypedResponse<R$1>> : MaybePromise<RouteConfigToTypedResponse<R$1>> | MaybePromise<Response>>;
116
+ type RouteHook<R$1 extends RouteConfig, E$1 extends Env = RouteConfigToEnv<R$1>, I$1 extends Input = InputTypeParam<R$1> & InputTypeQuery<R$1> & InputTypeHeader<R$1> & InputTypeCookie<R$1> & InputTypeForm<R$1> & InputTypeJson<R$1>, P$1 extends string = ConvertPathType<R$1["path"]>> = Hook<I$1, E$1, P$1, RouteConfigToTypedResponse<R$1> | Response | Promise<Response> | void | Promise<void>>;
117
+ type OpenAPIObjectConfig = Parameters<InstanceType<typeof OpenApiGeneratorV3>["generateDocument"]>[0];
118
+ type OpenAPIObjectConfigure<E$1 extends Env, P$1 extends string> = OpenAPIObjectConfig | ((context: Context<E$1, P$1>) => OpenAPIObjectConfig);
142
119
  type OpenAPIGeneratorOptions = ConstructorParameters<typeof OpenApiGeneratorV3>[1];
143
- type OpenAPIGeneratorConfigure<E extends Env, P extends string> = OpenAPIGeneratorOptions | ((context: Context<E, P>) => OpenAPIGeneratorOptions);
144
- declare class OpenAPIHono<E extends Env = Env, S extends Schema = {}, BasePath extends string = '/'> extends Hono<E, S, BasePath> {
145
- openAPIRegistry: OpenAPIRegistry;
146
- defaultHook?: OpenAPIHonoOptions<E>['defaultHook'];
147
- constructor(init?: HonoInit<E>);
148
- /**
149
- *
150
- * @param {RouteConfig} route - The route definition which you create with `createRoute()`.
151
- * @param {Handler} handler - The handler. If you want to return a JSON object, you should specify the status code with `c.json()`.
152
- * @param {Hook} hook - Optional. The hook method defines what it should do after validation.
153
- * @example
154
- * app.openapi(
155
- * route,
156
- * (c) => {
157
- * // ...
158
- * return c.json(
159
- * {
160
- * age: 20,
161
- * name: 'Young man',
162
- * },
163
- * 200 // You should specify the status code even if it's 200.
164
- * )
165
- * },
166
- * (result, c) => {
167
- * if (!result.success) {
168
- * return c.json(
169
- * {
170
- * code: 400,
171
- * message: 'Custom Message',
172
- * },
173
- * 400
174
- * )
175
- * }
176
- * }
177
- *)
178
- */
179
- openapi: <R extends RouteConfig, I extends Input = InputTypeParam<R> & InputTypeQuery<R> & InputTypeHeader<R> & InputTypeCookie<R> & InputTypeForm<R> & InputTypeJson<R>, P extends string = ConvertPathType<R["path"]>>({ middleware: routeMiddleware, hide, ...route }: R, handler: Handler<R["middleware"] extends MiddlewareHandler[] | MiddlewareHandler ? RouteMiddlewareParams<R>["env"] & E : E, P, I, R extends {
180
- responses: {
181
- [statusCode: number]: {
182
- content: {
183
- [mediaType: string]: ZodMediaTypeObject;
184
- };
185
- };
120
+ type OpenAPIGeneratorConfigure<E$1 extends Env, P$1 extends string> = OpenAPIGeneratorOptions | ((context: Context<E$1, P$1>) => OpenAPIGeneratorOptions);
121
+ declare class OpenAPIHono<E$1 extends Env = Env, S extends Schema = {}, BasePath extends string = "/"> extends Hono<E$1, S, BasePath> {
122
+ openAPIRegistry: OpenAPIRegistry;
123
+ defaultHook?: OpenAPIHonoOptions<E$1>["defaultHook"];
124
+ constructor(init?: HonoInit<E$1>);
125
+ /**
126
+ *
127
+ * @param {RouteConfig} route - The route definition which you create with `createRoute()`.
128
+ * @param {Handler} handler - The handler. If you want to return a JSON object, you should specify the status code with `c.json()`.
129
+ * @param {Hook} hook - Optional. The hook method defines what it should do after validation.
130
+ * @example
131
+ * app.openapi(
132
+ * route,
133
+ * (c) => {
134
+ * // ...
135
+ * return c.json(
136
+ * {
137
+ * age: 20,
138
+ * name: 'Young man',
139
+ * },
140
+ * 200 // You should specify the status code even if it's 200.
141
+ * )
142
+ * },
143
+ * (result, c) => {
144
+ * if (!result.success) {
145
+ * return c.json(
146
+ * {
147
+ * code: 400,
148
+ * message: 'Custom Message',
149
+ * },
150
+ * 400
151
+ * )
152
+ * }
153
+ * }
154
+ *)
155
+ */
156
+ openapi: <R extends RouteConfig, I extends Input = InputTypeParam<R> & InputTypeQuery<R> & InputTypeHeader<R> & InputTypeCookie<R> & InputTypeForm<R> & InputTypeJson<R>, P extends string = ConvertPathType<R["path"]>>({
157
+ middleware: routeMiddleware,
158
+ hide,
159
+ ...route
160
+ }: R, handler: Handler<R["middleware"] extends MiddlewareHandler[] | MiddlewareHandler ? RouteMiddlewareParams<R>["env"] & E$1 : E$1, P, I, R extends {
161
+ responses: {
162
+ [statusCode: number]: {
163
+ content: {
164
+ [mediaType: string]: ZodMediaTypeObject;
186
165
  };
187
- } ? MaybePromise<RouteConfigToTypedResponse<R>> : MaybePromise<RouteConfigToTypedResponse<R>> | MaybePromise<Response>>, hook?: Hook<I, E, P, R extends {
188
- responses: {
189
- [statusCode: number]: {
190
- content: {
191
- [mediaType: string]: ZodMediaTypeObject;
192
- };
193
- };
166
+ };
167
+ };
168
+ } ? MaybePromise<RouteConfigToTypedResponse<R>> : MaybePromise<RouteConfigToTypedResponse<R>> | MaybePromise<Response>>, hook?: Hook<I, E$1, P, R extends {
169
+ responses: {
170
+ [statusCode: number]: {
171
+ content: {
172
+ [mediaType: string]: ZodMediaTypeObject;
194
173
  };
195
- } ? MaybePromise<RouteConfigToTypedResponse<R>> | undefined : MaybePromise<RouteConfigToTypedResponse<R>> | MaybePromise<Response> | undefined> | undefined) => OpenAPIHono<E, S & ToSchema<R["method"], MergePath<BasePath, P>, I, RouteConfigToTypedResponse<R>>, BasePath>;
196
- getOpenAPIDocument: (objectConfig: OpenAPIObjectConfig, generatorConfig?: OpenAPIGeneratorOptions) => OpenAPIObject;
197
- getOpenAPI31Document: (objectConfig: OpenAPIObjectConfig, generatorConfig?: OpenAPIGeneratorOptions) => OpenAPIObject$1;
198
- doc: <P extends string>(path: P, configureObject: OpenAPIObjectConfigure<E, P>, configureGenerator?: OpenAPIGeneratorConfigure<E, P>) => OpenAPIHono<E, S & ToSchema<"get", MergePath<BasePath, P>, {}, {}>, BasePath>;
199
- doc31: <P extends string>(path: P, configureObject: OpenAPIObjectConfigure<E, P>, configureGenerator?: OpenAPIGeneratorConfigure<E, P>) => OpenAPIHono<E, S & ToSchema<"get", MergePath<BasePath, P>, {}, {}>, BasePath>;
200
- route<SubPath extends string, SubEnv extends Env, SubSchema extends Schema, SubBasePath extends string>(path: SubPath, app: Hono<SubEnv, SubSchema, SubBasePath>): OpenAPIHono<E, MergeSchemaPath<SubSchema, MergePath<BasePath, SubPath>> & S, BasePath>;
201
- route<SubPath extends string>(path: SubPath): Hono<E, RemoveBlankRecord<S>, BasePath>;
202
- basePath<SubPath extends string>(path: SubPath): OpenAPIHono<E, S, MergePath<BasePath, SubPath>>;
174
+ };
175
+ };
176
+ } ? MaybePromise<RouteConfigToTypedResponse<R>> | undefined : MaybePromise<RouteConfigToTypedResponse<R>> | MaybePromise<Response> | undefined> | undefined) => OpenAPIHono<E$1, S & ToSchema<R["method"], MergePath<BasePath, P>, I, RouteConfigToTypedResponse<R>>, BasePath>;
177
+ getOpenAPIDocument: (objectConfig: OpenAPIObjectConfig, generatorConfig?: OpenAPIGeneratorOptions) => OpenAPIObject;
178
+ getOpenAPI31Document: (objectConfig: OpenAPIObjectConfig, generatorConfig?: OpenAPIGeneratorOptions) => OpenAPIObject$1;
179
+ doc: <P extends string>(path: P, configureObject: OpenAPIObjectConfigure<E$1, P>, configureGenerator?: OpenAPIGeneratorConfigure<E$1, P>) => OpenAPIHono<E$1, S & ToSchema<"get", MergePath<BasePath, P>, {}, {}>, BasePath>;
180
+ doc31: <P extends string>(path: P, configureObject: OpenAPIObjectConfigure<E$1, P>, configureGenerator?: OpenAPIGeneratorConfigure<E$1, P>) => OpenAPIHono<E$1, S & ToSchema<"get", MergePath<BasePath, P>, {}, {}>, BasePath>;
181
+ route<SubPath extends string, SubEnv extends Env, SubSchema extends Schema, SubBasePath extends string>(path: SubPath, app: Hono<SubEnv, SubSchema, SubBasePath>): OpenAPIHono<E$1, MergeSchemaPath<SubSchema, MergePath<BasePath, SubPath>> & S, BasePath>;
182
+ route<SubPath extends string>(path: SubPath): Hono<E$1, RemoveBlankRecord<S>, BasePath>;
183
+ basePath<SubPath extends string>(path: SubPath): OpenAPIHono<E$1, S, MergePath<BasePath, SubPath>>;
184
+ onError: (handler: ErrorHandler<E$1>) => OpenAPIHono<E$1, S, BasePath>;
185
+ notFound: (handler: NotFoundHandler<E$1>) => OpenAPIHono<E$1, S, BasePath>;
203
186
  }
204
- type RoutingPath<P extends string> = P extends `${infer Head}/{${infer Param}}${infer Tail}` ? `${Head}/:${Param}${RoutingPath<Tail>}` : P;
187
+ type RoutingPath<P$1 extends string> = P$1 extends `${infer Head}/{${infer Param}}${infer Tail}` ? `${Head}/:${Param}${RoutingPath<Tail>}` : P$1;
205
188
  declare const createRoute: <P extends string, R extends Omit<RouteConfig, "path"> & {
206
- path: P;
189
+ path: P;
207
190
  }>(routeConfig: R) => R & {
208
- getRoutingPath(): RoutingPath<R["path"]>;
191
+ getRoutingPath(): RoutingPath<R["path"]>;
209
192
  };
210
-
211
- export { type DeepSimplify, type Hook, type MiddlewareToHandlerType, type OfHandlerType, type OpenAPIGeneratorConfigure, type OpenAPIGeneratorOptions, OpenAPIHono, type OpenAPIHonoOptions, type OpenAPIObjectConfigure, type RouteConfig, type RouteConfigToEnv, type RouteConfigToTypedResponse, type RouteHandler, type RouteHook, createRoute };
193
+ //#endregion
194
+ export { DeepSimplify, Hook, MiddlewareToHandlerType, OfHandlerType, OpenAPIGeneratorConfigure, OpenAPIGeneratorOptions, OpenAPIHono, OpenAPIHonoOptions, OpenAPIObjectConfigure, RouteConfig, RouteConfigToEnv, RouteConfigToTypedResponse, RouteHandler, RouteHook, createRoute, extendZodWithOpenApi, z };
195
+ //# sourceMappingURL=index.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/index.ts"],"sourcesContent":[],"mappings":"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"}