hono 4.13.9 → 4.13.10

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 (566) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +13 -0
  2. package/dist/adapter/aws-lambda/conninfo.js +42 -23
  3. package/dist/adapter/aws-lambda/handler.js +318 -344
  4. package/dist/adapter/aws-lambda/index.js +2 -8
  5. package/dist/adapter/aws-lambda/types.js +1 -0
  6. package/dist/adapter/bun/conninfo.js +20 -25
  7. package/dist/adapter/bun/index.js +3 -13
  8. package/dist/adapter/bun/serve-static.js +27 -27
  9. package/dist/adapter/bun/server.js +11 -5
  10. package/dist/adapter/bun/ssg.js +25 -15
  11. package/dist/adapter/bun/websocket.js +61 -68
  12. package/dist/adapter/cloudflare-pages/conninfo.js +24 -9
  13. package/dist/adapter/cloudflare-pages/handler.js +59 -62
  14. package/dist/adapter/cloudflare-pages/index.js +2 -8
  15. package/dist/adapter/cloudflare-workers/conninfo.js +7 -9
  16. package/dist/adapter/cloudflare-workers/index.js +3 -8
  17. package/dist/adapter/cloudflare-workers/serve-static-module.js +5 -6
  18. package/dist/adapter/cloudflare-workers/serve-static.js +26 -20
  19. package/dist/adapter/cloudflare-workers/utils.js +21 -34
  20. package/dist/adapter/cloudflare-workers/websocket.js +31 -39
  21. package/dist/adapter/deno/conninfo.js +16 -13
  22. package/dist/adapter/deno/deno.d.js +1 -0
  23. package/dist/adapter/deno/index.js +3 -10
  24. package/dist/adapter/deno/serve-static.js +33 -38
  25. package/dist/adapter/deno/ssg.js +27 -16
  26. package/dist/adapter/deno/websocket.js +30 -30
  27. package/dist/adapter/lambda-edge/conninfo.js +7 -9
  28. package/dist/adapter/lambda-edge/handler.js +102 -101
  29. package/dist/adapter/lambda-edge/index.js +2 -6
  30. package/dist/adapter/netlify/conninfo.js +24 -9
  31. package/dist/adapter/netlify/handler.js +10 -8
  32. package/dist/adapter/netlify/index.js +3 -2
  33. package/dist/adapter/netlify/mod.js +2 -6
  34. package/dist/adapter/service-worker/handler.js +15 -19
  35. package/dist/adapter/service-worker/index.js +23 -7
  36. package/dist/adapter/service-worker/types.js +1 -0
  37. package/dist/adapter/vercel/conninfo.js +7 -10
  38. package/dist/adapter/vercel/handler.js +8 -6
  39. package/dist/adapter/vercel/index.js +2 -6
  40. package/dist/cjs/_virtual/_rolldown/runtime.js +33 -0
  41. package/dist/cjs/adapter/aws-lambda/conninfo.js +42 -44
  42. package/dist/cjs/adapter/aws-lambda/handler.js +326 -373
  43. package/dist/cjs/adapter/aws-lambda/index.js +7 -34
  44. package/dist/cjs/adapter/aws-lambda/types.js +0 -15
  45. package/dist/cjs/adapter/bun/conninfo.js +21 -47
  46. package/dist/cjs/adapter/bun/index.js +14 -45
  47. package/dist/cjs/adapter/bun/serve-static.js +29 -50
  48. package/dist/cjs/adapter/bun/server.js +11 -26
  49. package/dist/cjs/adapter/bun/ssg.js +24 -35
  50. package/dist/cjs/adapter/bun/websocket.js +63 -91
  51. package/dist/cjs/adapter/cloudflare-pages/conninfo.js +25 -31
  52. package/dist/cjs/adapter/cloudflare-pages/handler.js +61 -85
  53. package/dist/cjs/adapter/cloudflare-pages/index.js +7 -34
  54. package/dist/cjs/adapter/cloudflare-workers/conninfo.js +8 -31
  55. package/dist/cjs/adapter/cloudflare-workers/index.js +7 -33
  56. package/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +7 -29
  57. package/dist/cjs/adapter/cloudflare-workers/serve-static.js +27 -42
  58. package/dist/cjs/adapter/cloudflare-workers/utils.js +21 -55
  59. package/dist/cjs/adapter/cloudflare-workers/websocket.js +33 -62
  60. package/dist/cjs/adapter/deno/conninfo.js +16 -34
  61. package/dist/cjs/adapter/deno/index.js +10 -38
  62. package/dist/cjs/adapter/deno/serve-static.js +33 -59
  63. package/dist/cjs/adapter/deno/ssg.js +27 -37
  64. package/dist/cjs/adapter/deno/websocket.js +32 -53
  65. package/dist/cjs/adapter/lambda-edge/conninfo.js +8 -31
  66. package/dist/cjs/adapter/lambda-edge/handler.js +102 -130
  67. package/dist/cjs/adapter/lambda-edge/index.js +5 -30
  68. package/dist/cjs/adapter/netlify/conninfo.js +25 -31
  69. package/dist/cjs/adapter/netlify/handler.js +10 -29
  70. package/dist/cjs/adapter/netlify/index.js +5 -21
  71. package/dist/cjs/adapter/netlify/mod.js +5 -30
  72. package/dist/cjs/adapter/service-worker/handler.js +16 -41
  73. package/dist/cjs/adapter/service-worker/index.js +25 -30
  74. package/dist/cjs/adapter/service-worker/types.js +0 -15
  75. package/dist/cjs/adapter/vercel/conninfo.js +8 -32
  76. package/dist/cjs/adapter/vercel/handler.js +8 -27
  77. package/dist/cjs/adapter/vercel/index.js +5 -30
  78. package/dist/cjs/client/client.js +139 -212
  79. package/dist/cjs/client/fetch-result-please.js +62 -80
  80. package/dist/cjs/client/index.js +7 -32
  81. package/dist/cjs/client/types.js +0 -15
  82. package/dist/cjs/client/utils.js +54 -92
  83. package/dist/cjs/compose.js +49 -66
  84. package/dist/cjs/context.js +379 -450
  85. package/dist/cjs/helper/accepts/accepts.js +47 -72
  86. package/dist/cjs/helper/accepts/index.js +3 -27
  87. package/dist/cjs/helper/adapter/index.js +33 -73
  88. package/dist/cjs/helper/conninfo/index.js +0 -15
  89. package/dist/cjs/helper/conninfo/types.js +0 -15
  90. package/dist/cjs/helper/cookie/index.js +75 -116
  91. package/dist/cjs/helper/css/common.js +165 -244
  92. package/dist/cjs/helper/css/index.js +136 -151
  93. package/dist/cjs/helper/dev/index.js +45 -71
  94. package/dist/cjs/helper/factory/index.js +30 -51
  95. package/dist/cjs/helper/html/index.js +32 -62
  96. package/dist/cjs/helper/proxy/index.js +113 -106
  97. package/dist/cjs/helper/route/index.js +123 -66
  98. package/dist/cjs/helper/ssg/index.js +19 -43
  99. package/dist/cjs/helper/ssg/middleware.js +56 -64
  100. package/dist/cjs/helper/ssg/plugins.js +55 -57
  101. package/dist/cjs/helper/ssg/ssg.js +196 -296
  102. package/dist/cjs/helper/ssg/utils.js +47 -90
  103. package/dist/cjs/helper/streaming/index.js +8 -35
  104. package/dist/cjs/helper/streaming/sse.js +53 -85
  105. package/dist/cjs/helper/streaming/stream.js +23 -53
  106. package/dist/cjs/helper/streaming/text.js +10 -32
  107. package/dist/cjs/helper/streaming/utils.js +13 -32
  108. package/dist/cjs/helper/testing/index.js +16 -31
  109. package/dist/cjs/helper/websocket/index.js +51 -76
  110. package/dist/cjs/hono-base.js +345 -403
  111. package/dist/cjs/hono.js +28 -42
  112. package/dist/cjs/http-exception.js +55 -56
  113. package/dist/cjs/index.js +22 -30
  114. package/dist/cjs/jsx/base.js +237 -366
  115. package/dist/cjs/jsx/children.js +16 -41
  116. package/dist/cjs/jsx/components.js +119 -192
  117. package/dist/cjs/jsx/constants.js +15 -42
  118. package/dist/cjs/jsx/context.js +144 -162
  119. package/dist/cjs/jsx/dom/client.js +49 -69
  120. package/dist/cjs/jsx/dom/components.js +23 -52
  121. package/dist/cjs/jsx/dom/context.js +39 -67
  122. package/dist/cjs/jsx/dom/css.js +143 -158
  123. package/dist/cjs/jsx/dom/hooks/index.js +55 -64
  124. package/dist/cjs/jsx/dom/index.js +114 -173
  125. package/dist/cjs/jsx/dom/intrinsic-element/components.js +282 -375
  126. package/dist/cjs/jsx/dom/jsx-dev-runtime.js +14 -49
  127. package/dist/cjs/jsx/dom/jsx-runtime.js +5 -32
  128. package/dist/cjs/jsx/dom/render.js +469 -623
  129. package/dist/cjs/jsx/dom/server.js +37 -64
  130. package/dist/cjs/jsx/dom/utils.js +7 -30
  131. package/dist/cjs/jsx/hooks/index.js +225 -318
  132. package/dist/cjs/jsx/index.js +86 -135
  133. package/dist/cjs/jsx/intrinsic-element/common.js +20 -43
  134. package/dist/cjs/jsx/intrinsic-element/components.js +117 -168
  135. package/dist/cjs/jsx/intrinsic-elements.js +0 -15
  136. package/dist/cjs/jsx/jsx-dev-runtime.js +14 -39
  137. package/dist/cjs/jsx/jsx-runtime.js +34 -68
  138. package/dist/cjs/jsx/streaming.js +123 -166
  139. package/dist/cjs/jsx/types.js +0 -15
  140. package/dist/cjs/jsx/utils.js +91 -175
  141. package/dist/cjs/middleware/basic-auth/index.js +98 -86
  142. package/dist/cjs/middleware/bearer-auth/index.js +92 -109
  143. package/dist/cjs/middleware/body-limit/index.js +66 -72
  144. package/dist/cjs/middleware/cache/index.js +153 -199
  145. package/dist/cjs/middleware/combine/index.js +133 -95
  146. package/dist/cjs/middleware/compress/index.js +73 -88
  147. package/dist/cjs/middleware/context-storage/index.js +49 -41
  148. package/dist/cjs/middleware/cors/index.js +107 -107
  149. package/dist/cjs/middleware/csrf/index.js +101 -72
  150. package/dist/cjs/middleware/etag/digest.js +58 -97
  151. package/dist/cjs/middleware/etag/index.js +71 -91
  152. package/dist/cjs/middleware/ip-restriction/index.js +161 -169
  153. package/dist/cjs/middleware/jsx-renderer/index.js +99 -77
  154. package/dist/cjs/middleware/jwk/index.js +3 -27
  155. package/dist/cjs/middleware/jwk/jwk.js +118 -135
  156. package/dist/cjs/middleware/jwt/index.js +9 -38
  157. package/dist/cjs/middleware/jwt/jwt.js +120 -141
  158. package/dist/cjs/middleware/language/index.js +7 -35
  159. package/dist/cjs/middleware/language/language.js +184 -182
  160. package/dist/cjs/middleware/logger/index.js +41 -62
  161. package/dist/cjs/middleware/method-not-allowed/index.js +82 -88
  162. package/dist/cjs/middleware/method-override/index.js +101 -102
  163. package/dist/cjs/middleware/powered-by/index.js +23 -30
  164. package/dist/cjs/middleware/pretty-json/index.js +38 -42
  165. package/dist/cjs/middleware/request-id/index.js +3 -27
  166. package/dist/cjs/middleware/request-id/request-id.js +34 -42
  167. package/dist/cjs/middleware/secure-headers/index.js +4 -29
  168. package/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -15
  169. package/dist/cjs/middleware/secure-headers/secure-headers.js +142 -174
  170. package/dist/cjs/middleware/serve-static/index.js +55 -93
  171. package/dist/cjs/middleware/serve-static/path.js +15 -38
  172. package/dist/cjs/middleware/timeout/index.js +40 -45
  173. package/dist/cjs/middleware/timing/index.js +7 -35
  174. package/dist/cjs/middleware/timing/timing.js +177 -118
  175. package/dist/cjs/middleware/trailing-slash/index.js +85 -58
  176. package/dist/cjs/preset/quick.js +18 -37
  177. package/dist/cjs/preset/tiny.js +15 -33
  178. package/dist/cjs/request/constants.js +5 -27
  179. package/dist/cjs/request.js +334 -346
  180. package/dist/cjs/router/linear-router/index.js +3 -27
  181. package/dist/cjs/router/linear-router/router.js +95 -143
  182. package/dist/cjs/router/pattern-router/index.js +3 -27
  183. package/dist/cjs/router/pattern-router/router.js +41 -63
  184. package/dist/cjs/router/reg-exp-router/index.js +7 -34
  185. package/dist/cjs/router/reg-exp-router/matcher.js +18 -45
  186. package/dist/cjs/router/reg-exp-router/node.js +91 -135
  187. package/dist/cjs/router/reg-exp-router/prepared-router.js +92 -161
  188. package/dist/cjs/router/reg-exp-router/router.js +98 -147
  189. package/dist/cjs/router/reg-exp-router/trie.js +73 -89
  190. package/dist/cjs/router/smart-router/index.js +3 -27
  191. package/dist/cjs/router/smart-router/router.js +49 -79
  192. package/dist/cjs/router/trie-router/index.js +3 -27
  193. package/dist/cjs/router/trie-router/node.js +134 -186
  194. package/dist/cjs/router/trie-router/router.js +15 -39
  195. package/dist/cjs/router/utils.js +5 -27
  196. package/dist/cjs/router.js +37 -37
  197. package/dist/cjs/types.js +5 -28
  198. package/dist/cjs/utils/accept.js +177 -225
  199. package/dist/cjs/utils/basic-auth.js +16 -40
  200. package/dist/cjs/utils/body.js +84 -110
  201. package/dist/cjs/utils/buffer.js +43 -91
  202. package/dist/cjs/utils/color.js +35 -44
  203. package/dist/cjs/utils/compress.js +11 -26
  204. package/dist/cjs/utils/concurrent.js +29 -59
  205. package/dist/cjs/utils/constants.js +7 -26
  206. package/dist/cjs/utils/cookie.js +107 -177
  207. package/dist/cjs/utils/crypto.js +30 -61
  208. package/dist/cjs/utils/encode.js +31 -48
  209. package/dist/cjs/utils/filepath.js +23 -54
  210. package/dist/cjs/utils/handler.js +11 -33
  211. package/dist/cjs/utils/headers.js +0 -15
  212. package/dist/cjs/utils/html.js +96 -137
  213. package/dist/cjs/utils/http-status.js +0 -15
  214. package/dist/cjs/utils/ipaddr.js +213 -286
  215. package/dist/cjs/utils/jwt/index.js +14 -27
  216. package/dist/cjs/utils/jwt/jwa.js +25 -42
  217. package/dist/cjs/utils/jwt/jws.js +119 -199
  218. package/dist/cjs/utils/jwt/jwt.js +122 -206
  219. package/dist/cjs/utils/jwt/types.js +122 -159
  220. package/dist/cjs/utils/jwt/utf8.js +9 -28
  221. package/dist/cjs/utils/mime.js +75 -101
  222. package/dist/cjs/utils/stream.js +88 -111
  223. package/dist/cjs/utils/types.js +0 -15
  224. package/dist/cjs/utils/url.js +185 -234
  225. package/dist/cjs/validator/index.js +3 -27
  226. package/dist/cjs/validator/utils.js +0 -15
  227. package/dist/cjs/validator/validator.js +60 -103
  228. package/dist/client/client.js +138 -197
  229. package/dist/client/fetch-result-please.js +59 -56
  230. package/dist/client/index.js +3 -7
  231. package/dist/client/types.js +1 -0
  232. package/dist/client/utils.js +51 -68
  233. package/dist/compose.js +49 -45
  234. package/dist/context.js +376 -426
  235. package/dist/helper/accepts/accepts.js +47 -51
  236. package/dist/helper/accepts/index.js +1 -4
  237. package/dist/helper/adapter/index.js +33 -52
  238. package/dist/helper/conninfo/index.js +1 -0
  239. package/dist/helper/conninfo/types.js +1 -0
  240. package/dist/helper/cookie/index.js +74 -94
  241. package/dist/helper/css/common.js +167 -225
  242. package/dist/helper/css/index.js +132 -137
  243. package/dist/helper/dev/index.js +44 -49
  244. package/dist/helper/factory/index.js +27 -27
  245. package/dist/helper/html/index.js +30 -39
  246. package/dist/helper/proxy/index.js +116 -88
  247. package/dist/helper/route/index.js +121 -43
  248. package/dist/helper/ssg/index.js +3 -18
  249. package/dist/helper/ssg/middleware.js +53 -40
  250. package/dist/helper/ssg/plugins.js +55 -36
  251. package/dist/helper/ssg/ssg.js +198 -283
  252. package/dist/helper/ssg/utils.js +53 -75
  253. package/dist/helper/streaming/index.js +2 -8
  254. package/dist/helper/streaming/sse.js +50 -61
  255. package/dist/helper/streaming/stream.js +22 -31
  256. package/dist/helper/streaming/text.js +9 -10
  257. package/dist/helper/streaming/utils.js +9 -12
  258. package/dist/helper/testing/index.js +16 -10
  259. package/dist/helper/websocket/index.js +49 -53
  260. package/dist/hono-base.js +342 -379
  261. package/dist/hono.js +27 -20
  262. package/dist/http-exception.js +53 -33
  263. package/dist/index.js +19 -6
  264. package/dist/jsx/base.js +231 -340
  265. package/dist/jsx/children.js +16 -20
  266. package/dist/jsx/components.js +118 -170
  267. package/dist/jsx/constants.js +9 -15
  268. package/dist/jsx/context.js +153 -150
  269. package/dist/jsx/dom/client.js +45 -48
  270. package/dist/jsx/dom/components.js +21 -29
  271. package/dist/jsx/dom/context.js +37 -44
  272. package/dist/jsx/dom/css.js +142 -147
  273. package/dist/jsx/dom/hooks/index.js +52 -40
  274. package/dist/jsx/dom/index.js +71 -134
  275. package/dist/jsx/dom/intrinsic-element/components.js +275 -359
  276. package/dist/jsx/dom/jsx-dev-runtime.js +14 -18
  277. package/dist/jsx/dom/jsx-runtime.js +2 -8
  278. package/dist/jsx/dom/render.js +492 -631
  279. package/dist/jsx/dom/server.js +32 -32
  280. package/dist/jsx/dom/utils.js +6 -8
  281. package/dist/jsx/hooks/index.js +236 -308
  282. package/dist/jsx/index.js +45 -98
  283. package/dist/jsx/intrinsic-element/common.js +20 -22
  284. package/dist/jsx/intrinsic-element/components.js +113 -154
  285. package/dist/jsx/intrinsic-elements.js +1 -0
  286. package/dist/jsx/jsx-dev-runtime.js +12 -16
  287. package/dist/jsx/jsx-runtime.js +29 -42
  288. package/dist/jsx/streaming.js +120 -142
  289. package/dist/jsx/types.js +1 -0
  290. package/dist/jsx/utils.js +105 -168
  291. package/dist/middleware/basic-auth/index.js +96 -63
  292. package/dist/middleware/bearer-auth/index.js +93 -89
  293. package/dist/middleware/body-limit/index.js +66 -51
  294. package/dist/middleware/cache/index.js +165 -190
  295. package/dist/middleware/combine/index.js +132 -73
  296. package/dist/middleware/compress/index.js +75 -69
  297. package/dist/middleware/context-storage/index.js +49 -19
  298. package/dist/middleware/cors/index.js +107 -86
  299. package/dist/middleware/csrf/index.js +103 -53
  300. package/dist/middleware/etag/digest.js +59 -77
  301. package/dist/middleware/etag/index.js +71 -70
  302. package/dist/middleware/ip-restriction/index.js +163 -158
  303. package/dist/middleware/jsx-renderer/index.js +97 -54
  304. package/dist/middleware/jwk/index.js +1 -4
  305. package/dist/middleware/jwk/jwk.js +116 -112
  306. package/dist/middleware/jwt/index.js +2 -10
  307. package/dist/middleware/jwt/jwt.js +114 -114
  308. package/dist/middleware/language/index.js +2 -15
  309. package/dist/middleware/language/language.js +180 -157
  310. package/dist/middleware/logger/index.js +43 -37
  311. package/dist/middleware/method-not-allowed/index.js +81 -66
  312. package/dist/middleware/method-override/index.js +101 -81
  313. package/dist/middleware/powered-by/index.js +23 -9
  314. package/dist/middleware/pretty-json/index.js +39 -22
  315. package/dist/middleware/request-id/index.js +1 -4
  316. package/dist/middleware/request-id/request-id.js +33 -20
  317. package/dist/middleware/secure-headers/index.js +1 -5
  318. package/dist/middleware/secure-headers/permissions-policy.js +1 -0
  319. package/dist/middleware/secure-headers/secure-headers.js +144 -155
  320. package/dist/middleware/serve-static/index.js +55 -72
  321. package/dist/middleware/serve-static/path.js +15 -17
  322. package/dist/middleware/timeout/index.js +40 -23
  323. package/dist/middleware/timing/index.js +2 -9
  324. package/dist/middleware/timing/timing.js +177 -97
  325. package/dist/middleware/trailing-slash/index.js +85 -37
  326. package/dist/preset/quick.js +17 -15
  327. package/dist/preset/tiny.js +14 -11
  328. package/dist/request/constants.js +4 -5
  329. package/dist/request.js +328 -319
  330. package/dist/router/linear-router/index.js +1 -4
  331. package/dist/router/linear-router/router.js +93 -120
  332. package/dist/router/pattern-router/index.js +1 -4
  333. package/dist/router/pattern-router/router.js +39 -40
  334. package/dist/router/reg-exp-router/index.js +1 -7
  335. package/dist/router/reg-exp-router/matcher.js +17 -23
  336. package/dist/router/reg-exp-router/node.js +87 -110
  337. package/dist/router/reg-exp-router/prepared-router.js +89 -137
  338. package/dist/router/reg-exp-router/router.js +92 -129
  339. package/dist/router/reg-exp-router/trie.js +69 -64
  340. package/dist/router/smart-router/index.js +1 -4
  341. package/dist/router/smart-router/router.js +46 -55
  342. package/dist/router/trie-router/index.js +1 -4
  343. package/dist/router/trie-router/node.js +131 -162
  344. package/dist/router/trie-router/router.js +11 -14
  345. package/dist/router/utils.js +4 -5
  346. package/dist/router.js +35 -14
  347. package/dist/types/adapter/aws-lambda/conninfo.d.ts +4 -1
  348. package/dist/types/adapter/aws-lambda/handler.d.ts +150 -105
  349. package/dist/types/adapter/aws-lambda/index.d.ts +4 -8
  350. package/dist/types/adapter/aws-lambda/types.d.ts +152 -123
  351. package/dist/types/adapter/bun/conninfo.d.ts +4 -1
  352. package/dist/types/adapter/bun/index.d.ts +6 -10
  353. package/dist/types/adapter/bun/serve-static.d.ts +7 -2
  354. package/dist/types/adapter/bun/server.d.ts +4 -5
  355. package/dist/types/adapter/bun/ssg.d.ts +5 -1
  356. package/dist/types/adapter/bun/websocket.d.ts +31 -17
  357. package/dist/types/adapter/cloudflare-pages/conninfo.d.ts +4 -1
  358. package/dist/types/adapter/cloudflare-pages/handler.d.ts +29 -18
  359. package/dist/types/adapter/cloudflare-pages/index.d.ts +3 -7
  360. package/dist/types/adapter/cloudflare-workers/conninfo.d.ts +6 -1
  361. package/dist/types/adapter/cloudflare-workers/index.d.ts +4 -7
  362. package/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +5 -3
  363. package/dist/types/adapter/cloudflare-workers/serve-static.d.ts +10 -5
  364. package/dist/types/adapter/cloudflare-workers/utils.d.ts +10 -2
  365. package/dist/types/adapter/cloudflare-workers/websocket.d.ts +6 -1
  366. package/dist/types/adapter/deno/conninfo.d.ts +4 -1
  367. package/dist/types/adapter/deno/deno.d.ts +1 -0
  368. package/dist/types/adapter/deno/index.d.ts +5 -8
  369. package/dist/types/adapter/deno/serve-static.d.ts +7 -2
  370. package/dist/types/adapter/deno/ssg.d.ts +5 -1
  371. package/dist/types/adapter/deno/websocket.d.ts +6 -1
  372. package/dist/types/adapter/lambda-edge/conninfo.d.ts +6 -1
  373. package/dist/types/adapter/lambda-edge/handler.d.ts +83 -58
  374. package/dist/types/adapter/lambda-edge/index.d.ts +3 -7
  375. package/dist/types/adapter/netlify/conninfo.d.ts +4 -1
  376. package/dist/types/adapter/netlify/handler.d.ts +6 -1
  377. package/dist/types/adapter/netlify/index.d.ts +3 -5
  378. package/dist/types/adapter/netlify/mod.d.ts +3 -2
  379. package/dist/types/adapter/service-worker/handler.d.ts +9 -8
  380. package/dist/types/adapter/service-worker/index.d.ts +6 -9
  381. package/dist/types/adapter/service-worker/types.d.ts +12 -8
  382. package/dist/types/adapter/vercel/conninfo.d.ts +6 -1
  383. package/dist/types/adapter/vercel/handler.d.ts +6 -1
  384. package/dist/types/adapter/vercel/index.d.ts +3 -6
  385. package/dist/types/client/client.d.ts +5 -3
  386. package/dist/types/client/fetch-result-please.d.ts +21 -19
  387. package/dist/types/client/index.d.ts +5 -7
  388. package/dist/types/client/types.d.ts +134 -160
  389. package/dist/types/client/utils.d.ts +6 -4
  390. package/dist/types/compose.d.ts +4 -2
  391. package/dist/types/context.d.ts +335 -336
  392. package/dist/types/helper/accepts/accepts.d.ts +11 -9
  393. package/dist/types/helper/accepts/index.d.ts +2 -5
  394. package/dist/types/helper/adapter/index.d.ts +4 -6
  395. package/dist/types/helper/conninfo/index.d.ts +2 -5
  396. package/dist/types/helper/conninfo/types.d.ts +25 -23
  397. package/dist/types/helper/cookie/index.d.ts +10 -13
  398. package/dist/types/helper/css/common.d.ts +11 -10
  399. package/dist/types/helper/css/index.d.ts +25 -28
  400. package/dist/types/helper/dev/index.d.ts +10 -13
  401. package/dist/types/helper/factory/index.d.ts +26 -74
  402. package/dist/types/helper/html/index.d.ts +4 -7
  403. package/dist/types/helper/proxy/index.d.ts +19 -22
  404. package/dist/types/helper/route/index.d.ts +4 -2
  405. package/dist/types/helper/ssg/index.d.ts +4 -7
  406. package/dist/types/helper/ssg/middleware.d.ts +8 -7
  407. package/dist/types/helper/ssg/plugins.d.ts +3 -1
  408. package/dist/types/helper/ssg/ssg.d.ts +38 -36
  409. package/dist/types/helper/ssg/utils.d.ts +5 -4
  410. package/dist/types/helper/streaming/index.d.ts +4 -8
  411. package/dist/types/helper/streaming/sse.d.ts +10 -8
  412. package/dist/types/helper/streaming/stream.d.ts +4 -2
  413. package/dist/types/helper/streaming/text.d.ts +4 -2
  414. package/dist/types/helper/streaming/utils.d.ts +2 -0
  415. package/dist/types/helper/testing/index.d.ts +7 -10
  416. package/dist/types/helper/websocket/index.d.ts +30 -33
  417. package/dist/types/hono-base.d.ts +208 -211
  418. package/dist/types/hono.d.ts +11 -10
  419. package/dist/types/http-exception.d.ts +20 -23
  420. package/dist/types/index.d.ts +6 -37
  421. package/dist/types/jsx/base.d.ts +36 -35
  422. package/dist/types/jsx/children.d.ts +8 -6
  423. package/dist/types/jsx/components.d.ts +8 -5
  424. package/dist/types/jsx/constants.d.ts +2 -0
  425. package/dist/types/jsx/context.d.ts +9 -7
  426. package/dist/types/jsx/dom/client.d.ts +8 -10
  427. package/dist/types/jsx/dom/components.d.ts +9 -6
  428. package/dist/types/jsx/dom/context.d.ts +3 -1
  429. package/dist/types/jsx/dom/css.d.ts +26 -30
  430. package/dist/types/jsx/dom/hooks/index.d.ts +11 -13
  431. package/dist/types/jsx/dom/index.d.ts +78 -83
  432. package/dist/types/jsx/dom/intrinsic-element/components.d.ts +9 -5
  433. package/dist/types/jsx/dom/jsx-dev-runtime.d.ts +4 -6
  434. package/dist/types/jsx/dom/jsx-runtime.d.ts +3 -7
  435. package/dist/types/jsx/dom/render.d.ts +32 -51
  436. package/dist/types/jsx/dom/server.d.ts +86 -85
  437. package/dist/types/jsx/dom/utils.d.ts +2 -0
  438. package/dist/types/jsx/hooks/index.d.ts +16 -17
  439. package/dist/types/jsx/index.d.ts +70 -73
  440. package/dist/types/jsx/intrinsic-element/common.d.ts +3 -1
  441. package/dist/types/jsx/intrinsic-element/components.d.ts +7 -4
  442. package/dist/types/jsx/intrinsic-elements.d.ts +708 -708
  443. package/dist/types/jsx/jsx-dev-runtime.d.ts +4 -7
  444. package/dist/types/jsx/jsx-runtime.d.ts +7 -10
  445. package/dist/types/jsx/streaming.d.ts +9 -10
  446. package/dist/types/jsx/types.d.ts +11 -13
  447. package/dist/types/jsx/utils.d.ts +2 -0
  448. package/dist/types/middleware/basic-auth/index.d.ts +17 -20
  449. package/dist/types/middleware/bearer-auth/index.d.ts +46 -49
  450. package/dist/types/middleware/body-limit/index.d.ts +6 -9
  451. package/dist/types/middleware/cache/index.d.ts +13 -15
  452. package/dist/types/middleware/combine/index.d.ts +4 -7
  453. package/dist/types/middleware/compress/index.d.ts +8 -10
  454. package/dist/types/middleware/context-storage/index.d.ts +4 -6
  455. package/dist/types/middleware/cors/index.d.ts +10 -13
  456. package/dist/types/middleware/csrf/index.d.ts +6 -9
  457. package/dist/types/middleware/etag/digest.d.ts +2 -0
  458. package/dist/types/middleware/etag/index.d.ts +6 -9
  459. package/dist/types/middleware/ip-restriction/index.d.ts +11 -13
  460. package/dist/types/middleware/jsx-renderer/index.d.ts +11 -12
  461. package/dist/types/middleware/jwk/index.d.ts +2 -1
  462. package/dist/types/middleware/jwk/jwk.d.ts +20 -23
  463. package/dist/types/middleware/jwt/index.d.ts +6 -6
  464. package/dist/types/middleware/jwt/jwt.d.ts +28 -30
  465. package/dist/types/middleware/language/index.d.ts +5 -5
  466. package/dist/types/middleware/language/language.d.ts +42 -44
  467. package/dist/types/middleware/logger/index.d.ts +3 -6
  468. package/dist/types/middleware/method-not-allowed/index.d.ts +7 -10
  469. package/dist/types/middleware/method-override/index.d.ts +14 -17
  470. package/dist/types/middleware/powered-by/index.d.ts +8 -11
  471. package/dist/types/middleware/pretty-json/index.d.ts +18 -21
  472. package/dist/types/middleware/request-id/index.d.ts +5 -5
  473. package/dist/types/middleware/request-id/request-id.d.ts +9 -11
  474. package/dist/types/middleware/secure-headers/index.d.ts +5 -6
  475. package/dist/types/middleware/secure-headers/permissions-policy.d.ts +2 -1
  476. package/dist/types/middleware/secure-headers/secure-headers.d.ts +55 -58
  477. package/dist/types/middleware/serve-static/index.d.ts +22 -24
  478. package/dist/types/middleware/serve-static/path.d.ts +2 -0
  479. package/dist/types/middleware/timeout/index.d.ts +5 -7
  480. package/dist/types/middleware/timing/index.d.ts +5 -5
  481. package/dist/types/middleware/timing/timing.d.ts +17 -21
  482. package/dist/types/middleware/trailing-slash/index.d.ts +35 -38
  483. package/dist/types/preset/quick.d.ts +6 -9
  484. package/dist/types/preset/tiny.d.ts +6 -9
  485. package/dist/types/request/constants.d.ts +2 -0
  486. package/dist/types/request.d.ts +288 -287
  487. package/dist/types/router/linear-router/index.d.ts +2 -5
  488. package/dist/types/router/linear-router/router.d.ts +7 -5
  489. package/dist/types/router/pattern-router/index.d.ts +2 -5
  490. package/dist/types/router/pattern-router/router.d.ts +7 -5
  491. package/dist/types/router/reg-exp-router/index.d.ts +3 -6
  492. package/dist/types/router/reg-exp-router/matcher.d.ts +3 -1
  493. package/dist/types/router/reg-exp-router/node.d.ts +6 -4
  494. package/dist/types/router/reg-exp-router/prepared-router.d.ts +11 -11
  495. package/dist/types/router/reg-exp-router/router.d.ts +10 -9
  496. package/dist/types/router/reg-exp-router/trie.d.ts +7 -5
  497. package/dist/types/router/smart-router/index.d.ts +2 -5
  498. package/dist/types/router/smart-router/router.d.ts +11 -9
  499. package/dist/types/router/trie-router/index.d.ts +2 -5
  500. package/dist/types/router/trie-router/node.d.ts +6 -4
  501. package/dist/types/router/trie-router/router.d.ts +7 -5
  502. package/dist/types/router/utils.d.ts +2 -0
  503. package/dist/types/router.d.ts +23 -22
  504. package/dist/types/types.d.ts +146 -506
  505. package/dist/types/utils/accept.d.ts +5 -3
  506. package/dist/types/utils/basic-auth.d.ts +4 -2
  507. package/dist/types/utils/body.d.ts +46 -51
  508. package/dist/types/utils/buffer.d.ts +7 -6
  509. package/dist/types/utils/color.d.ts +2 -0
  510. package/dist/types/utils/compress.d.ts +2 -0
  511. package/dist/types/utils/concurrent.d.ts +6 -4
  512. package/dist/types/utils/constants.d.ts +2 -0
  513. package/dist/types/utils/cookie.d.ts +20 -19
  514. package/dist/types/utils/crypto.d.ts +5 -8
  515. package/dist/types/utils/encode.d.ts +2 -0
  516. package/dist/types/utils/filepath.d.ts +5 -4
  517. package/dist/types/utils/handler.d.ts +2 -0
  518. package/dist/types/utils/headers.d.ts +2 -0
  519. package/dist/types/utils/html.d.ts +11 -10
  520. package/dist/types/utils/http-status.d.ts +2 -0
  521. package/dist/types/utils/ipaddr.d.ts +4 -6
  522. package/dist/types/utils/jwt/index.d.ts +18 -12
  523. package/dist/types/utils/jwt/jwa.d.ts +15 -13
  524. package/dist/types/utils/jwt/jws.d.ts +4 -7
  525. package/dist/types/utils/jwt/jwt.d.ts +26 -29
  526. package/dist/types/utils/jwt/types.d.ts +48 -45
  527. package/dist/types/utils/jwt/utf8.d.ts +2 -0
  528. package/dist/types/utils/mime.d.ts +59 -57
  529. package/dist/types/utils/stream.d.ts +27 -25
  530. package/dist/types/utils/types.d.ts +14 -27
  531. package/dist/types/utils/url.d.ts +2 -1
  532. package/dist/types/validator/index.d.ts +3 -7
  533. package/dist/types/validator/utils.d.ts +6 -9
  534. package/dist/types/validator/validator.d.ts +11 -10
  535. package/dist/types.js +4 -6
  536. package/dist/utils/accept.js +185 -212
  537. package/dist/utils/basic-auth.js +18 -21
  538. package/dist/utils/body.js +87 -92
  539. package/dist/utils/buffer.js +44 -71
  540. package/dist/utils/color.js +33 -21
  541. package/dist/utils/compress.js +11 -5
  542. package/dist/utils/concurrent.js +29 -38
  543. package/dist/utils/constants.js +7 -5
  544. package/dist/utils/cookie.js +114 -163
  545. package/dist/utils/crypto.js +30 -40
  546. package/dist/utils/encode.js +30 -26
  547. package/dist/utils/filepath.js +23 -33
  548. package/dist/utils/handler.js +10 -11
  549. package/dist/utils/headers.js +1 -0
  550. package/dist/utils/html.js +97 -117
  551. package/dist/utils/http-status.js +1 -0
  552. package/dist/utils/ipaddr.js +227 -279
  553. package/dist/utils/jwt/index.js +12 -4
  554. package/dist/utils/jwt/jwa.js +24 -20
  555. package/dist/utils/jwt/jws.js +115 -174
  556. package/dist/utils/jwt/jwt.js +120 -198
  557. package/dist/utils/jwt/types.js +79 -95
  558. package/dist/utils/jwt/utf8.js +9 -7
  559. package/dist/utils/mime.js +74 -79
  560. package/dist/utils/stream.js +86 -88
  561. package/dist/utils/types.js +1 -0
  562. package/dist/utils/url.js +187 -215
  563. package/dist/validator/index.js +1 -4
  564. package/dist/validator/utils.js +1 -0
  565. package/dist/validator/validator.js +61 -83
  566. package/package.json +27 -27
@@ -1,368 +1,342 @@
1
- // src/adapter/aws-lambda/handler.ts
2
- import { pipeline } from "node:stream/promises";
3
1
  import { decodeBase64, encodeBase64 } from "../../utils/encode.js";
2
+ import { pipeline } from "node:stream/promises";
3
+ //#region src/adapter/aws-lambda/handler.ts
4
4
  function sanitizeHeaderValue(value) {
5
- const hasNonAscii = /[^\x00-\x7F]/.test(value);
6
- if (!hasNonAscii) {
7
- return value;
8
- }
9
- return encodeURIComponent(value);
5
+ if (!/[^\x00-\x7F]/.test(value)) return value;
6
+ return encodeURIComponent(value);
10
7
  }
11
- var getRequestContext = (event) => {
12
- return event.requestContext;
8
+ const getRequestContext = (event) => {
9
+ return event.requestContext;
13
10
  };
14
11
  async function* readWebStream(reader) {
15
- let readResult = await reader.read();
16
- while (!readResult.done) {
17
- yield readResult.value;
18
- readResult = await reader.read();
19
- }
12
+ let readResult = await reader.read();
13
+ while (!readResult.done) {
14
+ yield readResult.value;
15
+ readResult = await reader.read();
16
+ }
20
17
  }
21
- var streamToNodeStream = (reader, writer) => pipeline(readWebStream(reader), writer);
22
- var streamHandle = (app) => {
23
- return awslambda.streamifyResponse(
24
- async (event, responseStream, context) => {
25
- const processor = getProcessor(event);
26
- try {
27
- const req = processor.createRequest(event);
28
- const requestContext = getRequestContext(event);
29
- const res = await app.fetch(req, {
30
- event,
31
- requestContext,
32
- context
33
- });
34
- const headers = {};
35
- const cookies = [];
36
- res.headers.forEach((value, name) => {
37
- if (name === "set-cookie") {
38
- cookies.push(value);
39
- } else {
40
- headers[name] = value;
41
- }
42
- });
43
- const httpResponseMetadata = {
44
- statusCode: res.status,
45
- headers,
46
- cookies
47
- };
48
- responseStream = awslambda.HttpResponseStream.from(responseStream, httpResponseMetadata);
49
- if (res.body) {
50
- await streamToNodeStream(res.body.getReader(), responseStream);
51
- } else {
52
- responseStream.write("");
53
- }
54
- } catch (error) {
55
- console.error("Error processing request:", error);
56
- responseStream.write("Internal Server Error");
57
- } finally {
58
- responseStream.end();
59
- }
60
- }
61
- );
18
+ const streamToNodeStream = (reader, writer) => pipeline(readWebStream(reader), writer);
19
+ /**
20
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
21
+ */
22
+ const streamHandle = (app) => {
23
+ return awslambda.streamifyResponse(async (event, responseStream, context) => {
24
+ const processor = getProcessor(event);
25
+ try {
26
+ const req = processor.createRequest(event);
27
+ const requestContext = getRequestContext(event);
28
+ const res = await app.fetch(req, {
29
+ event,
30
+ requestContext,
31
+ context
32
+ });
33
+ const headers = {};
34
+ const cookies = [];
35
+ res.headers.forEach((value, name) => {
36
+ if (name === "set-cookie") cookies.push(value);
37
+ else headers[name] = value;
38
+ });
39
+ const httpResponseMetadata = {
40
+ statusCode: res.status,
41
+ headers,
42
+ cookies
43
+ };
44
+ responseStream = awslambda.HttpResponseStream.from(responseStream, httpResponseMetadata);
45
+ if (res.body) await streamToNodeStream(res.body.getReader(), responseStream);
46
+ else responseStream.write("");
47
+ } catch (error) {
48
+ console.error("Error processing request:", error);
49
+ responseStream.write("Internal Server Error");
50
+ } finally {
51
+ responseStream.end();
52
+ }
53
+ });
62
54
  };
63
- var handle = (app, { isContentTypeBinary } = { isContentTypeBinary: void 0 }) => {
64
- return async (event, lambdaContext) => {
65
- const processor = getProcessor(event);
66
- let req, requestContext;
67
- try {
68
- req = processor.createRequest(event);
69
- requestContext = getRequestContext(event);
70
- } catch (error) {
71
- console.error("Error processing request:", error);
72
- const errorResponse = error instanceof TypeError ? new Response("Invalid request", { status: 400 }) : new Response("Internal Server Error", { status: 500 });
73
- return processor.createResult(event, errorResponse, { isContentTypeBinary });
74
- }
75
- const res = await app.fetch(req, {
76
- event,
77
- requestContext,
78
- lambdaContext
79
- });
80
- return processor.createResult(event, res, { isContentTypeBinary });
81
- };
55
+ /**
56
+ * Converts a Hono application to an AWS Lambda handler.
57
+ *
58
+ * Accepts events from API Gateway (v1 and v2), Application Load Balancer (ALB),
59
+ * and Lambda Function URLs.
60
+ *
61
+ * @param app - The Hono application instance
62
+ * @param options - Optional configuration
63
+ * @param options.isContentTypeBinary - A function to determine if the content type is binary.
64
+ * If not provided, the default function will be used.
65
+ * @returns Lambda handler function
66
+ *
67
+ * @example
68
+ * ```js
69
+ * import { Hono } from 'hono'
70
+ * import { handle } from 'hono/aws-lambda'
71
+ *
72
+ * const app = new Hono()
73
+ *
74
+ * app.get('/', (c) => c.text('Hello from Lambda'))
75
+ * app.get('/json', (c) => c.json({ message: 'Hello JSON' }))
76
+ *
77
+ * export const handler = handle(app)
78
+ * ```
79
+ *
80
+ * @example
81
+ * ```js
82
+ * // With custom binary content type detection
83
+ * import { handle, defaultIsContentTypeBinary } from 'hono/aws-lambda'
84
+ * export const handler = handle(app, {
85
+ * isContentTypeBinary: (contentType) => {
86
+ * if (defaultIsContentTypeBinary(contentType)) {
87
+ * // default logic same as prior to v4.8.4
88
+ * return true
89
+ * }
90
+ * return contentType.startsWith('image/') || contentType === 'application/pdf'
91
+ * }
92
+ * })
93
+ * ```
94
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
95
+ */
96
+ const handle = (app, { isContentTypeBinary } = { isContentTypeBinary: void 0 }) => {
97
+ return async (event, lambdaContext) => {
98
+ const processor = getProcessor(event);
99
+ let req, requestContext;
100
+ try {
101
+ req = processor.createRequest(event);
102
+ requestContext = getRequestContext(event);
103
+ } catch (error) {
104
+ console.error("Error processing request:", error);
105
+ const errorResponse = error instanceof TypeError ? new Response("Invalid request", { status: 400 }) : new Response("Internal Server Error", { status: 500 });
106
+ return processor.createResult(event, errorResponse, { isContentTypeBinary });
107
+ }
108
+ const res = await app.fetch(req, {
109
+ event,
110
+ requestContext,
111
+ lambdaContext
112
+ });
113
+ return processor.createResult(event, res, { isContentTypeBinary });
114
+ };
82
115
  };
116
+ /**
117
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
118
+ */
83
119
  var EventProcessor = class {
84
- getHeaderValue(headers, key) {
85
- const value = headers ? Array.isArray(headers[key]) ? headers[key][0] : headers[key] : void 0;
86
- return value;
87
- }
88
- getDomainName(event) {
89
- if (event.requestContext && "domainName" in event.requestContext) {
90
- return event.requestContext.domainName;
91
- }
92
- const hostFromHeaders = this.getHeaderValue(event.headers, "host");
93
- if (hostFromHeaders) {
94
- return hostFromHeaders;
95
- }
96
- const multiValueHeaders = "multiValueHeaders" in event ? event.multiValueHeaders : {};
97
- const hostFromMultiValueHeaders = this.getHeaderValue(multiValueHeaders, "host");
98
- return hostFromMultiValueHeaders;
99
- }
100
- createRequest(event) {
101
- const queryString = this.getQueryString(event);
102
- const domainName = this.getDomainName(event);
103
- const path = this.getPath(event);
104
- const urlPath = `https://${domainName}${path}`;
105
- const url = queryString ? `${urlPath}?${queryString}` : urlPath;
106
- const headers = this.getHeaders(event);
107
- const method = this.getMethod(event);
108
- const requestInit = {
109
- headers,
110
- method
111
- };
112
- if (event.body) {
113
- const body = event.isBase64Encoded ? decodeBase64(event.body) : new TextEncoder().encode(event.body);
114
- requestInit.body = body;
115
- headers.set("content-length", body.length.toString());
116
- }
117
- return new Request(url, requestInit);
118
- }
119
- async createResult(event, res, options) {
120
- const contentType = res.headers.get("content-type");
121
- const isContentTypeBinary = options.isContentTypeBinary ?? defaultIsContentTypeBinary;
122
- let isBase64Encoded = contentType && isContentTypeBinary(contentType) ? true : false;
123
- if (!isBase64Encoded) {
124
- const contentEncoding = res.headers.get("content-encoding");
125
- isBase64Encoded = isContentEncodingBinary(contentEncoding);
126
- }
127
- const body = isBase64Encoded ? encodeBase64(await res.arrayBuffer()) : await res.text();
128
- const result = {
129
- body,
130
- statusCode: res.status,
131
- isBase64Encoded,
132
- ..."multiValueHeaders" in event && event.multiValueHeaders ? {
133
- multiValueHeaders: {}
134
- } : {
135
- headers: {}
136
- }
137
- };
138
- this.setCookies(event, res, result);
139
- if (result.multiValueHeaders) {
140
- res.headers.forEach((value, key) => {
141
- result.multiValueHeaders[key] = [value];
142
- });
143
- } else {
144
- res.headers.forEach((value, key) => {
145
- result.headers[key] = value;
146
- });
147
- }
148
- return result;
149
- }
150
- setCookies(_event, res, result) {
151
- if (res.headers.has("set-cookie")) {
152
- const cookies = res.headers.getSetCookie ? res.headers.getSetCookie() : Array.from(res.headers.entries()).filter(([k]) => k === "set-cookie").map(([, v]) => v);
153
- if (Array.isArray(cookies)) {
154
- this.setCookiesToResult(result, cookies);
155
- res.headers.delete("set-cookie");
156
- }
157
- }
158
- }
120
+ getHeaderValue(headers, key) {
121
+ return headers ? Array.isArray(headers[key]) ? headers[key][0] : headers[key] : void 0;
122
+ }
123
+ getDomainName(event) {
124
+ if (event.requestContext && "domainName" in event.requestContext) return event.requestContext.domainName;
125
+ const hostFromHeaders = this.getHeaderValue(event.headers, "host");
126
+ if (hostFromHeaders) return hostFromHeaders;
127
+ const multiValueHeaders = "multiValueHeaders" in event ? event.multiValueHeaders : {};
128
+ return this.getHeaderValue(multiValueHeaders, "host");
129
+ }
130
+ createRequest(event) {
131
+ const queryString = this.getQueryString(event);
132
+ const urlPath = `https://${this.getDomainName(event)}${this.getPath(event)}`;
133
+ const url = queryString ? `${urlPath}?${queryString}` : urlPath;
134
+ const headers = this.getHeaders(event);
135
+ const requestInit = {
136
+ headers,
137
+ method: this.getMethod(event)
138
+ };
139
+ if (event.body) {
140
+ const body = event.isBase64Encoded ? decodeBase64(event.body) : new TextEncoder().encode(event.body);
141
+ requestInit.body = body;
142
+ headers.set("content-length", body.length.toString());
143
+ }
144
+ return new Request(url, requestInit);
145
+ }
146
+ async createResult(event, res, options) {
147
+ const contentType = res.headers.get("content-type");
148
+ const isContentTypeBinary = options.isContentTypeBinary ?? defaultIsContentTypeBinary;
149
+ let isBase64Encoded = contentType && isContentTypeBinary(contentType) ? true : false;
150
+ if (!isBase64Encoded) {
151
+ const contentEncoding = res.headers.get("content-encoding");
152
+ isBase64Encoded = isContentEncodingBinary(contentEncoding);
153
+ }
154
+ const result = {
155
+ body: isBase64Encoded ? encodeBase64(await res.arrayBuffer()) : await res.text(),
156
+ statusCode: res.status,
157
+ isBase64Encoded,
158
+ ..."multiValueHeaders" in event && event.multiValueHeaders ? { multiValueHeaders: {} } : { headers: {} }
159
+ };
160
+ this.setCookies(event, res, result);
161
+ if (result.multiValueHeaders) res.headers.forEach((value, key) => {
162
+ result.multiValueHeaders[key] = [value];
163
+ });
164
+ else res.headers.forEach((value, key) => {
165
+ result.headers[key] = value;
166
+ });
167
+ return result;
168
+ }
169
+ setCookies(_event, res, result) {
170
+ if (res.headers.has("set-cookie")) {
171
+ const cookies = res.headers.getSetCookie ? res.headers.getSetCookie() : Array.from(res.headers.entries()).filter(([k]) => k === "set-cookie").map(([, v]) => v);
172
+ if (Array.isArray(cookies)) {
173
+ this.setCookiesToResult(result, cookies);
174
+ res.headers.delete("set-cookie");
175
+ }
176
+ }
177
+ }
159
178
  };
179
+ /**
180
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
181
+ */
160
182
  var EventV2Processor = class extends EventProcessor {
161
- getPath(event) {
162
- return event.rawPath;
163
- }
164
- getMethod(event) {
165
- return event.requestContext.http.method;
166
- }
167
- getQueryString(event) {
168
- return event.rawQueryString;
169
- }
170
- getCookies(event, headers) {
171
- if (Array.isArray(event.cookies)) {
172
- headers.set("Cookie", event.cookies.join("; "));
173
- }
174
- }
175
- setCookiesToResult(result, cookies) {
176
- result.cookies = cookies;
177
- }
178
- getHeaders(event) {
179
- const headers = new Headers();
180
- this.getCookies(event, headers);
181
- if (event.headers) {
182
- for (const [k, v] of Object.entries(event.headers)) {
183
- if (v) {
184
- headers.set(k, v);
185
- }
186
- }
187
- }
188
- return headers;
189
- }
183
+ getPath(event) {
184
+ return event.rawPath;
185
+ }
186
+ getMethod(event) {
187
+ return event.requestContext.http.method;
188
+ }
189
+ getQueryString(event) {
190
+ return event.rawQueryString;
191
+ }
192
+ getCookies(event, headers) {
193
+ if (Array.isArray(event.cookies)) headers.set("Cookie", event.cookies.join("; "));
194
+ }
195
+ setCookiesToResult(result, cookies) {
196
+ result.cookies = cookies;
197
+ }
198
+ getHeaders(event) {
199
+ const headers = new Headers();
200
+ this.getCookies(event, headers);
201
+ if (event.headers) {
202
+ for (const [k, v] of Object.entries(event.headers)) if (v) headers.set(k, v);
203
+ }
204
+ return headers;
205
+ }
190
206
  };
191
- var v2Processor = new EventV2Processor();
207
+ const v2Processor = new EventV2Processor();
208
+ /**
209
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
210
+ */
192
211
  var EventV1Processor = class extends EventProcessor {
193
- getPath(event) {
194
- return event.path;
195
- }
196
- getMethod(event) {
197
- return event.httpMethod;
198
- }
199
- getQueryString(event) {
200
- if (event.multiValueQueryStringParameters) {
201
- return Object.entries(event.multiValueQueryStringParameters || {}).filter(([, value]) => value).map(
202
- ([key, values]) => values.map((value) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join("&")
203
- ).join("&");
204
- } else {
205
- return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value !== void 0).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value || "")}`).join("&");
206
- }
207
- }
208
- getCookies(_event, _headers) {
209
- }
210
- getHeaders(event) {
211
- const headers = new Headers();
212
- this.getCookies(event, headers);
213
- if (event.multiValueHeaders) {
214
- for (const [k, values] of Object.entries(event.multiValueHeaders)) {
215
- if (values) {
216
- values.forEach((v) => headers.append(k, sanitizeHeaderValue(v)));
217
- }
218
- }
219
- }
220
- if (event.headers) {
221
- for (const [k, v] of Object.entries(event.headers)) {
222
- if (v && !headers.has(k)) {
223
- headers.set(k, sanitizeHeaderValue(v));
224
- }
225
- }
226
- }
227
- return headers;
228
- }
229
- setCookiesToResult(result, cookies) {
230
- result.multiValueHeaders = {
231
- "set-cookie": cookies
232
- };
233
- }
212
+ getPath(event) {
213
+ return event.path;
214
+ }
215
+ getMethod(event) {
216
+ return event.httpMethod;
217
+ }
218
+ getQueryString(event) {
219
+ if (event.multiValueQueryStringParameters) return Object.entries(event.multiValueQueryStringParameters || {}).filter(([, value]) => value).map(([key, values]) => values.map((value) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join("&")).join("&");
220
+ else return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value !== void 0).map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value || "")}`).join("&");
221
+ }
222
+ getCookies(_event, _headers) {}
223
+ getHeaders(event) {
224
+ const headers = new Headers();
225
+ this.getCookies(event, headers);
226
+ if (event.multiValueHeaders) {
227
+ for (const [k, values] of Object.entries(event.multiValueHeaders)) if (values) values.forEach((v) => headers.append(k, sanitizeHeaderValue(v)));
228
+ }
229
+ if (event.headers) {
230
+ for (const [k, v] of Object.entries(event.headers)) if (v && !headers.has(k)) headers.set(k, sanitizeHeaderValue(v));
231
+ }
232
+ return headers;
233
+ }
234
+ setCookiesToResult(result, cookies) {
235
+ result.multiValueHeaders = { "set-cookie": cookies };
236
+ }
234
237
  };
235
- var v1Processor = new EventV1Processor();
238
+ const v1Processor = new EventV1Processor();
239
+ /**
240
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
241
+ */
236
242
  var ALBProcessor = class extends EventProcessor {
237
- getHeaders(event) {
238
- const headers = new Headers();
239
- if (event.multiValueHeaders) {
240
- for (const [key, values] of Object.entries(event.multiValueHeaders)) {
241
- if (values && Array.isArray(values)) {
242
- const sanitizedValue = sanitizeHeaderValue(values.join("; "));
243
- headers.set(key, sanitizedValue);
244
- }
245
- }
246
- } else {
247
- for (const [key, value] of Object.entries(event.headers ?? {})) {
248
- if (value) {
249
- headers.set(key, sanitizeHeaderValue(value));
250
- }
251
- }
252
- }
253
- return headers;
254
- }
255
- getPath(event) {
256
- return event.path;
257
- }
258
- getMethod(event) {
259
- return event.httpMethod;
260
- }
261
- getQueryString(event) {
262
- if (event.multiValueQueryStringParameters) {
263
- return Object.entries(event.multiValueQueryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value.join(`&${key}=`)}`).join("&");
264
- } else {
265
- return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value !== void 0).map(([key, value]) => `${key}=${value}`).join("&");
266
- }
267
- }
268
- getCookies(event, headers) {
269
- let cookie;
270
- if (event.multiValueHeaders) {
271
- cookie = event.multiValueHeaders["cookie"]?.join("; ");
272
- } else {
273
- cookie = event.headers ? event.headers["cookie"] : void 0;
274
- }
275
- if (cookie) {
276
- headers.append("Cookie", cookie);
277
- }
278
- }
279
- setCookiesToResult(result, cookies) {
280
- if (result.multiValueHeaders) {
281
- result.multiValueHeaders["set-cookie"] = cookies;
282
- } else {
283
- result.headers["set-cookie"] = cookies[0];
284
- }
285
- }
243
+ getHeaders(event) {
244
+ const headers = new Headers();
245
+ if (event.multiValueHeaders) {
246
+ for (const [key, values] of Object.entries(event.multiValueHeaders)) if (values && Array.isArray(values)) {
247
+ const sanitizedValue = sanitizeHeaderValue(values.join("; "));
248
+ headers.set(key, sanitizedValue);
249
+ }
250
+ } else for (const [key, value] of Object.entries(event.headers ?? {})) if (value) headers.set(key, sanitizeHeaderValue(value));
251
+ return headers;
252
+ }
253
+ getPath(event) {
254
+ return event.path;
255
+ }
256
+ getMethod(event) {
257
+ return event.httpMethod;
258
+ }
259
+ getQueryString(event) {
260
+ if (event.multiValueQueryStringParameters) return Object.entries(event.multiValueQueryStringParameters || {}).filter(([, value]) => value).map(([key, value]) => `${key}=${value.join(`&${key}=`)}`).join("&");
261
+ else return Object.entries(event.queryStringParameters || {}).filter(([, value]) => value !== void 0).map(([key, value]) => `${key}=${value}`).join("&");
262
+ }
263
+ getCookies(event, headers) {
264
+ let cookie;
265
+ if (event.multiValueHeaders) cookie = event.multiValueHeaders["cookie"]?.join("; ");
266
+ else cookie = event.headers ? event.headers["cookie"] : void 0;
267
+ if (cookie) headers.append("Cookie", cookie);
268
+ }
269
+ setCookiesToResult(result, cookies) {
270
+ if (result.multiValueHeaders) result.multiValueHeaders["set-cookie"] = cookies;
271
+ else result.headers["set-cookie"] = cookies[0];
272
+ }
286
273
  };
287
- var albProcessor = new ALBProcessor();
274
+ const albProcessor = new ALBProcessor();
275
+ /**
276
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
277
+ */
288
278
  var LatticeV2Processor = class extends EventProcessor {
289
- getPath(event) {
290
- return event.path;
291
- }
292
- getMethod(event) {
293
- return event.method;
294
- }
295
- getQueryString() {
296
- return "";
297
- }
298
- getHeaders(event) {
299
- const headers = new Headers();
300
- if (event.headers) {
301
- for (const [k, values] of Object.entries(event.headers)) {
302
- if (values) {
303
- values.forEach((v) => headers.append(k, sanitizeHeaderValue(v)));
304
- }
305
- }
306
- }
307
- return headers;
308
- }
309
- getCookies() {
310
- }
311
- setCookiesToResult(result, cookies) {
312
- result.headers = {
313
- ...result.headers,
314
- "set-cookie": cookies
315
- };
316
- }
317
- };
318
- var latticeV2Processor = new LatticeV2Processor();
319
- var getProcessor = (event) => {
320
- if (isProxyEventALB(event)) {
321
- return albProcessor;
322
- }
323
- if (isProxyEventV2(event)) {
324
- return v2Processor;
325
- }
326
- if (isLatticeEventV2(event)) {
327
- return latticeV2Processor;
328
- }
329
- return v1Processor;
279
+ getPath(event) {
280
+ return event.path;
281
+ }
282
+ getMethod(event) {
283
+ return event.method;
284
+ }
285
+ getQueryString() {
286
+ return "";
287
+ }
288
+ getHeaders(event) {
289
+ const headers = new Headers();
290
+ if (event.headers) {
291
+ for (const [k, values] of Object.entries(event.headers)) if (values) values.forEach((v) => headers.append(k, sanitizeHeaderValue(v)));
292
+ }
293
+ return headers;
294
+ }
295
+ getCookies() {}
296
+ setCookiesToResult(result, cookies) {
297
+ result.headers = {
298
+ ...result.headers,
299
+ "set-cookie": cookies
300
+ };
301
+ }
330
302
  };
331
- var isProxyEventALB = (event) => {
332
- if (event.requestContext) {
333
- return Object.hasOwn(event.requestContext, "elb");
334
- }
335
- return false;
303
+ const latticeV2Processor = new LatticeV2Processor();
304
+ /**
305
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
306
+ */
307
+ const getProcessor = (event) => {
308
+ if (isProxyEventALB(event)) return albProcessor;
309
+ if (isProxyEventV2(event)) return v2Processor;
310
+ if (isLatticeEventV2(event)) return latticeV2Processor;
311
+ return v1Processor;
336
312
  };
337
- var isProxyEventV2 = (event) => {
338
- return Object.hasOwn(event, "rawPath") && Object.hasOwn(event.requestContext ?? {}, "http");
313
+ const isProxyEventALB = (event) => {
314
+ if (event.requestContext) return Object.hasOwn(event.requestContext, "elb");
315
+ return false;
339
316
  };
340
- var isLatticeEventV2 = (event) => {
341
- if (event.requestContext) {
342
- return Object.hasOwn(event.requestContext, "serviceArn");
343
- }
344
- return false;
317
+ const isProxyEventV2 = (event) => {
318
+ return Object.hasOwn(event, "rawPath") && Object.hasOwn(event.requestContext ?? {}, "http");
345
319
  };
346
- var defaultIsContentTypeBinary = (contentType) => {
347
- if (/^application\/vnd\.(?:apple\.installer|mozilla\.xul)\+xml\s*(?:;|$)/i.test(contentType)) {
348
- return true;
349
- }
350
- return !/^text\/(?:plain|html|css|javascript|csv)|(?:\/|\+)(?:json|xml)\s*(?:;|$)/i.test(
351
- contentType
352
- );
320
+ const isLatticeEventV2 = (event) => {
321
+ if (event.requestContext) return Object.hasOwn(event.requestContext, "serviceArn");
322
+ return false;
353
323
  };
354
- var isContentEncodingBinary = (contentEncoding) => {
355
- return !!contentEncoding && !/^identity$/i.test(contentEncoding);
324
+ /**
325
+ * Check if the given content type is binary.
326
+ * This is a default function and may be overwritten by the user via `isContentTypeBinary` option in handler().
327
+ * @param contentType The content type to check.
328
+ * @returns True if the content type is binary, false otherwise.
329
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
330
+ */
331
+ const defaultIsContentTypeBinary = (contentType) => {
332
+ if (/^application\/vnd\.(?:apple\.installer|mozilla\.xul)\+xml\s*(?:;|$)/i.test(contentType)) return true;
333
+ return !/^text\/(?:plain|html|css|javascript|csv)|(?:\/|\+)(?:json|xml)\s*(?:;|$)/i.test(contentType);
356
334
  };
357
- export {
358
- ALBProcessor,
359
- EventProcessor,
360
- EventV1Processor,
361
- EventV2Processor,
362
- LatticeV2Processor,
363
- defaultIsContentTypeBinary,
364
- getProcessor,
365
- handle,
366
- isContentEncodingBinary,
367
- streamHandle
335
+ /**
336
+ * @deprecated `hono/aws-lambda` will be removed in v5. Install `@hono/aws-lambda` and import from there instead.
337
+ */
338
+ const isContentEncodingBinary = (contentEncoding) => {
339
+ return !!contentEncoding && !/^identity$/i.test(contentEncoding);
368
340
  };
341
+ //#endregion
342
+ export { ALBProcessor, EventProcessor, EventV1Processor, EventV2Processor, LatticeV2Processor, defaultIsContentTypeBinary, getProcessor, handle, isContentEncodingBinary, streamHandle };