hono 4.3.11 → 4.4.0
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/README.md +2 -3
- package/dist/adapter/aws-lambda/handler.js +12 -9
- package/dist/adapter/bun/conninfo.js +21 -0
- package/dist/adapter/bun/index.js +2 -0
- package/dist/adapter/bun/websocket.js +1 -3
- package/dist/adapter/cloudflare-workers/conninfo.js +10 -0
- package/dist/adapter/cloudflare-workers/websocket.js +2 -6
- package/dist/adapter/deno/conninfo.js +15 -0
- package/dist/adapter/deno/index.js +2 -0
- package/dist/adapter/lambda-edge/handler.js +3 -3
- package/dist/cjs/adapter/aws-lambda/handler.js +12 -9
- package/dist/cjs/adapter/bun/conninfo.js +44 -0
- package/dist/cjs/adapter/bun/index.js +3 -0
- package/dist/cjs/adapter/cloudflare-workers/conninfo.js +33 -0
- package/dist/cjs/adapter/cloudflare-workers/websocket.js +2 -6
- package/dist/cjs/adapter/deno/conninfo.js +38 -0
- package/dist/cjs/adapter/deno/index.js +3 -0
- package/dist/cjs/adapter/lambda-edge/handler.js +3 -3
- package/dist/cjs/helper/conninfo/index.js +16 -0
- package/dist/cjs/helper/ssg/ssg.js +64 -3
- package/dist/cjs/helper/streaming/text.js +1 -1
- package/dist/cjs/hono-base.js +10 -6
- package/dist/cjs/jsx/base.js +5 -2
- package/dist/cjs/jsx/dom/client.js +68 -0
- package/dist/cjs/jsx/dom/index.js +8 -4
- package/dist/cjs/jsx/dom/jsx-dev-runtime.js +6 -20
- package/dist/cjs/jsx/dom/render.js +41 -25
- package/dist/cjs/jsx/dom/utils.js +15 -0
- package/dist/cjs/jsx/hooks/index.js +4 -1
- package/dist/cjs/jsx/index.js +8 -4
- package/dist/cjs/middleware/jwt/index.js +5 -82
- package/dist/cjs/middleware/jwt/jwt.js +111 -0
- package/dist/cjs/middleware/secure-headers/index.js +3 -123
- package/dist/cjs/middleware/secure-headers/secure-headers.js +150 -0
- package/dist/cjs/middleware/timeout/index.js +48 -0
- package/dist/cjs/middleware/timing/index.js +5 -89
- package/dist/cjs/middleware/timing/timing.js +118 -0
- package/dist/cjs/utils/body.js +34 -9
- package/dist/cjs/utils/jwt/jws.js +4 -5
- package/dist/cjs/utils/jwt/jwt.js +6 -7
- package/dist/cjs/utils/url.js +26 -2
- package/dist/helper/css/index.js +4 -4
- package/dist/helper/html/index.js +1 -1
- package/dist/helper/ssg/ssg.js +63 -5
- package/dist/helper/streaming/text.js +1 -1
- package/dist/hono-base.js +11 -7
- package/dist/jsx/base.js +3 -1
- package/dist/jsx/dom/client.js +44 -0
- package/dist/jsx/dom/css.js +4 -4
- package/dist/jsx/dom/index.js +25 -21
- package/dist/jsx/dom/jsx-dev-runtime.js +6 -20
- package/dist/jsx/dom/render.js +40 -26
- package/dist/jsx/dom/utils.js +14 -0
- package/dist/jsx/hooks/index.js +4 -2
- package/dist/jsx/index.js +22 -18
- package/dist/jsx/jsx-runtime.js +1 -1
- package/dist/middleware/jsx-renderer/index.js +1 -1
- package/dist/middleware/jwt/index.js +1 -78
- package/dist/middleware/jwt/jwt.js +85 -0
- package/dist/middleware/secure-headers/index.js +1 -121
- package/dist/middleware/secure-headers/secure-headers.js +126 -0
- package/dist/middleware/timeout/index.js +25 -0
- package/dist/middleware/timing/index.js +1 -85
- package/dist/middleware/timing/timing.js +92 -0
- package/dist/request.js +1 -1
- package/dist/router/reg-exp-router/router.js +2 -2
- package/dist/router/smart-router/router.js +1 -1
- package/dist/router/trie-router/node.js +1 -1
- package/dist/types/adapter/aws-lambda/handler.d.ts +3 -3
- package/dist/types/adapter/aws-lambda/index.d.ts +4 -0
- package/dist/types/adapter/bun/conninfo.d.ts +7 -0
- package/dist/types/adapter/bun/index.d.ts +5 -0
- package/dist/types/adapter/bun/websocket.d.ts +2 -3
- package/dist/types/adapter/cloudflare-pages/index.d.ts +4 -0
- package/dist/types/adapter/cloudflare-workers/conninfo.d.ts +2 -0
- package/dist/types/adapter/cloudflare-workers/index.d.ts +4 -0
- package/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +2 -2
- package/dist/types/adapter/cloudflare-workers/serve-static.d.ts +1 -2
- package/dist/types/adapter/cloudflare-workers/utils.d.ts +1 -2
- package/dist/types/adapter/deno/conninfo.d.ts +7 -0
- package/dist/types/adapter/deno/index.d.ts +5 -0
- package/dist/types/adapter/lambda-edge/handler.d.ts +1 -2
- package/dist/types/adapter/lambda-edge/index.d.ts +4 -0
- package/dist/types/adapter/netlify/handler.d.ts +1 -7
- package/dist/types/adapter/netlify/index.d.ts +4 -0
- package/dist/types/adapter/netlify/mod.d.ts +0 -1
- package/dist/types/adapter/vercel/index.d.ts +4 -0
- package/dist/types/client/index.d.ts +4 -0
- package/dist/types/compose.d.ts +1 -1
- package/dist/types/helper/accepts/index.d.ts +4 -0
- package/dist/types/helper/adapter/index.d.ts +4 -0
- package/dist/types/helper/conninfo/index.d.ts +40 -0
- package/dist/types/helper/cookie/index.d.ts +5 -1
- package/dist/types/helper/css/index.d.ts +4 -0
- package/dist/types/helper/dev/index.d.ts +4 -0
- package/dist/types/helper/factory/index.d.ts +4 -0
- package/dist/types/helper/html/index.d.ts +4 -0
- package/dist/types/helper/ssg/index.d.ts +4 -0
- package/dist/types/helper/ssg/ssg.d.ts +6 -3
- package/dist/types/helper/streaming/index.d.ts +4 -0
- package/dist/types/helper/testing/index.d.ts +4 -0
- package/dist/types/helper/websocket/index.d.ts +4 -0
- package/dist/types/hono-base.d.ts +15 -15
- package/dist/types/http-exception.d.ts +4 -0
- package/dist/types/index.d.ts +15 -0
- package/dist/types/jsx/base.d.ts +10 -11
- package/dist/types/jsx/components.d.ts +1 -1
- package/dist/types/jsx/context.d.ts +1 -1
- package/dist/types/jsx/dom/client.d.ts +26 -0
- package/dist/types/jsx/dom/components.d.ts +2 -2
- package/dist/types/jsx/dom/css.d.ts +31 -20
- package/dist/types/jsx/dom/index.d.ts +13 -7
- package/dist/types/jsx/dom/jsx-dev-runtime.d.ts +5 -1
- package/dist/types/jsx/dom/jsx-runtime.d.ts +4 -0
- package/dist/types/jsx/dom/render.d.ts +4 -3
- package/dist/types/jsx/dom/utils.d.ts +6 -0
- package/dist/types/jsx/hooks/index.d.ts +4 -0
- package/dist/types/jsx/index.d.ts +13 -7
- package/dist/types/jsx/intrinsic-elements.d.ts +629 -630
- package/dist/types/jsx/jsx-dev-runtime.d.ts +5 -0
- package/dist/types/jsx/jsx-runtime.d.ts +5 -0
- package/dist/types/jsx/streaming.d.ts +5 -1
- package/dist/types/jsx/types.d.ts +1 -0
- package/dist/types/middleware/basic-auth/index.d.ts +35 -0
- package/dist/types/middleware/bearer-auth/index.d.ts +33 -0
- package/dist/types/middleware/body-limit/index.d.ts +28 -11
- package/dist/types/middleware/cache/index.d.ts +29 -0
- package/dist/types/middleware/compress/index.d.ts +20 -0
- package/dist/types/middleware/cors/index.d.ts +43 -0
- package/dist/types/middleware/csrf/index.d.ts +41 -0
- package/dist/types/middleware/etag/index.d.ts +24 -0
- package/dist/types/middleware/jsx-renderer/index.d.ts +63 -2
- package/dist/types/middleware/jwt/index.d.ts +5 -17
- package/dist/types/middleware/jwt/jwt.d.ts +48 -0
- package/dist/types/middleware/logger/index.d.ts +20 -0
- package/dist/types/middleware/method-override/index.d.ts +22 -10
- package/dist/types/middleware/powered-by/index.d.ts +4 -0
- package/dist/types/middleware/pretty-json/index.d.ts +23 -0
- package/dist/types/middleware/secure-headers/index.d.ts +6 -64
- package/dist/types/middleware/secure-headers/secure-headers.d.ts +97 -0
- package/dist/types/middleware/serve-static/index.d.ts +4 -0
- package/dist/types/middleware/timeout/index.d.ts +31 -0
- package/dist/types/middleware/timing/index.d.ts +5 -29
- package/dist/types/middleware/timing/timing.d.ts +111 -0
- package/dist/types/middleware/trailing-slash/index.d.ts +29 -5
- package/dist/types/preset/quick.d.ts +4 -0
- package/dist/types/preset/tiny.d.ts +4 -0
- package/dist/types/request.d.ts +5 -4
- package/dist/types/router/linear-router/index.d.ts +4 -0
- package/dist/types/router/linear-router/router.d.ts +1 -1
- package/dist/types/router/pattern-router/index.d.ts +4 -0
- package/dist/types/router/reg-exp-router/index.d.ts +4 -0
- package/dist/types/router/reg-exp-router/router.d.ts +1 -1
- package/dist/types/router/reg-exp-router/trie.d.ts +1 -1
- package/dist/types/router/smart-router/index.d.ts +4 -0
- package/dist/types/router/smart-router/router.d.ts +1 -1
- package/dist/types/router/trie-router/index.d.ts +4 -0
- package/dist/types/router.d.ts +4 -0
- package/dist/types/types.d.ts +4 -0
- package/dist/types/utils/body.d.ts +61 -3
- package/dist/types/utils/buffer.d.ts +4 -0
- package/dist/types/utils/color.d.ts +4 -0
- package/dist/types/utils/concurrent.d.ts +4 -0
- package/dist/types/utils/cookie.d.ts +4 -0
- package/dist/types/utils/crypto.d.ts +4 -0
- package/dist/types/utils/encode.d.ts +4 -0
- package/dist/types/utils/filepath.d.ts +4 -0
- package/dist/types/utils/handler.d.ts +4 -0
- package/dist/types/utils/html.d.ts +4 -0
- package/dist/types/utils/http-status.d.ts +4 -0
- package/dist/types/utils/jwt/index.d.ts +4 -0
- package/dist/types/utils/jwt/jwt.d.ts +3 -3
- package/dist/types/utils/mime.d.ts +4 -0
- package/dist/types/utils/stream.d.ts +4 -0
- package/dist/types/utils/types.d.ts +4 -0
- package/dist/types/utils/url.d.ts +4 -0
- package/dist/types/validator/index.d.ts +4 -0
- package/dist/types/validator/validator.d.ts +1 -1
- package/dist/utils/body.js +34 -9
- package/dist/utils/jwt/index.js +1 -1
- package/dist/utils/jwt/jws.js +1 -2
- package/dist/utils/jwt/jwt.js +5 -5
- package/dist/utils/url.js +26 -2
- package/package.json +27 -6
- package/dist/cjs/adapter/aws-lambda/awslambda.d.js +0 -1
- package/dist/cjs/helper.js +0 -44
- package/dist/helper.js +0 -18
- /package/dist/{adapter/aws-lambda/awslambda.d.js → helper/conninfo/index.js} +0 -0
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<hr />
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<a href="https://hono.dev"><b>Documentation
|
|
10
|
+
<a href="https://hono.dev"><b>Documentation 👉 hono.dev</b></a><br />
|
|
11
11
|
<i>v4 has been released!</i> <a href="docs/MIGRATION.md">Migration guide</b>
|
|
12
12
|
</p>
|
|
13
13
|
|
|
@@ -17,12 +17,11 @@
|
|
|
17
17
|
[](https://github.com/honojs/hono/blob/main/LICENSE)
|
|
18
18
|
[](https://www.npmjs.com/package/hono)
|
|
19
19
|
[](https://www.npmjs.com/package/hono)
|
|
20
|
+
[](https://jsr.io/@hono/hono)
|
|
20
21
|
[](https://bundlephobia.com/result?p=hono)
|
|
21
22
|
[](https://bundlephobia.com/result?p=hono)
|
|
22
|
-
[](https://www.npmjs.com/package/hono)
|
|
23
23
|
[](https://github.com/honojs/hono/pulse)
|
|
24
24
|
[](https://github.com/honojs/hono/commits/main)
|
|
25
|
-
[](https://doc.deno.land/https/deno.land/x/hono/mod.ts)
|
|
26
25
|
[](https://discord.gg/KMh2eNSdxV)
|
|
27
26
|
|
|
28
27
|
Hono - _**\[炎\] means flame🔥 in Japanese**_ - is a small, simple, and ultrafast web framework for the Edges.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/adapter/aws-lambda/handler.ts
|
|
2
|
-
import crypto from "crypto";
|
|
3
|
-
import { encodeBase64 } from "../../utils/encode.js";
|
|
2
|
+
import crypto from "node:crypto";
|
|
3
|
+
import { decodeBase64, encodeBase64 } from "../../utils/encode.js";
|
|
4
4
|
globalThis.crypto ??= crypto;
|
|
5
5
|
var getRequestContext = (event) => {
|
|
6
6
|
return event.requestContext;
|
|
@@ -71,7 +71,7 @@ var EventProcessor = class {
|
|
|
71
71
|
method
|
|
72
72
|
};
|
|
73
73
|
if (event.body) {
|
|
74
|
-
requestInit.body = event.isBase64Encoded ?
|
|
74
|
+
requestInit.body = event.isBase64Encoded ? decodeBase64(event.body) : event.body;
|
|
75
75
|
}
|
|
76
76
|
return new Request(url, requestInit);
|
|
77
77
|
}
|
|
@@ -109,7 +109,7 @@ var EventProcessor = class {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
};
|
|
112
|
-
var
|
|
112
|
+
var EventV2Processor = class extends EventProcessor {
|
|
113
113
|
getPath(event) {
|
|
114
114
|
return event.rawPath;
|
|
115
115
|
}
|
|
@@ -139,8 +139,9 @@ var v2Processor = new class EventV2Processor extends EventProcessor {
|
|
|
139
139
|
}
|
|
140
140
|
return headers;
|
|
141
141
|
}
|
|
142
|
-
}
|
|
143
|
-
var
|
|
142
|
+
};
|
|
143
|
+
var v2Processor = new EventV2Processor();
|
|
144
|
+
var EventV1Processor = class extends EventProcessor {
|
|
144
145
|
getPath(event) {
|
|
145
146
|
return event.path;
|
|
146
147
|
}
|
|
@@ -177,8 +178,9 @@ var v1Processor = new class EventV1Processor extends EventProcessor {
|
|
|
177
178
|
"set-cookie": cookies
|
|
178
179
|
};
|
|
179
180
|
}
|
|
180
|
-
}
|
|
181
|
-
var
|
|
181
|
+
};
|
|
182
|
+
var v1Processor = new EventV1Processor();
|
|
183
|
+
var ALBProcessor = class extends EventProcessor {
|
|
182
184
|
getHeaders(event) {
|
|
183
185
|
const headers = new Headers();
|
|
184
186
|
if (event.multiValueHeaders) {
|
|
@@ -242,7 +244,8 @@ var albProcessor = new class ALBProcessor extends EventProcessor {
|
|
|
242
244
|
result.headers["set-cookie"] = cookies.join(", ");
|
|
243
245
|
}
|
|
244
246
|
}
|
|
245
|
-
}
|
|
247
|
+
};
|
|
248
|
+
var albProcessor = new ALBProcessor();
|
|
246
249
|
var getProcessor = (event) => {
|
|
247
250
|
if (isProxyEventALB(event)) {
|
|
248
251
|
return albProcessor;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// src/adapter/bun/conninfo.ts
|
|
2
|
+
var getConnInfo = (c) => {
|
|
3
|
+
const server = "server" in c.env ? c.env.server : c.env;
|
|
4
|
+
if (!server) {
|
|
5
|
+
throw new TypeError("env has to include the 2nd argument of fetch.");
|
|
6
|
+
}
|
|
7
|
+
if (typeof server.requestIP !== "function") {
|
|
8
|
+
throw new TypeError("server.requestIP is not a function.");
|
|
9
|
+
}
|
|
10
|
+
const info = server.requestIP(c.req.raw);
|
|
11
|
+
return {
|
|
12
|
+
remote: {
|
|
13
|
+
address: info.address,
|
|
14
|
+
addressType: info.family === "IPv6" || info.family === "IPv4" ? info.family : "unknown",
|
|
15
|
+
port: info.port
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
export {
|
|
20
|
+
getConnInfo
|
|
21
|
+
};
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
import { serveStatic } from "./serve-static.js";
|
|
3
3
|
import { bunFileSystemModule, toSSG } from "./ssg.js";
|
|
4
4
|
import { createBunWebSocket } from "./websocket.js";
|
|
5
|
+
import { getConnInfo } from "./conninfo.js";
|
|
5
6
|
export {
|
|
6
7
|
bunFileSystemModule,
|
|
7
8
|
createBunWebSocket,
|
|
9
|
+
getConnInfo,
|
|
8
10
|
serveStatic,
|
|
9
11
|
toSSG
|
|
10
12
|
};
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// src/adapter/cloudflare-workers/websocket.ts
|
|
2
2
|
var upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
3
|
-
const CFWebSocketPair = globalThis.WebSocketPair;
|
|
4
3
|
const events = await createEvents(c);
|
|
5
4
|
const upgradeHeader = c.req.header("Upgrade");
|
|
6
5
|
if (upgradeHeader !== "websocket") {
|
|
7
6
|
return await next();
|
|
8
7
|
}
|
|
9
|
-
const webSocketPair = new
|
|
8
|
+
const webSocketPair = new WebSocketPair();
|
|
10
9
|
const client = webSocketPair[0];
|
|
11
10
|
const server = webSocketPair[1];
|
|
12
11
|
const wsContext = {
|
|
@@ -23,10 +22,7 @@ var upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
|
23
22
|
send: (source) => server.send(source)
|
|
24
23
|
};
|
|
25
24
|
if (events.onOpen) {
|
|
26
|
-
server.addEventListener(
|
|
27
|
-
"open",
|
|
28
|
-
(evt) => events.onOpen && events.onOpen(evt, wsContext)
|
|
29
|
-
);
|
|
25
|
+
server.addEventListener("open", (evt) => events.onOpen && events.onOpen(evt, wsContext));
|
|
30
26
|
}
|
|
31
27
|
if (events.onClose) {
|
|
32
28
|
server.addEventListener(
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src/adapter/deno/conninfo.ts
|
|
2
|
+
var getConnInfo = (c) => {
|
|
3
|
+
const { remoteAddr } = c.env;
|
|
4
|
+
return {
|
|
5
|
+
remote: {
|
|
6
|
+
address: remoteAddr.hostname,
|
|
7
|
+
port: remoteAddr.port,
|
|
8
|
+
transport: remoteAddr.transport,
|
|
9
|
+
addressType: "unknown"
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
getConnInfo
|
|
15
|
+
};
|
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
import { serveStatic } from "./serve-static.js";
|
|
3
3
|
import { toSSG, denoFileSystemModule } from "./ssg.js";
|
|
4
4
|
import { upgradeWebSocket } from "./websocket.js";
|
|
5
|
+
import { getConnInfo } from "./conninfo.js";
|
|
5
6
|
export {
|
|
6
7
|
denoFileSystemModule,
|
|
8
|
+
getConnInfo,
|
|
7
9
|
serveStatic,
|
|
8
10
|
toSSG,
|
|
9
11
|
upgradeWebSocket
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// src/adapter/lambda-edge/handler.ts
|
|
2
|
-
import crypto from "crypto";
|
|
3
|
-
import { encodeBase64 } from "../../utils/encode.js";
|
|
2
|
+
import crypto from "node:crypto";
|
|
3
|
+
import { decodeBase64, encodeBase64 } from "../../utils/encode.js";
|
|
4
4
|
globalThis.crypto ??= crypto;
|
|
5
5
|
var convertHeaders = (headers) => {
|
|
6
6
|
const cfHeaders = {};
|
|
@@ -59,7 +59,7 @@ var createBody = (method, requestBody) => {
|
|
|
59
59
|
return void 0;
|
|
60
60
|
}
|
|
61
61
|
if (requestBody.encoding === "base64") {
|
|
62
|
-
return
|
|
62
|
+
return decodeBase64(requestBody.data);
|
|
63
63
|
}
|
|
64
64
|
return requestBody.data;
|
|
65
65
|
};
|
|
@@ -31,9 +31,9 @@ __export(handler_exports, {
|
|
|
31
31
|
streamHandle: () => streamHandle
|
|
32
32
|
});
|
|
33
33
|
module.exports = __toCommonJS(handler_exports);
|
|
34
|
-
var
|
|
34
|
+
var import_node_crypto = __toESM(require("node:crypto"), 1);
|
|
35
35
|
var import_encode = require("../../utils/encode");
|
|
36
|
-
globalThis.crypto ??=
|
|
36
|
+
globalThis.crypto ??= import_node_crypto.default;
|
|
37
37
|
const getRequestContext = (event) => {
|
|
38
38
|
return event.requestContext;
|
|
39
39
|
};
|
|
@@ -103,7 +103,7 @@ class EventProcessor {
|
|
|
103
103
|
method
|
|
104
104
|
};
|
|
105
105
|
if (event.body) {
|
|
106
|
-
requestInit.body = event.isBase64Encoded ?
|
|
106
|
+
requestInit.body = event.isBase64Encoded ? (0, import_encode.decodeBase64)(event.body) : event.body;
|
|
107
107
|
}
|
|
108
108
|
return new Request(url, requestInit);
|
|
109
109
|
}
|
|
@@ -141,7 +141,7 @@ class EventProcessor {
|
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
}
|
|
144
|
-
|
|
144
|
+
class EventV2Processor extends EventProcessor {
|
|
145
145
|
getPath(event) {
|
|
146
146
|
return event.rawPath;
|
|
147
147
|
}
|
|
@@ -171,8 +171,9 @@ const v2Processor = new class EventV2Processor extends EventProcessor {
|
|
|
171
171
|
}
|
|
172
172
|
return headers;
|
|
173
173
|
}
|
|
174
|
-
}
|
|
175
|
-
const
|
|
174
|
+
}
|
|
175
|
+
const v2Processor = new EventV2Processor();
|
|
176
|
+
class EventV1Processor extends EventProcessor {
|
|
176
177
|
getPath(event) {
|
|
177
178
|
return event.path;
|
|
178
179
|
}
|
|
@@ -209,8 +210,9 @@ const v1Processor = new class EventV1Processor extends EventProcessor {
|
|
|
209
210
|
"set-cookie": cookies
|
|
210
211
|
};
|
|
211
212
|
}
|
|
212
|
-
}
|
|
213
|
-
const
|
|
213
|
+
}
|
|
214
|
+
const v1Processor = new EventV1Processor();
|
|
215
|
+
class ALBProcessor extends EventProcessor {
|
|
214
216
|
getHeaders(event) {
|
|
215
217
|
const headers = new Headers();
|
|
216
218
|
if (event.multiValueHeaders) {
|
|
@@ -274,7 +276,8 @@ const albProcessor = new class ALBProcessor extends EventProcessor {
|
|
|
274
276
|
result.headers["set-cookie"] = cookies.join(", ");
|
|
275
277
|
}
|
|
276
278
|
}
|
|
277
|
-
}
|
|
279
|
+
}
|
|
280
|
+
const albProcessor = new ALBProcessor();
|
|
278
281
|
const getProcessor = (event) => {
|
|
279
282
|
if (isProxyEventALB(event)) {
|
|
280
283
|
return albProcessor;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var conninfo_exports = {};
|
|
20
|
+
__export(conninfo_exports, {
|
|
21
|
+
getConnInfo: () => getConnInfo
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(conninfo_exports);
|
|
24
|
+
const getConnInfo = (c) => {
|
|
25
|
+
const server = "server" in c.env ? c.env.server : c.env;
|
|
26
|
+
if (!server) {
|
|
27
|
+
throw new TypeError("env has to include the 2nd argument of fetch.");
|
|
28
|
+
}
|
|
29
|
+
if (typeof server.requestIP !== "function") {
|
|
30
|
+
throw new TypeError("server.requestIP is not a function.");
|
|
31
|
+
}
|
|
32
|
+
const info = server.requestIP(c.req.raw);
|
|
33
|
+
return {
|
|
34
|
+
remote: {
|
|
35
|
+
address: info.address,
|
|
36
|
+
addressType: info.family === "IPv6" || info.family === "IPv4" ? info.family : "unknown",
|
|
37
|
+
port: info.port
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
42
|
+
0 && (module.exports = {
|
|
43
|
+
getConnInfo
|
|
44
|
+
});
|
|
@@ -20,6 +20,7 @@ var bun_exports = {};
|
|
|
20
20
|
__export(bun_exports, {
|
|
21
21
|
bunFileSystemModule: () => import_ssg.bunFileSystemModule,
|
|
22
22
|
createBunWebSocket: () => import_websocket.createBunWebSocket,
|
|
23
|
+
getConnInfo: () => import_conninfo.getConnInfo,
|
|
23
24
|
serveStatic: () => import_serve_static.serveStatic,
|
|
24
25
|
toSSG: () => import_ssg.toSSG
|
|
25
26
|
});
|
|
@@ -27,10 +28,12 @@ module.exports = __toCommonJS(bun_exports);
|
|
|
27
28
|
var import_serve_static = require("./serve-static");
|
|
28
29
|
var import_ssg = require("./ssg");
|
|
29
30
|
var import_websocket = require("./websocket");
|
|
31
|
+
var import_conninfo = require("./conninfo");
|
|
30
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
31
33
|
0 && (module.exports = {
|
|
32
34
|
bunFileSystemModule,
|
|
33
35
|
createBunWebSocket,
|
|
36
|
+
getConnInfo,
|
|
34
37
|
serveStatic,
|
|
35
38
|
toSSG
|
|
36
39
|
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var conninfo_exports = {};
|
|
20
|
+
__export(conninfo_exports, {
|
|
21
|
+
getConnInfo: () => getConnInfo
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(conninfo_exports);
|
|
24
|
+
const getConnInfo = (c) => ({
|
|
25
|
+
remote: {
|
|
26
|
+
address: c.req.header("cf-connecting-ip"),
|
|
27
|
+
addressType: "unknown"
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
31
|
+
0 && (module.exports = {
|
|
32
|
+
getConnInfo
|
|
33
|
+
});
|
|
@@ -22,13 +22,12 @@ __export(websocket_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(websocket_exports);
|
|
24
24
|
const upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
25
|
-
const CFWebSocketPair = globalThis.WebSocketPair;
|
|
26
25
|
const events = await createEvents(c);
|
|
27
26
|
const upgradeHeader = c.req.header("Upgrade");
|
|
28
27
|
if (upgradeHeader !== "websocket") {
|
|
29
28
|
return await next();
|
|
30
29
|
}
|
|
31
|
-
const webSocketPair = new
|
|
30
|
+
const webSocketPair = new WebSocketPair();
|
|
32
31
|
const client = webSocketPair[0];
|
|
33
32
|
const server = webSocketPair[1];
|
|
34
33
|
const wsContext = {
|
|
@@ -45,10 +44,7 @@ const upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
|
45
44
|
send: (source) => server.send(source)
|
|
46
45
|
};
|
|
47
46
|
if (events.onOpen) {
|
|
48
|
-
server.addEventListener(
|
|
49
|
-
"open",
|
|
50
|
-
(evt) => events.onOpen && events.onOpen(evt, wsContext)
|
|
51
|
-
);
|
|
47
|
+
server.addEventListener("open", (evt) => events.onOpen && events.onOpen(evt, wsContext));
|
|
52
48
|
}
|
|
53
49
|
if (events.onClose) {
|
|
54
50
|
server.addEventListener(
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var conninfo_exports = {};
|
|
20
|
+
__export(conninfo_exports, {
|
|
21
|
+
getConnInfo: () => getConnInfo
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(conninfo_exports);
|
|
24
|
+
const getConnInfo = (c) => {
|
|
25
|
+
const { remoteAddr } = c.env;
|
|
26
|
+
return {
|
|
27
|
+
remote: {
|
|
28
|
+
address: remoteAddr.hostname,
|
|
29
|
+
port: remoteAddr.port,
|
|
30
|
+
transport: remoteAddr.transport,
|
|
31
|
+
addressType: "unknown"
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
36
|
+
0 && (module.exports = {
|
|
37
|
+
getConnInfo
|
|
38
|
+
});
|
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var deno_exports = {};
|
|
20
20
|
__export(deno_exports, {
|
|
21
21
|
denoFileSystemModule: () => import_ssg.denoFileSystemModule,
|
|
22
|
+
getConnInfo: () => import_conninfo.getConnInfo,
|
|
22
23
|
serveStatic: () => import_serve_static.serveStatic,
|
|
23
24
|
toSSG: () => import_ssg.toSSG,
|
|
24
25
|
upgradeWebSocket: () => import_websocket.upgradeWebSocket
|
|
@@ -27,9 +28,11 @@ module.exports = __toCommonJS(deno_exports);
|
|
|
27
28
|
var import_serve_static = require("./serve-static");
|
|
28
29
|
var import_ssg = require("./ssg");
|
|
29
30
|
var import_websocket = require("./websocket");
|
|
31
|
+
var import_conninfo = require("./conninfo");
|
|
30
32
|
// Annotate the CommonJS export names for ESM import in node:
|
|
31
33
|
0 && (module.exports = {
|
|
32
34
|
denoFileSystemModule,
|
|
35
|
+
getConnInfo,
|
|
33
36
|
serveStatic,
|
|
34
37
|
toSSG,
|
|
35
38
|
upgradeWebSocket
|
|
@@ -29,9 +29,9 @@ __export(handler_exports, {
|
|
|
29
29
|
isContentTypeBinary: () => isContentTypeBinary
|
|
30
30
|
});
|
|
31
31
|
module.exports = __toCommonJS(handler_exports);
|
|
32
|
-
var
|
|
32
|
+
var import_node_crypto = __toESM(require("node:crypto"), 1);
|
|
33
33
|
var import_encode = require("../../utils/encode");
|
|
34
|
-
globalThis.crypto ??=
|
|
34
|
+
globalThis.crypto ??= import_node_crypto.default;
|
|
35
35
|
const convertHeaders = (headers) => {
|
|
36
36
|
const cfHeaders = {};
|
|
37
37
|
headers.forEach((value, key) => {
|
|
@@ -89,7 +89,7 @@ const createBody = (method, requestBody) => {
|
|
|
89
89
|
return void 0;
|
|
90
90
|
}
|
|
91
91
|
if (requestBody.encoding === "base64") {
|
|
92
|
-
return
|
|
92
|
+
return (0, import_encode.decodeBase64)(requestBody.data);
|
|
93
93
|
}
|
|
94
94
|
return requestBody.data;
|
|
95
95
|
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
var conninfo_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(conninfo_exports);
|
|
@@ -18,6 +18,9 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var ssg_exports = {};
|
|
20
20
|
__export(ssg_exports, {
|
|
21
|
+
combineAfterGenerateHooks: () => combineAfterGenerateHooks,
|
|
22
|
+
combineAfterResponseHooks: () => combineAfterResponseHooks,
|
|
23
|
+
combineBeforeRequestHooks: () => combineBeforeRequestHooks,
|
|
21
24
|
defaultExtensionMap: () => defaultExtensionMap,
|
|
22
25
|
fetchRoutesContent: () => fetchRoutesContent,
|
|
23
26
|
saveContentToFile: () => saveContentToFile,
|
|
@@ -71,6 +74,52 @@ const determineExtension = (mimeType, userExtensionMap) => {
|
|
|
71
74
|
}
|
|
72
75
|
return (0, import_mime.getExtension)(mimeType) || "html";
|
|
73
76
|
};
|
|
77
|
+
const combineBeforeRequestHooks = (hooks) => {
|
|
78
|
+
if (!Array.isArray(hooks)) {
|
|
79
|
+
return hooks;
|
|
80
|
+
}
|
|
81
|
+
return async (req) => {
|
|
82
|
+
let currentReq = req;
|
|
83
|
+
for (const hook of hooks) {
|
|
84
|
+
const result = await hook(currentReq);
|
|
85
|
+
if (result === false) {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
if (result instanceof Request) {
|
|
89
|
+
currentReq = result;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return currentReq;
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
const combineAfterResponseHooks = (hooks) => {
|
|
96
|
+
if (!Array.isArray(hooks)) {
|
|
97
|
+
return hooks;
|
|
98
|
+
}
|
|
99
|
+
return async (res) => {
|
|
100
|
+
let currentRes = res;
|
|
101
|
+
for (const hook of hooks) {
|
|
102
|
+
const result = await hook(currentRes);
|
|
103
|
+
if (result === false) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
if (result instanceof Response) {
|
|
107
|
+
currentRes = result;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return currentRes;
|
|
111
|
+
};
|
|
112
|
+
};
|
|
113
|
+
const combineAfterGenerateHooks = (hooks) => {
|
|
114
|
+
if (!Array.isArray(hooks)) {
|
|
115
|
+
return hooks;
|
|
116
|
+
}
|
|
117
|
+
return async (result) => {
|
|
118
|
+
for (const hook of hooks) {
|
|
119
|
+
await hook(result);
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
};
|
|
74
123
|
const fetchRoutesContent = function* (app, beforeRequestHook, afterResponseHook, concurrency) {
|
|
75
124
|
const baseURL = "http://localhost";
|
|
76
125
|
const pool = (0, import_concurrent.createPool)({ concurrency });
|
|
@@ -172,10 +221,16 @@ const toSSG = async (app, fs, options) => {
|
|
|
172
221
|
try {
|
|
173
222
|
const outputDir = options?.dir ?? "./static";
|
|
174
223
|
const concurrency = options?.concurrency ?? DEFAULT_CONCURRENCY;
|
|
224
|
+
const combinedBeforeRequestHook = combineBeforeRequestHooks(
|
|
225
|
+
options?.beforeRequestHook || ((req) => req)
|
|
226
|
+
);
|
|
227
|
+
const combinedAfterResponseHook = combineAfterResponseHooks(
|
|
228
|
+
options?.afterResponseHook || ((req) => req)
|
|
229
|
+
);
|
|
175
230
|
const getInfoGen = fetchRoutesContent(
|
|
176
231
|
app,
|
|
177
|
-
|
|
178
|
-
|
|
232
|
+
combinedBeforeRequestHook,
|
|
233
|
+
combinedAfterResponseHook,
|
|
179
234
|
concurrency
|
|
180
235
|
);
|
|
181
236
|
for (const getInfo of getInfoGen) {
|
|
@@ -205,11 +260,17 @@ const toSSG = async (app, fs, options) => {
|
|
|
205
260
|
const errorObj = error instanceof Error ? error : new Error(String(error));
|
|
206
261
|
result = { success: false, files: [], error: errorObj };
|
|
207
262
|
}
|
|
208
|
-
|
|
263
|
+
if (options?.afterGenerateHook) {
|
|
264
|
+
const conbinedAfterGenerateHooks = combineAfterGenerateHooks(options?.afterGenerateHook);
|
|
265
|
+
await conbinedAfterGenerateHooks(result);
|
|
266
|
+
}
|
|
209
267
|
return result;
|
|
210
268
|
};
|
|
211
269
|
// Annotate the CommonJS export names for ESM import in node:
|
|
212
270
|
0 && (module.exports = {
|
|
271
|
+
combineAfterGenerateHooks,
|
|
272
|
+
combineAfterResponseHooks,
|
|
273
|
+
combineBeforeRequestHooks,
|
|
213
274
|
defaultExtensionMap,
|
|
214
275
|
fetchRoutesContent,
|
|
215
276
|
saveContentToFile,
|
|
@@ -22,7 +22,7 @@ __export(text_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(text_exports);
|
|
24
24
|
var import_context = require("../../context");
|
|
25
|
-
var import__ = require("
|
|
25
|
+
var import__ = require("./");
|
|
26
26
|
const streamText = (c, cb, onError) => {
|
|
27
27
|
c.header("Content-Type", import_context.TEXT_PLAIN);
|
|
28
28
|
c.header("X-Content-Type-Options", "nosniff");
|
package/dist/cjs/hono-base.js
CHANGED
|
@@ -29,10 +29,6 @@ var import_request = require("./request");
|
|
|
29
29
|
var import_router = require("./router");
|
|
30
30
|
var import_url = require("./utils/url");
|
|
31
31
|
const COMPOSED_HANDLER = Symbol("composedHandler");
|
|
32
|
-
function defineDynamicClass() {
|
|
33
|
-
return class {
|
|
34
|
-
};
|
|
35
|
-
}
|
|
36
32
|
const notFoundHandler = (c) => {
|
|
37
33
|
return c.text("404 Not Found", 404);
|
|
38
34
|
};
|
|
@@ -43,14 +39,22 @@ const errorHandler = (err, c) => {
|
|
|
43
39
|
console.error(err);
|
|
44
40
|
return c.text("Internal Server Error", 500);
|
|
45
41
|
};
|
|
46
|
-
class Hono
|
|
42
|
+
class Hono {
|
|
43
|
+
get;
|
|
44
|
+
post;
|
|
45
|
+
put;
|
|
46
|
+
delete;
|
|
47
|
+
options;
|
|
48
|
+
patch;
|
|
49
|
+
all;
|
|
50
|
+
on;
|
|
51
|
+
use;
|
|
47
52
|
router;
|
|
48
53
|
getPath;
|
|
49
54
|
_basePath = "/";
|
|
50
55
|
#path = "/";
|
|
51
56
|
routes = [];
|
|
52
57
|
constructor(options = {}) {
|
|
53
|
-
super();
|
|
54
58
|
const allMethods = [...import_router.METHODS, import_router.METHOD_NAME_ALL_LOWERCASE];
|
|
55
59
|
allMethods.forEach((method) => {
|
|
56
60
|
this[method] = (args1, ...args) => {
|