bluera-knowledge 0.9.21

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 (652) hide show
  1. package/.claude/commands/commit.md +37 -0
  2. package/.claude/hooks/post-edit-check.sh +41 -0
  3. package/.claude/settings.local.json.example +40 -0
  4. package/.claude/skills/atomic-commits/SKILL.md +53 -0
  5. package/.claude-plugin/plugin.json +13 -0
  6. package/.editorconfig +15 -0
  7. package/.github/workflows/auto-release.yml +59 -0
  8. package/.github/workflows/ci.yml +142 -0
  9. package/.github/workflows/release.yml +66 -0
  10. package/.github/workflows/update-marketplace.yml +96 -0
  11. package/.husky/pre-commit +47 -0
  12. package/.husky/pre-push +29 -0
  13. package/.versionrc.json +28 -0
  14. package/CHANGELOG.md +410 -0
  15. package/CLAUDE.md +109 -0
  16. package/LICENSE +21 -0
  17. package/NOTICE +47 -0
  18. package/README.md +1546 -0
  19. package/SECURITY.md +65 -0
  20. package/bun.lock +1758 -0
  21. package/commands/add-folder.md +48 -0
  22. package/commands/add-repo.md +50 -0
  23. package/commands/cancel.md +63 -0
  24. package/commands/check-status.md +78 -0
  25. package/commands/crawl.md +51 -0
  26. package/commands/index.md +48 -0
  27. package/commands/remove-store.md +52 -0
  28. package/commands/search.md +79 -0
  29. package/commands/search.sh +63 -0
  30. package/commands/stores.md +54 -0
  31. package/commands/suggest.md +82 -0
  32. package/dist/chunk-5QMHZUC4.js +3617 -0
  33. package/dist/chunk-5QMHZUC4.js.map +1 -0
  34. package/dist/chunk-BICFAWMN.js +656 -0
  35. package/dist/chunk-BICFAWMN.js.map +1 -0
  36. package/dist/chunk-J7J6LXOJ.js +958 -0
  37. package/dist/chunk-J7J6LXOJ.js.map +1 -0
  38. package/dist/chunk-L2YVNC63.js +59 -0
  39. package/dist/chunk-L2YVNC63.js.map +1 -0
  40. package/dist/index.d.ts +1 -0
  41. package/dist/index.js +1429 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/mcp/server.d.ts +15 -0
  44. package/dist/mcp/server.js +11 -0
  45. package/dist/mcp/server.js.map +1 -0
  46. package/dist/watch.service-YAIKKDCF.js +7 -0
  47. package/dist/watch.service-YAIKKDCF.js.map +1 -0
  48. package/dist/workers/background-worker-cli.d.ts +1 -0
  49. package/dist/workers/background-worker-cli.js +310 -0
  50. package/dist/workers/background-worker-cli.js.map +1 -0
  51. package/docs/plans/2024-12-17-ai-search-quality-implementation.md +752 -0
  52. package/docs/plans/2024-12-17-ai-search-quality-testing-design.md +201 -0
  53. package/docs/plans/2025-12-16-bluera-knowledge-cli.md +2951 -0
  54. package/docs/plans/2025-12-16-phase2-features.md +1518 -0
  55. package/docs/plans/2025-12-17-hil-implementation.md +926 -0
  56. package/docs/plans/2025-12-17-hil-quality-testing.md +224 -0
  57. package/docs/plans/2025-12-17-search-quality-phase1-implementation.md +1416 -0
  58. package/docs/plans/2025-12-17-search-quality-testing-v2-design.md +212 -0
  59. package/docs/plans/2025-12-28-ai-agent-optimization.md +1630 -0
  60. package/eslint-rules/require-skip-comment.js +81 -0
  61. package/eslint.config.js +61 -0
  62. package/hooks/check-dependencies.sh +110 -0
  63. package/hooks/format-search-results.py +132 -0
  64. package/hooks/hooks.json +27 -0
  65. package/hooks/job-status-hook.sh +51 -0
  66. package/knip.json +43 -0
  67. package/mcp.plugin.json +12 -0
  68. package/package.json +103 -0
  69. package/python/crawl_worker.py +275 -0
  70. package/python/requirements.txt +2 -0
  71. package/scripts/readme-version-updater.cjs +18 -0
  72. package/skills/advanced-workflows/SKILL.md +273 -0
  73. package/skills/atomic-commits/SKILL.md +77 -0
  74. package/skills/knowledge-search/SKILL.md +54 -0
  75. package/skills/search-optimization/SKILL.md +396 -0
  76. package/skills/store-lifecycle/SKILL.md +470 -0
  77. package/skills/when-to-query/SKILL.md +66 -0
  78. package/src/analysis/ast-parser.test.ts +423 -0
  79. package/src/analysis/ast-parser.ts +192 -0
  80. package/src/analysis/code-graph.test.ts +698 -0
  81. package/src/analysis/code-graph.ts +245 -0
  82. package/src/analysis/dependency-usage-analyzer.test.ts +799 -0
  83. package/src/analysis/dependency-usage-analyzer.ts +405 -0
  84. package/src/analysis/go-ast-parser.test.ts +531 -0
  85. package/src/analysis/go-ast-parser.ts +478 -0
  86. package/src/analysis/parser-factory.test.ts +132 -0
  87. package/src/analysis/parser-factory.ts +44 -0
  88. package/src/analysis/python-ast-parser.test.ts +210 -0
  89. package/src/analysis/python-ast-parser.ts +34 -0
  90. package/src/analysis/repo-url-resolver.test.ts +533 -0
  91. package/src/analysis/repo-url-resolver.ts +233 -0
  92. package/src/analysis/rust-ast-parser.test.ts +568 -0
  93. package/src/analysis/rust-ast-parser.ts +477 -0
  94. package/src/analysis/tree-sitter-parser.test.ts +297 -0
  95. package/src/analysis/tree-sitter-parser.ts +223 -0
  96. package/src/cli/commands/crawl.test.ts +942 -0
  97. package/src/cli/commands/crawl.ts +141 -0
  98. package/src/cli/commands/index-cmd.test.ts +722 -0
  99. package/src/cli/commands/index-cmd.ts +105 -0
  100. package/src/cli/commands/mcp.test.ts +218 -0
  101. package/src/cli/commands/mcp.ts +18 -0
  102. package/src/cli/commands/plugin-api.test.ts +313 -0
  103. package/src/cli/commands/plugin-api.ts +45 -0
  104. package/src/cli/commands/search.test.ts +911 -0
  105. package/src/cli/commands/search.ts +113 -0
  106. package/src/cli/commands/serve.test.ts +329 -0
  107. package/src/cli/commands/serve.ts +28 -0
  108. package/src/cli/commands/setup.test.ts +820 -0
  109. package/src/cli/commands/setup.ts +153 -0
  110. package/src/cli/commands/store.test.ts +1003 -0
  111. package/src/cli/commands/store.ts +167 -0
  112. package/src/cli/index.ts +7 -0
  113. package/src/cli/program.ts +59 -0
  114. package/src/crawl/article-converter.test.ts +604 -0
  115. package/src/crawl/article-converter.ts +98 -0
  116. package/src/crawl/bridge.test.ts +674 -0
  117. package/src/crawl/bridge.ts +236 -0
  118. package/src/crawl/claude-client.test.ts +663 -0
  119. package/src/crawl/claude-client.ts +234 -0
  120. package/src/crawl/intelligent-crawler.test.ts +931 -0
  121. package/src/crawl/intelligent-crawler.ts +428 -0
  122. package/src/crawl/markdown-utils.test.ts +703 -0
  123. package/src/crawl/markdown-utils.ts +228 -0
  124. package/src/crawl/schemas.ts +114 -0
  125. package/src/db/embeddings.test.ts +63 -0
  126. package/src/db/embeddings.ts +69 -0
  127. package/src/db/index.ts +2 -0
  128. package/src/db/lance.test.ts +390 -0
  129. package/src/db/lance.ts +164 -0
  130. package/src/defaults/repos.ts +67 -0
  131. package/src/index.ts +107 -0
  132. package/src/mcp/cache.test.ts +202 -0
  133. package/src/mcp/cache.ts +103 -0
  134. package/src/mcp/commands/index.ts +20 -0
  135. package/src/mcp/commands/job.commands.ts +54 -0
  136. package/src/mcp/commands/meta.commands.ts +54 -0
  137. package/src/mcp/commands/registry.ts +183 -0
  138. package/src/mcp/commands/store.commands.ts +75 -0
  139. package/src/mcp/handlers/execute.handler.test.ts +179 -0
  140. package/src/mcp/handlers/execute.handler.ts +24 -0
  141. package/src/mcp/handlers/index.ts +43 -0
  142. package/src/mcp/handlers/job.handler.test.ts +189 -0
  143. package/src/mcp/handlers/job.handler.ts +116 -0
  144. package/src/mcp/handlers/search.handler.test.ts +334 -0
  145. package/src/mcp/handlers/search.handler.ts +209 -0
  146. package/src/mcp/handlers/store.handler.test.ts +415 -0
  147. package/src/mcp/handlers/store.handler.ts +295 -0
  148. package/src/mcp/schemas/index.test.ts +315 -0
  149. package/src/mcp/schemas/index.ts +138 -0
  150. package/src/mcp/server.test.ts +36 -0
  151. package/src/mcp/server.ts +162 -0
  152. package/src/mcp/types.ts +41 -0
  153. package/src/plugin/commands.test.ts +789 -0
  154. package/src/plugin/commands.ts +257 -0
  155. package/src/plugin/dependency-analyzer.test.ts +380 -0
  156. package/src/plugin/dependency-analyzer.ts +147 -0
  157. package/src/plugin/git-clone.test.ts +332 -0
  158. package/src/plugin/git-clone.ts +57 -0
  159. package/src/server/app.test.ts +752 -0
  160. package/src/server/app.ts +119 -0
  161. package/src/server/index.test.ts +477 -0
  162. package/src/server/index.ts +1 -0
  163. package/src/services/chunking.service.test.ts +363 -0
  164. package/src/services/chunking.service.ts +350 -0
  165. package/src/services/code-graph.service.test.ts +304 -0
  166. package/src/services/code-graph.service.ts +302 -0
  167. package/src/services/code-unit.service.test.ts +596 -0
  168. package/src/services/code-unit.service.ts +115 -0
  169. package/src/services/config.service.test.ts +127 -0
  170. package/src/services/config.service.ts +69 -0
  171. package/src/services/index.service.test.ts +1002 -0
  172. package/src/services/index.service.ts +266 -0
  173. package/src/services/index.ts +75 -0
  174. package/src/services/job.service.test.ts +418 -0
  175. package/src/services/job.service.ts +246 -0
  176. package/src/services/project-root.service.test.ts +506 -0
  177. package/src/services/project-root.service.ts +112 -0
  178. package/src/services/search.service.test.ts +1105 -0
  179. package/src/services/search.service.ts +892 -0
  180. package/src/services/services.test.ts +38 -0
  181. package/src/services/snippet.service.test.ts +205 -0
  182. package/src/services/snippet.service.ts +166 -0
  183. package/src/services/store.service.test.ts +474 -0
  184. package/src/services/store.service.ts +225 -0
  185. package/src/services/watch.service.test.ts +553 -0
  186. package/src/services/watch.service.ts +71 -0
  187. package/src/types/brands.test.ts +45 -0
  188. package/src/types/brands.ts +32 -0
  189. package/src/types/config.ts +79 -0
  190. package/src/types/document.ts +30 -0
  191. package/src/types/index.ts +66 -0
  192. package/src/types/job.ts +46 -0
  193. package/src/types/progress.ts +9 -0
  194. package/src/types/result.test.ts +44 -0
  195. package/src/types/result.ts +41 -0
  196. package/src/types/search.ts +95 -0
  197. package/src/types/store.test.ts +69 -0
  198. package/src/types/store.ts +47 -0
  199. package/src/utils/type-guards.test.ts +346 -0
  200. package/src/utils/type-guards.ts +61 -0
  201. package/src/workers/background-worker-cli.ts +105 -0
  202. package/src/workers/background-worker.test.ts +178 -0
  203. package/src/workers/background-worker.ts +294 -0
  204. package/src/workers/spawn-worker.test.ts +128 -0
  205. package/src/workers/spawn-worker.ts +49 -0
  206. package/tests/analysis/ast-parser.test.ts +98 -0
  207. package/tests/analysis/code-graph.test.ts +60 -0
  208. package/tests/fixtures/README.md +114 -0
  209. package/tests/fixtures/code-snippets/api/error-handling.ts +267 -0
  210. package/tests/fixtures/code-snippets/api/rest-controller.ts +303 -0
  211. package/tests/fixtures/code-snippets/auth/jwt-auth.ts +213 -0
  212. package/tests/fixtures/code-snippets/auth/oauth-flow.ts +245 -0
  213. package/tests/fixtures/code-snippets/database/repository-pattern.ts +272 -0
  214. package/tests/fixtures/corpus/VERSION.md +25 -0
  215. package/tests/fixtures/corpus/articles/jwt-authentication.md +97 -0
  216. package/tests/fixtures/corpus/articles/react-hooks-patterns.md +127 -0
  217. package/tests/fixtures/corpus/articles/typescript-generics.md +111 -0
  218. package/tests/fixtures/corpus/documentation/express-middleware.md +71 -0
  219. package/tests/fixtures/corpus/documentation/express-routing.md +83 -0
  220. package/tests/fixtures/corpus/documentation/node-streams.md +78 -0
  221. package/tests/fixtures/corpus/oss-repos/express/History.md +3871 -0
  222. package/tests/fixtures/corpus/oss-repos/express/LICENSE +24 -0
  223. package/tests/fixtures/corpus/oss-repos/express/Readme.md +276 -0
  224. package/tests/fixtures/corpus/oss-repos/express/SECURITY.md +56 -0
  225. package/tests/fixtures/corpus/oss-repos/express/benchmarks/Makefile +17 -0
  226. package/tests/fixtures/corpus/oss-repos/express/benchmarks/README.md +34 -0
  227. package/tests/fixtures/corpus/oss-repos/express/benchmarks/middleware.js +20 -0
  228. package/tests/fixtures/corpus/oss-repos/express/benchmarks/run +18 -0
  229. package/tests/fixtures/corpus/oss-repos/express/examples/README.md +29 -0
  230. package/tests/fixtures/corpus/oss-repos/express/examples/auth/index.js +134 -0
  231. package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/foot.ejs +2 -0
  232. package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/head.ejs +20 -0
  233. package/tests/fixtures/corpus/oss-repos/express/examples/auth/views/login.ejs +21 -0
  234. package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/db.js +9 -0
  235. package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/index.js +46 -0
  236. package/tests/fixtures/corpus/oss-repos/express/examples/content-negotiation/users.js +19 -0
  237. package/tests/fixtures/corpus/oss-repos/express/examples/cookie-sessions/index.js +25 -0
  238. package/tests/fixtures/corpus/oss-repos/express/examples/cookies/index.js +53 -0
  239. package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/CCTV/345/244/247/350/265/233/344/270/212/346/265/267/345/210/206/350/265/233/345/214/272.txt +2 -0
  240. package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/amazing.txt +1 -0
  241. package/tests/fixtures/corpus/oss-repos/express/examples/downloads/files/notes/groceries.txt +3 -0
  242. package/tests/fixtures/corpus/oss-repos/express/examples/downloads/index.js +40 -0
  243. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/index.js +57 -0
  244. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/public/stylesheets/style.css +4 -0
  245. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/footer.html +2 -0
  246. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/header.html +9 -0
  247. package/tests/fixtures/corpus/oss-repos/express/examples/ejs/views/users.html +10 -0
  248. package/tests/fixtures/corpus/oss-repos/express/examples/error/index.js +53 -0
  249. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/index.js +103 -0
  250. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/404.ejs +3 -0
  251. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/500.ejs +8 -0
  252. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/error_header.ejs +10 -0
  253. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/footer.ejs +2 -0
  254. package/tests/fixtures/corpus/oss-repos/express/examples/error-pages/views/index.ejs +20 -0
  255. package/tests/fixtures/corpus/oss-repos/express/examples/hello-world/index.js +15 -0
  256. package/tests/fixtures/corpus/oss-repos/express/examples/markdown/index.js +44 -0
  257. package/tests/fixtures/corpus/oss-repos/express/examples/markdown/views/index.md +4 -0
  258. package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v1.js +15 -0
  259. package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/controllers/api_v2.js +15 -0
  260. package/tests/fixtures/corpus/oss-repos/express/examples/multi-router/index.js +18 -0
  261. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/main/index.js +5 -0
  262. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/index.js +31 -0
  263. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/edit.ejs +17 -0
  264. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/pet/views/show.ejs +15 -0
  265. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/index.js +41 -0
  266. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/edit.hbs +27 -0
  267. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/list.hbs +18 -0
  268. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user/views/show.hbs +31 -0
  269. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/controllers/user-pet/index.js +22 -0
  270. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/db.js +16 -0
  271. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/index.js +95 -0
  272. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/lib/boot.js +83 -0
  273. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/public/style.css +14 -0
  274. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/404.ejs +13 -0
  275. package/tests/fixtures/corpus/oss-repos/express/examples/mvc/views/5xx.ejs +13 -0
  276. package/tests/fixtures/corpus/oss-repos/express/examples/online/index.js +61 -0
  277. package/tests/fixtures/corpus/oss-repos/express/examples/params/index.js +74 -0
  278. package/tests/fixtures/corpus/oss-repos/express/examples/resource/index.js +95 -0
  279. package/tests/fixtures/corpus/oss-repos/express/examples/route-map/index.js +75 -0
  280. package/tests/fixtures/corpus/oss-repos/express/examples/route-middleware/index.js +90 -0
  281. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/index.js +55 -0
  282. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/post.js +13 -0
  283. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/public/style.css +24 -0
  284. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/site.js +5 -0
  285. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/user.js +47 -0
  286. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/footer.ejs +2 -0
  287. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/header.ejs +9 -0
  288. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/index.ejs +10 -0
  289. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/posts/index.ejs +12 -0
  290. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/edit.ejs +23 -0
  291. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/index.ejs +14 -0
  292. package/tests/fixtures/corpus/oss-repos/express/examples/route-separation/views/users/view.ejs +9 -0
  293. package/tests/fixtures/corpus/oss-repos/express/examples/search/index.js +61 -0
  294. package/tests/fixtures/corpus/oss-repos/express/examples/search/public/client.js +15 -0
  295. package/tests/fixtures/corpus/oss-repos/express/examples/search/public/index.html +21 -0
  296. package/tests/fixtures/corpus/oss-repos/express/examples/session/index.js +37 -0
  297. package/tests/fixtures/corpus/oss-repos/express/examples/session/redis.js +39 -0
  298. package/tests/fixtures/corpus/oss-repos/express/examples/static-files/index.js +43 -0
  299. package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/css/style.css +3 -0
  300. package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/hello.txt +1 -0
  301. package/tests/fixtures/corpus/oss-repos/express/examples/static-files/public/js/app.js +1 -0
  302. package/tests/fixtures/corpus/oss-repos/express/examples/vhost/index.js +53 -0
  303. package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/github-view.js +53 -0
  304. package/tests/fixtures/corpus/oss-repos/express/examples/view-constructor/index.js +48 -0
  305. package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/index.js +155 -0
  306. package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/user.js +36 -0
  307. package/tests/fixtures/corpus/oss-repos/express/examples/view-locals/views/index.ejs +20 -0
  308. package/tests/fixtures/corpus/oss-repos/express/examples/web-service/index.js +117 -0
  309. package/tests/fixtures/corpus/oss-repos/express/index.js +11 -0
  310. package/tests/fixtures/corpus/oss-repos/express/lib/application.js +631 -0
  311. package/tests/fixtures/corpus/oss-repos/express/lib/express.js +81 -0
  312. package/tests/fixtures/corpus/oss-repos/express/lib/request.js +514 -0
  313. package/tests/fixtures/corpus/oss-repos/express/lib/response.js +1053 -0
  314. package/tests/fixtures/corpus/oss-repos/express/lib/utils.js +271 -0
  315. package/tests/fixtures/corpus/oss-repos/express/lib/view.js +205 -0
  316. package/tests/fixtures/corpus/oss-repos/express/package.json +99 -0
  317. package/tests/fixtures/corpus/oss-repos/express/test/Route.js +274 -0
  318. package/tests/fixtures/corpus/oss-repos/express/test/Router.js +636 -0
  319. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/auth.js +117 -0
  320. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/content-negotiation.js +49 -0
  321. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookie-sessions.js +38 -0
  322. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/cookies.js +71 -0
  323. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/downloads.js +47 -0
  324. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/ejs.js +17 -0
  325. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error-pages.js +99 -0
  326. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/error.js +29 -0
  327. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/hello-world.js +21 -0
  328. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/markdown.js +21 -0
  329. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/multi-router.js +44 -0
  330. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/mvc.js +132 -0
  331. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/params.js +44 -0
  332. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/resource.js +68 -0
  333. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-map.js +45 -0
  334. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/route-separation.js +97 -0
  335. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/vhost.js +46 -0
  336. package/tests/fixtures/corpus/oss-repos/express/test/acceptance/web-service.js +105 -0
  337. package/tests/fixtures/corpus/oss-repos/express/test/app.all.js +38 -0
  338. package/tests/fixtures/corpus/oss-repos/express/test/app.engine.js +83 -0
  339. package/tests/fixtures/corpus/oss-repos/express/test/app.head.js +66 -0
  340. package/tests/fixtures/corpus/oss-repos/express/test/app.js +120 -0
  341. package/tests/fixtures/corpus/oss-repos/express/test/app.listen.js +55 -0
  342. package/tests/fixtures/corpus/oss-repos/express/test/app.locals.js +26 -0
  343. package/tests/fixtures/corpus/oss-repos/express/test/app.options.js +116 -0
  344. package/tests/fixtures/corpus/oss-repos/express/test/app.param.js +323 -0
  345. package/tests/fixtures/corpus/oss-repos/express/test/app.render.js +374 -0
  346. package/tests/fixtures/corpus/oss-repos/express/test/app.request.js +143 -0
  347. package/tests/fixtures/corpus/oss-repos/express/test/app.response.js +143 -0
  348. package/tests/fixtures/corpus/oss-repos/express/test/app.route.js +197 -0
  349. package/tests/fixtures/corpus/oss-repos/express/test/app.router.js +1217 -0
  350. package/tests/fixtures/corpus/oss-repos/express/test/app.routes.error.js +62 -0
  351. package/tests/fixtures/corpus/oss-repos/express/test/app.use.js +542 -0
  352. package/tests/fixtures/corpus/oss-repos/express/test/config.js +207 -0
  353. package/tests/fixtures/corpus/oss-repos/express/test/exports.js +82 -0
  354. package/tests/fixtures/corpus/oss-repos/express/test/express.json.js +755 -0
  355. package/tests/fixtures/corpus/oss-repos/express/test/express.raw.js +513 -0
  356. package/tests/fixtures/corpus/oss-repos/express/test/express.static.js +815 -0
  357. package/tests/fixtures/corpus/oss-repos/express/test/express.text.js +566 -0
  358. package/tests/fixtures/corpus/oss-repos/express/test/express.urlencoded.js +828 -0
  359. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/% of dogs.txt +1 -0
  360. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/.name +1 -0
  361. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/index.html +1 -0
  362. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/blog/post/index.tmpl +1 -0
  363. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/broken.send +0 -0
  364. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/name.tmpl +1 -0
  365. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/default_layout/user.tmpl +1 -0
  366. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/email.tmpl +1 -0
  367. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/empty.txt +0 -0
  368. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/local_layout/user.tmpl +1 -0
  369. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.tmpl +1 -0
  370. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/name.txt +1 -0
  371. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/nums.txt +1 -0
  372. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/pets/names.txt +1 -0
  373. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/snow /342/230/203/.gitkeep +0 -0
  374. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.html +1 -0
  375. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/todo.txt +1 -0
  376. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.html +1 -0
  377. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/user.tmpl +1 -0
  378. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/index.html +1 -0
  379. package/tests/fixtures/corpus/oss-repos/express/test/fixtures/users/tobi.txt +1 -0
  380. package/tests/fixtures/corpus/oss-repos/express/test/middleware.basic.js +42 -0
  381. package/tests/fixtures/corpus/oss-repos/express/test/regression.js +20 -0
  382. package/tests/fixtures/corpus/oss-repos/express/test/req.accepts.js +125 -0
  383. package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsCharsets.js +50 -0
  384. package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsEncodings.js +39 -0
  385. package/tests/fixtures/corpus/oss-repos/express/test/req.acceptsLanguages.js +57 -0
  386. package/tests/fixtures/corpus/oss-repos/express/test/req.baseUrl.js +88 -0
  387. package/tests/fixtures/corpus/oss-repos/express/test/req.fresh.js +70 -0
  388. package/tests/fixtures/corpus/oss-repos/express/test/req.get.js +60 -0
  389. package/tests/fixtures/corpus/oss-repos/express/test/req.host.js +156 -0
  390. package/tests/fixtures/corpus/oss-repos/express/test/req.hostname.js +188 -0
  391. package/tests/fixtures/corpus/oss-repos/express/test/req.ip.js +113 -0
  392. package/tests/fixtures/corpus/oss-repos/express/test/req.ips.js +71 -0
  393. package/tests/fixtures/corpus/oss-repos/express/test/req.is.js +169 -0
  394. package/tests/fixtures/corpus/oss-repos/express/test/req.path.js +20 -0
  395. package/tests/fixtures/corpus/oss-repos/express/test/req.protocol.js +113 -0
  396. package/tests/fixtures/corpus/oss-repos/express/test/req.query.js +106 -0
  397. package/tests/fixtures/corpus/oss-repos/express/test/req.range.js +104 -0
  398. package/tests/fixtures/corpus/oss-repos/express/test/req.route.js +28 -0
  399. package/tests/fixtures/corpus/oss-repos/express/test/req.secure.js +101 -0
  400. package/tests/fixtures/corpus/oss-repos/express/test/req.signedCookies.js +37 -0
  401. package/tests/fixtures/corpus/oss-repos/express/test/req.stale.js +50 -0
  402. package/tests/fixtures/corpus/oss-repos/express/test/req.subdomains.js +173 -0
  403. package/tests/fixtures/corpus/oss-repos/express/test/req.xhr.js +42 -0
  404. package/tests/fixtures/corpus/oss-repos/express/test/res.append.js +116 -0
  405. package/tests/fixtures/corpus/oss-repos/express/test/res.attachment.js +79 -0
  406. package/tests/fixtures/corpus/oss-repos/express/test/res.clearCookie.js +62 -0
  407. package/tests/fixtures/corpus/oss-repos/express/test/res.cookie.js +295 -0
  408. package/tests/fixtures/corpus/oss-repos/express/test/res.download.js +487 -0
  409. package/tests/fixtures/corpus/oss-repos/express/test/res.format.js +248 -0
  410. package/tests/fixtures/corpus/oss-repos/express/test/res.get.js +21 -0
  411. package/tests/fixtures/corpus/oss-repos/express/test/res.json.js +186 -0
  412. package/tests/fixtures/corpus/oss-repos/express/test/res.jsonp.js +344 -0
  413. package/tests/fixtures/corpus/oss-repos/express/test/res.links.js +65 -0
  414. package/tests/fixtures/corpus/oss-repos/express/test/res.locals.js +40 -0
  415. package/tests/fixtures/corpus/oss-repos/express/test/res.location.js +316 -0
  416. package/tests/fixtures/corpus/oss-repos/express/test/res.redirect.js +214 -0
  417. package/tests/fixtures/corpus/oss-repos/express/test/res.render.js +367 -0
  418. package/tests/fixtures/corpus/oss-repos/express/test/res.send.js +569 -0
  419. package/tests/fixtures/corpus/oss-repos/express/test/res.sendFile.js +913 -0
  420. package/tests/fixtures/corpus/oss-repos/express/test/res.sendStatus.js +44 -0
  421. package/tests/fixtures/corpus/oss-repos/express/test/res.set.js +124 -0
  422. package/tests/fixtures/corpus/oss-repos/express/test/res.status.js +206 -0
  423. package/tests/fixtures/corpus/oss-repos/express/test/res.type.js +46 -0
  424. package/tests/fixtures/corpus/oss-repos/express/test/res.vary.js +90 -0
  425. package/tests/fixtures/corpus/oss-repos/express/test/support/env.js +3 -0
  426. package/tests/fixtures/corpus/oss-repos/express/test/support/tmpl.js +36 -0
  427. package/tests/fixtures/corpus/oss-repos/express/test/support/utils.js +86 -0
  428. package/tests/fixtures/corpus/oss-repos/express/test/utils.js +83 -0
  429. package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/Dockerfile +11 -0
  430. package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/devcontainer.json +21 -0
  431. package/tests/fixtures/corpus/oss-repos/hono/.devcontainer/docker-compose.yml +18 -0
  432. package/tests/fixtures/corpus/oss-repos/hono/.eslintignore +1 -0
  433. package/tests/fixtures/corpus/oss-repos/hono/.eslintrc.cjs +9 -0
  434. package/tests/fixtures/corpus/oss-repos/hono/.gitpod.yml +9 -0
  435. package/tests/fixtures/corpus/oss-repos/hono/.prettierrc +9 -0
  436. package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-default.ts +15 -0
  437. package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/jsx-runtime-dom.ts +15 -0
  438. package/tests/fixtures/corpus/oss-repos/hono/.vitest.config/setup-vitest.ts +47 -0
  439. package/tests/fixtures/corpus/oss-repos/hono/LICENSE +21 -0
  440. package/tests/fixtures/corpus/oss-repos/hono/README.md +91 -0
  441. package/tests/fixtures/corpus/oss-repos/hono/build.ts +80 -0
  442. package/tests/fixtures/corpus/oss-repos/hono/bun.lockb +0 -0
  443. package/tests/fixtures/corpus/oss-repos/hono/bunfig.toml +7 -0
  444. package/tests/fixtures/corpus/oss-repos/hono/codecov.yml +13 -0
  445. package/tests/fixtures/corpus/oss-repos/hono/docs/CODE_OF_CONDUCT.md +128 -0
  446. package/tests/fixtures/corpus/oss-repos/hono/docs/CONTRIBUTING.md +62 -0
  447. package/tests/fixtures/corpus/oss-repos/hono/docs/MIGRATION.md +295 -0
  448. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.png +0 -0
  449. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.pxm +0 -0
  450. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-logo.svg +6 -0
  451. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-title.png +0 -0
  452. package/tests/fixtures/corpus/oss-repos/hono/docs/images/hono-title.pxm +0 -0
  453. package/tests/fixtures/corpus/oss-repos/hono/jsr.json +119 -0
  454. package/tests/fixtures/corpus/oss-repos/hono/package.cjs.json +3 -0
  455. package/tests/fixtures/corpus/oss-repos/hono/package.json +650 -0
  456. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/handler.ts +492 -0
  457. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/index.ts +13 -0
  458. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/aws-lambda/types.ts +144 -0
  459. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/conninfo.ts +28 -0
  460. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/index.ts +9 -0
  461. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/serve-static.ts +35 -0
  462. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/server.ts +30 -0
  463. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/ssg.ts +27 -0
  464. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/bun/websocket.ts +110 -0
  465. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/handler.ts +120 -0
  466. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-pages/index.ts +7 -0
  467. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/conninfo.ts +7 -0
  468. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/index.ts +8 -0
  469. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static-module.ts +12 -0
  470. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/serve-static.ts +39 -0
  471. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/utils.ts +50 -0
  472. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/cloudflare-workers/websocket.ts +50 -0
  473. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/conninfo.ts +17 -0
  474. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/deno.d.ts +28 -0
  475. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/index.ts +9 -0
  476. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/serve-static.ts +40 -0
  477. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/ssg.ts +27 -0
  478. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/deno/websocket.ts +51 -0
  479. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/conninfo.ts +15 -0
  480. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/handler.ts +189 -0
  481. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/lambda-edge/index.ts +14 -0
  482. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/handler.ts +10 -0
  483. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/index.ts +6 -0
  484. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/netlify/mod.ts +1 -0
  485. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/handler.ts +34 -0
  486. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/index.ts +5 -0
  487. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/service-worker/types.ts +14 -0
  488. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/conninfo.ts +8 -0
  489. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/handler.ts +9 -0
  490. package/tests/fixtures/corpus/oss-repos/hono/src/adapter/vercel/index.ts +7 -0
  491. package/tests/fixtures/corpus/oss-repos/hono/src/client/client.ts +214 -0
  492. package/tests/fixtures/corpus/oss-repos/hono/src/client/index.ts +14 -0
  493. package/tests/fixtures/corpus/oss-repos/hono/src/client/types.ts +180 -0
  494. package/tests/fixtures/corpus/oss-repos/hono/src/client/utils.ts +54 -0
  495. package/tests/fixtures/corpus/oss-repos/hono/src/compose.ts +94 -0
  496. package/tests/fixtures/corpus/oss-repos/hono/src/context.ts +914 -0
  497. package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/accepts.ts +81 -0
  498. package/tests/fixtures/corpus/oss-repos/hono/src/helper/accepts/index.ts +6 -0
  499. package/tests/fixtures/corpus/oss-repos/hono/src/helper/adapter/index.ts +85 -0
  500. package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/index.ts +6 -0
  501. package/tests/fixtures/corpus/oss-repos/hono/src/helper/conninfo/types.ts +45 -0
  502. package/tests/fixtures/corpus/oss-repos/hono/src/helper/cookie/index.ts +130 -0
  503. package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/common.ts +243 -0
  504. package/tests/fixtures/corpus/oss-repos/hono/src/helper/css/index.ts +220 -0
  505. package/tests/fixtures/corpus/oss-repos/hono/src/helper/dev/index.ts +79 -0
  506. package/tests/fixtures/corpus/oss-repos/hono/src/helper/factory/index.ts +246 -0
  507. package/tests/fixtures/corpus/oss-repos/hono/src/helper/html/index.ts +56 -0
  508. package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/index.ts +13 -0
  509. package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/middleware.ts +79 -0
  510. package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/ssg.ts +388 -0
  511. package/tests/fixtures/corpus/oss-repos/hono/src/helper/ssg/utils.ts +71 -0
  512. package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/index.ts +9 -0
  513. package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/sse.ts +89 -0
  514. package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/stream.ts +36 -0
  515. package/tests/fixtures/corpus/oss-repos/hono/src/helper/streaming/text.ts +15 -0
  516. package/tests/fixtures/corpus/oss-repos/hono/src/helper/testing/index.ts +26 -0
  517. package/tests/fixtures/corpus/oss-repos/hono/src/helper/websocket/index.ts +57 -0
  518. package/tests/fixtures/corpus/oss-repos/hono/src/hono-base.ts +523 -0
  519. package/tests/fixtures/corpus/oss-repos/hono/src/hono.ts +34 -0
  520. package/tests/fixtures/corpus/oss-repos/hono/src/http-exception.ts +78 -0
  521. package/tests/fixtures/corpus/oss-repos/hono/src/index.ts +51 -0
  522. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/base.ts +419 -0
  523. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/children.ts +20 -0
  524. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/components.ts +195 -0
  525. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/constants.ts +5 -0
  526. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/context.ts +50 -0
  527. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/client.ts +89 -0
  528. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/components.ts +39 -0
  529. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/context.ts +52 -0
  530. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/css.ts +246 -0
  531. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/hooks/index.ts +91 -0
  532. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/index.ts +159 -0
  533. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/intrinsic-element/components.ts +398 -0
  534. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-dev-runtime.ts +22 -0
  535. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/jsx-runtime.ts +7 -0
  536. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/render.ts +772 -0
  537. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/server.ts +70 -0
  538. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/dom/utils.ts +7 -0
  539. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/hooks/index.ts +426 -0
  540. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/index.ts +114 -0
  541. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/common.ts +11 -0
  542. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-element/components.ts +196 -0
  543. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/intrinsic-elements.ts +924 -0
  544. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-dev-runtime.ts +26 -0
  545. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/jsx-runtime.ts +18 -0
  546. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/streaming.ts +184 -0
  547. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/types.ts +41 -0
  548. package/tests/fixtures/corpus/oss-repos/hono/src/jsx/utils.ts +36 -0
  549. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/basic-auth/index.ts +128 -0
  550. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/bearer-auth/index.ts +159 -0
  551. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/body-limit/index.ts +115 -0
  552. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cache/index.ts +127 -0
  553. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/combine/index.ts +153 -0
  554. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/compress/index.ts +79 -0
  555. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/context-storage/index.ts +55 -0
  556. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/cors/index.ts +141 -0
  557. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/csrf/index.ts +90 -0
  558. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/etag/index.ts +88 -0
  559. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/ip-restriction/index.ts +178 -0
  560. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jsx-renderer/index.ts +158 -0
  561. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/index.ts +8 -0
  562. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/jwt/jwt.ts +159 -0
  563. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/logger/index.ts +93 -0
  564. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/method-override/index.ts +146 -0
  565. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/powered-by/index.ts +13 -0
  566. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/pretty-json/index.ts +50 -0
  567. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/index.ts +8 -0
  568. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/request-id/request-id.ts +59 -0
  569. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/index.ts +8 -0
  570. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/permissions-policy.ts +86 -0
  571. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/secure-headers/secure-headers.ts +319 -0
  572. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/serve-static/index.ts +140 -0
  573. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timeout/index.ts +58 -0
  574. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/index.ts +7 -0
  575. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/timing/timing.ts +225 -0
  576. package/tests/fixtures/corpus/oss-repos/hono/src/middleware/trailing-slash/index.ts +71 -0
  577. package/tests/fixtures/corpus/oss-repos/hono/src/preset/quick.ts +24 -0
  578. package/tests/fixtures/corpus/oss-repos/hono/src/preset/tiny.ts +20 -0
  579. package/tests/fixtures/corpus/oss-repos/hono/src/request.ts +403 -0
  580. package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/index.ts +6 -0
  581. package/tests/fixtures/corpus/oss-repos/hono/src/router/linear-router/router.ts +132 -0
  582. package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/index.ts +6 -0
  583. package/tests/fixtures/corpus/oss-repos/hono/src/router/pattern-router/router.ts +54 -0
  584. package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/index.ts +6 -0
  585. package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/node.ts +159 -0
  586. package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/router.ts +274 -0
  587. package/tests/fixtures/corpus/oss-repos/hono/src/router/reg-exp-router/trie.ts +74 -0
  588. package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/index.ts +6 -0
  589. package/tests/fixtures/corpus/oss-repos/hono/src/router/smart-router/router.ts +69 -0
  590. package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/index.ts +6 -0
  591. package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/node.ts +205 -0
  592. package/tests/fixtures/corpus/oss-repos/hono/src/router/trie-router/router.ts +28 -0
  593. package/tests/fixtures/corpus/oss-repos/hono/src/router.ts +103 -0
  594. package/tests/fixtures/corpus/oss-repos/hono/src/types.ts +2009 -0
  595. package/tests/fixtures/corpus/oss-repos/hono/src/utils/basic-auth.ts +26 -0
  596. package/tests/fixtures/corpus/oss-repos/hono/src/utils/body.ts +225 -0
  597. package/tests/fixtures/corpus/oss-repos/hono/src/utils/buffer.ts +65 -0
  598. package/tests/fixtures/corpus/oss-repos/hono/src/utils/color.ts +26 -0
  599. package/tests/fixtures/corpus/oss-repos/hono/src/utils/concurrent.ts +55 -0
  600. package/tests/fixtures/corpus/oss-repos/hono/src/utils/cookie.ts +230 -0
  601. package/tests/fixtures/corpus/oss-repos/hono/src/utils/crypto.ts +65 -0
  602. package/tests/fixtures/corpus/oss-repos/hono/src/utils/encode.ts +34 -0
  603. package/tests/fixtures/corpus/oss-repos/hono/src/utils/filepath.ts +56 -0
  604. package/tests/fixtures/corpus/oss-repos/hono/src/utils/handler.ts +15 -0
  605. package/tests/fixtures/corpus/oss-repos/hono/src/utils/html.ts +182 -0
  606. package/tests/fixtures/corpus/oss-repos/hono/src/utils/http-status.ts +69 -0
  607. package/tests/fixtures/corpus/oss-repos/hono/src/utils/ipaddr.ts +113 -0
  608. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/index.ts +7 -0
  609. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwa.ts +23 -0
  610. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jws.ts +226 -0
  611. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/jwt.ts +114 -0
  612. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/types.ts +83 -0
  613. package/tests/fixtures/corpus/oss-repos/hono/src/utils/jwt/utf8.ts +7 -0
  614. package/tests/fixtures/corpus/oss-repos/hono/src/utils/mime.ts +142 -0
  615. package/tests/fixtures/corpus/oss-repos/hono/src/utils/stream.ts +96 -0
  616. package/tests/fixtures/corpus/oss-repos/hono/src/utils/types.ts +105 -0
  617. package/tests/fixtures/corpus/oss-repos/hono/src/utils/url.ts +310 -0
  618. package/tests/fixtures/corpus/oss-repos/hono/src/validator/index.ts +7 -0
  619. package/tests/fixtures/corpus/oss-repos/hono/src/validator/validator.ts +151 -0
  620. package/tests/fixtures/corpus/oss-repos/hono/tsconfig.build.json +23 -0
  621. package/tests/fixtures/corpus/oss-repos/hono/tsconfig.json +28 -0
  622. package/tests/fixtures/corpus/oss-repos/hono/vitest.config.ts +34 -0
  623. package/tests/fixtures/corpus/oss-repos/hono/yarn.lock +6232 -0
  624. package/tests/fixtures/documentation/api-reference.md +412 -0
  625. package/tests/fixtures/documentation/architecture.md +214 -0
  626. package/tests/fixtures/documentation/deployment-guide.md +420 -0
  627. package/tests/fixtures/github-readmes/express.md +133 -0
  628. package/tests/fixtures/github-readmes/nextjs.md +106 -0
  629. package/tests/fixtures/github-readmes/react.md +74 -0
  630. package/tests/fixtures/github-readmes/typescript.md +93 -0
  631. package/tests/fixtures/github-readmes/vite.md +79 -0
  632. package/tests/fixtures/queries/core.json +125 -0
  633. package/tests/fixtures/queries/extended.json +427 -0
  634. package/tests/fixtures/queries/generated/.gitkeep +0 -0
  635. package/tests/fixtures/test-server.ts +267 -0
  636. package/tests/helpers/performance-metrics.ts +387 -0
  637. package/tests/helpers/search-relevance.ts +381 -0
  638. package/tests/integration/cli-consistency.test.ts +299 -0
  639. package/tests/integration/cli.test.ts +69 -0
  640. package/tests/integration/e2e-workflow.test.ts +612 -0
  641. package/tests/integration/python-bridge.test.ts +183 -0
  642. package/tests/integration/search-quality.test.ts +718 -0
  643. package/tests/integration/stress.test.ts +326 -0
  644. package/tests/mcp/server.test.ts +15 -0
  645. package/tests/scripts/schemas/evaluation.json +44 -0
  646. package/tests/scripts/schemas/query-generation.json +21 -0
  647. package/tests/services/code-unit.service.test.ts +47 -0
  648. package/tests/services/search.progressive-context.test.ts +35 -0
  649. package/tsconfig.json +34 -0
  650. package/tsup.config.ts +15 -0
  651. package/turndown-plugin-gfm.d.ts +29 -0
  652. package/vitest.config.ts +79 -0
@@ -0,0 +1,2009 @@
1
+ /**
2
+ * @module
3
+ * This module contains some type definitions for the Hono modules.
4
+ */
5
+
6
+ /* eslint-disable @typescript-eslint/no-unused-vars */
7
+ /* eslint-disable @typescript-eslint/no-explicit-any */
8
+ /* eslint-disable @typescript-eslint/ban-types */
9
+ import type { Context } from './context'
10
+ import type { Hono } from './hono'
11
+ import type { StatusCode } from './utils/http-status'
12
+ import type {
13
+ IfAnyThenEmptyObject,
14
+ IsAny,
15
+ JSONValue,
16
+ RemoveBlankRecord,
17
+ Simplify,
18
+ UnionToIntersection,
19
+ } from './utils/types'
20
+
21
+ ////////////////////////////////////////
22
+ ////// //////
23
+ ////// Values //////
24
+ ////// //////
25
+ ////////////////////////////////////////
26
+
27
+ export type Bindings = object
28
+ export type Variables = object
29
+
30
+ export type BlankEnv = {}
31
+ export type Env = {
32
+ Bindings?: Bindings
33
+ Variables?: Variables
34
+ }
35
+
36
+ export type Next = () => Promise<void>
37
+
38
+ export type ExtractInput<I extends Input | Input['in']> = I extends Input
39
+ ? unknown extends I['in']
40
+ ? {}
41
+ : I['in']
42
+ : I
43
+ export type Input = {
44
+ in?: {}
45
+ out?: {}
46
+ outputFormat?: ResponseFormat
47
+ }
48
+
49
+ export type BlankSchema = {}
50
+ export type BlankInput = {}
51
+
52
+ ////////////////////////////////////////
53
+ ////// //////
54
+ ////// Routes //////
55
+ ////// //////
56
+ ////////////////////////////////////////
57
+
58
+ export interface RouterRoute {
59
+ path: string
60
+ method: string
61
+ handler: H
62
+ }
63
+
64
+ ////////////////////////////////////////
65
+ ////// //////
66
+ ////// Handlers //////
67
+ ////// //////
68
+ ////////////////////////////////////////
69
+
70
+ export type HandlerResponse<O> = Response | TypedResponse<O> | Promise<Response | TypedResponse<O>>
71
+
72
+ export type Handler<
73
+ E extends Env = any,
74
+ P extends string = any,
75
+ I extends Input = BlankInput,
76
+ R extends HandlerResponse<any> = any
77
+ > = (c: Context<E, P, I>, next: Next) => R
78
+
79
+ export type MiddlewareHandler<
80
+ E extends Env = any,
81
+ P extends string = string,
82
+ I extends Input = {}
83
+ > = (c: Context<E, P, I>, next: Next) => Promise<Response | void>
84
+
85
+ export type H<
86
+ E extends Env = any,
87
+ P extends string = any,
88
+ I extends Input = BlankInput,
89
+ R extends HandlerResponse<any> = any
90
+ > = Handler<E, P, I, R> | MiddlewareHandler<E, P, I>
91
+
92
+ export type NotFoundHandler<E extends Env = any> = (c: Context<E>) => Response | Promise<Response>
93
+
94
+ export interface HTTPResponseError extends Error {
95
+ getResponse: () => Response
96
+ }
97
+ export type ErrorHandler<E extends Env = any> = (
98
+ err: Error | HTTPResponseError,
99
+ c: Context<E>
100
+ ) => Response | Promise<Response>
101
+
102
+ ////////////////////////////////////////
103
+ ////// //////
104
+ ////// HandlerInterface //////
105
+ ////// //////
106
+ ////////////////////////////////////////
107
+
108
+ export interface HandlerInterface<
109
+ E extends Env = Env,
110
+ M extends string = string,
111
+ S extends Schema = BlankSchema,
112
+ BasePath extends string = '/'
113
+ > {
114
+ // app.get(handler)
115
+ <
116
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
117
+ I extends Input = BlankInput,
118
+ R extends HandlerResponse<any> = any,
119
+ E2 extends Env = E
120
+ >(
121
+ handler: H<E2, P, I, R>
122
+ ): Hono<IntersectNonAnyTypes<[E, E2]>, S & ToSchema<M, P, I, MergeTypedResponse<R>>, BasePath>
123
+
124
+ // app.get(handler x2)
125
+ <
126
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
127
+ I extends Input = BlankInput,
128
+ I2 extends Input = I,
129
+ R extends HandlerResponse<any> = any,
130
+ E2 extends Env = E,
131
+ E3 extends Env = IntersectNonAnyTypes<[E, E2]>
132
+ >(
133
+ ...handlers: [H<E2, P, I>, H<E3, P, I2, R>]
134
+ ): Hono<
135
+ IntersectNonAnyTypes<[E, E2, E3]>,
136
+ S & ToSchema<M, P, I2, MergeTypedResponse<R>>,
137
+ BasePath
138
+ >
139
+
140
+ // app.get(path, handler)
141
+ <
142
+ P extends string,
143
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
144
+ R extends HandlerResponse<any> = any,
145
+ I extends Input = BlankInput,
146
+ E2 extends Env = E
147
+ >(
148
+ path: P,
149
+ handler: H<E2, MergedPath, I, R>
150
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>
151
+
152
+ // app.get(handler x 3)
153
+ <
154
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
155
+ R extends HandlerResponse<any> = any,
156
+ I extends Input = BlankInput,
157
+ I2 extends Input = I,
158
+ I3 extends Input = I & I2,
159
+ E2 extends Env = E,
160
+ E3 extends Env = E,
161
+ E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>
162
+ >(
163
+ ...handlers: [H<E2, P, I>, H<E3, P, I2>, H<E4, P, I3, R>]
164
+ ): Hono<
165
+ IntersectNonAnyTypes<[E, E2, E3, E4]>,
166
+ S & ToSchema<M, P, I3, MergeTypedResponse<R>>,
167
+ BasePath
168
+ >
169
+
170
+ // app.get(path, handler x2)
171
+ <
172
+ P extends string,
173
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
174
+ R extends HandlerResponse<any> = any,
175
+ I extends Input = BlankInput,
176
+ I2 extends Input = I,
177
+ E2 extends Env = E,
178
+ E3 extends Env = IntersectNonAnyTypes<[E, E2]>
179
+ >(
180
+ path: P,
181
+ ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2, R>]
182
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I2, MergeTypedResponse<R>>, BasePath>
183
+
184
+ // app.get(handler x 4)
185
+ <
186
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
187
+ R extends HandlerResponse<any> = any,
188
+ I extends Input = BlankInput,
189
+ I2 extends Input = I,
190
+ I3 extends Input = I & I2,
191
+ I4 extends Input = I & I2 & I3,
192
+ E2 extends Env = E,
193
+ E3 extends Env = E,
194
+ E4 extends Env = E,
195
+ E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>
196
+ >(
197
+ ...handlers: [H<E2, P, I>, H<E3, P, I2>, H<E4, P, I3>, H<E5, P, I4, R>]
198
+ ): Hono<
199
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5]>,
200
+ S & ToSchema<M, P, I4, MergeTypedResponse<R>>,
201
+ BasePath
202
+ >
203
+
204
+ // app.get(path, handler x3)
205
+ <
206
+ P extends string,
207
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
208
+ R extends HandlerResponse<any> = any,
209
+ I extends Input = BlankInput,
210
+ I2 extends Input = I,
211
+ I3 extends Input = I & I2,
212
+ E2 extends Env = E,
213
+ E3 extends Env = E,
214
+ E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>
215
+ >(
216
+ path: P,
217
+ ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2>, H<E4, MergedPath, I3, R>]
218
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I3, MergeTypedResponse<R>>, BasePath>
219
+
220
+ // app.get(handler x 5)
221
+ <
222
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
223
+ R extends HandlerResponse<any> = any,
224
+ I extends Input = BlankInput,
225
+ I2 extends Input = I,
226
+ I3 extends Input = I & I2,
227
+ I4 extends Input = I & I2 & I3,
228
+ I5 extends Input = I & I2 & I3 & I4,
229
+ E2 extends Env = E,
230
+ E3 extends Env = E,
231
+ E4 extends Env = E,
232
+ E5 extends Env = E,
233
+ E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>
234
+ >(
235
+ ...handlers: [H<E2, P, I>, H<E3, P, I2>, H<E4, P, I3>, H<E5, P, I4>, H<E6, P, I5, R>]
236
+ ): Hono<
237
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>,
238
+ S & ToSchema<M, P, I5, MergeTypedResponse<R>>,
239
+ BasePath
240
+ >
241
+
242
+ // app.get(path, handler x4)
243
+ <
244
+ P extends string,
245
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
246
+ R extends HandlerResponse<any> = any,
247
+ I extends Input = BlankInput,
248
+ I2 extends Input = I,
249
+ I3 extends Input = I & I2,
250
+ I4 extends Input = I & I2 & I3,
251
+ E2 extends Env = E,
252
+ E3 extends Env = E,
253
+ E4 extends Env = E,
254
+ E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>
255
+ >(
256
+ path: P,
257
+ ...handlers: [
258
+ H<E2, MergedPath, I>,
259
+ H<E3, MergedPath, I2>,
260
+ H<E4, MergedPath, I3>,
261
+ H<E5, MergedPath, I4, R>
262
+ ]
263
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I4, MergeTypedResponse<R>>, BasePath>
264
+
265
+ // app.get(handler x 6)
266
+ <
267
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
268
+ R extends HandlerResponse<any> = any,
269
+ I extends Input = BlankInput,
270
+ I2 extends Input = I,
271
+ I3 extends Input = I & I2,
272
+ I4 extends Input = I & I2 & I3,
273
+ I5 extends Input = I & I2 & I3 & I4,
274
+ I6 extends Input = I & I2 & I3 & I4 & I5,
275
+ E2 extends Env = E,
276
+ E3 extends Env = E,
277
+ E4 extends Env = E,
278
+ E5 extends Env = E,
279
+ E6 extends Env = E,
280
+ E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>
281
+ >(
282
+ ...handlers: [
283
+ H<E2, P, I>,
284
+ H<E3, P, I2>,
285
+ H<E4, P, I3>,
286
+ H<E5, P, I4>,
287
+ H<E6, P, I5>,
288
+ H<E7, P, I6, R>
289
+ ]
290
+ ): Hono<
291
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>,
292
+ S & ToSchema<M, P, I6, MergeTypedResponse<R>>,
293
+ BasePath
294
+ >
295
+
296
+ // app.get(path, handler x5)
297
+ <
298
+ P extends string,
299
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
300
+ R extends HandlerResponse<any> = any,
301
+ I extends Input = BlankInput,
302
+ I2 extends Input = I,
303
+ I3 extends Input = I & I2,
304
+ I4 extends Input = I & I2 & I3,
305
+ I5 extends Input = I & I2 & I3 & I4,
306
+ E2 extends Env = E,
307
+ E3 extends Env = E,
308
+ E4 extends Env = E,
309
+ E5 extends Env = E,
310
+ E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>
311
+ >(
312
+ path: P,
313
+ ...handlers: [
314
+ H<E2, MergedPath, I>,
315
+ H<E3, MergedPath, I2>,
316
+ H<E4, MergedPath, I3>,
317
+ H<E5, MergedPath, I4>,
318
+ H<E6, MergedPath, I5, R>
319
+ ]
320
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I5, MergeTypedResponse<R>>, BasePath>
321
+
322
+ // app.get(handler x 7)
323
+ <
324
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
325
+ R extends HandlerResponse<any> = any,
326
+ I extends Input = BlankInput,
327
+ I2 extends Input = I,
328
+ I3 extends Input = I & I2,
329
+ I4 extends Input = I & I2 & I3,
330
+ I5 extends Input = I & I2 & I3 & I4,
331
+ I6 extends Input = I & I2 & I3 & I4 & I5,
332
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
333
+ E2 extends Env = E,
334
+ E3 extends Env = E,
335
+ E4 extends Env = E,
336
+ E5 extends Env = E,
337
+ E6 extends Env = E,
338
+ E7 extends Env = E,
339
+ E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>
340
+ >(
341
+ ...handlers: [
342
+ H<E2, P, I>,
343
+ H<E3, P, I2>,
344
+ H<E4, P, I3>,
345
+ H<E5, P, I4>,
346
+ H<E6, P, I5>,
347
+ H<E7, P, I6>,
348
+ H<E8, P, I7, R>
349
+ ]
350
+ ): Hono<
351
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>,
352
+ S & ToSchema<M, P, I7, MergeTypedResponse<R>>,
353
+ BasePath
354
+ >
355
+
356
+ // app.get(path, handler x6)
357
+ <
358
+ P extends string,
359
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
360
+ R extends HandlerResponse<any> = any,
361
+ I extends Input = BlankInput,
362
+ I2 extends Input = I,
363
+ I3 extends Input = I & I2,
364
+ I4 extends Input = I & I2 & I3,
365
+ I5 extends Input = I & I2 & I3 & I4,
366
+ I6 extends Input = I & I2 & I3 & I4 & I5,
367
+ E2 extends Env = E,
368
+ E3 extends Env = E,
369
+ E4 extends Env = E,
370
+ E5 extends Env = E,
371
+ E6 extends Env = E,
372
+ E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>
373
+ >(
374
+ path: P,
375
+ ...handlers: [
376
+ H<E2, MergedPath, I>,
377
+ H<E3, MergedPath, I2>,
378
+ H<E4, MergedPath, I3>,
379
+ H<E5, MergedPath, I4>,
380
+ H<E6, MergedPath, I5>,
381
+ H<E7, MergedPath, I6, R>
382
+ ]
383
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I6, MergeTypedResponse<R>>, BasePath>
384
+
385
+ // app.get(handler x 8)
386
+ <
387
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
388
+ R extends HandlerResponse<any> = any,
389
+ I extends Input = BlankInput,
390
+ I2 extends Input = I,
391
+ I3 extends Input = I & I2,
392
+ I4 extends Input = I & I2 & I3,
393
+ I5 extends Input = I & I2 & I3 & I4,
394
+ I6 extends Input = I & I2 & I3 & I4 & I5,
395
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
396
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
397
+ E2 extends Env = E,
398
+ E3 extends Env = E,
399
+ E4 extends Env = E,
400
+ E5 extends Env = E,
401
+ E6 extends Env = E,
402
+ E7 extends Env = E,
403
+ E8 extends Env = E,
404
+ E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>
405
+ >(
406
+ ...handlers: [
407
+ H<E2, P, I>,
408
+ H<E3, P, I2>,
409
+ H<E4, P, I3>,
410
+ H<E5, P, I4>,
411
+ H<E6, P, I5>,
412
+ H<E7, P, I6>,
413
+ H<E8, P, I7>,
414
+ H<E9, P, I8, R>
415
+ ]
416
+ ): Hono<
417
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>,
418
+ S & ToSchema<M, P, I8, MergeTypedResponse<R>>,
419
+ BasePath
420
+ >
421
+
422
+ // app.get(path, handler x7)
423
+ <
424
+ P extends string,
425
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
426
+ R extends HandlerResponse<any> = any,
427
+ I extends Input = BlankInput,
428
+ I2 extends Input = I,
429
+ I3 extends Input = I & I2,
430
+ I4 extends Input = I & I2 & I3,
431
+ I5 extends Input = I & I2 & I3 & I4,
432
+ I6 extends Input = I & I2 & I3 & I4 & I5,
433
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
434
+ E2 extends Env = E,
435
+ E3 extends Env = E,
436
+ E4 extends Env = E,
437
+ E5 extends Env = E,
438
+ E6 extends Env = E,
439
+ E7 extends Env = E,
440
+ E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>
441
+ >(
442
+ path: P,
443
+ ...handlers: [
444
+ H<E2, MergedPath, I>,
445
+ H<E3, MergedPath, I2>,
446
+ H<E4, MergedPath, I3>,
447
+ H<E5, MergedPath, I4>,
448
+ H<E6, MergedPath, I5>,
449
+ H<E7, MergedPath, I6>,
450
+ H<E8, MergedPath, I7, R>
451
+ ]
452
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I7, MergeTypedResponse<R>>, BasePath>
453
+
454
+ // app.get(handler x 9)
455
+ <
456
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
457
+ R extends HandlerResponse<any> = any,
458
+ I extends Input = BlankInput,
459
+ I2 extends Input = I,
460
+ I3 extends Input = I & I2,
461
+ I4 extends Input = I & I2 & I3,
462
+ I5 extends Input = I & I2 & I3 & I4,
463
+ I6 extends Input = I & I2 & I3 & I4 & I5,
464
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
465
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
466
+ I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8,
467
+ E2 extends Env = E,
468
+ E3 extends Env = E,
469
+ E4 extends Env = E,
470
+ E5 extends Env = E,
471
+ E6 extends Env = E,
472
+ E7 extends Env = E,
473
+ E8 extends Env = E,
474
+ E9 extends Env = E,
475
+ E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>
476
+ >(
477
+ ...handlers: [
478
+ H<E2, P, I>,
479
+ H<E3, P, I2>,
480
+ H<E4, P, I3>,
481
+ H<E5, P, I4>,
482
+ H<E6, P, I5>,
483
+ H<E7, P, I6>,
484
+ H<E8, P, I7>,
485
+ H<E9, P, I8>,
486
+ H<E10, P, I9, R>
487
+ ]
488
+ ): Hono<
489
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>,
490
+ S & ToSchema<M, P, I9, MergeTypedResponse<R>>,
491
+ BasePath
492
+ >
493
+
494
+ // app.get(path, handler x8)
495
+ <
496
+ P extends string,
497
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
498
+ R extends HandlerResponse<any> = any,
499
+ I extends Input = BlankInput,
500
+ I2 extends Input = I,
501
+ I3 extends Input = I & I2,
502
+ I4 extends Input = I & I2 & I3,
503
+ I5 extends Input = I & I2 & I3 & I4,
504
+ I6 extends Input = I & I2 & I3 & I4 & I5,
505
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
506
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
507
+ E2 extends Env = E,
508
+ E3 extends Env = E,
509
+ E4 extends Env = E,
510
+ E5 extends Env = E,
511
+ E6 extends Env = E,
512
+ E7 extends Env = E,
513
+ E8 extends Env = E,
514
+ E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>
515
+ >(
516
+ path: P,
517
+ ...handlers: [
518
+ H<E2, MergedPath, I>,
519
+ H<E3, MergedPath, I2>,
520
+ H<E4, MergedPath, I3>,
521
+ H<E5, MergedPath, I4>,
522
+ H<E6, MergedPath, I5>,
523
+ H<E7, MergedPath, I6>,
524
+ H<E8, MergedPath, I7>,
525
+ H<E9, MergedPath, I8, R>
526
+ ]
527
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I8, MergeTypedResponse<R>>, BasePath>
528
+
529
+ // app.get(handler x 10)
530
+ <
531
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
532
+ R extends HandlerResponse<any> = any,
533
+ I extends Input = BlankInput,
534
+ I2 extends Input = I,
535
+ I3 extends Input = I & I2,
536
+ I4 extends Input = I & I2 & I3,
537
+ I5 extends Input = I & I2 & I3 & I4,
538
+ I6 extends Input = I & I2 & I3 & I4 & I5,
539
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
540
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
541
+ I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8,
542
+ I10 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8 & I9,
543
+ E2 extends Env = E,
544
+ E3 extends Env = E,
545
+ E4 extends Env = E,
546
+ E5 extends Env = E,
547
+ E6 extends Env = E,
548
+ E7 extends Env = E,
549
+ E8 extends Env = E,
550
+ E9 extends Env = E,
551
+ E10 extends Env = E,
552
+ E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>
553
+ >(
554
+ ...handlers: [
555
+ H<E2, P, I>,
556
+ H<E3, P, I2>,
557
+ H<E4, P, I3>,
558
+ H<E5, P, I4>,
559
+ H<E6, P, I5>,
560
+ H<E7, P, I6>,
561
+ H<E8, P, I7>,
562
+ H<E9, P, I8>,
563
+ H<E10, P, I9>,
564
+ H<E11, P, I10, R>
565
+ ]
566
+ ): Hono<
567
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11]>,
568
+ S & ToSchema<M, P, I10, MergeTypedResponse<R>>,
569
+ BasePath
570
+ >
571
+
572
+ // app.get(path, handler x9)
573
+ <
574
+ P extends string,
575
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
576
+ R extends HandlerResponse<any> = any,
577
+ I extends Input = BlankInput,
578
+ I2 extends Input = I,
579
+ I3 extends Input = I & I2,
580
+ I4 extends Input = I & I2 & I3,
581
+ I5 extends Input = I & I2 & I3 & I4,
582
+ I6 extends Input = I & I2 & I3 & I4 & I5,
583
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
584
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
585
+ I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8,
586
+ E2 extends Env = E,
587
+ E3 extends Env = E,
588
+ E4 extends Env = E,
589
+ E5 extends Env = E,
590
+ E6 extends Env = E,
591
+ E7 extends Env = E,
592
+ E8 extends Env = E,
593
+ E9 extends Env = E,
594
+ E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>
595
+ >(
596
+ path: P,
597
+ ...handlers: [
598
+ H<E2, MergedPath, I>,
599
+ H<E3, MergedPath, I2>,
600
+ H<E4, MergedPath, I3>,
601
+ H<E5, MergedPath, I4>,
602
+ H<E6, MergedPath, I5>,
603
+ H<E7, MergedPath, I6>,
604
+ H<E8, MergedPath, I7>,
605
+ H<E9, MergedPath, I8>,
606
+ H<E10, MergedPath, I9, R>
607
+ ]
608
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I9, MergeTypedResponse<R>>, BasePath>
609
+
610
+ // app.get(path, handler x10)
611
+ <
612
+ P extends string,
613
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
614
+ R extends HandlerResponse<any> = any,
615
+ I extends Input = BlankInput,
616
+ I2 extends Input = I,
617
+ I3 extends Input = I & I2,
618
+ I4 extends Input = I & I2 & I3,
619
+ I5 extends Input = I & I2 & I3 & I4,
620
+ I6 extends Input = I & I2 & I3 & I4 & I5,
621
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
622
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
623
+ I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8,
624
+ I10 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8 & I9,
625
+ E2 extends Env = E,
626
+ E3 extends Env = E,
627
+ E4 extends Env = E,
628
+ E5 extends Env = E,
629
+ E6 extends Env = E,
630
+ E7 extends Env = E,
631
+ E8 extends Env = E,
632
+ E9 extends Env = E,
633
+ E10 extends Env = E,
634
+ E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>
635
+ >(
636
+ path: P,
637
+ ...handlers: [
638
+ H<E2, MergedPath, I>,
639
+ H<E3, MergedPath, I2>,
640
+ H<E4, MergedPath, I3>,
641
+ H<E5, MergedPath, I4>,
642
+ H<E6, MergedPath, I5>,
643
+ H<E7, MergedPath, I6>,
644
+ H<E8, MergedPath, I7>,
645
+ H<E9, MergedPath, I8>,
646
+ H<E10, MergedPath, I9>,
647
+ H<E11, MergedPath, I10, R>
648
+ ]
649
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I10, MergeTypedResponse<R>>, BasePath>
650
+
651
+ // app.get(...handlers[])
652
+ <
653
+ P extends string = ExtractKey<S> extends never ? BasePath : ExtractKey<S>,
654
+ I extends Input = BlankInput,
655
+ R extends HandlerResponse<any> = any
656
+ >(
657
+ ...handlers: H<E, P, I, R>[]
658
+ ): Hono<E, S & ToSchema<M, P, I, MergeTypedResponse<R>>, BasePath>
659
+
660
+ // app.get(path, ...handlers[])
661
+ <P extends string, I extends Input = BlankInput, R extends HandlerResponse<any> = any>(
662
+ path: P,
663
+ ...handlers: H<E, MergePath<BasePath, P>, I, R>[]
664
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>
665
+
666
+ // app.get(path)
667
+ <P extends string, R extends HandlerResponse<any> = any, I extends Input = BlankInput>(
668
+ path: P
669
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>
670
+ }
671
+
672
+ ////////////////////////////////////////
673
+ ////// //////
674
+ ////// MiddlewareHandlerInterface //////
675
+ ////// //////
676
+ ////////////////////////////////////////
677
+
678
+ export interface MiddlewareHandlerInterface<
679
+ E extends Env = Env,
680
+ S extends Schema = BlankSchema,
681
+ BasePath extends string = '/'
682
+ > {
683
+ //// app.use(...handlers[])
684
+ <E2 extends Env = E>(
685
+ ...handlers: MiddlewareHandler<E2, MergePath<BasePath, ExtractKey<S>>>[]
686
+ ): Hono<IntersectNonAnyTypes<[E, E2]>, S, BasePath>
687
+
688
+ // app.use(handler)
689
+ <E2 extends Env = E>(handler: MiddlewareHandler<E2, MergePath<BasePath, ExtractKey<S>>>): Hono<
690
+ IntersectNonAnyTypes<[E, E2]>,
691
+ S,
692
+ BasePath
693
+ >
694
+
695
+ // app.use(handler x2)
696
+ <
697
+ E2 extends Env = E,
698
+ E3 extends Env = IntersectNonAnyTypes<[E, E2]>,
699
+ P extends string = MergePath<BasePath, ExtractKey<S>>
700
+ >(
701
+ ...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>]
702
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3]>, S, BasePath>
703
+
704
+ // app.get(path, handler)
705
+ <
706
+ P extends string,
707
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
708
+ E2 extends Env = E
709
+ >(
710
+ path: P,
711
+ handler: MiddlewareHandler<E2, MergedPath>
712
+ ): Hono<IntersectNonAnyTypes<[E, E2]>, ChangePathOfSchema<S, MergedPath>, BasePath>
713
+
714
+ // app.use(handler x3)
715
+ <
716
+ E2 extends Env = E,
717
+ E3 extends Env = E,
718
+ E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>,
719
+ P extends string = MergePath<BasePath, ExtractKey<S>>
720
+ >(
721
+ ...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>, MiddlewareHandler<E4, P>]
722
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4]>, S, BasePath>
723
+
724
+ // app.get(path, handler x2)
725
+ <
726
+ P extends string,
727
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
728
+ E2 extends Env = E,
729
+ E3 extends Env = IntersectNonAnyTypes<[E, E2]>
730
+ >(
731
+ path: P,
732
+ ...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>]
733
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3]>, ChangePathOfSchema<S, MergedPath>, BasePath>
734
+
735
+ // app.use(handler x4)
736
+ <
737
+ E2 extends Env = E,
738
+ E3 extends Env = E,
739
+ E4 extends Env = E,
740
+ E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>,
741
+ P extends string = MergePath<BasePath, ExtractKey<S>>
742
+ >(
743
+ ...handlers: [
744
+ MiddlewareHandler<E2, P>,
745
+ MiddlewareHandler<E3, P>,
746
+ MiddlewareHandler<E4, P>,
747
+ MiddlewareHandler<E5, P>
748
+ ]
749
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, S, BasePath>
750
+
751
+ // app.get(path, handler x3)
752
+ <
753
+ P extends string,
754
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
755
+ E2 extends Env = E,
756
+ E3 extends Env = E,
757
+ E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>
758
+ >(
759
+ path: P,
760
+ ...handlers: [MiddlewareHandler<E2, P>, MiddlewareHandler<E3, P>, MiddlewareHandler<E4, P>]
761
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4]>, ChangePathOfSchema<S, MergedPath>, BasePath>
762
+
763
+ // app.use(handler x5)
764
+ <
765
+ E2 extends Env = E,
766
+ E3 extends Env = E,
767
+ E4 extends Env = E,
768
+ E5 extends Env = E,
769
+ E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>,
770
+ P extends string = MergePath<BasePath, ExtractKey<S>>
771
+ >(
772
+ ...handlers: [
773
+ MiddlewareHandler<E2, P>,
774
+ MiddlewareHandler<E3, P>,
775
+ MiddlewareHandler<E4, P>,
776
+ MiddlewareHandler<E5, P>,
777
+ MiddlewareHandler<E6, P>
778
+ ]
779
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>, S, BasePath>
780
+
781
+ // app.get(path, handler x4)
782
+ <
783
+ P extends string,
784
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
785
+ E2 extends Env = E,
786
+ E3 extends Env = E,
787
+ E4 extends Env = E,
788
+ E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>
789
+ >(
790
+ path: P,
791
+ ...handlers: [
792
+ MiddlewareHandler<E2, P>,
793
+ MiddlewareHandler<E3, P>,
794
+ MiddlewareHandler<E4, P>,
795
+ MiddlewareHandler<E5, P>
796
+ ]
797
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5]>, ChangePathOfSchema<S, MergedPath>, BasePath>
798
+
799
+ // app.use(handler x6)
800
+ <
801
+ E2 extends Env = E,
802
+ E3 extends Env = E,
803
+ E4 extends Env = E,
804
+ E5 extends Env = E,
805
+ E6 extends Env = E,
806
+ E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>,
807
+ P extends string = MergePath<BasePath, ExtractKey<S>>
808
+ >(
809
+ ...handlers: [
810
+ MiddlewareHandler<E2, P>,
811
+ MiddlewareHandler<E3, P>,
812
+ MiddlewareHandler<E4, P>,
813
+ MiddlewareHandler<E5, P>,
814
+ MiddlewareHandler<E6, P>,
815
+ MiddlewareHandler<E7, P>
816
+ ]
817
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>, S, BasePath>
818
+
819
+ // app.get(path, handler x5)
820
+ <
821
+ P extends string,
822
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
823
+ E2 extends Env = E,
824
+ E3 extends Env = E,
825
+ E4 extends Env = E,
826
+ E5 extends Env = E,
827
+ E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>
828
+ >(
829
+ path: P,
830
+ ...handlers: [
831
+ MiddlewareHandler<E2, P>,
832
+ MiddlewareHandler<E3, P>,
833
+ MiddlewareHandler<E4, P>,
834
+ MiddlewareHandler<E5, P>,
835
+ MiddlewareHandler<E6, P>
836
+ ]
837
+ ): Hono<
838
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>,
839
+ ChangePathOfSchema<S, MergedPath>,
840
+ BasePath
841
+ >
842
+
843
+ // app.use(handler x7)
844
+ <
845
+ E2 extends Env = E,
846
+ E3 extends Env = E,
847
+ E4 extends Env = E,
848
+ E5 extends Env = E,
849
+ E6 extends Env = E,
850
+ E7 extends Env = E,
851
+ E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>,
852
+ P extends string = MergePath<BasePath, ExtractKey<S>>
853
+ >(
854
+ ...handlers: [
855
+ MiddlewareHandler<E2, P>,
856
+ MiddlewareHandler<E3, P>,
857
+ MiddlewareHandler<E4, P>,
858
+ MiddlewareHandler<E5, P>,
859
+ MiddlewareHandler<E6, P>,
860
+ MiddlewareHandler<E7, P>,
861
+ MiddlewareHandler<E8, P>
862
+ ]
863
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>, S, BasePath>
864
+
865
+ // app.get(path, handler x6)
866
+ <
867
+ P extends string,
868
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
869
+ E2 extends Env = E,
870
+ E3 extends Env = E,
871
+ E4 extends Env = E,
872
+ E5 extends Env = E,
873
+ E6 extends Env = E,
874
+ E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>
875
+ >(
876
+ path: P,
877
+ ...handlers: [
878
+ MiddlewareHandler<E2, P>,
879
+ MiddlewareHandler<E3, P>,
880
+ MiddlewareHandler<E4, P>,
881
+ MiddlewareHandler<E5, P>,
882
+ MiddlewareHandler<E6, P>,
883
+ MiddlewareHandler<E7, P>
884
+ ]
885
+ ): Hono<
886
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>,
887
+ ChangePathOfSchema<S, MergedPath>,
888
+ BasePath
889
+ >
890
+
891
+ // app.use(handler x8)
892
+ <
893
+ E2 extends Env = E,
894
+ E3 extends Env = E,
895
+ E4 extends Env = E,
896
+ E5 extends Env = E,
897
+ E6 extends Env = E,
898
+ E7 extends Env = E,
899
+ E8 extends Env = E,
900
+ E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>,
901
+ P extends string = MergePath<BasePath, ExtractKey<S>>
902
+ >(
903
+ ...handlers: [
904
+ MiddlewareHandler<E2, P>,
905
+ MiddlewareHandler<E3, P>,
906
+ MiddlewareHandler<E4, P>,
907
+ MiddlewareHandler<E5, P>,
908
+ MiddlewareHandler<E6, P>,
909
+ MiddlewareHandler<E7, P>,
910
+ MiddlewareHandler<E8, P>,
911
+ MiddlewareHandler<E9, P>
912
+ ]
913
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>, S, BasePath>
914
+
915
+ // app.get(path, handler x7)
916
+ <
917
+ P extends string,
918
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
919
+ E2 extends Env = E,
920
+ E3 extends Env = E,
921
+ E4 extends Env = E,
922
+ E5 extends Env = E,
923
+ E6 extends Env = E,
924
+ E7 extends Env = E,
925
+ E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>
926
+ >(
927
+ path: P,
928
+ ...handlers: [
929
+ MiddlewareHandler<E2, P>,
930
+ MiddlewareHandler<E3, P>,
931
+ MiddlewareHandler<E4, P>,
932
+ MiddlewareHandler<E5, P>,
933
+ MiddlewareHandler<E6, P>,
934
+ MiddlewareHandler<E7, P>,
935
+ MiddlewareHandler<E8, P>
936
+ ]
937
+ ): Hono<
938
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>,
939
+ ChangePathOfSchema<S, MergedPath>,
940
+ BasePath
941
+ >
942
+
943
+ // app.use(handler x9)
944
+ <
945
+ E2 extends Env = E,
946
+ E3 extends Env = E,
947
+ E4 extends Env = E,
948
+ E5 extends Env = E,
949
+ E6 extends Env = E,
950
+ E7 extends Env = E,
951
+ E8 extends Env = E,
952
+ E9 extends Env = E,
953
+ E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>,
954
+ P extends string = MergePath<BasePath, ExtractKey<S>>
955
+ >(
956
+ ...handlers: [
957
+ MiddlewareHandler<E2, P>,
958
+ MiddlewareHandler<E3, P>,
959
+ MiddlewareHandler<E4, P>,
960
+ MiddlewareHandler<E5, P>,
961
+ MiddlewareHandler<E6, P>,
962
+ MiddlewareHandler<E7, P>,
963
+ MiddlewareHandler<E8, P>,
964
+ MiddlewareHandler<E9, P>,
965
+ MiddlewareHandler<E10, P>
966
+ ]
967
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>, S, BasePath>
968
+
969
+ // app.get(path, handler x8)
970
+ <
971
+ P extends string,
972
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
973
+ E2 extends Env = E,
974
+ E3 extends Env = E,
975
+ E4 extends Env = E,
976
+ E5 extends Env = E,
977
+ E6 extends Env = E,
978
+ E7 extends Env = E,
979
+ E8 extends Env = E,
980
+ E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>
981
+ >(
982
+ path: P,
983
+ ...handlers: [
984
+ MiddlewareHandler<E2, P>,
985
+ MiddlewareHandler<E3, P>,
986
+ MiddlewareHandler<E4, P>,
987
+ MiddlewareHandler<E5, P>,
988
+ MiddlewareHandler<E6, P>,
989
+ MiddlewareHandler<E7, P>,
990
+ MiddlewareHandler<E8, P>,
991
+ MiddlewareHandler<E9, P>
992
+ ]
993
+ ): Hono<
994
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>,
995
+ ChangePathOfSchema<S, MergedPath>,
996
+ BasePath
997
+ >
998
+
999
+ // app.use(handler x10)
1000
+ <
1001
+ E2 extends Env = E,
1002
+ E3 extends Env = E,
1003
+ E4 extends Env = E,
1004
+ E5 extends Env = E,
1005
+ E6 extends Env = E,
1006
+ E7 extends Env = E,
1007
+ E8 extends Env = E,
1008
+ E9 extends Env = E,
1009
+ E10 extends Env = E,
1010
+ E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>,
1011
+ P extends string = MergePath<BasePath, ExtractKey<S>>
1012
+ >(
1013
+ ...handlers: [
1014
+ MiddlewareHandler<E2, P>,
1015
+ MiddlewareHandler<E3, P>,
1016
+ MiddlewareHandler<E4, P>,
1017
+ MiddlewareHandler<E5, P>,
1018
+ MiddlewareHandler<E6, P>,
1019
+ MiddlewareHandler<E7, P>,
1020
+ MiddlewareHandler<E8, P>,
1021
+ MiddlewareHandler<E9, P>,
1022
+ MiddlewareHandler<E10, P>,
1023
+ MiddlewareHandler<E11, P>
1024
+ ]
1025
+ ): Hono<IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11]>, S, BasePath>
1026
+
1027
+ // app.get(path, handler x9)
1028
+ <
1029
+ P extends string,
1030
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1031
+ E2 extends Env = E,
1032
+ E3 extends Env = E,
1033
+ E4 extends Env = E,
1034
+ E5 extends Env = E,
1035
+ E6 extends Env = E,
1036
+ E7 extends Env = E,
1037
+ E8 extends Env = E,
1038
+ E9 extends Env = E,
1039
+ E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>
1040
+ >(
1041
+ path: P,
1042
+ ...handlers: [
1043
+ MiddlewareHandler<E2, P>,
1044
+ MiddlewareHandler<E3, P>,
1045
+ MiddlewareHandler<E4, P>,
1046
+ MiddlewareHandler<E5, P>,
1047
+ MiddlewareHandler<E6, P>,
1048
+ MiddlewareHandler<E7, P>,
1049
+ MiddlewareHandler<E8, P>,
1050
+ MiddlewareHandler<E9, P>,
1051
+ MiddlewareHandler<E10, P>
1052
+ ]
1053
+ ): Hono<
1054
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>,
1055
+ ChangePathOfSchema<S, MergedPath>,
1056
+ BasePath
1057
+ >
1058
+
1059
+ //// app.use(path, ...handlers[])
1060
+ <P extends string, E2 extends Env = E>(
1061
+ path: P,
1062
+ ...handlers: MiddlewareHandler<E2, MergePath<BasePath, P>>[]
1063
+ ): Hono<E, S, BasePath>
1064
+ }
1065
+
1066
+ ////////////////////////////////////////
1067
+ ////// //////
1068
+ ////// OnHandlerInterface //////
1069
+ ////// //////
1070
+ ////////////////////////////////////////
1071
+
1072
+ export interface OnHandlerInterface<
1073
+ E extends Env = Env,
1074
+ S extends Schema = BlankSchema,
1075
+ BasePath extends string = '/'
1076
+ > {
1077
+ // app.on(method, path, handler)
1078
+ <
1079
+ M extends string,
1080
+ P extends string,
1081
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1082
+ R extends HandlerResponse<any> = any,
1083
+ I extends Input = BlankInput,
1084
+ E2 extends Env = E
1085
+ >(
1086
+ method: M,
1087
+ path: P,
1088
+ handler: H<E2, MergedPath, I, R>
1089
+ ): Hono<
1090
+ IntersectNonAnyTypes<[E, E2]>,
1091
+ S & ToSchema<M, MergePath<BasePath, P>, I, MergeTypedResponse<R>>,
1092
+ BasePath
1093
+ >
1094
+
1095
+ // app.on(method, path, handler x2)
1096
+ <
1097
+ M extends string,
1098
+ P extends string,
1099
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1100
+ R extends HandlerResponse<any> = any,
1101
+ I extends Input = BlankInput,
1102
+ I2 extends Input = I,
1103
+ E2 extends Env = E,
1104
+ E3 extends Env = IntersectNonAnyTypes<[E, E2]>
1105
+ >(
1106
+ method: M,
1107
+ path: P,
1108
+ ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2, R>]
1109
+ ): Hono<
1110
+ IntersectNonAnyTypes<[E, E2, E3]>,
1111
+ S & ToSchema<M, MergePath<BasePath, P>, I2, MergeTypedResponse<R>>,
1112
+ BasePath
1113
+ >
1114
+
1115
+ // app.on(method, path, handler x3)
1116
+ <
1117
+ M extends string,
1118
+ P extends string,
1119
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1120
+ R extends HandlerResponse<any> = any,
1121
+ I extends Input = BlankInput,
1122
+ I2 extends Input = I,
1123
+ I3 extends Input = I & I2,
1124
+ E2 extends Env = E,
1125
+ E3 extends Env = E,
1126
+ E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>
1127
+ >(
1128
+ method: M,
1129
+ path: P,
1130
+ ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2>, H<E4, MergedPath, I3, R>]
1131
+ ): Hono<
1132
+ IntersectNonAnyTypes<[E, E2, E3, E4]>,
1133
+ S & ToSchema<M, MergePath<BasePath, P>, I3, MergeTypedResponse<R>>,
1134
+ BasePath
1135
+ >
1136
+
1137
+ // app.on(method, path, handler x4)
1138
+ <
1139
+ M extends string,
1140
+ P extends string,
1141
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1142
+ R extends HandlerResponse<any> = any,
1143
+ I extends Input = BlankInput,
1144
+ I2 extends Input = I,
1145
+ I3 extends Input = I & I2,
1146
+ I4 extends Input = I & I2 & I3,
1147
+ E2 extends Env = E,
1148
+ E3 extends Env = E,
1149
+ E4 extends Env = E,
1150
+ E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>
1151
+ >(
1152
+ method: M,
1153
+ path: P,
1154
+ ...handlers: [
1155
+ H<E2, MergedPath, I>,
1156
+ H<E3, MergedPath, I2>,
1157
+ H<E4, MergedPath, I3>,
1158
+ H<E5, MergedPath, I4, R>
1159
+ ]
1160
+ ): Hono<
1161
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5]>,
1162
+ S & ToSchema<M, MergePath<BasePath, P>, I4, MergeTypedResponse<R>>,
1163
+ BasePath
1164
+ >
1165
+
1166
+ // app.on(method, path, handler x5)
1167
+ <
1168
+ M extends string,
1169
+ P extends string,
1170
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1171
+ R extends HandlerResponse<any> = any,
1172
+ I extends Input = BlankInput,
1173
+ I2 extends Input = I,
1174
+ I3 extends Input = I & I2,
1175
+ I4 extends Input = I & I2 & I3,
1176
+ I5 extends Input = I & I2 & I3 & I4,
1177
+ E2 extends Env = E,
1178
+ E3 extends Env = E,
1179
+ E4 extends Env = E,
1180
+ E5 extends Env = E,
1181
+ E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>
1182
+ >(
1183
+ method: M,
1184
+ path: P,
1185
+ ...handlers: [
1186
+ H<E2, MergedPath, I>,
1187
+ H<E3, MergedPath, I2>,
1188
+ H<E4, MergedPath, I3>,
1189
+ H<E5, MergedPath, I4>,
1190
+ H<E6, MergedPath, I5, R>
1191
+ ]
1192
+ ): Hono<
1193
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>,
1194
+ S & ToSchema<M, MergePath<BasePath, P>, I5, MergeTypedResponse<R>>,
1195
+ BasePath
1196
+ >
1197
+
1198
+ // app.on(method, path, handler x6)
1199
+ <
1200
+ M extends string,
1201
+ P extends string,
1202
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1203
+ R extends HandlerResponse<any> = any,
1204
+ I extends Input = BlankInput,
1205
+ I2 extends Input = I,
1206
+ I3 extends Input = I & I2,
1207
+ I4 extends Input = I & I2 & I3,
1208
+ I5 extends Input = I & I2 & I3 & I4,
1209
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1210
+ E2 extends Env = E,
1211
+ E3 extends Env = E,
1212
+ E4 extends Env = E,
1213
+ E5 extends Env = E,
1214
+ E6 extends Env = E,
1215
+ E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>
1216
+ >(
1217
+ method: M,
1218
+ path: P,
1219
+ ...handlers: [
1220
+ H<E2, MergedPath, I>,
1221
+ H<E3, MergedPath, I2>,
1222
+ H<E4, MergedPath, I3>,
1223
+ H<E5, MergedPath, I4>,
1224
+ H<E6, MergedPath, I5>,
1225
+ H<E7, MergedPath, I6, R>
1226
+ ]
1227
+ ): Hono<
1228
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>,
1229
+ S & ToSchema<M, MergePath<BasePath, P>, I6, MergeTypedResponse<R>>,
1230
+ BasePath
1231
+ >
1232
+
1233
+ // app.on(method, path, handler x7)
1234
+ <
1235
+ M extends string,
1236
+ P extends string,
1237
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1238
+ R extends HandlerResponse<any> = any,
1239
+ I extends Input = BlankInput,
1240
+ I2 extends Input = I,
1241
+ I3 extends Input = I & I2,
1242
+ I4 extends Input = I & I2 & I3,
1243
+ I5 extends Input = I & I2 & I3 & I4,
1244
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1245
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
1246
+ E2 extends Env = E,
1247
+ E3 extends Env = E,
1248
+ E4 extends Env = E,
1249
+ E5 extends Env = E,
1250
+ E6 extends Env = E,
1251
+ E7 extends Env = E,
1252
+ E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>
1253
+ >(
1254
+ method: M,
1255
+ path: P,
1256
+ ...handlers: [
1257
+ H<E2, MergedPath, I>,
1258
+ H<E3, MergedPath, I2>,
1259
+ H<E4, MergedPath, I3>,
1260
+ H<E5, MergedPath, I4>,
1261
+ H<E6, MergedPath, I5>,
1262
+ H<E7, MergedPath, I6>,
1263
+ H<E8, MergedPath, I7, R>
1264
+ ]
1265
+ ): Hono<
1266
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>,
1267
+ S & ToSchema<M, MergePath<BasePath, P>, I7, MergeTypedResponse<R>>,
1268
+ BasePath
1269
+ >
1270
+
1271
+ // app.on(method, path, handler x8)
1272
+ <
1273
+ M extends string,
1274
+ P extends string,
1275
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1276
+ R extends HandlerResponse<any> = any,
1277
+ I extends Input = BlankInput,
1278
+ I2 extends Input = I,
1279
+ I3 extends Input = I & I2,
1280
+ I4 extends Input = I & I2 & I3,
1281
+ I5 extends Input = I & I2 & I3 & I4,
1282
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1283
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
1284
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
1285
+ E2 extends Env = E,
1286
+ E3 extends Env = E,
1287
+ E4 extends Env = E,
1288
+ E5 extends Env = E,
1289
+ E6 extends Env = E,
1290
+ E7 extends Env = E,
1291
+ E8 extends Env = E,
1292
+ E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>
1293
+ >(
1294
+ method: M,
1295
+ path: P,
1296
+ ...handlers: [
1297
+ H<E2, MergedPath, I>,
1298
+ H<E3, MergedPath, I2>,
1299
+ H<E4, MergedPath, I3>,
1300
+ H<E5, MergedPath, I4>,
1301
+ H<E6, MergedPath, I5>,
1302
+ H<E7, MergedPath, I6>,
1303
+ H<E8, MergedPath, I7>,
1304
+ H<E9, MergedPath, I8, R>
1305
+ ]
1306
+ ): Hono<
1307
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>,
1308
+ S & ToSchema<M, MergePath<BasePath, P>, I8, MergeTypedResponse<R>>,
1309
+ BasePath
1310
+ >
1311
+
1312
+ // app.on(method, path, handler x9)
1313
+ <
1314
+ M extends string,
1315
+ P extends string,
1316
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1317
+ R extends HandlerResponse<any> = any,
1318
+ I extends Input = BlankInput,
1319
+ I2 extends Input = I,
1320
+ I3 extends Input = I & I2,
1321
+ I4 extends Input = I & I2 & I3,
1322
+ I5 extends Input = I & I2 & I3 & I4,
1323
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1324
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
1325
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
1326
+ I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8,
1327
+ E2 extends Env = E,
1328
+ E3 extends Env = E,
1329
+ E4 extends Env = E,
1330
+ E5 extends Env = E,
1331
+ E6 extends Env = E,
1332
+ E7 extends Env = E,
1333
+ E8 extends Env = E,
1334
+ E9 extends Env = E,
1335
+ E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>
1336
+ >(
1337
+ method: M,
1338
+ path: P,
1339
+ ...handlers: [
1340
+ H<E2, MergedPath, I>,
1341
+ H<E3, MergedPath, I2>,
1342
+ H<E4, MergedPath, I3>,
1343
+ H<E5, MergedPath, I4>,
1344
+ H<E6, MergedPath, I5>,
1345
+ H<E7, MergedPath, I6>,
1346
+ H<E8, MergedPath, I7>,
1347
+ H<E9, MergedPath, I8>,
1348
+ H<E10, MergedPath, I9, R>
1349
+ ]
1350
+ ): Hono<
1351
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>,
1352
+ S & ToSchema<M, MergePath<BasePath, P>, I9, MergeTypedResponse<R>>,
1353
+ BasePath
1354
+ >
1355
+
1356
+ // app.on(method, path, handler x10)
1357
+ <
1358
+ M extends string,
1359
+ P extends string,
1360
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1361
+ I extends Input = BlankInput,
1362
+ I2 extends Input = I,
1363
+ I3 extends Input = I & I2,
1364
+ I4 extends Input = I & I2 & I3,
1365
+ I5 extends Input = I & I2 & I3 & I4,
1366
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1367
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
1368
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
1369
+ I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8,
1370
+ I10 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8 & I9,
1371
+ E2 extends Env = E,
1372
+ E3 extends Env = E,
1373
+ E4 extends Env = E,
1374
+ E5 extends Env = E,
1375
+ E6 extends Env = E,
1376
+ E7 extends Env = E,
1377
+ E8 extends Env = E,
1378
+ E9 extends Env = E,
1379
+ E10 extends Env = E,
1380
+ E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>
1381
+ >(
1382
+ method: M,
1383
+ path: P,
1384
+ ...handlers: [
1385
+ H<E2, MergedPath, I>,
1386
+ H<E3, MergedPath, I2>,
1387
+ H<E4, MergedPath, I3>,
1388
+ H<E5, MergedPath, I4>,
1389
+ H<E6, MergedPath, I5>,
1390
+ H<E7, MergedPath, I6>,
1391
+ H<E8, MergedPath, I7>,
1392
+ H<E9, MergedPath, I8>,
1393
+ H<E10, MergedPath, I9>,
1394
+ H<E11, MergedPath, I10>
1395
+ ]
1396
+ ): Hono<
1397
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11]>,
1398
+ S & ToSchema<M, MergePath<BasePath, P>, I10, MergeTypedResponse<HandlerResponse<any>>>,
1399
+ BasePath
1400
+ >
1401
+
1402
+ // app.get(method, path, ...handler)
1403
+ <
1404
+ M extends string,
1405
+ P extends string,
1406
+ R extends HandlerResponse<any> = any,
1407
+ I extends Input = BlankInput
1408
+ >(
1409
+ method: M,
1410
+ path: P,
1411
+ ...handlers: H<E, MergePath<BasePath, P>, I, R>[]
1412
+ ): Hono<E, S & ToSchema<M, MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>
1413
+
1414
+ // app.get(method[], path, handler)
1415
+ <
1416
+ Ms extends string[],
1417
+ P extends string,
1418
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1419
+ R extends HandlerResponse<any> = any,
1420
+ I extends Input = BlankInput,
1421
+ E2 extends Env = E
1422
+ >(
1423
+ methods: Ms,
1424
+ path: P,
1425
+ handler: H<E2, MergedPath, I, R>
1426
+ ): Hono<
1427
+ IntersectNonAnyTypes<[E, E2]>,
1428
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I, MergeTypedResponse<R>>,
1429
+ BasePath
1430
+ >
1431
+
1432
+ // app.get(method[], path, handler x2)
1433
+ <
1434
+ Ms extends string[],
1435
+ P extends string,
1436
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1437
+ R extends HandlerResponse<any> = any,
1438
+ I extends Input = BlankInput,
1439
+ I2 extends Input = I,
1440
+ E2 extends Env = E,
1441
+ E3 extends Env = IntersectNonAnyTypes<[E, E2]>
1442
+ >(
1443
+ methods: Ms,
1444
+ path: P,
1445
+ ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2, R>]
1446
+ ): Hono<
1447
+ IntersectNonAnyTypes<[E, E2, E3]>,
1448
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I2, MergeTypedResponse<R>>,
1449
+ BasePath
1450
+ >
1451
+
1452
+ // app.get(method[], path, handler x3)
1453
+ <
1454
+ Ms extends string[],
1455
+ P extends string,
1456
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1457
+ R extends HandlerResponse<any> = any,
1458
+ I extends Input = BlankInput,
1459
+ I2 extends Input = I,
1460
+ I3 extends Input = I & I2,
1461
+ E2 extends Env = E,
1462
+ E3 extends Env = E,
1463
+ E4 extends Env = IntersectNonAnyTypes<[E, E2, E3]>
1464
+ >(
1465
+ methods: Ms,
1466
+ path: P,
1467
+ ...handlers: [H<E2, MergedPath, I>, H<E3, MergedPath, I2>, H<E4, MergedPath, I3, R>]
1468
+ ): Hono<
1469
+ IntersectNonAnyTypes<[E, E2, E3, E4]>,
1470
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I3, MergeTypedResponse<R>>,
1471
+ BasePath
1472
+ >
1473
+
1474
+ // app.get(method[], path, handler x4)
1475
+ <
1476
+ Ms extends string[],
1477
+ P extends string,
1478
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1479
+ R extends HandlerResponse<any> = any,
1480
+ I extends Input = BlankInput,
1481
+ I2 extends Input = I,
1482
+ I3 extends Input = I & I2,
1483
+ I4 extends Input = I & I2 & I3,
1484
+ E2 extends Env = E,
1485
+ E3 extends Env = E,
1486
+ E4 extends Env = E,
1487
+ E5 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4]>
1488
+ >(
1489
+ methods: Ms,
1490
+ path: P,
1491
+ ...handlers: [
1492
+ H<E2, MergedPath, I>,
1493
+ H<E3, MergedPath, I2>,
1494
+ H<E4, MergedPath, I3>,
1495
+ H<E5, MergedPath, I4, R>
1496
+ ]
1497
+ ): Hono<
1498
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5]>,
1499
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I4, MergeTypedResponse<R>>,
1500
+ BasePath
1501
+ >
1502
+
1503
+ // app.get(method[], path, handler x5)
1504
+ <
1505
+ Ms extends string[],
1506
+ P extends string,
1507
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1508
+ R extends HandlerResponse<any> = any,
1509
+ I extends Input = BlankInput,
1510
+ I2 extends Input = I,
1511
+ I3 extends Input = I & I2,
1512
+ I4 extends Input = I & I2 & I3,
1513
+ I5 extends Input = I & I2 & I3 & I4,
1514
+ E2 extends Env = E,
1515
+ E3 extends Env = E,
1516
+ E4 extends Env = E,
1517
+ E5 extends Env = E,
1518
+ E6 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5]>
1519
+ >(
1520
+ methods: Ms,
1521
+ path: P,
1522
+ ...handlers: [
1523
+ H<E2, MergedPath, I>,
1524
+ H<E3, MergedPath, I2>,
1525
+ H<E4, MergedPath, I3>,
1526
+ H<E5, MergedPath, I4>,
1527
+ H<E6, MergedPath, I5, R>
1528
+ ]
1529
+ ): Hono<
1530
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>,
1531
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I5, MergeTypedResponse<R>>,
1532
+ BasePath
1533
+ >
1534
+
1535
+ // app.get(method[], path, handler x6)
1536
+ <
1537
+ Ms extends string[],
1538
+ P extends string,
1539
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1540
+ R extends HandlerResponse<any> = any,
1541
+ I extends Input = BlankInput,
1542
+ I2 extends Input = I,
1543
+ I3 extends Input = I & I2,
1544
+ I4 extends Input = I & I2 & I3,
1545
+ I5 extends Input = I & I2 & I3 & I4,
1546
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1547
+ E2 extends Env = E,
1548
+ E3 extends Env = E,
1549
+ E4 extends Env = E,
1550
+ E5 extends Env = E,
1551
+ E6 extends Env = E,
1552
+ E7 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6]>
1553
+ >(
1554
+ methods: Ms,
1555
+ path: P,
1556
+ ...handlers: [
1557
+ H<E2, MergedPath, I>,
1558
+ H<E3, MergedPath, I2>,
1559
+ H<E4, MergedPath, I3>,
1560
+ H<E5, MergedPath, I4>,
1561
+ H<E6, MergedPath, I5>,
1562
+ H<E7, MergedPath, I6, R>
1563
+ ]
1564
+ ): Hono<
1565
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>,
1566
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I6, MergeTypedResponse<R>>,
1567
+ BasePath
1568
+ >
1569
+
1570
+ // app.get(method[], path, handler x7)
1571
+ <
1572
+ Ms extends string[],
1573
+ P extends string,
1574
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1575
+ R extends HandlerResponse<any> = any,
1576
+ I extends Input = BlankInput,
1577
+ I2 extends Input = I,
1578
+ I3 extends Input = I & I2,
1579
+ I4 extends Input = I & I2 & I3,
1580
+ I5 extends Input = I & I2 & I3 & I4,
1581
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1582
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
1583
+ E2 extends Env = E,
1584
+ E3 extends Env = E,
1585
+ E4 extends Env = E,
1586
+ E5 extends Env = E,
1587
+ E6 extends Env = E,
1588
+ E7 extends Env = E,
1589
+ E8 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7]>
1590
+ >(
1591
+ methods: Ms,
1592
+ path: P,
1593
+ ...handlers: [
1594
+ H<E2, MergedPath, I>,
1595
+ H<E3, MergedPath, I2>,
1596
+ H<E4, MergedPath, I3>,
1597
+ H<E5, MergedPath, I4>,
1598
+ H<E6, MergedPath, I5>,
1599
+ H<E7, MergedPath, I6>,
1600
+ H<E8, MergedPath, I7, R>
1601
+ ]
1602
+ ): Hono<
1603
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>,
1604
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I7, MergeTypedResponse<R>>,
1605
+ BasePath
1606
+ >
1607
+
1608
+ // app.get(method[], path, handler x8)
1609
+ <
1610
+ Ms extends string[],
1611
+ P extends string,
1612
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1613
+ R extends HandlerResponse<any> = any,
1614
+ I extends Input = BlankInput,
1615
+ I2 extends Input = I,
1616
+ I3 extends Input = I & I2,
1617
+ I4 extends Input = I & I2 & I3,
1618
+ I5 extends Input = I & I2 & I3 & I4,
1619
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1620
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
1621
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
1622
+ E2 extends Env = E,
1623
+ E3 extends Env = E,
1624
+ E4 extends Env = E,
1625
+ E5 extends Env = E,
1626
+ E6 extends Env = E,
1627
+ E7 extends Env = E,
1628
+ E8 extends Env = E,
1629
+ E9 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8]>
1630
+ >(
1631
+ methods: Ms,
1632
+ path: P,
1633
+ ...handlers: [
1634
+ H<E2, MergedPath, I>,
1635
+ H<E3, MergedPath, I2>,
1636
+ H<E4, MergedPath, I3>,
1637
+ H<E5, MergedPath, I4>,
1638
+ H<E6, MergedPath, I5>,
1639
+ H<E7, MergedPath, I6>,
1640
+ H<E8, MergedPath, I7>,
1641
+ H<E9, MergedPath, I8, R>
1642
+ ]
1643
+ ): Hono<
1644
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>,
1645
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I8, MergeTypedResponse<R>>,
1646
+ BasePath
1647
+ >
1648
+
1649
+ // app.get(method[], path, handler x9)
1650
+ <
1651
+ Ms extends string[],
1652
+ P extends string,
1653
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1654
+ I extends Input = BlankInput,
1655
+ I2 extends Input = I,
1656
+ I3 extends Input = I & I2,
1657
+ I4 extends Input = I & I2 & I3,
1658
+ I5 extends Input = I & I2 & I3 & I4,
1659
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1660
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
1661
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
1662
+ I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8,
1663
+ E2 extends Env = E,
1664
+ E3 extends Env = E,
1665
+ E4 extends Env = E,
1666
+ E5 extends Env = E,
1667
+ E6 extends Env = E,
1668
+ E7 extends Env = E,
1669
+ E8 extends Env = E,
1670
+ E9 extends Env = E,
1671
+ E10 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9]>
1672
+ >(
1673
+ methods: Ms,
1674
+ path: P,
1675
+ ...handlers: [
1676
+ H<E2, MergedPath, I>,
1677
+ H<E3, MergedPath, I2>,
1678
+ H<E4, MergedPath, I3>,
1679
+ H<E5, MergedPath, I4>,
1680
+ H<E6, MergedPath, I5>,
1681
+ H<E7, MergedPath, I6>,
1682
+ H<E8, MergedPath, I7>,
1683
+ H<E9, MergedPath, I8>,
1684
+ H<E10, MergedPath, I9>
1685
+ ]
1686
+ ): Hono<
1687
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>,
1688
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I9, MergeTypedResponse<HandlerResponse<any>>>,
1689
+ BasePath
1690
+ >
1691
+
1692
+ // app.get(method[], path, handler x10)
1693
+ <
1694
+ Ms extends string[],
1695
+ P extends string,
1696
+ MergedPath extends MergePath<BasePath, P> = MergePath<BasePath, P>,
1697
+ I extends Input = BlankInput,
1698
+ I2 extends Input = I,
1699
+ I3 extends Input = I & I2,
1700
+ I4 extends Input = I & I2 & I3,
1701
+ I5 extends Input = I & I2 & I3 & I4,
1702
+ I6 extends Input = I & I2 & I3 & I4 & I5,
1703
+ I7 extends Input = I & I2 & I3 & I4 & I5 & I6,
1704
+ I8 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7,
1705
+ I9 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8,
1706
+ I10 extends Input = I & I2 & I3 & I4 & I5 & I6 & I7 & I8 & I9,
1707
+ E2 extends Env = E,
1708
+ E3 extends Env = E,
1709
+ E4 extends Env = E,
1710
+ E5 extends Env = E,
1711
+ E6 extends Env = E,
1712
+ E7 extends Env = E,
1713
+ E8 extends Env = E,
1714
+ E9 extends Env = E,
1715
+ E10 extends Env = E,
1716
+ E11 extends Env = IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10]>
1717
+ >(
1718
+ methods: Ms,
1719
+ path: P,
1720
+ ...handlers: [
1721
+ H<E2, MergedPath, I>,
1722
+ H<E3, MergedPath, I2>,
1723
+ H<E4, MergedPath, I3>,
1724
+ H<E5, MergedPath, I4>,
1725
+ H<E6, MergedPath, I5>,
1726
+ H<E7, MergedPath, I6>,
1727
+ H<E8, MergedPath, I7>,
1728
+ H<E9, MergedPath, I8>,
1729
+ H<E10, MergedPath, I9>,
1730
+ H<E11, MergedPath, I10>
1731
+ ]
1732
+ ): Hono<
1733
+ IntersectNonAnyTypes<[E, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11]>,
1734
+ S & ToSchema<Ms[number], MergePath<BasePath, P>, I10, MergeTypedResponse<HandlerResponse<any>>>,
1735
+ BasePath
1736
+ >
1737
+
1738
+ // app.on(method[], path, ...handler)
1739
+ <P extends string, R extends HandlerResponse<any> = any, I extends Input = BlankInput>(
1740
+ methods: string[],
1741
+ path: P,
1742
+ ...handlers: H<E, MergePath<BasePath, P>, I, R>[]
1743
+ ): Hono<E, S & ToSchema<string, MergePath<BasePath, P>, I, MergeTypedResponse<R>>, BasePath>
1744
+
1745
+ // app.on(method | method[], path[], ...handlers[])
1746
+ <I extends Input = BlankInput, R extends HandlerResponse<any> = any>(
1747
+ methods: string | string[],
1748
+ paths: string[],
1749
+ ...handlers: H<E, any, I, R>[]
1750
+ ): Hono<E, S & ToSchema<string, string, I, MergeTypedResponse<R>>, BasePath>
1751
+ }
1752
+
1753
+ type ExtractKey<S> = S extends Record<infer Key, unknown>
1754
+ ? Key extends string
1755
+ ? Key
1756
+ : never
1757
+ : string
1758
+
1759
+ ////////////////////////////////////////
1760
+ ////// //////
1761
+ ////// ToSchema //////
1762
+ ////// //////
1763
+ ////////////////////////////////////////
1764
+
1765
+ export type ToSchema<
1766
+ M extends string,
1767
+ P extends string,
1768
+ I extends Input | Input['in'],
1769
+ RorO // Response or Output
1770
+ > = Simplify<{
1771
+ [K in P]: {
1772
+ [K2 in M as AddDollar<K2>]: Simplify<
1773
+ {
1774
+ input: AddParam<ExtractInput<I>, P>
1775
+ } & (IsAny<RorO> extends true
1776
+ ? {
1777
+ output: {}
1778
+ outputFormat: ResponseFormat
1779
+ status: StatusCode
1780
+ }
1781
+ : RorO extends TypedResponse<infer T, infer U, infer F>
1782
+ ? {
1783
+ output: unknown extends T ? {} : T
1784
+ outputFormat: I extends { outputFormat: string } ? I['outputFormat'] : F
1785
+ status: U
1786
+ }
1787
+ : {
1788
+ output: unknown extends RorO ? {} : RorO
1789
+ outputFormat: unknown extends RorO
1790
+ ? 'json'
1791
+ : I extends { outputFormat: string }
1792
+ ? I['outputFormat']
1793
+ : 'json'
1794
+ status: StatusCode
1795
+ })
1796
+ >
1797
+ }
1798
+ }>
1799
+
1800
+ export type Schema = {
1801
+ [Path: string]: {
1802
+ [Method: `$${Lowercase<string>}`]: Endpoint
1803
+ }
1804
+ }
1805
+
1806
+ type ChangePathOfSchema<S extends Schema, Path extends string> = keyof S extends never
1807
+ ? { [K in Path]: {} }
1808
+ : { [K in keyof S as Path]: S[K] }
1809
+
1810
+ export type Endpoint = {
1811
+ input: any
1812
+ output: any
1813
+ outputFormat: ResponseFormat
1814
+ status: StatusCode
1815
+ }
1816
+
1817
+ type ExtractParams<Path extends string> = string extends Path
1818
+ ? Record<string, string>
1819
+ : Path extends `${infer _Start}:${infer Param}/${infer Rest}`
1820
+ ? { [K in Param | keyof ExtractParams<`/${Rest}`>]: string }
1821
+ : Path extends `${infer _Start}:${infer Param}`
1822
+ ? { [K in Param]: string }
1823
+ : never
1824
+
1825
+ type FlattenIfIntersect<T> = T extends infer O ? { [K in keyof O]: O[K] } : never
1826
+
1827
+ export type MergeSchemaPath<OrigSchema extends Schema, SubPath extends string> = Simplify<{
1828
+ [P in keyof OrigSchema as MergePath<SubPath, P & string>]: {
1829
+ [M in keyof OrigSchema[P]]: MergeEndpointParamsWithPath<OrigSchema[P][M], SubPath>
1830
+ }
1831
+ }>
1832
+
1833
+ type MergeEndpointParamsWithPath<T, SubPath extends string> = T extends {
1834
+ input: infer Input
1835
+ output: infer Output
1836
+ outputFormat: infer OutputFormat
1837
+ status: infer Status
1838
+ }
1839
+ ? {
1840
+ input: Input extends { param: infer _ }
1841
+ ? ExtractParams<SubPath> extends never
1842
+ ? Input
1843
+ : FlattenIfIntersect<
1844
+ Input & {
1845
+ param: {
1846
+ // Maps extracted keys, stripping braces, to a string-typed record.
1847
+ [K in keyof ExtractParams<SubPath> as K extends `${infer Prefix}{${infer _}}`
1848
+ ? Prefix
1849
+ : K]: string
1850
+ }
1851
+ }
1852
+ >
1853
+ : RemoveBlankRecord<ExtractParams<SubPath>> extends never
1854
+ ? Input
1855
+ : Input & {
1856
+ // Maps extracted keys, stripping braces, to a string-typed record.
1857
+ param: {
1858
+ [K in keyof ExtractParams<SubPath> as K extends `${infer Prefix}{${infer _}}`
1859
+ ? Prefix
1860
+ : K]: string
1861
+ }
1862
+ }
1863
+ output: Output
1864
+ outputFormat: OutputFormat
1865
+ status: Status
1866
+ }
1867
+ : never
1868
+
1869
+ export type AddParam<I, P extends string> = ParamKeys<P> extends never
1870
+ ? I
1871
+ : I extends { param: infer _ }
1872
+ ? I
1873
+ : I & { param: UnionToIntersection<ParamKeyToRecord<ParamKeys<P>>> }
1874
+
1875
+ type AddDollar<T extends string> = `$${Lowercase<T>}`
1876
+
1877
+ export type MergePath<A extends string, B extends string> = B extends ''
1878
+ ? MergePath<A, '/'>
1879
+ : A extends ''
1880
+ ? B
1881
+ : A extends '/'
1882
+ ? B
1883
+ : A extends `${infer P}/`
1884
+ ? B extends `/${infer Q}`
1885
+ ? `${P}/${Q}`
1886
+ : `${P}/${B}`
1887
+ : B extends `/${infer Q}`
1888
+ ? Q extends ''
1889
+ ? A
1890
+ : `${A}/${Q}`
1891
+ : `${A}/${B}`
1892
+
1893
+ ////////////////////////////////////////
1894
+ ////// //////
1895
+ ////// TypedResponse //////
1896
+ ////// //////
1897
+ ////////////////////////////////////////
1898
+
1899
+ export type KnownResponseFormat = 'json' | 'text' | 'redirect'
1900
+ export type ResponseFormat = KnownResponseFormat | string
1901
+
1902
+ export type TypedResponse<
1903
+ T = unknown,
1904
+ U extends StatusCode = StatusCode,
1905
+ F extends ResponseFormat = T extends string
1906
+ ? 'text'
1907
+ : T extends JSONValue
1908
+ ? 'json'
1909
+ : ResponseFormat
1910
+ > = {
1911
+ _data: T
1912
+ _status: U
1913
+ _format: F
1914
+ }
1915
+
1916
+ type MergeTypedResponse<T> = T extends Promise<infer T2>
1917
+ ? T2 extends TypedResponse
1918
+ ? T2
1919
+ : TypedResponse
1920
+ : T extends TypedResponse
1921
+ ? T
1922
+ : TypedResponse
1923
+
1924
+ ////////////////////////////////////////
1925
+ ////// /////
1926
+ ////// ValidationTargets /////
1927
+ ////// /////
1928
+ ////////////////////////////////////////
1929
+
1930
+ export type FormValue = string | Blob
1931
+ export type ParsedFormValue = string | File
1932
+
1933
+ export type ValidationTargets<T extends FormValue = ParsedFormValue, P extends string = string> = {
1934
+ json: any
1935
+ form: Record<string, T | T[]>
1936
+ query: Record<string, string | string[]>
1937
+ param: Record<P, P extends `${infer _}?` ? string | undefined : string>
1938
+ header: Record<string, string>
1939
+ cookie: Record<string, string>
1940
+ }
1941
+
1942
+ ////////////////////////////////////////
1943
+ ////// //////
1944
+ ////// Path parameters //////
1945
+ ////// //////
1946
+ ////////////////////////////////////////
1947
+
1948
+ type ParamKeyName<NameWithPattern> = NameWithPattern extends `${infer Name}{${infer Rest}`
1949
+ ? Rest extends `${infer _Pattern}?`
1950
+ ? `${Name}?`
1951
+ : Name
1952
+ : NameWithPattern
1953
+
1954
+ type ParamKey<Component> = Component extends `:${infer NameWithPattern}`
1955
+ ? ParamKeyName<NameWithPattern>
1956
+ : never
1957
+
1958
+ export type ParamKeys<Path> = Path extends `${infer Component}/${infer Rest}`
1959
+ ? ParamKey<Component> | ParamKeys<Rest>
1960
+ : ParamKey<Path>
1961
+
1962
+ export type ParamKeyToRecord<T extends string> = T extends `${infer R}?`
1963
+ ? Record<R, string | undefined>
1964
+ : { [K in T]: string }
1965
+
1966
+ ////////////////////////////////////////
1967
+ ////// //////
1968
+ ///// For HonoRequest //////
1969
+ ////// //////
1970
+ ////////////////////////////////////////
1971
+
1972
+ export type InputToDataByTarget<
1973
+ T extends Input['out'],
1974
+ Target extends keyof ValidationTargets
1975
+ > = T extends {
1976
+ [K in Target]: infer R
1977
+ }
1978
+ ? R
1979
+ : never
1980
+
1981
+ export type RemoveQuestion<T> = T extends `${infer R}?` ? R : T
1982
+
1983
+ ////////////////////////////////////////
1984
+ ////// //////
1985
+ ////// Utilities //////
1986
+ ////// //////
1987
+ ////////////////////////////////////////
1988
+
1989
+ export type ExtractSchema<T> = UnionToIntersection<
1990
+ T extends Hono<infer _, infer S, any> ? S : never
1991
+ >
1992
+
1993
+ type EnvOrEmpty<T> = T extends Env ? (Env extends T ? {} : T) : T
1994
+ type IntersectNonAnyTypes<T extends any[]> = T extends [infer Head, ...infer Rest]
1995
+ ? IfAnyThenEmptyObject<EnvOrEmpty<Head>> & IntersectNonAnyTypes<Rest>
1996
+ : {}
1997
+
1998
+ ////////////////////////////////////////
1999
+ ////// //////
2000
+ ////// FetchEvent //////
2001
+ ////// //////
2002
+ ////////////////////////////////////////
2003
+
2004
+ export abstract class FetchEventLike {
2005
+ abstract readonly request: Request
2006
+ abstract respondWith(promise: Response | Promise<Response>): void
2007
+ abstract passThroughOnException(): void
2008
+ abstract waitUntil(promise: Promise<void>): void
2009
+ }