hono 4.13.12 → 5.0.0-rc.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 (444) hide show
  1. package/README.md +2 -2
  2. package/dist/{types/compose.d.ts → compose.d.ts} +1 -0
  3. package/dist/compose.js +10 -5
  4. package/dist/{types/context.d.ts → context.d.ts} +15 -15
  5. package/dist/context.js +79 -47
  6. package/dist/helper/factory/define-handler.d.ts +150 -0
  7. package/dist/helper/factory/define-handler.js +165 -0
  8. package/dist/{types/helper → helper}/factory/index.d.ts +30 -1
  9. package/dist/helper/factory/index.js +31 -3
  10. package/dist/{types/helper → helper}/ssg/middleware.d.ts +0 -6
  11. package/dist/helper/ssg/middleware.js +1 -16
  12. package/dist/{types/helper → helper}/ssg/ssg.d.ts +0 -12
  13. package/dist/helper/ssg/ssg.js +0 -3
  14. package/dist/{types/hono-base.d.ts → hono-base.d.ts} +3 -58
  15. package/dist/hono-base.js +6 -95
  16. package/dist/{types/hono.d.ts → hono.d.ts} +1 -1
  17. package/dist/{types/jsx → jsx}/base.d.ts +1 -1
  18. package/dist/{types/middleware → middleware}/basic-auth/index.d.ts +4 -3
  19. package/dist/middleware/basic-auth/index.js +1 -1
  20. package/dist/{types/middleware → middleware}/bearer-auth/index.d.ts +4 -27
  21. package/dist/middleware/bearer-auth/index.js +4 -4
  22. package/dist/middleware/language/language.js +1 -1
  23. package/dist/middleware/logger/index.js +6 -8
  24. package/dist/middleware/mount/index.d.ts +46 -0
  25. package/dist/middleware/mount/index.js +70 -0
  26. package/dist/{types/middleware → middleware}/serve-static/index.d.ts +0 -4
  27. package/dist/{types/preset → preset}/quick.d.ts +1 -1
  28. package/dist/{types/preset → preset}/tiny.d.ts +1 -1
  29. package/dist/{types/request.d.ts → request.d.ts} +5 -50
  30. package/dist/request.js +2 -51
  31. package/dist/router/linear-router/router.js +4 -6
  32. package/dist/router/pattern-router/router.js +2 -2
  33. package/dist/router/reg-exp-router/node.js +1 -1
  34. package/dist/router/trie-router/node.js +3 -3
  35. package/dist/utils/buffer.d.ts +11 -0
  36. package/dist/utils/buffer.js +1 -8
  37. package/dist/utils/color.d.ts +16 -0
  38. package/dist/utils/color.js +7 -23
  39. package/dist/{types/utils → utils}/http-status.d.ts +1 -9
  40. package/dist/{types/utils → utils}/url.d.ts +0 -5
  41. package/dist/utils/url.js +1 -11
  42. package/dist/{types/validator → validator}/validator.d.ts +5 -0
  43. package/dist/validator/validator.js +46 -49
  44. package/package.json +213 -346
  45. package/dist/adapter/aws-lambda/conninfo.js +0 -43
  46. package/dist/adapter/aws-lambda/handler.js +0 -342
  47. package/dist/adapter/aws-lambda/index.js +0 -3
  48. package/dist/adapter/aws-lambda/types.js +0 -1
  49. package/dist/adapter/bun/conninfo.js +0 -22
  50. package/dist/adapter/bun/index.js +0 -6
  51. package/dist/adapter/bun/serve-static.js +0 -30
  52. package/dist/adapter/bun/server.js +0 -11
  53. package/dist/adapter/bun/ssg.js +0 -27
  54. package/dist/adapter/bun/websocket.js +0 -66
  55. package/dist/adapter/cloudflare-pages/conninfo.js +0 -24
  56. package/dist/adapter/cloudflare-pages/handler.js +0 -64
  57. package/dist/adapter/cloudflare-pages/index.js +0 -3
  58. package/dist/adapter/cloudflare-workers/conninfo.js +0 -7
  59. package/dist/adapter/cloudflare-workers/index.js +0 -4
  60. package/dist/adapter/cloudflare-workers/serve-static-module.js +0 -7
  61. package/dist/adapter/cloudflare-workers/serve-static.js +0 -28
  62. package/dist/adapter/cloudflare-workers/utils.js +0 -22
  63. package/dist/adapter/cloudflare-workers/websocket.js +0 -33
  64. package/dist/adapter/deno/conninfo.js +0 -17
  65. package/dist/adapter/deno/deno.d.js +0 -1
  66. package/dist/adapter/deno/index.js +0 -5
  67. package/dist/adapter/deno/serve-static.js +0 -35
  68. package/dist/adapter/deno/ssg.js +0 -29
  69. package/dist/adapter/deno/websocket.js +0 -32
  70. package/dist/adapter/lambda-edge/conninfo.js +0 -7
  71. package/dist/adapter/lambda-edge/handler.js +0 -111
  72. package/dist/adapter/lambda-edge/index.js +0 -3
  73. package/dist/adapter/netlify/conninfo.js +0 -24
  74. package/dist/adapter/netlify/handler.js +0 -11
  75. package/dist/adapter/netlify/index.js +0 -3
  76. package/dist/adapter/netlify/mod.js +0 -3
  77. package/dist/adapter/service-worker/handler.js +0 -16
  78. package/dist/adapter/service-worker/index.js +0 -25
  79. package/dist/adapter/service-worker/types.js +0 -1
  80. package/dist/adapter/vercel/conninfo.js +0 -7
  81. package/dist/adapter/vercel/handler.js +0 -9
  82. package/dist/adapter/vercel/index.js +0 -3
  83. package/dist/cjs/_virtual/_rolldown/runtime.js +0 -33
  84. package/dist/cjs/adapter/aws-lambda/conninfo.js +0 -44
  85. package/dist/cjs/adapter/aws-lambda/handler.js +0 -352
  86. package/dist/cjs/adapter/aws-lambda/index.js +0 -7
  87. package/dist/cjs/adapter/aws-lambda/types.js +0 -0
  88. package/dist/cjs/adapter/bun/conninfo.js +0 -23
  89. package/dist/cjs/adapter/bun/index.js +0 -14
  90. package/dist/cjs/adapter/bun/serve-static.js +0 -31
  91. package/dist/cjs/adapter/bun/server.js +0 -12
  92. package/dist/cjs/adapter/bun/ssg.js +0 -29
  93. package/dist/cjs/adapter/bun/websocket.js +0 -70
  94. package/dist/cjs/adapter/cloudflare-pages/conninfo.js +0 -25
  95. package/dist/cjs/adapter/cloudflare-pages/handler.js +0 -67
  96. package/dist/cjs/adapter/cloudflare-pages/index.js +0 -7
  97. package/dist/cjs/adapter/cloudflare-workers/conninfo.js +0 -8
  98. package/dist/cjs/adapter/cloudflare-workers/index.js +0 -7
  99. package/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +0 -8
  100. package/dist/cjs/adapter/cloudflare-workers/serve-static.js +0 -29
  101. package/dist/cjs/adapter/cloudflare-workers/utils.js +0 -23
  102. package/dist/cjs/adapter/cloudflare-workers/websocket.js +0 -34
  103. package/dist/cjs/adapter/deno/conninfo.js +0 -18
  104. package/dist/cjs/adapter/deno/deno.d.js +0 -0
  105. package/dist/cjs/adapter/deno/index.js +0 -10
  106. package/dist/cjs/adapter/deno/serve-static.js +0 -36
  107. package/dist/cjs/adapter/deno/ssg.js +0 -31
  108. package/dist/cjs/adapter/deno/websocket.js +0 -33
  109. package/dist/cjs/adapter/lambda-edge/conninfo.js +0 -8
  110. package/dist/cjs/adapter/lambda-edge/handler.js +0 -116
  111. package/dist/cjs/adapter/lambda-edge/index.js +0 -5
  112. package/dist/cjs/adapter/netlify/conninfo.js +0 -25
  113. package/dist/cjs/adapter/netlify/handler.js +0 -12
  114. package/dist/cjs/adapter/netlify/index.js +0 -5
  115. package/dist/cjs/adapter/netlify/mod.js +0 -5
  116. package/dist/cjs/adapter/service-worker/handler.js +0 -17
  117. package/dist/cjs/adapter/service-worker/index.js +0 -27
  118. package/dist/cjs/adapter/service-worker/types.js +0 -0
  119. package/dist/cjs/adapter/vercel/conninfo.js +0 -8
  120. package/dist/cjs/adapter/vercel/handler.js +0 -10
  121. package/dist/cjs/adapter/vercel/index.js +0 -5
  122. package/dist/cjs/client/client.js +0 -145
  123. package/dist/cjs/client/fetch-result-please.js +0 -67
  124. package/dist/cjs/client/index.js +0 -7
  125. package/dist/cjs/client/types.js +0 -0
  126. package/dist/cjs/client/utils.js +0 -70
  127. package/dist/cjs/compose.js +0 -51
  128. package/dist/cjs/context.js +0 -383
  129. package/dist/cjs/helper/accepts/accepts.js +0 -54
  130. package/dist/cjs/helper/accepts/index.js +0 -3
  131. package/dist/cjs/helper/adapter/index.js +0 -41
  132. package/dist/cjs/helper/conninfo/index.js +0 -0
  133. package/dist/cjs/helper/conninfo/types.js +0 -0
  134. package/dist/cjs/helper/cookie/index.js +0 -89
  135. package/dist/cjs/helper/css/common.js +0 -194
  136. package/dist/cjs/helper/css/index.js +0 -142
  137. package/dist/cjs/helper/dev/index.js +0 -53
  138. package/dist/cjs/helper/factory/index.js +0 -33
  139. package/dist/cjs/helper/html/index.js +0 -34
  140. package/dist/cjs/helper/proxy/index.js +0 -122
  141. package/dist/cjs/helper/route/index.js +0 -128
  142. package/dist/cjs/helper/ssg/index.js +0 -19
  143. package/dist/cjs/helper/ssg/middleware.js +0 -65
  144. package/dist/cjs/helper/ssg/plugins.js +0 -68
  145. package/dist/cjs/helper/ssg/ssg.js +0 -220
  146. package/dist/cjs/helper/ssg/utils.js +0 -70
  147. package/dist/cjs/helper/streaming/index.js +0 -8
  148. package/dist/cjs/helper/streaming/sse.js +0 -59
  149. package/dist/cjs/helper/streaming/stream.js +0 -26
  150. package/dist/cjs/helper/streaming/text.js +0 -12
  151. package/dist/cjs/helper/streaming/utils.js +0 -16
  152. package/dist/cjs/helper/testing/index.js +0 -18
  153. package/dist/cjs/helper/websocket/index.js +0 -56
  154. package/dist/cjs/hono-base.js +0 -349
  155. package/dist/cjs/hono.js +0 -29
  156. package/dist/cjs/http-exception.js +0 -56
  157. package/dist/cjs/index.js +0 -22
  158. package/dist/cjs/jsx/base.js +0 -266
  159. package/dist/cjs/jsx/children.js +0 -19
  160. package/dist/cjs/jsx/components.js +0 -147
  161. package/dist/cjs/jsx/constants.js +0 -15
  162. package/dist/cjs/jsx/context.js +0 -170
  163. package/dist/cjs/jsx/dom/client.js +0 -56
  164. package/dist/cjs/jsx/dom/components.js +0 -26
  165. package/dist/cjs/jsx/dom/context.js +0 -43
  166. package/dist/cjs/jsx/dom/css.js +0 -153
  167. package/dist/cjs/jsx/dom/hooks/index.js +0 -65
  168. package/dist/cjs/jsx/dom/index.js +0 -122
  169. package/dist/cjs/jsx/dom/intrinsic-element/components.js +0 -306
  170. package/dist/cjs/jsx/dom/jsx-dev-runtime.js +0 -17
  171. package/dist/cjs/jsx/dom/jsx-runtime.js +0 -5
  172. package/dist/cjs/jsx/dom/render.js +0 -525
  173. package/dist/cjs/jsx/dom/server.js +0 -44
  174. package/dist/cjs/jsx/dom/utils.js +0 -9
  175. package/dist/cjs/jsx/hooks/index.js +0 -280
  176. package/dist/cjs/jsx/index.js +0 -89
  177. package/dist/cjs/jsx/intrinsic-element/common.js +0 -27
  178. package/dist/cjs/jsx/intrinsic-element/components.js +0 -138
  179. package/dist/cjs/jsx/intrinsic-elements.js +0 -0
  180. package/dist/cjs/jsx/jsx-dev-runtime.js +0 -16
  181. package/dist/cjs/jsx/jsx-runtime.js +0 -37
  182. package/dist/cjs/jsx/streaming.js +0 -135
  183. package/dist/cjs/jsx/types.js +0 -0
  184. package/dist/cjs/jsx/utils.js +0 -116
  185. package/dist/cjs/middleware/basic-auth/index.js +0 -100
  186. package/dist/cjs/middleware/bearer-auth/index.js +0 -97
  187. package/dist/cjs/middleware/body-limit/index.js +0 -69
  188. package/dist/cjs/middleware/cache/index.js +0 -173
  189. package/dist/cjs/middleware/combine/index.js +0 -141
  190. package/dist/cjs/middleware/compress/index.js +0 -82
  191. package/dist/cjs/middleware/context-storage/index.js +0 -55
  192. package/dist/cjs/middleware/cors/index.js +0 -109
  193. package/dist/cjs/middleware/csrf/index.js +0 -106
  194. package/dist/cjs/middleware/etag/digest.js +0 -62
  195. package/dist/cjs/middleware/etag/index.js +0 -79
  196. package/dist/cjs/middleware/ip-restriction/index.js +0 -168
  197. package/dist/cjs/middleware/jsx-renderer/index.js +0 -104
  198. package/dist/cjs/middleware/jwk/index.js +0 -3
  199. package/dist/cjs/middleware/jwk/jwk.js +0 -122
  200. package/dist/cjs/middleware/jwt/index.js +0 -9
  201. package/dist/cjs/middleware/jwt/jwt.js +0 -124
  202. package/dist/cjs/middleware/language/index.js +0 -7
  203. package/dist/cjs/middleware/language/language.js +0 -208
  204. package/dist/cjs/middleware/logger/index.js +0 -51
  205. package/dist/cjs/middleware/method-not-allowed/index.js +0 -84
  206. package/dist/cjs/middleware/method-override/index.js +0 -105
  207. package/dist/cjs/middleware/powered-by/index.js +0 -25
  208. package/dist/cjs/middleware/pretty-json/index.js +0 -41
  209. package/dist/cjs/middleware/request-id/index.js +0 -3
  210. package/dist/cjs/middleware/request-id/request-id.js +0 -35
  211. package/dist/cjs/middleware/secure-headers/index.js +0 -4
  212. package/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -0
  213. package/dist/cjs/middleware/secure-headers/secure-headers.js +0 -166
  214. package/dist/cjs/middleware/serve-static/index.js +0 -62
  215. package/dist/cjs/middleware/serve-static/path.js +0 -17
  216. package/dist/cjs/middleware/timeout/index.js +0 -42
  217. package/dist/cjs/middleware/timing/index.js +0 -7
  218. package/dist/cjs/middleware/timing/timing.js +0 -189
  219. package/dist/cjs/middleware/trailing-slash/index.js +0 -89
  220. package/dist/cjs/package.json +0 -3
  221. package/dist/cjs/preset/quick.js +0 -19
  222. package/dist/cjs/preset/tiny.js +0 -16
  223. package/dist/cjs/request/constants.js +0 -5
  224. package/dist/cjs/request.js +0 -337
  225. package/dist/cjs/router/linear-router/index.js +0 -3
  226. package/dist/cjs/router/linear-router/router.js +0 -97
  227. package/dist/cjs/router/pattern-router/index.js +0 -3
  228. package/dist/cjs/router/pattern-router/router.js +0 -42
  229. package/dist/cjs/router/reg-exp-router/index.js +0 -7
  230. package/dist/cjs/router/reg-exp-router/matcher.js +0 -21
  231. package/dist/cjs/router/reg-exp-router/node.js +0 -96
  232. package/dist/cjs/router/reg-exp-router/prepared-router.js +0 -97
  233. package/dist/cjs/router/reg-exp-router/router.js +0 -102
  234. package/dist/cjs/router/reg-exp-router/trie.js +0 -74
  235. package/dist/cjs/router/smart-router/index.js +0 -3
  236. package/dist/cjs/router/smart-router/router.js +0 -50
  237. package/dist/cjs/router/trie-router/index.js +0 -3
  238. package/dist/cjs/router/trie-router/node.js +0 -135
  239. package/dist/cjs/router/trie-router/router.js +0 -16
  240. package/dist/cjs/router/utils.js +0 -5
  241. package/dist/cjs/router.js +0 -40
  242. package/dist/cjs/types.js +0 -5
  243. package/dist/cjs/utils/accept.js +0 -194
  244. package/dist/cjs/utils/basic-auth.js +0 -21
  245. package/dist/cjs/utils/body.js +0 -97
  246. package/dist/cjs/utils/buffer.js +0 -55
  247. package/dist/cjs/utils/color.js +0 -39
  248. package/dist/cjs/utils/compress.js +0 -12
  249. package/dist/cjs/utils/concurrent.js +0 -31
  250. package/dist/cjs/utils/constants.js +0 -8
  251. package/dist/cjs/utils/cookie.js +0 -129
  252. package/dist/cjs/utils/crypto.js +0 -38
  253. package/dist/cjs/utils/encode.js +0 -37
  254. package/dist/cjs/utils/filepath.js +0 -27
  255. package/dist/cjs/utils/handler.js +0 -14
  256. package/dist/cjs/utils/headers.js +0 -0
  257. package/dist/cjs/utils/html.js +0 -109
  258. package/dist/cjs/utils/http-status.js +0 -0
  259. package/dist/cjs/utils/ipaddr.js +0 -247
  260. package/dist/cjs/utils/jwt/index.js +0 -15
  261. package/dist/cjs/utils/jwt/jwa.js +0 -25
  262. package/dist/cjs/utils/jwt/jws.js +0 -135
  263. package/dist/cjs/utils/jwt/jwt.js +0 -136
  264. package/dist/cjs/utils/jwt/types.js +0 -124
  265. package/dist/cjs/utils/jwt/utf8.js +0 -11
  266. package/dist/cjs/utils/mime.js +0 -80
  267. package/dist/cjs/utils/stream.js +0 -89
  268. package/dist/cjs/utils/types.js +0 -0
  269. package/dist/cjs/utils/url.js +0 -215
  270. package/dist/cjs/validator/index.js +0 -3
  271. package/dist/cjs/validator/utils.js +0 -0
  272. package/dist/cjs/validator/validator.js +0 -65
  273. package/dist/types/adapter/aws-lambda/conninfo.d.ts +0 -30
  274. package/dist/types/adapter/aws-lambda/handler.d.ts +0 -230
  275. package/dist/types/adapter/aws-lambda/index.d.ts +0 -4
  276. package/dist/types/adapter/aws-lambda/types.d.ts +0 -183
  277. package/dist/types/adapter/bun/conninfo.d.ts +0 -10
  278. package/dist/types/adapter/bun/index.d.ts +0 -6
  279. package/dist/types/adapter/bun/serve-static.d.ts +0 -8
  280. package/dist/types/adapter/bun/server.d.ts +0 -11
  281. package/dist/types/adapter/bun/ssg.d.ts +0 -17
  282. package/dist/types/adapter/bun/websocket.d.ts +0 -54
  283. package/dist/types/adapter/cloudflare-pages/conninfo.d.ts +0 -24
  284. package/dist/types/adapter/cloudflare-pages/handler.d.ts +0 -45
  285. package/dist/types/adapter/cloudflare-pages/index.d.ts +0 -3
  286. package/dist/types/adapter/cloudflare-workers/conninfo.d.ts +0 -7
  287. package/dist/types/adapter/cloudflare-workers/index.d.ts +0 -4
  288. package/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +0 -7
  289. package/dist/types/adapter/cloudflare-workers/serve-static.d.ts +0 -21
  290. package/dist/types/adapter/cloudflare-workers/utils.d.ts +0 -13
  291. package/dist/types/adapter/cloudflare-workers/websocket.d.ts +0 -7
  292. package/dist/types/adapter/deno/conninfo.d.ts +0 -10
  293. package/dist/types/adapter/deno/deno.d.ts +0 -1
  294. package/dist/types/adapter/deno/index.d.ts +0 -5
  295. package/dist/types/adapter/deno/serve-static.d.ts +0 -8
  296. package/dist/types/adapter/deno/ssg.d.ts +0 -17
  297. package/dist/types/adapter/deno/websocket.d.ts +0 -7
  298. package/dist/types/adapter/lambda-edge/conninfo.d.ts +0 -7
  299. package/dist/types/adapter/lambda-edge/handler.d.ts +0 -113
  300. package/dist/types/adapter/lambda-edge/index.d.ts +0 -3
  301. package/dist/types/adapter/netlify/conninfo.d.ts +0 -24
  302. package/dist/types/adapter/netlify/handler.d.ts +0 -7
  303. package/dist/types/adapter/netlify/index.d.ts +0 -3
  304. package/dist/types/adapter/netlify/mod.d.ts +0 -3
  305. package/dist/types/adapter/service-worker/handler.d.ts +0 -18
  306. package/dist/types/adapter/service-worker/index.d.ts +0 -26
  307. package/dist/types/adapter/service-worker/types.d.ts +0 -17
  308. package/dist/types/adapter/vercel/conninfo.d.ts +0 -7
  309. package/dist/types/adapter/vercel/handler.d.ts +0 -7
  310. package/dist/types/adapter/vercel/index.d.ts +0 -3
  311. package/dist/types/package.json +0 -3
  312. package/dist/types/utils/buffer.d.ts +0 -19
  313. package/dist/types/utils/color.d.ts +0 -23
  314. package/dist/{types/client → client}/client.d.ts +0 -0
  315. package/dist/{types/client → client}/fetch-result-please.d.ts +0 -0
  316. package/dist/{types/client → client}/index.d.ts +0 -0
  317. package/dist/{types/client → client}/types.d.ts +1 -1
  318. package/dist/{types/client → client}/utils.d.ts +0 -0
  319. package/dist/{types/helper → helper}/accepts/accepts.d.ts +0 -0
  320. package/dist/{types/helper → helper}/accepts/index.d.ts +0 -0
  321. package/dist/{types/helper → helper}/adapter/index.d.ts +0 -0
  322. package/dist/{types/helper → helper}/conninfo/index.d.ts +0 -0
  323. package/dist/{types/helper → helper}/conninfo/types.d.ts +0 -0
  324. package/dist/{types/helper → helper}/cookie/index.d.ts +0 -0
  325. package/dist/{types/helper → helper}/css/common.d.ts +0 -0
  326. package/dist/{types/helper → helper}/css/index.d.ts +0 -0
  327. package/dist/{types/helper → helper}/dev/index.d.ts +0 -0
  328. package/dist/{types/helper → helper}/html/index.d.ts +0 -0
  329. package/dist/{types/helper → helper}/proxy/index.d.ts +0 -0
  330. package/dist/{types/helper → helper}/route/index.d.ts +0 -0
  331. package/dist/{types/helper → helper}/ssg/index.d.ts +0 -0
  332. package/dist/{types/helper → helper}/ssg/plugins.d.ts +0 -0
  333. package/dist/{types/helper → helper}/ssg/utils.d.ts +0 -0
  334. package/dist/{types/helper → helper}/streaming/index.d.ts +0 -0
  335. package/dist/{types/helper → helper}/streaming/sse.d.ts +0 -0
  336. package/dist/{types/helper → helper}/streaming/stream.d.ts +0 -0
  337. package/dist/{types/helper → helper}/streaming/text.d.ts +0 -0
  338. package/dist/{types/helper → helper}/streaming/utils.d.ts +0 -0
  339. package/dist/{types/helper → helper}/testing/index.d.ts +0 -0
  340. package/dist/{types/helper → helper}/websocket/index.d.ts +0 -0
  341. package/dist/{types/http-exception.d.ts → http-exception.d.ts} +0 -0
  342. package/dist/{types/index.d.ts → index.d.ts} +0 -0
  343. package/dist/{types/jsx → jsx}/children.d.ts +0 -0
  344. package/dist/{types/jsx → jsx}/components.d.ts +0 -0
  345. package/dist/{types/jsx → jsx}/constants.d.ts +0 -0
  346. package/dist/{types/jsx → jsx}/context.d.ts +0 -0
  347. package/dist/{types/jsx → jsx}/dom/client.d.ts +0 -0
  348. package/dist/{types/jsx → jsx}/dom/components.d.ts +0 -0
  349. package/dist/{types/jsx → jsx}/dom/context.d.ts +0 -0
  350. package/dist/{types/jsx → jsx}/dom/css.d.ts +0 -0
  351. package/dist/{types/jsx → jsx}/dom/hooks/index.d.ts +0 -0
  352. package/dist/{types/jsx → jsx}/dom/index.d.ts +0 -0
  353. package/dist/{types/jsx → jsx}/dom/intrinsic-element/components.d.ts +0 -0
  354. package/dist/{types/jsx → jsx}/dom/jsx-dev-runtime.d.ts +0 -0
  355. package/dist/{types/jsx → jsx}/dom/jsx-runtime.d.ts +0 -0
  356. package/dist/{types/jsx → jsx}/dom/render.d.ts +0 -0
  357. package/dist/{types/jsx → jsx}/dom/server.d.ts +0 -0
  358. package/dist/{types/jsx → jsx}/dom/utils.d.ts +0 -0
  359. package/dist/{types/jsx → jsx}/hooks/index.d.ts +0 -0
  360. package/dist/{types/jsx → jsx}/index.d.ts +0 -0
  361. package/dist/{types/jsx → jsx}/intrinsic-element/common.d.ts +0 -0
  362. package/dist/{types/jsx → jsx}/intrinsic-element/components.d.ts +0 -0
  363. package/dist/{types/jsx → jsx}/intrinsic-elements.d.ts +0 -0
  364. package/dist/{types/jsx → jsx}/jsx-dev-runtime.d.ts +0 -0
  365. package/dist/{types/jsx → jsx}/jsx-runtime.d.ts +0 -0
  366. package/dist/{types/jsx → jsx}/streaming.d.ts +0 -0
  367. package/dist/{types/jsx → jsx}/types.d.ts +0 -0
  368. package/dist/{types/jsx → jsx}/utils.d.ts +0 -0
  369. package/dist/{types/middleware → middleware}/body-limit/index.d.ts +0 -0
  370. package/dist/{types/middleware → middleware}/cache/index.d.ts +0 -0
  371. package/dist/{types/middleware → middleware}/combine/index.d.ts +0 -0
  372. package/dist/{types/middleware → middleware}/compress/index.d.ts +0 -0
  373. package/dist/{types/middleware → middleware}/context-storage/index.d.ts +0 -0
  374. package/dist/{types/middleware → middleware}/cors/index.d.ts +0 -0
  375. package/dist/{types/middleware → middleware}/csrf/index.d.ts +0 -0
  376. package/dist/{types/middleware → middleware}/etag/digest.d.ts +0 -0
  377. package/dist/{types/middleware → middleware}/etag/index.d.ts +0 -0
  378. package/dist/{types/middleware → middleware}/ip-restriction/index.d.ts +0 -0
  379. package/dist/{types/middleware → middleware}/jsx-renderer/index.d.ts +0 -0
  380. package/dist/{types/middleware → middleware}/jwk/index.d.ts +0 -0
  381. package/dist/{types/middleware → middleware}/jwk/jwk.d.ts +0 -0
  382. package/dist/{types/middleware → middleware}/jwt/index.d.ts +0 -0
  383. package/dist/{types/middleware → middleware}/jwt/jwt.d.ts +0 -0
  384. package/dist/{types/middleware → middleware}/language/index.d.ts +0 -0
  385. package/dist/{types/middleware → middleware}/language/language.d.ts +0 -0
  386. package/dist/{types/middleware → middleware}/logger/index.d.ts +0 -0
  387. package/dist/{types/middleware → middleware}/method-not-allowed/index.d.ts +0 -0
  388. package/dist/{types/middleware → middleware}/method-override/index.d.ts +0 -0
  389. package/dist/{types/middleware → middleware}/powered-by/index.d.ts +0 -0
  390. package/dist/{types/middleware → middleware}/pretty-json/index.d.ts +0 -0
  391. package/dist/{types/middleware → middleware}/request-id/index.d.ts +0 -0
  392. package/dist/{types/middleware → middleware}/request-id/request-id.d.ts +0 -0
  393. package/dist/{types/middleware → middleware}/secure-headers/index.d.ts +0 -0
  394. package/dist/{types/middleware → middleware}/secure-headers/permissions-policy.d.ts +0 -0
  395. package/dist/{types/middleware → middleware}/secure-headers/secure-headers.d.ts +0 -0
  396. package/dist/{types/middleware → middleware}/serve-static/path.d.ts +0 -0
  397. package/dist/{types/middleware → middleware}/timeout/index.d.ts +0 -0
  398. package/dist/{types/middleware → middleware}/timing/index.d.ts +0 -0
  399. package/dist/{types/middleware → middleware}/timing/timing.d.ts +0 -0
  400. package/dist/{types/middleware → middleware}/trailing-slash/index.d.ts +0 -0
  401. package/dist/{types/request → request}/constants.d.ts +0 -0
  402. package/dist/{types/router → router}/linear-router/index.d.ts +0 -0
  403. package/dist/{types/router → router}/linear-router/router.d.ts +0 -0
  404. package/dist/{types/router → router}/pattern-router/index.d.ts +0 -0
  405. package/dist/{types/router → router}/pattern-router/router.d.ts +0 -0
  406. package/dist/{types/router → router}/reg-exp-router/index.d.ts +0 -0
  407. package/dist/{types/router → router}/reg-exp-router/matcher.d.ts +0 -0
  408. package/dist/{types/router → router}/reg-exp-router/node.d.ts +0 -0
  409. package/dist/{types/router → router}/reg-exp-router/prepared-router.d.ts +0 -0
  410. package/dist/{types/router → router}/reg-exp-router/router.d.ts +0 -0
  411. package/dist/{types/router → router}/reg-exp-router/trie.d.ts +0 -0
  412. package/dist/{types/router → router}/smart-router/index.d.ts +0 -0
  413. package/dist/{types/router → router}/smart-router/router.d.ts +0 -0
  414. package/dist/{types/router → router}/trie-router/index.d.ts +0 -0
  415. package/dist/{types/router → router}/trie-router/node.d.ts +0 -0
  416. package/dist/{types/router → router}/trie-router/router.d.ts +0 -0
  417. package/dist/{types/router → router}/utils.d.ts +0 -0
  418. package/dist/{types/router.d.ts → router.d.ts} +0 -0
  419. package/dist/{types/types.d.ts → types.d.ts} +1 -1
  420. /package/dist/{types/utils → utils}/accept.d.ts +0 -0
  421. /package/dist/{types/utils → utils}/basic-auth.d.ts +0 -0
  422. /package/dist/{types/utils → utils}/body.d.ts +0 -0
  423. /package/dist/{types/utils → utils}/compress.d.ts +0 -0
  424. /package/dist/{types/utils → utils}/concurrent.d.ts +0 -0
  425. /package/dist/{types/utils → utils}/constants.d.ts +0 -0
  426. /package/dist/{types/utils → utils}/cookie.d.ts +0 -0
  427. /package/dist/{types/utils → utils}/crypto.d.ts +0 -0
  428. /package/dist/{types/utils → utils}/encode.d.ts +0 -0
  429. /package/dist/{types/utils → utils}/filepath.d.ts +0 -0
  430. /package/dist/{types/utils → utils}/handler.d.ts +0 -0
  431. /package/dist/{types/utils → utils}/headers.d.ts +0 -0
  432. /package/dist/{types/utils → utils}/html.d.ts +0 -0
  433. /package/dist/{types/utils → utils}/ipaddr.d.ts +0 -0
  434. /package/dist/{types/utils → utils}/jwt/index.d.ts +0 -0
  435. /package/dist/{types/utils → utils}/jwt/jwa.d.ts +0 -0
  436. /package/dist/{types/utils → utils}/jwt/jws.d.ts +0 -0
  437. /package/dist/{types/utils → utils}/jwt/jwt.d.ts +0 -0
  438. /package/dist/{types/utils → utils}/jwt/types.d.ts +0 -0
  439. /package/dist/{types/utils → utils}/jwt/utf8.d.ts +0 -0
  440. /package/dist/{types/utils → utils}/mime.d.ts +0 -0
  441. /package/dist/{types/utils → utils}/stream.d.ts +0 -0
  442. /package/dist/{types/utils → utils}/types.d.ts +0 -0
  443. /package/dist/{types/validator → validator}/index.d.ts +0 -0
  444. /package/dist/{types/validator → validator}/utils.d.ts +0 -0
package/README.md CHANGED
@@ -63,9 +63,9 @@ The migration guide is available on [docs/MIGRATION.md](docs/MIGRATION.md).
63
63
  Contributions Welcome! You can contribute in the following ways.
64
64
 
65
65
  - Create an Issue - Propose a new feature. Report a bug.
66
- - Pull Request - Fix a bug or typo. Refactor the code.
67
- - Create third-party middleware - See [Third-party middleware](docs/CONTRIBUTING.md#third-party-middleware).
66
+ - Build middleware and libraries - Grow the Hono ecosystem.
68
67
  - Share - Share your thoughts on the Blog, X, and others.
68
+ - Sponsor - Support the maintainers through GitHub Sponsors: [@yusukebe](https://github.com/sponsors/yusukebe) and [@usualoma](https://github.com/sponsors/usualoma).
69
69
  - Make your application - Please try to use Hono.
70
70
 
71
71
  For more details, see [docs/CONTRIBUTING.md](docs/CONTRIBUTING.md).
@@ -1,6 +1,7 @@
1
1
  import { Env, ErrorHandler, Next, NotFoundHandler } from "./types.js";
2
2
  import { Context } from "./context.js";
3
3
  //#region src/compose.d.ts
4
+ export declare const toError: (err: unknown) => Error;
4
5
  /**
5
6
  * Compose middleware functions into a single function based on `koa-compose` package.
6
7
  *
package/dist/compose.js CHANGED
@@ -1,4 +1,5 @@
1
1
  //#region src/compose.ts
2
+ const toError = (err) => err instanceof Error ? err : new Error(typeof err === "string" ? err : void 0, { cause: err });
2
3
  /**
3
4
  * Compose middleware functions into a single function based on `koa-compose` package.
4
5
  *
@@ -32,11 +33,15 @@ const compose = (middleware, onError, onNotFound) => {
32
33
  context.req.routeIndex = i;
33
34
  } else handler = i === middleware.length && next || void 0;
34
35
  if (handler) try {
35
- res = await handler(context, () => dispatch(i + 1));
36
+ res = await handler(context, () => {
37
+ const routeIndex = context.req.routeIndex;
38
+ return dispatch(i + 1).finally(() => context.req.routeIndex = routeIndex);
39
+ });
36
40
  } catch (err) {
37
- if (err instanceof Error && onError) {
38
- context.error = err;
39
- res = await onError(err, context);
41
+ if (onError) {
42
+ const error = toError(err);
43
+ context.error = error;
44
+ res = await onError(error, context);
40
45
  isError = true;
41
46
  } else throw err;
42
47
  }
@@ -47,4 +52,4 @@ const compose = (middleware, onError, onNotFound) => {
47
52
  };
48
53
  };
49
54
  //#endregion
50
- export { compose };
55
+ export { compose, toError };
@@ -268,14 +268,14 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
268
268
  * })
269
269
  * ```
270
270
  */
271
- render: Renderer;
271
+ get render(): Renderer;
272
272
  /**
273
273
  * Sets the layout for the response.
274
274
  *
275
275
  * @param layout - The layout to set.
276
276
  * @returns The layout function.
277
277
  */
278
- setLayout: (layout: Layout<PropsForRenderer & {
278
+ get setLayout(): (layout: Layout<PropsForRenderer & {
279
279
  Layout: Layout;
280
280
  }>) => Layout<PropsForRenderer & {
281
281
  Layout: Layout;
@@ -285,7 +285,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
285
285
  *
286
286
  * @returns The current layout function.
287
287
  */
288
- getLayout: () => Layout<PropsForRenderer & {
288
+ get getLayout(): () => Layout<PropsForRenderer & {
289
289
  Layout: Layout;
290
290
  }> | undefined;
291
291
  /**
@@ -309,7 +309,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
309
309
  * })
310
310
  * ```
311
311
  */
312
- setRenderer: (renderer: Renderer) => void;
312
+ get setRenderer(): (renderer: Renderer) => void;
313
313
  /**
314
314
  * `.header()` can set headers.
315
315
  *
@@ -330,8 +330,8 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
330
330
  * })
331
331
  * ```
332
332
  */
333
- header: SetHeaders;
334
- status: (status: StatusCode) => void;
333
+ get header(): SetHeaders;
334
+ get status(): (status: StatusCode) => void;
335
335
  /**
336
336
  * `.set()` can set the value specified by the key.
337
337
  *
@@ -345,7 +345,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
345
345
  * })
346
346
  * ```
347
347
  */
348
- set: Set<IsAny<E> extends true ? {
348
+ get set(): Set<IsAny<E> extends true ? {
349
349
  Variables: ContextVariableMap & Record<PropertyKey, any>;
350
350
  } : E>;
351
351
  /**
@@ -361,7 +361,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
361
361
  * })
362
362
  * ```
363
363
  */
364
- get: Get<IsAny<E> extends true ? {
364
+ get get(): Get<IsAny<E> extends true ? {
365
365
  Variables: ContextVariableMap & Record<PropertyKey, any>;
366
366
  } : E>;
367
367
  /**
@@ -375,7 +375,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
375
375
  * ```
376
376
  */
377
377
  get var(): Readonly<ContextVariableMap & (IsAny<E['Variables']> extends true ? Record<string, any> : E['Variables'])>;
378
- newResponse: NewResponse;
378
+ get newResponse(): NewResponse;
379
379
  /**
380
380
  * `.body()` can return the HTTP response.
381
381
  * You can set headers with `.header()` and set HTTP status code with `.status`.
@@ -397,7 +397,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
397
397
  * })
398
398
  * ```
399
399
  */
400
- body: BodyRespond;
400
+ get body(): BodyRespond;
401
401
  /**
402
402
  * `.text()` can render text as `Content-Type:text/plain`.
403
403
  *
@@ -410,7 +410,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
410
410
  * })
411
411
  * ```
412
412
  */
413
- text: TextRespond;
413
+ get text(): TextRespond;
414
414
  /**
415
415
  * `.json()` can render JSON as `Content-Type:application/json`.
416
416
  *
@@ -423,8 +423,8 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
423
423
  * })
424
424
  * ```
425
425
  */
426
- json: JSONRespond;
427
- html: HTMLRespond;
426
+ get json(): JSONRespond;
427
+ get html(): HTMLRespond;
428
428
  /**
429
429
  * `.redirect()` can Redirect, default status code is 302.
430
430
  *
@@ -440,7 +440,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
440
440
  * })
441
441
  * ```
442
442
  */
443
- redirect: <T extends RedirectStatusCode = 302>(location: string | URL, status?: T) => Response & TypedResponse<undefined, T, "redirect">;
443
+ get redirect(): <T extends RedirectStatusCode = 302>(location: string | URL, status?: T) => Response & TypedResponse<undefined, T, 'redirect'>;
444
444
  /**
445
445
  * `.notFound()` can return the Not Found Response.
446
446
  *
@@ -453,7 +453,7 @@ export declare class Context<E extends Env = any, P extends string = any, I exte
453
453
  * })
454
454
  * ```
455
455
  */
456
- notFound: () => ReturnType<NotFoundHandler>;
456
+ get notFound(): () => ReturnType<NotFoundHandler>;
457
457
  }
458
458
  //#endregion
459
459
  export {};
package/dist/context.js CHANGED
@@ -135,23 +135,29 @@ var Context = class {
135
135
  * })
136
136
  * ```
137
137
  */
138
- render = (...args) => {
139
- this.#renderer ??= (content) => this.html(content);
140
- return this.#renderer(...args);
141
- };
138
+ get render() {
139
+ return (...args) => {
140
+ this.#renderer ??= (content) => this.html(content);
141
+ return this.#renderer(...args);
142
+ };
143
+ }
142
144
  /**
143
145
  * Sets the layout for the response.
144
146
  *
145
147
  * @param layout - The layout to set.
146
148
  * @returns The layout function.
147
149
  */
148
- setLayout = (layout) => this.#layout = layout;
150
+ get setLayout() {
151
+ return (layout) => this.#layout = layout;
152
+ }
149
153
  /**
150
154
  * Gets the current layout for the response.
151
155
  *
152
156
  * @returns The current layout function.
153
157
  */
154
- getLayout = () => this.#layout;
158
+ get getLayout() {
159
+ return () => this.#layout;
160
+ }
155
161
  /**
156
162
  * `.setRenderer()` can set the layout in the custom middleware.
157
163
  *
@@ -173,9 +179,11 @@ var Context = class {
173
179
  * })
174
180
  * ```
175
181
  */
176
- setRenderer = (renderer) => {
177
- this.#renderer = renderer;
178
- };
182
+ get setRenderer() {
183
+ return (renderer) => {
184
+ this.#renderer = renderer;
185
+ };
186
+ }
179
187
  /**
180
188
  * `.header()` can set headers.
181
189
  *
@@ -196,16 +204,20 @@ var Context = class {
196
204
  * })
197
205
  * ```
198
206
  */
199
- header = (name, value, options) => {
200
- if (this.finalized) this.#res = createResponseInstance(this.#res.body, this.#res);
201
- const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();
202
- if (value === void 0) headers.delete(name);
203
- else if (options?.append) headers.append(name, value);
204
- else headers.set(name, value);
205
- };
206
- status = (status) => {
207
- this.#status = status;
208
- };
207
+ get header() {
208
+ return (name, value, options) => {
209
+ if (this.finalized) this.#res = createResponseInstance(this.#res.body, this.#res);
210
+ const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();
211
+ if (value === void 0) headers.delete(name);
212
+ else if (options?.append) headers.append(name, value);
213
+ else headers.set(name, value);
214
+ };
215
+ }
216
+ get status() {
217
+ return (status) => {
218
+ this.#status = status;
219
+ };
220
+ }
209
221
  /**
210
222
  * `.set()` can set the value specified by the key.
211
223
  *
@@ -219,10 +231,12 @@ var Context = class {
219
231
  * })
220
232
  * ```
221
233
  */
222
- set = (key, value) => {
223
- this.#var ??= /* @__PURE__ */ new Map();
224
- this.#var.set(key, value);
225
- };
234
+ get set() {
235
+ return (key, value) => {
236
+ this.#var ??= /* @__PURE__ */ new Map();
237
+ this.#var.set(key, value);
238
+ };
239
+ }
226
240
  /**
227
241
  * `.get()` can use the value specified by the key.
228
242
  *
@@ -236,9 +250,11 @@ var Context = class {
236
250
  * })
237
251
  * ```
238
252
  */
239
- get = (key) => {
240
- return this.#var ? this.#var.get(key) : void 0;
241
- };
253
+ get get() {
254
+ return (key) => {
255
+ return this.#var ? this.#var.get(key) : void 0;
256
+ };
257
+ }
242
258
  /**
243
259
  * `.var` can access the value of a variable.
244
260
  *
@@ -283,7 +299,9 @@ var Context = class {
283
299
  headers: responseHeaders ?? headers
284
300
  });
285
301
  }
286
- newResponse = (...args) => this.#newResponse(...args);
302
+ get newResponse() {
303
+ return (...args) => this.#newResponse(...args);
304
+ }
287
305
  /**
288
306
  * `.body()` can return the HTTP response.
289
307
  * You can set headers with `.header()` and set HTTP status code with `.status`.
@@ -305,7 +323,9 @@ var Context = class {
305
323
  * })
306
324
  * ```
307
325
  */
308
- body = (data, arg, headers) => this.#newResponse(data, arg, headers);
326
+ get body() {
327
+ return (data, arg, headers) => this.#newResponse(data, arg, headers);
328
+ }
309
329
  /**
310
330
  * `.text()` can render text as `Content-Type:text/plain`.
311
331
  *
@@ -318,9 +338,11 @@ var Context = class {
318
338
  * })
319
339
  * ```
320
340
  */
321
- text = (text, arg, headers) => {
322
- return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(text, arg, setDefaultContentType(TEXT_PLAIN, headers));
323
- };
341
+ get text() {
342
+ return (text, arg, headers) => {
343
+ return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(text, arg, setDefaultContentType(TEXT_PLAIN, headers));
344
+ };
345
+ }
324
346
  /**
325
347
  * `.json()` can render JSON as `Content-Type:application/json`.
326
348
  *
@@ -333,13 +355,19 @@ var Context = class {
333
355
  * })
334
356
  * ```
335
357
  */
336
- json = (object, arg, headers) => {
337
- return this.#newResponse(JSON.stringify(object), arg, setDefaultContentType("application/json", headers));
338
- };
339
- html = (html, arg, headers) => {
340
- const res = (html) => this.#newResponse(html, arg, setDefaultContentType("text/html; charset=UTF-8", headers));
341
- return typeof html === "object" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);
342
- };
358
+ get json() {
359
+ return (object, arg, headers) => {
360
+ const body = JSON.stringify(object);
361
+ if (body === void 0) throw new TypeError("Value is not JSON serializable");
362
+ return this.#newResponse(body, arg, setDefaultContentType("application/json", headers));
363
+ };
364
+ }
365
+ get html() {
366
+ return (html, arg, headers) => {
367
+ const res = (html) => this.#newResponse(html, arg, setDefaultContentType("text/html; charset=UTF-8", headers));
368
+ return typeof html === "object" ? resolveCallback(html, HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);
369
+ };
370
+ }
343
371
  /**
344
372
  * `.redirect()` can Redirect, default status code is 302.
345
373
  *
@@ -355,11 +383,13 @@ var Context = class {
355
383
  * })
356
384
  * ```
357
385
  */
358
- redirect = (location, status) => {
359
- const locationString = String(location);
360
- this.header("Location", !/[^\x00-\xFF]/.test(locationString) ? locationString : encodeURI(locationString));
361
- return this.newResponse(null, status ?? 302);
362
- };
386
+ get redirect() {
387
+ return (location, status) => {
388
+ const locationString = String(location);
389
+ this.header("Location", !/[^\x00-\xFF]/.test(locationString) ? locationString : encodeURI(locationString));
390
+ return this.newResponse(null, status ?? 302);
391
+ };
392
+ }
363
393
  /**
364
394
  * `.notFound()` can return the Not Found Response.
365
395
  *
@@ -372,10 +402,12 @@ var Context = class {
372
402
  * })
373
403
  * ```
374
404
  */
375
- notFound = () => {
376
- this.#notFoundHandler ??= () => createResponseInstance();
377
- return this.#notFoundHandler(this);
378
- };
405
+ get notFound() {
406
+ return () => {
407
+ this.#notFoundHandler ??= () => createResponseInstance();
408
+ return this.#notFoundHandler(this);
409
+ };
410
+ }
379
411
  };
380
412
  //#endregion
381
413
  export { Context, TEXT_PLAIN };
@@ -0,0 +1,150 @@
1
+ import { ContentfulStatusCode } from "../../utils/http-status.js";
2
+ import { JSONParsed } from "../../utils/types.js";
3
+ import { Env, FormValue, Handler, IntersectNonAnyTypes, MiddlewareHandler, TypedResponse, ValidationTargets } from "../../types.js";
4
+ import { Context } from "../../context.js";
5
+ import { HtmlEscaped } from "../../utils/html.js";
6
+ import { InferInput } from "../../validator/utils.js";
7
+ //#region src/helper/factory/define-handler.d.ts
8
+ type StandardSchemaIssue = {
9
+ readonly message: string;
10
+ readonly path?: ReadonlyArray<PropertyKey | {
11
+ readonly key: PropertyKey;
12
+ }> | undefined;
13
+ };
14
+ type StandardSchemaResult<Output> = {
15
+ readonly value: Output;
16
+ readonly issues?: undefined;
17
+ } | {
18
+ readonly issues: ReadonlyArray<StandardSchemaIssue>;
19
+ };
20
+ /**
21
+ * The part of the Standard Schema interface used by `defineHandler()`.
22
+ * @see {@link https://standardschema.dev/}
23
+ */
24
+ export type StandardSchema<Input = unknown, Output = Input> = {
25
+ readonly '~standard': {
26
+ readonly validate: (value: unknown) => StandardSchemaResult<Output> | Promise<StandardSchemaResult<Output>>;
27
+ readonly types?: {
28
+ readonly input: Input;
29
+ readonly output: Output;
30
+ } | undefined;
31
+ };
32
+ };
33
+ type AnyStandardSchema = StandardSchema<any, any>;
34
+ type AnyResponse = Response | TypedResponse<any, any, any>;
35
+ /**
36
+ * A Standard Schema or a validation function for `Value`.
37
+ * `T` is the schema itself, or the output of the function. It is `never` when not specified.
38
+ */
39
+ type Validation<Value, T> = (T & AnyStandardSchema) | ((value: Value, c: Context<any, any, any>) => T | Promise<T>);
40
+ type ResponseValidation<In, Out> = (Out & StandardSchema<In, any>) | ((value: In, c: Context<any, any, any>) => Out | Promise<Out>);
41
+ /**
42
+ * A Response the handler can return. A JSON Response by `c.json()` is not accepted,
43
+ * because it bypasses the response validation. Return the value instead.
44
+ */
45
+ type NonJSONResponse = Response & {
46
+ readonly _format?: 'text' | 'redirect' | 'body';
47
+ };
48
+ type InputOf<T> = T extends StandardSchema<infer I, any> ? I : Exclude<T, AnyResponse>;
49
+ type OutputOf<T> = T extends StandardSchema<any, infer O> ? O : Exclude<T, AnyResponse>;
50
+ type RequestTarget = keyof ValidationTargets;
51
+ type Targets = { [K in RequestTarget]: unknown; };
52
+ type ValidatedTarget<T extends Targets> = { [K in RequestTarget]: [T[K]] extends [never] ? never : K; }[RequestTarget];
53
+ type ValidatedInput<T extends Targets> = {
54
+ in: { [K in ValidatedTarget<T>]: K extends 'json' ? InputOf<T[K]> : InferInput<InputOf<T[K]>, K, FormValue>; };
55
+ out: { [K in ValidatedTarget<T>]: OutputOf<T[K]>; };
56
+ };
57
+ /** The validated values, passed to the handler as the second argument */
58
+ type HandlerInput<T extends Targets> = { [K in ValidatedTarget<T>]: OutputOf<T[K]>; };
59
+ type JSONResponseOf<T> = Response & TypedResponse<JSONParsed<T>, ContentfulStatusCode, 'json'>;
60
+ /** The Response that `toResponse()` converts a returned value to */
61
+ type ConvertedResponse<R> = [unknown] extends [R] ? Response : R extends AnyResponse ? R : R extends null | undefined | void ? Response & TypedResponse<null, 204, 'body'> : R extends string | HtmlEscaped ? Response : JSONResponseOf<R>;
62
+ type AnyMiddleware = MiddlewareHandler<any, any, any>;
63
+ type MiddlewareEnvs<M extends AnyMiddleware[]> = { [K in keyof M]: M[K] extends MiddlewareHandler<infer ME, any, any> ? ME : never; };
64
+ /**
65
+ * An issue in the failure response. `path` is dot-joined, e.g. `user.email`.
66
+ * The input value is not included.
67
+ */
68
+ export type ValidationIssue = {
69
+ message: string;
70
+ path?: string;
71
+ };
72
+ /** The issues of one validation target in the failure response */
73
+ export type ValidationFailure = {
74
+ slot: RequestTarget | 'response';
75
+ issues: ValidationIssue[];
76
+ };
77
+ type ValidatedHandlerOptions<Param, Query, Header, Cookie, Form, Json, ResponseIn, ResponseOut> = {
78
+ param?: Validation<ValidationTargets['param'], Param>;
79
+ query?: Validation<ValidationTargets['query'], Query>;
80
+ header?: Validation<ValidationTargets['header'], Header>;
81
+ cookie?: Validation<ValidationTargets['cookie'], Cookie>;
82
+ form?: Validation<ValidationTargets['form'], Form>;
83
+ json?: Validation<ValidationTargets['json'], Json>;
84
+ response?: ResponseValidation<ResponseIn, ResponseOut>;
85
+ };
86
+ type ValidatedHandler<E extends Env, P extends string, T extends Targets, ResponseOut, R> = Handler<E, P, ValidatedInput<T>, Promise<[ResponseOut] extends [never] ? ConvertedResponse<Awaited<R>> : JSONResponseOf<OutputOf<ResponseOut>>>>;
87
+ export interface DefineHandler<E extends Env, P extends string> {
88
+ /**
89
+ * Defines a handler, with middleware before it. The returned value is converted to a Response.
90
+ */
91
+ <E2 extends Env = E, P2 extends string = P, M extends AnyMiddleware[] = [], R = unknown>(...args: [...middleware: M, handler: (c: Context<IntersectNonAnyTypes<[E2, ...MiddlewareEnvs<M>]>, P2>) => R]): Handler<E2, P2, {}, Promise<ConvertedResponse<Awaited<R>>>>;
92
+ /**
93
+ * Defines a handler with request and response validation, with middleware before it.
94
+ */
95
+ <Param = never, Query = never, Header = never, Cookie = never, Form = never, Json = never, ResponseIn = unknown, ResponseOut = never, T extends Targets = {
96
+ param: Param;
97
+ query: Query;
98
+ header: Header;
99
+ cookie: Cookie;
100
+ form: Form;
101
+ json: Json;
102
+ }>(options: ValidatedHandlerOptions<Param, Query, Header, Cookie, Form, Json, ResponseIn, ResponseOut>): <E2 extends Env = E, P2 extends string = P, M extends AnyMiddleware[] = [], R extends ResponseIn | NonJSONResponse | Promise<ResponseIn | NonJSONResponse> = ResponseIn>(...args: [...middleware: M, handler: (c: Context<IntersectNonAnyTypes<[E2, ...MiddlewareEnvs<M>]>, P2, ValidatedInput<T>>, input: HandlerInput<T>) => R]) => ValidatedHandler<E2, P2, T, ResponseOut, R>;
103
+ }
104
+ /**
105
+ * `defineHandler()` defines a handler. A value returned from the handler is converted to a
106
+ * Response: an object is returned as JSON, a string or JSX as HTML, and `null` or `undefined`
107
+ * as `204 No Content`. A `Response` is returned as is. The status is set with `c.status()`, and
108
+ * it is not in the types. Return `c.json()` to have the status in the types.
109
+ *
110
+ * With options, each request target (`param`, `query`, `json`, `form`, `header`, `cookie`)
111
+ * is validated before the handler runs. The validated values are passed to the handler as
112
+ * the second argument, and are also available through `c.req.valid()`.
113
+ * A value returned from the handler is validated with `response` and returned as JSON.
114
+ *
115
+ * Each validation accepts a Standard Schema or a validation function.
116
+ * When a Standard Schema fails, an `HTTPException` is thrown with status 400 for the request
117
+ * and 500 for the response, so `onError` can handle it. Its `res` is a JSON response of
118
+ * `{ error, issues }`, and its `cause` is `{ issues }` with the raw Standard Schema issues.
119
+ *
120
+ * Middleware passed before the handler runs first, around the validation. Its Env flows into
121
+ * the handler, so `c.get()` is typed. Otherwise, use `createFactory<Env>().defineHandler`, or
122
+ * pass the Env and the path as type arguments.
123
+ *
124
+ * @see {@link https://hono.dev/docs/helpers/factory#definehandler}
125
+ *
126
+ * @experimental
127
+ * `defineHandler()` is an experimental feature.
128
+ * The API might be changed.
129
+ *
130
+ * @example
131
+ * ```ts
132
+ * app.get('/ping', defineHandler(() => ({ pong: true })))
133
+ * app.get('/me', defineHandler(auth, (c) => c.get('user')))
134
+ *
135
+ * app.post(
136
+ * '/users/:id',
137
+ * defineHandler({
138
+ * param: ParamSchema,
139
+ * json: BodySchema,
140
+ * response: UserSchema,
141
+ * })(async (c, { param, json }) => {
142
+ * c.status(201)
143
+ * return { id: param.id, ...json }
144
+ * })
145
+ * )
146
+ * ```
147
+ */
148
+ export declare const defineHandler: DefineHandler<any, any>;
149
+ //#endregion
150
+ export {};