hono 4.0.10 → 4.1.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/dist/adapter/aws-lambda/handler.js +1 -1
- package/dist/adapter/bun/index.js +2 -0
- package/dist/adapter/bun/websocket.js +77 -0
- package/dist/adapter/cloudflare-workers/index.js +3 -1
- package/dist/adapter/cloudflare-workers/websocket.js +57 -0
- package/dist/adapter/deno/index.js +3 -1
- package/dist/adapter/deno/websocket.js +29 -0
- package/dist/adapter/lambda-edge/handler.js +1 -1
- package/dist/cjs/adapter/aws-lambda/handler.js +1 -1
- package/dist/cjs/adapter/bun/index.js +3 -0
- package/dist/cjs/adapter/bun/websocket.js +98 -0
- package/dist/cjs/adapter/cloudflare-workers/index.js +5 -2
- package/dist/cjs/adapter/cloudflare-workers/websocket.js +80 -0
- package/dist/cjs/adapter/deno/index.js +5 -2
- package/dist/cjs/adapter/deno/websocket.js +52 -0
- package/dist/cjs/adapter/lambda-edge/handler.js +1 -1
- package/dist/cjs/client/client.js +68 -61
- package/dist/cjs/context.js +164 -188
- package/dist/cjs/helper/adapter/index.js +1 -1
- package/dist/cjs/helper/cookie/index.js +48 -8
- package/dist/cjs/helper/dev/index.js +3 -4
- package/dist/cjs/helper/factory/index.js +1 -3
- package/dist/cjs/helper/ssg/index.js +9 -159
- package/dist/cjs/helper/ssg/middleware.js +57 -0
- package/dist/cjs/helper/ssg/ssg.js +212 -0
- package/dist/cjs/helper/websocket/index.js +32 -0
- package/dist/cjs/helper.js +1 -0
- package/dist/cjs/hono-base.js +46 -65
- package/dist/cjs/http-exception.js +3 -1
- package/dist/cjs/jsx/base.js +7 -2
- package/dist/cjs/jsx/components.js +1 -1
- package/dist/cjs/jsx/dom/index.js +45 -3
- package/dist/cjs/jsx/dom/render.js +6 -6
- package/dist/cjs/jsx/hooks/index.js +25 -16
- package/dist/cjs/jsx/index.js +34 -2
- package/dist/cjs/middleware/body-limit/index.js +80 -0
- package/dist/cjs/middleware/logger/index.js +9 -7
- package/dist/cjs/request.js +29 -48
- package/dist/cjs/router/linear-router/router.js +3 -5
- package/dist/cjs/router/pattern-router/router.js +2 -4
- package/dist/cjs/router/reg-exp-router/node.js +3 -3
- package/dist/cjs/router/reg-exp-router/router.js +11 -12
- package/dist/cjs/router/reg-exp-router/trie.js +2 -4
- package/dist/cjs/router/smart-router/router.js +3 -3
- package/dist/cjs/router/trie-router/node.js +6 -2
- package/dist/cjs/router/trie-router/router.js +2 -1
- package/dist/cjs/test-utils/setup-vitest.js +2 -0
- package/dist/cjs/utils/color.js +32 -0
- package/dist/cjs/utils/concurrent.js +62 -0
- package/dist/cjs/utils/cookie.js +28 -1
- package/dist/cjs/utils/stream.js +5 -1
- package/dist/cjs/utils/url.js +2 -2
- package/dist/client/client.js +68 -61
- package/dist/context.js +164 -189
- package/dist/helper/adapter/index.js +1 -1
- package/dist/helper/cookie/index.js +48 -8
- package/dist/helper/dev/index.js +3 -4
- package/dist/helper/factory/index.js +1 -3
- package/dist/helper/ssg/index.js +3 -151
- package/dist/helper/ssg/middleware.js +29 -0
- package/dist/helper/ssg/ssg.js +187 -0
- package/dist/helper/websocket/index.js +9 -0
- package/dist/helper.js +1 -0
- package/dist/hono-base.js +45 -65
- package/dist/http-exception.js +3 -1
- package/dist/jsx/base.js +7 -2
- package/dist/jsx/components.js +1 -1
- package/dist/jsx/dom/index.js +44 -4
- package/dist/jsx/dom/render.js +6 -6
- package/dist/jsx/hooks/index.js +23 -16
- package/dist/jsx/index.js +34 -3
- package/dist/middleware/body-limit/index.js +57 -0
- package/dist/middleware/logger/index.js +9 -7
- package/dist/request.js +29 -49
- package/dist/router/linear-router/router.js +3 -5
- package/dist/router/pattern-router/router.js +2 -4
- package/dist/router/reg-exp-router/node.js +3 -3
- package/dist/router/reg-exp-router/router.js +11 -12
- package/dist/router/reg-exp-router/trie.js +2 -4
- package/dist/router/smart-router/router.js +3 -3
- package/dist/router/trie-router/node.js +6 -2
- package/dist/router/trie-router/router.js +2 -1
- package/dist/test-utils/setup-vitest.js +2 -0
- package/dist/types/adapter/bun/index.d.ts +1 -0
- package/dist/types/adapter/bun/websocket.d.ts +26 -0
- package/dist/types/adapter/cloudflare-workers/index.d.ts +1 -0
- package/dist/types/adapter/cloudflare-workers/websocket.d.ts +2 -0
- package/dist/types/adapter/deno/index.d.ts +1 -0
- package/dist/types/adapter/deno/websocket.d.ts +2 -0
- package/dist/types/client/types.d.ts +9 -0
- package/dist/types/helper/cookie/index.d.ts +3 -1
- package/dist/types/helper/ssg/index.d.ts +2 -105
- package/dist/types/helper/ssg/middleware.d.ts +38 -0
- package/dist/types/helper/ssg/ssg.d.ts +70 -0
- package/dist/types/helper/websocket/index.d.ts +34 -0
- package/dist/types/http-exception.d.ts +1 -0
- package/dist/types/jsx/dom/index.d.ts +40 -7
- package/dist/types/jsx/hooks/index.d.ts +2 -0
- package/dist/types/jsx/index.d.ts +41 -5
- package/dist/types/middleware/body-limit/index.d.ts +28 -0
- package/dist/types/utils/color.d.ts +1 -0
- package/dist/types/utils/concurrent.d.ts +7 -0
- package/dist/types/utils/cookie.d.ts +2 -0
- package/dist/utils/color.js +9 -0
- package/dist/utils/concurrent.js +39 -0
- package/dist/utils/cookie.js +28 -1
- package/dist/utils/stream.js +5 -1
- package/dist/utils/url.js +2 -2
- package/package.json +18 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/adapter/aws-lambda/handler.ts
|
|
2
2
|
import crypto from "crypto";
|
|
3
3
|
import { encodeBase64 } from "../../utils/encode.js";
|
|
4
|
-
globalThis.crypto
|
|
4
|
+
globalThis.crypto ??= crypto;
|
|
5
5
|
var getRequestContext = (event) => {
|
|
6
6
|
return event.requestContext;
|
|
7
7
|
};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// src/adapter/bun/index.ts
|
|
2
2
|
import { serveStatic } from "./serve-static.js";
|
|
3
3
|
import { bunFileSystemModule, toSSG } from "./ssg.js";
|
|
4
|
+
import { createBunWebSocket } from "./websocket.js";
|
|
4
5
|
export {
|
|
5
6
|
bunFileSystemModule,
|
|
7
|
+
createBunWebSocket,
|
|
6
8
|
serveStatic,
|
|
7
9
|
toSSG
|
|
8
10
|
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// src/adapter/bun/websocket.ts
|
|
2
|
+
import {
|
|
3
|
+
createWSMessageEvent
|
|
4
|
+
} from "../../helper/websocket/index.js";
|
|
5
|
+
var createWSContext = (ws) => {
|
|
6
|
+
return {
|
|
7
|
+
send: (source, options) => {
|
|
8
|
+
const sendingData = typeof source === "string" ? source : source instanceof Uint8Array ? source.buffer : source;
|
|
9
|
+
ws.send(sendingData, options?.compress);
|
|
10
|
+
},
|
|
11
|
+
raw: ws,
|
|
12
|
+
binaryType: "arraybuffer",
|
|
13
|
+
readyState: ws.readyState,
|
|
14
|
+
url: ws.data.url,
|
|
15
|
+
protocol: ws.data.protocol,
|
|
16
|
+
close(code, reason) {
|
|
17
|
+
ws.close(code, reason);
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
var createBunWebSocket = () => {
|
|
22
|
+
const websocketConns = [];
|
|
23
|
+
const upgradeWebSocket = (createEvents) => {
|
|
24
|
+
return async (c, next) => {
|
|
25
|
+
const server = c.env;
|
|
26
|
+
const connId = websocketConns.push(await createEvents(c)) - 1;
|
|
27
|
+
const upgradeResult = server.upgrade(c.req.raw, {
|
|
28
|
+
data: {
|
|
29
|
+
connId,
|
|
30
|
+
url: new URL(c.req.url),
|
|
31
|
+
protocol: c.req.url
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
if (upgradeResult) {
|
|
35
|
+
return new Response(null);
|
|
36
|
+
}
|
|
37
|
+
await next();
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
const websocket = {
|
|
41
|
+
open(ws) {
|
|
42
|
+
const websocketListeners = websocketConns[ws.data.connId];
|
|
43
|
+
if (websocketListeners.onOpen) {
|
|
44
|
+
websocketListeners.onOpen(new Event("open"), createWSContext(ws));
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
close(ws, code, reason) {
|
|
48
|
+
const websocketListeners = websocketConns[ws.data.connId];
|
|
49
|
+
if (websocketListeners.onClose) {
|
|
50
|
+
websocketListeners.onClose(
|
|
51
|
+
new CloseEvent("close", {
|
|
52
|
+
code,
|
|
53
|
+
reason
|
|
54
|
+
}),
|
|
55
|
+
createWSContext(ws)
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
message(ws, message) {
|
|
60
|
+
const websocketListeners = websocketConns[ws.data.connId];
|
|
61
|
+
if (websocketListeners.onMessage) {
|
|
62
|
+
const normalizedReceiveData = typeof message === "string" ? message : message.buffer;
|
|
63
|
+
websocketListeners.onMessage(
|
|
64
|
+
createWSMessageEvent(normalizedReceiveData),
|
|
65
|
+
createWSContext(ws)
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
return {
|
|
71
|
+
upgradeWebSocket,
|
|
72
|
+
websocket
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
export {
|
|
76
|
+
createBunWebSocket
|
|
77
|
+
};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// src/adapter/cloudflare-workers/websocket.ts
|
|
2
|
+
var upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
3
|
+
const CFWebSocketPair = globalThis.WebSocketPair;
|
|
4
|
+
const events = await createEvents(c);
|
|
5
|
+
const upgradeHeader = c.req.header("Upgrade");
|
|
6
|
+
if (upgradeHeader !== "websocket") {
|
|
7
|
+
return await next();
|
|
8
|
+
}
|
|
9
|
+
const webSocketPair = new CFWebSocketPair();
|
|
10
|
+
const client = webSocketPair[0];
|
|
11
|
+
const server = webSocketPair[1];
|
|
12
|
+
const wsContext = {
|
|
13
|
+
binaryType: "arraybuffer",
|
|
14
|
+
close: (code, reason) => server.close(code, reason),
|
|
15
|
+
get protocol() {
|
|
16
|
+
return server.protocol;
|
|
17
|
+
},
|
|
18
|
+
raw: server,
|
|
19
|
+
get readyState() {
|
|
20
|
+
return server.readyState;
|
|
21
|
+
},
|
|
22
|
+
url: server.url ? new URL(server.url) : null,
|
|
23
|
+
send: (source) => server.send(source)
|
|
24
|
+
};
|
|
25
|
+
if (events.onOpen) {
|
|
26
|
+
server.addEventListener(
|
|
27
|
+
"open",
|
|
28
|
+
(evt) => events.onOpen && events.onOpen(evt, wsContext)
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
if (events.onClose) {
|
|
32
|
+
server.addEventListener(
|
|
33
|
+
"close",
|
|
34
|
+
(evt) => events.onClose && events.onClose(evt, wsContext)
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
if (events.onMessage) {
|
|
38
|
+
server.addEventListener(
|
|
39
|
+
"message",
|
|
40
|
+
(evt) => events.onMessage && events.onMessage(evt, wsContext)
|
|
41
|
+
);
|
|
42
|
+
}
|
|
43
|
+
if (events.onError) {
|
|
44
|
+
server.addEventListener(
|
|
45
|
+
"error",
|
|
46
|
+
(evt) => events.onError && events.onError(evt, wsContext)
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
server.accept();
|
|
50
|
+
return new Response(null, {
|
|
51
|
+
status: 101,
|
|
52
|
+
webSocket: client
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
export {
|
|
56
|
+
upgradeWebSocket
|
|
57
|
+
};
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
// src/adapter/deno/index.ts
|
|
2
2
|
import { serveStatic } from "./serve-static.js";
|
|
3
3
|
import { toSSG, denoFileSystemModule } from "./ssg.js";
|
|
4
|
+
import { upgradeWebSocket } from "./websocket.js";
|
|
4
5
|
export {
|
|
5
6
|
denoFileSystemModule,
|
|
6
7
|
serveStatic,
|
|
7
|
-
toSSG
|
|
8
|
+
toSSG,
|
|
9
|
+
upgradeWebSocket
|
|
8
10
|
};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// src/adapter/deno/websocket.ts
|
|
2
|
+
var upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
3
|
+
if (c.req.header("upgrade") !== "websocket") {
|
|
4
|
+
return await next();
|
|
5
|
+
}
|
|
6
|
+
const { response, socket } = Deno.upgradeWebSocket(c.req.raw);
|
|
7
|
+
const events = await createEvents(c);
|
|
8
|
+
const wsContext = {
|
|
9
|
+
binaryType: "arraybuffer",
|
|
10
|
+
close: (code, reason) => socket.close(code, reason),
|
|
11
|
+
get protocol() {
|
|
12
|
+
return socket.protocol;
|
|
13
|
+
},
|
|
14
|
+
raw: socket,
|
|
15
|
+
get readyState() {
|
|
16
|
+
return socket.readyState;
|
|
17
|
+
},
|
|
18
|
+
url: socket.url ? new URL(socket.url) : null,
|
|
19
|
+
send: (source) => socket.send(source)
|
|
20
|
+
};
|
|
21
|
+
socket.onopen = (evt) => events.onOpen && events.onOpen(evt, wsContext);
|
|
22
|
+
socket.onmessage = (evt) => events.onMessage && events.onMessage(evt, wsContext);
|
|
23
|
+
socket.onclose = (evt) => events.onClose && events.onClose(evt, wsContext);
|
|
24
|
+
socket.onerror = (evt) => events.onError && events.onError(evt, wsContext);
|
|
25
|
+
return response;
|
|
26
|
+
};
|
|
27
|
+
export {
|
|
28
|
+
upgradeWebSocket
|
|
29
|
+
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/adapter/lambda-edge/handler.ts
|
|
2
2
|
import crypto from "crypto";
|
|
3
3
|
import { encodeBase64 } from "../../utils/encode.js";
|
|
4
|
-
globalThis.crypto
|
|
4
|
+
globalThis.crypto ??= crypto;
|
|
5
5
|
var convertHeaders = (headers) => {
|
|
6
6
|
const cfHeaders = {};
|
|
7
7
|
headers.forEach((value, key) => {
|
|
@@ -32,7 +32,7 @@ __export(handler_exports, {
|
|
|
32
32
|
module.exports = __toCommonJS(handler_exports);
|
|
33
33
|
var import_crypto = __toESM(require("crypto"), 1);
|
|
34
34
|
var import_encode = require("../../utils/encode");
|
|
35
|
-
globalThis.crypto
|
|
35
|
+
globalThis.crypto ??= import_crypto.default;
|
|
36
36
|
const getRequestContext = (event) => {
|
|
37
37
|
return event.requestContext;
|
|
38
38
|
};
|
|
@@ -19,15 +19,18 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
19
19
|
var bun_exports = {};
|
|
20
20
|
__export(bun_exports, {
|
|
21
21
|
bunFileSystemModule: () => import_ssg.bunFileSystemModule,
|
|
22
|
+
createBunWebSocket: () => import_websocket.createBunWebSocket,
|
|
22
23
|
serveStatic: () => import_serve_static.serveStatic,
|
|
23
24
|
toSSG: () => import_ssg.toSSG
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(bun_exports);
|
|
26
27
|
var import_serve_static = require("./serve-static");
|
|
27
28
|
var import_ssg = require("./ssg");
|
|
29
|
+
var import_websocket = require("./websocket");
|
|
28
30
|
// Annotate the CommonJS export names for ESM import in node:
|
|
29
31
|
0 && (module.exports = {
|
|
30
32
|
bunFileSystemModule,
|
|
33
|
+
createBunWebSocket,
|
|
31
34
|
serveStatic,
|
|
32
35
|
toSSG
|
|
33
36
|
});
|
|
@@ -0,0 +1,98 @@
|
|
|
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 websocket_exports = {};
|
|
20
|
+
__export(websocket_exports, {
|
|
21
|
+
createBunWebSocket: () => createBunWebSocket
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(websocket_exports);
|
|
24
|
+
var import_websocket = require("../../helper/websocket");
|
|
25
|
+
const createWSContext = (ws) => {
|
|
26
|
+
return {
|
|
27
|
+
send: (source, options) => {
|
|
28
|
+
const sendingData = typeof source === "string" ? source : source instanceof Uint8Array ? source.buffer : source;
|
|
29
|
+
ws.send(sendingData, options?.compress);
|
|
30
|
+
},
|
|
31
|
+
raw: ws,
|
|
32
|
+
binaryType: "arraybuffer",
|
|
33
|
+
readyState: ws.readyState,
|
|
34
|
+
url: ws.data.url,
|
|
35
|
+
protocol: ws.data.protocol,
|
|
36
|
+
close(code, reason) {
|
|
37
|
+
ws.close(code, reason);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
const createBunWebSocket = () => {
|
|
42
|
+
const websocketConns = [];
|
|
43
|
+
const upgradeWebSocket = (createEvents) => {
|
|
44
|
+
return async (c, next) => {
|
|
45
|
+
const server = c.env;
|
|
46
|
+
const connId = websocketConns.push(await createEvents(c)) - 1;
|
|
47
|
+
const upgradeResult = server.upgrade(c.req.raw, {
|
|
48
|
+
data: {
|
|
49
|
+
connId,
|
|
50
|
+
url: new URL(c.req.url),
|
|
51
|
+
protocol: c.req.url
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
if (upgradeResult) {
|
|
55
|
+
return new Response(null);
|
|
56
|
+
}
|
|
57
|
+
await next();
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
const websocket = {
|
|
61
|
+
open(ws) {
|
|
62
|
+
const websocketListeners = websocketConns[ws.data.connId];
|
|
63
|
+
if (websocketListeners.onOpen) {
|
|
64
|
+
websocketListeners.onOpen(new Event("open"), createWSContext(ws));
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
close(ws, code, reason) {
|
|
68
|
+
const websocketListeners = websocketConns[ws.data.connId];
|
|
69
|
+
if (websocketListeners.onClose) {
|
|
70
|
+
websocketListeners.onClose(
|
|
71
|
+
new CloseEvent("close", {
|
|
72
|
+
code,
|
|
73
|
+
reason
|
|
74
|
+
}),
|
|
75
|
+
createWSContext(ws)
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
message(ws, message) {
|
|
80
|
+
const websocketListeners = websocketConns[ws.data.connId];
|
|
81
|
+
if (websocketListeners.onMessage) {
|
|
82
|
+
const normalizedReceiveData = typeof message === "string" ? message : message.buffer;
|
|
83
|
+
websocketListeners.onMessage(
|
|
84
|
+
(0, import_websocket.createWSMessageEvent)(normalizedReceiveData),
|
|
85
|
+
createWSContext(ws)
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
return {
|
|
91
|
+
upgradeWebSocket,
|
|
92
|
+
websocket
|
|
93
|
+
};
|
|
94
|
+
};
|
|
95
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
96
|
+
0 && (module.exports = {
|
|
97
|
+
createBunWebSocket
|
|
98
|
+
});
|
|
@@ -18,11 +18,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var cloudflare_workers_exports = {};
|
|
20
20
|
__export(cloudflare_workers_exports, {
|
|
21
|
-
serveStatic: () => import_serve_static_module.serveStatic
|
|
21
|
+
serveStatic: () => import_serve_static_module.serveStatic,
|
|
22
|
+
upgradeWebSocket: () => import_websocket.upgradeWebSocket
|
|
22
23
|
});
|
|
23
24
|
module.exports = __toCommonJS(cloudflare_workers_exports);
|
|
24
25
|
var import_serve_static_module = require("./serve-static-module");
|
|
26
|
+
var import_websocket = require("./websocket");
|
|
25
27
|
// Annotate the CommonJS export names for ESM import in node:
|
|
26
28
|
0 && (module.exports = {
|
|
27
|
-
serveStatic
|
|
29
|
+
serveStatic,
|
|
30
|
+
upgradeWebSocket
|
|
28
31
|
});
|
|
@@ -0,0 +1,80 @@
|
|
|
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 websocket_exports = {};
|
|
20
|
+
__export(websocket_exports, {
|
|
21
|
+
upgradeWebSocket: () => upgradeWebSocket
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(websocket_exports);
|
|
24
|
+
const upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
25
|
+
const CFWebSocketPair = globalThis.WebSocketPair;
|
|
26
|
+
const events = await createEvents(c);
|
|
27
|
+
const upgradeHeader = c.req.header("Upgrade");
|
|
28
|
+
if (upgradeHeader !== "websocket") {
|
|
29
|
+
return await next();
|
|
30
|
+
}
|
|
31
|
+
const webSocketPair = new CFWebSocketPair();
|
|
32
|
+
const client = webSocketPair[0];
|
|
33
|
+
const server = webSocketPair[1];
|
|
34
|
+
const wsContext = {
|
|
35
|
+
binaryType: "arraybuffer",
|
|
36
|
+
close: (code, reason) => server.close(code, reason),
|
|
37
|
+
get protocol() {
|
|
38
|
+
return server.protocol;
|
|
39
|
+
},
|
|
40
|
+
raw: server,
|
|
41
|
+
get readyState() {
|
|
42
|
+
return server.readyState;
|
|
43
|
+
},
|
|
44
|
+
url: server.url ? new URL(server.url) : null,
|
|
45
|
+
send: (source) => server.send(source)
|
|
46
|
+
};
|
|
47
|
+
if (events.onOpen) {
|
|
48
|
+
server.addEventListener(
|
|
49
|
+
"open",
|
|
50
|
+
(evt) => events.onOpen && events.onOpen(evt, wsContext)
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
if (events.onClose) {
|
|
54
|
+
server.addEventListener(
|
|
55
|
+
"close",
|
|
56
|
+
(evt) => events.onClose && events.onClose(evt, wsContext)
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
if (events.onMessage) {
|
|
60
|
+
server.addEventListener(
|
|
61
|
+
"message",
|
|
62
|
+
(evt) => events.onMessage && events.onMessage(evt, wsContext)
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
if (events.onError) {
|
|
66
|
+
server.addEventListener(
|
|
67
|
+
"error",
|
|
68
|
+
(evt) => events.onError && events.onError(evt, wsContext)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
server.accept();
|
|
72
|
+
return new Response(null, {
|
|
73
|
+
status: 101,
|
|
74
|
+
webSocket: client
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
78
|
+
0 && (module.exports = {
|
|
79
|
+
upgradeWebSocket
|
|
80
|
+
});
|
|
@@ -20,14 +20,17 @@ var deno_exports = {};
|
|
|
20
20
|
__export(deno_exports, {
|
|
21
21
|
denoFileSystemModule: () => import_ssg.denoFileSystemModule,
|
|
22
22
|
serveStatic: () => import_serve_static.serveStatic,
|
|
23
|
-
toSSG: () => import_ssg.toSSG
|
|
23
|
+
toSSG: () => import_ssg.toSSG,
|
|
24
|
+
upgradeWebSocket: () => import_websocket.upgradeWebSocket
|
|
24
25
|
});
|
|
25
26
|
module.exports = __toCommonJS(deno_exports);
|
|
26
27
|
var import_serve_static = require("./serve-static");
|
|
27
28
|
var import_ssg = require("./ssg");
|
|
29
|
+
var import_websocket = require("./websocket");
|
|
28
30
|
// Annotate the CommonJS export names for ESM import in node:
|
|
29
31
|
0 && (module.exports = {
|
|
30
32
|
denoFileSystemModule,
|
|
31
33
|
serveStatic,
|
|
32
|
-
toSSG
|
|
34
|
+
toSSG,
|
|
35
|
+
upgradeWebSocket
|
|
33
36
|
});
|
|
@@ -0,0 +1,52 @@
|
|
|
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 websocket_exports = {};
|
|
20
|
+
__export(websocket_exports, {
|
|
21
|
+
upgradeWebSocket: () => upgradeWebSocket
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(websocket_exports);
|
|
24
|
+
const upgradeWebSocket = (createEvents) => async (c, next) => {
|
|
25
|
+
if (c.req.header("upgrade") !== "websocket") {
|
|
26
|
+
return await next();
|
|
27
|
+
}
|
|
28
|
+
const { response, socket } = Deno.upgradeWebSocket(c.req.raw);
|
|
29
|
+
const events = await createEvents(c);
|
|
30
|
+
const wsContext = {
|
|
31
|
+
binaryType: "arraybuffer",
|
|
32
|
+
close: (code, reason) => socket.close(code, reason),
|
|
33
|
+
get protocol() {
|
|
34
|
+
return socket.protocol;
|
|
35
|
+
},
|
|
36
|
+
raw: socket,
|
|
37
|
+
get readyState() {
|
|
38
|
+
return socket.readyState;
|
|
39
|
+
},
|
|
40
|
+
url: socket.url ? new URL(socket.url) : null,
|
|
41
|
+
send: (source) => socket.send(source)
|
|
42
|
+
};
|
|
43
|
+
socket.onopen = (evt) => events.onOpen && events.onOpen(evt, wsContext);
|
|
44
|
+
socket.onmessage = (evt) => events.onMessage && events.onMessage(evt, wsContext);
|
|
45
|
+
socket.onclose = (evt) => events.onClose && events.onClose(evt, wsContext);
|
|
46
|
+
socket.onerror = (evt) => events.onError && events.onError(evt, wsContext);
|
|
47
|
+
return response;
|
|
48
|
+
};
|
|
49
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
50
|
+
0 && (module.exports = {
|
|
51
|
+
upgradeWebSocket
|
|
52
|
+
});
|
|
@@ -30,7 +30,7 @@ __export(handler_exports, {
|
|
|
30
30
|
module.exports = __toCommonJS(handler_exports);
|
|
31
31
|
var import_crypto = __toESM(require("crypto"), 1);
|
|
32
32
|
var import_encode = require("../../utils/encode");
|
|
33
|
-
globalThis.crypto
|
|
33
|
+
globalThis.crypto ??= import_crypto.default;
|
|
34
34
|
const convertHeaders = (headers) => {
|
|
35
35
|
const cfHeaders = {};
|
|
36
36
|
headers.forEach((value, key) => {
|