hono 3.5.3 → 3.5.5

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.
@@ -11,6 +11,7 @@ declare type ClientRequest<S extends Schema> = {
11
11
  output: infer O;
12
12
  } ? RemoveBlankRecord<R> extends never ? (args?: {}, options?: ClientRequestOptions) => Promise<ClientResponse<O>> : (args: Omit<R, 'header' | 'cookie'>, options?: ClientRequestOptions) => Promise<ClientResponse<O>> : never;
13
13
  };
14
+ declare type BlankRecordToNever<T> = T extends Record<infer R, unknown> ? R extends never ? never : T : never;
14
15
  export interface ClientResponse<T> {
15
16
  ok: boolean;
16
17
  status: number;
@@ -19,7 +20,7 @@ export interface ClientResponse<T> {
19
20
  url: string;
20
21
  redirect(url: string, status: number): Response;
21
22
  clone(): Response;
22
- json(): Promise<T>;
23
+ json(): Promise<BlankRecordToNever<T>>;
23
24
  text(): Promise<string>;
24
25
  blob(): Promise<Blob>;
25
26
  formData(): Promise<FormData>;
@@ -14,70 +14,71 @@ export declare type Input = {
14
14
  [K in keyof ValidationTargets]: unknown;
15
15
  }>;
16
16
  };
17
- export declare type Handler<E extends Env = any, P extends string = any, I extends Input = Input, O = {}> = (c: Context<E, P, I>, next: Next) => Response | Promise<Response | TypedResponse<O>> | TypedResponse<O>;
17
+ declare type HandlerResponse<O> = Response | TypedResponse<O> | Promise<Response | TypedResponse<O>>;
18
+ export declare type Handler<E extends Env = any, P extends string = any, I extends Input = Input, R extends HandlerResponse<any> = any> = (c: Context<E, P, I>, next: Next) => R;
18
19
  export declare type MiddlewareHandler<E extends Env = any, P extends string = any, I extends Input = {}> = (c: Context<E, P, I>, next: Next) => Promise<Response | void>;
19
- export declare type H<E extends Env = any, P extends string = any, I extends Input = {}, O = {}> = Handler<E, P, I, O> | MiddlewareHandler<E, P, I>;
20
+ export declare type H<E extends Env = any, P extends string = any, I extends Input = {}, R extends HandlerResponse<any> = any> = Handler<E, P, I, R> | MiddlewareHandler<E, P, I>;
20
21
  export declare type NotFoundHandler<E extends Env = any> = (c: Context<E>) => Response | Promise<Response>;
21
22
  export declare type ErrorHandler<E extends Env = any> = (err: Error, c: Context<E>) => Response | Promise<Response>;
22
23
  export interface HandlerInterface<E extends Env = Env, M extends string = any, S extends Schema = {}, BasePath extends string = '/'> {
23
- <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, I extends Input = {}, O = {}>(...handlers: [H<E, P, I, O>, H<E, P, I, O>]): Hono<E, S & ToSchema<M, P, I['in'], O>, BasePath>;
24
- <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2>(...handlers: [H<E, P, I, O>, H<E, P, I2, O>, H<E, P, I3, O>]): Hono<E, S & ToSchema<M, P, I3['in'], O>, BasePath>;
25
- <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3>(...handlers: [H<E, P, I, O>, H<E, P, I2, O>, H<E, P, I3, O>, H<E, P, I4, O>]): Hono<E, S & ToSchema<M, P, I4['in'], O>, BasePath>;
26
- <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I2 & I3, I5 extends Input = I & I2 & I3 & I4>(...handlers: [H<E, P, I, O>, H<E, P, I2, O>, H<E, P, I3, O>, H<E, P, I4, O>, H<E, P, I5, O>]): Hono<E, S & ToSchema<M, P, I5['in'], O>, BasePath>;
27
- <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, I extends Input = {}, O = {}>(...handlers: Handler<E, P, I, O>[]): Hono<E, S & ToSchema<M, P, I['in'], O>, BasePath>;
28
- <P extends string, O = {}, I extends Input = {}>(path: P, handler: H<E, MergePath<BasePath, P>, I, O>): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], O>, BasePath>;
29
- <P extends string, O = {}, I extends Input = {}>(path: P, ...handlers: [H<E, MergePath<BasePath, P>, I, O>, H<E, MergePath<BasePath, P>, I, O>]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], O>, BasePath>;
30
- <P extends string, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2>(path: P, ...handlers: [
31
- H<E, MergePath<BasePath, P>, I, O>,
32
- H<E, MergePath<BasePath, P>, I2, O>,
33
- H<E, MergePath<BasePath, P>, I3, O>
34
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I3['in'], O>, BasePath>;
35
- <P extends string, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3>(path: P, ...handlers: [
36
- H<E, MergePath<BasePath, P>, I, O>,
37
- H<E, MergePath<BasePath, P>, I2, O>,
38
- H<E, MergePath<BasePath, P>, I3, O>,
39
- H<E, MergePath<BasePath, P>, I4, O>
40
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I4['in'], O>, BasePath>;
41
- <P extends string, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I2 & I3, I5 extends Input = I & I2 & I3 & I4>(path: P, ...handlers: [
42
- H<E, MergePath<BasePath, P>, I, O>,
43
- H<E, MergePath<BasePath, P>, I2, O>,
44
- H<E, MergePath<BasePath, P>, I3, O>,
45
- H<E, MergePath<BasePath, P>, I4, O>,
46
- H<E, MergePath<BasePath, P>, I5, O>
47
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I5['in'], O>, BasePath>;
48
- <P extends string, I extends Input = {}, O = {}>(path: P, ...handlers: H<E, MergePath<BasePath, P>, I, O>[]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], O>, BasePath>;
24
+ <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, I extends Input = {}, R extends HandlerResponse<any> = any>(...handlers: [H<E, P, I, R>, H<E, P, I, R>]): Hono<E, S & ToSchema<M, P, I['in'], MergeTypedResponseData<R>>, BasePath>;
25
+ <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2>(...handlers: [H<E, P, I, R>, H<E, P, I2, R>, H<E, P, I3, R>]): Hono<E, S & ToSchema<M, P, I3['in'], MergeTypedResponseData<R>>, BasePath>;
26
+ <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3>(...handlers: [H<E, P, I, R>, H<E, P, I2, R>, H<E, P, I3, R>, H<E, P, I4, R>]): Hono<E, S & ToSchema<M, P, I4['in'], MergeTypedResponseData<R>>, BasePath>;
27
+ <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I2 & I3, I5 extends Input = I & I2 & I3 & I4>(...handlers: [H<E, P, I, R>, H<E, P, I2, R>, H<E, P, I3, R>, H<E, P, I4, R>, H<E, P, I5, R>]): Hono<E, S & ToSchema<M, P, I5['in'], MergeTypedResponseData<R>>, BasePath>;
28
+ <P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>, I extends Input = {}, R extends HandlerResponse<any> = any>(...handlers: Handler<E, P, I, R>[]): Hono<E, S & ToSchema<M, P, I['in'], MergeTypedResponseData<R>>, BasePath>;
29
+ <P extends string, R extends HandlerResponse<any> = any, I extends Input = {}>(path: P, handler: H<E, MergePath<BasePath, P>, I, R>): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], MergeTypedResponseData<R>>, BasePath>;
30
+ <P extends string, R extends HandlerResponse<any> = any, I extends Input = {}>(path: P, ...handlers: [H<E, MergePath<BasePath, P>, I, R>, H<E, MergePath<BasePath, P>, I, R>]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], MergeTypedResponseData<R>>, BasePath>;
31
+ <P extends string, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2>(path: P, ...handlers: [
32
+ H<E, MergePath<BasePath, P>, I, R>,
33
+ H<E, MergePath<BasePath, P>, I2, R>,
34
+ H<E, MergePath<BasePath, P>, I3, R>
35
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I3['in'], MergeTypedResponseData<R>>, BasePath>;
36
+ <P extends string, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I & I2 & I3>(path: P, ...handlers: [
37
+ H<E, MergePath<BasePath, P>, I, R>,
38
+ H<E, MergePath<BasePath, P>, I2, R>,
39
+ H<E, MergePath<BasePath, P>, I3, R>,
40
+ H<E, MergePath<BasePath, P>, I4, R>
41
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I4['in'], MergeTypedResponseData<R>>, BasePath>;
42
+ <P extends string, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I2 & I3, I5 extends Input = I & I2 & I3 & I4>(path: P, ...handlers: [
43
+ H<E, MergePath<BasePath, P>, I, R>,
44
+ H<E, MergePath<BasePath, P>, I2, R>,
45
+ H<E, MergePath<BasePath, P>, I3, R>,
46
+ H<E, MergePath<BasePath, P>, I4, R>,
47
+ H<E, MergePath<BasePath, P>, I5, R>
48
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I5['in'], MergeTypedResponseData<R>>, BasePath>;
49
+ <P extends string, I extends Input = {}, R extends HandlerResponse<any> = any>(path: P, ...handlers: H<E, MergePath<BasePath, P>, I, R>[]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], MergeTypedResponseData<R>>, BasePath>;
49
50
  }
50
51
  export interface MiddlewareHandlerInterface<E extends Env = Env, S extends Schema = {}, BasePath extends string = '/'> {
51
52
  (...handlers: MiddlewareHandler<E, MergePath<BasePath, ExtractKey<S>>>[]): Hono<E, S, BasePath>;
52
53
  <P extends string>(path: P, ...handlers: MiddlewareHandler<E, MergePath<BasePath, P>>[]): Hono<E, S, BasePath>;
53
54
  }
54
55
  export interface OnHandlerInterface<E extends Env = Env, S extends Schema = {}, BasePath extends string = '/'> {
55
- <M extends string, P extends string, O = {}, I extends Input = {}>(method: M, path: P, ...handlers: [H<E, MergePath<BasePath, P>, I, O>, H<E, MergePath<BasePath, P>, I, O>]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], O>, BasePath>;
56
- <M extends string, P extends string, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2>(method: M, path: P, ...handlers: [
57
- H<E, MergePath<BasePath, P>, I, O>,
58
- H<E, MergePath<BasePath, P>, I2, O>,
59
- H<E, MergePath<BasePath, P>, I3, O>
60
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I3['in'], O>, BasePath>;
61
- <M extends string, P extends string, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I2 & I3>(method: M, path: P, ...handlers: [
62
- H<E, MergePath<BasePath, P>, I, O>,
63
- H<E, MergePath<BasePath, P>, I2, O>,
64
- H<E, MergePath<BasePath, P>, I3, O>,
65
- H<E, MergePath<BasePath, P>, I4, O>
66
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I4['in'], O>, BasePath>;
67
- <M extends string, P extends string, O = {}, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I2 & I3, I5 extends Input = I3 & I4>(method: M, path: P, ...handlers: [
68
- H<E, MergePath<BasePath, P>, I, O>,
69
- H<E, MergePath<BasePath, P>, I2, O>,
70
- H<E, MergePath<BasePath, P>, I3, O>,
71
- H<E, MergePath<BasePath, P>, I4, O>,
72
- H<E, MergePath<BasePath, P>, I5, O>
73
- ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I5['in'], O>, BasePath>;
74
- <M extends string, P extends string, O extends {} = {}, I extends Input = {}>(method: M, path: P, ...handlers: H<E, MergePath<BasePath, P>, I, O>[]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], O>, BasePath>;
75
- <P extends string, O extends {} = {}, I extends Input = {}>(methods: string[], path: P, ...handlers: H<E, MergePath<BasePath, P>, I, O>[]): Hono<E, S & ToSchema<string, MergePath<BasePath, P>, I['in'], O>, BasePath>;
56
+ <M extends string, P extends string, R extends HandlerResponse<any> = any, I extends Input = {}>(method: M, path: P, ...handlers: [H<E, MergePath<BasePath, P>, I, R>, H<E, MergePath<BasePath, P>, I, R>]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], MergeTypedResponseData<R>>, BasePath>;
57
+ <M extends string, P extends string, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2>(method: M, path: P, ...handlers: [
58
+ H<E, MergePath<BasePath, P>, I, R>,
59
+ H<E, MergePath<BasePath, P>, I2, R>,
60
+ H<E, MergePath<BasePath, P>, I3, R>
61
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I3['in'], MergeTypedResponseData<R>>, BasePath>;
62
+ <M extends string, P extends string, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I2 & I3>(method: M, path: P, ...handlers: [
63
+ H<E, MergePath<BasePath, P>, I, R>,
64
+ H<E, MergePath<BasePath, P>, I2, R>,
65
+ H<E, MergePath<BasePath, P>, I3, R>,
66
+ H<E, MergePath<BasePath, P>, I4, R>
67
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I4['in'], MergeTypedResponseData<R>>, BasePath>;
68
+ <M extends string, P extends string, R extends HandlerResponse<any> = any, I extends Input = {}, I2 extends Input = I, I3 extends Input = I & I2, I4 extends Input = I2 & I3, I5 extends Input = I3 & I4>(method: M, path: P, ...handlers: [
69
+ H<E, MergePath<BasePath, P>, I, R>,
70
+ H<E, MergePath<BasePath, P>, I2, R>,
71
+ H<E, MergePath<BasePath, P>, I3, R>,
72
+ H<E, MergePath<BasePath, P>, I4, R>,
73
+ H<E, MergePath<BasePath, P>, I5, R>
74
+ ]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I5['in'], MergeTypedResponseData<R>>, BasePath>;
75
+ <M extends string, P extends string, R extends HandlerResponse<any> = any, I extends Input = {}>(method: M, path: P, ...handlers: H<E, MergePath<BasePath, P>, I, R>[]): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I['in'], MergeTypedResponseData<R>>, BasePath>;
76
+ <P extends string, R extends HandlerResponse<any> = any, I extends Input = {}>(methods: string[], path: P, ...handlers: H<E, MergePath<BasePath, P>, I, R>[]): Hono<E, S & ToSchema<string, MergePath<BasePath, P>, I['in'], MergeTypedResponseData<R>>, BasePath>;
76
77
  }
77
78
  declare type ExtractKey<S> = S extends Record<infer Key, unknown> ? Key extends string ? Key : never : string;
78
79
  export declare type ToSchema<M extends string, P extends string, I extends Input['in'], O> = {
79
80
  [K in P]: {
80
- [K2 in M as AddDollar<string & K2>]: {
81
+ [K2 in M as AddDollar<K2>]: {
81
82
  input: unknown extends I ? AddParam<{}, P> : AddParam<I, P>;
82
83
  output: unknown extends O ? {} : O;
83
84
  };
@@ -106,6 +107,8 @@ export declare type TypedResponse<T = unknown> = {
106
107
  data: T;
107
108
  format: 'json';
108
109
  };
110
+ declare type ExtractResponseData<T> = T extends TypedResponse<infer U> ? U : never;
111
+ declare type MergeTypedResponseData<T> = UnionToIntersection<ExtractResponseData<T>>;
109
112
  export declare type ValidationTargets = {
110
113
  json: any;
111
114
  form: Record<string, string | File>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hono",
3
- "version": "3.5.3",
3
+ "version": "3.5.5",
4
4
  "description": "Ultrafast web framework for the Edges",
5
5
  "main": "dist/cjs/index.js",
6
6
  "type": "module",
@@ -38,11 +38,6 @@
38
38
  "import": "./dist/index.js",
39
39
  "require": "./dist/cjs/index.js"
40
40
  },
41
- "./context": {
42
- "types": "./dist/types/context.d.ts",
43
- "import": "./dist/context.js",
44
- "require": "./dist/cjs/context.js"
45
- },
46
41
  "./tiny": {
47
42
  "types": "./dist/types/preset/tiny.d.ts",
48
43
  "import": "./dist/preset/tiny.js",
@@ -236,9 +231,6 @@
236
231
  },
237
232
  "typesVersions": {
238
233
  "*": {
239
- "context": [
240
- "./dist/types/context"
241
- ],
242
234
  "tiny": [
243
235
  "./dist/types/preset/tiny"
244
236
  ],