hono 3.10.4 → 3.11.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 (77) hide show
  1. package/dist/adapter/aws-lambda/handler.js +7 -9
  2. package/dist/cjs/adapter/aws-lambda/handler.js +7 -9
  3. package/dist/cjs/compose.js +2 -5
  4. package/dist/cjs/context.js +93 -71
  5. package/dist/cjs/helper/dev/index.js +68 -0
  6. package/dist/cjs/helper/factory/index.js +14 -1
  7. package/dist/cjs/helper/html/index.js +2 -2
  8. package/dist/cjs/helper.js +1 -0
  9. package/dist/cjs/hono-base.js +43 -30
  10. package/dist/cjs/jsx/components.js +148 -0
  11. package/dist/cjs/jsx/index.js +4 -1
  12. package/dist/cjs/jsx/streaming.js +31 -29
  13. package/dist/cjs/middleware/basic-auth/index.js +1 -1
  14. package/dist/cjs/middleware/bearer-auth/index.js +12 -2
  15. package/dist/cjs/middleware/cache/index.js +5 -5
  16. package/dist/cjs/middleware/compress/index.js +1 -1
  17. package/dist/cjs/middleware/cors/index.js +1 -1
  18. package/dist/cjs/middleware/etag/index.js +7 -7
  19. package/dist/cjs/middleware/jsx-renderer/index.js +1 -1
  20. package/dist/cjs/middleware/jwt/index.js +1 -1
  21. package/dist/cjs/middleware/logger/index.js +1 -1
  22. package/dist/cjs/middleware/powered-by/index.js +1 -1
  23. package/dist/cjs/middleware/pretty-json/index.js +1 -1
  24. package/dist/cjs/middleware/secure-headers/index.js +1 -1
  25. package/dist/cjs/middleware/timing/index.js +1 -1
  26. package/dist/cjs/request.js +38 -12
  27. package/dist/cjs/router/reg-exp-router/router.js +1 -1
  28. package/dist/cjs/router/smart-router/router.js +1 -1
  29. package/dist/cjs/router.js +3 -0
  30. package/dist/cjs/utils/html.js +20 -4
  31. package/dist/compose.js +2 -5
  32. package/dist/context.js +94 -71
  33. package/dist/helper/dev/index.js +44 -0
  34. package/dist/helper/factory/index.js +12 -1
  35. package/dist/helper/html/index.js +2 -2
  36. package/dist/helper.js +1 -0
  37. package/dist/hono-base.js +43 -29
  38. package/dist/jsx/components.js +124 -0
  39. package/dist/jsx/index.js +3 -1
  40. package/dist/jsx/streaming.js +30 -28
  41. package/dist/middleware/basic-auth/index.js +1 -1
  42. package/dist/middleware/bearer-auth/index.js +12 -2
  43. package/dist/middleware/cache/index.js +5 -5
  44. package/dist/middleware/compress/index.js +1 -1
  45. package/dist/middleware/cors/index.js +1 -1
  46. package/dist/middleware/etag/index.js +7 -7
  47. package/dist/middleware/jsx-renderer/index.js +1 -1
  48. package/dist/middleware/jwt/index.js +1 -1
  49. package/dist/middleware/logger/index.js +1 -1
  50. package/dist/middleware/powered-by/index.js +1 -1
  51. package/dist/middleware/pretty-json/index.js +1 -1
  52. package/dist/middleware/secure-headers/index.js +1 -1
  53. package/dist/middleware/timing/index.js +1 -1
  54. package/dist/request.js +39 -12
  55. package/dist/router/reg-exp-router/router.js +7 -2
  56. package/dist/router/smart-router/router.js +2 -2
  57. package/dist/router.js +2 -0
  58. package/dist/types/adapter/aws-lambda/custom-context.d.ts +10 -1
  59. package/dist/types/adapter/aws-lambda/handler.d.ts +28 -8
  60. package/dist/types/adapter/aws-lambda/index.d.ts +2 -2
  61. package/dist/types/client/types.d.ts +1 -1
  62. package/dist/types/compose.d.ts +1 -1
  63. package/dist/types/context.d.ts +11 -24
  64. package/dist/types/helper/dev/index.d.ts +13 -0
  65. package/dist/types/helper/factory/index.d.ts +114 -2
  66. package/dist/types/helper/html/index.d.ts +2 -2
  67. package/dist/types/helper.d.ts +1 -0
  68. package/dist/types/hono-base.d.ts +13 -10
  69. package/dist/types/jsx/components.d.ts +16 -0
  70. package/dist/types/jsx/index.d.ts +1 -0
  71. package/dist/types/middleware/bearer-auth/index.d.ts +1 -1
  72. package/dist/types/request.d.ts +7 -7
  73. package/dist/types/router.d.ts +1 -0
  74. package/dist/types/types.d.ts +259 -54
  75. package/dist/types/utils/html.d.ts +8 -1
  76. package/dist/utils/html.js +19 -4
  77. package/package.json +9 -1
@@ -20,6 +20,7 @@ var streamHandle = (app) => {
20
20
  const req = createRequest(event);
21
21
  const requestContext = getRequestContext(event);
22
22
  const res = await app.fetch(req, {
23
+ event,
23
24
  requestContext,
24
25
  context
25
26
  });
@@ -47,6 +48,7 @@ var handle = (app) => {
47
48
  const req = createRequest(event);
48
49
  const requestContext = getRequestContext(event);
49
50
  const res = await app.fetch(req, {
51
+ event,
50
52
  requestContext,
51
53
  lambdaContext
52
54
  });
@@ -81,7 +83,9 @@ var createResult = async (event, res) => {
81
83
  };
82
84
  var createRequest = (event) => {
83
85
  const queryString = extractQueryString(event);
84
- const urlPath = `https://${event.requestContext.domainName}${isProxyEvent(event) ? event.path : event.rawPath}`;
86
+ const domainName = event.requestContext && "domainName" in event.requestContext ? event.requestContext.domainName : event.headers["host"];
87
+ const path = isProxyEventV2(event) ? event.rawPath : event.path;
88
+ const urlPath = `https://${domainName}${path}`;
85
89
  const url = queryString ? `${urlPath}?${queryString}` : urlPath;
86
90
  const headers = new Headers();
87
91
  getCookies(event, headers);
@@ -89,7 +93,7 @@ var createRequest = (event) => {
89
93
  if (v)
90
94
  headers.set(k, v);
91
95
  }
92
- const method = "httpMethod" in event ? event.httpMethod : event.requestContext.http.method;
96
+ const method = isProxyEventV2(event) ? event.requestContext.http.method : event.httpMethod;
93
97
  const requestInit = {
94
98
  headers,
95
99
  method
@@ -100,10 +104,7 @@ var createRequest = (event) => {
100
104
  return new Request(url, requestInit);
101
105
  };
102
106
  var extractQueryString = (event) => {
103
- if (isProxyEvent(event)) {
104
- return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value}`).join("&");
105
- }
106
- return isProxyEventV2(event) ? event.rawQueryString : event.rawQueryString;
107
+ return isProxyEventV2(event) ? event.rawQueryString : Object.entries(event.queryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value}`).join("&");
107
108
  };
108
109
  var getCookies = (event, headers) => {
109
110
  if (isProxyEventV2(event) && Array.isArray(event.cookies)) {
@@ -125,9 +126,6 @@ var setCookies = (event, res, result) => {
125
126
  }
126
127
  }
127
128
  };
128
- var isProxyEvent = (event) => {
129
- return Object.prototype.hasOwnProperty.call(event, "path");
130
- };
131
129
  var isProxyEventV2 = (event) => {
132
130
  return Object.prototype.hasOwnProperty.call(event, "rawPath");
133
131
  };
@@ -51,6 +51,7 @@ const streamHandle = (app) => {
51
51
  const req = createRequest(event);
52
52
  const requestContext = getRequestContext(event);
53
53
  const res = await app.fetch(req, {
54
+ event,
54
55
  requestContext,
55
56
  context
56
57
  });
@@ -78,6 +79,7 @@ const handle = (app) => {
78
79
  const req = createRequest(event);
79
80
  const requestContext = getRequestContext(event);
80
81
  const res = await app.fetch(req, {
82
+ event,
81
83
  requestContext,
82
84
  lambdaContext
83
85
  });
@@ -112,7 +114,9 @@ const createResult = async (event, res) => {
112
114
  };
113
115
  const createRequest = (event) => {
114
116
  const queryString = extractQueryString(event);
115
- const urlPath = `https://${event.requestContext.domainName}${isProxyEvent(event) ? event.path : event.rawPath}`;
117
+ const domainName = event.requestContext && "domainName" in event.requestContext ? event.requestContext.domainName : event.headers["host"];
118
+ const path = isProxyEventV2(event) ? event.rawPath : event.path;
119
+ const urlPath = `https://${domainName}${path}`;
116
120
  const url = queryString ? `${urlPath}?${queryString}` : urlPath;
117
121
  const headers = new Headers();
118
122
  getCookies(event, headers);
@@ -120,7 +124,7 @@ const createRequest = (event) => {
120
124
  if (v)
121
125
  headers.set(k, v);
122
126
  }
123
- const method = "httpMethod" in event ? event.httpMethod : event.requestContext.http.method;
127
+ const method = isProxyEventV2(event) ? event.requestContext.http.method : event.httpMethod;
124
128
  const requestInit = {
125
129
  headers,
126
130
  method
@@ -131,10 +135,7 @@ const createRequest = (event) => {
131
135
  return new Request(url, requestInit);
132
136
  };
133
137
  const extractQueryString = (event) => {
134
- if (isProxyEvent(event)) {
135
- return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value}`).join("&");
136
- }
137
- return isProxyEventV2(event) ? event.rawQueryString : event.rawQueryString;
138
+ return isProxyEventV2(event) ? event.rawQueryString : Object.entries(event.queryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value}`).join("&");
138
139
  };
139
140
  const getCookies = (event, headers) => {
140
141
  if (isProxyEventV2(event) && Array.isArray(event.cookies)) {
@@ -156,9 +157,6 @@ const setCookies = (event, res, result) => {
156
157
  }
157
158
  }
158
159
  };
159
- const isProxyEvent = (event) => {
160
- return Object.prototype.hasOwnProperty.call(event, "path");
161
- };
162
160
  const isProxyEventV2 = (event) => {
163
161
  return Object.prototype.hasOwnProperty.call(event, "rawPath");
164
162
  };
@@ -35,9 +35,9 @@ const compose = (middleware, onError, onNotFound) => {
35
35
  let isError = false;
36
36
  let handler;
37
37
  if (middleware[i]) {
38
- handler = middleware[i][0];
38
+ handler = middleware[i][0][0];
39
39
  if (context instanceof import_context.Context) {
40
- context.req.setParams(middleware[i][1]);
40
+ context.req.routeIndex = i;
41
41
  }
42
42
  } else {
43
43
  handler = i === middleware.length && next || void 0;
@@ -61,9 +61,6 @@ const compose = (middleware, onError, onNotFound) => {
61
61
  }
62
62
  }
63
63
  }
64
- if (res !== void 0 && "response" in res) {
65
- res = res["response"];
66
- }
67
64
  if (res && (context.finalized === false || isError)) {
68
65
  context.res = res;
69
66
  }
@@ -16,13 +16,33 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var __accessCheck = (obj, member, msg) => {
20
+ if (!member.has(obj))
21
+ throw TypeError("Cannot " + msg);
22
+ };
23
+ var __privateGet = (obj, member, getter) => {
24
+ __accessCheck(obj, member, "read from private field");
25
+ return getter ? getter.call(obj) : member.get(obj);
26
+ };
27
+ var __privateAdd = (obj, member, value) => {
28
+ if (member.has(obj))
29
+ throw TypeError("Cannot add the same private member more than once");
30
+ member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
31
+ };
32
+ var __privateSet = (obj, member, value, setter) => {
33
+ __accessCheck(obj, member, "write to private field");
34
+ setter ? setter.call(obj, value) : member.set(obj, value);
35
+ return value;
36
+ };
19
37
  var context_exports = {};
20
38
  __export(context_exports, {
21
39
  Context: () => Context
22
40
  });
23
41
  module.exports = __toCommonJS(context_exports);
24
42
  var import_cookie = require("./utils/cookie");
43
+ var import_html = require("./utils/html");
25
44
  var import_stream = require("./utils/stream");
45
+ var _status, _executionCtx, _headers, _preparedHeaders, _res, _isFresh;
26
46
  const TEXT_PLAIN = "text/plain; charset=UTF-8";
27
47
  class Context {
28
48
  constructor(req, options) {
@@ -30,22 +50,24 @@ class Context {
30
50
  this._var = {};
31
51
  this.finalized = false;
32
52
  this.error = void 0;
33
- this._status = 200;
34
- this._h = void 0;
35
- this._pH = void 0;
36
- this._init = true;
37
- this._renderer = (content) => this.html(content);
53
+ __privateAdd(this, _status, 200);
54
+ __privateAdd(this, _executionCtx, void 0);
55
+ __privateAdd(this, _headers, void 0);
56
+ __privateAdd(this, _preparedHeaders, void 0);
57
+ __privateAdd(this, _res, void 0);
58
+ __privateAdd(this, _isFresh, true);
59
+ this.renderer = (content) => this.html(content);
38
60
  this.notFoundHandler = () => new Response();
39
- this.render = (...args) => this._renderer(...args);
61
+ this.render = (...args) => this.renderer(...args);
40
62
  this.setRenderer = (renderer) => {
41
- this._renderer = renderer;
63
+ this.renderer = renderer;
42
64
  };
43
65
  this.header = (name, value, options) => {
44
66
  if (value === void 0) {
45
- if (this._h) {
46
- this._h.delete(name);
47
- } else if (this._pH) {
48
- delete this._pH[name.toLocaleLowerCase()];
67
+ if (__privateGet(this, _headers)) {
68
+ __privateGet(this, _headers).delete(name);
69
+ } else if (__privateGet(this, _preparedHeaders)) {
70
+ delete __privateGet(this, _preparedHeaders)[name.toLocaleLowerCase()];
49
71
  }
50
72
  if (this.finalized) {
51
73
  this.res.headers.delete(name);
@@ -53,18 +75,18 @@ class Context {
53
75
  return;
54
76
  }
55
77
  if (options?.append) {
56
- if (!this._h) {
57
- this._init = false;
58
- this._h = new Headers(this._pH);
59
- this._pH = {};
78
+ if (!__privateGet(this, _headers)) {
79
+ __privateSet(this, _isFresh, false);
80
+ __privateSet(this, _headers, new Headers(__privateGet(this, _preparedHeaders)));
81
+ __privateSet(this, _preparedHeaders, {});
60
82
  }
61
- this._h.append(name, value);
83
+ __privateGet(this, _headers).append(name, value);
62
84
  } else {
63
- if (this._h) {
64
- this._h.set(name, value);
85
+ if (__privateGet(this, _headers)) {
86
+ __privateGet(this, _headers).set(name, value);
65
87
  } else {
66
- this._pH ?? (this._pH = {});
67
- this._pH[name.toLowerCase()] = value;
88
+ __privateGet(this, _preparedHeaders) ?? __privateSet(this, _preparedHeaders, {});
89
+ __privateGet(this, _preparedHeaders)[name.toLowerCase()] = value;
68
90
  }
69
91
  }
70
92
  if (this.finalized) {
@@ -76,8 +98,8 @@ class Context {
76
98
  }
77
99
  };
78
100
  this.status = (status) => {
79
- this._init = false;
80
- this._status = status;
101
+ __privateSet(this, _isFresh, false);
102
+ __privateSet(this, _status, status);
81
103
  };
82
104
  this.set = (key, value) => {
83
105
  this._var ?? (this._var = {});
@@ -87,86 +109,80 @@ class Context {
87
109
  return this._var ? this._var[key] : void 0;
88
110
  };
89
111
  this.newResponse = (data, arg, headers) => {
90
- if (this._init && !headers && !arg && this._status === 200) {
112
+ if (__privateGet(this, _isFresh) && !headers && !arg && __privateGet(this, _status) === 200) {
91
113
  return new Response(data, {
92
- headers: this._pH
114
+ headers: __privateGet(this, _preparedHeaders)
93
115
  });
94
116
  }
95
117
  if (arg && typeof arg !== "number") {
96
118
  const res = new Response(data, arg);
97
- const contentType = this._pH?.["content-type"];
119
+ const contentType = __privateGet(this, _preparedHeaders)?.["content-type"];
98
120
  if (contentType) {
99
121
  res.headers.set("content-type", contentType);
100
122
  }
101
123
  return res;
102
124
  }
103
- const status = arg ?? this._status;
104
- this._pH ?? (this._pH = {});
105
- this._h ?? (this._h = new Headers());
106
- for (const [k, v] of Object.entries(this._pH)) {
107
- this._h.set(k, v);
125
+ const status = arg ?? __privateGet(this, _status);
126
+ __privateGet(this, _preparedHeaders) ?? __privateSet(this, _preparedHeaders, {});
127
+ __privateGet(this, _headers) ?? __privateSet(this, _headers, new Headers());
128
+ for (const [k, v] of Object.entries(__privateGet(this, _preparedHeaders))) {
129
+ __privateGet(this, _headers).set(k, v);
108
130
  }
109
- if (this._res) {
110
- this._res.headers.forEach((v, k) => {
111
- this._h?.set(k, v);
131
+ if (__privateGet(this, _res)) {
132
+ __privateGet(this, _res).headers.forEach((v, k) => {
133
+ __privateGet(this, _headers)?.set(k, v);
112
134
  });
113
- for (const [k, v] of Object.entries(this._pH)) {
114
- this._h.set(k, v);
135
+ for (const [k, v] of Object.entries(__privateGet(this, _preparedHeaders))) {
136
+ __privateGet(this, _headers).set(k, v);
115
137
  }
116
138
  }
117
139
  headers ?? (headers = {});
118
140
  for (const [k, v] of Object.entries(headers)) {
119
141
  if (typeof v === "string") {
120
- this._h.set(k, v);
142
+ __privateGet(this, _headers).set(k, v);
121
143
  } else {
122
- this._h.delete(k);
144
+ __privateGet(this, _headers).delete(k);
123
145
  for (const v2 of v) {
124
- this._h.append(k, v2);
146
+ __privateGet(this, _headers).append(k, v2);
125
147
  }
126
148
  }
127
149
  }
128
150
  return new Response(data, {
129
151
  status,
130
- headers: this._h
152
+ headers: __privateGet(this, _headers)
131
153
  });
132
154
  };
133
155
  this.body = (data, arg, headers) => {
134
156
  return typeof arg === "number" ? this.newResponse(data, arg, headers) : this.newResponse(data, arg);
135
157
  };
136
158
  this.text = (text, arg, headers) => {
137
- if (!this._pH) {
138
- if (this._init && !headers && !arg) {
159
+ if (!__privateGet(this, _preparedHeaders)) {
160
+ if (__privateGet(this, _isFresh) && !headers && !arg) {
139
161
  return new Response(text);
140
162
  }
141
- this._pH = {};
163
+ __privateSet(this, _preparedHeaders, {});
142
164
  }
143
- this._pH["content-type"] = TEXT_PLAIN;
165
+ __privateGet(this, _preparedHeaders)["content-type"] = TEXT_PLAIN;
144
166
  return typeof arg === "number" ? this.newResponse(text, arg, headers) : this.newResponse(text, arg);
145
167
  };
146
168
  this.json = (object, arg, headers) => {
147
169
  const body = JSON.stringify(object);
148
- this._pH ?? (this._pH = {});
149
- this._pH["content-type"] = "application/json; charset=UTF-8";
170
+ __privateGet(this, _preparedHeaders) ?? __privateSet(this, _preparedHeaders, {});
171
+ __privateGet(this, _preparedHeaders)["content-type"] = "application/json; charset=UTF-8";
150
172
  return typeof arg === "number" ? this.newResponse(body, arg, headers) : this.newResponse(body, arg);
151
173
  };
152
174
  this.jsonT = (object, arg, headers) => {
153
- const response = typeof arg === "number" ? this.json(object, arg, headers) : this.json(object, arg);
154
- return {
155
- response,
156
- data: object,
157
- format: "json",
158
- status: response.status
159
- };
175
+ return this.json(object, arg, headers);
160
176
  };
161
177
  this.html = (html, arg, headers) => {
162
- this._pH ?? (this._pH = {});
163
- this._pH["content-type"] = "text/html; charset=UTF-8";
178
+ __privateGet(this, _preparedHeaders) ?? __privateSet(this, _preparedHeaders, {});
179
+ __privateGet(this, _preparedHeaders)["content-type"] = "text/html; charset=UTF-8";
164
180
  if (typeof html === "object") {
165
181
  if (!(html instanceof Promise)) {
166
182
  html = html.toString();
167
183
  }
168
184
  if (html instanceof Promise) {
169
- return html.then((html2) => {
185
+ return html.then((html2) => (0, import_html.resolveStream)(html2)).then((html2) => {
170
186
  return typeof arg === "number" ? this.newResponse(html2, arg, headers) : this.newResponse(html2, arg);
171
187
  });
172
188
  }
@@ -174,8 +190,8 @@ class Context {
174
190
  return typeof arg === "number" ? this.newResponse(html, arg, headers) : this.newResponse(html, arg);
175
191
  };
176
192
  this.redirect = (location, status = 302) => {
177
- this._h ?? (this._h = new Headers());
178
- this._h.set("Location", location);
193
+ __privateGet(this, _headers) ?? __privateSet(this, _headers, new Headers());
194
+ __privateGet(this, _headers).set("Location", location);
179
195
  return this.newResponse(null, status);
180
196
  };
181
197
  this.streamText = (cb, arg, headers) => {
@@ -200,7 +216,7 @@ class Context {
200
216
  };
201
217
  this.req = req;
202
218
  if (options) {
203
- this._exCtx = options.executionCtx;
219
+ __privateSet(this, _executionCtx, options.executionCtx);
204
220
  this.env = options.env;
205
221
  if (options.notFoundHandler) {
206
222
  this.notFoundHandler = options.notFoundHandler;
@@ -208,32 +224,32 @@ class Context {
208
224
  }
209
225
  }
210
226
  get event() {
211
- if (this._exCtx && "respondWith" in this._exCtx) {
212
- return this._exCtx;
227
+ if (__privateGet(this, _executionCtx) && "respondWith" in __privateGet(this, _executionCtx)) {
228
+ return __privateGet(this, _executionCtx);
213
229
  } else {
214
230
  throw Error("This context has no FetchEvent");
215
231
  }
216
232
  }
217
233
  get executionCtx() {
218
- if (this._exCtx) {
219
- return this._exCtx;
234
+ if (__privateGet(this, _executionCtx)) {
235
+ return __privateGet(this, _executionCtx);
220
236
  } else {
221
237
  throw Error("This context has no ExecutionContext");
222
238
  }
223
239
  }
224
240
  get res() {
225
- this._init = false;
226
- return this._res || (this._res = new Response("404 Not Found", { status: 404 }));
241
+ __privateSet(this, _isFresh, false);
242
+ return __privateGet(this, _res) || __privateSet(this, _res, new Response("404 Not Found", { status: 404 }));
227
243
  }
228
- set res(_res) {
229
- this._init = false;
230
- if (this._res && _res) {
231
- this._res.headers.delete("content-type");
232
- this._res.headers.forEach((v, k) => {
233
- _res.headers.set(k, v);
244
+ set res(_res2) {
245
+ __privateSet(this, _isFresh, false);
246
+ if (__privateGet(this, _res) && _res2) {
247
+ __privateGet(this, _res).headers.delete("content-type");
248
+ __privateGet(this, _res).headers.forEach((v, k) => {
249
+ _res2.headers.set(k, v);
234
250
  });
235
251
  }
236
- this._res = _res;
252
+ __privateSet(this, _res, _res2);
237
253
  this.finalized = true;
238
254
  }
239
255
  get var() {
@@ -265,6 +281,12 @@ class Context {
265
281
  return "other";
266
282
  }
267
283
  }
284
+ _status = new WeakMap();
285
+ _executionCtx = new WeakMap();
286
+ _headers = new WeakMap();
287
+ _preparedHeaders = new WeakMap();
288
+ _res = new WeakMap();
289
+ _isFresh = new WeakMap();
268
290
  // Annotate the CommonJS export names for ESM import in node:
269
291
  0 && (module.exports = {
270
292
  Context
@@ -0,0 +1,68 @@
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 dev_exports = {};
20
+ __export(dev_exports, {
21
+ inspectRoutes: () => inspectRoutes,
22
+ showRoutes: () => showRoutes
23
+ });
24
+ module.exports = __toCommonJS(dev_exports);
25
+ const isMiddleware = (handler) => handler.length > 1;
26
+ const handlerName = (handler) => {
27
+ return handler.name || (isMiddleware(handler) ? "[middleware]" : "[handler]");
28
+ };
29
+ const inspectRoutes = (hono) => {
30
+ return hono.routes.map(({ path, method, handler }) => ({
31
+ path,
32
+ method,
33
+ name: handlerName(handler),
34
+ isMiddleware: isMiddleware(handler)
35
+ }));
36
+ };
37
+ const showRoutes = (hono, opts) => {
38
+ const routeData = {};
39
+ let maxMethodLength = 0;
40
+ let maxPathLength = 0;
41
+ inspectRoutes(hono).filter(({ isMiddleware: isMiddleware2 }) => opts?.verbose || !isMiddleware2).map((route) => {
42
+ const key = `${route.method}-${route.path}`;
43
+ (routeData[key] || (routeData[key] = [])).push(route);
44
+ if (routeData[key].length > 1) {
45
+ return;
46
+ }
47
+ maxMethodLength = Math.max(maxMethodLength, route.method.length);
48
+ maxPathLength = Math.max(maxPathLength, route.path.length);
49
+ return { method: route.method, path: route.path, routes: routeData[key] };
50
+ }).forEach((data) => {
51
+ if (!data) {
52
+ return;
53
+ }
54
+ const { method, path, routes } = data;
55
+ console.log(`\x1B[32m${method}\x1B[0m ${" ".repeat(maxMethodLength - method.length)} ${path}`);
56
+ if (!opts?.verbose) {
57
+ return;
58
+ }
59
+ routes.forEach(({ name }) => {
60
+ console.log(`${" ".repeat(maxMethodLength + 3)} ${name}`);
61
+ });
62
+ });
63
+ };
64
+ // Annotate the CommonJS export names for ESM import in node:
65
+ 0 && (module.exports = {
66
+ inspectRoutes,
67
+ showRoutes
68
+ });
@@ -18,11 +18,24 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var factory_exports = {};
20
20
  __export(factory_exports, {
21
+ Factory: () => Factory,
22
+ createFactory: () => createFactory,
21
23
  createMiddleware: () => createMiddleware
22
24
  });
23
25
  module.exports = __toCommonJS(factory_exports);
24
- const createMiddleware = (middleware) => middleware;
26
+ class Factory {
27
+ constructor() {
28
+ this.createMiddleware = (middleware) => middleware;
29
+ }
30
+ createHandlers(...handlers) {
31
+ return handlers.filter((handler) => handler !== void 0);
32
+ }
33
+ }
34
+ const createFactory = () => new Factory();
35
+ const createMiddleware = (middleware) => createFactory().createMiddleware(middleware);
25
36
  // Annotate the CommonJS export names for ESM import in node:
26
37
  0 && (module.exports = {
38
+ Factory,
39
+ createFactory,
27
40
  createMiddleware
28
41
  });
@@ -23,10 +23,10 @@ __export(html_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(html_exports);
25
25
  var import_html = require("../../utils/html");
26
- const raw = (value, promises) => {
26
+ const raw = (value, callbacks) => {
27
27
  const escapedString = new String(value);
28
28
  escapedString.isEscaped = true;
29
- escapedString.promises = promises;
29
+ escapedString.callbacks = callbacks;
30
30
  return escapedString;
31
31
  };
32
32
  const html = (strings, ...values) => {
@@ -21,3 +21,4 @@ __reExport(helper_exports, require("./helper/factory"), module.exports);
21
21
  __reExport(helper_exports, require("./helper/html"), module.exports);
22
22
  __reExport(helper_exports, require("./helper/streaming"), module.exports);
23
23
  __reExport(helper_exports, require("./helper/testing"), module.exports);
24
+ __reExport(helper_exports, require("./helper/dev"), module.exports);