@depup/hono 4.12.8-depup.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 (564) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/changes.json +5 -0
  4. package/dist/adapter/aws-lambda/conninfo.js +24 -0
  5. package/dist/adapter/aws-lambda/handler.js +366 -0
  6. package/dist/adapter/aws-lambda/index.js +9 -0
  7. package/dist/adapter/aws-lambda/types.js +0 -0
  8. package/dist/adapter/bun/conninfo.js +27 -0
  9. package/dist/adapter/bun/index.js +16 -0
  10. package/dist/adapter/bun/serve-static.js +30 -0
  11. package/dist/adapter/bun/server.js +5 -0
  12. package/dist/adapter/bun/ssg.js +17 -0
  13. package/dist/adapter/bun/websocket.js +71 -0
  14. package/dist/adapter/cloudflare-pages/conninfo.js +9 -0
  15. package/dist/adapter/cloudflare-pages/handler.js +67 -0
  16. package/dist/adapter/cloudflare-pages/index.js +9 -0
  17. package/dist/adapter/cloudflare-workers/conninfo.js +9 -0
  18. package/dist/adapter/cloudflare-workers/index.js +9 -0
  19. package/dist/adapter/cloudflare-workers/serve-static-module.js +8 -0
  20. package/dist/adapter/cloudflare-workers/serve-static.js +22 -0
  21. package/dist/adapter/cloudflare-workers/utils.js +35 -0
  22. package/dist/adapter/cloudflare-workers/websocket.js +41 -0
  23. package/dist/adapter/deno/conninfo.js +14 -0
  24. package/dist/adapter/deno/deno.d.js +0 -0
  25. package/dist/adapter/deno/index.js +12 -0
  26. package/dist/adapter/deno/serve-static.js +40 -0
  27. package/dist/adapter/deno/ssg.js +18 -0
  28. package/dist/adapter/deno/websocket.js +28 -0
  29. package/dist/adapter/lambda-edge/conninfo.js +9 -0
  30. package/dist/adapter/lambda-edge/handler.js +80 -0
  31. package/dist/adapter/lambda-edge/index.js +7 -0
  32. package/dist/adapter/netlify/conninfo.js +9 -0
  33. package/dist/adapter/netlify/handler.js +9 -0
  34. package/dist/adapter/netlify/index.js +2 -0
  35. package/dist/adapter/netlify/mod.js +7 -0
  36. package/dist/adapter/service-worker/handler.js +20 -0
  37. package/dist/adapter/service-worker/index.js +11 -0
  38. package/dist/adapter/service-worker/types.js +0 -0
  39. package/dist/adapter/vercel/conninfo.js +10 -0
  40. package/dist/adapter/vercel/handler.js +7 -0
  41. package/dist/adapter/vercel/index.js +7 -0
  42. package/dist/cjs/adapter/aws-lambda/conninfo.js +46 -0
  43. package/dist/cjs/adapter/aws-lambda/handler.js +397 -0
  44. package/dist/cjs/adapter/aws-lambda/index.js +34 -0
  45. package/dist/cjs/adapter/aws-lambda/types.js +15 -0
  46. package/dist/cjs/adapter/bun/conninfo.js +49 -0
  47. package/dist/cjs/adapter/bun/index.js +45 -0
  48. package/dist/cjs/adapter/bun/serve-static.js +52 -0
  49. package/dist/cjs/adapter/bun/server.js +27 -0
  50. package/dist/cjs/adapter/bun/ssg.js +40 -0
  51. package/dist/cjs/adapter/bun/websocket.js +96 -0
  52. package/dist/cjs/adapter/cloudflare-pages/conninfo.js +31 -0
  53. package/dist/cjs/adapter/cloudflare-pages/handler.js +91 -0
  54. package/dist/cjs/adapter/cloudflare-pages/index.js +34 -0
  55. package/dist/cjs/adapter/cloudflare-workers/conninfo.js +31 -0
  56. package/dist/cjs/adapter/cloudflare-workers/index.js +33 -0
  57. package/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +30 -0
  58. package/dist/cjs/adapter/cloudflare-workers/serve-static.js +44 -0
  59. package/dist/cjs/adapter/cloudflare-workers/utils.js +57 -0
  60. package/dist/cjs/adapter/cloudflare-workers/websocket.js +63 -0
  61. package/dist/cjs/adapter/deno/conninfo.js +36 -0
  62. package/dist/cjs/adapter/deno/deno.d.js +0 -0
  63. package/dist/cjs/adapter/deno/index.js +38 -0
  64. package/dist/cjs/adapter/deno/serve-static.js +62 -0
  65. package/dist/cjs/adapter/deno/ssg.js +41 -0
  66. package/dist/cjs/adapter/deno/websocket.js +50 -0
  67. package/dist/cjs/adapter/lambda-edge/conninfo.js +31 -0
  68. package/dist/cjs/adapter/lambda-edge/handler.js +114 -0
  69. package/dist/cjs/adapter/lambda-edge/index.js +30 -0
  70. package/dist/cjs/adapter/netlify/conninfo.js +31 -0
  71. package/dist/cjs/adapter/netlify/handler.js +31 -0
  72. package/dist/cjs/adapter/netlify/index.js +21 -0
  73. package/dist/cjs/adapter/netlify/mod.js +30 -0
  74. package/dist/cjs/adapter/service-worker/handler.js +42 -0
  75. package/dist/cjs/adapter/service-worker/index.js +34 -0
  76. package/dist/cjs/adapter/service-worker/types.js +15 -0
  77. package/dist/cjs/adapter/vercel/conninfo.js +32 -0
  78. package/dist/cjs/adapter/vercel/handler.js +29 -0
  79. package/dist/cjs/adapter/vercel/index.js +30 -0
  80. package/dist/cjs/client/client.js +195 -0
  81. package/dist/cjs/client/fetch-result-please.js +85 -0
  82. package/dist/cjs/client/index.js +32 -0
  83. package/dist/cjs/client/types.js +15 -0
  84. package/dist/cjs/client/utils.js +105 -0
  85. package/dist/cjs/compose.js +68 -0
  86. package/dist/cjs/context.js +435 -0
  87. package/dist/cjs/helper/accepts/accepts.js +43 -0
  88. package/dist/cjs/helper/accepts/index.js +27 -0
  89. package/dist/cjs/helper/adapter/index.js +81 -0
  90. package/dist/cjs/helper/conninfo/index.js +15 -0
  91. package/dist/cjs/helper/conninfo/types.js +15 -0
  92. package/dist/cjs/helper/cookie/index.js +130 -0
  93. package/dist/cjs/helper/css/common.js +222 -0
  94. package/dist/cjs/helper/css/index.js +142 -0
  95. package/dist/cjs/helper/dev/index.js +79 -0
  96. package/dist/cjs/helper/factory/index.js +54 -0
  97. package/dist/cjs/helper/html/index.js +64 -0
  98. package/dist/cjs/helper/proxy/index.js +111 -0
  99. package/dist/cjs/helper/route/index.js +71 -0
  100. package/dist/cjs/helper/ssg/index.js +43 -0
  101. package/dist/cjs/helper/ssg/middleware.js +73 -0
  102. package/dist/cjs/helper/ssg/plugins.js +70 -0
  103. package/dist/cjs/helper/ssg/ssg.js +316 -0
  104. package/dist/cjs/helper/ssg/utils.js +84 -0
  105. package/dist/cjs/helper/streaming/index.js +35 -0
  106. package/dist/cjs/helper/streaming/sse.js +90 -0
  107. package/dist/cjs/helper/streaming/stream.js +56 -0
  108. package/dist/cjs/helper/streaming/text.js +34 -0
  109. package/dist/cjs/helper/streaming/utils.js +35 -0
  110. package/dist/cjs/helper/testing/index.js +33 -0
  111. package/dist/cjs/helper/websocket/index.js +81 -0
  112. package/dist/cjs/hono-base.js +400 -0
  113. package/dist/cjs/hono.js +43 -0
  114. package/dist/cjs/http-exception.js +57 -0
  115. package/dist/cjs/index.js +27 -0
  116. package/dist/cjs/jsx/base.js +374 -0
  117. package/dist/cjs/jsx/children.js +44 -0
  118. package/dist/cjs/jsx/components.js +201 -0
  119. package/dist/cjs/jsx/constants.js +42 -0
  120. package/dist/cjs/jsx/context.js +62 -0
  121. package/dist/cjs/jsx/dom/client.js +76 -0
  122. package/dist/cjs/jsx/dom/components.js +55 -0
  123. package/dist/cjs/jsx/dom/context.js +71 -0
  124. package/dist/cjs/jsx/dom/css.js +161 -0
  125. package/dist/cjs/jsx/dom/hooks/index.js +74 -0
  126. package/dist/cjs/jsx/dom/index.js +181 -0
  127. package/dist/cjs/jsx/dom/intrinsic-element/components.js +399 -0
  128. package/dist/cjs/jsx/dom/jsx-dev-runtime.js +52 -0
  129. package/dist/cjs/jsx/dom/jsx-runtime.js +32 -0
  130. package/dist/cjs/jsx/dom/render.js +619 -0
  131. package/dist/cjs/jsx/dom/server.js +67 -0
  132. package/dist/cjs/jsx/dom/utils.js +32 -0
  133. package/dist/cjs/jsx/hooks/index.js +370 -0
  134. package/dist/cjs/jsx/index.js +138 -0
  135. package/dist/cjs/jsx/intrinsic-element/common.js +50 -0
  136. package/dist/cjs/jsx/intrinsic-element/components.js +189 -0
  137. package/dist/cjs/jsx/intrinsic-elements.js +15 -0
  138. package/dist/cjs/jsx/jsx-dev-runtime.js +41 -0
  139. package/dist/cjs/jsx/jsx-runtime.js +68 -0
  140. package/dist/cjs/jsx/streaming.js +177 -0
  141. package/dist/cjs/jsx/types.js +15 -0
  142. package/dist/cjs/jsx/utils.js +50 -0
  143. package/dist/cjs/middleware/basic-auth/index.js +88 -0
  144. package/dist/cjs/middleware/bearer-auth/index.js +114 -0
  145. package/dist/cjs/middleware/body-limit/index.js +84 -0
  146. package/dist/cjs/middleware/cache/index.js +111 -0
  147. package/dist/cjs/middleware/combine/index.js +101 -0
  148. package/dist/cjs/middleware/compress/index.js +61 -0
  149. package/dist/cjs/middleware/context-storage/index.js +47 -0
  150. package/dist/cjs/middleware/cors/index.js +109 -0
  151. package/dist/cjs/middleware/csrf/index.js +77 -0
  152. package/dist/cjs/middleware/etag/digest.js +55 -0
  153. package/dist/cjs/middleware/etag/index.js +95 -0
  154. package/dist/cjs/middleware/ip-restriction/index.js +124 -0
  155. package/dist/cjs/middleware/jsx-renderer/index.js +82 -0
  156. package/dist/cjs/middleware/jwk/index.js +27 -0
  157. package/dist/cjs/middleware/jwk/jwk.js +134 -0
  158. package/dist/cjs/middleware/jwt/index.js +38 -0
  159. package/dist/cjs/middleware/jwt/jwt.js +140 -0
  160. package/dist/cjs/middleware/language/index.js +35 -0
  161. package/dist/cjs/middleware/language/language.js +221 -0
  162. package/dist/cjs/middleware/logger/index.js +72 -0
  163. package/dist/cjs/middleware/method-override/index.js +104 -0
  164. package/dist/cjs/middleware/powered-by/index.js +32 -0
  165. package/dist/cjs/middleware/pretty-json/index.js +37 -0
  166. package/dist/cjs/middleware/request-id/index.js +27 -0
  167. package/dist/cjs/middleware/request-id/request-id.js +43 -0
  168. package/dist/cjs/middleware/secure-headers/index.js +29 -0
  169. package/dist/cjs/middleware/secure-headers/permissions-policy.js +15 -0
  170. package/dist/cjs/middleware/secure-headers/secure-headers.js +189 -0
  171. package/dist/cjs/middleware/serve-static/index.js +99 -0
  172. package/dist/cjs/middleware/serve-static/path.js +40 -0
  173. package/dist/cjs/middleware/timeout/index.js +47 -0
  174. package/dist/cjs/middleware/timing/index.js +35 -0
  175. package/dist/cjs/middleware/timing/timing.js +128 -0
  176. package/dist/cjs/middleware/trailing-slash/index.js +62 -0
  177. package/dist/cjs/package.json +3 -0
  178. package/dist/cjs/preset/quick.js +38 -0
  179. package/dist/cjs/preset/tiny.js +34 -0
  180. package/dist/cjs/request/constants.js +27 -0
  181. package/dist/cjs/request.js +324 -0
  182. package/dist/cjs/router/linear-router/index.js +27 -0
  183. package/dist/cjs/router/linear-router/router.js +140 -0
  184. package/dist/cjs/router/pattern-router/index.js +27 -0
  185. package/dist/cjs/router/pattern-router/router.js +70 -0
  186. package/dist/cjs/router/reg-exp-router/index.js +34 -0
  187. package/dist/cjs/router/reg-exp-router/matcher.js +48 -0
  188. package/dist/cjs/router/reg-exp-router/node.js +134 -0
  189. package/dist/cjs/router/reg-exp-router/prepared-router.js +166 -0
  190. package/dist/cjs/router/reg-exp-router/router.js +208 -0
  191. package/dist/cjs/router/reg-exp-router/trie.js +81 -0
  192. package/dist/cjs/router/smart-router/index.js +27 -0
  193. package/dist/cjs/router/smart-router/router.js +80 -0
  194. package/dist/cjs/router/trie-router/index.js +27 -0
  195. package/dist/cjs/router/trie-router/node.js +201 -0
  196. package/dist/cjs/router/trie-router/router.js +48 -0
  197. package/dist/cjs/router.js +40 -0
  198. package/dist/cjs/types.js +28 -0
  199. package/dist/cjs/utils/accept.js +245 -0
  200. package/dist/cjs/utils/basic-auth.js +45 -0
  201. package/dist/cjs/utils/body.js +97 -0
  202. package/dist/cjs/utils/buffer.js +102 -0
  203. package/dist/cjs/utils/color.js +48 -0
  204. package/dist/cjs/utils/compress.js +27 -0
  205. package/dist/cjs/utils/concurrent.js +61 -0
  206. package/dist/cjs/utils/constants.js +27 -0
  207. package/dist/cjs/utils/cookie.js +177 -0
  208. package/dist/cjs/utils/crypto.js +69 -0
  209. package/dist/cjs/utils/encode.js +54 -0
  210. package/dist/cjs/utils/filepath.js +58 -0
  211. package/dist/cjs/utils/handler.js +36 -0
  212. package/dist/cjs/utils/headers.js +15 -0
  213. package/dist/cjs/utils/html.js +150 -0
  214. package/dist/cjs/utils/http-status.js +15 -0
  215. package/dist/cjs/utils/ipaddr.js +129 -0
  216. package/dist/cjs/utils/jwt/index.js +28 -0
  217. package/dist/cjs/utils/jwt/jwa.js +42 -0
  218. package/dist/cjs/utils/jwt/jws.js +215 -0
  219. package/dist/cjs/utils/jwt/jwt.js +213 -0
  220. package/dist/cjs/utils/jwt/types.js +161 -0
  221. package/dist/cjs/utils/jwt/utf8.js +30 -0
  222. package/dist/cjs/utils/mime.js +108 -0
  223. package/dist/cjs/utils/stream.js +101 -0
  224. package/dist/cjs/utils/types.js +15 -0
  225. package/dist/cjs/utils/url.js +256 -0
  226. package/dist/cjs/validator/index.js +27 -0
  227. package/dist/cjs/validator/utils.js +15 -0
  228. package/dist/cjs/validator/validator.js +108 -0
  229. package/dist/client/client.js +180 -0
  230. package/dist/client/fetch-result-please.js +62 -0
  231. package/dist/client/index.js +8 -0
  232. package/dist/client/types.js +0 -0
  233. package/dist/client/utils.js +76 -0
  234. package/dist/compose.js +46 -0
  235. package/dist/context.js +412 -0
  236. package/dist/helper/accepts/accepts.js +20 -0
  237. package/dist/helper/accepts/index.js +5 -0
  238. package/dist/helper/adapter/index.js +56 -0
  239. package/dist/helper/conninfo/index.js +0 -0
  240. package/dist/helper/conninfo/types.js +0 -0
  241. package/dist/helper/cookie/index.js +102 -0
  242. package/dist/helper/css/common.js +185 -0
  243. package/dist/helper/css/index.js +125 -0
  244. package/dist/helper/dev/index.js +55 -0
  245. package/dist/helper/factory/index.js +30 -0
  246. package/dist/helper/html/index.js +41 -0
  247. package/dist/helper/proxy/index.js +89 -0
  248. package/dist/helper/route/index.js +46 -0
  249. package/dist/helper/ssg/index.js +19 -0
  250. package/dist/helper/ssg/middleware.js +45 -0
  251. package/dist/helper/ssg/plugins.js +47 -0
  252. package/dist/helper/ssg/ssg.js +287 -0
  253. package/dist/helper/ssg/utils.js +59 -0
  254. package/dist/helper/streaming/index.js +10 -0
  255. package/dist/helper/streaming/sse.js +67 -0
  256. package/dist/helper/streaming/stream.js +34 -0
  257. package/dist/helper/streaming/text.js +12 -0
  258. package/dist/helper/streaming/utils.js +13 -0
  259. package/dist/helper/testing/index.js +11 -0
  260. package/dist/helper/websocket/index.js +57 -0
  261. package/dist/hono-base.js +378 -0
  262. package/dist/hono.js +21 -0
  263. package/dist/http-exception.js +35 -0
  264. package/dist/index.js +5 -0
  265. package/dist/jsx/base.js +331 -0
  266. package/dist/jsx/children.js +21 -0
  267. package/dist/jsx/components.js +178 -0
  268. package/dist/jsx/constants.js +15 -0
  269. package/dist/jsx/context.js +38 -0
  270. package/dist/jsx/dom/client.js +53 -0
  271. package/dist/jsx/dom/components.js +32 -0
  272. package/dist/jsx/dom/context.js +48 -0
  273. package/dist/jsx/dom/css.js +143 -0
  274. package/dist/jsx/dom/hooks/index.js +48 -0
  275. package/dist/jsx/dom/index.js +142 -0
  276. package/dist/jsx/dom/intrinsic-element/components.js +374 -0
  277. package/dist/jsx/dom/jsx-dev-runtime.js +19 -0
  278. package/dist/jsx/dom/jsx-runtime.js +8 -0
  279. package/dist/jsx/dom/render.js +595 -0
  280. package/dist/jsx/dom/server.js +33 -0
  281. package/dist/jsx/dom/utils.js +10 -0
  282. package/dist/jsx/hooks/index.js +328 -0
  283. package/dist/jsx/index.js +103 -0
  284. package/dist/jsx/intrinsic-element/common.js +24 -0
  285. package/dist/jsx/intrinsic-element/components.js +165 -0
  286. package/dist/jsx/intrinsic-elements.js +0 -0
  287. package/dist/jsx/jsx-dev-runtime.js +18 -0
  288. package/dist/jsx/jsx-runtime.js +41 -0
  289. package/dist/jsx/streaming.js +153 -0
  290. package/dist/jsx/types.js +0 -0
  291. package/dist/jsx/utils.js +27 -0
  292. package/dist/middleware/basic-auth/index.js +66 -0
  293. package/dist/middleware/bearer-auth/index.js +92 -0
  294. package/dist/middleware/body-limit/index.js +62 -0
  295. package/dist/middleware/cache/index.js +89 -0
  296. package/dist/middleware/combine/index.js +77 -0
  297. package/dist/middleware/compress/index.js +39 -0
  298. package/dist/middleware/context-storage/index.js +23 -0
  299. package/dist/middleware/cors/index.js +87 -0
  300. package/dist/middleware/csrf/index.js +55 -0
  301. package/dist/middleware/etag/digest.js +33 -0
  302. package/dist/middleware/etag/index.js +72 -0
  303. package/dist/middleware/ip-restriction/index.js +107 -0
  304. package/dist/middleware/jsx-renderer/index.js +58 -0
  305. package/dist/middleware/jwk/index.js +5 -0
  306. package/dist/middleware/jwk/jwk.js +112 -0
  307. package/dist/middleware/jwt/index.js +11 -0
  308. package/dist/middleware/jwt/jwt.js +114 -0
  309. package/dist/middleware/language/index.js +15 -0
  310. package/dist/middleware/language/language.js +190 -0
  311. package/dist/middleware/logger/index.js +44 -0
  312. package/dist/middleware/method-override/index.js +82 -0
  313. package/dist/middleware/powered-by/index.js +10 -0
  314. package/dist/middleware/pretty-json/index.js +15 -0
  315. package/dist/middleware/request-id/index.js +5 -0
  316. package/dist/middleware/request-id/request-id.js +21 -0
  317. package/dist/middleware/secure-headers/index.js +6 -0
  318. package/dist/middleware/secure-headers/permissions-policy.js +0 -0
  319. package/dist/middleware/secure-headers/secure-headers.js +166 -0
  320. package/dist/middleware/serve-static/index.js +77 -0
  321. package/dist/middleware/serve-static/path.js +18 -0
  322. package/dist/middleware/timeout/index.js +25 -0
  323. package/dist/middleware/timing/index.js +9 -0
  324. package/dist/middleware/timing/timing.js +102 -0
  325. package/dist/middleware/trailing-slash/index.js +39 -0
  326. package/dist/preset/quick.js +16 -0
  327. package/dist/preset/tiny.js +12 -0
  328. package/dist/request/constants.js +5 -0
  329. package/dist/request.js +301 -0
  330. package/dist/router/linear-router/index.js +5 -0
  331. package/dist/router/linear-router/router.js +118 -0
  332. package/dist/router/pattern-router/index.js +5 -0
  333. package/dist/router/pattern-router/router.js +48 -0
  334. package/dist/router/reg-exp-router/index.js +9 -0
  335. package/dist/router/reg-exp-router/matcher.js +25 -0
  336. package/dist/router/reg-exp-router/node.js +111 -0
  337. package/dist/router/reg-exp-router/prepared-router.js +142 -0
  338. package/dist/router/reg-exp-router/router.js +190 -0
  339. package/dist/router/reg-exp-router/trie.js +59 -0
  340. package/dist/router/smart-router/index.js +5 -0
  341. package/dist/router/smart-router/router.js +58 -0
  342. package/dist/router/trie-router/index.js +5 -0
  343. package/dist/router/trie-router/node.js +179 -0
  344. package/dist/router/trie-router/router.js +26 -0
  345. package/dist/router.js +14 -0
  346. package/dist/tsconfig.build.tsbuildinfo +1 -0
  347. package/dist/types/adapter/aws-lambda/conninfo.d.ts +27 -0
  348. package/dist/types/adapter/aws-lambda/handler.d.ts +184 -0
  349. package/dist/types/adapter/aws-lambda/index.d.ts +8 -0
  350. package/dist/types/adapter/aws-lambda/types.d.ts +144 -0
  351. package/dist/types/adapter/bun/conninfo.d.ts +7 -0
  352. package/dist/types/adapter/bun/index.d.ts +10 -0
  353. package/dist/types/adapter/bun/serve-static.d.ts +3 -0
  354. package/dist/types/adapter/bun/server.d.ts +12 -0
  355. package/dist/types/adapter/bun/ssg.d.ts +13 -0
  356. package/dist/types/adapter/bun/websocket.d.ts +39 -0
  357. package/dist/types/adapter/cloudflare-pages/conninfo.d.ts +21 -0
  358. package/dist/types/adapter/cloudflare-pages/handler.d.ts +33 -0
  359. package/dist/types/adapter/cloudflare-pages/index.d.ts +7 -0
  360. package/dist/types/adapter/cloudflare-workers/conninfo.d.ts +2 -0
  361. package/dist/types/adapter/cloudflare-workers/index.d.ts +7 -0
  362. package/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +4 -0
  363. package/dist/types/adapter/cloudflare-workers/serve-static.d.ts +16 -0
  364. package/dist/types/adapter/cloudflare-workers/utils.d.ts +5 -0
  365. package/dist/types/adapter/cloudflare-workers/websocket.d.ts +2 -0
  366. package/dist/types/adapter/deno/conninfo.d.ts +7 -0
  367. package/dist/types/adapter/deno/index.d.ts +8 -0
  368. package/dist/types/adapter/deno/serve-static.d.ts +3 -0
  369. package/dist/types/adapter/deno/ssg.d.ts +13 -0
  370. package/dist/types/adapter/deno/websocket.d.ts +2 -0
  371. package/dist/types/adapter/lambda-edge/conninfo.d.ts +2 -0
  372. package/dist/types/adapter/lambda-edge/handler.d.ts +87 -0
  373. package/dist/types/adapter/lambda-edge/index.d.ts +7 -0
  374. package/dist/types/adapter/netlify/conninfo.d.ts +21 -0
  375. package/dist/types/adapter/netlify/handler.d.ts +2 -0
  376. package/dist/types/adapter/netlify/index.d.ts +5 -0
  377. package/dist/types/adapter/netlify/mod.d.ts +2 -0
  378. package/dist/types/adapter/service-worker/handler.d.ts +16 -0
  379. package/dist/types/adapter/service-worker/index.d.ts +28 -0
  380. package/dist/types/adapter/service-worker/types.d.ts +12 -0
  381. package/dist/types/adapter/vercel/conninfo.d.ts +2 -0
  382. package/dist/types/adapter/vercel/handler.d.ts +2 -0
  383. package/dist/types/adapter/vercel/index.d.ts +6 -0
  384. package/dist/types/client/client.d.ts +4 -0
  385. package/dist/types/client/fetch-result-please.d.ts +35 -0
  386. package/dist/types/client/index.d.ts +7 -0
  387. package/dist/types/client/types.d.ts +209 -0
  388. package/dist/types/client/utils.d.ts +18 -0
  389. package/dist/types/compose.d.ts +14 -0
  390. package/dist/types/context.d.ts +455 -0
  391. package/dist/types/helper/accepts/accepts.d.ts +30 -0
  392. package/dist/types/helper/accepts/index.d.ts +5 -0
  393. package/dist/types/helper/adapter/index.d.ts +12 -0
  394. package/dist/types/helper/conninfo/index.d.ts +5 -0
  395. package/dist/types/helper/conninfo/types.d.ts +36 -0
  396. package/dist/types/helper/cookie/index.d.ts +24 -0
  397. package/dist/types/helper/css/common.d.ts +42 -0
  398. package/dist/types/helper/css/index.d.ts +73 -0
  399. package/dist/types/helper/dev/index.d.ts +20 -0
  400. package/dist/types/helper/factory/index.d.ts +82 -0
  401. package/dist/types/helper/html/index.d.ts +8 -0
  402. package/dist/types/helper/proxy/index.d.ts +72 -0
  403. package/dist/types/helper/route/index.d.ts +75 -0
  404. package/dist/types/helper/ssg/index.d.ts +7 -0
  405. package/dist/types/helper/ssg/middleware.d.ts +44 -0
  406. package/dist/types/helper/ssg/plugins.d.ts +27 -0
  407. package/dist/types/helper/ssg/ssg.d.ts +91 -0
  408. package/dist/types/helper/ssg/utils.d.ts +15 -0
  409. package/dist/types/helper/streaming/index.d.ts +8 -0
  410. package/dist/types/helper/streaming/sse.d.ts +13 -0
  411. package/dist/types/helper/streaming/stream.d.ts +3 -0
  412. package/dist/types/helper/streaming/text.d.ts +3 -0
  413. package/dist/types/helper/streaming/utils.d.ts +1 -0
  414. package/dist/types/helper/testing/index.d.ts +12 -0
  415. package/dist/types/helper/websocket/index.d.ts +69 -0
  416. package/dist/types/hono-base.d.ts +220 -0
  417. package/dist/types/hono.d.ts +19 -0
  418. package/dist/types/http-exception.d.ts +59 -0
  419. package/dist/types/index.d.ts +36 -0
  420. package/dist/types/jsx/base.d.ts +58 -0
  421. package/dist/types/jsx/children.d.ts +9 -0
  422. package/dist/types/jsx/components.d.ts +15 -0
  423. package/dist/types/jsx/constants.d.ts +6 -0
  424. package/dist/types/jsx/context.d.ts +12 -0
  425. package/dist/types/jsx/dom/client.d.ts +31 -0
  426. package/dist/types/jsx/dom/components.d.ts +10 -0
  427. package/dist/types/jsx/dom/context.d.ts +3 -0
  428. package/dist/types/jsx/dom/css.d.ts +77 -0
  429. package/dist/types/jsx/dom/hooks/index.d.ts +39 -0
  430. package/dist/types/jsx/dom/index.d.ts +88 -0
  431. package/dist/types/jsx/dom/intrinsic-element/components.d.ts +16 -0
  432. package/dist/types/jsx/dom/jsx-dev-runtime.d.ts +8 -0
  433. package/dist/types/jsx/dom/jsx-runtime.d.ts +7 -0
  434. package/dist/types/jsx/dom/render.d.ts +73 -0
  435. package/dist/types/jsx/dom/server.d.ts +106 -0
  436. package/dist/types/jsx/dom/utils.d.ts +1 -0
  437. package/dist/types/jsx/hooks/index.d.ts +45 -0
  438. package/dist/types/jsx/index.d.ts +75 -0
  439. package/dist/types/jsx/intrinsic-element/common.d.ts +6 -0
  440. package/dist/types/jsx/intrinsic-element/components.d.ts +13 -0
  441. package/dist/types/jsx/intrinsic-elements.d.ts +722 -0
  442. package/dist/types/jsx/jsx-dev-runtime.d.ts +8 -0
  443. package/dist/types/jsx/jsx-runtime.d.ts +12 -0
  444. package/dist/types/jsx/streaming.d.ts +36 -0
  445. package/dist/types/jsx/types.d.ts +35 -0
  446. package/dist/types/jsx/utils.d.ts +2 -0
  447. package/dist/types/middleware/basic-auth/index.d.ts +75 -0
  448. package/dist/types/middleware/bearer-auth/index.d.ts +91 -0
  449. package/dist/types/middleware/body-limit/index.d.ts +45 -0
  450. package/dist/types/middleware/cache/index.d.ts +41 -0
  451. package/dist/types/middleware/combine/index.d.ts +85 -0
  452. package/dist/types/middleware/compress/index.d.ts +29 -0
  453. package/dist/types/middleware/context-storage/index.d.ts +40 -0
  454. package/dist/types/middleware/cors/index.d.ts +55 -0
  455. package/dist/types/middleware/csrf/index.d.ts +78 -0
  456. package/dist/types/middleware/etag/digest.d.ts +1 -0
  457. package/dist/types/middleware/etag/index.d.ts +42 -0
  458. package/dist/types/middleware/ip-restriction/index.d.ts +31 -0
  459. package/dist/types/middleware/jsx-renderer/index.d.ts +77 -0
  460. package/dist/types/middleware/jwk/index.d.ts +1 -0
  461. package/dist/types/middleware/jwk/jwk.d.ts +54 -0
  462. package/dist/types/middleware/jwt/index.d.ts +8 -0
  463. package/dist/types/middleware/jwt/jwt.d.ts +67 -0
  464. package/dist/types/middleware/language/index.d.ts +7 -0
  465. package/dist/types/middleware/language/language.d.ts +102 -0
  466. package/dist/types/middleware/logger/index.d.ts +24 -0
  467. package/dist/types/middleware/method-override/index.d.ts +48 -0
  468. package/dist/types/middleware/powered-by/index.d.ts +29 -0
  469. package/dist/types/middleware/pretty-json/index.d.ts +42 -0
  470. package/dist/types/middleware/request-id/index.d.ts +7 -0
  471. package/dist/types/middleware/request-id/request-id.d.ts +37 -0
  472. package/dist/types/middleware/secure-headers/index.d.ts +8 -0
  473. package/dist/types/middleware/secure-headers/permissions-policy.d.ts +14 -0
  474. package/dist/types/middleware/secure-headers/secure-headers.d.ts +109 -0
  475. package/dist/types/middleware/serve-static/index.d.ts +31 -0
  476. package/dist/types/middleware/serve-static/path.d.ts +5 -0
  477. package/dist/types/middleware/timeout/index.d.ts +31 -0
  478. package/dist/types/middleware/timing/index.d.ts +7 -0
  479. package/dist/types/middleware/timing/timing.d.ts +129 -0
  480. package/dist/types/middleware/trailing-slash/index.d.ts +78 -0
  481. package/dist/types/package.json +3 -0
  482. package/dist/types/preset/quick.d.ts +10 -0
  483. package/dist/types/preset/tiny.d.ts +10 -0
  484. package/dist/types/request/constants.d.ts +1 -0
  485. package/dist/types/request.d.ts +313 -0
  486. package/dist/types/router/linear-router/index.d.ts +5 -0
  487. package/dist/types/router/linear-router/router.d.ts +7 -0
  488. package/dist/types/router/pattern-router/index.d.ts +5 -0
  489. package/dist/types/router/pattern-router/router.d.ts +7 -0
  490. package/dist/types/router/reg-exp-router/index.d.ts +6 -0
  491. package/dist/types/router/reg-exp-router/matcher.d.ts +7 -0
  492. package/dist/types/router/reg-exp-router/node.d.ts +10 -0
  493. package/dist/types/router/reg-exp-router/prepared-router.d.ts +17 -0
  494. package/dist/types/router/reg-exp-router/router.d.ts +11 -0
  495. package/dist/types/router/reg-exp-router/trie.d.ts +7 -0
  496. package/dist/types/router/smart-router/index.d.ts +5 -0
  497. package/dist/types/router/smart-router/router.d.ts +11 -0
  498. package/dist/types/router/trie-router/index.d.ts +5 -0
  499. package/dist/types/router/trie-router/node.d.ts +7 -0
  500. package/dist/types/router/trie-router/router.d.ts +8 -0
  501. package/dist/types/router.d.ts +97 -0
  502. package/dist/types/types.d.ts +573 -0
  503. package/dist/types/utils/accept.d.ts +6 -0
  504. package/dist/types/utils/basic-auth.d.ts +5 -0
  505. package/dist/types/utils/body.d.ts +79 -0
  506. package/dist/types/utils/buffer.d.ts +17 -0
  507. package/dist/types/utils/color.d.ts +21 -0
  508. package/dist/types/utils/compress.d.ts +8 -0
  509. package/dist/types/utils/concurrent.d.ts +11 -0
  510. package/dist/types/utils/constants.d.ts +4 -0
  511. package/dist/types/utils/cookie.d.ts +40 -0
  512. package/dist/types/utils/crypto.d.ts +15 -0
  513. package/dist/types/utils/encode.d.ts +8 -0
  514. package/dist/types/utils/filepath.d.ts +12 -0
  515. package/dist/types/utils/handler.d.ts +6 -0
  516. package/dist/types/utils/headers.d.ts +8 -0
  517. package/dist/types/utils/html.d.ts +44 -0
  518. package/dist/types/utils/http-status.d.ts +32 -0
  519. package/dist/types/utils/ipaddr.d.ts +40 -0
  520. package/dist/types/utils/jwt/index.d.ts +18 -0
  521. package/dist/types/utils/jwt/jwa.d.ts +23 -0
  522. package/dist/types/utils/jwt/jws.d.ts +12 -0
  523. package/dist/types/utils/jwt/jwt.d.ts +43 -0
  524. package/dist/types/utils/jwt/types.d.ts +86 -0
  525. package/dist/types/utils/jwt/utf8.d.ts +6 -0
  526. package/dist/types/utils/mime.d.ts +70 -0
  527. package/dist/types/utils/stream.d.ts +31 -0
  528. package/dist/types/utils/types.d.ts +74 -0
  529. package/dist/types/utils/url.d.ts +39 -0
  530. package/dist/types/validator/index.d.ts +7 -0
  531. package/dist/types/validator/utils.d.ts +29 -0
  532. package/dist/types/validator/validator.d.ts +16 -0
  533. package/dist/types.js +6 -0
  534. package/dist/utils/accept.js +223 -0
  535. package/dist/utils/basic-auth.js +23 -0
  536. package/dist/utils/body.js +75 -0
  537. package/dist/utils/buffer.js +77 -0
  538. package/dist/utils/color.js +25 -0
  539. package/dist/utils/compress.js +5 -0
  540. package/dist/utils/concurrent.js +39 -0
  541. package/dist/utils/constants.js +5 -0
  542. package/dist/utils/cookie.js +152 -0
  543. package/dist/utils/crypto.js +44 -0
  544. package/dist/utils/encode.js +29 -0
  545. package/dist/utils/filepath.js +35 -0
  546. package/dist/utils/handler.js +13 -0
  547. package/dist/utils/headers.js +0 -0
  548. package/dist/utils/html.js +123 -0
  549. package/dist/utils/http-status.js +0 -0
  550. package/dist/utils/ipaddr.js +102 -0
  551. package/dist/utils/jwt/index.js +6 -0
  552. package/dist/utils/jwt/jwa.js +20 -0
  553. package/dist/utils/jwt/jws.js +192 -0
  554. package/dist/utils/jwt/jwt.js +201 -0
  555. package/dist/utils/jwt/types.js +124 -0
  556. package/dist/utils/jwt/utf8.js +7 -0
  557. package/dist/utils/mime.js +84 -0
  558. package/dist/utils/stream.js +79 -0
  559. package/dist/utils/types.js +0 -0
  560. package/dist/utils/url.js +222 -0
  561. package/dist/validator/index.js +5 -0
  562. package/dist/validator/utils.js +0 -0
  563. package/dist/validator/validator.js +86 -0
  564. package/package.json +702 -0
@@ -0,0 +1,102 @@
1
+ // src/middleware/timing/timing.ts
2
+ import "../../context.js";
3
+ var getTime = () => {
4
+ try {
5
+ return performance.now();
6
+ } catch {
7
+ }
8
+ return Date.now();
9
+ };
10
+ var timing = (config) => {
11
+ const options = {
12
+ total: true,
13
+ enabled: true,
14
+ totalDescription: "Total Response Time",
15
+ autoEnd: true,
16
+ crossOrigin: false,
17
+ ...config
18
+ };
19
+ return async function timing2(c, next) {
20
+ const headers = [];
21
+ const timers = /* @__PURE__ */ new Map();
22
+ if (c.get("metric")) {
23
+ return await next();
24
+ }
25
+ c.set("metric", { headers, timers });
26
+ if (options.total) {
27
+ startTime(c, "total", options.totalDescription);
28
+ }
29
+ await next();
30
+ if (options.total) {
31
+ endTime(c, "total");
32
+ }
33
+ if (options.autoEnd) {
34
+ timers.forEach((_, key) => endTime(c, key));
35
+ }
36
+ const enabled = typeof options.enabled === "function" ? options.enabled(c) : options.enabled;
37
+ if (enabled) {
38
+ c.res.headers.append("Server-Timing", headers.join(","));
39
+ const crossOrigin = typeof options.crossOrigin === "function" ? options.crossOrigin(c) : options.crossOrigin;
40
+ if (crossOrigin) {
41
+ c.res.headers.append(
42
+ "Timing-Allow-Origin",
43
+ typeof crossOrigin === "string" ? crossOrigin : "*"
44
+ );
45
+ }
46
+ }
47
+ };
48
+ };
49
+ var setMetric = (c, name, valueDescription, description, precision) => {
50
+ const metrics = c.get("metric");
51
+ if (!metrics) {
52
+ console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");
53
+ return;
54
+ }
55
+ if (typeof valueDescription === "number") {
56
+ const dur = valueDescription.toFixed(precision || 1);
57
+ const metric = description ? `${name};dur=${dur};desc="${description}"` : `${name};dur=${dur}`;
58
+ metrics.headers.push(metric);
59
+ } else {
60
+ const metric = valueDescription ? `${name};desc="${valueDescription}"` : `${name}`;
61
+ metrics.headers.push(metric);
62
+ }
63
+ };
64
+ var startTime = (c, name, description) => {
65
+ const metrics = c.get("metric");
66
+ if (!metrics) {
67
+ console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");
68
+ return;
69
+ }
70
+ metrics.timers.set(name, { description, start: getTime() });
71
+ };
72
+ var endTime = (c, name, precision) => {
73
+ const metrics = c.get("metric");
74
+ if (!metrics) {
75
+ console.warn("Metrics not initialized! Please add the `timing()` middleware to this route!");
76
+ return;
77
+ }
78
+ const timer = metrics.timers.get(name);
79
+ if (!timer) {
80
+ console.warn(`Timer "${name}" does not exist!`);
81
+ return;
82
+ }
83
+ const { description, start } = timer;
84
+ const duration = getTime() - start;
85
+ setMetric(c, name, duration, description, precision);
86
+ metrics.timers.delete(name);
87
+ };
88
+ async function wrapTime(c, name, callable, description, precision) {
89
+ startTime(c, name, description);
90
+ try {
91
+ return await callable;
92
+ } finally {
93
+ endTime(c, name, precision);
94
+ }
95
+ }
96
+ export {
97
+ endTime,
98
+ setMetric,
99
+ startTime,
100
+ timing,
101
+ wrapTime
102
+ };
@@ -0,0 +1,39 @@
1
+ // src/middleware/trailing-slash/index.ts
2
+ var trimTrailingSlash = (options) => {
3
+ return async function trimTrailingSlash2(c, next) {
4
+ if (options?.alwaysRedirect) {
5
+ if ((c.req.method === "GET" || c.req.method === "HEAD") && c.req.path !== "/" && c.req.path.at(-1) === "/") {
6
+ const url = new URL(c.req.url);
7
+ url.pathname = url.pathname.substring(0, url.pathname.length - 1);
8
+ return c.redirect(url.toString(), 301);
9
+ }
10
+ }
11
+ await next();
12
+ if (!options?.alwaysRedirect && c.res.status === 404 && (c.req.method === "GET" || c.req.method === "HEAD") && c.req.path !== "/" && c.req.path.at(-1) === "/") {
13
+ const url = new URL(c.req.url);
14
+ url.pathname = url.pathname.substring(0, url.pathname.length - 1);
15
+ c.res = c.redirect(url.toString(), 301);
16
+ }
17
+ };
18
+ };
19
+ var appendTrailingSlash = (options) => {
20
+ return async function appendTrailingSlash2(c, next) {
21
+ if (options?.alwaysRedirect) {
22
+ if ((c.req.method === "GET" || c.req.method === "HEAD") && c.req.path.at(-1) !== "/") {
23
+ const url = new URL(c.req.url);
24
+ url.pathname += "/";
25
+ return c.redirect(url.toString(), 301);
26
+ }
27
+ }
28
+ await next();
29
+ if (!options?.alwaysRedirect && c.res.status === 404 && (c.req.method === "GET" || c.req.method === "HEAD") && c.req.path.at(-1) !== "/") {
30
+ const url = new URL(c.req.url);
31
+ url.pathname += "/";
32
+ c.res = c.redirect(url.toString(), 301);
33
+ }
34
+ };
35
+ };
36
+ export {
37
+ appendTrailingSlash,
38
+ trimTrailingSlash
39
+ };
@@ -0,0 +1,16 @@
1
+ // src/preset/quick.ts
2
+ import { HonoBase } from "../hono-base.js";
3
+ import { LinearRouter } from "../router/linear-router/index.js";
4
+ import { SmartRouter } from "../router/smart-router/index.js";
5
+ import { TrieRouter } from "../router/trie-router/index.js";
6
+ var Hono = class extends HonoBase {
7
+ constructor(options = {}) {
8
+ super(options);
9
+ this.router = new SmartRouter({
10
+ routers: [new LinearRouter(), new TrieRouter()]
11
+ });
12
+ }
13
+ };
14
+ export {
15
+ Hono
16
+ };
@@ -0,0 +1,12 @@
1
+ // src/preset/tiny.ts
2
+ import { HonoBase } from "../hono-base.js";
3
+ import { PatternRouter } from "../router/pattern-router/index.js";
4
+ var Hono = class extends HonoBase {
5
+ constructor(options = {}) {
6
+ super(options);
7
+ this.router = new PatternRouter();
8
+ }
9
+ };
10
+ export {
11
+ Hono
12
+ };
@@ -0,0 +1,5 @@
1
+ // src/request/constants.ts
2
+ var GET_MATCH_RESULT = /* @__PURE__ */ Symbol();
3
+ export {
4
+ GET_MATCH_RESULT
5
+ };
@@ -0,0 +1,301 @@
1
+ // src/request.ts
2
+ import { HTTPException } from "./http-exception.js";
3
+ import { GET_MATCH_RESULT } from "./request/constants.js";
4
+ import { parseBody } from "./utils/body.js";
5
+ import { decodeURIComponent_, getQueryParam, getQueryParams, tryDecode } from "./utils/url.js";
6
+ var tryDecodeURIComponent = (str) => tryDecode(str, decodeURIComponent_);
7
+ var HonoRequest = class {
8
+ /**
9
+ * `.raw` can get the raw Request object.
10
+ *
11
+ * @see {@link https://hono.dev/docs/api/request#raw}
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * // For Cloudflare Workers
16
+ * app.post('/', async (c) => {
17
+ * const metadata = c.req.raw.cf?.hostMetadata?
18
+ * ...
19
+ * })
20
+ * ```
21
+ */
22
+ raw;
23
+ #validatedData;
24
+ // Short name of validatedData
25
+ #matchResult;
26
+ routeIndex = 0;
27
+ /**
28
+ * `.path` can get the pathname of the request.
29
+ *
30
+ * @see {@link https://hono.dev/docs/api/request#path}
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * app.get('/about/me', (c) => {
35
+ * const pathname = c.req.path // `/about/me`
36
+ * })
37
+ * ```
38
+ */
39
+ path;
40
+ bodyCache = {};
41
+ constructor(request, path = "/", matchResult = [[]]) {
42
+ this.raw = request;
43
+ this.path = path;
44
+ this.#matchResult = matchResult;
45
+ this.#validatedData = {};
46
+ }
47
+ param(key) {
48
+ return key ? this.#getDecodedParam(key) : this.#getAllDecodedParams();
49
+ }
50
+ #getDecodedParam(key) {
51
+ const paramKey = this.#matchResult[0][this.routeIndex][1][key];
52
+ const param = this.#getParamValue(paramKey);
53
+ return param && /\%/.test(param) ? tryDecodeURIComponent(param) : param;
54
+ }
55
+ #getAllDecodedParams() {
56
+ const decoded = {};
57
+ const keys = Object.keys(this.#matchResult[0][this.routeIndex][1]);
58
+ for (const key of keys) {
59
+ const value = this.#getParamValue(this.#matchResult[0][this.routeIndex][1][key]);
60
+ if (value !== void 0) {
61
+ decoded[key] = /\%/.test(value) ? tryDecodeURIComponent(value) : value;
62
+ }
63
+ }
64
+ return decoded;
65
+ }
66
+ #getParamValue(paramKey) {
67
+ return this.#matchResult[1] ? this.#matchResult[1][paramKey] : paramKey;
68
+ }
69
+ query(key) {
70
+ return getQueryParam(this.url, key);
71
+ }
72
+ queries(key) {
73
+ return getQueryParams(this.url, key);
74
+ }
75
+ header(name) {
76
+ if (name) {
77
+ return this.raw.headers.get(name) ?? void 0;
78
+ }
79
+ const headerData = {};
80
+ this.raw.headers.forEach((value, key) => {
81
+ headerData[key] = value;
82
+ });
83
+ return headerData;
84
+ }
85
+ async parseBody(options) {
86
+ return this.bodyCache.parsedBody ??= await parseBody(this, options);
87
+ }
88
+ #cachedBody = (key) => {
89
+ const { bodyCache, raw } = this;
90
+ const cachedBody = bodyCache[key];
91
+ if (cachedBody) {
92
+ return cachedBody;
93
+ }
94
+ const anyCachedKey = Object.keys(bodyCache)[0];
95
+ if (anyCachedKey) {
96
+ return bodyCache[anyCachedKey].then((body) => {
97
+ if (anyCachedKey === "json") {
98
+ body = JSON.stringify(body);
99
+ }
100
+ return new Response(body)[key]();
101
+ });
102
+ }
103
+ return bodyCache[key] = raw[key]();
104
+ };
105
+ /**
106
+ * `.json()` can parse Request body of type `application/json`
107
+ *
108
+ * @see {@link https://hono.dev/docs/api/request#json}
109
+ *
110
+ * @example
111
+ * ```ts
112
+ * app.post('/entry', async (c) => {
113
+ * const body = await c.req.json()
114
+ * })
115
+ * ```
116
+ */
117
+ json() {
118
+ return this.#cachedBody("text").then((text) => JSON.parse(text));
119
+ }
120
+ /**
121
+ * `.text()` can parse Request body of type `text/plain`
122
+ *
123
+ * @see {@link https://hono.dev/docs/api/request#text}
124
+ *
125
+ * @example
126
+ * ```ts
127
+ * app.post('/entry', async (c) => {
128
+ * const body = await c.req.text()
129
+ * })
130
+ * ```
131
+ */
132
+ text() {
133
+ return this.#cachedBody("text");
134
+ }
135
+ /**
136
+ * `.arrayBuffer()` parse Request body as an `ArrayBuffer`
137
+ *
138
+ * @see {@link https://hono.dev/docs/api/request#arraybuffer}
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * app.post('/entry', async (c) => {
143
+ * const body = await c.req.arrayBuffer()
144
+ * })
145
+ * ```
146
+ */
147
+ arrayBuffer() {
148
+ return this.#cachedBody("arrayBuffer");
149
+ }
150
+ /**
151
+ * Parses the request body as a `Blob`.
152
+ * @example
153
+ * ```ts
154
+ * app.post('/entry', async (c) => {
155
+ * const body = await c.req.blob();
156
+ * });
157
+ * ```
158
+ * @see https://hono.dev/docs/api/request#blob
159
+ */
160
+ blob() {
161
+ return this.#cachedBody("blob");
162
+ }
163
+ /**
164
+ * Parses the request body as `FormData`.
165
+ * @example
166
+ * ```ts
167
+ * app.post('/entry', async (c) => {
168
+ * const body = await c.req.formData();
169
+ * });
170
+ * ```
171
+ * @see https://hono.dev/docs/api/request#formdata
172
+ */
173
+ formData() {
174
+ return this.#cachedBody("formData");
175
+ }
176
+ /**
177
+ * Adds validated data to the request.
178
+ *
179
+ * @param target - The target of the validation.
180
+ * @param data - The validated data to add.
181
+ */
182
+ addValidatedData(target, data) {
183
+ this.#validatedData[target] = data;
184
+ }
185
+ valid(target) {
186
+ return this.#validatedData[target];
187
+ }
188
+ /**
189
+ * `.url()` can get the request url strings.
190
+ *
191
+ * @see {@link https://hono.dev/docs/api/request#url}
192
+ *
193
+ * @example
194
+ * ```ts
195
+ * app.get('/about/me', (c) => {
196
+ * const url = c.req.url // `http://localhost:8787/about/me`
197
+ * ...
198
+ * })
199
+ * ```
200
+ */
201
+ get url() {
202
+ return this.raw.url;
203
+ }
204
+ /**
205
+ * `.method()` can get the method name of the request.
206
+ *
207
+ * @see {@link https://hono.dev/docs/api/request#method}
208
+ *
209
+ * @example
210
+ * ```ts
211
+ * app.get('/about/me', (c) => {
212
+ * const method = c.req.method // `GET`
213
+ * })
214
+ * ```
215
+ */
216
+ get method() {
217
+ return this.raw.method;
218
+ }
219
+ get [GET_MATCH_RESULT]() {
220
+ return this.#matchResult;
221
+ }
222
+ /**
223
+ * `.matchedRoutes()` can return a matched route in the handler
224
+ *
225
+ * @deprecated
226
+ *
227
+ * Use matchedRoutes helper defined in "hono/route" instead.
228
+ *
229
+ * @see {@link https://hono.dev/docs/api/request#matchedroutes}
230
+ *
231
+ * @example
232
+ * ```ts
233
+ * app.use('*', async function logger(c, next) {
234
+ * await next()
235
+ * c.req.matchedRoutes.forEach(({ handler, method, path }, i) => {
236
+ * const name = handler.name || (handler.length < 2 ? '[handler]' : '[middleware]')
237
+ * console.log(
238
+ * method,
239
+ * ' ',
240
+ * path,
241
+ * ' '.repeat(Math.max(10 - path.length, 0)),
242
+ * name,
243
+ * i === c.req.routeIndex ? '<- respond from here' : ''
244
+ * )
245
+ * })
246
+ * })
247
+ * ```
248
+ */
249
+ get matchedRoutes() {
250
+ return this.#matchResult[0].map(([[, route]]) => route);
251
+ }
252
+ /**
253
+ * `routePath()` can retrieve the path registered within the handler
254
+ *
255
+ * @deprecated
256
+ *
257
+ * Use routePath helper defined in "hono/route" instead.
258
+ *
259
+ * @see {@link https://hono.dev/docs/api/request#routepath}
260
+ *
261
+ * @example
262
+ * ```ts
263
+ * app.get('/posts/:id', (c) => {
264
+ * return c.json({ path: c.req.routePath })
265
+ * })
266
+ * ```
267
+ */
268
+ get routePath() {
269
+ return this.#matchResult[0].map(([[, route]]) => route)[this.routeIndex].path;
270
+ }
271
+ };
272
+ var cloneRawRequest = async (req) => {
273
+ if (!req.raw.bodyUsed) {
274
+ return req.raw.clone();
275
+ }
276
+ const cacheKey = Object.keys(req.bodyCache)[0];
277
+ if (!cacheKey) {
278
+ throw new HTTPException(500, {
279
+ message: "Cannot clone request: body was already consumed and not cached. Please use HonoRequest methods (e.g., req.json(), req.text()) instead of consuming req.raw directly."
280
+ });
281
+ }
282
+ const requestInit = {
283
+ body: await req[cacheKey](),
284
+ cache: req.raw.cache,
285
+ credentials: req.raw.credentials,
286
+ headers: req.header(),
287
+ integrity: req.raw.integrity,
288
+ keepalive: req.raw.keepalive,
289
+ method: req.method,
290
+ mode: req.raw.mode,
291
+ redirect: req.raw.redirect,
292
+ referrer: req.raw.referrer,
293
+ referrerPolicy: req.raw.referrerPolicy,
294
+ signal: req.raw.signal
295
+ };
296
+ return new Request(req.url, requestInit);
297
+ };
298
+ export {
299
+ HonoRequest,
300
+ cloneRawRequest
301
+ };
@@ -0,0 +1,5 @@
1
+ // src/router/linear-router/index.ts
2
+ import { LinearRouter } from "./router.js";
3
+ export {
4
+ LinearRouter
5
+ };
@@ -0,0 +1,118 @@
1
+ // src/router/linear-router/router.ts
2
+ import { METHOD_NAME_ALL, UnsupportedPathError } from "../../router.js";
3
+ import { checkOptionalParameter } from "../../utils/url.js";
4
+ var emptyParams = /* @__PURE__ */ Object.create(null);
5
+ var splitPathRe = /\/(:\w+(?:{(?:(?:{[\d,]+})|[^}])+})?)|\/[^\/\?]+|(\?)/g;
6
+ var splitByStarRe = /\*/;
7
+ var LinearRouter = class {
8
+ name = "LinearRouter";
9
+ #routes = [];
10
+ add(method, path, handler) {
11
+ for (let i = 0, paths = checkOptionalParameter(path) || [path], len = paths.length; i < len; i++) {
12
+ this.#routes.push([method, paths[i], handler]);
13
+ }
14
+ }
15
+ match(method, path) {
16
+ const handlers = [];
17
+ ROUTES_LOOP: for (let i = 0, len = this.#routes.length; i < len; i++) {
18
+ const [routeMethod, routePath, handler] = this.#routes[i];
19
+ if (routeMethod === method || routeMethod === METHOD_NAME_ALL) {
20
+ if (routePath === "*" || routePath === "/*") {
21
+ handlers.push([handler, emptyParams]);
22
+ continue;
23
+ }
24
+ const hasStar = routePath.indexOf("*") !== -1;
25
+ const hasLabel = routePath.indexOf(":") !== -1;
26
+ if (!hasStar && !hasLabel) {
27
+ if (routePath === path || routePath + "/" === path) {
28
+ handlers.push([handler, emptyParams]);
29
+ }
30
+ } else if (hasStar && !hasLabel) {
31
+ const endsWithStar = routePath.charCodeAt(routePath.length - 1) === 42;
32
+ const parts = (endsWithStar ? routePath.slice(0, -2) : routePath).split(splitByStarRe);
33
+ const lastIndex = parts.length - 1;
34
+ for (let j = 0, pos = 0, len2 = parts.length; j < len2; j++) {
35
+ const part = parts[j];
36
+ const index = path.indexOf(part, pos);
37
+ if (index !== pos) {
38
+ continue ROUTES_LOOP;
39
+ }
40
+ pos += part.length;
41
+ if (j === lastIndex) {
42
+ if (!endsWithStar && pos !== path.length && !(pos === path.length - 1 && path.charCodeAt(pos) === 47)) {
43
+ continue ROUTES_LOOP;
44
+ }
45
+ } else {
46
+ const index2 = path.indexOf("/", pos);
47
+ if (index2 === -1) {
48
+ continue ROUTES_LOOP;
49
+ }
50
+ pos = index2;
51
+ }
52
+ }
53
+ handlers.push([handler, emptyParams]);
54
+ } else if (hasLabel && !hasStar) {
55
+ const params = /* @__PURE__ */ Object.create(null);
56
+ const parts = routePath.match(splitPathRe);
57
+ const lastIndex = parts.length - 1;
58
+ for (let j = 0, pos = 0, len2 = parts.length; j < len2; j++) {
59
+ if (pos === -1 || pos >= path.length) {
60
+ continue ROUTES_LOOP;
61
+ }
62
+ const part = parts[j];
63
+ if (part.charCodeAt(1) === 58) {
64
+ if (path.charCodeAt(pos) !== 47) {
65
+ continue ROUTES_LOOP;
66
+ }
67
+ let name = part.slice(2);
68
+ let value;
69
+ if (name.charCodeAt(name.length - 1) === 125) {
70
+ const openBracePos = name.indexOf("{");
71
+ const next = parts[j + 1];
72
+ const lookahead = next && next[1] !== ":" && next[1] !== "*" ? `(?=${next})` : "";
73
+ const pattern = name.slice(openBracePos + 1, -1) + lookahead;
74
+ const restPath = path.slice(pos + 1);
75
+ const match = new RegExp(pattern, "d").exec(restPath);
76
+ if (!match || match.indices[0][0] !== 0 || match.indices[0][1] === 0) {
77
+ continue ROUTES_LOOP;
78
+ }
79
+ name = name.slice(0, openBracePos);
80
+ value = restPath.slice(...match.indices[0]);
81
+ pos += match.indices[0][1] + 1;
82
+ } else {
83
+ let endValuePos = path.indexOf("/", pos + 1);
84
+ if (endValuePos === -1) {
85
+ if (pos + 1 === path.length) {
86
+ continue ROUTES_LOOP;
87
+ }
88
+ endValuePos = path.length;
89
+ }
90
+ value = path.slice(pos + 1, endValuePos);
91
+ pos = endValuePos;
92
+ }
93
+ params[name] ||= value;
94
+ } else {
95
+ const index = path.indexOf(part, pos);
96
+ if (index !== pos) {
97
+ continue ROUTES_LOOP;
98
+ }
99
+ pos += part.length;
100
+ }
101
+ if (j === lastIndex) {
102
+ if (pos !== path.length && !(pos === path.length - 1 && path.charCodeAt(pos) === 47)) {
103
+ continue ROUTES_LOOP;
104
+ }
105
+ }
106
+ }
107
+ handlers.push([handler, params]);
108
+ } else if (hasLabel && hasStar) {
109
+ throw new UnsupportedPathError();
110
+ }
111
+ }
112
+ }
113
+ return [handlers];
114
+ }
115
+ };
116
+ export {
117
+ LinearRouter
118
+ };
@@ -0,0 +1,5 @@
1
+ // src/router/pattern-router/index.ts
2
+ import { PatternRouter } from "./router.js";
3
+ export {
4
+ PatternRouter
5
+ };
@@ -0,0 +1,48 @@
1
+ // src/router/pattern-router/router.ts
2
+ import { METHOD_NAME_ALL, UnsupportedPathError } from "../../router.js";
3
+ var emptyParams = /* @__PURE__ */ Object.create(null);
4
+ var PatternRouter = class {
5
+ name = "PatternRouter";
6
+ #routes = [];
7
+ add(method, path, handler) {
8
+ const endsWithWildcard = path.at(-1) === "*";
9
+ if (endsWithWildcard) {
10
+ path = path.slice(0, -2);
11
+ }
12
+ if (path.at(-1) === "?") {
13
+ path = path.slice(0, -1);
14
+ this.add(method, path.replace(/\/[^/]+$/, ""), handler);
15
+ }
16
+ const parts = (path.match(/\/?(:\w+(?:{(?:(?:{[\d,]+})|[^}])+})?)|\/?[^\/\?]+/g) || []).map(
17
+ (part) => {
18
+ const match = part.match(/^\/:([^{]+)(?:{(.*)})?/);
19
+ return match ? `/(?<${match[1]}>${match[2] || "[^/]+"})` : part === "/*" ? "/[^/]+" : part.replace(/[.\\+*[^\]$()]/g, "\\$&");
20
+ }
21
+ );
22
+ try {
23
+ this.#routes.push([
24
+ new RegExp(`^${parts.join("")}${endsWithWildcard ? "" : "/?$"}`),
25
+ method,
26
+ handler
27
+ ]);
28
+ } catch {
29
+ throw new UnsupportedPathError();
30
+ }
31
+ }
32
+ match(method, path) {
33
+ const handlers = [];
34
+ for (let i = 0, len = this.#routes.length; i < len; i++) {
35
+ const [pattern, routeMethod, handler] = this.#routes[i];
36
+ if (routeMethod === method || routeMethod === METHOD_NAME_ALL) {
37
+ const match = pattern.exec(path);
38
+ if (match) {
39
+ handlers.push([handler, match.groups || emptyParams]);
40
+ }
41
+ }
42
+ }
43
+ return [handlers];
44
+ }
45
+ };
46
+ export {
47
+ PatternRouter
48
+ };
@@ -0,0 +1,9 @@
1
+ // src/router/reg-exp-router/index.ts
2
+ import { RegExpRouter } from "./router.js";
3
+ import { PreparedRegExpRouter, buildInitParams, serializeInitParams } from "./prepared-router.js";
4
+ export {
5
+ PreparedRegExpRouter,
6
+ RegExpRouter,
7
+ buildInitParams,
8
+ serializeInitParams
9
+ };
@@ -0,0 +1,25 @@
1
+ // src/router/reg-exp-router/matcher.ts
2
+ import { METHOD_NAME_ALL } from "../../router.js";
3
+ var emptyParam = [];
4
+ function match(method, path) {
5
+ const matchers = this.buildAllMatchers();
6
+ const match2 = ((method2, path2) => {
7
+ const matcher = matchers[method2] || matchers[METHOD_NAME_ALL];
8
+ const staticMatch = matcher[2][path2];
9
+ if (staticMatch) {
10
+ return staticMatch;
11
+ }
12
+ const match3 = path2.match(matcher[0]);
13
+ if (!match3) {
14
+ return [[], emptyParam];
15
+ }
16
+ const index = match3.indexOf("", 1);
17
+ return [matcher[1][index], match3];
18
+ });
19
+ this.match = match2;
20
+ return match2(method, path);
21
+ }
22
+ export {
23
+ emptyParam,
24
+ match
25
+ };