zod-openapi-share 0.0.14 → 0.1.1

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.mts CHANGED
@@ -20,35 +20,69 @@ type ResponsesConfig = Partial<Record<StatusCode, ResponsesEntry>>;
20
20
  */
21
21
  type UserDefinedStatusCode<M extends ResponsesConfig> = Extract<StatusCode, keyof M>;
22
22
  /**
23
- * The type that identifies duplicate elements in a tuple.
24
- *
23
+ * The type that identifies duplicate elements in a tuple. \
25
24
  * If there are no duplicates, it returns an empty tuple.
26
25
  *
27
26
  * @template Elm - The type of elements in the tuple (Elm extends UserDefinedStatusCode<ResponsesConfig>).
27
+ * @extends {UserDefinedStatusCode<ResponsesConfig>}
28
28
  * @template Arr - The tuple type to check for duplicates (Arr extends Readonly<Elm[]>).
29
+ * @extends {Readonly<Elm[]>}
29
30
  * @template Seen - The tuple type that keeps track of seen elements (default is an empty tuple).
31
+ * @extends {Readonly<Elm[]>}
30
32
  * @template Duplication - The tuple type that accumulates duplicate elements (default is an empty tuple).
33
+ * @extends {Readonly<Elm[]>}
31
34
  */
32
35
  type DuplicateStatusCode<Elm extends UserDefinedStatusCode<ResponsesConfig>, Arr extends Readonly<Elm[]>, Seen extends Readonly<Elm[]> = [], Duplication extends Readonly<Elm[]> = []> = Arr extends Readonly<[infer Head extends Elm, ...infer Tail extends Elm[]]> ? Head extends Seen[number] ? DuplicateStatusCode<Elm, Tail, Seen, [...Duplication, Head]> : DuplicateStatusCode<Elm, Tail, [...Seen, Head], Duplication> : Duplication;
33
36
  /**
34
- * The type that checks for duplicates in a tuple.
37
+ * The type that checks for duplicates in a tuple. \
35
38
  * If duplicates are found, it returns `never`; otherwise, it returns `Arr`.
36
39
  *
37
40
  * @template Elm - The type of elements in the tuple (Elm extends UserDefinedStatusCode<ResponsesConfig>).
41
+ * @extends {UserDefinedStatusCode<ResponsesConfig>}
38
42
  * @template Arr - The tuple type to check for uniqueness (Arr extends Readonly<Elm[]>).
43
+ * @extends {Readonly<Elm[]>}
39
44
  * @template Seen - The tuple type that keeps track of seen elements (default is an empty tuple).
45
+ * @extends {Readonly<Elm[]>}
40
46
  */
41
47
  type UniqueTuple<Elm extends UserDefinedStatusCode<ResponsesConfig>, Arr extends Readonly<Elm[]>, Seen extends Readonly<Elm[]> = []> = Arr extends Readonly<[infer Head extends Elm, ...infer Tail extends Elm[]]> ? Head extends Seen[number] ? never : Readonly<[Head, ...UniqueTuple<Elm, Tail, [...Seen, Head]>]> : Arr;
42
48
  /**
43
49
  * The type that if Elm satisfies `Elm extends never`, it returns zod-openapi-share defined error type (`{ __error: 'Status codes have to be unique.'; __duplicate_status_codes: DuplicateStatusCode<Elm, T>;}`); otherwise, it returns `Arr`.
44
50
  *
45
51
  * @template Elm - The type of elements in the tuple (Elm extends UserDefinedStatusCode<ResponsesConfig>).
52
+ * @extends {UserDefinedStatusCode<ResponsesConfig>}
46
53
  * @template T - The tuple type to check for uniqueness (T extends Readonly<Elm[]>).
54
+ * @extends {Readonly<Elm[]>}
47
55
  */
48
56
  type NeverWrapper<Elm extends UserDefinedStatusCode<ResponsesConfig>, T extends Readonly<Elm[]>> = UniqueTuple<Elm, T> extends never ? {
49
57
  __error: 'Status codes have to be unique.';
50
58
  __duplicate_status_codes: DuplicateStatusCode<Elm, T>;
51
59
  } : UniqueTuple<Elm, T>;
60
+ /**
61
+ * The type that merges the `responses` property of a route config with user-defined status codes.
62
+ *
63
+ * @template R - The route config type (R extends RouteConfig).
64
+ * @extends {RouteConfig}
65
+ * @template M - The user-defined status codes type (M extends ResponsesConfig).
66
+ * @extends {ResponsesConfig}
67
+ * @template T - The tuple type of user-defined status codes (T extends Readonly<UserDefinedStatusCode<M>[]>).
68
+ * @extends {Readonly<UserDefinedStatusCode<M>[]>}
69
+ */
70
+ type MergeRouteResponses<R extends RouteConfig, M extends ResponsesConfig, T extends Readonly<UserDefinedStatusCode<M>[]>> = Omit<R, 'responses'> & {
71
+ responses: NonNullable<R['responses']> & Pick<M, T[number]>;
72
+ };
73
+ /**
74
+ * The interface that defines the methods of createOpenAPISchema class.
75
+ *
76
+ * @template M - The user-defined status codes type (M extends ResponsesConfig).
77
+ * @extends {ResponsesConfig}
78
+ *
79
+ * @template T - The tuple type of user-defined status codes (T extends Readonly<UserDefinedStatusCode<M>[]>).
80
+ * @extends {Readonly<UserDefinedStatusCode<M>[]>}
81
+ */
82
+ type CreateSchemaInterface<M extends ResponsesConfig> = {
83
+ createSchema<R extends RouteConfig>(route: R): R;
84
+ createSchema<R extends RouteConfig, const T extends Readonly<UserDefinedStatusCode<M>[]>>(route: R, statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>): MergeRouteResponses<R, M, T>;
85
+ };
52
86
 
53
87
  /**
54
88
  * The ZodOpenAPISchema class is a utility for creating OpenAPI schema definitions
@@ -57,7 +91,7 @@ type NeverWrapper<Elm extends UserDefinedStatusCode<ResponsesConfig>, T extends
57
91
  * @template M - The user-defined status codes type (M extends ResponsesConfig).
58
92
  * @extends {ResponsesConfig}
59
93
  */
60
- declare class ZodOpenAPISchema<M extends ResponsesConfig> {
94
+ declare class ZodOpenAPISchema<M extends ResponsesConfig> implements CreateSchemaInterface<M> {
61
95
  /**
62
96
  * The private property that holds the user-defined status codes type object (M extends ResponsesConfig).
63
97
  *
@@ -70,7 +104,6 @@ declare class ZodOpenAPISchema<M extends ResponsesConfig> {
70
104
  * The constructor to initialize the ZodOpenAPISchema class with a ResponsesConfig type object.
71
105
  *
72
106
  * @param {M} responses - The user-defined status codes type object (M extends ResponsesConfig).
73
- * @returns {ZodOpenAPISchema<M>} - An instance of ZodOpenAPISchema class.
74
107
  *
75
108
  * @example
76
109
  * ```ts
@@ -197,7 +230,7 @@ declare class ZodOpenAPISchema<M extends ResponsesConfig> {
197
230
  *
198
231
  * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.
199
232
  * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.
200
- * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.
233
+ * @returns {MergeRouteResponses<R, M, T>} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.
201
234
  *
202
235
  * @example
203
236
  * ```ts
@@ -260,7 +293,7 @@ declare class ZodOpenAPISchema<M extends ResponsesConfig> {
260
293
  * );
261
294
  * ```
262
295
  */
263
- createSchema<R extends RouteConfig, T extends Readonly<UserDefinedStatusCode<M>[]>>(route: R, statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>): R;
296
+ createSchema<R extends RouteConfig, const T extends Readonly<UserDefinedStatusCode<M>[]>>(route: R, statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>): MergeRouteResponses<R, M, T>;
264
297
  }
265
298
 
266
- export { type DuplicateStatusCode, type NeverWrapper, type ResponsesConfig, type ResponsesEntry, type StatusCode, type UniqueTuple, type UserDefinedStatusCode, ZodOpenAPISchema };
299
+ export { type CreateSchemaInterface, type DuplicateStatusCode, type MergeRouteResponses, type NeverWrapper, type ResponsesConfig, type ResponsesEntry, type StatusCode, type UniqueTuple, type UserDefinedStatusCode, ZodOpenAPISchema };
package/dist/index.d.ts CHANGED
@@ -20,35 +20,69 @@ type ResponsesConfig = Partial<Record<StatusCode, ResponsesEntry>>;
20
20
  */
21
21
  type UserDefinedStatusCode<M extends ResponsesConfig> = Extract<StatusCode, keyof M>;
22
22
  /**
23
- * The type that identifies duplicate elements in a tuple.
24
- *
23
+ * The type that identifies duplicate elements in a tuple. \
25
24
  * If there are no duplicates, it returns an empty tuple.
26
25
  *
27
26
  * @template Elm - The type of elements in the tuple (Elm extends UserDefinedStatusCode<ResponsesConfig>).
27
+ * @extends {UserDefinedStatusCode<ResponsesConfig>}
28
28
  * @template Arr - The tuple type to check for duplicates (Arr extends Readonly<Elm[]>).
29
+ * @extends {Readonly<Elm[]>}
29
30
  * @template Seen - The tuple type that keeps track of seen elements (default is an empty tuple).
31
+ * @extends {Readonly<Elm[]>}
30
32
  * @template Duplication - The tuple type that accumulates duplicate elements (default is an empty tuple).
33
+ * @extends {Readonly<Elm[]>}
31
34
  */
32
35
  type DuplicateStatusCode<Elm extends UserDefinedStatusCode<ResponsesConfig>, Arr extends Readonly<Elm[]>, Seen extends Readonly<Elm[]> = [], Duplication extends Readonly<Elm[]> = []> = Arr extends Readonly<[infer Head extends Elm, ...infer Tail extends Elm[]]> ? Head extends Seen[number] ? DuplicateStatusCode<Elm, Tail, Seen, [...Duplication, Head]> : DuplicateStatusCode<Elm, Tail, [...Seen, Head], Duplication> : Duplication;
33
36
  /**
34
- * The type that checks for duplicates in a tuple.
37
+ * The type that checks for duplicates in a tuple. \
35
38
  * If duplicates are found, it returns `never`; otherwise, it returns `Arr`.
36
39
  *
37
40
  * @template Elm - The type of elements in the tuple (Elm extends UserDefinedStatusCode<ResponsesConfig>).
41
+ * @extends {UserDefinedStatusCode<ResponsesConfig>}
38
42
  * @template Arr - The tuple type to check for uniqueness (Arr extends Readonly<Elm[]>).
43
+ * @extends {Readonly<Elm[]>}
39
44
  * @template Seen - The tuple type that keeps track of seen elements (default is an empty tuple).
45
+ * @extends {Readonly<Elm[]>}
40
46
  */
41
47
  type UniqueTuple<Elm extends UserDefinedStatusCode<ResponsesConfig>, Arr extends Readonly<Elm[]>, Seen extends Readonly<Elm[]> = []> = Arr extends Readonly<[infer Head extends Elm, ...infer Tail extends Elm[]]> ? Head extends Seen[number] ? never : Readonly<[Head, ...UniqueTuple<Elm, Tail, [...Seen, Head]>]> : Arr;
42
48
  /**
43
49
  * The type that if Elm satisfies `Elm extends never`, it returns zod-openapi-share defined error type (`{ __error: 'Status codes have to be unique.'; __duplicate_status_codes: DuplicateStatusCode<Elm, T>;}`); otherwise, it returns `Arr`.
44
50
  *
45
51
  * @template Elm - The type of elements in the tuple (Elm extends UserDefinedStatusCode<ResponsesConfig>).
52
+ * @extends {UserDefinedStatusCode<ResponsesConfig>}
46
53
  * @template T - The tuple type to check for uniqueness (T extends Readonly<Elm[]>).
54
+ * @extends {Readonly<Elm[]>}
47
55
  */
48
56
  type NeverWrapper<Elm extends UserDefinedStatusCode<ResponsesConfig>, T extends Readonly<Elm[]>> = UniqueTuple<Elm, T> extends never ? {
49
57
  __error: 'Status codes have to be unique.';
50
58
  __duplicate_status_codes: DuplicateStatusCode<Elm, T>;
51
59
  } : UniqueTuple<Elm, T>;
60
+ /**
61
+ * The type that merges the `responses` property of a route config with user-defined status codes.
62
+ *
63
+ * @template R - The route config type (R extends RouteConfig).
64
+ * @extends {RouteConfig}
65
+ * @template M - The user-defined status codes type (M extends ResponsesConfig).
66
+ * @extends {ResponsesConfig}
67
+ * @template T - The tuple type of user-defined status codes (T extends Readonly<UserDefinedStatusCode<M>[]>).
68
+ * @extends {Readonly<UserDefinedStatusCode<M>[]>}
69
+ */
70
+ type MergeRouteResponses<R extends RouteConfig, M extends ResponsesConfig, T extends Readonly<UserDefinedStatusCode<M>[]>> = Omit<R, 'responses'> & {
71
+ responses: NonNullable<R['responses']> & Pick<M, T[number]>;
72
+ };
73
+ /**
74
+ * The interface that defines the methods of createOpenAPISchema class.
75
+ *
76
+ * @template M - The user-defined status codes type (M extends ResponsesConfig).
77
+ * @extends {ResponsesConfig}
78
+ *
79
+ * @template T - The tuple type of user-defined status codes (T extends Readonly<UserDefinedStatusCode<M>[]>).
80
+ * @extends {Readonly<UserDefinedStatusCode<M>[]>}
81
+ */
82
+ type CreateSchemaInterface<M extends ResponsesConfig> = {
83
+ createSchema<R extends RouteConfig>(route: R): R;
84
+ createSchema<R extends RouteConfig, const T extends Readonly<UserDefinedStatusCode<M>[]>>(route: R, statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>): MergeRouteResponses<R, M, T>;
85
+ };
52
86
 
53
87
  /**
54
88
  * The ZodOpenAPISchema class is a utility for creating OpenAPI schema definitions
@@ -57,7 +91,7 @@ type NeverWrapper<Elm extends UserDefinedStatusCode<ResponsesConfig>, T extends
57
91
  * @template M - The user-defined status codes type (M extends ResponsesConfig).
58
92
  * @extends {ResponsesConfig}
59
93
  */
60
- declare class ZodOpenAPISchema<M extends ResponsesConfig> {
94
+ declare class ZodOpenAPISchema<M extends ResponsesConfig> implements CreateSchemaInterface<M> {
61
95
  /**
62
96
  * The private property that holds the user-defined status codes type object (M extends ResponsesConfig).
63
97
  *
@@ -70,7 +104,6 @@ declare class ZodOpenAPISchema<M extends ResponsesConfig> {
70
104
  * The constructor to initialize the ZodOpenAPISchema class with a ResponsesConfig type object.
71
105
  *
72
106
  * @param {M} responses - The user-defined status codes type object (M extends ResponsesConfig).
73
- * @returns {ZodOpenAPISchema<M>} - An instance of ZodOpenAPISchema class.
74
107
  *
75
108
  * @example
76
109
  * ```ts
@@ -197,7 +230,7 @@ declare class ZodOpenAPISchema<M extends ResponsesConfig> {
197
230
  *
198
231
  * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.
199
232
  * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.
200
- * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.
233
+ * @returns {MergeRouteResponses<R, M, T>} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.
201
234
  *
202
235
  * @example
203
236
  * ```ts
@@ -260,7 +293,7 @@ declare class ZodOpenAPISchema<M extends ResponsesConfig> {
260
293
  * );
261
294
  * ```
262
295
  */
263
- createSchema<R extends RouteConfig, T extends Readonly<UserDefinedStatusCode<M>[]>>(route: R, statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>): R;
296
+ createSchema<R extends RouteConfig, const T extends Readonly<UserDefinedStatusCode<M>[]>>(route: R, statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>): MergeRouteResponses<R, M, T>;
264
297
  }
265
298
 
266
- export { type DuplicateStatusCode, type NeverWrapper, type ResponsesConfig, type ResponsesEntry, type StatusCode, type UniqueTuple, type UserDefinedStatusCode, ZodOpenAPISchema };
299
+ export { type CreateSchemaInterface, type DuplicateStatusCode, type MergeRouteResponses, type NeverWrapper, type ResponsesConfig, type ResponsesEntry, type StatusCode, type UniqueTuple, type UserDefinedStatusCode, ZodOpenAPISchema };
package/dist/index.js CHANGED
@@ -37,7 +37,6 @@ var ZodOpenAPISchema = class {
37
37
  * The constructor to initialize the ZodOpenAPISchema class with a ResponsesConfig type object.
38
38
  *
39
39
  * @param {M} responses - The user-defined status codes type object (M extends ResponsesConfig).
40
- * @returns {ZodOpenAPISchema<M>} - An instance of ZodOpenAPISchema class.
41
40
  *
42
41
  * @example
43
42
  * ```ts
@@ -86,8 +85,8 @@ var ZodOpenAPISchema = class {
86
85
  * @extends {Readonly<UserDefinedStatusCode<M>[]>}
87
86
  *
88
87
  * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.
89
- * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.
90
- * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.
88
+ * @param {NeverWrapper<UserDefinedStatusCode<M>, T>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.
89
+ * @returns {MergeRouteResponses<R, M, T>} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.
91
90
  *
92
91
  * @example
93
92
  * ```ts
@@ -150,7 +149,7 @@ var ZodOpenAPISchema = class {
150
149
  * ```
151
150
  */
152
151
  createSchema(route, statusCodes) {
153
- if (statusCodes) {
152
+ if (statusCodes !== void 0) {
154
153
  const extraResponses = {};
155
154
  for (const statusCode of statusCodes) {
156
155
  const response = this.responses[statusCode];
@@ -162,7 +161,7 @@ var ZodOpenAPISchema = class {
162
161
  ...route,
163
162
  responses: {
164
163
  ...extraResponses,
165
- ...route.responses
164
+ ...route.responses ?? {}
166
165
  }
167
166
  };
168
167
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/lib/schema.ts"],"sourcesContent":["export type {\n DuplicateStatusCode,\n StatusCode,\n ResponsesEntry,\n ResponsesConfig,\n UserDefinedStatusCode,\n UniqueTuple,\n NeverWrapper,\n} from './lib/types.js';\n\nexport { ZodOpenAPISchema } from './lib/schema.js';\n","import type { RouteConfig } from '@hono/zod-openapi';\nimport type { NeverWrapper, ResponsesConfig, UniqueTuple, UserDefinedStatusCode } from './types';\n\n/**\n * The ZodOpenAPISchema class is a utility for creating OpenAPI schema definitions\n *\n * @author Yuki Osada <r.rstudio.c@gmail.com>\n * @template M - The user-defined status codes type (M extends ResponsesConfig).\n * @extends {ResponsesConfig}\n */\nexport class ZodOpenAPISchema<M extends ResponsesConfig> {\n /**\n * The private property that holds the user-defined status codes type object (M extends ResponsesConfig).\n *\n * @readonly\n * @private\n * @type {Readonly<M>}\n */\n private responses: Readonly<M>;\n\n /**\n * The constructor to initialize the ZodOpenAPISchema class with a ResponsesConfig type object.\n *\n * @param {M} responses - The user-defined status codes type object (M extends ResponsesConfig).\n * @returns {ZodOpenAPISchema<M>} - An instance of ZodOpenAPISchema class.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * export const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * ```\n */\n constructor(responses: M) {\n this.responses = responses;\n }\n\n /**\n * Overload signatures for createSchema method.\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n */\n /**\n * `statusCodes` argument omitted\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * }\n * \\/\\/ You can omit the `statusCodes` argument here\n * );\n * ```\n */\n createSchema<R extends RouteConfig>(route: R): R;\n /**\n * `statusCodes` argument included\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.\n * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * },\n * [400, 500] \\/\\/ This argument is the `statusCodes`\n * );\n * ```\n */\n createSchema<R extends RouteConfig, T extends Readonly<UserDefinedStatusCode<M>[]>>(\n route: R,\n statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>\n ): R;\n\n /**\n * Create a new RouteConfig type object by adding specified status codes to the responses of the given route.\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.\n * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * },\n * [400, 500]\n * );\n * ```\n */\n createSchema<R extends RouteConfig, T extends Readonly<UserDefinedStatusCode<M>[]>>(\n route: R,\n statusCodes?: UniqueTuple<UserDefinedStatusCode<M>, T>\n ): R {\n if (statusCodes) {\n const extraResponses: ResponsesConfig = {};\n // Collect responses for the specified status codes\n for (const statusCode of statusCodes) {\n const response = this.responses[statusCode];\n // Add only status codes that are defined by the user.\n if (response) {\n extraResponses[statusCode] = response;\n }\n }\n\n return {\n ...route,\n responses: {\n ...extraResponses,\n ...route.responses,\n },\n } as R;\n }\n // When no status codes are provided, return the route as is.\n return route;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACUO,IAAM,mBAAN,MAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2CR,YAAY,WAAc;AACxB,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuOA,aACE,OACA,aACG;AACH,QAAI,aAAa;AACf,YAAM,iBAAkC,CAAC;AAEzC,iBAAW,cAAc,aAAa;AACpC,cAAM,WAAW,KAAK,UAAU,UAAU;AAE1C,YAAI,UAAU;AACZ,yBAAe,UAAU,IAAI;AAAA,QAC/B;AAAA,MACF;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAW;AAAA,UACT,GAAG;AAAA,UACH,GAAG,MAAM;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/lib/schema.ts"],"sourcesContent":["export type {\n DuplicateStatusCode,\n StatusCode,\n ResponsesEntry,\n ResponsesConfig,\n UserDefinedStatusCode,\n UniqueTuple,\n NeverWrapper,\n MergeRouteResponses,\n CreateSchemaInterface,\n} from './lib/types.js';\n\nexport { ZodOpenAPISchema } from './lib/schema.js';\n","import type { RouteConfig } from '@hono/zod-openapi';\nimport type {\n CreateSchemaInterface,\n MergeRouteResponses,\n NeverWrapper,\n ResponsesConfig,\n UniqueTuple,\n UserDefinedStatusCode,\n} from './types';\n\n/**\n * The ZodOpenAPISchema class is a utility for creating OpenAPI schema definitions\n *\n * @author Yuki Osada <r.rstudio.c@gmail.com>\n * @template M - The user-defined status codes type (M extends ResponsesConfig).\n * @extends {ResponsesConfig}\n */\nexport class ZodOpenAPISchema<M extends ResponsesConfig> implements CreateSchemaInterface<M> {\n /**\n * The private property that holds the user-defined status codes type object (M extends ResponsesConfig).\n *\n * @readonly\n * @private\n * @type {Readonly<M>}\n */\n private responses: Readonly<M>;\n\n /**\n * The constructor to initialize the ZodOpenAPISchema class with a ResponsesConfig type object.\n *\n * @param {M} responses - The user-defined status codes type object (M extends ResponsesConfig).\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * export const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * ```\n */\n constructor(responses: M) {\n this.responses = responses;\n }\n\n /**\n * Overload signatures for createSchema method.\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n */\n /**\n * `statusCodes` argument omitted\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * }\n * \\/\\/ You can omit the `statusCodes` argument here\n * );\n * ```\n */\n createSchema<R extends RouteConfig>(route: R): R;\n /**\n * `statusCodes` argument included\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.\n * @returns {MergeRouteResponses<R, M, T>} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * },\n * [400, 500] \\/\\/ This argument is the `statusCodes`\n * );\n * ```\n */\n createSchema<R extends RouteConfig, const T extends Readonly<UserDefinedStatusCode<M>[]>>(\n route: R,\n statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>\n ): MergeRouteResponses<R, M, T>;\n\n /**\n * Create a new RouteConfig type object by adding specified status codes to the responses of the given route.\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @param {NeverWrapper<UserDefinedStatusCode<M>, T>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.\n * @returns {MergeRouteResponses<R, M, T>} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * },\n * [400, 500]\n * );\n * ```\n */\n createSchema<R extends RouteConfig, const T extends Readonly<UserDefinedStatusCode<M>[]>>(\n route: R,\n statusCodes?: UniqueTuple<UserDefinedStatusCode<M>, T>\n ): R | MergeRouteResponses<R, M, T> {\n if (statusCodes !== undefined) {\n const extraResponses: Partial<Pick<M, T[number]>> = {};\n // Collect responses for the specified status codes\n for (const statusCode of statusCodes) {\n const response = this.responses[statusCode];\n // Add only status codes that are defined by the user.\n if (response) {\n extraResponses[statusCode as T[number]] = response;\n }\n }\n\n return {\n ...route,\n responses: {\n ...extraResponses,\n ...(route.responses ?? {}),\n },\n } as any;\n }\n // When no status codes are provided, return the route as is.\n return route;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACiBO,IAAM,mBAAN,MAAsF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0CR,YAAY,WAAc;AACxB,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuOA,aACE,OACA,aACkC;AAClC,QAAI,gBAAgB,QAAW;AAC7B,YAAM,iBAA8C,CAAC;AAErD,iBAAW,cAAc,aAAa;AACpC,cAAM,WAAW,KAAK,UAAU,UAAU;AAE1C,YAAI,UAAU;AACZ,yBAAe,UAAuB,IAAI;AAAA,QAC5C;AAAA,MACF;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAW;AAAA,UACT,GAAG;AAAA,UACH,GAAI,MAAM,aAAa,CAAC;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
package/dist/index.mjs CHANGED
@@ -12,7 +12,6 @@ var ZodOpenAPISchema = class {
12
12
  * The constructor to initialize the ZodOpenAPISchema class with a ResponsesConfig type object.
13
13
  *
14
14
  * @param {M} responses - The user-defined status codes type object (M extends ResponsesConfig).
15
- * @returns {ZodOpenAPISchema<M>} - An instance of ZodOpenAPISchema class.
16
15
  *
17
16
  * @example
18
17
  * ```ts
@@ -61,8 +60,8 @@ var ZodOpenAPISchema = class {
61
60
  * @extends {Readonly<UserDefinedStatusCode<M>[]>}
62
61
  *
63
62
  * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.
64
- * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.
65
- * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.
63
+ * @param {NeverWrapper<UserDefinedStatusCode<M>, T>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.
64
+ * @returns {MergeRouteResponses<R, M, T>} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.
66
65
  *
67
66
  * @example
68
67
  * ```ts
@@ -125,7 +124,7 @@ var ZodOpenAPISchema = class {
125
124
  * ```
126
125
  */
127
126
  createSchema(route, statusCodes) {
128
- if (statusCodes) {
127
+ if (statusCodes !== void 0) {
129
128
  const extraResponses = {};
130
129
  for (const statusCode of statusCodes) {
131
130
  const response = this.responses[statusCode];
@@ -137,7 +136,7 @@ var ZodOpenAPISchema = class {
137
136
  ...route,
138
137
  responses: {
139
138
  ...extraResponses,
140
- ...route.responses
139
+ ...route.responses ?? {}
141
140
  }
142
141
  };
143
142
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/schema.ts"],"sourcesContent":["import type { RouteConfig } from '@hono/zod-openapi';\nimport type { NeverWrapper, ResponsesConfig, UniqueTuple, UserDefinedStatusCode } from './types';\n\n/**\n * The ZodOpenAPISchema class is a utility for creating OpenAPI schema definitions\n *\n * @author Yuki Osada <r.rstudio.c@gmail.com>\n * @template M - The user-defined status codes type (M extends ResponsesConfig).\n * @extends {ResponsesConfig}\n */\nexport class ZodOpenAPISchema<M extends ResponsesConfig> {\n /**\n * The private property that holds the user-defined status codes type object (M extends ResponsesConfig).\n *\n * @readonly\n * @private\n * @type {Readonly<M>}\n */\n private responses: Readonly<M>;\n\n /**\n * The constructor to initialize the ZodOpenAPISchema class with a ResponsesConfig type object.\n *\n * @param {M} responses - The user-defined status codes type object (M extends ResponsesConfig).\n * @returns {ZodOpenAPISchema<M>} - An instance of ZodOpenAPISchema class.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * export const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * ```\n */\n constructor(responses: M) {\n this.responses = responses;\n }\n\n /**\n * Overload signatures for createSchema method.\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n */\n /**\n * `statusCodes` argument omitted\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * }\n * \\/\\/ You can omit the `statusCodes` argument here\n * );\n * ```\n */\n createSchema<R extends RouteConfig>(route: R): R;\n /**\n * `statusCodes` argument included\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.\n * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * },\n * [400, 500] \\/\\/ This argument is the `statusCodes`\n * );\n * ```\n */\n createSchema<R extends RouteConfig, T extends Readonly<UserDefinedStatusCode<M>[]>>(\n route: R,\n statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>\n ): R;\n\n /**\n * Create a new RouteConfig type object by adding specified status codes to the responses of the given route.\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.\n * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * },\n * [400, 500]\n * );\n * ```\n */\n createSchema<R extends RouteConfig, T extends Readonly<UserDefinedStatusCode<M>[]>>(\n route: R,\n statusCodes?: UniqueTuple<UserDefinedStatusCode<M>, T>\n ): R {\n if (statusCodes) {\n const extraResponses: ResponsesConfig = {};\n // Collect responses for the specified status codes\n for (const statusCode of statusCodes) {\n const response = this.responses[statusCode];\n // Add only status codes that are defined by the user.\n if (response) {\n extraResponses[statusCode] = response;\n }\n }\n\n return {\n ...route,\n responses: {\n ...extraResponses,\n ...route.responses,\n },\n } as R;\n }\n // When no status codes are provided, return the route as is.\n return route;\n }\n}\n"],"mappings":";AAUO,IAAM,mBAAN,MAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2CR,YAAY,WAAc;AACxB,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuOA,aACE,OACA,aACG;AACH,QAAI,aAAa;AACf,YAAM,iBAAkC,CAAC;AAEzC,iBAAW,cAAc,aAAa;AACpC,cAAM,WAAW,KAAK,UAAU,UAAU;AAE1C,YAAI,UAAU;AACZ,yBAAe,UAAU,IAAI;AAAA,QAC/B;AAAA,MACF;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAW;AAAA,UACT,GAAG;AAAA,UACH,GAAG,MAAM;AAAA,QACX;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
1
+ {"version":3,"sources":["../src/lib/schema.ts"],"sourcesContent":["import type { RouteConfig } from '@hono/zod-openapi';\nimport type {\n CreateSchemaInterface,\n MergeRouteResponses,\n NeverWrapper,\n ResponsesConfig,\n UniqueTuple,\n UserDefinedStatusCode,\n} from './types';\n\n/**\n * The ZodOpenAPISchema class is a utility for creating OpenAPI schema definitions\n *\n * @author Yuki Osada <r.rstudio.c@gmail.com>\n * @template M - The user-defined status codes type (M extends ResponsesConfig).\n * @extends {ResponsesConfig}\n */\nexport class ZodOpenAPISchema<M extends ResponsesConfig> implements CreateSchemaInterface<M> {\n /**\n * The private property that holds the user-defined status codes type object (M extends ResponsesConfig).\n *\n * @readonly\n * @private\n * @type {Readonly<M>}\n */\n private responses: Readonly<M>;\n\n /**\n * The constructor to initialize the ZodOpenAPISchema class with a ResponsesConfig type object.\n *\n * @param {M} responses - The user-defined status codes type object (M extends ResponsesConfig).\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * export const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * ```\n */\n constructor(responses: M) {\n this.responses = responses;\n }\n\n /**\n * Overload signatures for createSchema method.\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n */\n /**\n * `statusCodes` argument omitted\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @returns {R} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * }\n * \\/\\/ You can omit the `statusCodes` argument here\n * );\n * ```\n */\n createSchema<R extends RouteConfig>(route: R): R;\n /**\n * `statusCodes` argument included\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @param {Readonly<UserDefinedStatusCode<M>[]>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.\n * @returns {MergeRouteResponses<R, M, T>} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * },\n * [400, 500] \\/\\/ This argument is the `statusCodes`\n * );\n * ```\n */\n createSchema<R extends RouteConfig, const T extends Readonly<UserDefinedStatusCode<M>[]>>(\n route: R,\n statusCodes: NeverWrapper<UserDefinedStatusCode<M>, T>\n ): MergeRouteResponses<R, M, T>;\n\n /**\n * Create a new RouteConfig type object by adding specified status codes to the responses of the given route.\n *\n * @template R - The route config type (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @extends {RouteConfig}\n * @template T - The readonly array of unique user-defined status codes type (M extends ResponsesConfig).\n * @extends {Readonly<UserDefinedStatusCode<M>[]>}\n *\n * @param {R} route - Route config (R extends RouteConfig). This type is provided by @hono/zod-openapi.\n * @param {NeverWrapper<UserDefinedStatusCode<M>, T>} statusCodes - Optional array of unique status codes (only user-defined ones) to be added to the route.\n * @returns {MergeRouteResponses<R, M, T>} - The route config type (R extends RouteConfig) with the specified status codes added to the responses. This type is provided by @hono/zod-openapi.\n *\n * @example\n * ```ts\n * import { z } from '@hono/zod-openapi';\n * import { ZodOpenAPISchema } from 'zod-openapi-share';\n *\n * const ContentlyStatusCodeArray = [\n * 100, 102, 103, 200, 201, 202, 203, 206, 207, 208, 226, 300, 301, 302, 303, 305, 306, 307, 308, 400, 401, 402, 403,\n * 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 421, 422, 423, 424, 425, 426, 428, 429,\n * 431, 451, 500, 501, 502, 503, 504, 505, 506, 507, 508, 510, 511, -1,\n * ] as const;\n *\n * const errorResponseSchema = z.object({\n * status: z.union(ContentlyStatusCodeArray.map((code) => z.literal(code))).meta({\n * example: 400,\n * description: 'HTTP Status Code',\n * }),\n * message: z.string().min(1).meta({\n * example: 'Bad Request',\n * description: 'Error Message',\n * }),\n * });\n *\n * const route = new ZodOpenAPISchema({\n * 400: {\n * description: 'Bad Request',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * 500: {\n * description: 'Internal Server Error',\n * content: { 'application/json': { schema: errorResponseSchema } },\n * },\n * } as const);\n *\n * const responseBodySchema = z.object({\n * result: z.string().meta({\n * example: 'Hello World!',\n * description: 'Sample Endpoint Response',\n * }),\n * });\n *\n * const rootRoute = route.createSchema(\n * {\n * path: '/',\n * method: 'get',\n * description: 'Sample Endpoint',\n * responses: {\n * 200: {\n * description: 'OK',\n * content: {\n * 'application/json': {\n * schema: responseBodySchema,\n * },\n * },\n * },\n * },\n * },\n * [400, 500]\n * );\n * ```\n */\n createSchema<R extends RouteConfig, const T extends Readonly<UserDefinedStatusCode<M>[]>>(\n route: R,\n statusCodes?: UniqueTuple<UserDefinedStatusCode<M>, T>\n ): R | MergeRouteResponses<R, M, T> {\n if (statusCodes !== undefined) {\n const extraResponses: Partial<Pick<M, T[number]>> = {};\n // Collect responses for the specified status codes\n for (const statusCode of statusCodes) {\n const response = this.responses[statusCode];\n // Add only status codes that are defined by the user.\n if (response) {\n extraResponses[statusCode as T[number]] = response;\n }\n }\n\n return {\n ...route,\n responses: {\n ...extraResponses,\n ...(route.responses ?? {}),\n },\n } as any;\n }\n // When no status codes are provided, return the route as is.\n return route;\n }\n}\n"],"mappings":";AAiBO,IAAM,mBAAN,MAAsF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA0CR,YAAY,WAAc;AACxB,SAAK,YAAY;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuOA,aACE,OACA,aACkC;AAClC,QAAI,gBAAgB,QAAW;AAC7B,YAAM,iBAA8C,CAAC;AAErD,iBAAW,cAAc,aAAa;AACpC,cAAM,WAAW,KAAK,UAAU,UAAU;AAE1C,YAAI,UAAU;AACZ,yBAAe,UAAuB,IAAI;AAAA,QAC5C;AAAA,MACF;AAEA,aAAO;AAAA,QACL,GAAG;AAAA,QACH,WAAW;AAAA,UACT,GAAG;AAAA,UACH,GAAI,MAAM,aAAa,CAAC;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zod-openapi-share",
3
- "version": "0.0.14",
3
+ "version": "0.1.1",
4
4
  "description": "This package is an extension package for @hono/zod-openapi.",
5
5
  "keywords": [
6
6
  "@hono/zod-openapi",