@lovrozagar/honey 0.7.3 → 1.0.0-rc.3

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 (1005) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +930 -1664
  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 -746
  71. package/dist/index.js +12 -2364
  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 -780
  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 +175 -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/meta-types.d.ts +34 -0
  237. package/dist/routing/meta-types.js +5 -0
  238. package/dist/routing/middleware-chain.d.ts +16 -0
  239. package/dist/routing/middleware-chain.js +41 -0
  240. package/dist/routing/output-types.d.ts +91 -0
  241. package/dist/routing/output-types.js +1 -0
  242. package/dist/routing/pattern.d.ts +55 -0
  243. package/dist/routing/pattern.js +219 -0
  244. package/dist/routing/record.d.ts +18 -0
  245. package/dist/routing/record.js +4 -0
  246. package/dist/routing/register.d.ts +135 -0
  247. package/dist/routing/register.js +155 -0
  248. package/dist/routing/request-path.d.ts +30 -0
  249. package/dist/routing/request-path.js +173 -0
  250. package/dist/routing/route-builder.d.ts +160 -0
  251. package/dist/routing/route-builder.js +86 -0
  252. package/dist/routing/route-tree.d.ts +18 -0
  253. package/dist/routing/route-tree.js +91 -0
  254. package/dist/routing/settings-chain.d.ts +75 -0
  255. package/dist/routing/settings-chain.js +137 -0
  256. package/dist/routing/settings.d.ts +90 -0
  257. package/dist/routing/settings.js +44 -0
  258. package/dist/routing/tap.d.ts +31 -0
  259. package/dist/routing/tap.js +77 -0
  260. package/dist/routing/tree-merge.d.ts +7 -0
  261. package/dist/routing/tree-merge.js +77 -0
  262. package/dist/routing/tree.d.ts +85 -0
  263. package/dist/routing/tree.js +196 -0
  264. package/dist/routing/types.d.ts +20 -0
  265. package/dist/routing/types.js +1 -0
  266. package/dist/routing/ws-builder.d.ts +62 -0
  267. package/dist/routing/ws-builder.js +109 -0
  268. package/dist/runtime/detect-runtime.d.ts +16 -0
  269. package/dist/runtime/detect-runtime.js +11 -0
  270. package/dist/runtime/optional-peer.d.ts +10 -0
  271. package/dist/runtime/optional-peer.js +19 -0
  272. package/dist/schema/arktype.d.ts +7 -0
  273. package/dist/schema/arktype.js +13 -0
  274. package/dist/schema/canonicalize.d.ts +8 -0
  275. package/dist/schema/canonicalize.js +19 -0
  276. package/dist/schema/effect.d.ts +7 -0
  277. package/dist/schema/effect.js +4 -0
  278. package/dist/schema/naming.d.ts +31 -0
  279. package/dist/schema/naming.js +116 -0
  280. package/dist/schema/sanitize-spec.d.ts +15 -0
  281. package/dist/schema/sanitize-spec.js +43 -0
  282. package/dist/schema/slots.d.ts +15 -0
  283. package/dist/schema/slots.js +179 -0
  284. package/dist/schema/to-json-schema.d.ts +34 -0
  285. package/dist/schema/to-json-schema.js +94 -0
  286. package/dist/schema/valibot.d.ts +4 -0
  287. package/dist/schema/valibot.js +153 -0
  288. package/dist/schema/yup.d.ts +3 -0
  289. package/dist/schema/yup.js +57 -0
  290. package/dist/schema/zod.d.ts +6 -0
  291. package/dist/schema/zod.js +192 -0
  292. package/dist/security/crypto.d.ts +7 -0
  293. package/dist/security/crypto.js +30 -0
  294. package/dist/streaming/producer-stream.d.ts +45 -0
  295. package/dist/streaming/producer-stream.js +251 -0
  296. package/dist/telemetry/fields.d.ts +43 -0
  297. package/dist/telemetry/fields.js +64 -0
  298. package/dist/telemetry/log-format.d.ts +7 -0
  299. package/dist/telemetry/log-format.js +43 -0
  300. package/dist/telemetry/logger.d.ts +44 -0
  301. package/dist/telemetry/logger.js +136 -0
  302. package/dist/telemetry/otel-subpath.d.ts +7 -0
  303. package/dist/telemetry/otel-subpath.js +5 -0
  304. package/dist/telemetry/otel.d.ts +50 -57
  305. package/dist/telemetry/otel.js +54 -130
  306. package/dist/telemetry/request-log.d.ts +22 -0
  307. package/dist/telemetry/request-log.js +83 -0
  308. package/dist/telemetry/request-trace.d.ts +123 -0
  309. package/dist/telemetry/request-trace.js +199 -0
  310. package/dist/telemetry/span-lifecycle.d.ts +11 -0
  311. package/dist/telemetry/span-lifecycle.js +114 -0
  312. package/dist/telemetry/traceparent.d.ts +40 -0
  313. package/dist/telemetry/traceparent.js +73 -0
  314. package/dist/testing/testing.d.ts +42 -0
  315. package/dist/testing/testing.js +101 -0
  316. package/dist/validation/content-type.d.ts +21 -0
  317. package/dist/validation/content-type.js +42 -0
  318. package/dist/validation/standard-schema.d.ts +41 -0
  319. package/dist/validation/standard-schema.js +5 -0
  320. package/dist/validation/validate-input.d.ts +45 -0
  321. package/dist/validation/validate-input.js +174 -0
  322. package/dist/validation/validate-output.d.ts +34 -0
  323. package/dist/validation/validate-output.js +107 -0
  324. package/dist/ws/bun.d.ts +30 -25
  325. package/dist/ws/bun.js +42 -46
  326. package/dist/ws/cloudflare.d.ts +6 -75
  327. package/dist/ws/cloudflare.js +37 -104
  328. package/dist/ws/contract.d.ts +74 -0
  329. package/dist/ws/contract.js +83 -0
  330. package/dist/ws/node.d.ts +12 -21
  331. package/dist/ws/node.js +103 -151
  332. package/dist/ws/origin.d.ts +23 -0
  333. package/dist/ws/origin.js +48 -0
  334. package/dist/ws/route.d.ts +14 -0
  335. package/dist/ws/route.js +5 -0
  336. package/dist/ws/session.d.ts +15 -6
  337. package/dist/ws/session.js +22 -23
  338. package/dist/ws/shared.d.ts +23 -33
  339. package/dist/ws/shared.js +53 -39
  340. package/package.json +169 -251
  341. package/dist/accepts.d.ts +0 -12
  342. package/dist/accepts.d.ts.map +0 -1
  343. package/dist/accepts.js +0 -126
  344. package/dist/accepts.js.map +0 -1
  345. package/dist/body-kind.d.ts +0 -26
  346. package/dist/body-kind.d.ts.map +0 -1
  347. package/dist/body-kind.js +0 -70
  348. package/dist/body-kind.js.map +0 -1
  349. package/dist/body-limit.d.ts +0 -26
  350. package/dist/body-limit.d.ts.map +0 -1
  351. package/dist/body-limit.js +0 -126
  352. package/dist/body-limit.js.map +0 -1
  353. package/dist/build/index.d.ts.map +0 -1
  354. package/dist/build/index.js.map +0 -1
  355. package/dist/cli-args.d.ts +0 -33
  356. package/dist/cli-args.d.ts.map +0 -1
  357. package/dist/cli-args.js +0 -102
  358. package/dist/cli-args.js.map +0 -1
  359. package/dist/cli-go/auth.go +0 -26
  360. package/dist/cli-go/config.go +0 -192
  361. package/dist/cli-go/errors.go +0 -75
  362. package/dist/cli-go/multipart.go +0 -79
  363. package/dist/cli-go/output.go +0 -163
  364. package/dist/cli-go/root.go +0 -30
  365. package/dist/cli-go/stream.go +0 -88
  366. package/dist/cli-go/version.go +0 -5
  367. package/dist/cli.d.ts +0 -3
  368. package/dist/cli.d.ts.map +0 -1
  369. package/dist/cli.js +0 -209
  370. package/dist/cli.js.map +0 -1
  371. package/dist/client/defaults.d.ts +0 -12
  372. package/dist/client/defaults.d.ts.map +0 -1
  373. package/dist/client/defaults.js +0 -48
  374. package/dist/client/defaults.js.map +0 -1
  375. package/dist/client/error.d.ts +0 -49
  376. package/dist/client/error.d.ts.map +0 -1
  377. package/dist/client/error.js +0 -71
  378. package/dist/client/error.js.map +0 -1
  379. package/dist/client/http.d.ts +0 -155
  380. package/dist/client/http.d.ts.map +0 -1
  381. package/dist/client/http.js +0 -571
  382. package/dist/client/http.js.map +0 -1
  383. package/dist/client/index.d.ts +0 -23
  384. package/dist/client/index.d.ts.map +0 -1
  385. package/dist/client/index.js +0 -95
  386. package/dist/client/index.js.map +0 -1
  387. package/dist/client/path.d.ts +0 -26
  388. package/dist/client/path.d.ts.map +0 -1
  389. package/dist/client/path.js +0 -163
  390. package/dist/client/path.js.map +0 -1
  391. package/dist/client/redirect-policy.d.ts +0 -12
  392. package/dist/client/redirect-policy.d.ts.map +0 -1
  393. package/dist/client/redirect-policy.js +0 -20
  394. package/dist/client/redirect-policy.js.map +0 -1
  395. package/dist/client/sdk.d.ts +0 -70
  396. package/dist/client/sdk.d.ts.map +0 -1
  397. package/dist/client/sdk.js +0 -292
  398. package/dist/client/sdk.js.map +0 -1
  399. package/dist/client/sse.d.ts +0 -23
  400. package/dist/client/sse.d.ts.map +0 -1
  401. package/dist/client/sse.js +0 -129
  402. package/dist/client/sse.js.map +0 -1
  403. package/dist/client/types.d.ts +0 -124
  404. package/dist/client/types.d.ts.map +0 -1
  405. package/dist/client/types.js +0 -2
  406. package/dist/client/types.js.map +0 -1
  407. package/dist/client/ws.d.ts +0 -22
  408. package/dist/client/ws.d.ts.map +0 -1
  409. package/dist/client/ws.js +0 -112
  410. package/dist/client/ws.js.map +0 -1
  411. package/dist/client-go/errors.go +0 -236
  412. package/dist/client-go/export.go +0 -44
  413. package/dist/client-go/invalidation.go +0 -371
  414. package/dist/client-go/nullable.go +0 -62
  415. package/dist/client-go/realtime.go +0 -354
  416. package/dist/client-go/result.go +0 -20
  417. package/dist/client-go/runtime.go +0 -975
  418. package/dist/client-go/sse.go +0 -159
  419. package/dist/client-go/transport.go +0 -495
  420. package/dist/client-go/ws.go +0 -128
  421. package/dist/client-info.d.ts +0 -36
  422. package/dist/client-info.d.ts.map +0 -1
  423. package/dist/client-info.js +0 -53
  424. package/dist/client-info.js.map +0 -1
  425. package/dist/client-mcp/README.md +0 -10
  426. package/dist/client-mcp/server.ts +0 -221
  427. package/dist/client-mcp/types.ts +0 -19
  428. package/dist/client-python/_errors.py +0 -115
  429. package/dist/client-python/_invalidation.py +0 -494
  430. package/dist/client-python/_realtime.py +0 -179
  431. package/dist/client-python/_runtime.py +0 -860
  432. package/dist/client-python/_sse.py +0 -155
  433. package/dist/client-python/_transport.py +0 -366
  434. package/dist/client-python/_ws.py +0 -159
  435. package/dist/client-python/py.typed +0 -0
  436. package/dist/client-rust/errors.rs +0 -220
  437. package/dist/client-rust/invalidation.rs +0 -412
  438. package/dist/client-rust/invalidation_sync.rs +0 -93
  439. package/dist/client-rust/nullable.rs +0 -17
  440. package/dist/client-rust/realtime.rs +0 -702
  441. package/dist/client-rust/result.rs +0 -22
  442. package/dist/client-rust/runtime.rs +0 -980
  443. package/dist/client-rust/runtime_sync.rs +0 -484
  444. package/dist/client-rust/sse.rs +0 -188
  445. package/dist/client-rust/ws.rs +0 -167
  446. package/dist/codegen-go-cli.d.ts +0 -22
  447. package/dist/codegen-go-cli.d.ts.map +0 -1
  448. package/dist/codegen-go-cli.js +0 -964
  449. package/dist/codegen-go-cli.js.map +0 -1
  450. package/dist/codegen-go.d.ts +0 -41
  451. package/dist/codegen-go.d.ts.map +0 -1
  452. package/dist/codegen-go.js +0 -872
  453. package/dist/codegen-go.js.map +0 -1
  454. package/dist/codegen-hash.d.ts +0 -3
  455. package/dist/codegen-hash.d.ts.map +0 -1
  456. package/dist/codegen-hash.js +0 -9
  457. package/dist/codegen-hash.js.map +0 -1
  458. package/dist/codegen-ir.d.ts +0 -190
  459. package/dist/codegen-ir.d.ts.map +0 -1
  460. package/dist/codegen-ir.js +0 -661
  461. package/dist/codegen-ir.js.map +0 -1
  462. package/dist/codegen-lang.d.ts +0 -65
  463. package/dist/codegen-lang.d.ts.map +0 -1
  464. package/dist/codegen-lang.js +0 -526
  465. package/dist/codegen-lang.js.map +0 -1
  466. package/dist/codegen-load.d.ts +0 -31
  467. package/dist/codegen-load.d.ts.map +0 -1
  468. package/dist/codegen-load.js +0 -138
  469. package/dist/codegen-load.js.map +0 -1
  470. package/dist/codegen-loaders.d.ts +0 -12
  471. package/dist/codegen-loaders.d.ts.map +0 -1
  472. package/dist/codegen-loaders.js +0 -55
  473. package/dist/codegen-loaders.js.map +0 -1
  474. package/dist/codegen-mcp.d.ts +0 -13
  475. package/dist/codegen-mcp.d.ts.map +0 -1
  476. package/dist/codegen-mcp.js +0 -368
  477. package/dist/codegen-mcp.js.map +0 -1
  478. package/dist/codegen-python.d.ts +0 -33
  479. package/dist/codegen-python.d.ts.map +0 -1
  480. package/dist/codegen-python.js +0 -828
  481. package/dist/codegen-python.js.map +0 -1
  482. package/dist/codegen-route-tree-intern.d.ts +0 -40
  483. package/dist/codegen-route-tree-intern.d.ts.map +0 -1
  484. package/dist/codegen-route-tree-intern.js +0 -221
  485. package/dist/codegen-route-tree-intern.js.map +0 -1
  486. package/dist/codegen-rust.d.ts +0 -18
  487. package/dist/codegen-rust.d.ts.map +0 -1
  488. package/dist/codegen-rust.js +0 -1293
  489. package/dist/codegen-rust.js.map +0 -1
  490. package/dist/codegen-sanitize.d.ts +0 -3
  491. package/dist/codegen-sanitize.d.ts.map +0 -1
  492. package/dist/codegen-sanitize.js +0 -56
  493. package/dist/codegen-sanitize.js.map +0 -1
  494. package/dist/codegen-schema-naming.d.ts +0 -27
  495. package/dist/codegen-schema-naming.d.ts.map +0 -1
  496. package/dist/codegen-schema-naming.js +0 -150
  497. package/dist/codegen-schema-naming.js.map +0 -1
  498. package/dist/codegen-sdk-model.d.ts +0 -71
  499. package/dist/codegen-sdk-model.d.ts.map +0 -1
  500. package/dist/codegen-sdk-model.js +0 -179
  501. package/dist/codegen-sdk-model.js.map +0 -1
  502. package/dist/codegen.d.ts +0 -187
  503. package/dist/codegen.d.ts.map +0 -1
  504. package/dist/codegen.js +0 -4619
  505. package/dist/codegen.js.map +0 -1
  506. package/dist/context.d.ts +0 -86
  507. package/dist/context.d.ts.map +0 -1
  508. package/dist/context.js +0 -242
  509. package/dist/context.js.map +0 -1
  510. package/dist/cookie-sign.d.ts +0 -17
  511. package/dist/cookie-sign.d.ts.map +0 -1
  512. package/dist/cookie-sign.js +0 -104
  513. package/dist/cookie-sign.js.map +0 -1
  514. package/dist/cookie.d.ts +0 -24
  515. package/dist/cookie.d.ts.map +0 -1
  516. package/dist/cookie.js +0 -138
  517. package/dist/cookie.js.map +0 -1
  518. package/dist/cors.d.ts +0 -14
  519. package/dist/cors.d.ts.map +0 -1
  520. package/dist/cors.js +0 -87
  521. package/dist/cors.js.map +0 -1
  522. package/dist/crypto.d.ts +0 -7
  523. package/dist/crypto.d.ts.map +0 -1
  524. package/dist/crypto.js +0 -38
  525. package/dist/crypto.js.map +0 -1
  526. package/dist/csrf.d.ts +0 -28
  527. package/dist/csrf.d.ts.map +0 -1
  528. package/dist/csrf.js +0 -79
  529. package/dist/csrf.js.map +0 -1
  530. package/dist/curl-logger.d.ts +0 -44
  531. package/dist/curl-logger.d.ts.map +0 -1
  532. package/dist/curl-logger.js +0 -199
  533. package/dist/curl-logger.js.map +0 -1
  534. package/dist/detect-runtime.d.ts +0 -16
  535. package/dist/detect-runtime.d.ts.map +0 -1
  536. package/dist/detect-runtime.js +0 -13
  537. package/dist/detect-runtime.js.map +0 -1
  538. package/dist/dict.d.ts +0 -11
  539. package/dist/dict.d.ts.map +0 -1
  540. package/dist/dict.js +0 -13
  541. package/dist/dict.js.map +0 -1
  542. package/dist/error.d.ts +0 -21
  543. package/dist/error.d.ts.map +0 -1
  544. package/dist/error.js +0 -44
  545. package/dist/error.js.map +0 -1
  546. package/dist/errors.d.ts +0 -40
  547. package/dist/errors.d.ts.map +0 -1
  548. package/dist/errors.js +0 -39
  549. package/dist/errors.js.map +0 -1
  550. package/dist/etag.d.ts +0 -11
  551. package/dist/etag.d.ts.map +0 -1
  552. package/dist/etag.js +0 -82
  553. package/dist/etag.js.map +0 -1
  554. package/dist/feature-detect.d.ts +0 -25
  555. package/dist/feature-detect.d.ts.map +0 -1
  556. package/dist/feature-detect.js +0 -144
  557. package/dist/feature-detect.js.map +0 -1
  558. package/dist/feature-load.d.ts +0 -3
  559. package/dist/feature-load.d.ts.map +0 -1
  560. package/dist/feature-load.js +0 -36
  561. package/dist/feature-load.js.map +0 -1
  562. package/dist/feature-slots.d.ts +0 -44
  563. package/dist/feature-slots.d.ts.map +0 -1
  564. package/dist/feature-slots.js +0 -48
  565. package/dist/feature-slots.js.map +0 -1
  566. package/dist/fetch-request.d.ts +0 -10
  567. package/dist/fetch-request.d.ts.map +0 -1
  568. package/dist/fetch-request.js +0 -13
  569. package/dist/fetch-request.js.map +0 -1
  570. package/dist/gen-process.d.ts +0 -15
  571. package/dist/gen-process.d.ts.map +0 -1
  572. package/dist/gen-process.js +0 -43
  573. package/dist/gen-process.js.map +0 -1
  574. package/dist/gen-write.d.ts +0 -19
  575. package/dist/gen-write.d.ts.map +0 -1
  576. package/dist/gen-write.js +0 -120
  577. package/dist/gen-write.js.map +0 -1
  578. package/dist/glob.d.ts +0 -21
  579. package/dist/glob.d.ts.map +0 -1
  580. package/dist/glob.js +0 -115
  581. package/dist/glob.js.map +0 -1
  582. package/dist/go-type-emitter.d.ts +0 -47
  583. package/dist/go-type-emitter.d.ts.map +0 -1
  584. package/dist/go-type-emitter.js +0 -594
  585. package/dist/go-type-emitter.js.map +0 -1
  586. package/dist/honey-response.d.ts +0 -82
  587. package/dist/honey-response.d.ts.map +0 -1
  588. package/dist/honey-response.js +0 -338
  589. package/dist/honey-response.js.map +0 -1
  590. package/dist/i18n-slot.d.ts +0 -15
  591. package/dist/i18n-slot.d.ts.map +0 -1
  592. package/dist/i18n-slot.js +0 -14
  593. package/dist/i18n-slot.js.map +0 -1
  594. package/dist/i18n.d.ts +0 -29
  595. package/dist/i18n.d.ts.map +0 -1
  596. package/dist/i18n.js +0 -250
  597. package/dist/i18n.js.map +0 -1
  598. package/dist/index.d.ts.map +0 -1
  599. package/dist/index.js.map +0 -1
  600. package/dist/init.d.ts +0 -5
  601. package/dist/init.d.ts.map +0 -1
  602. package/dist/init.js +0 -140
  603. package/dist/init.js.map +0 -1
  604. package/dist/input.d.ts +0 -6
  605. package/dist/input.d.ts.map +0 -1
  606. package/dist/input.js +0 -4
  607. package/dist/input.js.map +0 -1
  608. package/dist/invalidate-check.d.ts +0 -61
  609. package/dist/invalidate-check.d.ts.map +0 -1
  610. package/dist/invalidate-check.js +0 -163
  611. package/dist/invalidate-check.js.map +0 -1
  612. package/dist/invoke-user.d.ts +0 -35
  613. package/dist/invoke-user.d.ts.map +0 -1
  614. package/dist/invoke-user.js +0 -73
  615. package/dist/invoke-user.js.map +0 -1
  616. package/dist/ip-restrict.d.ts +0 -24
  617. package/dist/ip-restrict.d.ts.map +0 -1
  618. package/dist/ip-restrict.js +0 -60
  619. package/dist/ip-restrict.js.map +0 -1
  620. package/dist/ip.d.ts +0 -39
  621. package/dist/ip.d.ts.map +0 -1
  622. package/dist/ip.js +0 -209
  623. package/dist/ip.js.map +0 -1
  624. package/dist/logger.d.ts +0 -45
  625. package/dist/logger.d.ts.map +0 -1
  626. package/dist/logger.js +0 -113
  627. package/dist/logger.js.map +0 -1
  628. package/dist/media-type.d.ts +0 -30
  629. package/dist/media-type.d.ts.map +0 -1
  630. package/dist/media-type.js +0 -97
  631. package/dist/media-type.js.map +0 -1
  632. package/dist/meta-spec-merge.d.ts +0 -32
  633. package/dist/meta-spec-merge.d.ts.map +0 -1
  634. package/dist/meta-spec-merge.js +0 -68
  635. package/dist/meta-spec-merge.js.map +0 -1
  636. package/dist/meta-spec.d.ts +0 -94
  637. package/dist/meta-spec.d.ts.map +0 -1
  638. package/dist/meta-spec.js +0 -535
  639. package/dist/meta-spec.js.map +0 -1
  640. package/dist/middleware.d.ts +0 -77
  641. package/dist/middleware.d.ts.map +0 -1
  642. package/dist/middleware.js +0 -253
  643. package/dist/middleware.js.map +0 -1
  644. package/dist/node-request.d.ts +0 -104
  645. package/dist/node-request.d.ts.map +0 -1
  646. package/dist/node-request.js +0 -407
  647. package/dist/node-request.js.map +0 -1
  648. package/dist/node.d.ts +0 -30
  649. package/dist/node.d.ts.map +0 -1
  650. package/dist/node.js +0 -396
  651. package/dist/node.js.map +0 -1
  652. package/dist/openapi/collect.d.ts.map +0 -1
  653. package/dist/openapi/collect.js.map +0 -1
  654. package/dist/openapi/docs-page.d.ts.map +0 -1
  655. package/dist/openapi/docs-page.js.map +0 -1
  656. package/dist/openapi/document.d.ts.map +0 -1
  657. package/dist/openapi/document.js.map +0 -1
  658. package/dist/openapi/json-schema-slot.d.ts +0 -12
  659. package/dist/openapi/json-schema-slot.d.ts.map +0 -1
  660. package/dist/openapi/json-schema-slot.js +0 -38
  661. package/dist/openapi/json-schema-slot.js.map +0 -1
  662. package/dist/openapi/register.d.ts.map +0 -1
  663. package/dist/openapi/register.js.map +0 -1
  664. package/dist/openapi/scalar.d.ts.map +0 -1
  665. package/dist/openapi/scalar.js.map +0 -1
  666. package/dist/openapi/serve.d.ts.map +0 -1
  667. package/dist/openapi/serve.js.map +0 -1
  668. package/dist/openapi/spec-factory.d.ts +0 -65
  669. package/dist/openapi/spec-factory.d.ts.map +0 -1
  670. package/dist/openapi/spec-factory.js +0 -52
  671. package/dist/openapi/spec-factory.js.map +0 -1
  672. package/dist/openapi/spec.d.ts +0 -29
  673. package/dist/openapi/spec.d.ts.map +0 -1
  674. package/dist/openapi/spec.js +0 -50
  675. package/dist/openapi/spec.js.map +0 -1
  676. package/dist/openapi/swagger.d.ts.map +0 -1
  677. package/dist/openapi/swagger.js.map +0 -1
  678. package/dist/pattern.d.ts +0 -71
  679. package/dist/pattern.d.ts.map +0 -1
  680. package/dist/pattern.js +0 -239
  681. package/dist/pattern.js.map +0 -1
  682. package/dist/peer.d.ts +0 -17
  683. package/dist/peer.d.ts.map +0 -1
  684. package/dist/peer.js +0 -50
  685. package/dist/peer.js.map +0 -1
  686. package/dist/plugin.d.ts +0 -228
  687. package/dist/plugin.d.ts.map +0 -1
  688. package/dist/plugin.js +0 -666
  689. package/dist/plugin.js.map +0 -1
  690. package/dist/powered-by.d.ts +0 -7
  691. package/dist/powered-by.d.ts.map +0 -1
  692. package/dist/powered-by.js +0 -11
  693. package/dist/powered-by.js.map +0 -1
  694. package/dist/pretty-json.d.ts +0 -10
  695. package/dist/pretty-json.d.ts.map +0 -1
  696. package/dist/pretty-json.js +0 -47
  697. package/dist/pretty-json.js.map +0 -1
  698. package/dist/producer-stream.d.ts +0 -47
  699. package/dist/producer-stream.d.ts.map +0 -1
  700. package/dist/producer-stream.js +0 -267
  701. package/dist/producer-stream.js.map +0 -1
  702. package/dist/proxy.d.ts +0 -90
  703. package/dist/proxy.d.ts.map +0 -1
  704. package/dist/proxy.js +0 -274
  705. package/dist/proxy.js.map +0 -1
  706. package/dist/python-type-emitter.d.ts +0 -24
  707. package/dist/python-type-emitter.d.ts.map +0 -1
  708. package/dist/python-type-emitter.js +0 -157
  709. package/dist/python-type-emitter.js.map +0 -1
  710. package/dist/realtime/bus.d.ts.map +0 -1
  711. package/dist/realtime/bus.js.map +0 -1
  712. package/dist/realtime/register.d.ts +0 -3
  713. package/dist/realtime/register.d.ts.map +0 -1
  714. package/dist/realtime/register.js +0 -10
  715. package/dist/realtime/register.js.map +0 -1
  716. package/dist/realtime/route.d.ts.map +0 -1
  717. package/dist/realtime/route.js.map +0 -1
  718. package/dist/realtime/server.d.ts.map +0 -1
  719. package/dist/realtime/server.js.map +0 -1
  720. package/dist/request-id.d.ts +0 -19
  721. package/dist/request-id.d.ts.map +0 -1
  722. package/dist/request-id.js +0 -16
  723. package/dist/request-id.js.map +0 -1
  724. package/dist/request-limits.d.ts +0 -3
  725. package/dist/request-limits.d.ts.map +0 -1
  726. package/dist/request-limits.js +0 -3
  727. package/dist/request-limits.js.map +0 -1
  728. package/dist/request-path.d.ts +0 -33
  729. package/dist/request-path.d.ts.map +0 -1
  730. package/dist/request-path.js +0 -178
  731. package/dist/request-path.js.map +0 -1
  732. package/dist/request-to-curl.d.ts +0 -15
  733. package/dist/request-to-curl.d.ts.map +0 -1
  734. package/dist/request-to-curl.js +0 -48
  735. package/dist/request-to-curl.js.map +0 -1
  736. package/dist/response.d.ts +0 -86
  737. package/dist/response.d.ts.map +0 -1
  738. package/dist/response.js +0 -313
  739. package/dist/response.js.map +0 -1
  740. package/dist/rust-type-emitter.d.ts +0 -44
  741. package/dist/rust-type-emitter.d.ts.map +0 -1
  742. package/dist/rust-type-emitter.js +0 -463
  743. package/dist/rust-type-emitter.js.map +0 -1
  744. package/dist/secure-headers.d.ts +0 -16
  745. package/dist/secure-headers.d.ts.map +0 -1
  746. package/dist/secure-headers.js +0 -53
  747. package/dist/secure-headers.js.map +0 -1
  748. package/dist/serve-register.d.ts +0 -6
  749. package/dist/serve-register.d.ts.map +0 -1
  750. package/dist/serve-register.js +0 -9
  751. package/dist/serve-register.js.map +0 -1
  752. package/dist/serve-slot.d.ts +0 -9
  753. package/dist/serve-slot.d.ts.map +0 -1
  754. package/dist/serve-slot.js +0 -52
  755. package/dist/serve-slot.js.map +0 -1
  756. package/dist/serve.d.ts +0 -38
  757. package/dist/serve.d.ts.map +0 -1
  758. package/dist/serve.js +0 -157
  759. package/dist/serve.js.map +0 -1
  760. package/dist/server-timing.d.ts +0 -9
  761. package/dist/server-timing.d.ts.map +0 -1
  762. package/dist/server-timing.js +0 -51
  763. package/dist/server-timing.js.map +0 -1
  764. package/dist/static.d.ts +0 -21
  765. package/dist/static.d.ts.map +0 -1
  766. package/dist/static.js +0 -102
  767. package/dist/static.js.map +0 -1
  768. package/dist/telemetry/otel.d.ts.map +0 -1
  769. package/dist/telemetry/otel.js.map +0 -1
  770. package/dist/testing.d.ts +0 -36
  771. package/dist/testing.d.ts.map +0 -1
  772. package/dist/testing.js +0 -124
  773. package/dist/testing.js.map +0 -1
  774. package/dist/timeout.d.ts +0 -13
  775. package/dist/timeout.d.ts.map +0 -1
  776. package/dist/timeout.js +0 -36
  777. package/dist/timeout.js.map +0 -1
  778. package/dist/tree.d.ts +0 -197
  779. package/dist/tree.d.ts.map +0 -1
  780. package/dist/tree.js +0 -437
  781. package/dist/tree.js.map +0 -1
  782. package/dist/trust.d.ts +0 -21
  783. package/dist/trust.d.ts.map +0 -1
  784. package/dist/trust.js +0 -100
  785. package/dist/trust.js.map +0 -1
  786. package/dist/ts-type-emitter.d.ts +0 -8
  787. package/dist/ts-type-emitter.d.ts.map +0 -1
  788. package/dist/ts-type-emitter.js +0 -150
  789. package/dist/ts-type-emitter.js.map +0 -1
  790. package/dist/type-emitter.d.ts +0 -36
  791. package/dist/type-emitter.d.ts.map +0 -1
  792. package/dist/type-emitter.js +0 -729
  793. package/dist/type-emitter.js.map +0 -1
  794. package/dist/type-extractor.d.ts +0 -43
  795. package/dist/type-extractor.d.ts.map +0 -1
  796. package/dist/type-extractor.js +0 -819
  797. package/dist/type-extractor.js.map +0 -1
  798. package/dist/types.d.ts +0 -467
  799. package/dist/types.d.ts.map +0 -1
  800. package/dist/types.js +0 -96
  801. package/dist/types.js.map +0 -1
  802. package/dist/validation.d.ts +0 -31
  803. package/dist/validation.d.ts.map +0 -1
  804. package/dist/validation.js +0 -335
  805. package/dist/validation.js.map +0 -1
  806. package/dist/with-headers.d.ts +0 -15
  807. package/dist/with-headers.d.ts.map +0 -1
  808. package/dist/with-headers.js +0 -45
  809. package/dist/with-headers.js.map +0 -1
  810. package/dist/ws/bun.d.ts.map +0 -1
  811. package/dist/ws/bun.js.map +0 -1
  812. package/dist/ws/cloudflare.d.ts.map +0 -1
  813. package/dist/ws/cloudflare.js.map +0 -1
  814. package/dist/ws/deno.d.ts +0 -13
  815. package/dist/ws/deno.d.ts.map +0 -1
  816. package/dist/ws/deno.js +0 -133
  817. package/dist/ws/deno.js.map +0 -1
  818. package/dist/ws/node.d.ts.map +0 -1
  819. package/dist/ws/node.js.map +0 -1
  820. package/dist/ws/session.d.ts.map +0 -1
  821. package/dist/ws/session.js.map +0 -1
  822. package/dist/ws/shared.d.ts.map +0 -1
  823. package/dist/ws/shared.js.map +0 -1
  824. package/dist/ws-origin.d.ts +0 -20
  825. package/dist/ws-origin.d.ts.map +0 -1
  826. package/dist/ws-origin.js +0 -41
  827. package/dist/ws-origin.js.map +0 -1
  828. package/dist/yaml.d.ts +0 -18
  829. package/dist/yaml.d.ts.map +0 -1
  830. package/dist/yaml.js +0 -101
  831. package/dist/yaml.js.map +0 -1
  832. package/docs/api-ref/go.md +0 -399
  833. package/docs/api-ref/python.md +0 -399
  834. package/docs/api-ref/rust.md +0 -399
  835. package/docs/api-ref/typescript.md +0 -399
  836. package/docs/invalidate-spec.md +0 -333
  837. package/docs/meta-spec.md +0 -555
  838. package/docs/packaging.md +0 -104
  839. package/docs/regression-matrix/README.md +0 -32
  840. package/docs/regression-matrix/review.md +0 -44
  841. package/docs/regression-matrix/ws1-3.md +0 -97
  842. package/docs/regression-matrix/ws4-8.md +0 -107
  843. package/docs/regression-matrix/ws9-12.md +0 -266
  844. package/docs/sdk.md +0 -798
  845. package/src/accepts.ts +0 -136
  846. package/src/body-kind.ts +0 -67
  847. package/src/body-limit.ts +0 -152
  848. package/src/build/index.ts +0 -217
  849. package/src/cli-args.ts +0 -123
  850. package/src/cli-go/auth.go +0 -26
  851. package/src/cli-go/config.go +0 -192
  852. package/src/cli-go/errors.go +0 -75
  853. package/src/cli-go/multipart.go +0 -79
  854. package/src/cli-go/output.go +0 -163
  855. package/src/cli-go/root.go +0 -30
  856. package/src/cli-go/stream.go +0 -88
  857. package/src/cli-go/version.go +0 -5
  858. package/src/cli.ts +0 -209
  859. package/src/client/defaults.ts +0 -47
  860. package/src/client/error.ts +0 -82
  861. package/src/client/http.ts +0 -737
  862. package/src/client/index.ts +0 -157
  863. package/src/client/path.ts +0 -169
  864. package/src/client/redirect-policy.ts +0 -19
  865. package/src/client/sdk.ts +0 -351
  866. package/src/client/sse.ts +0 -128
  867. package/src/client/types.ts +0 -206
  868. package/src/client/ws.ts +0 -149
  869. package/src/client-go/errors.go +0 -236
  870. package/src/client-go/export.go +0 -44
  871. package/src/client-go/invalidation.go +0 -371
  872. package/src/client-go/nullable.go +0 -62
  873. package/src/client-go/realtime.go +0 -354
  874. package/src/client-go/result.go +0 -20
  875. package/src/client-go/runtime.go +0 -975
  876. package/src/client-go/sse.go +0 -159
  877. package/src/client-go/transport.go +0 -495
  878. package/src/client-go/ws.go +0 -128
  879. package/src/client-info.ts +0 -79
  880. package/src/client-mcp/README.md +0 -10
  881. package/src/client-mcp/server.ts +0 -221
  882. package/src/client-mcp/types.ts +0 -19
  883. package/src/client-python/_errors.py +0 -115
  884. package/src/client-python/_invalidation.py +0 -494
  885. package/src/client-python/_realtime.py +0 -179
  886. package/src/client-python/_runtime.py +0 -860
  887. package/src/client-python/_sse.py +0 -155
  888. package/src/client-python/_transport.py +0 -366
  889. package/src/client-python/_ws.py +0 -159
  890. package/src/client-python/py.typed +0 -0
  891. package/src/client-rust/errors.rs +0 -220
  892. package/src/client-rust/invalidation.rs +0 -412
  893. package/src/client-rust/invalidation_sync.rs +0 -93
  894. package/src/client-rust/nullable.rs +0 -17
  895. package/src/client-rust/realtime.rs +0 -702
  896. package/src/client-rust/result.rs +0 -22
  897. package/src/client-rust/runtime.rs +0 -980
  898. package/src/client-rust/runtime_sync.rs +0 -484
  899. package/src/client-rust/sse.rs +0 -188
  900. package/src/client-rust/ws.rs +0 -167
  901. package/src/codegen-go-cli.ts +0 -1066
  902. package/src/codegen-go.ts +0 -970
  903. package/src/codegen-hash.ts +0 -8
  904. package/src/codegen-ir.ts +0 -812
  905. package/src/codegen-lang.ts +0 -517
  906. package/src/codegen-load.ts +0 -150
  907. package/src/codegen-loaders.ts +0 -50
  908. package/src/codegen-mcp.ts +0 -445
  909. package/src/codegen-python.ts +0 -916
  910. package/src/codegen-route-tree-intern.ts +0 -198
  911. package/src/codegen-rust.ts +0 -1402
  912. package/src/codegen-sanitize.ts +0 -57
  913. package/src/codegen-schema-naming.ts +0 -165
  914. package/src/codegen-sdk-model.ts +0 -228
  915. package/src/codegen.ts +0 -5089
  916. package/src/context.ts +0 -325
  917. package/src/cookie-sign.ts +0 -119
  918. package/src/cookie.ts +0 -143
  919. package/src/cors.ts +0 -95
  920. package/src/crypto.ts +0 -38
  921. package/src/csrf.ts +0 -86
  922. package/src/curl-logger.ts +0 -258
  923. package/src/detect-runtime.ts +0 -17
  924. package/src/dict.ts +0 -12
  925. package/src/error.ts +0 -55
  926. package/src/errors.ts +0 -85
  927. package/src/etag.ts +0 -97
  928. package/src/feature-detect.ts +0 -147
  929. package/src/feature-load.ts +0 -23
  930. package/src/feature-slots.ts +0 -70
  931. package/src/fetch-request.ts +0 -13
  932. package/src/gen-process.ts +0 -42
  933. package/src/gen-write.ts +0 -127
  934. package/src/glob.ts +0 -109
  935. package/src/go-type-emitter.ts +0 -660
  936. package/src/honey-response.ts +0 -379
  937. package/src/i18n-slot.ts +0 -30
  938. package/src/i18n.ts +0 -300
  939. package/src/index.ts +0 -3829
  940. package/src/init.ts +0 -161
  941. package/src/input.ts +0 -8
  942. package/src/invalidate-check.ts +0 -205
  943. package/src/invoke-user.ts +0 -95
  944. package/src/ip-restrict.ts +0 -79
  945. package/src/ip.ts +0 -194
  946. package/src/logger.ts +0 -178
  947. package/src/media-type.ts +0 -104
  948. package/src/meta-spec-merge.ts +0 -80
  949. package/src/meta-spec.ts +0 -718
  950. package/src/middleware.ts +0 -331
  951. package/src/node-request.ts +0 -431
  952. package/src/node.ts +0 -454
  953. package/src/openapi/collect.ts +0 -50
  954. package/src/openapi/docs-page.ts +0 -89
  955. package/src/openapi/document.ts +0 -902
  956. package/src/openapi/json-schema-slot.ts +0 -53
  957. package/src/openapi/register.ts +0 -23
  958. package/src/openapi/scalar.ts +0 -34
  959. package/src/openapi/serve.ts +0 -39
  960. package/src/openapi/spec-factory.ts +0 -100
  961. package/src/openapi/spec.ts +0 -74
  962. package/src/openapi/swagger.ts +0 -35
  963. package/src/pattern.ts +0 -245
  964. package/src/peer.ts +0 -53
  965. package/src/plugin.ts +0 -864
  966. package/src/powered-by.ts +0 -18
  967. package/src/pretty-json.ts +0 -56
  968. package/src/producer-stream.ts +0 -296
  969. package/src/proxy.ts +0 -370
  970. package/src/python-type-emitter.ts +0 -181
  971. package/src/realtime/bus.ts +0 -140
  972. package/src/realtime/register.ts +0 -13
  973. package/src/realtime/route.ts +0 -153
  974. package/src/realtime/server.ts +0 -298
  975. package/src/request-id.ts +0 -32
  976. package/src/request-limits.ts +0 -2
  977. package/src/request-path.ts +0 -165
  978. package/src/request-to-curl.ts +0 -52
  979. package/src/response.ts +0 -411
  980. package/src/rust-type-emitter.ts +0 -548
  981. package/src/secure-headers.ts +0 -74
  982. package/src/serve-register.ts +0 -12
  983. package/src/serve-slot.ts +0 -58
  984. package/src/serve.ts +0 -220
  985. package/src/server-timing.ts +0 -71
  986. package/src/static.ts +0 -112
  987. package/src/telemetry/otel.ts +0 -156
  988. package/src/testing.ts +0 -167
  989. package/src/timeout.ts +0 -45
  990. package/src/tree.ts +0 -558
  991. package/src/trust.ts +0 -117
  992. package/src/ts-type-emitter.ts +0 -168
  993. package/src/type-emitter.ts +0 -760
  994. package/src/type-extractor.ts +0 -855
  995. package/src/types.ts +0 -756
  996. package/src/validation.ts +0 -413
  997. package/src/with-headers.ts +0 -45
  998. package/src/ws/bun.ts +0 -120
  999. package/src/ws/cloudflare.ts +0 -192
  1000. package/src/ws/deno.ts +0 -188
  1001. package/src/ws/node.ts +0 -240
  1002. package/src/ws/session.ts +0 -73
  1003. package/src/ws/shared.ts +0 -140
  1004. package/src/ws-origin.ts +0 -53
  1005. package/src/yaml.ts +0 -103
package/dist/index.d.ts CHANGED
@@ -1,748 +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 and the error factory from `source`
485
- * onto this app's routes that lack them (a gateway serves its generated tree, which carries
486
- * none). A downstream route's error keys resolve against its own app's factory, so the
487
- * gateway documents each under the status that app gives it.
488
- */
489
- _overlaySchemas(source: RouteTree): void;
490
- /**
491
- * @internal — generate-time: the route tree a gateway serves. `source` is the merged
492
- * downstream tree (`codegen.mergeTree`); the gateway's own registered routes join it as
493
- * ordinary leaves, while its root wildcards stay out of the tree — they are the catch-all
494
- * the downstream leaves delegate to. An own route that is also a downstream route, or
495
- * whose topology conflicts with one, throws here instead of at request time. The app is
496
- * rebound to the result, so codegen that runs next (OpenAPI, manifest) sees what it serves.
497
- */
498
- _gatewayTree(source: RouteTree): RouteTree;
499
- /** @internal — drop the loaded tree and route by the registered routes alone. */
500
- _unloadTree(): void;
501
- /** @internal — swap the loaded tree, re-binding every registered route to it. */
502
- _replaceLoadedTree(tree: RouteTree): void;
503
- /**
504
- * Set the app's error factory. Like every app setting it applies to every handle of this
505
- * app, whenever it is called; routes mounted from another app keep that app's factory.
506
- */
507
- errorFactory<TFactory extends Record<string, (...args: never[]) => unknown>>(factory: TFactory): Honey<TEnv, TCtx, TRoutes, TMeta, TFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
508
- /** Error keys every route of this app declares — applies to routes registered before and after the call. */
509
- defaultErrors<TKeys extends ([TErrorFactory] extends [never] ? never : keyof TErrorFactory & string)>(...keys: TKeys[]): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors | TKeys, TBasePath, TTaps, TScopedMw>;
510
- defaultBoundary<TKey extends ([TErrorFactory] extends [never] ? never : keyof TErrorFactory & string)>(key: TKey): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors | TKey, TBasePath, TTaps, TScopedMw>;
511
- /** Phantom overload — constrains what route-level .meta() accepts */
512
- meta<TNewMeta extends Record<string, unknown>>(): Honey<TEnv, TCtx, TRoutes, TNewMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
513
- /** Typed chain-level default meta — constrains route meta and sets runtime defaults in one call */
514
- meta<TNewMeta extends Record<string, unknown>, TValues extends Partial<DefaultMeta> & Partial<TNewMeta>>(values: TValues): Honey<TEnv, TCtx, TRoutes, TNewMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
515
- /** Chain-level default meta — merged into every route registered on this chain */
516
- meta<TValues extends Partial<DefaultMeta> & ([TMeta] extends [never] ? {} : Partial<TMeta>)>(values: TValues): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
517
- /**
518
- * Declare what flows from route meta and route schemas into the OpenAPI document.
519
- * Codegen-time only — never consulted on the request path. See docs/meta-spec.md.
520
- */
521
- metaSpec<TSpec extends HoneyMetaSpec<TMeta>>(spec: TSpec): this;
522
- /** Declare tap payload types — auto-extends meta with Partial<T> for meta-driven taps */
523
- taps<TNewTaps extends Record<string, unknown>>(): Honey<TEnv, Omit<TCtx, "tap"> & {
524
- tap<K extends keyof TNewTaps>(key: K, payload: TNewTaps[K]): void;
525
- }, TRoutes, [
526
- TMeta
527
- ] extends [never] ? Partial<TNewTaps> : TMeta & Partial<TNewTaps>, TErrorFactory, TDefaultErrors, TBasePath, TNewTaps, TScopedMw>;
528
- use<TAdds>(mw: MiddlewareFn<TCtx, TAdds>): Honey<TEnv, TCtx & TAdds, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
529
- use<const TPath extends string, TAdds>(path: TPath, mw: MiddlewareFn<TCtx, TAdds>): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, readonly [...TScopedMw, {
530
- readonly path: MergePath<TBasePath, TPath>;
531
- readonly adds: TAdds;
532
- }]>;
533
- /**
534
- * Mount a sub-app: its routes are served under this handle's basePath (and under `prefix`
535
- * when given — `app.route("/v1", sub)` is `app.basePath("/v1").route(sub)`), and this
536
- * handle's chain runs before theirs. The sub's own basePath stays part of each path.
537
- */
538
- 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>;
539
- 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>;
540
- private _mount;
541
- private _setBus;
542
- private _registerRoute;
543
- /** @internal — set (or clear, with null) one app-wide middleware; used by `serve()` */
544
- _setGlobal(key: string, mw: RuntimeMiddleware | null): void;
545
- /** @internal — what a route registered through this handle captures */
546
- _view(): {
547
- chain: RuntimeMiddleware[];
548
- cv: Record<string, unknown> | null;
549
- own: AppSettings<unknown>;
550
- };
551
- /** @internal — a builder got its handler (or was abandoned on purpose) */
552
- _settle(pending: PendingRoute): void;
553
- 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>;
554
- 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>;
555
- 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>;
556
- 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>;
557
- 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>;
558
- 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>;
559
- 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>;
560
- 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>;
561
- 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>;
562
- 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>>;
563
- realtime<const TPath extends string>(path: TPath, opts: RealtimeRouteOpts<TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>>): this;
564
- /**
565
- * Deno must call `Deno.upgradeWebSocket` in the same turn as the serve
566
- * callback. When the adapter implements `preUpgrade`, we do that here
567
- * and return the 101 response before any middleware Promise.
568
- */
569
- fetch(request: Request, env: TEnv, executionCtx?: {
570
- waitUntil?: (p: Promise<unknown>) => void;
571
- }): Response | Promise<Response>;
572
- /** @internal 400 for a request path the normalization policy rejects (see `normalizePath`), or an invalid `Host`. */
573
- _badRequestTarget(): Response;
574
- private trailingSlashRedirects;
575
- private pathAfterPrefix;
576
- private _doFetch;
577
- private _route;
578
- private _matchWs;
579
- private _dispatchRecord;
580
- private _makeErrorCtx;
581
- /** A request context for `plan`: route data, context values, `ctx.errors`, `ctx.realtime`. */
582
- private _newCtx;
583
- private _handleWs;
584
- /** Reject a cross-origin upgrade the route's origin policy does not allow (403). */
585
- /** The websocket session runtime; a cross-origin upgrade the route does not allow is a 403. */
586
- private _wsSession;
587
- private _wsUpgrade;
588
- /** Terminal of a realtime route's chain: identify, upgrade, and attach the connection to the bus. */
589
- private _realtimeUpgrade;
590
- /**
591
- * 404 (`allowed === null`) and 405: one pipeline with a synthetic record — full context,
592
- * the app-wide middleware and the scopes covering the path run once, telemetry fires once.
593
- */
594
- private _handleMiss;
595
- /** Fire `onResponse` once for the request's one exit and return. A dispatch that rejects
596
- * (an adapter failure past every error boundary) still ends the request: it reports 500. */
597
- private _withOnResponse;
598
- private _make404;
599
- private _make405;
600
- /**
601
- * CORS preflight for a path that has no OPTIONS route: run the chain of the route the
602
- * preflight asks about (`Access-Control-Request-Method`) — chain, scoped and route
603
- * middleware, never input validation or the handler. Middleware that answers the
604
- * preflight (cors) short-circuits; otherwise the answer is the 405 with `Allow`.
605
- */
606
- private _handlePreflight;
607
- private _handleMatched;
608
- /** Output validation, inside the chain: an invalid body becomes an error response the middleware sees. */
609
- private _validateOutput;
610
- private _finishMatched;
611
- }
612
1
  /**
613
- * When content type IS declared → narrow the method (constrain status keys + body).
614
- * When content type NOT declared → remove the method (Omit).
615
- * 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).
616
4
  */
617
- /** Resolve body type: schema → InferOutput, plain type → use as-is */
618
- type ResolveBody<T, TBody> = TBody extends "infer" ? (T extends StandardSchemaLike ? InferOutput<T> : T) : TBody;
619
- 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> & {
620
- [M in Method]: <K extends keyof TSchemas & string>(statusKey: K, body: ResolveBody<TSchemas[K], TBody>, opts?: ResponseOptions) => TypedResponse<CT, K>;
621
- } : Omit<TRes, Method>;
622
- /**
623
- * SSE uses a callback signature, not statusKey+body like other methods.
624
- * Gate presence on text/event-stream declaration, preserve original signature.
625
- */
626
- type NarrowSSE<TOutput> = [ExtractSchemas<TOutput, "text/event-stream">] extends [never] ? {} : {
627
- sse: HoneyRes["sse"];
628
- };
629
- /** Universal methods — always available, not gated by output declaration */
630
- type UniversalRes = Pick<HoneyRes, "noContent" | "raw" | "redirect" | "stream">;
631
- /**
632
- * Constrain ctx.res when output schemas are declared.
633
- * Declared content types → method constrained (status keys + body type).
634
- * Undeclared content types → method removed.
635
- * Universal methods (noContent, redirect, stream, raw) always available.
636
- * HoneyContext has no private brand, so Omit<TCtx, "res"> replaces the wide HoneyRes.
637
- */
638
- type ApplyOutput<TCtx, TOutput> = [keyof TOutput] extends [never] ? TCtx : Omit<TCtx, "res"> & {
639
- 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>;
640
- };
641
- /** Public alias for codegen — applies output schema constraints to a context type */
642
- export type WithOutput<TCtx, TOutput> = ApplyOutput<TCtx, TOutput>;
643
- /** @internal — tuple entry describing a scoped middleware at the type level */
644
- type ScopedMwEntry = {
645
- readonly path: string;
646
- readonly adds: unknown;
647
- };
648
- /**
649
- * Walk TScopedMw tuple, intersect `adds` for every entry whose `path` is a prefix of TFullPath.
650
- * Prefix semantics: TFullPath extends `${P}` (exact) | `${P}/${string}` (descendant).
651
- *
652
- * Non-literal-path guard: if Head["path"] is the base `string` type (happens when
653
- * the user passes a widened variable), skip the entry via `string extends Head["path"] ? {}`.
654
- * This prevents the always-true `'/anywhere' extends string` from polluting every route.
655
- */
656
- type ApplyScoped<TScopedMw extends readonly ScopedMwEntry[], TFullPath extends string> = TScopedMw extends readonly [
657
- infer Head extends ScopedMwEntry,
658
- ...infer Rest extends readonly ScopedMwEntry[]
659
- ] ? (string extends Head["path"] ? {} : TFullPath extends Head["path"] ? Head["adds"] : TFullPath extends `${Head["path"] & string}/${string}` ? Head["adds"] : {}) & ApplyScoped<Rest, TFullPath> : {};
660
- /** Apply typed params — override params with specific keys when route has :param segments */
661
- type ApplyParams<TCtx, TParams> = [keyof TParams] extends [string] ? string extends keyof TParams ? TCtx : TCtx & {
662
- readonly params: TParams;
663
- } : TCtx;
664
- /** Typed tap method — constrained to registered tap keys when TTaps is non-empty */
665
- type TypedTap<TTaps extends Record<string, unknown>> = [keyof TTaps] extends [never] ? {
666
- tap(key: string, payload: unknown): void;
667
- } : {
668
- tap<K extends string & keyof TTaps>(key: K, payload: TTaps[K]): void;
669
- };
670
- /** Build the full handler context: base ctx + params + input + meta + errors + taps + output-constrained methods */
671
- 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 & {
672
- input: TInput;
673
- }, TParams> & {
674
- readonly meta: Readonly<Omit<TAccMeta, "openApi">>;
675
- readonly routePattern: TPath;
676
- } & ([TErrorFactory] extends [never] ? {} : [TErrorKeys] extends [never] ? {
677
- readonly errors: TErrorFactory;
678
- } : {
679
- readonly errors: Pick<TErrorFactory, TErrorKeys & keyof TErrorFactory>;
680
- }) & TypedTap<TTaps>, TOutput>;
681
- type RouteBuilderState<TParent> = {
682
- boundaryErrorKey: string | null;
683
- /** keys the route declares itself (`.errors()`, `.boundary()`) */
684
- errorKeys: Set<string>;
685
- extraMethods: (HttpMethod | "ALL")[] | null;
686
- inputSchemas: InputSchemasDef | null;
687
- /** explicit meta — chain `.meta()` overlaid by route `.meta()` */
688
- meta: Record<string, unknown> | null;
689
- method: HttpMethod | "ALL";
690
- /** route-level middleware */
691
- middlewares: RuntimeMiddleware[];
692
- outputSchemas: OutputSchemaDef | null;
693
- parent: TParent;
694
- /** canonical full pattern */
695
- path: string;
696
- /** reported at finalize until `.handler()` runs */
697
- pending: PendingRoute;
698
- };
699
- /** Honey.TMeta defaults to never; never & X is never, so start acc meta at {}. */
700
- type InitAccMeta<TMeta> = [TMeta] extends [never] ? {} : TMeta;
701
- /** Skip $routes merge only for a real `{ internal: true }` meta — not for `never`. */
702
- type SkipRouteRecord<TAccMeta> = [TAccMeta] extends [never] ? false : [TAccMeta] extends [{
703
- internal: true;
704
- }] ? true : false;
705
- /** Return type for handler() — extracted to avoid 3x duplication */
706
- 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>;
707
- type OneShotKey = "boundary" | "errors" | "input" | "meta" | "output";
708
- 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>;
709
- 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[] = []> {
710
- private _s;
711
- constructor(state: RouteBuilderState<Honey<TEnv, TBaseCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>>);
712
- 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>;
713
- 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>;
714
- 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>;
715
- 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>;
716
- 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>;
717
- 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>;
718
- 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>;
719
- 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>;
720
- 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>;
721
- }
722
- type WSRouteBuilderState<TParent> = {
723
- errorKeys: Set<string>;
724
- inputSchemas: InputSchemasDef | null;
725
- origins: WSOriginPolicy | null;
726
- meta: Record<string, unknown> | null;
727
- middlewares: RuntimeMiddleware[];
728
- parent: TParent;
729
- path: string;
730
- pending: PendingRoute;
731
- };
732
- declare class WSRouteBuilder<TEnv, TCtx, TInput = {}, _TErrorKeys extends string = never, TParent = unknown> {
733
- private _s;
734
- constructor(state: WSRouteBuilderState<TParent>);
735
- errors<TFactory extends Record<string, (...args: never[]) => unknown>>(factory: TFactory, ...keys: Array<keyof TFactory & string>): WSRouteBuilder<TEnv, TCtx, TInput, _TErrorKeys | (keyof TFactory & string), TParent>;
736
- handler(wsHandler: WSHandler<TCtx>): TParent;
737
- input<TSchemas extends Pick<InputSchemasDef, "cookies" | "headers" | "search">>(schemas: TSchemas): WSRouteBuilder<TEnv, TCtx, TInput & InferInputMap<TSchemas>, _TErrorKeys, TParent>;
738
- meta(meta: Record<string, unknown>): this;
739
- /**
740
- * Browser origins allowed to open this socket: `"*"`, a list of origins
741
- * (`https://app.example.com`), or a predicate. Same-origin always passes. Without it, a
742
- * cross-origin upgrade that carries `Cookie` or `Authorization` gets 403.
743
- */
744
- origins(policy: WSOriginPolicy): WSRouteBuilder<TEnv, TCtx, TInput, _TErrorKeys, TParent>;
745
- use<TAdds>(mw: MiddlewareFn<TCtx, TAdds>): WSRouteBuilder<TEnv, TCtx & TAdds, TInput, _TErrorKeys, TParent>;
746
- }
747
- export declare function honey<TEnv>(): Honey<TEnv>;
748
- //# 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, HoneyMeta, 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";