hono 4.12.2 → 4.12.4
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/cjs/helper/streaming/sse.js +5 -0
- package/dist/cjs/middleware/serve-static/index.js +2 -1
- package/dist/cjs/utils/cookie.js +5 -0
- package/dist/cjs/utils/jwt/jwt.js +6 -8
- package/dist/cjs/utils/url.js +4 -2
- package/dist/cjs/validator/validator.js +2 -2
- package/dist/helper/streaming/sse.js +5 -0
- package/dist/middleware/serve-static/index.js +2 -1
- package/dist/types/client/types.d.ts +6 -3
- package/dist/types/hono-base.d.ts +1 -1
- package/dist/types/middleware/jwt/index.d.ts +1 -1
- package/dist/types/types.d.ts +18 -18
- package/dist/types/utils/url.d.ts +10 -0
- package/dist/utils/cookie.js +5 -0
- package/dist/utils/jwt/jwt.js +6 -8
- package/dist/utils/url.js +2 -1
- package/dist/validator/validator.js +2 -2
- package/package.json +1 -1
|
@@ -34,6 +34,11 @@ class SSEStreamingApi extends import_stream.StreamingApi {
|
|
|
34
34
|
const dataLines = data.split(/\r\n|\r|\n/).map((line) => {
|
|
35
35
|
return `data: ${line}`;
|
|
36
36
|
}).join("\n");
|
|
37
|
+
for (const key of ["event", "id", "retry"]) {
|
|
38
|
+
if (message[key] && /[\r\n]/.test(message[key])) {
|
|
39
|
+
throw new Error(`${key} must not contain "\\r" or "\\n"`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
37
42
|
const sseData = [
|
|
38
43
|
message.event && `event: ${message.event}`,
|
|
39
44
|
dataLines,
|
|
@@ -23,6 +23,7 @@ __export(serve_static_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(serve_static_exports);
|
|
24
24
|
var import_compress = require("../../utils/compress");
|
|
25
25
|
var import_mime = require("../../utils/mime");
|
|
26
|
+
var import_url = require("../../utils/url");
|
|
26
27
|
var import_path = require("./path");
|
|
27
28
|
const ENCODINGS = {
|
|
28
29
|
br: ".br",
|
|
@@ -44,7 +45,7 @@ const serveStatic = (options) => {
|
|
|
44
45
|
filename = options.path;
|
|
45
46
|
} else {
|
|
46
47
|
try {
|
|
47
|
-
filename =
|
|
48
|
+
filename = (0, import_url.tryDecodeURI)(c.req.path);
|
|
48
49
|
if (/(?:^|[\/\\])\.\.(?:$|[\/\\])/.test(filename)) {
|
|
49
50
|
throw new Error();
|
|
50
51
|
}
|
package/dist/cjs/utils/cookie.js
CHANGED
|
@@ -112,6 +112,11 @@ const _serialize = (name, value, opt = {}) => {
|
|
|
112
112
|
throw new Error("__Host- Cookie must not have Domain attributes");
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
+
for (const key of ["domain", "path"]) {
|
|
116
|
+
if (opt[key] && /[;\r\n]/.test(opt[key])) {
|
|
117
|
+
throw new Error(`${key} must not contain ";", "\\r", or "\\n"`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
115
120
|
if (opt && typeof opt.maxAge === "number" && opt.maxAge >= 0) {
|
|
116
121
|
if (opt.maxAge > 3456e4) {
|
|
117
122
|
throw new Error(
|
|
@@ -81,7 +81,7 @@ const verify = async (token, publicKey, algOrOptions) => {
|
|
|
81
81
|
if (header.alg !== alg) {
|
|
82
82
|
throw new import_types.JwtAlgorithmMismatch(alg, header.alg);
|
|
83
83
|
}
|
|
84
|
-
const now = Date.now() / 1e3
|
|
84
|
+
const now = Math.floor(Date.now() / 1e3);
|
|
85
85
|
if (nbf && payload.nbf && payload.nbf > now) {
|
|
86
86
|
throw new import_types.JwtTokenNotBefore(token);
|
|
87
87
|
}
|
|
@@ -146,6 +146,7 @@ const verifyWithJwks = async (token, options, init) => {
|
|
|
146
146
|
if (!options.allowedAlgorithms.includes(header.alg)) {
|
|
147
147
|
throw new import_types.JwtAlgorithmNotAllowed(header.alg, options.allowedAlgorithms);
|
|
148
148
|
}
|
|
149
|
+
let verifyKeys = options.keys ? [...options.keys] : void 0;
|
|
149
150
|
if (options.jwks_uri) {
|
|
150
151
|
const response = await fetch(options.jwks_uri, init);
|
|
151
152
|
if (!response.ok) {
|
|
@@ -158,15 +159,12 @@ const verifyWithJwks = async (token, options, init) => {
|
|
|
158
159
|
if (!Array.isArray(data.keys)) {
|
|
159
160
|
throw new Error('invalid JWKS response. "keys" field is not an array');
|
|
160
161
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
options.keys = data.keys;
|
|
165
|
-
}
|
|
166
|
-
} else if (!options.keys) {
|
|
162
|
+
verifyKeys ??= [];
|
|
163
|
+
verifyKeys.push(...data.keys);
|
|
164
|
+
} else if (!verifyKeys) {
|
|
167
165
|
throw new Error('verifyWithJwks requires options for either "keys" or "jwks_uri" or both');
|
|
168
166
|
}
|
|
169
|
-
const matchingKey =
|
|
167
|
+
const matchingKey = verifyKeys.find((key) => key.kid === header.kid);
|
|
170
168
|
if (!matchingKey) {
|
|
171
169
|
throw new import_types.JwtTokenInvalid(token);
|
|
172
170
|
}
|
package/dist/cjs/utils/url.js
CHANGED
|
@@ -29,7 +29,8 @@ __export(url_exports, {
|
|
|
29
29
|
mergePath: () => mergePath,
|
|
30
30
|
splitPath: () => splitPath,
|
|
31
31
|
splitRoutingPath: () => splitRoutingPath,
|
|
32
|
-
tryDecode: () => tryDecode
|
|
32
|
+
tryDecode: () => tryDecode,
|
|
33
|
+
tryDecodeURI: () => tryDecodeURI
|
|
33
34
|
});
|
|
34
35
|
module.exports = __toCommonJS(url_exports);
|
|
35
36
|
const splitPath = (path) => {
|
|
@@ -251,5 +252,6 @@ const decodeURIComponent_ = decodeURIComponent;
|
|
|
251
252
|
mergePath,
|
|
252
253
|
splitPath,
|
|
253
254
|
splitRoutingPath,
|
|
254
|
-
tryDecode
|
|
255
|
+
tryDecode,
|
|
256
|
+
tryDecodeURI
|
|
255
257
|
});
|
|
@@ -61,7 +61,7 @@ const validator = (target, validationFunc) => {
|
|
|
61
61
|
throw new import_http_exception.HTTPException(400, { message });
|
|
62
62
|
}
|
|
63
63
|
}
|
|
64
|
-
const form =
|
|
64
|
+
const form = /* @__PURE__ */ Object.create(null);
|
|
65
65
|
formData.forEach((value2, key) => {
|
|
66
66
|
if (key.endsWith("[]")) {
|
|
67
67
|
;
|
|
@@ -69,7 +69,7 @@ const validator = (target, validationFunc) => {
|
|
|
69
69
|
} else if (Array.isArray(form[key])) {
|
|
70
70
|
;
|
|
71
71
|
form[key].push(value2);
|
|
72
|
-
} else if (key
|
|
72
|
+
} else if (Object.hasOwn(form, key)) {
|
|
73
73
|
form[key] = [form[key], value2];
|
|
74
74
|
} else {
|
|
75
75
|
form[key] = value2;
|
|
@@ -11,6 +11,11 @@ var SSEStreamingApi = class extends StreamingApi {
|
|
|
11
11
|
const dataLines = data.split(/\r\n|\r|\n/).map((line) => {
|
|
12
12
|
return `data: ${line}`;
|
|
13
13
|
}).join("\n");
|
|
14
|
+
for (const key of ["event", "id", "retry"]) {
|
|
15
|
+
if (message[key] && /[\r\n]/.test(message[key])) {
|
|
16
|
+
throw new Error(`${key} must not contain "\\r" or "\\n"`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
14
19
|
const sseData = [
|
|
15
20
|
message.event && `event: ${message.event}`,
|
|
16
21
|
dataLines,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
// src/middleware/serve-static/index.ts
|
|
2
2
|
import { COMPRESSIBLE_CONTENT_TYPE_REGEX } from "../../utils/compress.js";
|
|
3
3
|
import { getMimeType } from "../../utils/mime.js";
|
|
4
|
+
import { tryDecodeURI } from "../../utils/url.js";
|
|
4
5
|
import { defaultJoin } from "./path.js";
|
|
5
6
|
var ENCODINGS = {
|
|
6
7
|
br: ".br",
|
|
@@ -22,7 +23,7 @@ var serveStatic = (options) => {
|
|
|
22
23
|
filename = options.path;
|
|
23
24
|
} else {
|
|
24
25
|
try {
|
|
25
|
-
filename =
|
|
26
|
+
filename = tryDecodeURI(c.req.path);
|
|
26
27
|
if (/(?:^|[\/\\])\.\.(?:$|[\/\\])/.test(filename)) {
|
|
27
28
|
throw new Error();
|
|
28
29
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Hono } from '../hono';
|
|
2
2
|
import type { HonoBase } from '../hono-base';
|
|
3
3
|
import type { METHODS, METHOD_NAME_ALL_LOWERCASE } from '../router';
|
|
4
|
-
import type { Endpoint, KnownResponseFormat, ResponseFormat, Schema } from '../types';
|
|
4
|
+
import type { Endpoint, ExtractSchema, KnownResponseFormat, ResponseFormat, Schema } from '../types';
|
|
5
5
|
import type { StatusCode, SuccessStatusCode } from '../utils/http-status';
|
|
6
6
|
import type { HasRequiredKeys } from '../utils/types';
|
|
7
7
|
/**
|
|
@@ -102,16 +102,19 @@ type ClientResponseOfEndpoint<T extends Endpoint = Endpoint> = T extends {
|
|
|
102
102
|
outputFormat: infer F;
|
|
103
103
|
status: infer S;
|
|
104
104
|
} ? ClientResponse<O, S extends number ? S : never, F extends ResponseFormat ? F : never> : never;
|
|
105
|
-
export interface ClientResponse<T, U extends number = StatusCode, F extends ResponseFormat = ResponseFormat>
|
|
105
|
+
export interface ClientResponse<T, U extends number = StatusCode, F extends ResponseFormat = ResponseFormat> {
|
|
106
106
|
readonly body: ReadableStream | null;
|
|
107
107
|
readonly bodyUsed: boolean;
|
|
108
108
|
ok: U extends SuccessStatusCode ? true : U extends Exclude<StatusCode, SuccessStatusCode> ? false : boolean;
|
|
109
|
+
redirected: boolean;
|
|
109
110
|
status: U;
|
|
110
111
|
statusText: string;
|
|
112
|
+
type: 'basic' | 'cors' | 'default' | 'error' | 'opaque' | 'opaqueredirect';
|
|
111
113
|
headers: Headers;
|
|
112
114
|
url: string;
|
|
113
115
|
redirect(url: string, status: number): Response;
|
|
114
116
|
clone(): Response;
|
|
117
|
+
bytes(): Promise<Uint8Array<ArrayBuffer>>;
|
|
115
118
|
json(): F extends 'text' ? Promise<never> : F extends 'json' ? Promise<T> : Promise<unknown>;
|
|
116
119
|
text(): F extends 'text' ? (T extends string ? Promise<T> : Promise<never>) : Promise<string>;
|
|
117
120
|
blob(): Promise<Blob>;
|
|
@@ -202,5 +205,5 @@ type ModSchema<D, Def extends GlobalResponseDefinition> = {
|
|
|
202
205
|
[M in keyof D[K]]: ModRoute<D[K][M], Def>;
|
|
203
206
|
};
|
|
204
207
|
};
|
|
205
|
-
export type ApplyGlobalResponse<App, Def extends GlobalResponseDefinition> = App extends HonoBase<infer E, infer
|
|
208
|
+
export type ApplyGlobalResponse<App, Def extends GlobalResponseDefinition> = App extends HonoBase<infer E, infer _ extends Schema, infer B> ? ModSchema<ExtractSchema<App>, Def> extends infer S extends Schema ? Hono<E, S, B> : never : never;
|
|
206
209
|
export {};
|
|
@@ -197,7 +197,7 @@ declare class Hono<E extends Env = Env, S extends Schema = {}, BasePath extends
|
|
|
197
197
|
* ```
|
|
198
198
|
* @see https://hono.dev/docs/api/hono#request
|
|
199
199
|
*/
|
|
200
|
-
request: (input:
|
|
200
|
+
request: (input: Request | string | URL, requestInit?: RequestInit, Env?: E["Bindings"] | {}, executionCtx?: ExecutionContext) => Response | Promise<Response>;
|
|
201
201
|
/**
|
|
202
202
|
* `.fire()` automatically adds a global fetch event listener.
|
|
203
203
|
* This can be useful for environments that adhere to the Service Worker API, such as non-ES module Cloudflare Workers.
|
|
@@ -3,6 +3,6 @@ export type { JwtVariables };
|
|
|
3
3
|
export { jwt, verifyWithJwks, verify, decode, sign } from './jwt';
|
|
4
4
|
export { AlgorithmTypes } from '../../utils/jwt/jwa';
|
|
5
5
|
declare module '../..' {
|
|
6
|
-
interface ContextVariableMap extends JwtVariables {
|
|
6
|
+
interface ContextVariableMap extends JwtVariables<unknown> {
|
|
7
7
|
}
|
|
8
8
|
}
|
package/dist/types/types.d.ts
CHANGED
|
@@ -50,26 +50,26 @@ export interface HTTPResponseError extends Error {
|
|
|
50
50
|
export type ErrorHandler<E extends Env = any> = (err: Error | HTTPResponseError, c: Context<E>) => Response | Promise<Response>;
|
|
51
51
|
export interface HandlerInterface<E extends Env = Env, M extends string = string, S extends Schema = BlankSchema, BasePath extends string = '/', CurrentPath extends string = BasePath> {
|
|
52
52
|
<P extends string = CurrentPath, I extends Input = BlankInput, R extends HandlerResponse<any> = any, E2 extends Env = E>(handler: H<E2, P, I, R>): HonoBase<IntersectNonAnyTypes<[E, E2]>, S & ToSchema<M, P, I, MergeTypedResponse<R>>, BasePath, CurrentPath>;
|
|
53
|
-
<P extends string = CurrentPath, I extends Input = BlankInput, I2 extends Input = I, R extends HandlerResponse<any> = any, E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>, M1 extends H<E2, P,
|
|
53
|
+
<P extends string = CurrentPath, I extends Input = BlankInput, I2 extends Input = I, R extends HandlerResponse<any> = any, E2 extends Env = E, E3 extends Env = IntersectNonAnyTypes<[E, E2]>, M1 extends H<E2, P, I> = H<E2, P, I>>(...handlers: [H<E2, P, I> & M1, H<E3, P, I2, R>]): HonoBase<IntersectNonAnyTypes<[E, E2, E3]>, S & ToSchema<M, P, I2, MergeTypedResponse<R> | MergeMiddlewareResponse<M1>>, BasePath, CurrentPath>;
|
|
54
54
|
<P extends string, MergedPath extends MergePath<BasePath, P>, R extends HandlerResponse<any> = any, I extends Input = BlankInput, E2 extends Env = E>(path: P, handler: H<E2, MergedPath, I, R>): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R>, S, M, P, I, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
55
|
-
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, M1 extends H<E2, P,
|
|
56
|
-
<P extends string, MergedPath extends 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]>, M1 extends H<E2, MergedPath,
|
|
57
|
-
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, M1 extends H<E2, P,
|
|
58
|
-
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, M1 extends H<E2, MergedPath,
|
|
59
|
-
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, M1 extends H<E2, P,
|
|
55
|
+
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>>(...handlers: [H<E2, P, I> & M1, H<E3, P, I2> & M2, H<E4, P, I3, R>]): HonoBase<IntersectNonAnyTypes<[E, E2, E3, E4]>, S & ToSchema<M, P, I3, MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2>>, BasePath, CurrentPath>;
|
|
56
|
+
<P extends string, MergedPath extends 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]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>>(path: P, ...handlers: [H<E2, MergedPath, I> & M1, H<E3, MergedPath, I2, R>]): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R> | MergeMiddlewareResponse<M1>, S, M, P, I2, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
57
|
+
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>, M3 extends H<E4, P, I3> = H<E4, P, I3>>(...handlers: [H<E2, P, I> & M1, H<E3, P, I2> & M2, H<E4, P, I3> & M3, H<E5, P, I4, R>]): HonoBase<IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, S & ToSchema<M, P, I4, MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3>>, BasePath, CurrentPath>;
|
|
58
|
+
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>, M2 extends H<E3, MergedPath, I2> = H<E3, MergedPath, I2>>(path: P, ...handlers: [H<E2, MergedPath, I> & M1, H<E3, MergedPath, I2> & M2, H<E4, MergedPath, I3, R>]): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2>, S, M, P, I3, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
59
|
+
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>, M3 extends H<E4, P, I3> = H<E4, P, I3>, M4 extends H<E5, P, I4> = H<E5, P, I4>>(...handlers: [
|
|
60
60
|
H<E2, P, I> & M1,
|
|
61
61
|
H<E3, P, I2> & M2,
|
|
62
62
|
H<E4, P, I3> & M3,
|
|
63
63
|
H<E5, P, I4> & M4,
|
|
64
64
|
H<E6, P, I5, R>
|
|
65
65
|
]): HonoBase<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, S & ToSchema<M, P, I5, MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4>>, BasePath, CurrentPath>;
|
|
66
|
-
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, M1 extends H<E2, MergedPath,
|
|
66
|
+
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>, M2 extends H<E3, MergedPath, I2> = H<E3, MergedPath, I2>, M3 extends H<E4, MergedPath, I3> = H<E4, MergedPath, I3>>(path: P, ...handlers: [
|
|
67
67
|
H<E2, MergedPath, I> & M1,
|
|
68
68
|
H<E3, MergedPath, I2> & M2,
|
|
69
69
|
H<E4, MergedPath, I3> & M3,
|
|
70
70
|
H<E5, MergedPath, I4, R>
|
|
71
71
|
]): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3>, S, M, P, I4, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
72
|
-
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, M1 extends H<E2, P,
|
|
72
|
+
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>, M3 extends H<E4, P, I3> = H<E4, P, I3>, M4 extends H<E5, P, I4> = H<E5, P, I4>, M5 extends H<E6, P, I5> = H<E6, P, I5>>(...handlers: [
|
|
73
73
|
H<E2, P, I> & M1,
|
|
74
74
|
H<E3, P, I2> & M2,
|
|
75
75
|
H<E4, P, I3> & M3,
|
|
@@ -77,14 +77,14 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
77
77
|
H<E6, P, I5> & M5,
|
|
78
78
|
H<E7, P, I6, R>
|
|
79
79
|
]): HonoBase<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, S & ToSchema<M, P, I6, MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5>>, BasePath, CurrentPath>;
|
|
80
|
-
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, M1 extends H<E2, MergedPath,
|
|
80
|
+
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>, M2 extends H<E3, MergedPath, I2> = H<E3, MergedPath, I2>, M3 extends H<E4, MergedPath, I3> = H<E4, MergedPath, I3>, M4 extends H<E5, MergedPath, I4> = H<E5, MergedPath, I4>>(path: P, ...handlers: [
|
|
81
81
|
H<E2, MergedPath, I> & M1,
|
|
82
82
|
H<E3, MergedPath, I2> & M2,
|
|
83
83
|
H<E4, MergedPath, I3> & M3,
|
|
84
84
|
H<E5, MergedPath, I4> & M4,
|
|
85
85
|
H<E6, MergedPath, I5, R>
|
|
86
86
|
]): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4>, S, M, P, I5, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
87
|
-
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, M1 extends H<E2, P,
|
|
87
|
+
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>, M3 extends H<E4, P, I3> = H<E4, P, I3>, M4 extends H<E5, P, I4> = H<E5, P, I4>, M5 extends H<E6, P, I5> = H<E6, P, I5>, M6 extends H<E7, P, I6> = H<E7, P, I6>>(...handlers: [
|
|
88
88
|
H<E2, P, I> & M1,
|
|
89
89
|
H<E3, P, I2> & M2,
|
|
90
90
|
H<E4, P, I3> & M3,
|
|
@@ -93,7 +93,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
93
93
|
H<E7, P, I6> & M6,
|
|
94
94
|
H<E8, P, I7, R>
|
|
95
95
|
]): HonoBase<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, S & ToSchema<M, P, I7, MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5> | MergeMiddlewareResponse<M6>>, BasePath, CurrentPath>;
|
|
96
|
-
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, M1 extends H<E2, MergedPath,
|
|
96
|
+
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>, M2 extends H<E3, MergedPath, I2> = H<E3, MergedPath, I2>, M3 extends H<E4, MergedPath, I3> = H<E4, MergedPath, I3>, M4 extends H<E5, MergedPath, I4> = H<E5, MergedPath, I4>, M5 extends H<E6, MergedPath, I5> = H<E6, MergedPath, I5>>(path: P, ...handlers: [
|
|
97
97
|
H<E2, MergedPath, I> & M1,
|
|
98
98
|
H<E3, MergedPath, I2> & M2,
|
|
99
99
|
H<E4, MergedPath, I3> & M3,
|
|
@@ -101,7 +101,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
101
101
|
H<E6, MergedPath, I5> & M5,
|
|
102
102
|
H<E7, MergedPath, I6, R>
|
|
103
103
|
]): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5>, S, M, P, I6, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
104
|
-
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, M1 extends H<E2, P,
|
|
104
|
+
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>, M3 extends H<E4, P, I3> = H<E4, P, I3>, M4 extends H<E5, P, I4> = H<E5, P, I4>, M5 extends H<E6, P, I5> = H<E6, P, I5>, M6 extends H<E7, P, I6> = H<E7, P, I6>, M7 extends H<E8, P, I7> = H<E8, P, I7>>(...handlers: [
|
|
105
105
|
H<E2, P, I> & M1,
|
|
106
106
|
H<E3, P, I2> & M2,
|
|
107
107
|
H<E4, P, I3> & M3,
|
|
@@ -111,7 +111,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
111
111
|
H<E8, P, I7> & M7,
|
|
112
112
|
H<E9, P, I8, R>
|
|
113
113
|
]): HonoBase<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, S & ToSchema<M, P, I8, MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5> | MergeMiddlewareResponse<M6> | MergeMiddlewareResponse<M7>>, BasePath, CurrentPath>;
|
|
114
|
-
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, M1 extends H<E2, MergedPath,
|
|
114
|
+
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>, M2 extends H<E3, MergedPath, I2> = H<E3, MergedPath, I2>, M3 extends H<E4, MergedPath, I3> = H<E4, MergedPath, I3>, M4 extends H<E5, MergedPath, I4> = H<E5, MergedPath, I4>, M5 extends H<E6, MergedPath, I5> = H<E6, MergedPath, I5>, M6 extends H<E7, MergedPath, I6> = H<E7, MergedPath, I6>>(path: P, ...handlers: [
|
|
115
115
|
H<E2, MergedPath, I> & M1,
|
|
116
116
|
H<E3, MergedPath, I2> & M2,
|
|
117
117
|
H<E4, MergedPath, I3> & M3,
|
|
@@ -120,7 +120,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
120
120
|
H<E7, MergedPath, I6> & M6,
|
|
121
121
|
H<E8, MergedPath, I7, R>
|
|
122
122
|
]): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5> | MergeMiddlewareResponse<M6>, S, M, P, I7, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
123
|
-
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, M1 extends H<E2, P,
|
|
123
|
+
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>, M3 extends H<E4, P, I3> = H<E4, P, I3>, M4 extends H<E5, P, I4> = H<E5, P, I4>, M5 extends H<E6, P, I5> = H<E6, P, I5>, M6 extends H<E7, P, I6> = H<E7, P, I6>, M7 extends H<E8, P, I7> = H<E8, P, I7>, M8 extends H<E9, P, I8> = H<E9, P, I8>>(...handlers: [
|
|
124
124
|
H<E2, P, I> & M1,
|
|
125
125
|
H<E3, P, I2> & M2,
|
|
126
126
|
H<E4, P, I3> & M3,
|
|
@@ -131,7 +131,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
131
131
|
H<E9, P, I8> & M8,
|
|
132
132
|
H<E10, P, I9, R>
|
|
133
133
|
]): HonoBase<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, S & ToSchema<M, P, I9, MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5> | MergeMiddlewareResponse<M6> | MergeMiddlewareResponse<M7> | MergeMiddlewareResponse<M8>>, BasePath, CurrentPath>;
|
|
134
|
-
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, M1 extends H<E2, MergedPath,
|
|
134
|
+
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>, M2 extends H<E3, MergedPath, I2> = H<E3, MergedPath, I2>, M3 extends H<E4, MergedPath, I3> = H<E4, MergedPath, I3>, M4 extends H<E5, MergedPath, I4> = H<E5, MergedPath, I4>, M5 extends H<E6, MergedPath, I5> = H<E6, MergedPath, I5>, M6 extends H<E7, MergedPath, I6> = H<E7, MergedPath, I6>, M7 extends H<E8, MergedPath, I7> = H<E8, MergedPath, I7>>(path: P, ...handlers: [
|
|
135
135
|
H<E2, MergedPath, I> & M1,
|
|
136
136
|
H<E3, MergedPath, I2> & M2,
|
|
137
137
|
H<E4, MergedPath, I3> & M3,
|
|
@@ -141,7 +141,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
141
141
|
H<E8, MergedPath, I7> & M7,
|
|
142
142
|
H<E9, MergedPath, I8, R>
|
|
143
143
|
]): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5> | MergeMiddlewareResponse<M6> | MergeMiddlewareResponse<M7>, S, M, P, I8, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
144
|
-
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, M1 extends H<E2, P,
|
|
144
|
+
<P extends string = CurrentPath, 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, M1 extends H<E2, P, I> = H<E2, P, I>, M2 extends H<E3, P, I2> = H<E3, P, I2>, M3 extends H<E4, P, I3> = H<E4, P, I3>, M4 extends H<E5, P, I4> = H<E5, P, I4>, M5 extends H<E6, P, I5> = H<E6, P, I5>, M6 extends H<E7, P, I6> = H<E7, P, I6>, M7 extends H<E8, P, I7> = H<E8, P, I7>, M8 extends H<E9, P, I8> = H<E9, P, I8>, M9 extends H<E10, P, I9> = H<E10, P, I9>>(...handlers: [
|
|
145
145
|
H<E2, P, I> & M1,
|
|
146
146
|
H<E3, P, I2> & M2,
|
|
147
147
|
H<E4, P, I3> & M3,
|
|
@@ -153,7 +153,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
153
153
|
H<E10, P, I9> & M9,
|
|
154
154
|
H<E11, P, I10, R>
|
|
155
155
|
]): HonoBase<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11]>, S & ToSchema<M, P, I10, MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5> | MergeMiddlewareResponse<M6> | MergeMiddlewareResponse<M7> | MergeMiddlewareResponse<M8> | MergeMiddlewareResponse<M9>>, BasePath, CurrentPath>;
|
|
156
|
-
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, M1 extends H<E2, MergedPath,
|
|
156
|
+
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>, M2 extends H<E3, MergedPath, I2> = H<E3, MergedPath, I2>, M3 extends H<E4, MergedPath, I3> = H<E4, MergedPath, I3>, M4 extends H<E5, MergedPath, I4> = H<E5, MergedPath, I4>, M5 extends H<E6, MergedPath, I5> = H<E6, MergedPath, I5>, M6 extends H<E7, MergedPath, I6> = H<E7, MergedPath, I6>, M7 extends H<E8, MergedPath, I7> = H<E8, MergedPath, I7>, M8 extends H<E9, MergedPath, I8> = H<E9, MergedPath, I8>>(path: P, ...handlers: [
|
|
157
157
|
H<E2, MergedPath, I> & M1,
|
|
158
158
|
H<E3, MergedPath, I2> & M2,
|
|
159
159
|
H<E4, MergedPath, I3> & M3,
|
|
@@ -164,7 +164,7 @@ export interface HandlerInterface<E extends Env = Env, M extends string = string
|
|
|
164
164
|
H<E9, MergedPath, I8> & M8,
|
|
165
165
|
H<E10, MergedPath, I9, R>
|
|
166
166
|
]): HonoBase<E, AddSchemaIfHasResponse<MergeTypedResponse<R> | MergeMiddlewareResponse<M1> | MergeMiddlewareResponse<M2> | MergeMiddlewareResponse<M3> | MergeMiddlewareResponse<M4> | MergeMiddlewareResponse<M5> | MergeMiddlewareResponse<M6> | MergeMiddlewareResponse<M7> | MergeMiddlewareResponse<M8>, S, M, P, I9, BasePath>, BasePath, MergePath<BasePath, P>>;
|
|
167
|
-
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, M1 extends H<E2, MergedPath,
|
|
167
|
+
<P extends string, MergedPath extends 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 = IntersectNonAnyTypes<[E, E2]>, E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>, E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>, E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, M1 extends H<E2, MergedPath, I> = H<E2, MergedPath, I>, M2 extends H<E3, MergedPath, I2> = H<E3, MergedPath, I2>, M3 extends H<E4, MergedPath, I3> = H<E4, MergedPath, I3>, M4 extends H<E5, MergedPath, I4> = H<E5, MergedPath, I4>, M5 extends H<E6, MergedPath, I5> = H<E6, MergedPath, I5>, M6 extends H<E7, MergedPath, I6> = H<E7, MergedPath, I6>, M7 extends H<E8, MergedPath, I7> = H<E8, MergedPath, I7>, M8 extends H<E9, MergedPath, I8> = H<E9, MergedPath, I8>, M9 extends H<E10, MergedPath, I9> = H<E10, MergedPath, I9>>(path: P, ...handlers: [
|
|
168
168
|
H<E2, MergedPath, I> & M1,
|
|
169
169
|
H<E3, MergedPath, I2> & M2,
|
|
170
170
|
H<E4, MergedPath, I3> & M3,
|
|
@@ -8,6 +8,16 @@ export declare const splitRoutingPath: (routePath: string) => string[];
|
|
|
8
8
|
export declare const getPattern: (label: string, next?: string) => Pattern | null;
|
|
9
9
|
type Decoder = (str: string) => string;
|
|
10
10
|
export declare const tryDecode: (str: string, decoder: Decoder) => string;
|
|
11
|
+
/**
|
|
12
|
+
* Try to apply decodeURI() to given string.
|
|
13
|
+
* If it fails, skip invalid percent encoding or invalid UTF-8 sequences, and apply decodeURI() to the rest as much as possible.
|
|
14
|
+
* @param str The string to decode.
|
|
15
|
+
* @returns The decoded string that sometimes contains undecodable percent encoding.
|
|
16
|
+
* @example
|
|
17
|
+
* tryDecodeURI('Hello%20World') // 'Hello World'
|
|
18
|
+
* tryDecodeURI('Hello%20World/%A4%A2') // 'Hello World/%A4%A2'
|
|
19
|
+
*/
|
|
20
|
+
export declare const tryDecodeURI: (str: string) => string;
|
|
11
21
|
export declare const getPath: (request: Request) => string;
|
|
12
22
|
export declare const getQueryStrings: (url: string) => string;
|
|
13
23
|
export declare const getPathNoStrict: (request: Request) => string;
|
package/dist/utils/cookie.js
CHANGED
|
@@ -87,6 +87,11 @@ var _serialize = (name, value, opt = {}) => {
|
|
|
87
87
|
throw new Error("__Host- Cookie must not have Domain attributes");
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
|
+
for (const key of ["domain", "path"]) {
|
|
91
|
+
if (opt[key] && /[;\r\n]/.test(opt[key])) {
|
|
92
|
+
throw new Error(`${key} must not contain ";", "\\r", or "\\n"`);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
90
95
|
if (opt && typeof opt.maxAge === "number" && opt.maxAge >= 0) {
|
|
91
96
|
if (opt.maxAge > 3456e4) {
|
|
92
97
|
throw new Error(
|
package/dist/utils/jwt/jwt.js
CHANGED
|
@@ -69,7 +69,7 @@ var verify = async (token, publicKey, algOrOptions) => {
|
|
|
69
69
|
if (header.alg !== alg) {
|
|
70
70
|
throw new JwtAlgorithmMismatch(alg, header.alg);
|
|
71
71
|
}
|
|
72
|
-
const now = Date.now() / 1e3
|
|
72
|
+
const now = Math.floor(Date.now() / 1e3);
|
|
73
73
|
if (nbf && payload.nbf && payload.nbf > now) {
|
|
74
74
|
throw new JwtTokenNotBefore(token);
|
|
75
75
|
}
|
|
@@ -134,6 +134,7 @@ var verifyWithJwks = async (token, options, init) => {
|
|
|
134
134
|
if (!options.allowedAlgorithms.includes(header.alg)) {
|
|
135
135
|
throw new JwtAlgorithmNotAllowed(header.alg, options.allowedAlgorithms);
|
|
136
136
|
}
|
|
137
|
+
let verifyKeys = options.keys ? [...options.keys] : void 0;
|
|
137
138
|
if (options.jwks_uri) {
|
|
138
139
|
const response = await fetch(options.jwks_uri, init);
|
|
139
140
|
if (!response.ok) {
|
|
@@ -146,15 +147,12 @@ var verifyWithJwks = async (token, options, init) => {
|
|
|
146
147
|
if (!Array.isArray(data.keys)) {
|
|
147
148
|
throw new Error('invalid JWKS response. "keys" field is not an array');
|
|
148
149
|
}
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
options.keys = data.keys;
|
|
153
|
-
}
|
|
154
|
-
} else if (!options.keys) {
|
|
150
|
+
verifyKeys ??= [];
|
|
151
|
+
verifyKeys.push(...data.keys);
|
|
152
|
+
} else if (!verifyKeys) {
|
|
155
153
|
throw new Error('verifyWithJwks requires options for either "keys" or "jwks_uri" or both');
|
|
156
154
|
}
|
|
157
|
-
const matchingKey =
|
|
155
|
+
const matchingKey = verifyKeys.find((key) => key.kid === header.kid);
|
|
158
156
|
if (!matchingKey) {
|
|
159
157
|
throw new JwtTokenInvalid(token);
|
|
160
158
|
}
|
package/dist/utils/url.js
CHANGED
|
@@ -39,7 +39,7 @@ var validator = (target, validationFunc) => {
|
|
|
39
39
|
throw new HTTPException(400, { message });
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
const form =
|
|
42
|
+
const form = /* @__PURE__ */ Object.create(null);
|
|
43
43
|
formData.forEach((value2, key) => {
|
|
44
44
|
if (key.endsWith("[]")) {
|
|
45
45
|
;
|
|
@@ -47,7 +47,7 @@ var validator = (target, validationFunc) => {
|
|
|
47
47
|
} else if (Array.isArray(form[key])) {
|
|
48
48
|
;
|
|
49
49
|
form[key].push(value2);
|
|
50
|
-
} else if (key
|
|
50
|
+
} else if (Object.hasOwn(form, key)) {
|
|
51
51
|
form[key] = [form[key], value2];
|
|
52
52
|
} else {
|
|
53
53
|
form[key] = value2;
|