@lovrozagar/honey 0.7.2 → 1.0.0-rc.1

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 (1003) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -1969
  3. package/bin/honey.js +87 -27
  4. package/dist/adapters/bun/serve.d.ts +18 -0
  5. package/dist/adapters/bun/serve.js +89 -0
  6. package/dist/adapters/fetch-request.d.ts +20 -0
  7. package/dist/adapters/fetch-request.js +29 -0
  8. package/dist/adapters/node/headers.d.ts +27 -0
  9. package/dist/adapters/node/headers.js +86 -0
  10. package/dist/adapters/node/request.d.ts +16 -0
  11. package/dist/adapters/node/request.js +214 -0
  12. package/dist/adapters/node/response.d.ts +11 -0
  13. package/dist/adapters/node/response.js +126 -0
  14. package/dist/adapters/node/serve.d.ts +39 -0
  15. package/dist/adapters/node/serve.js +205 -0
  16. package/dist/adapters/node/url.d.ts +13 -0
  17. package/dist/adapters/node/url.js +87 -0
  18. package/dist/adapters/serve.d.ts +36 -0
  19. package/dist/adapters/serve.js +52 -0
  20. package/dist/build/artifacts.d.ts +34 -0
  21. package/dist/build/artifacts.js +123 -0
  22. package/dist/build/cli-args.d.ts +30 -0
  23. package/dist/build/cli-args.js +97 -0
  24. package/dist/build/cli.d.ts +11 -0
  25. package/dist/build/cli.js +150 -0
  26. package/dist/build/config.d.ts +102 -0
  27. package/dist/build/config.js +89 -0
  28. package/dist/build/generate.d.ts +19 -0
  29. package/dist/build/generate.js +80 -0
  30. package/dist/build/glob.d.ts +8 -0
  31. package/dist/build/glob.js +97 -0
  32. package/dist/build/index.d.ts +3 -58
  33. package/dist/build/index.js +3 -173
  34. package/dist/build/init.d.ts +3 -0
  35. package/dist/build/init.js +131 -0
  36. package/dist/build/loaders.d.ts +33 -0
  37. package/dist/build/loaders.js +105 -0
  38. package/dist/build/plugin.d.ts +52 -0
  39. package/dist/build/plugin.js +146 -0
  40. package/dist/build/source.d.ts +21 -0
  41. package/dist/build/source.js +100 -0
  42. package/dist/build/targets.d.ts +59 -0
  43. package/dist/build/targets.js +107 -0
  44. package/dist/context/context.d.ts +111 -0
  45. package/dist/context/context.js +213 -0
  46. package/dist/context/cookie-sign.d.ts +38 -0
  47. package/dist/context/cookie-sign.js +113 -0
  48. package/dist/context/cookie.d.ts +28 -0
  49. package/dist/context/cookie.js +142 -0
  50. package/dist/context/peer.d.ts +34 -0
  51. package/dist/context/peer.js +190 -0
  52. package/dist/errors/error.d.ts +60 -0
  53. package/dist/errors/error.js +84 -0
  54. package/dist/errors/errors.d.ts +45 -0
  55. package/dist/errors/errors.js +31 -0
  56. package/dist/errors/on-error.d.ts +10 -0
  57. package/dist/errors/on-error.js +204 -0
  58. package/dist/errors/problem-json.d.ts +14 -0
  59. package/dist/errors/problem-json.js +58 -0
  60. package/dist/errors/projector.d.ts +50 -0
  61. package/dist/errors/projector.js +107 -0
  62. package/dist/i18n/error-i18n.d.ts +26 -0
  63. package/dist/i18n/error-i18n.js +77 -0
  64. package/dist/i18n/i18n.d.ts +21 -0
  65. package/dist/i18n/i18n.js +40 -0
  66. package/dist/i18n/icu.d.ts +29 -0
  67. package/dist/i18n/icu.js +170 -0
  68. package/dist/i18n/index.d.ts +4 -0
  69. package/dist/i18n/index.js +3 -0
  70. package/dist/index.d.ts +30 -744
  71. package/dist/index.js +12 -2363
  72. package/dist/input/accepts.d.ts +5 -0
  73. package/dist/input/accepts.js +105 -0
  74. package/dist/input/binary.d.ts +20 -0
  75. package/dist/input/binary.js +40 -0
  76. package/dist/input/body-kind.d.ts +15 -0
  77. package/dist/input/body-kind.js +47 -0
  78. package/dist/input/body-limit.d.ts +21 -0
  79. package/dist/input/body-limit.js +99 -0
  80. package/dist/input/cookies.d.ts +7 -0
  81. package/dist/input/cookies.js +8 -0
  82. package/dist/input/form.d.ts +10 -0
  83. package/dist/input/form.js +24 -0
  84. package/dist/input/headers.d.ts +7 -0
  85. package/dist/input/headers.js +8 -0
  86. package/dist/input/input.d.ts +91 -0
  87. package/dist/input/input.js +88 -0
  88. package/dist/input/json.d.ts +10 -0
  89. package/dist/input/json.js +22 -0
  90. package/dist/input/params.d.ts +7 -0
  91. package/dist/input/params.js +8 -0
  92. package/dist/input/query.d.ts +10 -0
  93. package/dist/input/query.js +17 -0
  94. package/dist/mcp/mount.d.ts +116 -0
  95. package/dist/mcp/mount.js +45 -0
  96. package/dist/mcp/oauth.d.ts +14 -0
  97. package/dist/mcp/oauth.js +88 -0
  98. package/dist/mcp/uploads.d.ts +36 -0
  99. package/dist/mcp/uploads.js +171 -0
  100. package/dist/mcp/url-files.d.ts +32 -0
  101. package/dist/mcp/url-files.js +75 -0
  102. package/dist/meta/meta-spec-apply.d.ts +25 -0
  103. package/dist/meta/meta-spec-apply.js +83 -0
  104. package/dist/meta/meta-spec-merge.d.ts +103 -0
  105. package/dist/meta/meta-spec-merge.js +50 -0
  106. package/dist/meta/meta-spec-validate.d.ts +61 -0
  107. package/dist/meta/meta-spec-validate.js +166 -0
  108. package/dist/meta/meta-spec.d.ts +49 -0
  109. package/dist/meta/meta-spec.js +197 -0
  110. package/dist/middleware/compress.d.ts +15 -0
  111. package/dist/middleware/compress.js +93 -0
  112. package/dist/middleware/cors.d.ts +18 -0
  113. package/dist/middleware/cors.js +80 -0
  114. package/dist/middleware/csrf.d.ts +11 -0
  115. package/dist/middleware/csrf.js +65 -0
  116. package/dist/middleware/ip-restrict.d.ts +10 -0
  117. package/dist/middleware/ip-restrict.js +82 -0
  118. package/dist/middleware/middleware.d.ts +53 -0
  119. package/dist/middleware/middleware.js +112 -0
  120. package/dist/middleware/powered-by.d.ts +6 -0
  121. package/dist/middleware/powered-by.js +13 -0
  122. package/dist/middleware/rate-limit.d.ts +40 -0
  123. package/dist/middleware/rate-limit.js +90 -0
  124. package/dist/middleware/request-id.d.ts +25 -0
  125. package/dist/middleware/request-id.js +30 -0
  126. package/dist/middleware/secure-headers.d.ts +18 -0
  127. package/dist/middleware/secure-headers.js +36 -0
  128. package/dist/middleware/server-timing.d.ts +8 -0
  129. package/dist/middleware/server-timing.js +52 -0
  130. package/dist/middleware/timeout.d.ts +6 -0
  131. package/dist/middleware/timeout.js +29 -0
  132. package/dist/observability/curl-logger.d.ts +46 -0
  133. package/dist/observability/curl-logger.js +175 -0
  134. package/dist/observability/request-to-curl.d.ts +17 -0
  135. package/dist/observability/request-to-curl.js +47 -0
  136. package/dist/openapi/collect.d.ts +56 -18
  137. package/dist/openapi/collect.js +109 -23
  138. package/dist/openapi/components.d.ts +9 -0
  139. package/dist/openapi/components.js +90 -0
  140. package/dist/openapi/docs-page.d.ts +20 -18
  141. package/dist/openapi/docs-page.js +28 -46
  142. package/dist/openapi/document.d.ts +33 -26
  143. package/dist/openapi/document.js +21 -776
  144. package/dist/openapi/extract-schemas.d.ts +11 -0
  145. package/dist/openapi/extract-schemas.js +31 -0
  146. package/dist/openapi/generate.d.ts +47 -0
  147. package/dist/openapi/generate.js +180 -0
  148. package/dist/openapi/manifest.d.ts +41 -0
  149. package/dist/openapi/manifest.js +49 -0
  150. package/dist/openapi/output-keys.d.ts +6 -0
  151. package/dist/openapi/output-keys.js +24 -0
  152. package/dist/openapi/paths.d.ts +35 -0
  153. package/dist/openapi/paths.js +175 -0
  154. package/dist/openapi/register.d.ts +14 -3
  155. package/dist/openapi/register.js +13 -20
  156. package/dist/openapi/responses.d.ts +44 -0
  157. package/dist/openapi/responses.js +159 -0
  158. package/dist/openapi/scalar.d.ts +4 -14
  159. package/dist/openapi/scalar.js +5 -7
  160. package/dist/openapi/security.d.ts +4 -0
  161. package/dist/openapi/security.js +25 -0
  162. package/dist/openapi/serve.d.ts +25 -9
  163. package/dist/openapi/serve.js +108 -29
  164. package/dist/openapi/servers.d.ts +19 -0
  165. package/dist/openapi/servers.js +72 -0
  166. package/dist/openapi/swagger.d.ts +4 -14
  167. package/dist/openapi/swagger.js +5 -7
  168. package/dist/openapi/tags.d.ts +20 -0
  169. package/dist/openapi/tags.js +20 -0
  170. package/dist/openapi/webhooks.d.ts +19 -0
  171. package/dist/openapi/webhooks.js +70 -0
  172. package/dist/openapi/yaml.d.ts +8 -0
  173. package/dist/openapi/yaml.js +74 -0
  174. package/dist/proxy/headers.d.ts +30 -0
  175. package/dist/proxy/headers.js +86 -0
  176. package/dist/proxy/proxy.d.ts +39 -0
  177. package/dist/proxy/proxy.js +103 -0
  178. package/dist/proxy/upstream.d.ts +30 -0
  179. package/dist/proxy/upstream.js +116 -0
  180. package/dist/realtime/bus.d.ts +10 -13
  181. package/dist/realtime/bus.js +48 -93
  182. package/dist/realtime/invoke-user.d.ts +36 -0
  183. package/dist/realtime/invoke-user.js +103 -0
  184. package/dist/realtime/realtime.d.ts +7 -0
  185. package/dist/realtime/realtime.js +40 -0
  186. package/dist/realtime/route.d.ts +33 -27
  187. package/dist/realtime/route.js +27 -43
  188. package/dist/realtime/server.d.ts +24 -28
  189. package/dist/realtime/server.js +202 -225
  190. package/dist/response/binary.d.ts +18 -0
  191. package/dist/response/binary.js +10 -0
  192. package/dist/response/builder.d.ts +73 -0
  193. package/dist/response/builder.js +214 -0
  194. package/dist/response/cache-control.d.ts +30 -0
  195. package/dist/response/cache-control.js +74 -0
  196. package/dist/response/etag.d.ts +15 -0
  197. package/dist/response/etag.js +83 -0
  198. package/dist/response/media-type.d.ts +28 -0
  199. package/dist/response/media-type.js +97 -0
  200. package/dist/response/out-headers.d.ts +31 -0
  201. package/dist/response/out-headers.js +130 -0
  202. package/dist/response/pretty-json.d.ts +10 -0
  203. package/dist/response/pretty-json.js +44 -0
  204. package/dist/response/range.d.ts +19 -0
  205. package/dist/response/range.js +98 -0
  206. package/dist/response/response-headers.d.ts +11 -0
  207. package/dist/response/response-headers.js +21 -0
  208. package/dist/response/response.d.ts +69 -0
  209. package/dist/response/response.js +208 -0
  210. package/dist/response/sse.d.ts +41 -0
  211. package/dist/response/sse.js +73 -0
  212. package/dist/response/static.d.ts +20 -0
  213. package/dist/response/static.js +181 -0
  214. package/dist/response/status.d.ts +5 -0
  215. package/dist/response/status.js +68 -0
  216. package/dist/response/with-headers.d.ts +11 -0
  217. package/dist/response/with-headers.js +47 -0
  218. package/dist/routing/app-types.d.ts +181 -0
  219. package/dist/routing/app-types.js +1 -0
  220. package/dist/routing/app.d.ts +76 -0
  221. package/dist/routing/app.js +137 -0
  222. package/dist/routing/codegen-types.d.ts +17 -0
  223. package/dist/routing/codegen-types.js +1 -0
  224. package/dist/routing/delegate.d.ts +9 -0
  225. package/dist/routing/delegate.js +75 -0
  226. package/dist/routing/dispatch.d.ts +22 -0
  227. package/dist/routing/dispatch.js +255 -0
  228. package/dist/routing/finalize.d.ts +47 -0
  229. package/dist/routing/finalize.js +169 -0
  230. package/dist/routing/gateway-tree.d.ts +19 -0
  231. package/dist/routing/gateway-tree.js +74 -0
  232. package/dist/routing/invalidate-check.d.ts +58 -0
  233. package/dist/routing/invalidate-check.js +124 -0
  234. package/dist/routing/match.d.ts +22 -0
  235. package/dist/routing/match.js +108 -0
  236. package/dist/routing/middleware-chain.d.ts +16 -0
  237. package/dist/routing/middleware-chain.js +41 -0
  238. package/dist/routing/output-types.d.ts +91 -0
  239. package/dist/routing/output-types.js +1 -0
  240. package/dist/routing/pattern.d.ts +55 -0
  241. package/dist/routing/pattern.js +219 -0
  242. package/dist/routing/record.d.ts +18 -0
  243. package/dist/routing/record.js +4 -0
  244. package/dist/routing/register.d.ts +135 -0
  245. package/dist/routing/register.js +155 -0
  246. package/dist/routing/request-path.d.ts +30 -0
  247. package/dist/routing/request-path.js +173 -0
  248. package/dist/routing/route-builder.d.ts +160 -0
  249. package/dist/routing/route-builder.js +86 -0
  250. package/dist/routing/route-tree.d.ts +18 -0
  251. package/dist/routing/route-tree.js +91 -0
  252. package/dist/routing/settings-chain.d.ts +75 -0
  253. package/dist/routing/settings-chain.js +137 -0
  254. package/dist/routing/settings.d.ts +90 -0
  255. package/dist/routing/settings.js +44 -0
  256. package/dist/routing/tap.d.ts +31 -0
  257. package/dist/routing/tap.js +77 -0
  258. package/dist/routing/tree-merge.d.ts +7 -0
  259. package/dist/routing/tree-merge.js +77 -0
  260. package/dist/routing/tree.d.ts +85 -0
  261. package/dist/routing/tree.js +196 -0
  262. package/dist/routing/types.d.ts +20 -0
  263. package/dist/routing/types.js +1 -0
  264. package/dist/routing/ws-builder.d.ts +62 -0
  265. package/dist/routing/ws-builder.js +109 -0
  266. package/dist/runtime/detect-runtime.d.ts +16 -0
  267. package/dist/runtime/detect-runtime.js +11 -0
  268. package/dist/runtime/optional-peer.d.ts +10 -0
  269. package/dist/runtime/optional-peer.js +19 -0
  270. package/dist/schema/arktype.d.ts +7 -0
  271. package/dist/schema/arktype.js +13 -0
  272. package/dist/schema/canonicalize.d.ts +8 -0
  273. package/dist/schema/canonicalize.js +19 -0
  274. package/dist/schema/effect.d.ts +7 -0
  275. package/dist/schema/effect.js +4 -0
  276. package/dist/schema/naming.d.ts +31 -0
  277. package/dist/schema/naming.js +116 -0
  278. package/dist/schema/sanitize-spec.d.ts +15 -0
  279. package/dist/schema/sanitize-spec.js +43 -0
  280. package/dist/schema/slots.d.ts +15 -0
  281. package/dist/schema/slots.js +179 -0
  282. package/dist/schema/to-json-schema.d.ts +34 -0
  283. package/dist/schema/to-json-schema.js +94 -0
  284. package/dist/schema/valibot.d.ts +4 -0
  285. package/dist/schema/valibot.js +153 -0
  286. package/dist/schema/yup.d.ts +3 -0
  287. package/dist/schema/yup.js +57 -0
  288. package/dist/schema/zod.d.ts +6 -0
  289. package/dist/schema/zod.js +192 -0
  290. package/dist/security/crypto.d.ts +7 -0
  291. package/dist/security/crypto.js +30 -0
  292. package/dist/streaming/producer-stream.d.ts +45 -0
  293. package/dist/streaming/producer-stream.js +251 -0
  294. package/dist/telemetry/fields.d.ts +43 -0
  295. package/dist/telemetry/fields.js +64 -0
  296. package/dist/telemetry/log-format.d.ts +7 -0
  297. package/dist/telemetry/log-format.js +43 -0
  298. package/dist/telemetry/logger.d.ts +44 -0
  299. package/dist/telemetry/logger.js +122 -0
  300. package/dist/telemetry/otel-subpath.d.ts +7 -0
  301. package/dist/telemetry/otel-subpath.js +5 -0
  302. package/dist/telemetry/otel.d.ts +50 -57
  303. package/dist/telemetry/otel.js +54 -130
  304. package/dist/telemetry/request-log.d.ts +22 -0
  305. package/dist/telemetry/request-log.js +83 -0
  306. package/dist/telemetry/request-trace.d.ts +123 -0
  307. package/dist/telemetry/request-trace.js +199 -0
  308. package/dist/telemetry/span-lifecycle.d.ts +11 -0
  309. package/dist/telemetry/span-lifecycle.js +114 -0
  310. package/dist/telemetry/traceparent.d.ts +40 -0
  311. package/dist/telemetry/traceparent.js +73 -0
  312. package/dist/testing/testing.d.ts +42 -0
  313. package/dist/testing/testing.js +101 -0
  314. package/dist/validation/content-type.d.ts +21 -0
  315. package/dist/validation/content-type.js +42 -0
  316. package/dist/validation/standard-schema.d.ts +41 -0
  317. package/dist/validation/standard-schema.js +5 -0
  318. package/dist/validation/validate-input.d.ts +45 -0
  319. package/dist/validation/validate-input.js +174 -0
  320. package/dist/validation/validate-output.d.ts +34 -0
  321. package/dist/validation/validate-output.js +107 -0
  322. package/dist/ws/bun.d.ts +30 -25
  323. package/dist/ws/bun.js +42 -46
  324. package/dist/ws/cloudflare.d.ts +6 -75
  325. package/dist/ws/cloudflare.js +37 -104
  326. package/dist/ws/contract.d.ts +74 -0
  327. package/dist/ws/contract.js +83 -0
  328. package/dist/ws/node.d.ts +12 -21
  329. package/dist/ws/node.js +103 -151
  330. package/dist/ws/origin.d.ts +23 -0
  331. package/dist/ws/origin.js +48 -0
  332. package/dist/ws/route.d.ts +14 -0
  333. package/dist/ws/route.js +5 -0
  334. package/dist/ws/session.d.ts +15 -6
  335. package/dist/ws/session.js +22 -23
  336. package/dist/ws/shared.d.ts +23 -33
  337. package/dist/ws/shared.js +53 -39
  338. package/package.json +169 -251
  339. package/dist/accepts.d.ts +0 -12
  340. package/dist/accepts.d.ts.map +0 -1
  341. package/dist/accepts.js +0 -126
  342. package/dist/accepts.js.map +0 -1
  343. package/dist/body-kind.d.ts +0 -26
  344. package/dist/body-kind.d.ts.map +0 -1
  345. package/dist/body-kind.js +0 -70
  346. package/dist/body-kind.js.map +0 -1
  347. package/dist/body-limit.d.ts +0 -26
  348. package/dist/body-limit.d.ts.map +0 -1
  349. package/dist/body-limit.js +0 -126
  350. package/dist/body-limit.js.map +0 -1
  351. package/dist/build/index.d.ts.map +0 -1
  352. package/dist/build/index.js.map +0 -1
  353. package/dist/cli-args.d.ts +0 -33
  354. package/dist/cli-args.d.ts.map +0 -1
  355. package/dist/cli-args.js +0 -102
  356. package/dist/cli-args.js.map +0 -1
  357. package/dist/cli-go/auth.go +0 -26
  358. package/dist/cli-go/config.go +0 -192
  359. package/dist/cli-go/errors.go +0 -75
  360. package/dist/cli-go/multipart.go +0 -79
  361. package/dist/cli-go/output.go +0 -163
  362. package/dist/cli-go/root.go +0 -30
  363. package/dist/cli-go/stream.go +0 -88
  364. package/dist/cli-go/version.go +0 -5
  365. package/dist/cli.d.ts +0 -3
  366. package/dist/cli.d.ts.map +0 -1
  367. package/dist/cli.js +0 -209
  368. package/dist/cli.js.map +0 -1
  369. package/dist/client/defaults.d.ts +0 -12
  370. package/dist/client/defaults.d.ts.map +0 -1
  371. package/dist/client/defaults.js +0 -48
  372. package/dist/client/defaults.js.map +0 -1
  373. package/dist/client/error.d.ts +0 -49
  374. package/dist/client/error.d.ts.map +0 -1
  375. package/dist/client/error.js +0 -71
  376. package/dist/client/error.js.map +0 -1
  377. package/dist/client/http.d.ts +0 -155
  378. package/dist/client/http.d.ts.map +0 -1
  379. package/dist/client/http.js +0 -571
  380. package/dist/client/http.js.map +0 -1
  381. package/dist/client/index.d.ts +0 -23
  382. package/dist/client/index.d.ts.map +0 -1
  383. package/dist/client/index.js +0 -95
  384. package/dist/client/index.js.map +0 -1
  385. package/dist/client/path.d.ts +0 -26
  386. package/dist/client/path.d.ts.map +0 -1
  387. package/dist/client/path.js +0 -163
  388. package/dist/client/path.js.map +0 -1
  389. package/dist/client/redirect-policy.d.ts +0 -12
  390. package/dist/client/redirect-policy.d.ts.map +0 -1
  391. package/dist/client/redirect-policy.js +0 -20
  392. package/dist/client/redirect-policy.js.map +0 -1
  393. package/dist/client/sdk.d.ts +0 -70
  394. package/dist/client/sdk.d.ts.map +0 -1
  395. package/dist/client/sdk.js +0 -292
  396. package/dist/client/sdk.js.map +0 -1
  397. package/dist/client/sse.d.ts +0 -23
  398. package/dist/client/sse.d.ts.map +0 -1
  399. package/dist/client/sse.js +0 -129
  400. package/dist/client/sse.js.map +0 -1
  401. package/dist/client/types.d.ts +0 -124
  402. package/dist/client/types.d.ts.map +0 -1
  403. package/dist/client/types.js +0 -2
  404. package/dist/client/types.js.map +0 -1
  405. package/dist/client/ws.d.ts +0 -22
  406. package/dist/client/ws.d.ts.map +0 -1
  407. package/dist/client/ws.js +0 -112
  408. package/dist/client/ws.js.map +0 -1
  409. package/dist/client-go/errors.go +0 -236
  410. package/dist/client-go/export.go +0 -44
  411. package/dist/client-go/invalidation.go +0 -371
  412. package/dist/client-go/nullable.go +0 -62
  413. package/dist/client-go/realtime.go +0 -354
  414. package/dist/client-go/result.go +0 -20
  415. package/dist/client-go/runtime.go +0 -975
  416. package/dist/client-go/sse.go +0 -159
  417. package/dist/client-go/transport.go +0 -495
  418. package/dist/client-go/ws.go +0 -128
  419. package/dist/client-info.d.ts +0 -36
  420. package/dist/client-info.d.ts.map +0 -1
  421. package/dist/client-info.js +0 -53
  422. package/dist/client-info.js.map +0 -1
  423. package/dist/client-mcp/README.md +0 -10
  424. package/dist/client-mcp/server.ts +0 -221
  425. package/dist/client-mcp/types.ts +0 -19
  426. package/dist/client-python/_errors.py +0 -115
  427. package/dist/client-python/_invalidation.py +0 -494
  428. package/dist/client-python/_realtime.py +0 -179
  429. package/dist/client-python/_runtime.py +0 -860
  430. package/dist/client-python/_sse.py +0 -155
  431. package/dist/client-python/_transport.py +0 -366
  432. package/dist/client-python/_ws.py +0 -159
  433. package/dist/client-python/py.typed +0 -0
  434. package/dist/client-rust/errors.rs +0 -220
  435. package/dist/client-rust/invalidation.rs +0 -412
  436. package/dist/client-rust/invalidation_sync.rs +0 -93
  437. package/dist/client-rust/nullable.rs +0 -17
  438. package/dist/client-rust/realtime.rs +0 -702
  439. package/dist/client-rust/result.rs +0 -22
  440. package/dist/client-rust/runtime.rs +0 -980
  441. package/dist/client-rust/runtime_sync.rs +0 -484
  442. package/dist/client-rust/sse.rs +0 -188
  443. package/dist/client-rust/ws.rs +0 -167
  444. package/dist/codegen-go-cli.d.ts +0 -22
  445. package/dist/codegen-go-cli.d.ts.map +0 -1
  446. package/dist/codegen-go-cli.js +0 -964
  447. package/dist/codegen-go-cli.js.map +0 -1
  448. package/dist/codegen-go.d.ts +0 -41
  449. package/dist/codegen-go.d.ts.map +0 -1
  450. package/dist/codegen-go.js +0 -872
  451. package/dist/codegen-go.js.map +0 -1
  452. package/dist/codegen-hash.d.ts +0 -3
  453. package/dist/codegen-hash.d.ts.map +0 -1
  454. package/dist/codegen-hash.js +0 -9
  455. package/dist/codegen-hash.js.map +0 -1
  456. package/dist/codegen-ir.d.ts +0 -190
  457. package/dist/codegen-ir.d.ts.map +0 -1
  458. package/dist/codegen-ir.js +0 -661
  459. package/dist/codegen-ir.js.map +0 -1
  460. package/dist/codegen-lang.d.ts +0 -65
  461. package/dist/codegen-lang.d.ts.map +0 -1
  462. package/dist/codegen-lang.js +0 -526
  463. package/dist/codegen-lang.js.map +0 -1
  464. package/dist/codegen-load.d.ts +0 -31
  465. package/dist/codegen-load.d.ts.map +0 -1
  466. package/dist/codegen-load.js +0 -138
  467. package/dist/codegen-load.js.map +0 -1
  468. package/dist/codegen-loaders.d.ts +0 -12
  469. package/dist/codegen-loaders.d.ts.map +0 -1
  470. package/dist/codegen-loaders.js +0 -55
  471. package/dist/codegen-loaders.js.map +0 -1
  472. package/dist/codegen-mcp.d.ts +0 -13
  473. package/dist/codegen-mcp.d.ts.map +0 -1
  474. package/dist/codegen-mcp.js +0 -368
  475. package/dist/codegen-mcp.js.map +0 -1
  476. package/dist/codegen-python.d.ts +0 -33
  477. package/dist/codegen-python.d.ts.map +0 -1
  478. package/dist/codegen-python.js +0 -828
  479. package/dist/codegen-python.js.map +0 -1
  480. package/dist/codegen-route-tree-intern.d.ts +0 -40
  481. package/dist/codegen-route-tree-intern.d.ts.map +0 -1
  482. package/dist/codegen-route-tree-intern.js +0 -221
  483. package/dist/codegen-route-tree-intern.js.map +0 -1
  484. package/dist/codegen-rust.d.ts +0 -18
  485. package/dist/codegen-rust.d.ts.map +0 -1
  486. package/dist/codegen-rust.js +0 -1293
  487. package/dist/codegen-rust.js.map +0 -1
  488. package/dist/codegen-sanitize.d.ts +0 -3
  489. package/dist/codegen-sanitize.d.ts.map +0 -1
  490. package/dist/codegen-sanitize.js +0 -56
  491. package/dist/codegen-sanitize.js.map +0 -1
  492. package/dist/codegen-schema-naming.d.ts +0 -27
  493. package/dist/codegen-schema-naming.d.ts.map +0 -1
  494. package/dist/codegen-schema-naming.js +0 -150
  495. package/dist/codegen-schema-naming.js.map +0 -1
  496. package/dist/codegen-sdk-model.d.ts +0 -71
  497. package/dist/codegen-sdk-model.d.ts.map +0 -1
  498. package/dist/codegen-sdk-model.js +0 -179
  499. package/dist/codegen-sdk-model.js.map +0 -1
  500. package/dist/codegen.d.ts +0 -187
  501. package/dist/codegen.d.ts.map +0 -1
  502. package/dist/codegen.js +0 -4619
  503. package/dist/codegen.js.map +0 -1
  504. package/dist/context.d.ts +0 -86
  505. package/dist/context.d.ts.map +0 -1
  506. package/dist/context.js +0 -242
  507. package/dist/context.js.map +0 -1
  508. package/dist/cookie-sign.d.ts +0 -17
  509. package/dist/cookie-sign.d.ts.map +0 -1
  510. package/dist/cookie-sign.js +0 -104
  511. package/dist/cookie-sign.js.map +0 -1
  512. package/dist/cookie.d.ts +0 -24
  513. package/dist/cookie.d.ts.map +0 -1
  514. package/dist/cookie.js +0 -138
  515. package/dist/cookie.js.map +0 -1
  516. package/dist/cors.d.ts +0 -14
  517. package/dist/cors.d.ts.map +0 -1
  518. package/dist/cors.js +0 -87
  519. package/dist/cors.js.map +0 -1
  520. package/dist/crypto.d.ts +0 -7
  521. package/dist/crypto.d.ts.map +0 -1
  522. package/dist/crypto.js +0 -38
  523. package/dist/crypto.js.map +0 -1
  524. package/dist/csrf.d.ts +0 -28
  525. package/dist/csrf.d.ts.map +0 -1
  526. package/dist/csrf.js +0 -79
  527. package/dist/csrf.js.map +0 -1
  528. package/dist/curl-logger.d.ts +0 -44
  529. package/dist/curl-logger.d.ts.map +0 -1
  530. package/dist/curl-logger.js +0 -199
  531. package/dist/curl-logger.js.map +0 -1
  532. package/dist/detect-runtime.d.ts +0 -16
  533. package/dist/detect-runtime.d.ts.map +0 -1
  534. package/dist/detect-runtime.js +0 -13
  535. package/dist/detect-runtime.js.map +0 -1
  536. package/dist/dict.d.ts +0 -11
  537. package/dist/dict.d.ts.map +0 -1
  538. package/dist/dict.js +0 -13
  539. package/dist/dict.js.map +0 -1
  540. package/dist/error.d.ts +0 -21
  541. package/dist/error.d.ts.map +0 -1
  542. package/dist/error.js +0 -44
  543. package/dist/error.js.map +0 -1
  544. package/dist/errors.d.ts +0 -40
  545. package/dist/errors.d.ts.map +0 -1
  546. package/dist/errors.js +0 -39
  547. package/dist/errors.js.map +0 -1
  548. package/dist/etag.d.ts +0 -11
  549. package/dist/etag.d.ts.map +0 -1
  550. package/dist/etag.js +0 -82
  551. package/dist/etag.js.map +0 -1
  552. package/dist/feature-detect.d.ts +0 -25
  553. package/dist/feature-detect.d.ts.map +0 -1
  554. package/dist/feature-detect.js +0 -144
  555. package/dist/feature-detect.js.map +0 -1
  556. package/dist/feature-load.d.ts +0 -3
  557. package/dist/feature-load.d.ts.map +0 -1
  558. package/dist/feature-load.js +0 -36
  559. package/dist/feature-load.js.map +0 -1
  560. package/dist/feature-slots.d.ts +0 -44
  561. package/dist/feature-slots.d.ts.map +0 -1
  562. package/dist/feature-slots.js +0 -48
  563. package/dist/feature-slots.js.map +0 -1
  564. package/dist/fetch-request.d.ts +0 -10
  565. package/dist/fetch-request.d.ts.map +0 -1
  566. package/dist/fetch-request.js +0 -13
  567. package/dist/fetch-request.js.map +0 -1
  568. package/dist/gen-process.d.ts +0 -15
  569. package/dist/gen-process.d.ts.map +0 -1
  570. package/dist/gen-process.js +0 -43
  571. package/dist/gen-process.js.map +0 -1
  572. package/dist/gen-write.d.ts +0 -19
  573. package/dist/gen-write.d.ts.map +0 -1
  574. package/dist/gen-write.js +0 -120
  575. package/dist/gen-write.js.map +0 -1
  576. package/dist/glob.d.ts +0 -21
  577. package/dist/glob.d.ts.map +0 -1
  578. package/dist/glob.js +0 -115
  579. package/dist/glob.js.map +0 -1
  580. package/dist/go-type-emitter.d.ts +0 -47
  581. package/dist/go-type-emitter.d.ts.map +0 -1
  582. package/dist/go-type-emitter.js +0 -594
  583. package/dist/go-type-emitter.js.map +0 -1
  584. package/dist/honey-response.d.ts +0 -82
  585. package/dist/honey-response.d.ts.map +0 -1
  586. package/dist/honey-response.js +0 -338
  587. package/dist/honey-response.js.map +0 -1
  588. package/dist/i18n-slot.d.ts +0 -15
  589. package/dist/i18n-slot.d.ts.map +0 -1
  590. package/dist/i18n-slot.js +0 -14
  591. package/dist/i18n-slot.js.map +0 -1
  592. package/dist/i18n.d.ts +0 -29
  593. package/dist/i18n.d.ts.map +0 -1
  594. package/dist/i18n.js +0 -250
  595. package/dist/i18n.js.map +0 -1
  596. package/dist/index.d.ts.map +0 -1
  597. package/dist/index.js.map +0 -1
  598. package/dist/init.d.ts +0 -5
  599. package/dist/init.d.ts.map +0 -1
  600. package/dist/init.js +0 -140
  601. package/dist/init.js.map +0 -1
  602. package/dist/input.d.ts +0 -6
  603. package/dist/input.d.ts.map +0 -1
  604. package/dist/input.js +0 -4
  605. package/dist/input.js.map +0 -1
  606. package/dist/invalidate-check.d.ts +0 -61
  607. package/dist/invalidate-check.d.ts.map +0 -1
  608. package/dist/invalidate-check.js +0 -163
  609. package/dist/invalidate-check.js.map +0 -1
  610. package/dist/invoke-user.d.ts +0 -35
  611. package/dist/invoke-user.d.ts.map +0 -1
  612. package/dist/invoke-user.js +0 -73
  613. package/dist/invoke-user.js.map +0 -1
  614. package/dist/ip-restrict.d.ts +0 -24
  615. package/dist/ip-restrict.d.ts.map +0 -1
  616. package/dist/ip-restrict.js +0 -60
  617. package/dist/ip-restrict.js.map +0 -1
  618. package/dist/ip.d.ts +0 -39
  619. package/dist/ip.d.ts.map +0 -1
  620. package/dist/ip.js +0 -209
  621. package/dist/ip.js.map +0 -1
  622. package/dist/logger.d.ts +0 -45
  623. package/dist/logger.d.ts.map +0 -1
  624. package/dist/logger.js +0 -113
  625. package/dist/logger.js.map +0 -1
  626. package/dist/media-type.d.ts +0 -30
  627. package/dist/media-type.d.ts.map +0 -1
  628. package/dist/media-type.js +0 -97
  629. package/dist/media-type.js.map +0 -1
  630. package/dist/meta-spec-merge.d.ts +0 -32
  631. package/dist/meta-spec-merge.d.ts.map +0 -1
  632. package/dist/meta-spec-merge.js +0 -68
  633. package/dist/meta-spec-merge.js.map +0 -1
  634. package/dist/meta-spec.d.ts +0 -94
  635. package/dist/meta-spec.d.ts.map +0 -1
  636. package/dist/meta-spec.js +0 -535
  637. package/dist/meta-spec.js.map +0 -1
  638. package/dist/middleware.d.ts +0 -77
  639. package/dist/middleware.d.ts.map +0 -1
  640. package/dist/middleware.js +0 -253
  641. package/dist/middleware.js.map +0 -1
  642. package/dist/node-request.d.ts +0 -104
  643. package/dist/node-request.d.ts.map +0 -1
  644. package/dist/node-request.js +0 -407
  645. package/dist/node-request.js.map +0 -1
  646. package/dist/node.d.ts +0 -30
  647. package/dist/node.d.ts.map +0 -1
  648. package/dist/node.js +0 -396
  649. package/dist/node.js.map +0 -1
  650. package/dist/openapi/collect.d.ts.map +0 -1
  651. package/dist/openapi/collect.js.map +0 -1
  652. package/dist/openapi/docs-page.d.ts.map +0 -1
  653. package/dist/openapi/docs-page.js.map +0 -1
  654. package/dist/openapi/document.d.ts.map +0 -1
  655. package/dist/openapi/document.js.map +0 -1
  656. package/dist/openapi/json-schema-slot.d.ts +0 -12
  657. package/dist/openapi/json-schema-slot.d.ts.map +0 -1
  658. package/dist/openapi/json-schema-slot.js +0 -38
  659. package/dist/openapi/json-schema-slot.js.map +0 -1
  660. package/dist/openapi/register.d.ts.map +0 -1
  661. package/dist/openapi/register.js.map +0 -1
  662. package/dist/openapi/scalar.d.ts.map +0 -1
  663. package/dist/openapi/scalar.js.map +0 -1
  664. package/dist/openapi/serve.d.ts.map +0 -1
  665. package/dist/openapi/serve.js.map +0 -1
  666. package/dist/openapi/spec-factory.d.ts +0 -65
  667. package/dist/openapi/spec-factory.d.ts.map +0 -1
  668. package/dist/openapi/spec-factory.js +0 -52
  669. package/dist/openapi/spec-factory.js.map +0 -1
  670. package/dist/openapi/spec.d.ts +0 -29
  671. package/dist/openapi/spec.d.ts.map +0 -1
  672. package/dist/openapi/spec.js +0 -50
  673. package/dist/openapi/spec.js.map +0 -1
  674. package/dist/openapi/swagger.d.ts.map +0 -1
  675. package/dist/openapi/swagger.js.map +0 -1
  676. package/dist/pattern.d.ts +0 -71
  677. package/dist/pattern.d.ts.map +0 -1
  678. package/dist/pattern.js +0 -239
  679. package/dist/pattern.js.map +0 -1
  680. package/dist/peer.d.ts +0 -17
  681. package/dist/peer.d.ts.map +0 -1
  682. package/dist/peer.js +0 -50
  683. package/dist/peer.js.map +0 -1
  684. package/dist/plugin.d.ts +0 -228
  685. package/dist/plugin.d.ts.map +0 -1
  686. package/dist/plugin.js +0 -666
  687. package/dist/plugin.js.map +0 -1
  688. package/dist/powered-by.d.ts +0 -7
  689. package/dist/powered-by.d.ts.map +0 -1
  690. package/dist/powered-by.js +0 -11
  691. package/dist/powered-by.js.map +0 -1
  692. package/dist/pretty-json.d.ts +0 -10
  693. package/dist/pretty-json.d.ts.map +0 -1
  694. package/dist/pretty-json.js +0 -47
  695. package/dist/pretty-json.js.map +0 -1
  696. package/dist/producer-stream.d.ts +0 -47
  697. package/dist/producer-stream.d.ts.map +0 -1
  698. package/dist/producer-stream.js +0 -267
  699. package/dist/producer-stream.js.map +0 -1
  700. package/dist/proxy.d.ts +0 -90
  701. package/dist/proxy.d.ts.map +0 -1
  702. package/dist/proxy.js +0 -274
  703. package/dist/proxy.js.map +0 -1
  704. package/dist/python-type-emitter.d.ts +0 -24
  705. package/dist/python-type-emitter.d.ts.map +0 -1
  706. package/dist/python-type-emitter.js +0 -157
  707. package/dist/python-type-emitter.js.map +0 -1
  708. package/dist/realtime/bus.d.ts.map +0 -1
  709. package/dist/realtime/bus.js.map +0 -1
  710. package/dist/realtime/register.d.ts +0 -3
  711. package/dist/realtime/register.d.ts.map +0 -1
  712. package/dist/realtime/register.js +0 -10
  713. package/dist/realtime/register.js.map +0 -1
  714. package/dist/realtime/route.d.ts.map +0 -1
  715. package/dist/realtime/route.js.map +0 -1
  716. package/dist/realtime/server.d.ts.map +0 -1
  717. package/dist/realtime/server.js.map +0 -1
  718. package/dist/request-id.d.ts +0 -19
  719. package/dist/request-id.d.ts.map +0 -1
  720. package/dist/request-id.js +0 -16
  721. package/dist/request-id.js.map +0 -1
  722. package/dist/request-limits.d.ts +0 -3
  723. package/dist/request-limits.d.ts.map +0 -1
  724. package/dist/request-limits.js +0 -3
  725. package/dist/request-limits.js.map +0 -1
  726. package/dist/request-path.d.ts +0 -33
  727. package/dist/request-path.d.ts.map +0 -1
  728. package/dist/request-path.js +0 -178
  729. package/dist/request-path.js.map +0 -1
  730. package/dist/request-to-curl.d.ts +0 -15
  731. package/dist/request-to-curl.d.ts.map +0 -1
  732. package/dist/request-to-curl.js +0 -48
  733. package/dist/request-to-curl.js.map +0 -1
  734. package/dist/response.d.ts +0 -86
  735. package/dist/response.d.ts.map +0 -1
  736. package/dist/response.js +0 -313
  737. package/dist/response.js.map +0 -1
  738. package/dist/rust-type-emitter.d.ts +0 -44
  739. package/dist/rust-type-emitter.d.ts.map +0 -1
  740. package/dist/rust-type-emitter.js +0 -463
  741. package/dist/rust-type-emitter.js.map +0 -1
  742. package/dist/secure-headers.d.ts +0 -16
  743. package/dist/secure-headers.d.ts.map +0 -1
  744. package/dist/secure-headers.js +0 -53
  745. package/dist/secure-headers.js.map +0 -1
  746. package/dist/serve-register.d.ts +0 -6
  747. package/dist/serve-register.d.ts.map +0 -1
  748. package/dist/serve-register.js +0 -9
  749. package/dist/serve-register.js.map +0 -1
  750. package/dist/serve-slot.d.ts +0 -9
  751. package/dist/serve-slot.d.ts.map +0 -1
  752. package/dist/serve-slot.js +0 -52
  753. package/dist/serve-slot.js.map +0 -1
  754. package/dist/serve.d.ts +0 -38
  755. package/dist/serve.d.ts.map +0 -1
  756. package/dist/serve.js +0 -157
  757. package/dist/serve.js.map +0 -1
  758. package/dist/server-timing.d.ts +0 -9
  759. package/dist/server-timing.d.ts.map +0 -1
  760. package/dist/server-timing.js +0 -51
  761. package/dist/server-timing.js.map +0 -1
  762. package/dist/static.d.ts +0 -21
  763. package/dist/static.d.ts.map +0 -1
  764. package/dist/static.js +0 -102
  765. package/dist/static.js.map +0 -1
  766. package/dist/telemetry/otel.d.ts.map +0 -1
  767. package/dist/telemetry/otel.js.map +0 -1
  768. package/dist/testing.d.ts +0 -36
  769. package/dist/testing.d.ts.map +0 -1
  770. package/dist/testing.js +0 -124
  771. package/dist/testing.js.map +0 -1
  772. package/dist/timeout.d.ts +0 -13
  773. package/dist/timeout.d.ts.map +0 -1
  774. package/dist/timeout.js +0 -36
  775. package/dist/timeout.js.map +0 -1
  776. package/dist/tree.d.ts +0 -193
  777. package/dist/tree.d.ts.map +0 -1
  778. package/dist/tree.js +0 -437
  779. package/dist/tree.js.map +0 -1
  780. package/dist/trust.d.ts +0 -21
  781. package/dist/trust.d.ts.map +0 -1
  782. package/dist/trust.js +0 -100
  783. package/dist/trust.js.map +0 -1
  784. package/dist/ts-type-emitter.d.ts +0 -8
  785. package/dist/ts-type-emitter.d.ts.map +0 -1
  786. package/dist/ts-type-emitter.js +0 -150
  787. package/dist/ts-type-emitter.js.map +0 -1
  788. package/dist/type-emitter.d.ts +0 -36
  789. package/dist/type-emitter.d.ts.map +0 -1
  790. package/dist/type-emitter.js +0 -729
  791. package/dist/type-emitter.js.map +0 -1
  792. package/dist/type-extractor.d.ts +0 -43
  793. package/dist/type-extractor.d.ts.map +0 -1
  794. package/dist/type-extractor.js +0 -819
  795. package/dist/type-extractor.js.map +0 -1
  796. package/dist/types.d.ts +0 -467
  797. package/dist/types.d.ts.map +0 -1
  798. package/dist/types.js +0 -96
  799. package/dist/types.js.map +0 -1
  800. package/dist/validation.d.ts +0 -31
  801. package/dist/validation.d.ts.map +0 -1
  802. package/dist/validation.js +0 -335
  803. package/dist/validation.js.map +0 -1
  804. package/dist/with-headers.d.ts +0 -15
  805. package/dist/with-headers.d.ts.map +0 -1
  806. package/dist/with-headers.js +0 -45
  807. package/dist/with-headers.js.map +0 -1
  808. package/dist/ws/bun.d.ts.map +0 -1
  809. package/dist/ws/bun.js.map +0 -1
  810. package/dist/ws/cloudflare.d.ts.map +0 -1
  811. package/dist/ws/cloudflare.js.map +0 -1
  812. package/dist/ws/deno.d.ts +0 -13
  813. package/dist/ws/deno.d.ts.map +0 -1
  814. package/dist/ws/deno.js +0 -133
  815. package/dist/ws/deno.js.map +0 -1
  816. package/dist/ws/node.d.ts.map +0 -1
  817. package/dist/ws/node.js.map +0 -1
  818. package/dist/ws/session.d.ts.map +0 -1
  819. package/dist/ws/session.js.map +0 -1
  820. package/dist/ws/shared.d.ts.map +0 -1
  821. package/dist/ws/shared.js.map +0 -1
  822. package/dist/ws-origin.d.ts +0 -20
  823. package/dist/ws-origin.d.ts.map +0 -1
  824. package/dist/ws-origin.js +0 -41
  825. package/dist/ws-origin.js.map +0 -1
  826. package/dist/yaml.d.ts +0 -18
  827. package/dist/yaml.d.ts.map +0 -1
  828. package/dist/yaml.js +0 -101
  829. package/dist/yaml.js.map +0 -1
  830. package/docs/api-ref/go.md +0 -399
  831. package/docs/api-ref/python.md +0 -399
  832. package/docs/api-ref/rust.md +0 -399
  833. package/docs/api-ref/typescript.md +0 -399
  834. package/docs/invalidate-spec.md +0 -333
  835. package/docs/meta-spec.md +0 -555
  836. package/docs/packaging.md +0 -104
  837. package/docs/regression-matrix/README.md +0 -32
  838. package/docs/regression-matrix/review.md +0 -44
  839. package/docs/regression-matrix/ws1-3.md +0 -97
  840. package/docs/regression-matrix/ws4-8.md +0 -107
  841. package/docs/regression-matrix/ws9-12.md +0 -266
  842. package/docs/sdk.md +0 -798
  843. package/src/accepts.ts +0 -136
  844. package/src/body-kind.ts +0 -67
  845. package/src/body-limit.ts +0 -152
  846. package/src/build/index.ts +0 -217
  847. package/src/cli-args.ts +0 -123
  848. package/src/cli-go/auth.go +0 -26
  849. package/src/cli-go/config.go +0 -192
  850. package/src/cli-go/errors.go +0 -75
  851. package/src/cli-go/multipart.go +0 -79
  852. package/src/cli-go/output.go +0 -163
  853. package/src/cli-go/root.go +0 -30
  854. package/src/cli-go/stream.go +0 -88
  855. package/src/cli-go/version.go +0 -5
  856. package/src/cli.ts +0 -209
  857. package/src/client/defaults.ts +0 -47
  858. package/src/client/error.ts +0 -82
  859. package/src/client/http.ts +0 -737
  860. package/src/client/index.ts +0 -157
  861. package/src/client/path.ts +0 -169
  862. package/src/client/redirect-policy.ts +0 -19
  863. package/src/client/sdk.ts +0 -351
  864. package/src/client/sse.ts +0 -128
  865. package/src/client/types.ts +0 -206
  866. package/src/client/ws.ts +0 -149
  867. package/src/client-go/errors.go +0 -236
  868. package/src/client-go/export.go +0 -44
  869. package/src/client-go/invalidation.go +0 -371
  870. package/src/client-go/nullable.go +0 -62
  871. package/src/client-go/realtime.go +0 -354
  872. package/src/client-go/result.go +0 -20
  873. package/src/client-go/runtime.go +0 -975
  874. package/src/client-go/sse.go +0 -159
  875. package/src/client-go/transport.go +0 -495
  876. package/src/client-go/ws.go +0 -128
  877. package/src/client-info.ts +0 -79
  878. package/src/client-mcp/README.md +0 -10
  879. package/src/client-mcp/server.ts +0 -221
  880. package/src/client-mcp/types.ts +0 -19
  881. package/src/client-python/_errors.py +0 -115
  882. package/src/client-python/_invalidation.py +0 -494
  883. package/src/client-python/_realtime.py +0 -179
  884. package/src/client-python/_runtime.py +0 -860
  885. package/src/client-python/_sse.py +0 -155
  886. package/src/client-python/_transport.py +0 -366
  887. package/src/client-python/_ws.py +0 -159
  888. package/src/client-python/py.typed +0 -0
  889. package/src/client-rust/errors.rs +0 -220
  890. package/src/client-rust/invalidation.rs +0 -412
  891. package/src/client-rust/invalidation_sync.rs +0 -93
  892. package/src/client-rust/nullable.rs +0 -17
  893. package/src/client-rust/realtime.rs +0 -702
  894. package/src/client-rust/result.rs +0 -22
  895. package/src/client-rust/runtime.rs +0 -980
  896. package/src/client-rust/runtime_sync.rs +0 -484
  897. package/src/client-rust/sse.rs +0 -188
  898. package/src/client-rust/ws.rs +0 -167
  899. package/src/codegen-go-cli.ts +0 -1066
  900. package/src/codegen-go.ts +0 -970
  901. package/src/codegen-hash.ts +0 -8
  902. package/src/codegen-ir.ts +0 -812
  903. package/src/codegen-lang.ts +0 -517
  904. package/src/codegen-load.ts +0 -150
  905. package/src/codegen-loaders.ts +0 -50
  906. package/src/codegen-mcp.ts +0 -445
  907. package/src/codegen-python.ts +0 -916
  908. package/src/codegen-route-tree-intern.ts +0 -198
  909. package/src/codegen-rust.ts +0 -1402
  910. package/src/codegen-sanitize.ts +0 -57
  911. package/src/codegen-schema-naming.ts +0 -165
  912. package/src/codegen-sdk-model.ts +0 -228
  913. package/src/codegen.ts +0 -5089
  914. package/src/context.ts +0 -325
  915. package/src/cookie-sign.ts +0 -119
  916. package/src/cookie.ts +0 -143
  917. package/src/cors.ts +0 -95
  918. package/src/crypto.ts +0 -38
  919. package/src/csrf.ts +0 -86
  920. package/src/curl-logger.ts +0 -258
  921. package/src/detect-runtime.ts +0 -17
  922. package/src/dict.ts +0 -12
  923. package/src/error.ts +0 -55
  924. package/src/errors.ts +0 -85
  925. package/src/etag.ts +0 -97
  926. package/src/feature-detect.ts +0 -147
  927. package/src/feature-load.ts +0 -23
  928. package/src/feature-slots.ts +0 -70
  929. package/src/fetch-request.ts +0 -13
  930. package/src/gen-process.ts +0 -42
  931. package/src/gen-write.ts +0 -127
  932. package/src/glob.ts +0 -109
  933. package/src/go-type-emitter.ts +0 -660
  934. package/src/honey-response.ts +0 -379
  935. package/src/i18n-slot.ts +0 -30
  936. package/src/i18n.ts +0 -300
  937. package/src/index.ts +0 -3829
  938. package/src/init.ts +0 -161
  939. package/src/input.ts +0 -8
  940. package/src/invalidate-check.ts +0 -205
  941. package/src/invoke-user.ts +0 -95
  942. package/src/ip-restrict.ts +0 -79
  943. package/src/ip.ts +0 -194
  944. package/src/logger.ts +0 -178
  945. package/src/media-type.ts +0 -104
  946. package/src/meta-spec-merge.ts +0 -80
  947. package/src/meta-spec.ts +0 -718
  948. package/src/middleware.ts +0 -331
  949. package/src/node-request.ts +0 -431
  950. package/src/node.ts +0 -454
  951. package/src/openapi/collect.ts +0 -50
  952. package/src/openapi/docs-page.ts +0 -89
  953. package/src/openapi/document.ts +0 -893
  954. package/src/openapi/json-schema-slot.ts +0 -53
  955. package/src/openapi/register.ts +0 -23
  956. package/src/openapi/scalar.ts +0 -34
  957. package/src/openapi/serve.ts +0 -39
  958. package/src/openapi/spec-factory.ts +0 -100
  959. package/src/openapi/spec.ts +0 -74
  960. package/src/openapi/swagger.ts +0 -35
  961. package/src/pattern.ts +0 -245
  962. package/src/peer.ts +0 -53
  963. package/src/plugin.ts +0 -864
  964. package/src/powered-by.ts +0 -18
  965. package/src/pretty-json.ts +0 -56
  966. package/src/producer-stream.ts +0 -296
  967. package/src/proxy.ts +0 -370
  968. package/src/python-type-emitter.ts +0 -181
  969. package/src/realtime/bus.ts +0 -140
  970. package/src/realtime/register.ts +0 -13
  971. package/src/realtime/route.ts +0 -153
  972. package/src/realtime/server.ts +0 -298
  973. package/src/request-id.ts +0 -32
  974. package/src/request-limits.ts +0 -2
  975. package/src/request-path.ts +0 -165
  976. package/src/request-to-curl.ts +0 -52
  977. package/src/response.ts +0 -411
  978. package/src/rust-type-emitter.ts +0 -548
  979. package/src/secure-headers.ts +0 -74
  980. package/src/serve-register.ts +0 -12
  981. package/src/serve-slot.ts +0 -58
  982. package/src/serve.ts +0 -220
  983. package/src/server-timing.ts +0 -71
  984. package/src/static.ts +0 -112
  985. package/src/telemetry/otel.ts +0 -156
  986. package/src/testing.ts +0 -167
  987. package/src/timeout.ts +0 -45
  988. package/src/tree.ts +0 -554
  989. package/src/trust.ts +0 -117
  990. package/src/ts-type-emitter.ts +0 -168
  991. package/src/type-emitter.ts +0 -760
  992. package/src/type-extractor.ts +0 -855
  993. package/src/types.ts +0 -756
  994. package/src/validation.ts +0 -413
  995. package/src/with-headers.ts +0 -45
  996. package/src/ws/bun.ts +0 -120
  997. package/src/ws/cloudflare.ts +0 -192
  998. package/src/ws/deno.ts +0 -188
  999. package/src/ws/node.ts +0 -240
  1000. package/src/ws/session.ts +0 -73
  1001. package/src/ws/shared.ts +0 -140
  1002. package/src/ws-origin.ts +0 -53
  1003. package/src/yaml.ts +0 -103
package/dist/index.d.ts CHANGED
@@ -1,746 +1,32 @@
1
- import { HoneyContext } from "./context.ts";
2
- import { type TrustSetting } from "./client-info.ts";
3
- import type { TrustProxy } from "./trust.ts";
4
- import { HoneyError } from "./error.ts";
5
- import { ERROR_META } from "./errors.ts";
6
- import type { ChainErrorConverter, MiddlewareFn, RuntimeMiddleware } from "./middleware.ts";
7
- import type { ProxyConfig } from "./proxy.ts";
8
- import type { CustomErrorFormatter, ErrorFormatter, ResponseOptions, TypedResponse } from "./response.ts";
9
- import { type HoneyRes } from "./response.ts";
10
- import type { RouteId, Segment } from "./pattern.ts";
11
- import type { RouteEntry, RouteHandler, RouteTree, TreeNode, WSRouteHandler } from "./tree.ts";
12
- import type { RealtimeBus } from "./realtime/bus.ts";
13
- import type { RealtimeConfig, RealtimeRouteOpts } from "./realtime/route.ts";
14
- import type { RealtimePublisher } from "./realtime/server.ts";
15
- import type { ComputeErrorsByStatus, DefaultMeta, ExtractSchemas, HttpMethod, InferInputMap, InferOutput, HoneyMetaSpec, InputSchemasDef, MergePath, MergeRoute, MetaSpecConfig, OutputSchemaDef, ParamsFromPath, PrefixRoutes, StandardSchemaLike, TapContext } from "./types.ts";
16
- import type { WSAdapter, WSHandler } from "./ws/cloudflare.ts";
17
- import { type WSOriginPolicy } from "./ws-origin.ts";
18
- import type { MetaSpecSource } from "./meta-spec-merge.ts";
19
- import type { HoneyServeOptions, ServeHandle } from "./serve.ts";
20
- export { clientInfo, HoneyContext } from "./context.ts";
21
- export { toFetchRequest } from "./fetch-request.ts";
22
- export type { WSOriginPolicy } from "./ws-origin.ts";
23
- export type { ClientInfo } from "./client-info.ts";
24
- export type { TrustProxy } from "./trust.ts";
25
- /** HoneyContext without internal backing fields — use this for consumer-facing types */
26
- export type HoneyCtx<TEnv = Record<string, unknown>> = Omit<import("./context.ts").HoneyContext<TEnv>, "_errorToResponse" | "_isErrorResponse" | "_lzClient" | "_lzCookies" | "_lzHeaders" | "_lzSearch" | "_lzSearchAll" | "_lzUrlFn" | "_rq" | "_setErrors">;
27
- export { HoneyError } from "./error.ts";
28
- export { defineErrors, ERROR_META } from "./errors.ts";
29
- export type { ErrorMetaEntry } from "./errors.ts";
30
- export type { MiddlewareFn } from "./middleware.ts";
31
- export { createMiddleware, defineMiddleware } from "./middleware.ts";
32
- export type { ProxyConfig } from "./proxy.ts";
33
- export type { PendingTap, TapContext, TapHandler } from "./types.ts";
34
- export type { CookieOptions, CustomErrorFormatter, ErrorFormatter, ResponseOptions, SSEEvent, SSEOptions, SSEStream, TypedResponse, } from "./response.ts";
35
- export { createErrorResponse, HoneyRes } from "./response.ts";
36
- export { mergeTree } from "./tree.ts";
37
- export type { DefaultMeta, HoneyCodegen, HoneyMeta, InferBasePath, InferCtx, InferEnv, InferErrorFactory, InferInputMap, InferMeta, InferMethods, InferOutput, InferRouteCtx, InferRouteErrors, InferRouteInput, InferRouteMeta, InferRouteMethods, InferRouteOutput, InferRoutePaths, InferRoutes, InputSchemasDef, MergePath, PrefixRoutes, HoneyMetaSpec, MetaSpecConfig, MetaSpecContext, MetaSpecEntry, MetaSpecMergeConflict, MetaSpecExpand, MetaSpecProfile, MetaSpecSchemaEntry, MetaSpecSchemaSearch, MetaSpecSchemaSource, MetaSpecSingle, MetaSpecStrictness, MetaSpecTarget, OpenApiMeta, OutputSchemaDef, Overwrite, ComputeErrorsByStatus, RouteRecord, StandardSchemaLike, StatusKey, SuccessStatusKey, } from "./types.ts";
38
- export type { WSAdapter, WSAdapterOptions, WSContext, WSHandler, WSPreUpgrade } from "./ws/cloudflare.ts";
39
- export type { ConnContext, RealtimeLimits, RealtimeRouteOpts } from "./realtime/route.ts";
40
- export type { RealtimePublisher } from "./realtime/server.ts";
41
- export type { RealtimeBus } from "./realtime/bus.ts";
42
- export type { HoneyServeOptions, ServeHandle } from "./serve.ts";
43
- export type { ServeRuntime } from "./detect-runtime.ts";
44
- export { detectRuntime } from "./detect-runtime.ts";
45
- type TelemetryAdapter = {
46
- onError?(ctx: {
47
- duration: number;
48
- error: HoneyError;
49
- method: string;
50
- path: string;
51
- }): void;
52
- /** `path` is the request path; `route` the matched pattern (`/users/:id`). */
53
- onHandler?(ctx: {
54
- duration: number;
55
- method: string;
56
- path: string;
57
- route: string;
58
- status: number;
59
- }): void;
60
- onMethodNotAllowed?(ctx: {
61
- allowed: string[];
62
- method: string;
63
- path: string;
64
- req: Request;
65
- }): void;
66
- onMiddleware?(ctx: {
67
- duration: number;
68
- error?: unknown;
69
- name: string;
70
- }): void;
71
- onNotFound?(ctx: {
72
- method: string;
73
- path: string;
74
- req: Request;
75
- }): void;
76
- onRequest?(ctx: {
77
- env: unknown;
78
- req: Request;
79
- }): void;
80
- /** Fires exactly once per request that fired `onRequest`, whichever way it exits. */
81
- onResponse?(ctx: {
82
- duration: number;
83
- req: Request;
84
- status: number;
85
- }): void;
86
- /** `path` is the request path; `route` the matched pattern (`/users/:id`). */
87
- onRoute?(ctx: {
88
- method: string;
89
- params: Record<string, string>;
90
- path: string;
91
- req: Request;
92
- route: string;
93
- }): void;
94
- };
95
- type ErrorI18nConfig<TEnv> = {
96
- errors?: Record<string, Record<string, string>>;
97
- fieldNames?: Record<string, Record<string, string>>;
98
- resolveLocale: (ctx: {
99
- cookies: Record<string, string>;
100
- env: TEnv;
101
- headers: Record<string, string>;
102
- params: Record<string, string>;
103
- req: Request;
104
- search: Record<string, string>;
105
- }) => string | Promise<string>;
106
- };
107
- /** The warn side of a structured logger (`warn(obj, msg)` or `warn(msg)`), e.g. honey/logger. */
108
- type Logger = {
109
- warn?(objOrMsg: Record<string, unknown> | string, msg?: string): void;
110
- };
111
- type ErrorCtx<TEnv> = {
112
- env: TEnv;
113
- jsonFromError: (err: HoneyError) => Response;
114
- req: Request;
115
- };
116
- type OnErrorFn<TEnv> = (error: unknown, ctx: ErrorCtx<TEnv>) => HoneyError | Response | Promise<HoneyError | Response | undefined | void> | undefined | void;
117
- type OnMethodNotAllowedFn<TEnv> = (ctx: ErrorCtx<TEnv> & {
118
- allowed: string[];
119
- }) => Response | Promise<Response>;
120
- type OnNotFoundFn<TEnv> = (ctx: ErrorCtx<TEnv>) => Response | Promise<Response>;
121
- type TapFn<TEnv> = (ctx: TapContext<TEnv>, payload: unknown) => void | Promise<void>;
122
- type ErrorFactoryRecord = Record<string, (...args: never[]) => unknown>;
123
- type OutputValidationMode = "always" | "dev" | "off";
124
- /**
125
- * Settings of one app — shared by every handle derived from it (`use()`, `basePath()`,
126
- * `context()`, `meta()`), so a setter called on any handle applies to all of them and
127
- * serving any handle behaves the same. Records point at the settings of the app they were
128
- * registered on, so a mounted sub-app's routes keep their own error factory, default errors,
129
- * boundary and output validation.
130
- */
131
- type AppSettings<TEnv = unknown> = {
132
- customErrorFormatter: CustomErrorFormatter | null;
133
- customErrorSchema: StandardSchemaLike | null;
134
- defaultBoundaryKey: string | null;
135
- defaultErrorKeys: Set<string>;
136
- errorFactory: ErrorFactoryRecord | null;
137
- errorFormatter: ErrorFormatterFn;
138
- errorI18n: ErrorI18nConfig<TEnv> | null;
139
- errorSchema: StandardSchemaLike | null;
140
- logger: Logger | null;
141
- onError: OnErrorFn<TEnv> | null;
142
- onMethodNotAllowed: OnMethodNotAllowedFn<TEnv> | null;
143
- onNotFound: OnNotFoundFn<TEnv> | null;
144
- /** null = never set: a mounted route follows the mounting app's mode */
145
- outputValidation: OutputValidationMode | null;
146
- stripPrefix: string | null;
147
- taps: Map<string, TapFn<TEnv>> | null;
148
- telemetry: TelemetryAdapter | null;
149
- trailingSlash: "enforce" | "ignore" | "strip";
150
- encodedSlashes: "allow" | "reject";
151
- trust: TrustSetting;
152
- wsAdapter: WSAdapter | null;
153
- };
154
- /**
155
- * Everything a matched route runs, compiled once at finalize: the record (with its resolved
156
- * error keys, meta and chain) and one function that runs chain + handler and never rejects.
157
- */
158
- type Plan = {
159
- /** `.context()` values copied onto each request context */
160
- cv: Record<string, unknown> | null;
161
- /** declared error keys are enforced (the route, its middleware or the app declared any) */
162
- enf: boolean;
163
- /** preflight runner — chain without input validation or handler; compiled on first preflight */
164
- pf: CompiledChain | null;
165
- /** what the preflight runner runs */
166
- pfChain: RuntimeMiddleware[];
167
- r: RouteHandler | WSRouteHandler;
168
- /** realtime route config when this is a realtime route */
169
- rt: RealtimeConfig | null;
170
- run: CompiledChain;
171
- /** taps of the serving app, plus those of the app the route came from */
172
- taps: Map<string, TapFn<unknown>> | null;
173
- };
174
- type CompiledChain = (ctx: object) => Response | Promise<Response>;
175
- /** What one app graph serves, resolved at finalize from records and the loaded tree. */
176
- type FinalTable = {
177
- byId: Map<RouteId, RouteHandler>;
178
- convert: ChainErrorConverter;
179
- epoch: number;
180
- /** 404 / 405: the middleware every route runs, plus the scopes covering the request path */
181
- miss: Plan;
182
- plans: Map<RouteId, Plan>;
183
- /** `METHOD /path` → plan, for routes without params or wildcards */
184
- statics: Record<string, Plan>;
185
- wsById: Map<RouteId, WSRouteHandler>;
186
- wsPlans: Map<RouteId, Plan>;
187
- };
188
- /** One `app.use(mw)` — the handle it returns has to register a route, or `mw` runs nowhere. */
189
- type ChainNode = {
190
- mw: RuntimeMiddleware;
191
- parent: ChainNode | null;
192
- used: boolean;
193
- };
194
- /** A route builder still waiting for `.handler()` — reported at finalize. */
195
- type PendingRoute = {
196
- id: string;
197
- };
198
- /** @internal — runtime entry for a scoped middleware */
199
- type ScopedEntry = {
200
- /** cached from mw.errors at registration; undefined when none */
201
- errors: readonly string[] | undefined;
202
- /** the middleware behind a request-path check, for routes the scope covers only partly */
203
- guard: RuntimeMiddleware;
204
- mw: RuntimeMiddleware;
205
- /** canonical full-path pattern (already rebased against basePath at .use time) */
206
- prefix: string;
207
- segs: Segment[];
208
- };
209
- /**
210
- * One app graph — shared by every handle derived with `use()`, `basePath()`, `context()`,
211
- * `meta()`. Records are per graph, keyed by `RouteId`; the tree holds ids only, so a loaded
212
- * (shared, frozen) tree never carries another app's handlers.
213
- */
214
- type HoneyGraph = {
215
- /** metaSpec policies of mounted sub-apps, merged under `metaSpec` when codegen reads it */
216
- absorbedMetaSpecs: MetaSpecSource[];
217
- /** gateway catch-alls by method — root wildcards registered over a loaded tree that lacks them */
218
- catchAll: Map<string, RouteHandler>;
219
- /** every `use(mw)` handle — one that never registers a route is reported at finalize */
220
- chains: ChainNode[];
221
- /** bumped by every registration; finalize re-runs when it moves */
222
- epoch: number;
223
- final: FinalTable | null;
224
- /** app-wide middleware that runs before every chain (serve({ cors })), keyed so a re-serve replaces it */
225
- global: Map<string, RuntimeMiddleware>;
226
- hasWs: boolean;
227
- /** route data of the loaded tree (per-graph copies) — null when no tree was loaded */
228
- loaded: Map<RouteId, RouteEntry> | null;
229
- /** Codegen-time meta → OpenAPI policy declared on this app. Never read on the request path */
230
- metaSpec: MetaSpecConfig | null;
231
- /** route builders still waiting for `.handler()` */
232
- pending: Set<PendingRoute>;
233
- realtimeBus: RealtimeBus | null;
234
- /** `ctx.realtime`, shared by every request of this graph */
235
- realtimeCtx: RealtimePublisher | null;
236
- realtimeRoutes: Map<string, RealtimeConfig>;
237
- records: Map<RouteId, RouteHandler>;
238
- root: TreeNode;
239
- /** root is a loaded tree (frozen, possibly shared by other apps) — copy before inserting */
240
- rootShared: boolean;
241
- /** path-scoped middleware, in registration order */
242
- scoped: ScopedEntry[];
243
- /** chains of the handles that served a request — decide what 404 and 405 run when there are no routes */
244
- served: Set<RuntimeMiddleware[]>;
245
- settings: AppSettings<unknown>;
246
- /** registered after routeTree() with no leaf in the loaded tree — stale generated file */
247
- unexpected: Set<RouteId>;
248
- /** the loaded tree came in while `honey generate` loaded the app: a stale one is replaced, not fatal */
249
- unloadIfStale: boolean;
250
- wsRecords: Map<RouteId, WSRouteHandler>;
251
- };
252
- type ErrorFormatterFn = ErrorFormatter;
253
- export declare class Honey<TEnv, TCtx = HoneyContext<TEnv>, TRoutes = {}, TMeta = never, TErrorFactory = never, TDefaultErrors extends string = never, TBasePath extends string = "/", TTaps extends Record<string, unknown> = {}, TScopedMw extends readonly ScopedMwEntry[] = []> {
254
- readonly $basePath: TBasePath;
255
- readonly $ctx: TCtx;
256
- readonly $env: TEnv;
257
- readonly $errorFactory: TErrorFactory;
258
- readonly $meta: TMeta;
259
- readonly $routes: TRoutes;
260
- readonly $taps: TTaps;
261
- private _basePath;
262
- private _chain;
263
- private _chainMeta;
264
- private _contextValues;
265
- private _graph;
266
- /** the `use(mw)` call that created this chain — null on the root handle */
267
- private _node;
268
- constructor(opts?: {
269
- graph?: HoneyGraph;
270
- });
271
- private get _s();
272
- /**
273
- * @internal — read by codegen through `metaSpecOf()`: the declared policy and every mounted
274
- * sub-app's, unmerged. Merged on read, so `metaSpec()` may come before or after `route(sub)`;
275
- * the merge lives with codegen so a served app never loads it.
276
- */
277
- private get _metaSpecSource();
278
- /** @internal — read by codegen and OpenAPI */
279
- get _errorFactory(): ErrorFactoryRecord | null;
280
- set _errorFactory(factory: ErrorFactoryRecord | null);
281
- /** @internal — read by OpenAPI */
282
- get _errorSchema(): StandardSchemaLike | null;
283
- /** @internal — read by OpenAPI */
284
- get _customErrorSchema(): StandardSchemaLike | null;
285
- private get _root();
286
- private get _realtimeBus();
287
- /** A new handle on the same graph, carrying this handle's view. */
288
- private _derive;
289
- /** This handle registers, mounts or serves — every `use()` on its way here is in use. */
290
- private _markUsed;
291
- /** @internal — used by RouteBuilder for pre-filtered error factory */
292
- get _factory(): unknown;
293
- /** @internal — used by runtime error boundary */
294
- get _boundaryKey(): string | null;
295
- /** Convert an unknown thrown value to a plain error Response — no boundary, no onError. */
296
- private _toErrorResponse;
297
- private _createBoundaryError;
298
- private _createError;
299
- /**
300
- * The i18n-resolved copy of `honeyError`: message from the locale's template for its
301
- * errorKey, field paths from the locale's field names. Returns `honeyError` itself when
302
- * i18n is not configured or nothing matches. Never mutates it: an error instance can be
303
- * thrown again, on another request, in another locale.
304
- */
305
- private _resolveI18n;
306
- /**
307
- * The error boundary of every `next()`: turns what a handler or middleware threw into the
308
- * Response that replaces it, so every middleware around it sees a Response. Never rejects.
309
- */
310
- private _convertError;
311
- /** Last resort when even the configured formatter throws. */
312
- private _safeErrorResponse;
313
- /**
314
- * Convert thrown value into an error Response — resolves boundary wrapping, i18n
315
- * translation, the onError callback, and error telemetry. `onResponse` telemetry is not
316
- * fired here: the request fires it exactly once, on the way out.
317
- */
318
- private _resolveErrorResponse;
319
- basePath<P extends string>(prefix: P): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, MergePath<TBasePath, P>, TTaps, TScopedMw>;
320
- context<TAdds extends Record<string, unknown>>(values: TAdds): Honey<TEnv, TCtx & Readonly<TAdds>, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
321
- logger(logger: Logger): this;
322
- outputValidation(mode: OutputValidationMode): this;
323
- trailingSlash(mode: "enforce" | "ignore" | "strip"): this;
324
- /**
325
- * Request paths containing an encoded `/` or `\` (`%2F`, `%5C`) answer 400 by default.
326
- * `"allow"` keeps them encoded in the path, so they decode into a param value
327
- * (`/repos/:id` with `/repos/group%2Fproject` gives `id === "group/project"`). Only allow
328
- * them when nothing downstream (a `proxy()` upstream, a file resolver) treats a decoded
329
- * slash as a separator.
330
- */
331
- encodedSlashes(mode: "allow" | "reject"): this;
332
- /**
333
- * Which reverse proxies in front of the app to believe. Decides `ctx.ip`, `clientInfo()`,
334
- * `ipRestrict`, and every other feature that needs the client's address, scheme or host.
335
- *
336
- * - `false` (default): the peer address the runtime reports is the client; `X-Forwarded-*`
337
- * headers are ignored, since any client can send them.
338
- * - a hop count: exactly that many proxies, each appending its peer to `X-Forwarded-For`
339
- * (nginx `$proxy_add_x_forwarded_for`, most load balancers). The client is the entry the
340
- * outermost proxy wrote.
341
- * - addresses and CIDR ranges of your proxies: hops from those addresses are skipped; the
342
- * first other address is the client.
343
- *
344
- * A hop count or list needs `import "@lovrozagar/honey/trust"` in the app entry.
345
- */
346
- trustProxy(value: TrustProxy): this;
347
- /** Strip a URL path prefix before route matching — boundary-safe (won't strip partial segments), paths without the prefix pass through unchanged */
348
- stripPrefix(prefix: string): this;
349
- wsAdapter(adapter: WSAdapter): this;
350
- /**
351
- * Serve this app's OpenAPI document at `${path}.json`, `.yaml` and `.yml` (default
352
- * `/openapi`), and optionally a docs UI. Each call serves its own document: two calls with
353
- * different options (say an internal and a public profile) never share a cache. Documents
354
- * are generated once per route change, serialized once, and sent with an `ETag` and
355
- * `Cache-Control: no-cache`. Pass `enabled: false` (for example in production) to mount
356
- * nothing while keeping the call in place.
357
- */
358
- openapi(options: {
359
- description?: string;
360
- docs?: "scalar" | "swagger";
361
- docsPath?: string;
362
- /** Mount the document and docs routes. Default `true`. */
363
- enabled?: boolean;
364
- filterRoutes?: (route: {
365
- meta: unknown;
366
- method: string;
367
- path: string;
368
- }) => boolean;
369
- path?: string;
370
- /** Named metaSpec profile selecting which emitted keys this document carries */
371
- profile?: string;
372
- securitySchemes?: Record<string, unknown>;
373
- title: string;
374
- version: string;
375
- }): this;
376
- /**
377
- * Serve the route manifest at `path` (default `/manifest.json`), filtered by the same
378
- * visibility policy as the OpenAPI document. Cached per route change, sent with an `ETag`.
379
- * `enabled: false` mounts nothing.
380
- */
381
- manifest(options?: {
382
- enabled?: boolean;
383
- path?: string;
384
- }): this;
385
- /** Mount a served document; a path another route or an earlier call owns is an error. */
386
- private _mountArtifact;
387
- serve(options?: HoneyServeOptions): Promise<ServeHandle>;
388
- /**
389
- * Mount an internal GET (spec, docs, manifest). Reports who owns the path when it cannot:
390
- * a user route (`"user"`) or an earlier internal mount (`"internal"`). Only an exact leaf
391
- * counts: a `/:slug` or `/*rest` route does not block a static internal path, which wins
392
- * over it on precedence, with backtracking, in both the runtime and a loaded tree.
393
- */
394
- private _mountInternalGet;
395
- private _bumpEpoch;
396
- /** Place `id` at every leaf of `segments`, copying a shared (loaded) root first. */
397
- private _placeLeaves;
398
- /**
399
- * @internal — register one route record. Over a loaded tree the record binds to the leaf
400
- * the tree already holds for its id; a root wildcard the tree lacks becomes the gateway
401
- * catch-all; any other unknown route marks the tree as stale (reported at finalize).
402
- */
403
- _addRoute(method: string, segments: readonly Segment[], record: RouteHandler): void;
404
- /** @internal — register one websocket (or realtime) route record. */
405
- _addWsRoute(segments: readonly Segment[], record: WSRouteHandler): void;
406
- /**
407
- * Resolve what this graph serves: registered records, live records carried by a loaded
408
- * snapshot, and delegated leaves the gateway catch-all serves. Then resolve every record —
409
- * its full chain (`chain → scoped → route → input validation`), error keys, meta and error
410
- * factory — and compile it once. Re-runs whenever the graph's epoch moved. Throws, naming
411
- * every route, when a loaded tree and the registered routes disagree (the generated file is
412
- * stale), and when a `use(mw)` handle or a route builder was left unused (the middleware or
413
- * route would silently be missing).
414
- */
415
- _finalize(): FinalTable;
416
- /** `use(mw)` handles that never registered, mounted or served, and builders without `.handler()`. */
417
- private _assertNothingDiscarded;
418
- /**
419
- * Resolve a record against this graph: chain = captured chain, the scopes that cover its
420
- * pattern (behind a request-path check where only some of its paths are inside), then its
421
- * route middleware. Error keys and contributed meta come from that chain, in run order.
422
- * The error factory, default errors and boundary come from the app the route was
423
- * registered on when that app has a factory, else from this one.
424
- */
425
- private _resolve;
426
- /** Wrap each middleware for `telemetry.onMiddleware`, once per finalize. */
427
- private _timed;
428
- private _planRoute;
429
- private _planWs;
430
- /**
431
- * 404 and 405 run through the same pipeline as a route: the middleware every route of this
432
- * graph starts with (with no routes: every handle that served a request), then every scope
433
- * (behind its request-path check), then the 404/405 answer. So a logger or CORS policy on the whole app also covers unknown paths, and a
434
- * scope's guard answers before "not found" leaks what exists under it.
435
- */
436
- private _planMiss;
437
- /**
438
- * @internal — every served route as one entry per leaf (an optional param yields two
439
- * paths), in tree order. Codegen and OpenAPI read routes through this.
440
- */
441
- _collectRoutes(includeSkipped?: boolean): Array<{
442
- handler: RouteHandler;
443
- method: string;
444
- path: string;
445
- }>;
446
- /** @internal — websocket routes, one entry per leaf. */
447
- _collectWsRoutes(): Array<{
448
- handler: WSRouteHandler;
449
- path: string;
450
- }>;
451
- /** @internal — the route-graph epoch; served documents cache against it. */
452
- get _epoch(): number;
453
- defaultErrorFormatter<TSchema extends StandardSchemaLike>(schema: TSchema, fn: (error: HoneyError) => InferOutput<TSchema>): this;
454
- defaultErrorFormatter(fn: ErrorFormatterFn): this;
455
- customErrorFormatter<TSchema extends StandardSchemaLike>(schema: TSchema, fn: (error: HoneyError, data: Record<string, unknown>) => InferOutput<TSchema>): this;
456
- customErrorFormatter(fn: CustomErrorFormatter): this;
457
- errorI18n(config: ErrorI18nConfig<TEnv>): this;
458
- onError(handler: OnErrorFn<TEnv>): this;
459
- onMethodNotAllowed(handler: OnMethodNotAllowedFn<TEnv>): this;
460
- onNotFound(handler: OnNotFoundFn<TEnv>): this;
461
- /** Register a tap handler keyed by name — fires after successful handler response */
462
- tap<K extends string>(key: K, handler: (ctx: TapContext<TEnv>, payload: K extends keyof TTaps ? TTaps[K] : unknown) => void | Promise<void>): this;
463
- telemetry(adapter: TelemetryAdapter): this;
464
- /**
465
- * Load a route tree — a generated `routes.gen.ts`, an `app.toRouteTree()` snapshot, or a
466
- * `mergeTree()` of either. The tree supplies the router topology; what each route runs
467
- * comes from the routes this app registers afterwards (bound by `RouteId`), from live
468
- * records in a snapshot, or — for leaves with neither — from a root wildcard the app
469
- * registers as its gateway catch-all. Must be called before any route is registered.
470
- */
471
- routeTree(tree: RouteTree): this;
472
- /**
473
- * Snapshot this app's routes as a tree: a copy of the topology plus, per route, its data
474
- * and its live record. Internal routes (spec, docs, manifest) are left out. Loading the
475
- * snapshot into another app serves these records; nothing in it is shared with this app.
476
- * Each record keeps this app's settings (error factory, defaults, boundary) and context
477
- * values, and carries the scoped middleware that covers it here as part of its chain —
478
- * scopes themselves do not travel in a tree.
479
- */
480
- toRouteTree(): RouteTree;
481
- /** A resolved record as a standalone source: its resolved chain minus route middleware becomes its chain. */
482
- private _bake;
483
- /**
484
- * @internal — generate-time: copy input/output schemas from `source` onto this app's
485
- * routes that lack them (a gateway serves its generated tree, which carries none).
486
- */
487
- _overlaySchemas(source: RouteTree): void;
488
- /**
489
- * @internal — generate-time: the route tree a gateway serves. `source` is the merged
490
- * downstream tree (`codegen.mergeTree`); the gateway's own registered routes join it as
491
- * ordinary leaves, while its root wildcards stay out of the tree — they are the catch-all
492
- * the downstream leaves delegate to. An own route that is also a downstream route, or
493
- * whose topology conflicts with one, throws here instead of at request time. The app is
494
- * rebound to the result, so codegen that runs next (OpenAPI, manifest) sees what it serves.
495
- */
496
- _gatewayTree(source: RouteTree): RouteTree;
497
- /** @internal — drop the loaded tree and route by the registered routes alone. */
498
- _unloadTree(): void;
499
- /** @internal — swap the loaded tree, re-binding every registered route to it. */
500
- _replaceLoadedTree(tree: RouteTree): void;
501
- /**
502
- * Set the app's error factory. Like every app setting it applies to every handle of this
503
- * app, whenever it is called; routes mounted from another app keep that app's factory.
504
- */
505
- errorFactory<TFactory extends Record<string, (...args: never[]) => unknown>>(factory: TFactory): Honey<TEnv, TCtx, TRoutes, TMeta, TFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
506
- /** Error keys every route of this app declares — applies to routes registered before and after the call. */
507
- defaultErrors<TKeys extends ([TErrorFactory] extends [never] ? never : keyof TErrorFactory & string)>(...keys: TKeys[]): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors | TKeys, TBasePath, TTaps, TScopedMw>;
508
- defaultBoundary<TKey extends ([TErrorFactory] extends [never] ? never : keyof TErrorFactory & string)>(key: TKey): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors | TKey, TBasePath, TTaps, TScopedMw>;
509
- /** Phantom overload — constrains what route-level .meta() accepts */
510
- meta<TNewMeta extends Record<string, unknown>>(): Honey<TEnv, TCtx, TRoutes, TNewMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
511
- /** Typed chain-level default meta — constrains route meta and sets runtime defaults in one call */
512
- meta<TNewMeta extends Record<string, unknown>, TValues extends Partial<DefaultMeta> & Partial<TNewMeta>>(values: TValues): Honey<TEnv, TCtx, TRoutes, TNewMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
513
- /** Chain-level default meta — merged into every route registered on this chain */
514
- meta<TValues extends Partial<DefaultMeta> & ([TMeta] extends [never] ? {} : Partial<TMeta>)>(values: TValues): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
515
- /**
516
- * Declare what flows from route meta and route schemas into the OpenAPI document.
517
- * Codegen-time only — never consulted on the request path. See docs/meta-spec.md.
518
- */
519
- metaSpec<TSpec extends HoneyMetaSpec<TMeta>>(spec: TSpec): this;
520
- /** Declare tap payload types — auto-extends meta with Partial<T> for meta-driven taps */
521
- taps<TNewTaps extends Record<string, unknown>>(): Honey<TEnv, Omit<TCtx, "tap"> & {
522
- tap<K extends keyof TNewTaps>(key: K, payload: TNewTaps[K]): void;
523
- }, TRoutes, [
524
- TMeta
525
- ] extends [never] ? Partial<TNewTaps> : TMeta & Partial<TNewTaps>, TErrorFactory, TDefaultErrors, TBasePath, TNewTaps, TScopedMw>;
526
- use<TAdds>(mw: MiddlewareFn<TCtx, TAdds>): Honey<TEnv, TCtx & TAdds, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
527
- use<const TPath extends string, TAdds>(path: TPath, mw: MiddlewareFn<TCtx, TAdds>): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, readonly [...TScopedMw, {
528
- readonly path: MergePath<TBasePath, TPath>;
529
- readonly adds: TAdds;
530
- }]>;
531
- /**
532
- * Mount a sub-app: its routes are served under this handle's basePath (and under `prefix`
533
- * when given — `app.route("/v1", sub)` is `app.basePath("/v1").route(sub)`), and this
534
- * handle's chain runs before theirs. The sub's own basePath stays part of each path.
535
- */
536
- route<TSubRoutes, TSubMeta, TSubErrorFactory, TSubDefaultErrors extends string, TSubBasePath extends string>(sub: Honey<TEnv, TCtx, TSubRoutes, TSubMeta, TSubErrorFactory, TSubDefaultErrors, TSubBasePath>): Honey<TEnv, TCtx, TRoutes & PrefixRoutes<TBasePath, TSubRoutes>, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
537
- route<const TPrefix extends string, TSubRoutes, TSubMeta, TSubErrorFactory, TSubDefaultErrors extends string, TSubBasePath extends string>(prefix: TPrefix, sub: Honey<TEnv, TCtx, TSubRoutes, TSubMeta, TSubErrorFactory, TSubDefaultErrors, TSubBasePath>): Honey<TEnv, TCtx, TRoutes & PrefixRoutes<MergePath<TBasePath, TPrefix>, TSubRoutes>, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
538
- private _mount;
539
- private _setBus;
540
- private _registerRoute;
541
- /** @internal — set (or clear, with null) one app-wide middleware; used by `serve()` */
542
- _setGlobal(key: string, mw: RuntimeMiddleware | null): void;
543
- /** @internal — what a route registered through this handle captures */
544
- _view(): {
545
- chain: RuntimeMiddleware[];
546
- cv: Record<string, unknown> | null;
547
- own: AppSettings<unknown>;
548
- };
549
- /** @internal — a builder got its handler (or was abandoned on purpose) */
550
- _settle(pending: PendingRoute): void;
551
- on<const TPath extends string, const TMethods extends readonly [HttpMethod | "ALL", ...(HttpMethod | "ALL")[]]>(methods: TMethods, path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, TMethods[number], TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
552
- all<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "ALL", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
553
- delete<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "DELETE", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
554
- get<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "GET", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
555
- head<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "HEAD", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
556
- options<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "OPTIONS", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
557
- patch<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "PATCH", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
558
- post<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "POST", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
559
- put<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "PUT", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
560
- ws<const TPath extends string>(path: TPath): WSRouteBuilder<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>>;
561
- realtime<const TPath extends string>(path: TPath, opts: RealtimeRouteOpts<TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>>): this;
562
- /**
563
- * Deno must call `Deno.upgradeWebSocket` in the same turn as the serve
564
- * callback. When the adapter implements `preUpgrade`, we do that here
565
- * and return the 101 response before any middleware Promise.
566
- */
567
- fetch(request: Request, env: TEnv, executionCtx?: {
568
- waitUntil?: (p: Promise<unknown>) => void;
569
- }): Response | Promise<Response>;
570
- /** @internal 400 for a request path the normalization policy rejects (see `normalizePath`), or an invalid `Host`. */
571
- _badRequestTarget(): Response;
572
- private trailingSlashRedirects;
573
- private pathAfterPrefix;
574
- private _doFetch;
575
- private _route;
576
- private _matchWs;
577
- private _dispatchRecord;
578
- private _makeErrorCtx;
579
- /** A request context for `plan`: route data, context values, `ctx.errors`, `ctx.realtime`. */
580
- private _newCtx;
581
- private _handleWs;
582
- /** Reject a cross-origin upgrade the route's origin policy does not allow (403). */
583
- /** The websocket session runtime; a cross-origin upgrade the route does not allow is a 403. */
584
- private _wsSession;
585
- private _wsUpgrade;
586
- /** Terminal of a realtime route's chain: identify, upgrade, and attach the connection to the bus. */
587
- private _realtimeUpgrade;
588
- /**
589
- * 404 (`allowed === null`) and 405: one pipeline with a synthetic record — full context,
590
- * the app-wide middleware and the scopes covering the path run once, telemetry fires once.
591
- */
592
- private _handleMiss;
593
- /** Fire `onResponse` once for the request's one exit and return. A dispatch that rejects
594
- * (an adapter failure past every error boundary) still ends the request: it reports 500. */
595
- private _withOnResponse;
596
- private _make404;
597
- private _make405;
598
- /**
599
- * CORS preflight for a path that has no OPTIONS route: run the chain of the route the
600
- * preflight asks about (`Access-Control-Request-Method`) — chain, scoped and route
601
- * middleware, never input validation or the handler. Middleware that answers the
602
- * preflight (cors) short-circuits; otherwise the answer is the 405 with `Allow`.
603
- */
604
- private _handlePreflight;
605
- private _handleMatched;
606
- /** Output validation, inside the chain: an invalid body becomes an error response the middleware sees. */
607
- private _validateOutput;
608
- private _finishMatched;
609
- }
610
1
  /**
611
- * When content type IS declared → narrow the method (constrain status keys + body).
612
- * When content type NOT declared → remove the method (Omit).
613
- * Narrowed methods return TypedResponse<CT, K> for compile-time CT+SK safety.
2
+ * `@lovrozagar/honey`: the app (`honey()`), its context, errors, middleware and responses, the tree merge, and the
3
+ * types an app is read through. Everything optional is its own subpath; nothing here registers itself (H23).
614
4
  */
615
- /** Resolve body type: schema → InferOutput, plain type → use as-is */
616
- type ResolveBody<T, TBody> = TBody extends "infer" ? (T extends StandardSchemaLike ? InferOutput<T> : T) : TBody;
617
- type NarrowMethod<TRes, TSchemas, Method extends string, CT extends string, TBody> = [TSchemas] extends [never] ? Omit<TRes, Method> : TSchemas extends Record<string, unknown> ? Omit<TRes, Method> & {
618
- [M in Method]: <K extends keyof TSchemas & string>(statusKey: K, body: ResolveBody<TSchemas[K], TBody>, opts?: ResponseOptions) => TypedResponse<CT, K>;
619
- } : Omit<TRes, Method>;
620
- /**
621
- * SSE uses a callback signature, not statusKey+body like other methods.
622
- * Gate presence on text/event-stream declaration, preserve original signature.
623
- */
624
- type NarrowSSE<TOutput> = [ExtractSchemas<TOutput, "text/event-stream">] extends [never] ? {} : {
625
- sse: HoneyRes["sse"];
626
- };
627
- /** Universal methods — always available, not gated by output declaration */
628
- type UniversalRes = Pick<HoneyRes, "noContent" | "raw" | "redirect" | "stream">;
629
- /**
630
- * Constrain ctx.res when output schemas are declared.
631
- * Declared content types → method constrained (status keys + body type).
632
- * Undeclared content types → method removed.
633
- * Universal methods (noContent, redirect, stream, raw) always available.
634
- * HoneyContext has no private brand, so Omit<TCtx, "res"> replaces the wide HoneyRes.
635
- */
636
- type ApplyOutput<TCtx, TOutput> = [keyof TOutput] extends [never] ? TCtx : Omit<TCtx, "res"> & {
637
- readonly res: UniversalRes & NarrowMethod<{}, ExtractSchemas<TOutput, "application/json">, "json", "application/json", "infer"> & NarrowMethod<{}, ExtractSchemas<TOutput, "text/plain">, "text", "text/plain", string> & NarrowMethod<{}, ExtractSchemas<TOutput, "text/html">, "html", "text/html", string> & NarrowMethod<{}, ExtractSchemas<TOutput, "application/xml">, "xml", "application/xml", string> & NarrowMethod<{}, ExtractSchemas<TOutput, "text/csv">, "csv", "text/csv", string> & NarrowMethod<{}, ExtractSchemas<TOutput, "application/octet-stream">, "binary", "application/octet-stream", ArrayBuffer | Uint8Array<ArrayBuffer>> & NarrowSSE<TOutput>;
638
- };
639
- /** Public alias for codegen — applies output schema constraints to a context type */
640
- export type WithOutput<TCtx, TOutput> = ApplyOutput<TCtx, TOutput>;
641
- /** @internal — tuple entry describing a scoped middleware at the type level */
642
- type ScopedMwEntry = {
643
- readonly path: string;
644
- readonly adds: unknown;
645
- };
646
- /**
647
- * Walk TScopedMw tuple, intersect `adds` for every entry whose `path` is a prefix of TFullPath.
648
- * Prefix semantics: TFullPath extends `${P}` (exact) | `${P}/${string}` (descendant).
649
- *
650
- * Non-literal-path guard: if Head["path"] is the base `string` type (happens when
651
- * the user passes a widened variable), skip the entry via `string extends Head["path"] ? {}`.
652
- * This prevents the always-true `'/anywhere' extends string` from polluting every route.
653
- */
654
- type ApplyScoped<TScopedMw extends readonly ScopedMwEntry[], TFullPath extends string> = TScopedMw extends readonly [
655
- infer Head extends ScopedMwEntry,
656
- ...infer Rest extends readonly ScopedMwEntry[]
657
- ] ? (string extends Head["path"] ? {} : TFullPath extends Head["path"] ? Head["adds"] : TFullPath extends `${Head["path"] & string}/${string}` ? Head["adds"] : {}) & ApplyScoped<Rest, TFullPath> : {};
658
- /** Apply typed params — override params with specific keys when route has :param segments */
659
- type ApplyParams<TCtx, TParams> = [keyof TParams] extends [string] ? string extends keyof TParams ? TCtx : TCtx & {
660
- readonly params: TParams;
661
- } : TCtx;
662
- /** Typed tap method — constrained to registered tap keys when TTaps is non-empty */
663
- type TypedTap<TTaps extends Record<string, unknown>> = [keyof TTaps] extends [never] ? {
664
- tap(key: string, payload: unknown): void;
665
- } : {
666
- tap<K extends string & keyof TTaps>(key: K, payload: TTaps[K]): void;
667
- };
668
- /** Build the full handler context: base ctx + params + input + meta + errors + taps + output-constrained methods */
669
- type HandlerCtx<TCtx, TInput, TOutput, TParams, TAccMeta = {}, TErrorFactory = never, TErrorKeys extends string = never, TPath extends string = string, TTaps extends Record<string, unknown> = {}> = ApplyOutput<ApplyParams<[keyof TInput] extends [never] ? TCtx : TCtx & {
670
- input: TInput;
671
- }, TParams> & {
672
- readonly meta: Readonly<Omit<TAccMeta, "openApi">>;
673
- readonly routePattern: TPath;
674
- } & ([TErrorFactory] extends [never] ? {} : [TErrorKeys] extends [never] ? {
675
- readonly errors: TErrorFactory;
676
- } : {
677
- readonly errors: Pick<TErrorFactory, TErrorKeys & keyof TErrorFactory>;
678
- }) & TypedTap<TTaps>, TOutput>;
679
- type RouteBuilderState<TParent> = {
680
- boundaryErrorKey: string | null;
681
- /** keys the route declares itself (`.errors()`, `.boundary()`) */
682
- errorKeys: Set<string>;
683
- extraMethods: (HttpMethod | "ALL")[] | null;
684
- inputSchemas: InputSchemasDef | null;
685
- /** explicit meta — chain `.meta()` overlaid by route `.meta()` */
686
- meta: Record<string, unknown> | null;
687
- method: HttpMethod | "ALL";
688
- /** route-level middleware */
689
- middlewares: RuntimeMiddleware[];
690
- outputSchemas: OutputSchemaDef | null;
691
- parent: TParent;
692
- /** canonical full pattern */
693
- path: string;
694
- /** reported at finalize until `.handler()` runs */
695
- pending: PendingRoute;
696
- };
697
- /** Honey.TMeta defaults to never; never & X is never, so start acc meta at {}. */
698
- type InitAccMeta<TMeta> = [TMeta] extends [never] ? {} : TMeta;
699
- /** Skip $routes merge only for a real `{ internal: true }` meta — not for `never`. */
700
- type SkipRouteRecord<TAccMeta> = [TAccMeta] extends [never] ? false : [TAccMeta] extends [{
701
- internal: true;
702
- }] ? true : false;
703
- /** Return type for handler() — extracted to avoid 3x duplication */
704
- type HandlerReturn<TEnv, TBaseCtx, TRoutes, TPath extends string, TMethod extends string, TInput, TOutput, TCtx, TAccMeta, TErrorFactory, _TErrorKeys extends string, TDefaultErrors extends string, TMeta, TBasePath extends string = "/", TTaps extends Record<string, unknown> = {}, TScopedMw extends readonly ScopedMwEntry[] = []> = Honey<TEnv, TBaseCtx, SkipRouteRecord<TAccMeta> extends true ? TRoutes : MergeRoute<TRoutes, TPath, TMethod, TInput, TOutput, HandlerCtx<TCtx, TInput, TOutput, ParamsFromPath<TPath>, TAccMeta, TErrorFactory, _TErrorKeys | TDefaultErrors, TPath, TTaps>, TAccMeta, _TErrorKeys | TDefaultErrors, ComputeErrorsByStatus<TErrorFactory, _TErrorKeys | TDefaultErrors, typeof ERROR_META>>, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
705
- type OneShotKey = "boundary" | "errors" | "input" | "meta" | "output";
706
- type BuilderChain<TEnv, TCtx, TInput, TErrorKeys extends string, TOutput, TPath extends string, TMethod extends string, TRoutes, TUsed extends string, TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors extends string, TBasePath extends string, TTaps extends Record<string, unknown> = {}, TScopedMw extends readonly ScopedMwEntry[] = []> = Omit<RouteBuilder<TEnv, TCtx, TInput, TErrorKeys, TOutput, TPath, TMethod, TRoutes, TUsed, TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>, TUsed & OneShotKey>;
707
- declare class RouteBuilder<TEnv, TCtx, TInput = {}, _TErrorKeys extends string = never, TOutput = {}, TPath extends string = string, TMethod extends string = string, TRoutes = {}, TUsed extends string = never, TBaseCtx = TCtx, TMeta = never, TAccMeta = {}, TErrorFactory = never, TDefaultErrors extends string = never, TBasePath extends string = "/", TTaps extends Record<string, unknown> = {}, TScopedMw extends readonly ScopedMwEntry[] = []> {
708
- private _s;
709
- constructor(state: RouteBuilderState<Honey<TEnv, TBaseCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>>);
710
- errors<TFactory extends Record<string, (...args: never[]) => unknown>, TKeys extends Exclude<keyof TFactory & string, TDefaultErrors>>(factory: TFactory, ...keys: TKeys[]): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys | TKeys, TOutput, TPath, TMethod, TRoutes, TUsed | "errors", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
711
- errors<TKeys extends ([TErrorFactory] extends [never] ? never : Exclude<keyof TErrorFactory & string, TDefaultErrors>)>(...keys: TKeys[]): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys | TKeys, TOutput, TPath, TMethod, TRoutes, TUsed | "errors", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
712
- boundary<TKey extends ([TErrorFactory] extends [never] ? never : Exclude<keyof TErrorFactory & string, TDefaultErrors>)>(key: TKey): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys | TKey, TOutput, TPath, TMethod, TRoutes, TUsed | "boundary", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
713
- handler(fn: (ctx: HandlerCtx<TCtx, TInput, TOutput, ParamsFromPath<TPath>, TAccMeta, TErrorFactory, _TErrorKeys | TDefaultErrors, TPath, TTaps>) => TypedResponse | Promise<TypedResponse>): HandlerReturn<TEnv, TBaseCtx, TRoutes, TPath, TMethod, TInput, TOutput, TCtx, TAccMeta, TErrorFactory, _TErrorKeys, TDefaultErrors, TMeta, TBasePath, TTaps, TScopedMw>;
714
- proxy(config: ProxyConfig<HandlerCtx<TCtx, TInput, TOutput, ParamsFromPath<TPath>, TAccMeta, TErrorFactory, _TErrorKeys | TDefaultErrors, TPath, TTaps>>): HandlerReturn<TEnv, TBaseCtx, TRoutes, TPath, TMethod, TInput, TOutput, TCtx, TAccMeta, TErrorFactory, _TErrorKeys, TDefaultErrors, TMeta, TBasePath, TTaps, TScopedMw>;
715
- input<TSchemas extends InputSchemasDef>(schemas: TSchemas): BuilderChain<TEnv, TCtx, TInput & InferInputMap<TSchemas>, _TErrorKeys, TOutput, TPath, TMethod, TRoutes, TUsed | "input", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
716
- meta<TRouteMeta extends Partial<DefaultMeta> & ([TMeta] extends [never] ? {} : TMeta)>(meta: TRouteMeta): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys, TOutput, TPath, TMethod, TRoutes, TUsed | "meta", TBaseCtx, TMeta, TAccMeta & TRouteMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
717
- output<TOutputSchemas extends OutputSchemaDef>(_schemas: TOutputSchemas): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys, TOutputSchemas, TPath, TMethod, TRoutes, TUsed | "output", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
718
- use<TAdds>(mw: MiddlewareFn<TCtx, TAdds>): BuilderChain<TEnv, TCtx & TAdds, TInput, _TErrorKeys, TOutput, TPath, TMethod, TRoutes, TUsed, TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
719
- }
720
- type WSRouteBuilderState<TParent> = {
721
- errorKeys: Set<string>;
722
- inputSchemas: InputSchemasDef | null;
723
- origins: WSOriginPolicy | null;
724
- meta: Record<string, unknown> | null;
725
- middlewares: RuntimeMiddleware[];
726
- parent: TParent;
727
- path: string;
728
- pending: PendingRoute;
729
- };
730
- declare class WSRouteBuilder<TEnv, TCtx, TInput = {}, _TErrorKeys extends string = never, TParent = unknown> {
731
- private _s;
732
- constructor(state: WSRouteBuilderState<TParent>);
733
- errors<TFactory extends Record<string, (...args: never[]) => unknown>>(factory: TFactory, ...keys: Array<keyof TFactory & string>): WSRouteBuilder<TEnv, TCtx, TInput, _TErrorKeys | (keyof TFactory & string), TParent>;
734
- handler(wsHandler: WSHandler<TCtx>): TParent;
735
- input<TSchemas extends Pick<InputSchemasDef, "cookies" | "headers" | "search">>(schemas: TSchemas): WSRouteBuilder<TEnv, TCtx, TInput & InferInputMap<TSchemas>, _TErrorKeys, TParent>;
736
- meta(meta: Record<string, unknown>): this;
737
- /**
738
- * Browser origins allowed to open this socket: `"*"`, a list of origins
739
- * (`https://app.example.com`), or a predicate. Same-origin always passes. Without it, a
740
- * cross-origin upgrade that carries `Cookie` or `Authorization` gets 403.
741
- */
742
- origins(policy: WSOriginPolicy): WSRouteBuilder<TEnv, TCtx, TInput, _TErrorKeys, TParent>;
743
- use<TAdds>(mw: MiddlewareFn<TCtx, TAdds>): WSRouteBuilder<TEnv, TCtx & TAdds, TInput, _TErrorKeys, TParent>;
744
- }
745
- export declare function honey<TEnv>(): Honey<TEnv>;
746
- //# sourceMappingURL=index.d.ts.map
5
+ export { toFetchRequest } from "./adapters/fetch-request.ts";
6
+ export type { ServeHandle } from "./adapters/serve.ts";
7
+ export { HoneyContext } from "./context/context.ts";
8
+ export type { CookieOptions } from "./context/cookie.ts";
9
+ export { HoneyError } from "./errors/error.ts";
10
+ export { defineErrors, ERROR_META, type ErrorMetaEntry } from "./errors/errors.ts";
11
+ export { createErrorResponse, type CustomErrorFormatter, type ErrorFormatter } from "./errors/projector.ts";
12
+ export type { InferInputMap } from "./input/input.ts";
13
+ export type { HoneyMetaSpec, MetaSpecConfig, MetaSpecContext, MetaSpecEntry, MetaSpecExpand, MetaSpecMergeConflict, MetaSpecProfile, MetaSpecSchemaEntry, MetaSpecSchemaSearch, MetaSpecSchemaSource, MetaSpecSingle, MetaSpecStrictness, } from "./meta/meta-spec-merge.ts";
14
+ export { createMiddleware, defineMiddleware, type MiddlewareFn } from "./middleware/middleware.ts";
15
+ export type { ProxyConfig } from "./proxy/proxy.ts";
16
+ export type { RealtimeBus } from "./realtime/bus.ts";
17
+ export type { ConnContext, RealtimeLimits } from "./realtime/route.ts";
18
+ export type { RealtimePublisher } from "./realtime/server.ts";
19
+ export { HoneyRes, type ResponseOptions, type TypedResponse } from "./response/response.ts";
20
+ export type { SSEEvent, SSEOptions, SSEStream } from "./response/sse.ts";
21
+ export type { StatusKey } from "./response/status.ts";
22
+ export { Honey, honey } from "./routing/app.ts";
23
+ export type { ComputeErrorsByStatus, DefaultMeta, HoneyCtx, InferBasePath, InferCtx, InferEnv, InferErrorFactory, InferMeta, InferMethods, InferRouteCtx, InferRouteErrors, InferRouteInput, InferRouteMeta, InferRouteMethods, InferRouteOutput, InferRoutePaths, InferRoutes, OpenApiMeta, RouteRecord, } from "./routing/app-types.ts";
24
+ export type { HoneyCodegen, RouteSelectorOf, WithOutput } from "./routing/codegen-types.ts";
25
+ export type { TapContext, TapHandler } from "./routing/tap.ts";
26
+ export { mergeTree } from "./routing/tree-merge.ts";
27
+ export type { MergePath, PrefixRoutes } from "./routing/types.ts";
28
+ export { detectRuntime, type ServeRuntime } from "./runtime/detect-runtime.ts";
29
+ export type { InferOutput, StandardSchemaLike } from "./validation/standard-schema.ts";
30
+ export type { WSAdapter, WSContext, WSHandler } from "./ws/contract.ts";
31
+ export type { WSOriginPolicy } from "./ws/origin.ts";
32
+ export type { WSAdapterOptions } from "./ws/shared.ts";