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.
Files changed (109) hide show
  1. package/dist/adapter/aws-lambda/handler.js +1 -1
  2. package/dist/adapter/bun/index.js +2 -0
  3. package/dist/adapter/bun/websocket.js +77 -0
  4. package/dist/adapter/cloudflare-workers/index.js +3 -1
  5. package/dist/adapter/cloudflare-workers/websocket.js +57 -0
  6. package/dist/adapter/deno/index.js +3 -1
  7. package/dist/adapter/deno/websocket.js +29 -0
  8. package/dist/adapter/lambda-edge/handler.js +1 -1
  9. package/dist/cjs/adapter/aws-lambda/handler.js +1 -1
  10. package/dist/cjs/adapter/bun/index.js +3 -0
  11. package/dist/cjs/adapter/bun/websocket.js +98 -0
  12. package/dist/cjs/adapter/cloudflare-workers/index.js +5 -2
  13. package/dist/cjs/adapter/cloudflare-workers/websocket.js +80 -0
  14. package/dist/cjs/adapter/deno/index.js +5 -2
  15. package/dist/cjs/adapter/deno/websocket.js +52 -0
  16. package/dist/cjs/adapter/lambda-edge/handler.js +1 -1
  17. package/dist/cjs/client/client.js +68 -61
  18. package/dist/cjs/context.js +164 -188
  19. package/dist/cjs/helper/adapter/index.js +1 -1
  20. package/dist/cjs/helper/cookie/index.js +48 -8
  21. package/dist/cjs/helper/dev/index.js +3 -4
  22. package/dist/cjs/helper/factory/index.js +1 -3
  23. package/dist/cjs/helper/ssg/index.js +9 -159
  24. package/dist/cjs/helper/ssg/middleware.js +57 -0
  25. package/dist/cjs/helper/ssg/ssg.js +212 -0
  26. package/dist/cjs/helper/websocket/index.js +32 -0
  27. package/dist/cjs/helper.js +1 -0
  28. package/dist/cjs/hono-base.js +46 -65
  29. package/dist/cjs/http-exception.js +3 -1
  30. package/dist/cjs/jsx/base.js +7 -2
  31. package/dist/cjs/jsx/components.js +1 -1
  32. package/dist/cjs/jsx/dom/index.js +45 -3
  33. package/dist/cjs/jsx/dom/render.js +6 -6
  34. package/dist/cjs/jsx/hooks/index.js +25 -16
  35. package/dist/cjs/jsx/index.js +34 -2
  36. package/dist/cjs/middleware/body-limit/index.js +80 -0
  37. package/dist/cjs/middleware/logger/index.js +9 -7
  38. package/dist/cjs/request.js +29 -48
  39. package/dist/cjs/router/linear-router/router.js +3 -5
  40. package/dist/cjs/router/pattern-router/router.js +2 -4
  41. package/dist/cjs/router/reg-exp-router/node.js +3 -3
  42. package/dist/cjs/router/reg-exp-router/router.js +11 -12
  43. package/dist/cjs/router/reg-exp-router/trie.js +2 -4
  44. package/dist/cjs/router/smart-router/router.js +3 -3
  45. package/dist/cjs/router/trie-router/node.js +6 -2
  46. package/dist/cjs/router/trie-router/router.js +2 -1
  47. package/dist/cjs/test-utils/setup-vitest.js +2 -0
  48. package/dist/cjs/utils/color.js +32 -0
  49. package/dist/cjs/utils/concurrent.js +62 -0
  50. package/dist/cjs/utils/cookie.js +28 -1
  51. package/dist/cjs/utils/stream.js +5 -1
  52. package/dist/cjs/utils/url.js +2 -2
  53. package/dist/client/client.js +68 -61
  54. package/dist/context.js +164 -189
  55. package/dist/helper/adapter/index.js +1 -1
  56. package/dist/helper/cookie/index.js +48 -8
  57. package/dist/helper/dev/index.js +3 -4
  58. package/dist/helper/factory/index.js +1 -3
  59. package/dist/helper/ssg/index.js +3 -151
  60. package/dist/helper/ssg/middleware.js +29 -0
  61. package/dist/helper/ssg/ssg.js +187 -0
  62. package/dist/helper/websocket/index.js +9 -0
  63. package/dist/helper.js +1 -0
  64. package/dist/hono-base.js +45 -65
  65. package/dist/http-exception.js +3 -1
  66. package/dist/jsx/base.js +7 -2
  67. package/dist/jsx/components.js +1 -1
  68. package/dist/jsx/dom/index.js +44 -4
  69. package/dist/jsx/dom/render.js +6 -6
  70. package/dist/jsx/hooks/index.js +23 -16
  71. package/dist/jsx/index.js +34 -3
  72. package/dist/middleware/body-limit/index.js +57 -0
  73. package/dist/middleware/logger/index.js +9 -7
  74. package/dist/request.js +29 -49
  75. package/dist/router/linear-router/router.js +3 -5
  76. package/dist/router/pattern-router/router.js +2 -4
  77. package/dist/router/reg-exp-router/node.js +3 -3
  78. package/dist/router/reg-exp-router/router.js +11 -12
  79. package/dist/router/reg-exp-router/trie.js +2 -4
  80. package/dist/router/smart-router/router.js +3 -3
  81. package/dist/router/trie-router/node.js +6 -2
  82. package/dist/router/trie-router/router.js +2 -1
  83. package/dist/test-utils/setup-vitest.js +2 -0
  84. package/dist/types/adapter/bun/index.d.ts +1 -0
  85. package/dist/types/adapter/bun/websocket.d.ts +26 -0
  86. package/dist/types/adapter/cloudflare-workers/index.d.ts +1 -0
  87. package/dist/types/adapter/cloudflare-workers/websocket.d.ts +2 -0
  88. package/dist/types/adapter/deno/index.d.ts +1 -0
  89. package/dist/types/adapter/deno/websocket.d.ts +2 -0
  90. package/dist/types/client/types.d.ts +9 -0
  91. package/dist/types/helper/cookie/index.d.ts +3 -1
  92. package/dist/types/helper/ssg/index.d.ts +2 -105
  93. package/dist/types/helper/ssg/middleware.d.ts +38 -0
  94. package/dist/types/helper/ssg/ssg.d.ts +70 -0
  95. package/dist/types/helper/websocket/index.d.ts +34 -0
  96. package/dist/types/http-exception.d.ts +1 -0
  97. package/dist/types/jsx/dom/index.d.ts +40 -7
  98. package/dist/types/jsx/hooks/index.d.ts +2 -0
  99. package/dist/types/jsx/index.d.ts +41 -5
  100. package/dist/types/middleware/body-limit/index.d.ts +28 -0
  101. package/dist/types/utils/color.d.ts +1 -0
  102. package/dist/types/utils/concurrent.d.ts +7 -0
  103. package/dist/types/utils/cookie.d.ts +2 -0
  104. package/dist/utils/color.js +9 -0
  105. package/dist/utils/concurrent.js +39 -0
  106. package/dist/utils/cookie.js +28 -1
  107. package/dist/utils/stream.js +5 -1
  108. package/dist/utils/url.js +2 -2
  109. 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 ?? (globalThis.crypto = 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
+ };
@@ -1,5 +1,7 @@
1
1
  // src/adapter/cloudflare-workers/index.ts
2
2
  import { serveStatic } from "./serve-static-module.js";
3
+ import { upgradeWebSocket } from "./websocket.js";
3
4
  export {
4
- serveStatic
5
+ serveStatic,
6
+ upgradeWebSocket
5
7
  };
@@ -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 ?? (globalThis.crypto = 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 ?? (globalThis.crypto = import_crypto.default);
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 ?? (globalThis.crypto = import_crypto.default);
33
+ globalThis.crypto ??= import_crypto.default;
34
34
  const convertHeaders = (headers) => {
35
35
  const cfHeaders = {};
36
36
  headers.forEach((value, key) => {