hono 4.6.7 → 4.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/adapter/bun/websocket.js +4 -6
  2. package/dist/adapter/cloudflare-workers/websocket.js +34 -39
  3. package/dist/adapter/deno/serve-static.js +2 -1
  4. package/dist/adapter/lambda-edge/handler.js +1 -1
  5. package/dist/cjs/adapter/bun/websocket.js +4 -6
  6. package/dist/cjs/adapter/cloudflare-workers/websocket.js +34 -39
  7. package/dist/cjs/adapter/deno/serve-static.js +2 -1
  8. package/dist/cjs/adapter/lambda-edge/handler.js +1 -1
  9. package/dist/cjs/client/client.js +3 -3
  10. package/dist/cjs/compose.js +4 -3
  11. package/dist/cjs/context.js +12 -9
  12. package/dist/cjs/helper/cookie/index.js +1 -1
  13. package/dist/cjs/helper/html/index.js +1 -1
  14. package/dist/cjs/helper/ssg/ssg.js +2 -2
  15. package/dist/cjs/helper/ssg/utils.js +2 -2
  16. package/dist/cjs/helper/websocket/index.js +1 -4
  17. package/dist/cjs/hono-base.js +29 -32
  18. package/dist/cjs/jsx/base.js +8 -3
  19. package/dist/cjs/jsx/constants.js +3 -0
  20. package/dist/cjs/jsx/dom/index.js +8 -2
  21. package/dist/cjs/jsx/dom/render.js +15 -12
  22. package/dist/cjs/middleware/etag/digest.js +59 -0
  23. package/dist/cjs/middleware/etag/index.js +5 -2
  24. package/dist/cjs/middleware/ip-restriction/index.js +3 -3
  25. package/dist/cjs/middleware/jsx-renderer/index.js +2 -1
  26. package/dist/cjs/middleware/logger/index.js +13 -11
  27. package/dist/cjs/middleware/timing/timing.js +5 -7
  28. package/dist/cjs/request.js +15 -14
  29. package/dist/cjs/router/pattern-router/router.js +4 -4
  30. package/dist/cjs/router/reg-exp-router/router.js +5 -5
  31. package/dist/cjs/router/reg-exp-router/trie.js +2 -2
  32. package/dist/cjs/router/trie-router/node.js +9 -7
  33. package/dist/cjs/utils/color.js +1 -1
  34. package/dist/cjs/utils/cookie.js +13 -6
  35. package/dist/cjs/utils/crypto.js +0 -9
  36. package/dist/cjs/utils/headers.js +16 -0
  37. package/dist/cjs/utils/jwt/jwt.js +1 -1
  38. package/dist/cjs/utils/mime.js +2 -1
  39. package/dist/cjs/utils/url.js +9 -6
  40. package/dist/client/client.js +3 -3
  41. package/dist/compose.js +4 -3
  42. package/dist/context.js +12 -9
  43. package/dist/helper/cookie/index.js +1 -1
  44. package/dist/helper/html/index.js +1 -1
  45. package/dist/helper/ssg/ssg.js +2 -2
  46. package/dist/helper/ssg/utils.js +2 -2
  47. package/dist/helper/websocket/index.js +1 -4
  48. package/dist/hono-base.js +29 -32
  49. package/dist/jsx/base.js +7 -3
  50. package/dist/jsx/constants.js +2 -0
  51. package/dist/jsx/dom/index.js +7 -1
  52. package/dist/jsx/dom/render.js +22 -13
  53. package/dist/middleware/etag/digest.js +36 -0
  54. package/dist/middleware/etag/index.js +5 -2
  55. package/dist/middleware/ip-restriction/index.js +3 -3
  56. package/dist/middleware/jsx-renderer/index.js +2 -1
  57. package/dist/middleware/logger/index.js +13 -11
  58. package/dist/middleware/timing/timing.js +5 -7
  59. package/dist/request.js +16 -15
  60. package/dist/router/pattern-router/router.js +4 -4
  61. package/dist/router/reg-exp-router/router.js +5 -5
  62. package/dist/router/reg-exp-router/trie.js +2 -2
  63. package/dist/router/trie-router/node.js +9 -7
  64. package/dist/types/adapter/bun/websocket.d.ts +5 -3
  65. package/dist/types/adapter/cloudflare-workers/websocket.d.ts +2 -2
  66. package/dist/types/adapter/deno/websocket.d.ts +1 -20
  67. package/dist/types/context.d.ts +2 -2
  68. package/dist/types/helper/accepts/accepts.d.ts +1 -1
  69. package/dist/types/helper/websocket/index.d.ts +3 -3
  70. package/dist/types/hono-base.d.ts +1 -1
  71. package/dist/types/jsx/base.d.ts +5 -0
  72. package/dist/types/jsx/constants.d.ts +1 -0
  73. package/dist/types/jsx/dom/index.d.ts +6 -5
  74. package/dist/types/jsx/dom/render.d.ts +1 -0
  75. package/dist/types/middleware/etag/digest.d.ts +1 -0
  76. package/dist/types/request.d.ts +3 -1
  77. package/dist/types/types.d.ts +71 -70
  78. package/dist/types/utils/body.d.ts +2 -2
  79. package/dist/types/utils/cookie.d.ts +4 -4
  80. package/dist/types/utils/crypto.d.ts +2 -1
  81. package/dist/types/utils/headers.d.ts +8 -0
  82. package/dist/types/utils/mime.d.ts +58 -1
  83. package/dist/types/utils/url.d.ts +3 -0
  84. package/dist/utils/color.js +1 -1
  85. package/dist/utils/cookie.js +13 -6
  86. package/dist/utils/crypto.js +0 -9
  87. package/dist/utils/headers.js +0 -0
  88. package/dist/utils/jwt/jwt.js +1 -1
  89. package/dist/utils/mime.js +2 -1
  90. package/dist/utils/url.js +7 -5
  91. package/package.json +1 -1
@@ -16,16 +16,14 @@ var createWSContext = (ws) => {
16
16
  });
17
17
  };
18
18
  var createBunWebSocket = () => {
19
- const websocketConns = [];
20
19
  const upgradeWebSocket = defineWebSocketHelper((c, events) => {
21
20
  const server = getBunServer(c);
22
21
  if (!server) {
23
22
  throw new TypeError("env has to include the 2nd argument of fetch.");
24
23
  }
25
- const connId = websocketConns.push(events) - 1;
26
24
  const upgradeResult = server.upgrade(c.req.raw, {
27
25
  data: {
28
- connId,
26
+ events,
29
27
  url: new URL(c.req.url),
30
28
  protocol: c.req.url
31
29
  }
@@ -37,13 +35,13 @@ var createBunWebSocket = () => {
37
35
  });
38
36
  const websocket = {
39
37
  open(ws) {
40
- const websocketListeners = websocketConns[ws.data.connId];
38
+ const websocketListeners = ws.data.events;
41
39
  if (websocketListeners.onOpen) {
42
40
  websocketListeners.onOpen(new Event("open"), createWSContext(ws));
43
41
  }
44
42
  },
45
43
  close(ws, code, reason) {
46
- const websocketListeners = websocketConns[ws.data.connId];
44
+ const websocketListeners = ws.data.events;
47
45
  if (websocketListeners.onClose) {
48
46
  websocketListeners.onClose(
49
47
  new CloseEvent("close", {
@@ -55,7 +53,7 @@ var createBunWebSocket = () => {
55
53
  }
56
54
  },
57
55
  message(ws, message) {
58
- const websocketListeners = websocketConns[ws.data.connId];
56
+ const websocketListeners = ws.data.events;
59
57
  if (websocketListeners.onMessage) {
60
58
  const normalizedReceiveData = typeof message === "string" ? message : message.buffer;
61
59
  websocketListeners.onMessage(
@@ -1,45 +1,40 @@
1
1
  // src/adapter/cloudflare-workers/websocket.ts
2
2
  import { WSContext, defineWebSocketHelper } from "../../helper/websocket/index.js";
3
- var upgradeWebSocket = defineWebSocketHelper(
4
- async (c, events) => {
5
- const upgradeHeader = c.req.header("Upgrade");
6
- if (upgradeHeader !== "websocket") {
7
- return;
8
- }
9
- const webSocketPair = new WebSocketPair();
10
- const client = webSocketPair[0];
11
- const server = webSocketPair[1];
12
- const wsContext = new WSContext({
13
- close: (code, reason) => server.close(code, reason),
14
- get protocol() {
15
- return server.protocol;
16
- },
17
- raw: server,
18
- get readyState() {
19
- return server.readyState;
20
- },
21
- url: server.url ? new URL(server.url) : null,
22
- send: (source) => server.send(source)
23
- });
24
- if (events.onOpen) {
25
- server.addEventListener("open", (evt) => events.onOpen?.(evt, wsContext));
26
- }
27
- if (events.onClose) {
28
- server.addEventListener("close", (evt) => events.onClose?.(evt, wsContext));
29
- }
30
- if (events.onMessage) {
31
- server.addEventListener("message", (evt) => events.onMessage?.(evt, wsContext));
32
- }
33
- if (events.onError) {
34
- server.addEventListener("error", (evt) => events.onError?.(evt, wsContext));
35
- }
36
- server.accept?.();
37
- return new Response(null, {
38
- status: 101,
39
- webSocket: client
40
- });
3
+ var upgradeWebSocket = defineWebSocketHelper(async (c, events) => {
4
+ const upgradeHeader = c.req.header("Upgrade");
5
+ if (upgradeHeader !== "websocket") {
6
+ return;
41
7
  }
42
- );
8
+ const webSocketPair = new WebSocketPair();
9
+ const client = webSocketPair[0];
10
+ const server = webSocketPair[1];
11
+ const wsContext = new WSContext({
12
+ close: (code, reason) => server.close(code, reason),
13
+ get protocol() {
14
+ return server.protocol;
15
+ },
16
+ raw: server,
17
+ get readyState() {
18
+ return server.readyState;
19
+ },
20
+ url: server.url ? new URL(server.url) : null,
21
+ send: (source) => server.send(source)
22
+ });
23
+ if (events.onClose) {
24
+ server.addEventListener("close", (evt) => events.onClose?.(evt, wsContext));
25
+ }
26
+ if (events.onMessage) {
27
+ server.addEventListener("message", (evt) => events.onMessage?.(evt, wsContext));
28
+ }
29
+ if (events.onError) {
30
+ server.addEventListener("error", (evt) => events.onError?.(evt, wsContext));
31
+ }
32
+ server.accept?.();
33
+ return new Response(null, {
34
+ status: 101,
35
+ webSocket: client
36
+ });
37
+ });
43
38
  export {
44
39
  upgradeWebSocket
45
40
  };
@@ -6,11 +6,12 @@ var serveStatic = (options) => {
6
6
  const getContent = async (path) => {
7
7
  try {
8
8
  const file = await open(path);
9
- return file ? file.readable : null;
9
+ return file.readable;
10
10
  } catch (e) {
11
11
  if (!(e instanceof errors.NotFound)) {
12
12
  console.warn(`${e}`);
13
13
  }
14
+ return null;
14
15
  }
15
16
  };
16
17
  const pathResolve = (path) => {
@@ -31,7 +31,7 @@ var createResult = async (res) => {
31
31
  status: res.status.toString(),
32
32
  headers: convertHeaders(res.headers),
33
33
  body,
34
- ...isBase64Encoded ? { bodyEncoding: "base64" } : {}
34
+ ...isBase64Encoded && { bodyEncoding: "base64" }
35
35
  };
36
36
  };
37
37
  var createRequest = (event) => {
@@ -39,16 +39,14 @@ const createWSContext = (ws) => {
39
39
  });
40
40
  };
41
41
  const createBunWebSocket = () => {
42
- const websocketConns = [];
43
42
  const upgradeWebSocket = (0, import_websocket.defineWebSocketHelper)((c, events) => {
44
43
  const server = (0, import_server.getBunServer)(c);
45
44
  if (!server) {
46
45
  throw new TypeError("env has to include the 2nd argument of fetch.");
47
46
  }
48
- const connId = websocketConns.push(events) - 1;
49
47
  const upgradeResult = server.upgrade(c.req.raw, {
50
48
  data: {
51
- connId,
49
+ events,
52
50
  url: new URL(c.req.url),
53
51
  protocol: c.req.url
54
52
  }
@@ -60,13 +58,13 @@ const createBunWebSocket = () => {
60
58
  });
61
59
  const websocket = {
62
60
  open(ws) {
63
- const websocketListeners = websocketConns[ws.data.connId];
61
+ const websocketListeners = ws.data.events;
64
62
  if (websocketListeners.onOpen) {
65
63
  websocketListeners.onOpen(new Event("open"), createWSContext(ws));
66
64
  }
67
65
  },
68
66
  close(ws, code, reason) {
69
- const websocketListeners = websocketConns[ws.data.connId];
67
+ const websocketListeners = ws.data.events;
70
68
  if (websocketListeners.onClose) {
71
69
  websocketListeners.onClose(
72
70
  new CloseEvent("close", {
@@ -78,7 +76,7 @@ const createBunWebSocket = () => {
78
76
  }
79
77
  },
80
78
  message(ws, message) {
81
- const websocketListeners = websocketConns[ws.data.connId];
79
+ const websocketListeners = ws.data.events;
82
80
  if (websocketListeners.onMessage) {
83
81
  const normalizedReceiveData = typeof message === "string" ? message : message.buffer;
84
82
  websocketListeners.onMessage(
@@ -22,46 +22,41 @@ __export(websocket_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(websocket_exports);
24
24
  var import_websocket = require("../../helper/websocket");
25
- const upgradeWebSocket = (0, import_websocket.defineWebSocketHelper)(
26
- async (c, events) => {
27
- const upgradeHeader = c.req.header("Upgrade");
28
- if (upgradeHeader !== "websocket") {
29
- return;
30
- }
31
- const webSocketPair = new WebSocketPair();
32
- const client = webSocketPair[0];
33
- const server = webSocketPair[1];
34
- const wsContext = new import_websocket.WSContext({
35
- close: (code, reason) => server.close(code, reason),
36
- get protocol() {
37
- return server.protocol;
38
- },
39
- raw: server,
40
- get readyState() {
41
- return server.readyState;
42
- },
43
- url: server.url ? new URL(server.url) : null,
44
- send: (source) => server.send(source)
45
- });
46
- if (events.onOpen) {
47
- server.addEventListener("open", (evt) => events.onOpen?.(evt, wsContext));
48
- }
49
- if (events.onClose) {
50
- server.addEventListener("close", (evt) => events.onClose?.(evt, wsContext));
51
- }
52
- if (events.onMessage) {
53
- server.addEventListener("message", (evt) => events.onMessage?.(evt, wsContext));
54
- }
55
- if (events.onError) {
56
- server.addEventListener("error", (evt) => events.onError?.(evt, wsContext));
57
- }
58
- server.accept?.();
59
- return new Response(null, {
60
- status: 101,
61
- webSocket: client
62
- });
25
+ const upgradeWebSocket = (0, import_websocket.defineWebSocketHelper)(async (c, events) => {
26
+ const upgradeHeader = c.req.header("Upgrade");
27
+ if (upgradeHeader !== "websocket") {
28
+ return;
63
29
  }
64
- );
30
+ const webSocketPair = new WebSocketPair();
31
+ const client = webSocketPair[0];
32
+ const server = webSocketPair[1];
33
+ const wsContext = new import_websocket.WSContext({
34
+ close: (code, reason) => server.close(code, reason),
35
+ get protocol() {
36
+ return server.protocol;
37
+ },
38
+ raw: server,
39
+ get readyState() {
40
+ return server.readyState;
41
+ },
42
+ url: server.url ? new URL(server.url) : null,
43
+ send: (source) => server.send(source)
44
+ });
45
+ if (events.onClose) {
46
+ server.addEventListener("close", (evt) => events.onClose?.(evt, wsContext));
47
+ }
48
+ if (events.onMessage) {
49
+ server.addEventListener("message", (evt) => events.onMessage?.(evt, wsContext));
50
+ }
51
+ if (events.onError) {
52
+ server.addEventListener("error", (evt) => events.onError?.(evt, wsContext));
53
+ }
54
+ server.accept?.();
55
+ return new Response(null, {
56
+ status: 101,
57
+ webSocket: client
58
+ });
59
+ });
65
60
  // Annotate the CommonJS export names for ESM import in node:
66
61
  0 && (module.exports = {
67
62
  upgradeWebSocket
@@ -28,11 +28,12 @@ const serveStatic = (options) => {
28
28
  const getContent = async (path) => {
29
29
  try {
30
30
  const file = await open(path);
31
- return file ? file.readable : null;
31
+ return file.readable;
32
32
  } catch (e) {
33
33
  if (!(e instanceof errors.NotFound)) {
34
34
  console.warn(`${e}`);
35
35
  }
36
+ return null;
36
37
  }
37
38
  };
38
39
  const pathResolve = (path) => {
@@ -61,7 +61,7 @@ const createResult = async (res) => {
61
61
  status: res.status.toString(),
62
62
  headers: convertHeaders(res.headers),
63
63
  body,
64
- ...isBase64Encoded ? { bodyEncoding: "base64" } : {}
64
+ ...isBase64Encoded && { bodyEncoding: "base64" }
65
65
  };
66
66
  };
67
67
  const createRequest = (event) => {
@@ -80,8 +80,8 @@ class ClientRequestImpl {
80
80
  }
81
81
  let methodUpperCase = this.method.toUpperCase();
82
82
  const headerValues = {
83
- ...args?.header ?? {},
84
- ...typeof opt?.headers === "function" ? await opt.headers() : opt?.headers ? opt.headers : {}
83
+ ...args?.header,
84
+ ...typeof opt?.headers === "function" ? await opt.headers() : opt?.headers
85
85
  };
86
86
  if (args?.cookie) {
87
87
  const cookies = [];
@@ -172,7 +172,7 @@ const hc = (baseUrl, options) => createProxy(function proxyCallback(opts) {
172
172
  const req = new ClientRequestImpl(url, method);
173
173
  if (method) {
174
174
  options ??= {};
175
- const args = (0, import_utils.deepMerge)(options, { ...opts.args[1] ?? {} });
175
+ const args = (0, import_utils.deepMerge)(options, { ...opts.args[1] });
176
176
  return req.fetch(opts.args[0], args);
177
177
  }
178
178
  return req;
@@ -25,6 +25,7 @@ var import_context = require("./context");
25
25
  const compose = (middleware, onError, onNotFound) => {
26
26
  return (context, next) => {
27
27
  let index = -1;
28
+ const isContext = context instanceof import_context.Context;
28
29
  return dispatch(0);
29
30
  async function dispatch(i) {
30
31
  if (i <= index) {
@@ -36,14 +37,14 @@ const compose = (middleware, onError, onNotFound) => {
36
37
  let handler;
37
38
  if (middleware[i]) {
38
39
  handler = middleware[i][0][0];
39
- if (context instanceof import_context.Context) {
40
+ if (isContext) {
40
41
  context.req.routeIndex = i;
41
42
  }
42
43
  } else {
43
44
  handler = i === middleware.length && next || void 0;
44
45
  }
45
46
  if (!handler) {
46
- if (context instanceof import_context.Context && context.finalized === false && onNotFound) {
47
+ if (isContext && context.finalized === false && onNotFound) {
47
48
  res = await onNotFound(context);
48
49
  }
49
50
  } else {
@@ -52,7 +53,7 @@ const compose = (middleware, onError, onNotFound) => {
52
53
  return dispatch(i + 1);
53
54
  });
54
55
  } catch (err) {
55
- if (err instanceof Error && context instanceof import_context.Context && onError) {
56
+ if (err instanceof Error && isContext && onError) {
56
57
  context.error = err;
57
58
  res = await onError(err, context);
58
59
  isError = true;
@@ -26,7 +26,9 @@ var import_request = require("./request");
26
26
  var import_html = require("./utils/html");
27
27
  const TEXT_PLAIN = "text/plain; charset=UTF-8";
28
28
  const setHeaders = (headers, map = {}) => {
29
- Object.entries(map).forEach(([key, value]) => headers.set(key, value));
29
+ for (const key of Object.keys(map)) {
30
+ headers.set(key, map[key]);
31
+ }
30
32
  return headers;
31
33
  };
32
34
  class Context {
@@ -173,7 +175,7 @@ class Context {
173
175
  }
174
176
  return Object.fromEntries(this.#var);
175
177
  }
176
- newResponse = (data, arg, headers) => {
178
+ #newResponse(data, arg, headers) {
177
179
  if (this.#isFresh && !headers && !arg && this.#status === 200) {
178
180
  return new Response(data, {
179
181
  headers: this.#preparedHeaders
@@ -225,9 +227,10 @@ class Context {
225
227
  status,
226
228
  headers: this.#headers
227
229
  });
228
- };
230
+ }
231
+ newResponse = (...args) => this.#newResponse(...args);
229
232
  body = (data, arg, headers) => {
230
- return typeof arg === "number" ? this.newResponse(data, arg, headers) : this.newResponse(data, arg);
233
+ return typeof arg === "number" ? this.#newResponse(data, arg, headers) : this.#newResponse(data, arg);
231
234
  };
232
235
  text = (text, arg, headers) => {
233
236
  if (!this.#preparedHeaders) {
@@ -237,27 +240,27 @@ class Context {
237
240
  this.#preparedHeaders = {};
238
241
  }
239
242
  this.#preparedHeaders["content-type"] = TEXT_PLAIN;
240
- return typeof arg === "number" ? this.newResponse(text, arg, headers) : this.newResponse(text, arg);
243
+ return typeof arg === "number" ? this.#newResponse(text, arg, headers) : this.#newResponse(text, arg);
241
244
  };
242
245
  json = (object, arg, headers) => {
243
246
  const body = JSON.stringify(object);
244
247
  this.#preparedHeaders ??= {};
245
248
  this.#preparedHeaders["content-type"] = "application/json; charset=UTF-8";
246
- return typeof arg === "number" ? this.newResponse(body, arg, headers) : this.newResponse(body, arg);
249
+ return typeof arg === "number" ? this.#newResponse(body, arg, headers) : this.#newResponse(body, arg);
247
250
  };
248
251
  html = (html, arg, headers) => {
249
252
  this.#preparedHeaders ??= {};
250
253
  this.#preparedHeaders["content-type"] = "text/html; charset=UTF-8";
251
254
  if (typeof html === "object") {
252
255
  return (0, import_html.resolveCallback)(html, import_html.HtmlEscapedCallbackPhase.Stringify, false, {}).then((html2) => {
253
- return typeof arg === "number" ? this.newResponse(html2, arg, headers) : this.newResponse(html2, arg);
256
+ return typeof arg === "number" ? this.#newResponse(html2, arg, headers) : this.#newResponse(html2, arg);
254
257
  });
255
258
  }
256
- return typeof arg === "number" ? this.newResponse(html, arg, headers) : this.newResponse(html, arg);
259
+ return typeof arg === "number" ? this.#newResponse(html, arg, headers) : this.#newResponse(html, arg);
257
260
  };
258
261
  redirect = (location, status) => {
259
262
  this.#headers ??= new Headers();
260
- this.#headers.set("Location", location);
263
+ this.#headers.set("Location", String(location));
261
264
  return this.newResponse(null, status ?? 302);
262
265
  };
263
266
  notFound = () => {
@@ -82,7 +82,7 @@ const setCookie = (c, name, value, opt) => {
82
82
  } else {
83
83
  cookie = (0, import_cookie.serialize)(name, value, { path: "/", ...opt });
84
84
  }
85
- c.header("set-cookie", cookie, { append: true });
85
+ c.header("Set-Cookie", cookie, { append: true });
86
86
  };
87
87
  const setSignedCookie = async (c, name, value, secret, opt) => {
88
88
  let cookie;
@@ -27,7 +27,7 @@ const html = (strings, ...values) => {
27
27
  const buffer = [""];
28
28
  for (let i = 0, len = strings.length - 1; i < len; i++) {
29
29
  buffer[0] += strings[i];
30
- const children = values[i] instanceof Array ? values[i].flat(Infinity) : [values[i]];
30
+ const children = Array.isArray(values[i]) ? values[i].flat(Infinity) : [values[i]];
31
31
  for (let i2 = 0, len2 = children.length; i2 < len2; i2++) {
32
32
  const child = children[i2];
33
33
  if (typeof child === "string") {
@@ -261,8 +261,8 @@ const toSSG = async (app, fs, options) => {
261
261
  result = { success: false, files: [], error: errorObj };
262
262
  }
263
263
  if (options?.afterGenerateHook) {
264
- const conbinedAfterGenerateHooks = combineAfterGenerateHooks(options?.afterGenerateHook);
265
- await conbinedAfterGenerateHooks(result);
264
+ const combinedAfterGenerateHooks = combineAfterGenerateHooks(options?.afterGenerateHook);
265
+ await combinedAfterGenerateHooks(result);
266
266
  }
267
267
  return result;
268
268
  };
@@ -26,8 +26,8 @@ module.exports = __toCommonJS(utils_exports);
26
26
  var import_router = require("../../router");
27
27
  var import_handler = require("../../utils/handler");
28
28
  const dirname = (path) => {
29
- const splittedPath = path.split(/[\/\\]/);
30
- return splittedPath.slice(0, -1).join("/");
29
+ const separatedPath = path.split(/[\/\\]/);
30
+ return separatedPath.slice(0, -1).join("/");
31
31
  };
32
32
  const normalizePath = (path) => {
33
33
  return path.replace(/(\\)/g, "/").replace(/\/$/g, "");
@@ -32,10 +32,7 @@ class WSContext {
32
32
  this.protocol = init.protocol ?? null;
33
33
  }
34
34
  send(source, options) {
35
- this.#init.send(
36
- typeof source === "string" ? source : source instanceof Uint8Array ? source.buffer : source,
37
- options ?? {}
38
- );
35
+ this.#init.send(source, options ?? {});
39
36
  }
40
37
  raw;
41
38
  binaryType = "arraybuffer";
@@ -59,11 +59,11 @@ class Hono {
59
59
  if (typeof args1 === "string") {
60
60
  this.#path = args1;
61
61
  } else {
62
- this.addRoute(method, this.#path, args1);
62
+ this.#addRoute(method, this.#path, args1);
63
63
  }
64
64
  args.forEach((handler) => {
65
65
  if (typeof handler !== "string") {
66
- this.addRoute(method, this.#path, handler);
66
+ this.#addRoute(method, this.#path, handler);
67
67
  }
68
68
  });
69
69
  return this;
@@ -74,7 +74,7 @@ class Hono {
74
74
  this.#path = p;
75
75
  for (const m of [method].flat()) {
76
76
  handlers.map((handler) => {
77
- this.addRoute(m.toUpperCase(), this.#path, handler);
77
+ this.#addRoute(m.toUpperCase(), this.#path, handler);
78
78
  });
79
79
  }
80
80
  }
@@ -88,7 +88,7 @@ class Hono {
88
88
  handlers.unshift(arg1);
89
89
  }
90
90
  handlers.forEach((handler) => {
91
- this.addRoute(import_router.METHOD_NAME_ALL, this.#path, handler);
91
+ this.#addRoute(import_router.METHOD_NAME_ALL, this.#path, handler);
92
92
  });
93
93
  return this;
94
94
  };
@@ -97,7 +97,7 @@ class Hono {
97
97
  Object.assign(this, options);
98
98
  this.getPath = strict ? options.getPath ?? import_url.getPath : import_url.getPathNoStrict;
99
99
  }
100
- clone() {
100
+ #clone() {
101
101
  const clone = new Hono({
102
102
  router: this.router,
103
103
  getPath: this.getPath
@@ -105,33 +105,33 @@ class Hono {
105
105
  clone.routes = this.routes;
106
106
  return clone;
107
107
  }
108
- notFoundHandler = notFoundHandler;
109
- errorHandler = errorHandler;
108
+ #notFoundHandler = notFoundHandler;
109
+ #errorHandler = errorHandler;
110
110
  route(path, app) {
111
111
  const subApp = this.basePath(path);
112
112
  app.routes.map((r) => {
113
113
  let handler;
114
- if (app.errorHandler === errorHandler) {
114
+ if (app.#errorHandler === errorHandler) {
115
115
  handler = r.handler;
116
116
  } else {
117
- handler = async (c, next) => (await (0, import_compose.compose)([], app.errorHandler)(c, () => r.handler(c, next))).res;
117
+ handler = async (c, next) => (await (0, import_compose.compose)([], app.#errorHandler)(c, () => r.handler(c, next))).res;
118
118
  handler[COMPOSED_HANDLER] = r.handler;
119
119
  }
120
- subApp.addRoute(r.method, r.path, handler);
120
+ subApp.#addRoute(r.method, r.path, handler);
121
121
  });
122
122
  return this;
123
123
  }
124
124
  basePath(path) {
125
- const subApp = this.clone();
125
+ const subApp = this.#clone();
126
126
  subApp._basePath = (0, import_url.mergePath)(this._basePath, path);
127
127
  return subApp;
128
128
  }
129
129
  onError = (handler) => {
130
- this.errorHandler = handler;
130
+ this.#errorHandler = handler;
131
131
  return this;
132
132
  };
133
133
  notFound = (handler) => {
134
- this.notFoundHandler = handler;
134
+ this.#notFoundHandler = handler;
135
135
  return this;
136
136
  };
137
137
  mount(path, applicationHandler, options) {
@@ -172,52 +172,49 @@ class Hono {
172
172
  }
173
173
  await next();
174
174
  };
175
- this.addRoute(import_router.METHOD_NAME_ALL, (0, import_url.mergePath)(path, "*"), handler);
175
+ this.#addRoute(import_router.METHOD_NAME_ALL, (0, import_url.mergePath)(path, "*"), handler);
176
176
  return this;
177
177
  }
178
- addRoute(method, path, handler) {
178
+ #addRoute(method, path, handler) {
179
179
  method = method.toUpperCase();
180
180
  path = (0, import_url.mergePath)(this._basePath, path);
181
181
  const r = { path, method, handler };
182
182
  this.router.add(method, path, [handler, r]);
183
183
  this.routes.push(r);
184
184
  }
185
- matchRoute(method, path) {
186
- return this.router.match(method, path);
187
- }
188
- handleError(err, c) {
185
+ #handleError(err, c) {
189
186
  if (err instanceof Error) {
190
- return this.errorHandler(err, c);
187
+ return this.#errorHandler(err, c);
191
188
  }
192
189
  throw err;
193
190
  }
194
- dispatch(request, executionCtx, env, method) {
191
+ #dispatch(request, executionCtx, env, method) {
195
192
  if (method === "HEAD") {
196
- return (async () => new Response(null, await this.dispatch(request, executionCtx, env, "GET")))();
193
+ return (async () => new Response(null, await this.#dispatch(request, executionCtx, env, "GET")))();
197
194
  }
198
195
  const path = this.getPath(request, { env });
199
- const matchResult = this.matchRoute(method, path);
196
+ const matchResult = this.router.match(method, path);
200
197
  const c = new import_context.Context(request, {
201
198
  path,
202
199
  matchResult,
203
200
  env,
204
201
  executionCtx,
205
- notFoundHandler: this.notFoundHandler
202
+ notFoundHandler: this.#notFoundHandler
206
203
  });
207
204
  if (matchResult[0].length === 1) {
208
205
  let res;
209
206
  try {
210
207
  res = matchResult[0][0][0][0](c, async () => {
211
- c.res = await this.notFoundHandler(c);
208
+ c.res = await this.#notFoundHandler(c);
212
209
  });
213
210
  } catch (err) {
214
- return this.handleError(err, c);
211
+ return this.#handleError(err, c);
215
212
  }
216
213
  return res instanceof Promise ? res.then(
217
- (resolved) => resolved || (c.finalized ? c.res : this.notFoundHandler(c))
218
- ).catch((err) => this.handleError(err, c)) : res ?? this.notFoundHandler(c);
214
+ (resolved) => resolved || (c.finalized ? c.res : this.#notFoundHandler(c))
215
+ ).catch((err) => this.#handleError(err, c)) : res ?? this.#notFoundHandler(c);
219
216
  }
220
- const composed = (0, import_compose.compose)(matchResult[0], this.errorHandler, this.notFoundHandler);
217
+ const composed = (0, import_compose.compose)(matchResult[0], this.#errorHandler, this.#notFoundHandler);
221
218
  return (async () => {
222
219
  try {
223
220
  const context = await composed(c);
@@ -228,12 +225,12 @@ class Hono {
228
225
  }
229
226
  return context.res;
230
227
  } catch (err) {
231
- return this.handleError(err, c);
228
+ return this.#handleError(err, c);
232
229
  }
233
230
  })();
234
231
  }
235
232
  fetch = (request, ...rest) => {
236
- return this.dispatch(request, rest[1], rest[0], request.method);
233
+ return this.#dispatch(request, rest[1], rest[0], request.method);
237
234
  };
238
235
  request = (input, requestInit, Env, executionCtx) => {
239
236
  if (input instanceof Request) {
@@ -249,7 +246,7 @@ class Hono {
249
246
  };
250
247
  fire = () => {
251
248
  addEventListener("fetch", (event) => {
252
- event.respondWith(this.dispatch(event.request, event, void 0, event.request.method));
249
+ event.respondWith(this.#dispatch(event.request, event, void 0, event.request.method));
253
250
  });
254
251
  };
255
252
  }