hono 4.4.10 → 4.4.12

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.
Files changed (44) hide show
  1. package/dist/adapter/aws-lambda/handler.js +1 -1
  2. package/dist/cjs/adapter/aws-lambda/handler.js +1 -1
  3. package/dist/cjs/client/client.js +6 -2
  4. package/dist/cjs/helper/streaming/sse.js +3 -1
  5. package/dist/cjs/helper/streaming/stream.js +3 -1
  6. package/dist/cjs/jsx/base.js +1 -0
  7. package/dist/cjs/utils/stream.js +2 -0
  8. package/dist/cjs/validator/validator.js +25 -24
  9. package/dist/client/client.js +6 -2
  10. package/dist/helper/streaming/sse.js +3 -1
  11. package/dist/helper/streaming/stream.js +3 -1
  12. package/dist/jsx/base.js +1 -0
  13. package/dist/types/context.d.ts +20 -20
  14. package/dist/types/hono-base.d.ts +11 -11
  15. package/dist/types/http-exception.d.ts +1 -1
  16. package/dist/types/jsx/intrinsic-elements.d.ts +2 -2
  17. package/dist/types/middleware/basic-auth/index.d.ts +1 -1
  18. package/dist/types/middleware/bearer-auth/index.d.ts +1 -1
  19. package/dist/types/middleware/body-limit/index.d.ts +1 -1
  20. package/dist/types/middleware/cache/index.d.ts +1 -1
  21. package/dist/types/middleware/compress/index.d.ts +1 -1
  22. package/dist/types/middleware/cors/index.d.ts +1 -1
  23. package/dist/types/middleware/csrf/index.d.ts +1 -1
  24. package/dist/types/middleware/etag/index.d.ts +1 -1
  25. package/dist/types/middleware/jsx-renderer/index.d.ts +1 -1
  26. package/dist/types/middleware/jwt/jwt.d.ts +1 -1
  27. package/dist/types/middleware/logger/index.d.ts +1 -1
  28. package/dist/types/middleware/method-override/index.d.ts +1 -1
  29. package/dist/types/middleware/pretty-json/index.d.ts +1 -1
  30. package/dist/types/middleware/secure-headers/secure-headers.d.ts +1 -1
  31. package/dist/types/middleware/timing/timing.d.ts +1 -1
  32. package/dist/types/middleware/trailing-slash/index.d.ts +2 -2
  33. package/dist/types/request.d.ts +17 -17
  34. package/dist/types/types.d.ts +86 -27
  35. package/dist/types/utils/jwt/jwa.d.ts +5 -0
  36. package/dist/types/utils/jwt/jws.d.ts +5 -0
  37. package/dist/types/utils/jwt/jwt.d.ts +5 -0
  38. package/dist/types/utils/jwt/types.d.ts +4 -0
  39. package/dist/types/utils/jwt/utf8.d.ts +4 -0
  40. package/dist/types/utils/stream.d.ts +4 -0
  41. package/dist/types/utils/types.d.ts +15 -3
  42. package/dist/utils/stream.js +2 -0
  43. package/dist/validator/validator.js +25 -24
  44. package/package.json +1 -1
@@ -6,7 +6,7 @@ import type { MiddlewareHandler } from '../../types';
6
6
  /**
7
7
  * Trailing Slash Middleware for Hono.
8
8
  *
9
- * @see {@link https://hono.dev/middleware/builtin/trailing-slash}
9
+ * @see {@link https://hono.dev/docs/middleware/builtin/trailing-slash}
10
10
  *
11
11
  * @returns {MiddlewareHandler} The middleware handler function.
12
12
  *
@@ -23,7 +23,7 @@ export declare const trimTrailingSlash: () => MiddlewareHandler;
23
23
  * Append trailing slash middleware for Hono.
24
24
  * Append a trailing slash to the URL if it doesn't have one. For example, `/path/to/page` will be redirected to `/path/to/page/`.
25
25
  *
26
- * @see {@link https://hono.dev/middleware/builtin/trailing-slash}
26
+ * @see {@link https://hono.dev/docs/middleware/builtin/trailing-slash}
27
27
  *
28
28
  * @returns {MiddlewareHandler} The middleware handler function.
29
29
  *
@@ -17,7 +17,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
17
17
  /**
18
18
  * `.raw` can get the raw Request object.
19
19
  *
20
- * @see {@link https://hono.dev/api/request#raw}
20
+ * @see {@link https://hono.dev/docs/api/request#raw}
21
21
  *
22
22
  * @example
23
23
  * ```ts
@@ -33,7 +33,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
33
33
  /**
34
34
  * `.path` can get the pathname of the request.
35
35
  *
36
- * @see {@link https://hono.dev/api/request#path}
36
+ * @see {@link https://hono.dev/docs/api/request#path}
37
37
  *
38
38
  * @example
39
39
  * ```ts
@@ -48,7 +48,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
48
48
  /**
49
49
  * `.req.param()` gets the path parameters.
50
50
  *
51
- * @see {@link https://hono.dev/api/routing#path-parameter}
51
+ * @see {@link https://hono.dev/docs/api/routing#path-parameter}
52
52
  *
53
53
  * @example
54
54
  * ```ts
@@ -67,7 +67,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
67
67
  /**
68
68
  * `.query()` can get querystring parameters.
69
69
  *
70
- * @see {@link https://hono.dev/api/request#query}
70
+ * @see {@link https://hono.dev/docs/api/request#query}
71
71
  *
72
72
  * @example
73
73
  * ```ts
@@ -87,7 +87,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
87
87
  /**
88
88
  * `.queries()` can get multiple querystring parameter values, e.g. /search?tags=A&tags=B
89
89
  *
90
- * @see {@link https://hono.dev/api/request#queries}
90
+ * @see {@link https://hono.dev/docs/api/request#queries}
91
91
  *
92
92
  * @example
93
93
  * ```ts
@@ -102,7 +102,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
102
102
  /**
103
103
  * `.header()` can get the request header value.
104
104
  *
105
- * @see {@link https://hono.dev/api/request#header}
105
+ * @see {@link https://hono.dev/docs/api/request#header}
106
106
  *
107
107
  * @example
108
108
  * ```ts
@@ -116,7 +116,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
116
116
  /**
117
117
  * `.parseBody()` can parse Request body of type `multipart/form-data` or `application/x-www-form-urlencoded`
118
118
  *
119
- * @see {@link https://hono.dev/api/request#parsebody}
119
+ * @see {@link https://hono.dev/docs/api/request#parsebody}
120
120
  *
121
121
  * @example
122
122
  * ```ts
@@ -131,7 +131,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
131
131
  /**
132
132
  * `.json()` can parse Request body of type `application/json`
133
133
  *
134
- * @see {@link https://hono.dev/api/request#json}
134
+ * @see {@link https://hono.dev/docs/api/request#json}
135
135
  *
136
136
  * @example
137
137
  * ```ts
@@ -144,7 +144,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
144
144
  /**
145
145
  * `.text()` can parse Request body of type `text/plain`
146
146
  *
147
- * @see {@link https://hono.dev/api/request#text}
147
+ * @see {@link https://hono.dev/docs/api/request#text}
148
148
  *
149
149
  * @example
150
150
  * ```ts
@@ -157,7 +157,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
157
157
  /**
158
158
  * `.arrayBuffer()` parse Request body as an `ArrayBuffer`
159
159
  *
160
- * @see {@link https://hono.dev/api/request#arraybuffer}
160
+ * @see {@link https://hono.dev/docs/api/request#arraybuffer}
161
161
  *
162
162
  * @example
163
163
  * ```ts
@@ -175,7 +175,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
175
175
  * const body = await c.req.blob();
176
176
  * });
177
177
  * ```
178
- * @see https://hono.dev/api/request#blob
178
+ * @see https://hono.dev/docs/api/request#blob
179
179
  */
180
180
  blob(): Promise<Blob>;
181
181
  /**
@@ -186,7 +186,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
186
186
  * const body = await c.req.formData();
187
187
  * });
188
188
  * ```
189
- * @see https://hono.dev/api/request#formdata
189
+ * @see https://hono.dev/docs/api/request#formdata
190
190
  */
191
191
  formData(): Promise<FormData>;
192
192
  /**
@@ -202,13 +202,13 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
202
202
  * @param target - The target of the validation.
203
203
  * @returns The validated data.
204
204
  *
205
- * @see https://hono.dev/api/request#valid
205
+ * @see https://hono.dev/docs/api/request#valid
206
206
  */
207
207
  valid<T extends keyof I & keyof ValidationTargets>(target: T): InputToDataByTarget<I, T>;
208
208
  /**
209
209
  * `.url()` can get the request url strings.
210
210
  *
211
- * @see {@link https://hono.dev/api/request#url}
211
+ * @see {@link https://hono.dev/docs/api/request#url}
212
212
  *
213
213
  * @example
214
214
  * ```ts
@@ -222,7 +222,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
222
222
  /**
223
223
  * `.method()` can get the method name of the request.
224
224
  *
225
- * @see {@link https://hono.dev/api/request#method}
225
+ * @see {@link https://hono.dev/docs/api/request#method}
226
226
  *
227
227
  * @example
228
228
  * ```ts
@@ -235,7 +235,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
235
235
  /**
236
236
  * `.matchedRoutes()` can return a matched route in the handler
237
237
  *
238
- * @see {@link https://hono.dev/api/request#matchedroutes}
238
+ * @see {@link https://hono.dev/docs/api/request#matchedroutes}
239
239
  *
240
240
  * @example
241
241
  * ```ts
@@ -259,7 +259,7 @@ export declare class HonoRequest<P extends string = '/', I extends Input['out']
259
259
  /**
260
260
  * `routePath()` can retrieve the path registered within the handler
261
261
  *
262
- * @see {@link https://hono.dev/api/request#routepath}
262
+ * @see {@link https://hono.dev/docs/api/request#routepath}
263
263
  *
264
264
  * @example
265
265
  * ```ts
@@ -38,26 +38,19 @@ export interface HTTPResponseError extends Error {
38
38
  export type ErrorHandler<E extends Env = any> = (err: Error | HTTPResponseError, c: Context<E>) => Response | Promise<Response>;
39
39
  export interface HandlerInterface<E extends Env = Env, M extends string = string, S extends Schema = BlankSchema, BasePath extends string = '/'> {
40
40
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, I extends Input = BlankInput, R extends HandlerResponse<any> = any, E2 extends Env = E>(handler: H<E2, P, I, R>): Hono<IntersectNonAnyTypes<[E, E2]>, S & ToSchema<M, P, I, MergeTypedResponse<R>>, BasePath>;
41
- <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, E2 extends Env = E>(path: P, handler: H<E2, MergedPath, I, R>): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>;
42
41
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, I extends Input = BlankInput, I2 extends Input = I, R extends HandlerResponse<any> = any, E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>>(...handlers: [H<E2, P, I>, H<E3, P, I2, R>]): Hono<IntersectNonAnyTypes<[E, E2, E3]>, S & ToSchema<M, P, I2, MergeTypedResponse<R>>, BasePath>;
43
- <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>>(path: P, ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2, R>]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I2, MergeTypedResponse<R>>, BasePath>;
42
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, E2 extends Env = E>(path: P, handler: H<E2, MergedPath, I, R>): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>;
44
43
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, E2 extends Env = E, E3 extends Env = E, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>>(...handlers: [H<E2, P, I>, H<E3, P, I2>, H<E4, P, I3, R>]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4]>, S & ToSchema<M, P, I3, MergeTypedResponse<R>>, BasePath>;
45
- <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, E2 extends Env = E, E3 extends Env = E, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>>(path: P, ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2>, H<E4, MergedPath, I3, R>]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I3, MergeTypedResponse<R>>, BasePath>;
44
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>>(path: P, ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2, R>]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I2, MergeTypedResponse<R>>, BasePath>;
46
45
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>>(...handlers: [H<E2, P, I>, H<E3, P, I2>, H<E4, P, I3>, H<E5, P, I4, R>]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, S & ToSchema<M, P, I4, MergeTypedResponse<R>>, BasePath>;
46
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, E2 extends Env = E, E3 extends Env = E, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>>(path: P, ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2>, H<E4, MergedPath, I3, R>]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I3, MergeTypedResponse<R>>, BasePath>;
47
+ <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>>(...handlers: [H<E2, P, I>, H<E3, P, I2>, H<E4, P, I3>, H<E5, P, I4>, H<E6, P, I5, R>]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, S & ToSchema<M, P, I5, MergeTypedResponse<R>>, BasePath>;
47
48
  <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>>(path: P, ...handlers: [
48
49
  H<E2, MergedPath, I>,
49
50
  H<E3, MergedPath, I2>,
50
51
  H<E4, MergedPath, I3>,
51
52
  H<E5, MergedPath, I4, R>
52
53
  ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I4, MergeTypedResponse<R>>, BasePath>;
53
- <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>>(...handlers: [H<E2, P, I>, H<E3, P, I2>, H<E4, P, I3>, H<E5, P, I4>, H<E6, P, I5, R>]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, S & ToSchema<M, P, I5, MergeTypedResponse<R>>, BasePath>;
54
- <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>>(path: P, ...handlers: [
55
- H<E2, MergedPath, I>,
56
- H<E3, MergedPath, I2>,
57
- H<E4, MergedPath, I3>,
58
- H<E5, MergedPath, I4>,
59
- H<E6, MergedPath, I5, R>
60
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I5, MergeTypedResponse<R>>, BasePath>;
61
54
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>>(...handlers: [
62
55
  H<E2, P, I>,
63
56
  H<E3, P, I2>,
@@ -66,14 +59,13 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
66
59
  H<E6, P, I5>,
67
60
  H<E7, P, I6, R>
68
61
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, S & ToSchema<M, P, I6, MergeTypedResponse<R>>, BasePath>;
69
- <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>>(path: P, ...handlers: [
62
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>>(path: P, ...handlers: [
70
63
  H<E2, MergedPath, I>,
71
64
  H<E3, MergedPath, I2>,
72
65
  H<E4, MergedPath, I3>,
73
66
  H<E5, MergedPath, I4>,
74
- H<E6, MergedPath, I5>,
75
- H<E7, MergedPath, I6, R>
76
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I6, MergeTypedResponse<R>>, BasePath>;
67
+ H<E6, MergedPath, I5, R>
68
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I5, MergeTypedResponse<R>>, BasePath>;
77
69
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>>(...handlers: [
78
70
  H<E2, P, I>,
79
71
  H<E3, P, I2>,
@@ -83,15 +75,14 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
83
75
  H<E7, P, I6>,
84
76
  H<E8, P, I7, R>
85
77
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, S & ToSchema<M, P, I7, MergeTypedResponse<R>>, BasePath>;
86
- <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>>(path: P, ...handlers: [
78
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>>(path: P, ...handlers: [
87
79
  H<E2, MergedPath, I>,
88
80
  H<E3, MergedPath, I2>,
89
81
  H<E4, MergedPath, I3>,
90
82
  H<E5, MergedPath, I4>,
91
83
  H<E6, MergedPath, I5>,
92
- H<E7, MergedPath, I6>,
93
- H<E8, MergedPath, I7, R>
94
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I7, MergeTypedResponse<R>>, BasePath>;
84
+ H<E7, MergedPath, I6, R>
85
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I6, MergeTypedResponse<R>>, BasePath>;
95
86
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>>(...handlers: [
96
87
  H<E2, P, I>,
97
88
  H<E3, P, I2>,
@@ -102,16 +93,15 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
102
93
  H<E8, P, I7>,
103
94
  H<E9, P, I8, R>
104
95
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, S & ToSchema<M, P, I8, MergeTypedResponse<R>>, BasePath>;
105
- <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>>(path: P, ...handlers: [
96
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>>(path: P, ...handlers: [
106
97
  H<E2, MergedPath, I>,
107
98
  H<E3, MergedPath, I2>,
108
99
  H<E4, MergedPath, I3>,
109
100
  H<E5, MergedPath, I4>,
110
101
  H<E6, MergedPath, I5>,
111
102
  H<E7, MergedPath, I6>,
112
- H<E8, MergedPath, I7>,
113
- H<E9, MergedPath, I8, R>
114
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I8, MergeTypedResponse<R>>, BasePath>;
103
+ H<E8, MergedPath, I7, R>
104
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I7, MergeTypedResponse<R>>, BasePath>;
115
105
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>>(...handlers: [
116
106
  H<E2, P, I>,
117
107
  H<E3, P, I2>,
@@ -123,7 +113,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
123
113
  H<E9, P, I8>,
124
114
  H<E10, P, I9, R>
125
115
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, S & ToSchema<M, P, I9, MergeTypedResponse<R>>, BasePath>;
126
- <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>>(path: P, ...handlers: [
116
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>>(path: P, ...handlers: [
127
117
  H<E2, MergedPath, I>,
128
118
  H<E3, MergedPath, I2>,
129
119
  H<E4, MergedPath, I3>,
@@ -131,9 +121,8 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
131
121
  H<E6, MergedPath, I5>,
132
122
  H<E7, MergedPath, I6>,
133
123
  H<E8, MergedPath, I7>,
134
- H<E9, MergedPath, I8>,
135
- H<E10, MergedPath, I9, R>
136
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I9, MergeTypedResponse<R>>, BasePath>;
124
+ H<E9, MergedPath, I8, R>
125
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I8, MergeTypedResponse<R>>, BasePath>;
137
126
  <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8, I10 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8 & I9, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = E, E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>>(...handlers: [
138
127
  H<E2, P, I>,
139
128
  H<E3, P, I2>,
@@ -146,6 +135,17 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
146
135
  H<E10, P, I9>,
147
136
  H<E11, P, I10, R>
148
137
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11]>, S & ToSchema<M, P, I10, MergeTypedResponse<R>>, BasePath>;
138
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>>(path: P, ...handlers: [
139
+ H<E2, MergedPath, I>,
140
+ H<E3, MergedPath, I2>,
141
+ H<E4, MergedPath, I3>,
142
+ H<E5, MergedPath, I4>,
143
+ H<E6, MergedPath, I5>,
144
+ H<E7, MergedPath, I6>,
145
+ H<E8, MergedPath, I7>,
146
+ H<E9, MergedPath, I8>,
147
+ H<E10, MergedPath, I9, R>
148
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I9, MergeTypedResponse<R>>, BasePath>;
149
149
  <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3, I5 extends Input = I & I2 & I3 & I4, I6 extends Input = I & I2 & I3 & I4 & I5, I7 extends Input = I & I2 & I3 & I4 & I5 & I6, I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7, I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8, I10 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8 & I9, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = E, E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>>(path: P, ...handlers: [
150
150
  H<E2, MergedPath, I>,
151
151
  H<E3, MergedPath, I2>,
@@ -166,13 +166,16 @@ export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schem
166
166
  <E2 extends Env = E>(...handlers: MiddlewareHandler<E2, MergePath<BasePath, ExtractKey<S>>>[]): Hono<IntersectNonAnyTypes<[E, E2]>, S, BasePath>;
167
167
  <E2 extends Env = E>(handler: MiddlewareHandler<E2, MergePath<BasePath, ExtractKey<S>>>): Hono<IntersectNonAnyTypes<[E, E2]>, S, BasePath>;
168
168
  <E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>]): Hono<IntersectNonAnyTypes<[E, E2, E3]>, S, BasePath>;
169
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E>(path: P, handler: MiddlewareHandler<E2, MergedPath>): Hono<IntersectNonAnyTypes<[E, E2]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
169
170
  <E2 extends Env = E, E3 extends Env = E, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>, MiddlewareHandler<E4, P>]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4]>, S, BasePath>;
171
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>>(path: P, ...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>]): Hono<IntersectNonAnyTypes<[E, E2, E3]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
170
172
  <E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
171
173
  MiddlewareHandler<E2, P>,
172
174
  MiddlewareHandler<E3, P>,
173
175
  MiddlewareHandler<E4, P>,
174
176
  MiddlewareHandler<E5, P>
175
177
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, S, BasePath>;
178
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E, E3 extends Env = E, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>>(path: P, ...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>, MiddlewareHandler<E4, P>]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
176
179
  <E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
177
180
  MiddlewareHandler<E2, P>,
178
181
  MiddlewareHandler<E3, P>,
@@ -180,6 +183,12 @@ export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schem
180
183
  MiddlewareHandler<E5, P>,
181
184
  MiddlewareHandler<E6, P>
182
185
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, S, BasePath>;
186
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>>(path: P, ...handlers: [
187
+ MiddlewareHandler<E2, P>,
188
+ MiddlewareHandler<E3, P>,
189
+ MiddlewareHandler<E4, P>,
190
+ MiddlewareHandler<E5, P>
191
+ ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
183
192
  <E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
184
193
  MiddlewareHandler<E2, P>,
185
194
  MiddlewareHandler<E3, P>,
@@ -188,6 +197,13 @@ export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schem
188
197
  MiddlewareHandler<E6, P>,
189
198
  MiddlewareHandler<E7, P>
190
199
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, S, BasePath>;
200
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>>(path: P, ...handlers: [
201
+ MiddlewareHandler<E2, P>,
202
+ MiddlewareHandler<E3, P>,
203
+ MiddlewareHandler<E4, P>,
204
+ MiddlewareHandler<E5, P>,
205
+ MiddlewareHandler<E6, P>
206
+ ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
191
207
  <E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
192
208
  MiddlewareHandler<E2, P>,
193
209
  MiddlewareHandler<E3, P>,
@@ -197,6 +213,14 @@ export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schem
197
213
  MiddlewareHandler<E7, P>,
198
214
  MiddlewareHandler<E8, P>
199
215
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, S, BasePath>;
216
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>>(path: P, ...handlers: [
217
+ MiddlewareHandler<E2, P>,
218
+ MiddlewareHandler<E3, P>,
219
+ MiddlewareHandler<E4, P>,
220
+ MiddlewareHandler<E5, P>,
221
+ MiddlewareHandler<E6, P>,
222
+ MiddlewareHandler<E7, P>
223
+ ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
200
224
  <E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
201
225
  MiddlewareHandler<E2, P>,
202
226
  MiddlewareHandler<E3, P>,
@@ -207,6 +231,15 @@ export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schem
207
231
  MiddlewareHandler<E8, P>,
208
232
  MiddlewareHandler<E9, P>
209
233
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, S, BasePath>;
234
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>>(path: P, ...handlers: [
235
+ MiddlewareHandler<E2, P>,
236
+ MiddlewareHandler<E3, P>,
237
+ MiddlewareHandler<E4, P>,
238
+ MiddlewareHandler<E5, P>,
239
+ MiddlewareHandler<E6, P>,
240
+ MiddlewareHandler<E7, P>,
241
+ MiddlewareHandler<E8, P>
242
+ ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
210
243
  <E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
211
244
  MiddlewareHandler<E2, P>,
212
245
  MiddlewareHandler<E3, P>,
@@ -218,6 +251,16 @@ export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schem
218
251
  MiddlewareHandler<E9, P>,
219
252
  MiddlewareHandler<E10, P>
220
253
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, S, BasePath>;
254
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>>(path: P, ...handlers: [
255
+ MiddlewareHandler<E2, P>,
256
+ MiddlewareHandler<E3, P>,
257
+ MiddlewareHandler<E4, P>,
258
+ MiddlewareHandler<E5, P>,
259
+ MiddlewareHandler<E6, P>,
260
+ MiddlewareHandler<E7, P>,
261
+ MiddlewareHandler<E8, P>,
262
+ MiddlewareHandler<E9, P>
263
+ ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
221
264
  <E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = E, E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, P extends string = MergePath<BasePath, ExtractKey<S>>>(...handlers: [
222
265
  MiddlewareHandler<E2, P>,
223
266
  MiddlewareHandler<E3, P>,
@@ -230,6 +273,17 @@ export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schem
230
273
  MiddlewareHandler<E10, P>,
231
274
  MiddlewareHandler<E11, P>
232
275
  ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11]>, S, BasePath>;
276
+ <P extends string, MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>, E2 extends Env = E, E3 extends Env = E, E4 extends Env = E, E5 extends Env = E, E6 extends Env = E, E7 extends Env = E, E8 extends Env = E, E9 extends Env = E, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>>(path: P, ...handlers: [
277
+ MiddlewareHandler<E2, P>,
278
+ MiddlewareHandler<E3, P>,
279
+ MiddlewareHandler<E4, P>,
280
+ MiddlewareHandler<E5, P>,
281
+ MiddlewareHandler<E6, P>,
282
+ MiddlewareHandler<E7, P>,
283
+ MiddlewareHandler<E8, P>,
284
+ MiddlewareHandler<E9, P>,
285
+ MiddlewareHandler<E10, P>
286
+ ]): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, ChangePathOfSchema<S, MergedPath>, BasePath>;
233
287
  <P extends string, E2 extends Env = E>(path: P, ...handlers: MiddlewareHandler<E2, MergePath<BasePath, P>>[]): Hono<E, S, BasePath>;
234
288
  }
235
289
  export interface OnHandlerInterface<E extends Env = Env, S extends Schema = BlankSchema, BasePath extends string = '/'> {
@@ -398,6 +452,11 @@ export type Schema = {
398
452
  [Method: `$${Lowercase<string>}`]: Endpoint;
399
453
  };
400
454
  };
455
+ type ChangePathOfSchema<S extends Schema, Path extends string> = keyof S extends never ? {
456
+ [K in Path]: never;
457
+ } : {
458
+ [K in keyof S as Path]: S[K];
459
+ };
401
460
  export type Endpoint = {
402
461
  input: Partial<ValidationTargets>;
403
462
  output: any;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * @module
3
+ * JSON Web Algorithms (JWA)
4
+ * https://datatracker.ietf.org/doc/html/rfc7518
5
+ */
1
6
  export declare enum AlgorithmTypes {
2
7
  HS256 = "HS256",
3
8
  HS384 = "HS384",
@@ -1,3 +1,8 @@
1
+ /**
2
+ * @module
3
+ * JSON Web Signature (JWS)
4
+ * https://datatracker.ietf.org/doc/html/rfc7515
5
+ */
1
6
  import type { SignatureAlgorithm } from './jwa';
2
7
  export type SignatureKey = string | JsonWebKey | CryptoKey;
3
8
  export declare function signing(privateKey: SignatureKey, alg: SignatureAlgorithm, data: BufferSource): Promise<ArrayBuffer>;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * @module
3
+ * JSON Web Token (JWT)
4
+ * https://datatracker.ietf.org/doc/html/rfc7519
5
+ */
1
6
  import type { SignatureAlgorithm } from './jwa';
2
7
  import type { SignatureKey } from './jws';
3
8
  import type { JWTPayload } from './types';
@@ -1,3 +1,7 @@
1
+ /**
2
+ * @module
3
+ * Type definitions for JWT utilities.
4
+ */
1
5
  export declare class JwtAlgorithmNotImplemented extends Error {
2
6
  constructor(alg: string);
3
7
  }
@@ -1,2 +1,6 @@
1
+ /**
2
+ * @module
3
+ * Functions for encoding/decoding UTF8.
4
+ */
1
5
  export declare const utf8Encoder: TextEncoder;
2
6
  export declare const utf8Decoder: TextDecoder;
@@ -12,6 +12,10 @@ export declare class StreamingApi {
12
12
  * Whether the stream has been aborted.
13
13
  */
14
14
  aborted: boolean;
15
+ /**
16
+ * Whether the stream has been closed normally.
17
+ */
18
+ closed: boolean;
15
19
  constructor(writable: WritableStream, _readable: ReadableStream);
16
20
  write(input: Uint8Array | string): Promise<StreamingApi>;
17
21
  writeln(input: string): Promise<StreamingApi>;
@@ -8,16 +8,27 @@ export type NotEqual<X, Y> = true extends Equal<X, Y> ? false : true;
8
8
  export type UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never;
9
9
  export type RemoveBlankRecord<T> = T extends Record<infer K, unknown> ? K extends string ? T : never : never;
10
10
  export type IfAnyThenEmptyObject<T> = 0 extends 1 & T ? {} : T;
11
- export type JSONPrimitive = string | boolean | number | null | undefined;
11
+ export type JSONPrimitive = string | boolean | number | null;
12
12
  export type JSONArray = (JSONPrimitive | JSONObject | JSONArray)[];
13
13
  export type JSONObject = {
14
14
  [key: string]: JSONPrimitive | JSONArray | JSONObject | object;
15
15
  };
16
+ export type InvalidJSONValue = undefined | symbol | ((...args: unknown[]) => unknown);
17
+ type InvalidToNull<T> = T extends InvalidJSONValue ? null : T;
18
+ type IsInvalid<T> = T extends InvalidJSONValue ? true : false;
19
+ /**
20
+ * symbol keys are omitted through `JSON.stringify`
21
+ */
22
+ type OmitSymbolKeys<T> = {
23
+ [K in keyof T as K extends symbol ? never : K]: T[K];
24
+ };
16
25
  export type JSONValue = JSONObject | JSONArray | JSONPrimitive;
17
26
  export type JSONParsed<T> = T extends {
18
27
  toJSON(): infer J;
19
- } ? (() => J) extends () => JSONObject ? J : JSONParsed<J> : T extends JSONPrimitive ? T : T extends Array<infer U> ? Array<JSONParsed<U>> : T extends object ? {
20
- [K in keyof T]: JSONParsed<T[K]>;
28
+ } ? (() => J) extends () => JSONPrimitive ? J : (() => J) extends () => {
29
+ toJSON(): unknown;
30
+ } ? {} : JSONParsed<J> : T extends JSONPrimitive ? T : T extends InvalidJSONValue ? never : T extends [] ? [] : T extends readonly [infer R, ...infer U] ? [JSONParsed<InvalidToNull<R>>, ...JSONParsed<U>] : T extends Array<infer U> ? Array<JSONParsed<InvalidToNull<U>>> : T extends Set<unknown> | Map<unknown, unknown> ? {} : T extends object ? {
31
+ [K in keyof OmitSymbolKeys<T> as IsInvalid<T[K]> extends true ? never : K]: boolean extends IsInvalid<T[K]> ? JSONParsed<T[K]> | undefined : JSONParsed<T[K]>;
21
32
  } : never;
22
33
  /**
23
34
  * Useful to flatten the type output to improve type hints shown in editors. And also to transform an interface into a type to aide with assignability.
@@ -40,3 +51,4 @@ export type RequiredKeysOf<BaseType extends object> = Exclude<{
40
51
  }[keyof BaseType], undefined>;
41
52
  export type HasRequiredKeys<BaseType extends object> = RequiredKeysOf<BaseType> extends never ? false : true;
42
53
  export type IsAny<T> = boolean extends (T extends never ? true : false) ? true : false;
54
+ export {};
@@ -6,6 +6,7 @@ var StreamingApi = class {
6
6
  abortSubscribers = [];
7
7
  responseReadable;
8
8
  aborted = false;
9
+ closed = false;
9
10
  constructor(writable, _readable) {
10
11
  this.writable = writable;
11
12
  this.writer = writable.getWriter();
@@ -46,6 +47,7 @@ var StreamingApi = class {
46
47
  await this.writer.close();
47
48
  } catch (e) {
48
49
  }
50
+ this.closed = true;
49
51
  }
50
52
  async pipe(body) {
51
53
  this.writer.releaseLock();
@@ -23,33 +23,34 @@ var validator = (target, validationFunc) => {
23
23
  if (!contentType) {
24
24
  break;
25
25
  }
26
+ let formData;
26
27
  if (c.req.bodyCache.formData) {
27
- value = await c.req.bodyCache.formData;
28
- break;
28
+ formData = await c.req.bodyCache.formData;
29
+ } else {
30
+ try {
31
+ const arrayBuffer = await c.req.arrayBuffer();
32
+ formData = await bufferToFormData(arrayBuffer, contentType);
33
+ c.req.bodyCache.formData = formData;
34
+ } catch (e) {
35
+ let message = "Malformed FormData request.";
36
+ message += e instanceof Error ? ` ${e.message}` : ` ${String(e)}`;
37
+ throw new HTTPException(400, { message });
38
+ }
29
39
  }
30
- try {
31
- const arrayBuffer = await c.req.arrayBuffer();
32
- const formData = await bufferToFormData(arrayBuffer, contentType);
33
- const form = {};
34
- formData.forEach((value2, key) => {
35
- if (key.endsWith("[]")) {
36
- if (form[key] === void 0) {
37
- form[key] = [value2];
38
- } else if (Array.isArray(form[key])) {
39
- ;
40
- form[key].push(value2);
41
- }
42
- } else {
43
- form[key] = value2;
40
+ const form = {};
41
+ formData.forEach((value2, key) => {
42
+ if (key.endsWith("[]")) {
43
+ if (form[key] === void 0) {
44
+ form[key] = [value2];
45
+ } else if (Array.isArray(form[key])) {
46
+ ;
47
+ form[key].push(value2);
44
48
  }
45
- });
46
- value = form;
47
- c.req.bodyCache.formData = formData;
48
- } catch (e) {
49
- let message = "Malformed FormData request.";
50
- message += e instanceof Error ? ` ${e.message}` : ` ${String(e)}`;
51
- throw new HTTPException(400, { message });
52
- }
49
+ } else {
50
+ form[key] = value2;
51
+ }
52
+ });
53
+ value = form;
53
54
  break;
54
55
  }
55
56
  case "query":
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "4.4.10",
3
+ "version": "4.4.12",
4
4
  "description": "Web framework built on Web Standards",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",