hono 4.5.0-rc.1 → 4.5.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 -2
- package/dist/adapter/bun/conninfo.js +1 -1
- package/dist/adapter/cloudflare-pages/handler.js +41 -0
- package/dist/adapter/cloudflare-pages/index.js +2 -1
- package/dist/adapter/cloudflare-workers/conninfo.js +1 -2
- package/dist/adapter/deno/conninfo.js +1 -2
- package/dist/adapter/deno/websocket.js +2 -2
- package/dist/adapter/lambda-edge/conninfo.js +9 -0
- package/dist/adapter/lambda-edge/index.js +2 -0
- package/dist/adapter/service-worker/handler.js +19 -0
- package/dist/adapter/service-worker/index.js +5 -0
- package/dist/adapter/service-worker/types.js +0 -0
- package/dist/adapter/vercel/conninfo.js +9 -0
- package/dist/adapter/vercel/index.js +2 -0
- package/dist/cjs/adapter/aws-lambda/handler.js +12 -2
- package/dist/cjs/adapter/bun/conninfo.js +1 -1
- package/dist/cjs/adapter/cloudflare-pages/handler.js +42 -0
- package/dist/cjs/adapter/cloudflare-pages/index.js +2 -0
- package/dist/cjs/adapter/cloudflare-workers/conninfo.js +1 -2
- package/dist/cjs/adapter/deno/conninfo.js +1 -2
- package/dist/cjs/adapter/deno/websocket.js +2 -2
- package/dist/cjs/adapter/lambda-edge/conninfo.js +32 -0
- package/dist/cjs/adapter/lambda-edge/index.js +3 -0
- package/dist/cjs/adapter/service-worker/handler.js +42 -0
- package/dist/cjs/adapter/service-worker/index.js +28 -0
- package/dist/cjs/adapter/service-worker/types.js +16 -0
- package/dist/cjs/adapter/vercel/conninfo.js +32 -0
- package/dist/cjs/adapter/vercel/index.js +3 -0
- package/dist/cjs/client/client.js +6 -2
- package/dist/cjs/context.js +36 -21
- package/dist/cjs/helper/accepts/accepts.js +11 -5
- package/dist/cjs/helper/html/index.js +1 -1
- package/dist/cjs/helper/streaming/sse.js +7 -0
- package/dist/cjs/helper/streaming/stream.js +7 -0
- package/dist/cjs/hono-base.js +3 -2
- package/dist/cjs/jsx/base.js +30 -2
- package/dist/cjs/jsx/constants.js +5 -2
- package/dist/cjs/jsx/context.js +15 -18
- package/dist/cjs/jsx/dom/context.js +6 -8
- package/dist/cjs/jsx/dom/hooks/index.js +75 -0
- package/dist/cjs/jsx/dom/index.js +10 -0
- package/dist/cjs/jsx/dom/intrinsic-element/components.js +351 -0
- package/dist/cjs/jsx/dom/jsx-dev-runtime.js +8 -1
- package/dist/cjs/jsx/dom/render.js +96 -42
- package/dist/cjs/jsx/hooks/index.js +56 -56
- package/dist/cjs/jsx/index.js +7 -0
- package/dist/cjs/jsx/intrinsic-element/common.js +40 -0
- package/dist/cjs/jsx/intrinsic-element/components.js +164 -0
- package/dist/cjs/jsx/utils.js +7 -1
- package/dist/cjs/middleware/combine/index.js +88 -0
- package/dist/cjs/middleware/ip-restriction/index.js +124 -0
- package/dist/cjs/middleware/jwt/jwt.js +20 -1
- package/dist/cjs/middleware/request-id/index.js +28 -0
- package/dist/cjs/middleware/request-id/request-id.js +44 -0
- package/dist/cjs/middleware/timing/timing.js +3 -0
- package/dist/cjs/utils/buffer.js +1 -2
- package/dist/cjs/utils/html.js +14 -2
- package/dist/cjs/utils/ipaddr.js +109 -0
- package/dist/cjs/utils/stream.js +10 -1
- package/dist/cjs/validator/validator.js +25 -24
- package/dist/client/client.js +6 -2
- package/dist/context.js +36 -21
- package/dist/helper/accepts/accepts.js +11 -5
- package/dist/helper/html/index.js +2 -2
- package/dist/helper/streaming/sse.js +7 -0
- package/dist/helper/streaming/stream.js +7 -0
- package/dist/hono-base.js +3 -2
- package/dist/jsx/base.js +25 -3
- package/dist/jsx/constants.js +3 -1
- package/dist/jsx/context.js +15 -18
- package/dist/jsx/dom/context.js +7 -9
- package/dist/jsx/dom/hooks/index.js +48 -0
- package/dist/jsx/dom/index.js +7 -0
- package/dist/jsx/dom/intrinsic-element/components.js +319 -0
- package/dist/jsx/dom/jsx-dev-runtime.js +2 -1
- package/dist/jsx/dom/render.js +95 -42
- package/dist/jsx/hooks/index.js +57 -57
- package/dist/jsx/index.js +5 -0
- package/dist/jsx/intrinsic-element/common.js +15 -0
- package/dist/jsx/intrinsic-element/components.js +134 -0
- package/dist/jsx/utils.js +7 -1
- package/dist/middleware/combine/index.js +63 -0
- package/dist/middleware/ip-restriction/index.js +106 -0
- package/dist/middleware/jwt/jwt.js +21 -2
- package/dist/middleware/request-id/index.js +5 -0
- package/dist/middleware/request-id/request-id.js +21 -0
- package/dist/middleware/timing/timing.js +3 -0
- package/dist/types/adapter/cloudflare-pages/handler.d.ts +4 -5
- package/dist/types/adapter/cloudflare-pages/index.d.ts +1 -1
- package/dist/types/adapter/deno/websocket.d.ts +20 -1
- package/dist/types/adapter/lambda-edge/conninfo.d.ts +2 -0
- package/dist/types/adapter/lambda-edge/index.d.ts +1 -0
- package/dist/types/adapter/service-worker/handler.d.ts +14 -0
- package/dist/types/adapter/service-worker/index.d.ts +5 -0
- package/dist/types/adapter/service-worker/types.d.ts +12 -0
- package/dist/types/adapter/vercel/conninfo.d.ts +2 -0
- package/dist/types/adapter/vercel/index.d.ts +1 -0
- package/dist/types/client/types.d.ts +1 -1
- package/dist/types/context.d.ts +42 -40
- package/dist/types/helper/conninfo/types.d.ts +3 -3
- package/dist/types/helper/factory/index.d.ts +1 -1
- package/dist/types/helper/websocket/index.d.ts +1 -1
- package/dist/types/hono-base.d.ts +13 -13
- package/dist/types/http-exception.d.ts +1 -1
- package/dist/types/jsx/base.d.ts +4 -4
- package/dist/types/jsx/constants.d.ts +1 -0
- package/dist/types/jsx/context.d.ts +3 -1
- package/dist/types/jsx/dom/hooks/index.d.ts +39 -0
- package/dist/types/jsx/dom/index.d.ts +21 -7
- package/dist/types/jsx/dom/intrinsic-element/components.d.ts +16 -0
- package/dist/types/jsx/dom/render.d.ts +21 -7
- package/dist/types/jsx/dom/server.d.ts +19 -6
- package/dist/types/jsx/hooks/index.d.ts +3 -2
- package/dist/types/jsx/index.d.ts +6 -3
- package/dist/types/jsx/intrinsic-element/common.d.ts +3 -0
- package/dist/types/jsx/intrinsic-element/components.d.ts +13 -0
- package/dist/types/jsx/intrinsic-elements.d.ts +38 -4
- package/dist/types/middleware/basic-auth/index.d.ts +1 -1
- package/dist/types/middleware/bearer-auth/index.d.ts +1 -1
- package/dist/types/middleware/body-limit/index.d.ts +1 -1
- package/dist/types/middleware/cache/index.d.ts +1 -1
- package/dist/types/middleware/combine/index.d.ts +85 -0
- package/dist/types/middleware/compress/index.d.ts +1 -1
- package/dist/types/middleware/cors/index.d.ts +1 -1
- package/dist/types/middleware/csrf/index.d.ts +1 -1
- package/dist/types/middleware/etag/index.d.ts +1 -1
- package/dist/types/middleware/ip-restriction/index.d.ts +31 -0
- package/dist/types/middleware/jsx-renderer/index.d.ts +1 -1
- package/dist/types/middleware/jwt/jwt.d.ts +7 -2
- package/dist/types/middleware/logger/index.d.ts +1 -1
- package/dist/types/middleware/method-override/index.d.ts +1 -1
- package/dist/types/middleware/pretty-json/index.d.ts +1 -1
- package/dist/types/middleware/request-id/index.d.ts +7 -0
- package/dist/types/middleware/request-id/request-id.d.ts +37 -0
- package/dist/types/middleware/secure-headers/secure-headers.d.ts +1 -1
- package/dist/types/middleware/timing/timing.d.ts +1 -1
- package/dist/types/middleware/trailing-slash/index.d.ts +2 -2
- package/dist/types/request.d.ts +17 -17
- package/dist/types/types.d.ts +94 -33
- package/dist/types/utils/html.d.ts +5 -1
- package/dist/types/utils/http-status.d.ts +2 -2
- package/dist/types/utils/ipaddr.d.ts +34 -0
- package/dist/types/utils/jwt/jwa.d.ts +5 -0
- package/dist/types/utils/jwt/jws.d.ts +5 -0
- package/dist/types/utils/jwt/jwt.d.ts +5 -0
- package/dist/types/utils/jwt/types.d.ts +4 -0
- package/dist/types/utils/jwt/utf8.d.ts +4 -0
- package/dist/types/utils/stream.d.ts +13 -0
- package/dist/types/utils/types.d.ts +15 -3
- package/dist/utils/buffer.js +1 -2
- package/dist/utils/html.js +13 -2
- package/dist/utils/ipaddr.js +82 -0
- package/dist/utils/stream.js +10 -1
- package/dist/validator/validator.js +25 -24
- package/package.json +37 -6
package/README.md
CHANGED
|
@@ -25,8 +25,7 @@
|
|
|
25
25
|
[](https://codecov.io/github/honojs/hono)
|
|
26
26
|
[](https://discord.gg/KMh2eNSdxV)
|
|
27
27
|
|
|
28
|
-
Hono - _
|
|
29
|
-
It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, AWS Lambda, Lambda@Edge, and Node.js.
|
|
28
|
+
Hono - _**means flame🔥 in Japanese**_ - is a small, simple, and ultrafast web framework built on Web Standards. It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, AWS Lambda, Lambda@Edge, and Node.js.
|
|
30
29
|
|
|
31
30
|
Fast, but not only fast.
|
|
32
31
|
|
|
@@ -41,7 +40,7 @@ export default app
|
|
|
41
40
|
|
|
42
41
|
## Quick Start
|
|
43
42
|
|
|
44
|
-
```
|
|
43
|
+
```bash
|
|
45
44
|
npm create hono@latest
|
|
46
45
|
```
|
|
47
46
|
|
|
@@ -25,9 +25,19 @@ var streamHandle = (app) => {
|
|
|
25
25
|
requestContext,
|
|
26
26
|
context
|
|
27
27
|
});
|
|
28
|
+
const headers = {};
|
|
29
|
+
const cookies = [];
|
|
30
|
+
res.headers.forEach((value, name) => {
|
|
31
|
+
if (name === "set-cookie") {
|
|
32
|
+
cookies.push(value);
|
|
33
|
+
} else {
|
|
34
|
+
headers[name] = value;
|
|
35
|
+
}
|
|
36
|
+
});
|
|
28
37
|
const httpResponseMetadata = {
|
|
29
38
|
statusCode: res.status,
|
|
30
|
-
headers
|
|
39
|
+
headers,
|
|
40
|
+
cookies
|
|
31
41
|
};
|
|
32
42
|
responseStream = awslambda.HttpResponseStream.from(responseStream, httpResponseMetadata);
|
|
33
43
|
if (res.body) {
|
|
@@ -101,7 +111,7 @@ var EventProcessor = class {
|
|
|
101
111
|
}
|
|
102
112
|
setCookies(event, res, result) {
|
|
103
113
|
if (res.headers.has("set-cookie")) {
|
|
104
|
-
const cookies = res.headers.
|
|
114
|
+
const cookies = res.headers.getSetCookie ? res.headers.getSetCookie() : Array.from(res.headers.entries()).filter(([k]) => k === "set-cookie").map(([, v]) => v);
|
|
105
115
|
if (Array.isArray(cookies)) {
|
|
106
116
|
this.setCookiesToResult(event, result, cookies);
|
|
107
117
|
res.headers.delete("set-cookie");
|
|
@@ -12,7 +12,7 @@ var getConnInfo = (c) => {
|
|
|
12
12
|
return {
|
|
13
13
|
remote: {
|
|
14
14
|
address: info.address,
|
|
15
|
-
addressType: info.family === "IPv6" || info.family === "IPv4" ? info.family :
|
|
15
|
+
addressType: info.family === "IPv6" || info.family === "IPv4" ? info.family : void 0,
|
|
16
16
|
port: info.port
|
|
17
17
|
}
|
|
18
18
|
};
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
// src/adapter/cloudflare-pages/handler.ts
|
|
2
|
+
import { Context } from "../../context.js";
|
|
3
|
+
import { HTTPException } from "../../http-exception.js";
|
|
2
4
|
var handle = (app) => (eventContext) => {
|
|
3
5
|
return app.fetch(
|
|
4
6
|
eventContext.request,
|
|
@@ -9,6 +11,44 @@ var handle = (app) => (eventContext) => {
|
|
|
9
11
|
}
|
|
10
12
|
);
|
|
11
13
|
};
|
|
14
|
+
function handleMiddleware(middleware) {
|
|
15
|
+
return async (executionCtx) => {
|
|
16
|
+
const context = new Context(executionCtx.request, {
|
|
17
|
+
env: executionCtx.env,
|
|
18
|
+
executionCtx
|
|
19
|
+
});
|
|
20
|
+
let response = void 0;
|
|
21
|
+
try {
|
|
22
|
+
response = await middleware(context, async () => {
|
|
23
|
+
try {
|
|
24
|
+
context.res = await executionCtx.next();
|
|
25
|
+
} catch (error) {
|
|
26
|
+
if (error instanceof Error) {
|
|
27
|
+
context.error = error;
|
|
28
|
+
} else {
|
|
29
|
+
throw error;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
} catch (error) {
|
|
34
|
+
if (error instanceof Error) {
|
|
35
|
+
context.error = error;
|
|
36
|
+
} else {
|
|
37
|
+
throw error;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (response) {
|
|
41
|
+
return response;
|
|
42
|
+
}
|
|
43
|
+
if (context.error instanceof HTTPException) {
|
|
44
|
+
return context.error.getResponse();
|
|
45
|
+
}
|
|
46
|
+
if (context.error) {
|
|
47
|
+
throw context.error;
|
|
48
|
+
}
|
|
49
|
+
return context.res;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
12
52
|
var serveStatic = () => {
|
|
13
53
|
return async (c) => {
|
|
14
54
|
const env = c.env;
|
|
@@ -21,5 +61,6 @@ var serveStatic = () => {
|
|
|
21
61
|
};
|
|
22
62
|
export {
|
|
23
63
|
handle,
|
|
64
|
+
handleMiddleware,
|
|
24
65
|
serveStatic
|
|
25
66
|
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
// src/adapter/deno/websocket.ts
|
|
2
|
-
var upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
2
|
+
var upgradeWebSocket = (createEvents, options) => async (c, next) => {
|
|
3
3
|
if (c.req.header("upgrade") !== "websocket") {
|
|
4
4
|
return await next();
|
|
5
5
|
}
|
|
6
6
|
const events = await createEvents(c);
|
|
7
|
-
const { response, socket } = Deno.upgradeWebSocket(c.req.raw);
|
|
7
|
+
const { response, socket } = Deno.upgradeWebSocket(c.req.raw, options || {});
|
|
8
8
|
const wsContext = {
|
|
9
9
|
binaryType: "arraybuffer",
|
|
10
10
|
close: (code, reason) => socket.close(code, reason),
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
// src/adapter/service-worker/handler.ts
|
|
2
|
+
var handle = (app, opts = {
|
|
3
|
+
fetch
|
|
4
|
+
}) => {
|
|
5
|
+
return (evt) => {
|
|
6
|
+
evt.respondWith(
|
|
7
|
+
(async () => {
|
|
8
|
+
const res = await app.fetch(evt.request);
|
|
9
|
+
if (opts.fetch && res.status === 404) {
|
|
10
|
+
return await opts.fetch(evt.request);
|
|
11
|
+
}
|
|
12
|
+
return res;
|
|
13
|
+
})()
|
|
14
|
+
);
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
export {
|
|
18
|
+
handle
|
|
19
|
+
};
|
|
File without changes
|
|
@@ -57,9 +57,19 @@ const streamHandle = (app) => {
|
|
|
57
57
|
requestContext,
|
|
58
58
|
context
|
|
59
59
|
});
|
|
60
|
+
const headers = {};
|
|
61
|
+
const cookies = [];
|
|
62
|
+
res.headers.forEach((value, name) => {
|
|
63
|
+
if (name === "set-cookie") {
|
|
64
|
+
cookies.push(value);
|
|
65
|
+
} else {
|
|
66
|
+
headers[name] = value;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
60
69
|
const httpResponseMetadata = {
|
|
61
70
|
statusCode: res.status,
|
|
62
|
-
headers
|
|
71
|
+
headers,
|
|
72
|
+
cookies
|
|
63
73
|
};
|
|
64
74
|
responseStream = awslambda.HttpResponseStream.from(responseStream, httpResponseMetadata);
|
|
65
75
|
if (res.body) {
|
|
@@ -133,7 +143,7 @@ class EventProcessor {
|
|
|
133
143
|
}
|
|
134
144
|
setCookies(event, res, result) {
|
|
135
145
|
if (res.headers.has("set-cookie")) {
|
|
136
|
-
const cookies = res.headers.
|
|
146
|
+
const cookies = res.headers.getSetCookie ? res.headers.getSetCookie() : Array.from(res.headers.entries()).filter(([k]) => k === "set-cookie").map(([, v]) => v);
|
|
137
147
|
if (Array.isArray(cookies)) {
|
|
138
148
|
this.setCookiesToResult(event, result, cookies);
|
|
139
149
|
res.headers.delete("set-cookie");
|
|
@@ -34,7 +34,7 @@ const getConnInfo = (c) => {
|
|
|
34
34
|
return {
|
|
35
35
|
remote: {
|
|
36
36
|
address: info.address,
|
|
37
|
-
addressType: info.family === "IPv6" || info.family === "IPv4" ? info.family :
|
|
37
|
+
addressType: info.family === "IPv6" || info.family === "IPv4" ? info.family : void 0,
|
|
38
38
|
port: info.port
|
|
39
39
|
}
|
|
40
40
|
};
|
|
@@ -19,9 +19,12 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var handler_exports = {};
|
|
20
20
|
__export(handler_exports, {
|
|
21
21
|
handle: () => handle,
|
|
22
|
+
handleMiddleware: () => handleMiddleware,
|
|
22
23
|
serveStatic: () => serveStatic
|
|
23
24
|
});
|
|
24
25
|
module.exports = __toCommonJS(handler_exports);
|
|
26
|
+
var import_context = require("../../context");
|
|
27
|
+
var import_http_exception = require("../../http-exception");
|
|
25
28
|
const handle = (app) => (eventContext) => {
|
|
26
29
|
return app.fetch(
|
|
27
30
|
eventContext.request,
|
|
@@ -32,6 +35,44 @@ const handle = (app) => (eventContext) => {
|
|
|
32
35
|
}
|
|
33
36
|
);
|
|
34
37
|
};
|
|
38
|
+
function handleMiddleware(middleware) {
|
|
39
|
+
return async (executionCtx) => {
|
|
40
|
+
const context = new import_context.Context(executionCtx.request, {
|
|
41
|
+
env: executionCtx.env,
|
|
42
|
+
executionCtx
|
|
43
|
+
});
|
|
44
|
+
let response = void 0;
|
|
45
|
+
try {
|
|
46
|
+
response = await middleware(context, async () => {
|
|
47
|
+
try {
|
|
48
|
+
context.res = await executionCtx.next();
|
|
49
|
+
} catch (error) {
|
|
50
|
+
if (error instanceof Error) {
|
|
51
|
+
context.error = error;
|
|
52
|
+
} else {
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
} catch (error) {
|
|
58
|
+
if (error instanceof Error) {
|
|
59
|
+
context.error = error;
|
|
60
|
+
} else {
|
|
61
|
+
throw error;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (response) {
|
|
65
|
+
return response;
|
|
66
|
+
}
|
|
67
|
+
if (context.error instanceof import_http_exception.HTTPException) {
|
|
68
|
+
return context.error.getResponse();
|
|
69
|
+
}
|
|
70
|
+
if (context.error) {
|
|
71
|
+
throw context.error;
|
|
72
|
+
}
|
|
73
|
+
return context.res;
|
|
74
|
+
};
|
|
75
|
+
}
|
|
35
76
|
const serveStatic = () => {
|
|
36
77
|
return async (c) => {
|
|
37
78
|
const env = c.env;
|
|
@@ -45,5 +86,6 @@ const serveStatic = () => {
|
|
|
45
86
|
// Annotate the CommonJS export names for ESM import in node:
|
|
46
87
|
0 && (module.exports = {
|
|
47
88
|
handle,
|
|
89
|
+
handleMiddleware,
|
|
48
90
|
serveStatic
|
|
49
91
|
});
|
|
@@ -19,6 +19,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var cloudflare_pages_exports = {};
|
|
20
20
|
__export(cloudflare_pages_exports, {
|
|
21
21
|
handle: () => import_handler.handle,
|
|
22
|
+
handleMiddleware: () => import_handler.handleMiddleware,
|
|
22
23
|
serveStatic: () => import_handler.serveStatic
|
|
23
24
|
});
|
|
24
25
|
module.exports = __toCommonJS(cloudflare_pages_exports);
|
|
@@ -26,5 +27,6 @@ var import_handler = require("./handler");
|
|
|
26
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
27
28
|
0 && (module.exports = {
|
|
28
29
|
handle,
|
|
30
|
+
handleMiddleware,
|
|
29
31
|
serveStatic
|
|
30
32
|
});
|
|
@@ -23,8 +23,7 @@ __export(conninfo_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(conninfo_exports);
|
|
24
24
|
const getConnInfo = (c) => ({
|
|
25
25
|
remote: {
|
|
26
|
-
address: c.req.header("cf-connecting-ip")
|
|
27
|
-
addressType: "unknown"
|
|
26
|
+
address: c.req.header("cf-connecting-ip")
|
|
28
27
|
}
|
|
29
28
|
});
|
|
30
29
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -21,12 +21,12 @@ __export(websocket_exports, {
|
|
|
21
21
|
upgradeWebSocket: () => upgradeWebSocket
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(websocket_exports);
|
|
24
|
-
const upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
24
|
+
const upgradeWebSocket = (createEvents, options) => async (c, next) => {
|
|
25
25
|
if (c.req.header("upgrade") !== "websocket") {
|
|
26
26
|
return await next();
|
|
27
27
|
}
|
|
28
28
|
const events = await createEvents(c);
|
|
29
|
-
const { response, socket } = Deno.upgradeWebSocket(c.req.raw);
|
|
29
|
+
const { response, socket } = Deno.upgradeWebSocket(c.req.raw, options || {});
|
|
30
30
|
const wsContext = {
|
|
31
31
|
binaryType: "arraybuffer",
|
|
32
32
|
close: (code, reason) => socket.close(code, reason),
|
|
@@ -0,0 +1,32 @@
|
|
|
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.env.event.Records[0].cf.request.clientIp
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
+
0 && (module.exports = {
|
|
31
|
+
getConnInfo
|
|
32
|
+
});
|
|
@@ -18,11 +18,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var lambda_edge_exports = {};
|
|
20
20
|
__export(lambda_edge_exports, {
|
|
21
|
+
getConnInfo: () => import_conninfo.getConnInfo,
|
|
21
22
|
handle: () => import_handler.handle
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(lambda_edge_exports);
|
|
24
25
|
var import_handler = require("./handler");
|
|
26
|
+
var import_conninfo = require("./conninfo");
|
|
25
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
28
|
0 && (module.exports = {
|
|
29
|
+
getConnInfo,
|
|
27
30
|
handle
|
|
28
31
|
});
|
|
@@ -0,0 +1,42 @@
|
|
|
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 handler_exports = {};
|
|
20
|
+
__export(handler_exports, {
|
|
21
|
+
handle: () => handle
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(handler_exports);
|
|
24
|
+
const handle = (app, opts = {
|
|
25
|
+
fetch
|
|
26
|
+
}) => {
|
|
27
|
+
return (evt) => {
|
|
28
|
+
evt.respondWith(
|
|
29
|
+
(async () => {
|
|
30
|
+
const res = await app.fetch(evt.request);
|
|
31
|
+
if (opts.fetch && res.status === 404) {
|
|
32
|
+
return await opts.fetch(evt.request);
|
|
33
|
+
}
|
|
34
|
+
return res;
|
|
35
|
+
})()
|
|
36
|
+
);
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
40
|
+
0 && (module.exports = {
|
|
41
|
+
handle
|
|
42
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
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 service_worker_exports = {};
|
|
20
|
+
__export(service_worker_exports, {
|
|
21
|
+
handle: () => import_handler.handle
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(service_worker_exports);
|
|
24
|
+
var import_handler = require("./handler");
|
|
25
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
26
|
+
0 && (module.exports = {
|
|
27
|
+
handle
|
|
28
|
+
});
|
|
@@ -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 types_exports = {};
|
|
16
|
+
module.exports = __toCommonJS(types_exports);
|
|
@@ -0,0 +1,32 @@
|
|
|
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("x-real-ip")
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
30
|
+
0 && (module.exports = {
|
|
31
|
+
getConnInfo
|
|
32
|
+
});
|
|
@@ -18,11 +18,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var vercel_exports = {};
|
|
20
20
|
__export(vercel_exports, {
|
|
21
|
+
getConnInfo: () => import_conninfo.getConnInfo,
|
|
21
22
|
handle: () => import_handler.handle
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(vercel_exports);
|
|
24
25
|
var import_handler = require("./handler");
|
|
26
|
+
var import_conninfo = require("./conninfo");
|
|
25
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
28
|
0 && (module.exports = {
|
|
29
|
+
getConnInfo,
|
|
27
30
|
handle
|
|
28
31
|
});
|
|
@@ -152,11 +152,15 @@ const hc = (baseUrl, options) => createProxy(function proxyCallback(opts) {
|
|
|
152
152
|
return new URL(url);
|
|
153
153
|
}
|
|
154
154
|
if (method === "ws") {
|
|
155
|
-
const
|
|
155
|
+
const webSocketUrl = (0, import_utils.replaceUrlProtocol)(
|
|
156
156
|
opts.args[0] && opts.args[0].param ? (0, import_utils.replaceUrlParam)(url, opts.args[0].param) : url,
|
|
157
157
|
"ws"
|
|
158
158
|
);
|
|
159
|
-
|
|
159
|
+
const targetUrl = new URL(webSocketUrl);
|
|
160
|
+
for (const key in opts.args[0]?.query) {
|
|
161
|
+
targetUrl.searchParams.set(key, opts.args[0].query[key]);
|
|
162
|
+
}
|
|
163
|
+
return new WebSocket(targetUrl.toString());
|
|
160
164
|
}
|
|
161
165
|
const req = new ClientRequestImpl(url, method);
|
|
162
166
|
if (method) {
|