hono 4.6.7 → 4.6.9
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/adapter/bun/websocket.js +4 -6
- package/dist/adapter/cloudflare-workers/websocket.js +34 -39
- package/dist/adapter/deno/serve-static.js +2 -1
- package/dist/adapter/lambda-edge/handler.js +1 -1
- package/dist/cjs/adapter/bun/websocket.js +4 -6
- package/dist/cjs/adapter/cloudflare-workers/websocket.js +34 -39
- package/dist/cjs/adapter/deno/serve-static.js +2 -1
- package/dist/cjs/adapter/lambda-edge/handler.js +1 -1
- package/dist/cjs/client/client.js +3 -3
- package/dist/cjs/compose.js +4 -3
- package/dist/cjs/context.js +12 -9
- package/dist/cjs/helper/cookie/index.js +1 -1
- package/dist/cjs/helper/html/index.js +1 -1
- package/dist/cjs/helper/ssg/ssg.js +2 -2
- package/dist/cjs/helper/ssg/utils.js +2 -2
- package/dist/cjs/helper/websocket/index.js +1 -4
- package/dist/cjs/hono-base.js +29 -32
- package/dist/cjs/jsx/base.js +8 -3
- package/dist/cjs/jsx/constants.js +3 -0
- package/dist/cjs/jsx/dom/index.js +8 -2
- package/dist/cjs/jsx/dom/render.js +15 -12
- package/dist/cjs/middleware/etag/digest.js +59 -0
- package/dist/cjs/middleware/etag/index.js +5 -2
- package/dist/cjs/middleware/ip-restriction/index.js +3 -3
- package/dist/cjs/middleware/jsx-renderer/index.js +2 -1
- package/dist/cjs/middleware/logger/index.js +13 -11
- package/dist/cjs/middleware/timing/timing.js +5 -7
- package/dist/cjs/request.js +15 -14
- package/dist/cjs/router/pattern-router/router.js +4 -4
- package/dist/cjs/router/reg-exp-router/router.js +5 -5
- package/dist/cjs/router/reg-exp-router/trie.js +2 -2
- package/dist/cjs/router/trie-router/node.js +9 -7
- package/dist/cjs/utils/color.js +1 -1
- package/dist/cjs/utils/cookie.js +13 -6
- package/dist/cjs/utils/crypto.js +0 -9
- package/dist/cjs/utils/headers.js +16 -0
- package/dist/cjs/utils/jwt/jwt.js +1 -1
- package/dist/cjs/utils/mime.js +2 -1
- package/dist/cjs/utils/url.js +9 -6
- package/dist/client/client.js +3 -3
- package/dist/compose.js +4 -3
- package/dist/context.js +12 -9
- package/dist/helper/cookie/index.js +1 -1
- package/dist/helper/html/index.js +1 -1
- package/dist/helper/ssg/ssg.js +2 -2
- package/dist/helper/ssg/utils.js +2 -2
- package/dist/helper/websocket/index.js +1 -4
- package/dist/hono-base.js +29 -32
- package/dist/jsx/base.js +7 -3
- package/dist/jsx/constants.js +2 -0
- package/dist/jsx/dom/index.js +7 -1
- package/dist/jsx/dom/render.js +22 -13
- package/dist/middleware/etag/digest.js +36 -0
- package/dist/middleware/etag/index.js +5 -2
- package/dist/middleware/ip-restriction/index.js +3 -3
- package/dist/middleware/jsx-renderer/index.js +2 -1
- package/dist/middleware/logger/index.js +13 -11
- package/dist/middleware/timing/timing.js +5 -7
- package/dist/request.js +16 -15
- package/dist/router/pattern-router/router.js +4 -4
- package/dist/router/reg-exp-router/router.js +5 -5
- package/dist/router/reg-exp-router/trie.js +2 -2
- package/dist/router/trie-router/node.js +9 -7
- package/dist/types/adapter/bun/websocket.d.ts +5 -3
- package/dist/types/adapter/cloudflare-workers/websocket.d.ts +2 -2
- package/dist/types/adapter/deno/websocket.d.ts +1 -20
- package/dist/types/context.d.ts +2 -2
- package/dist/types/helper/accepts/accepts.d.ts +1 -1
- package/dist/types/helper/websocket/index.d.ts +3 -3
- package/dist/types/hono-base.d.ts +1 -1
- package/dist/types/jsx/base.d.ts +5 -0
- package/dist/types/jsx/constants.d.ts +1 -0
- package/dist/types/jsx/dom/index.d.ts +6 -5
- package/dist/types/jsx/dom/render.d.ts +1 -0
- package/dist/types/middleware/etag/digest.d.ts +1 -0
- package/dist/types/request.d.ts +3 -1
- package/dist/types/types.d.ts +71 -70
- package/dist/types/utils/body.d.ts +2 -2
- package/dist/types/utils/cookie.d.ts +4 -4
- package/dist/types/utils/crypto.d.ts +2 -1
- package/dist/types/utils/headers.d.ts +8 -0
- package/dist/types/utils/mime.d.ts +58 -1
- package/dist/types/utils/url.d.ts +3 -0
- package/dist/utils/color.js +1 -1
- package/dist/utils/cookie.js +13 -6
- package/dist/utils/crypto.js +0 -9
- package/dist/utils/headers.js +0 -0
- package/dist/utils/jwt/jwt.js +1 -1
- package/dist/utils/mime.js +2 -1
- package/dist/utils/url.js +7 -5
- package/package.json +1 -1
|
@@ -8,5 +8,62 @@ export { baseMimes as mimes };
|
|
|
8
8
|
/**
|
|
9
9
|
* Union types for BaseMime
|
|
10
10
|
*/
|
|
11
|
-
export type BaseMime =
|
|
11
|
+
export type BaseMime = (typeof _baseMimes)[keyof typeof _baseMimes];
|
|
12
|
+
declare const _baseMimes: {
|
|
13
|
+
readonly aac: "audio/aac";
|
|
14
|
+
readonly avi: "video/x-msvideo";
|
|
15
|
+
readonly avif: "image/avif";
|
|
16
|
+
readonly av1: "video/av1";
|
|
17
|
+
readonly bin: "application/octet-stream";
|
|
18
|
+
readonly bmp: "image/bmp";
|
|
19
|
+
readonly css: "text/css";
|
|
20
|
+
readonly csv: "text/csv";
|
|
21
|
+
readonly eot: "application/vnd.ms-fontobject";
|
|
22
|
+
readonly epub: "application/epub+zip";
|
|
23
|
+
readonly gif: "image/gif";
|
|
24
|
+
readonly gz: "application/gzip";
|
|
25
|
+
readonly htm: "text/html";
|
|
26
|
+
readonly html: "text/html";
|
|
27
|
+
readonly ico: "image/x-icon";
|
|
28
|
+
readonly ics: "text/calendar";
|
|
29
|
+
readonly jpeg: "image/jpeg";
|
|
30
|
+
readonly jpg: "image/jpeg";
|
|
31
|
+
readonly js: "text/javascript";
|
|
32
|
+
readonly json: "application/json";
|
|
33
|
+
readonly jsonld: "application/ld+json";
|
|
34
|
+
readonly map: "application/json";
|
|
35
|
+
readonly mid: "audio/x-midi";
|
|
36
|
+
readonly midi: "audio/x-midi";
|
|
37
|
+
readonly mjs: "text/javascript";
|
|
38
|
+
readonly mp3: "audio/mpeg";
|
|
39
|
+
readonly mp4: "video/mp4";
|
|
40
|
+
readonly mpeg: "video/mpeg";
|
|
41
|
+
readonly oga: "audio/ogg";
|
|
42
|
+
readonly ogv: "video/ogg";
|
|
43
|
+
readonly ogx: "application/ogg";
|
|
44
|
+
readonly opus: "audio/opus";
|
|
45
|
+
readonly otf: "font/otf";
|
|
46
|
+
readonly pdf: "application/pdf";
|
|
47
|
+
readonly png: "image/png";
|
|
48
|
+
readonly rtf: "application/rtf";
|
|
49
|
+
readonly svg: "image/svg+xml";
|
|
50
|
+
readonly tif: "image/tiff";
|
|
51
|
+
readonly tiff: "image/tiff";
|
|
52
|
+
readonly ts: "video/mp2t";
|
|
53
|
+
readonly ttf: "font/ttf";
|
|
54
|
+
readonly txt: "text/plain";
|
|
55
|
+
readonly wasm: "application/wasm";
|
|
56
|
+
readonly webm: "video/webm";
|
|
57
|
+
readonly weba: "audio/webm";
|
|
58
|
+
readonly webp: "image/webp";
|
|
59
|
+
readonly woff: "font/woff";
|
|
60
|
+
readonly woff2: "font/woff2";
|
|
61
|
+
readonly xhtml: "application/xhtml+xml";
|
|
62
|
+
readonly xml: "application/xml";
|
|
63
|
+
readonly zip: "application/zip";
|
|
64
|
+
readonly "3gp": "video/3gpp";
|
|
65
|
+
readonly "3g2": "video/3gpp2";
|
|
66
|
+
readonly gltf: "model/gltf+json";
|
|
67
|
+
readonly glb: "model/gltf-binary";
|
|
68
|
+
};
|
|
12
69
|
declare const baseMimes: Record<string, BaseMime>;
|
|
@@ -10,6 +10,8 @@ export type Pattern = readonly [
|
|
|
10
10
|
export declare const splitPath: (path: string) => string[];
|
|
11
11
|
export declare const splitRoutingPath: (routePath: string) => string[];
|
|
12
12
|
export declare const getPattern: (label: string) => Pattern | null;
|
|
13
|
+
type Decoder = (str: string) => string;
|
|
14
|
+
export declare const tryDecode: (str: string, decoder: Decoder) => string;
|
|
13
15
|
export declare const getPath: (request: Request) => string;
|
|
14
16
|
export declare const getQueryStrings: (url: string) => string;
|
|
15
17
|
export declare const getPathNoStrict: (request: Request) => string;
|
|
@@ -18,3 +20,4 @@ export declare const checkOptionalParameter: (path: string) => string[] | null;
|
|
|
18
20
|
export declare const getQueryParam: (url: string, key?: string) => string | undefined | Record<string, string>;
|
|
19
21
|
export declare const getQueryParams: (url: string, key?: string) => string[] | undefined | Record<string, string[]>;
|
|
20
22
|
export declare const decodeURIComponent_: typeof decodeURIComponent;
|
|
23
|
+
export {};
|
package/dist/utils/color.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/utils/color.ts
|
|
2
2
|
function getColorEnabled() {
|
|
3
3
|
const { process, Deno } = globalThis;
|
|
4
|
-
const isNoColor = typeof Deno?.noColor === "boolean" ? Deno.noColor :
|
|
4
|
+
const isNoColor = typeof Deno?.noColor === "boolean" ? Deno.noColor : process !== void 0 ? "NO_COLOR" in process?.env : false;
|
|
5
5
|
return !isNoColor;
|
|
6
6
|
}
|
|
7
7
|
export {
|
package/dist/utils/cookie.js
CHANGED
|
@@ -25,16 +25,20 @@ var verifySignature = async (base64Signature, value, secret) => {
|
|
|
25
25
|
var validCookieNameRegEx = /^[\w!#$%&'*.^`|~+-]+$/;
|
|
26
26
|
var validCookieValueRegEx = /^[ !#-:<-[\]-~]*$/;
|
|
27
27
|
var parse = (cookie, name) => {
|
|
28
|
+
if (name && cookie.indexOf(name) === -1) {
|
|
29
|
+
return {};
|
|
30
|
+
}
|
|
28
31
|
const pairs = cookie.trim().split(";");
|
|
29
|
-
|
|
32
|
+
const parsedCookie = {};
|
|
33
|
+
for (let pairStr of pairs) {
|
|
30
34
|
pairStr = pairStr.trim();
|
|
31
35
|
const valueStartPos = pairStr.indexOf("=");
|
|
32
36
|
if (valueStartPos === -1) {
|
|
33
|
-
|
|
37
|
+
continue;
|
|
34
38
|
}
|
|
35
39
|
const cookieName = pairStr.substring(0, valueStartPos).trim();
|
|
36
40
|
if (name && name !== cookieName || !validCookieNameRegEx.test(cookieName)) {
|
|
37
|
-
|
|
41
|
+
continue;
|
|
38
42
|
}
|
|
39
43
|
let cookieValue = pairStr.substring(valueStartPos + 1).trim();
|
|
40
44
|
if (cookieValue.startsWith('"') && cookieValue.endsWith('"')) {
|
|
@@ -42,9 +46,12 @@ var parse = (cookie, name) => {
|
|
|
42
46
|
}
|
|
43
47
|
if (validCookieValueRegEx.test(cookieValue)) {
|
|
44
48
|
parsedCookie[cookieName] = decodeURIComponent_(cookieValue);
|
|
49
|
+
if (name) {
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
45
52
|
}
|
|
46
|
-
|
|
47
|
-
|
|
53
|
+
}
|
|
54
|
+
return parsedCookie;
|
|
48
55
|
};
|
|
49
56
|
var parseSigned = async (cookie, secret, name) => {
|
|
50
57
|
const parsedCookie = {};
|
|
@@ -86,7 +93,7 @@ var _serialize = (name, value, opt = {}) => {
|
|
|
86
93
|
"Cookies Max-Age SHOULD NOT be greater than 400 days (34560000 seconds) in duration."
|
|
87
94
|
);
|
|
88
95
|
}
|
|
89
|
-
cookie += `; Max-Age=${
|
|
96
|
+
cookie += `; Max-Age=${opt.maxAge | 0}`;
|
|
90
97
|
}
|
|
91
98
|
if (opt.domain && opt.prefix !== "host") {
|
|
92
99
|
cookie += `; Domain=${opt.domain}`;
|
package/dist/utils/crypto.js
CHANGED
|
@@ -16,15 +16,6 @@ var md5 = async (data) => {
|
|
|
16
16
|
};
|
|
17
17
|
var createHash = async (data, algorithm) => {
|
|
18
18
|
let sourceBuffer;
|
|
19
|
-
if (data instanceof ReadableStream) {
|
|
20
|
-
let body = "";
|
|
21
|
-
const reader = data.getReader();
|
|
22
|
-
await reader?.read().then(async (chuck) => {
|
|
23
|
-
const value = await createHash(chuck.value || "", algorithm);
|
|
24
|
-
body += value;
|
|
25
|
-
});
|
|
26
|
-
return body;
|
|
27
|
-
}
|
|
28
19
|
if (ArrayBuffer.isView(data) || data instanceof ArrayBuffer) {
|
|
29
20
|
sourceBuffer = data;
|
|
30
21
|
} else {
|
|
File without changes
|
package/dist/utils/jwt/jwt.js
CHANGED
|
@@ -38,7 +38,7 @@ var verify = async (token, publicKey, alg = "HS256") => {
|
|
|
38
38
|
if (!isTokenHeader(header)) {
|
|
39
39
|
throw new JwtHeaderInvalid(header);
|
|
40
40
|
}
|
|
41
|
-
const now =
|
|
41
|
+
const now = Date.now() / 1e3 | 0;
|
|
42
42
|
if (payload.nbf && payload.nbf > now) {
|
|
43
43
|
throw new JwtTokenNotBefore(token);
|
|
44
44
|
}
|
package/dist/utils/mime.js
CHANGED
|
@@ -18,7 +18,7 @@ var getExtension = (mimeType) => {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
var
|
|
21
|
+
var _baseMimes = {
|
|
22
22
|
aac: "audio/aac",
|
|
23
23
|
avi: "video/x-msvideo",
|
|
24
24
|
avif: "image/avif",
|
|
@@ -75,6 +75,7 @@ var baseMimes = {
|
|
|
75
75
|
gltf: "model/gltf+json",
|
|
76
76
|
glb: "model/gltf-binary"
|
|
77
77
|
};
|
|
78
|
+
var baseMimes = _baseMimes;
|
|
78
79
|
export {
|
|
79
80
|
getExtension,
|
|
80
81
|
getMimeType,
|
package/dist/utils/url.js
CHANGED
|
@@ -50,19 +50,20 @@ var getPattern = (label) => {
|
|
|
50
50
|
}
|
|
51
51
|
return null;
|
|
52
52
|
};
|
|
53
|
-
var
|
|
53
|
+
var tryDecode = (str, decoder) => {
|
|
54
54
|
try {
|
|
55
|
-
return
|
|
55
|
+
return decoder(str);
|
|
56
56
|
} catch {
|
|
57
57
|
return str.replace(/(?:%[0-9A-Fa-f]{2})+/g, (match) => {
|
|
58
58
|
try {
|
|
59
|
-
return
|
|
59
|
+
return decoder(match);
|
|
60
60
|
} catch {
|
|
61
61
|
return match;
|
|
62
62
|
}
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
|
+
var tryDecodeURI = (str) => tryDecode(str, decodeURI);
|
|
66
67
|
var getPath = (request) => {
|
|
67
68
|
const url = request.url;
|
|
68
69
|
const start = url.indexOf("/", 8);
|
|
@@ -143,7 +144,7 @@ var _decodeURI = (value) => {
|
|
|
143
144
|
if (value.indexOf("+") !== -1) {
|
|
144
145
|
value = value.replace(/\+/g, " ");
|
|
145
146
|
}
|
|
146
|
-
return
|
|
147
|
+
return value.indexOf("%") !== -1 ? decodeURIComponent_(value) : value;
|
|
147
148
|
};
|
|
148
149
|
var _getQueryParam = (url, key, multiple) => {
|
|
149
150
|
let encoded;
|
|
@@ -225,5 +226,6 @@ export {
|
|
|
225
226
|
getQueryStrings,
|
|
226
227
|
mergePath,
|
|
227
228
|
splitPath,
|
|
228
|
-
splitRoutingPath
|
|
229
|
+
splitRoutingPath,
|
|
230
|
+
tryDecode
|
|
229
231
|
};
|