@lovrozagar/honey 0.7.3 → 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1003) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -1969
  3. package/bin/honey.js +87 -27
  4. package/dist/adapters/bun/serve.d.ts +18 -0
  5. package/dist/adapters/bun/serve.js +89 -0
  6. package/dist/adapters/fetch-request.d.ts +20 -0
  7. package/dist/adapters/fetch-request.js +29 -0
  8. package/dist/adapters/node/headers.d.ts +27 -0
  9. package/dist/adapters/node/headers.js +86 -0
  10. package/dist/adapters/node/request.d.ts +16 -0
  11. package/dist/adapters/node/request.js +214 -0
  12. package/dist/adapters/node/response.d.ts +11 -0
  13. package/dist/adapters/node/response.js +126 -0
  14. package/dist/adapters/node/serve.d.ts +39 -0
  15. package/dist/adapters/node/serve.js +205 -0
  16. package/dist/adapters/node/url.d.ts +13 -0
  17. package/dist/adapters/node/url.js +87 -0
  18. package/dist/adapters/serve.d.ts +36 -0
  19. package/dist/adapters/serve.js +52 -0
  20. package/dist/build/artifacts.d.ts +34 -0
  21. package/dist/build/artifacts.js +123 -0
  22. package/dist/build/cli-args.d.ts +30 -0
  23. package/dist/build/cli-args.js +97 -0
  24. package/dist/build/cli.d.ts +11 -0
  25. package/dist/build/cli.js +150 -0
  26. package/dist/build/config.d.ts +102 -0
  27. package/dist/build/config.js +89 -0
  28. package/dist/build/generate.d.ts +19 -0
  29. package/dist/build/generate.js +80 -0
  30. package/dist/build/glob.d.ts +8 -0
  31. package/dist/build/glob.js +97 -0
  32. package/dist/build/index.d.ts +3 -58
  33. package/dist/build/index.js +3 -173
  34. package/dist/build/init.d.ts +3 -0
  35. package/dist/build/init.js +131 -0
  36. package/dist/build/loaders.d.ts +33 -0
  37. package/dist/build/loaders.js +105 -0
  38. package/dist/build/plugin.d.ts +52 -0
  39. package/dist/build/plugin.js +146 -0
  40. package/dist/build/source.d.ts +21 -0
  41. package/dist/build/source.js +100 -0
  42. package/dist/build/targets.d.ts +59 -0
  43. package/dist/build/targets.js +107 -0
  44. package/dist/context/context.d.ts +111 -0
  45. package/dist/context/context.js +213 -0
  46. package/dist/context/cookie-sign.d.ts +38 -0
  47. package/dist/context/cookie-sign.js +113 -0
  48. package/dist/context/cookie.d.ts +28 -0
  49. package/dist/context/cookie.js +142 -0
  50. package/dist/context/peer.d.ts +34 -0
  51. package/dist/context/peer.js +190 -0
  52. package/dist/errors/error.d.ts +60 -0
  53. package/dist/errors/error.js +84 -0
  54. package/dist/errors/errors.d.ts +45 -0
  55. package/dist/errors/errors.js +31 -0
  56. package/dist/errors/on-error.d.ts +10 -0
  57. package/dist/errors/on-error.js +204 -0
  58. package/dist/errors/problem-json.d.ts +14 -0
  59. package/dist/errors/problem-json.js +58 -0
  60. package/dist/errors/projector.d.ts +50 -0
  61. package/dist/errors/projector.js +107 -0
  62. package/dist/i18n/error-i18n.d.ts +26 -0
  63. package/dist/i18n/error-i18n.js +77 -0
  64. package/dist/i18n/i18n.d.ts +21 -0
  65. package/dist/i18n/i18n.js +40 -0
  66. package/dist/i18n/icu.d.ts +29 -0
  67. package/dist/i18n/icu.js +170 -0
  68. package/dist/i18n/index.d.ts +4 -0
  69. package/dist/i18n/index.js +3 -0
  70. package/dist/index.d.ts +30 -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 +181 -0
  219. package/dist/routing/app-types.js +1 -0
  220. package/dist/routing/app.d.ts +76 -0
  221. package/dist/routing/app.js +137 -0
  222. package/dist/routing/codegen-types.d.ts +17 -0
  223. package/dist/routing/codegen-types.js +1 -0
  224. package/dist/routing/delegate.d.ts +9 -0
  225. package/dist/routing/delegate.js +75 -0
  226. package/dist/routing/dispatch.d.ts +22 -0
  227. package/dist/routing/dispatch.js +255 -0
  228. package/dist/routing/finalize.d.ts +47 -0
  229. package/dist/routing/finalize.js +169 -0
  230. package/dist/routing/gateway-tree.d.ts +19 -0
  231. package/dist/routing/gateway-tree.js +74 -0
  232. package/dist/routing/invalidate-check.d.ts +58 -0
  233. package/dist/routing/invalidate-check.js +124 -0
  234. package/dist/routing/match.d.ts +22 -0
  235. package/dist/routing/match.js +108 -0
  236. package/dist/routing/middleware-chain.d.ts +16 -0
  237. package/dist/routing/middleware-chain.js +41 -0
  238. package/dist/routing/output-types.d.ts +91 -0
  239. package/dist/routing/output-types.js +1 -0
  240. package/dist/routing/pattern.d.ts +55 -0
  241. package/dist/routing/pattern.js +219 -0
  242. package/dist/routing/record.d.ts +18 -0
  243. package/dist/routing/record.js +4 -0
  244. package/dist/routing/register.d.ts +135 -0
  245. package/dist/routing/register.js +155 -0
  246. package/dist/routing/request-path.d.ts +30 -0
  247. package/dist/routing/request-path.js +173 -0
  248. package/dist/routing/route-builder.d.ts +160 -0
  249. package/dist/routing/route-builder.js +86 -0
  250. package/dist/routing/route-tree.d.ts +18 -0
  251. package/dist/routing/route-tree.js +91 -0
  252. package/dist/routing/settings-chain.d.ts +75 -0
  253. package/dist/routing/settings-chain.js +137 -0
  254. package/dist/routing/settings.d.ts +90 -0
  255. package/dist/routing/settings.js +44 -0
  256. package/dist/routing/tap.d.ts +31 -0
  257. package/dist/routing/tap.js +77 -0
  258. package/dist/routing/tree-merge.d.ts +7 -0
  259. package/dist/routing/tree-merge.js +77 -0
  260. package/dist/routing/tree.d.ts +85 -0
  261. package/dist/routing/tree.js +196 -0
  262. package/dist/routing/types.d.ts +20 -0
  263. package/dist/routing/types.js +1 -0
  264. package/dist/routing/ws-builder.d.ts +62 -0
  265. package/dist/routing/ws-builder.js +109 -0
  266. package/dist/runtime/detect-runtime.d.ts +16 -0
  267. package/dist/runtime/detect-runtime.js +11 -0
  268. package/dist/runtime/optional-peer.d.ts +10 -0
  269. package/dist/runtime/optional-peer.js +19 -0
  270. package/dist/schema/arktype.d.ts +7 -0
  271. package/dist/schema/arktype.js +13 -0
  272. package/dist/schema/canonicalize.d.ts +8 -0
  273. package/dist/schema/canonicalize.js +19 -0
  274. package/dist/schema/effect.d.ts +7 -0
  275. package/dist/schema/effect.js +4 -0
  276. package/dist/schema/naming.d.ts +31 -0
  277. package/dist/schema/naming.js +116 -0
  278. package/dist/schema/sanitize-spec.d.ts +15 -0
  279. package/dist/schema/sanitize-spec.js +43 -0
  280. package/dist/schema/slots.d.ts +15 -0
  281. package/dist/schema/slots.js +179 -0
  282. package/dist/schema/to-json-schema.d.ts +34 -0
  283. package/dist/schema/to-json-schema.js +94 -0
  284. package/dist/schema/valibot.d.ts +4 -0
  285. package/dist/schema/valibot.js +153 -0
  286. package/dist/schema/yup.d.ts +3 -0
  287. package/dist/schema/yup.js +57 -0
  288. package/dist/schema/zod.d.ts +6 -0
  289. package/dist/schema/zod.js +192 -0
  290. package/dist/security/crypto.d.ts +7 -0
  291. package/dist/security/crypto.js +30 -0
  292. package/dist/streaming/producer-stream.d.ts +45 -0
  293. package/dist/streaming/producer-stream.js +251 -0
  294. package/dist/telemetry/fields.d.ts +43 -0
  295. package/dist/telemetry/fields.js +64 -0
  296. package/dist/telemetry/log-format.d.ts +7 -0
  297. package/dist/telemetry/log-format.js +43 -0
  298. package/dist/telemetry/logger.d.ts +44 -0
  299. package/dist/telemetry/logger.js +122 -0
  300. package/dist/telemetry/otel-subpath.d.ts +7 -0
  301. package/dist/telemetry/otel-subpath.js +5 -0
  302. package/dist/telemetry/otel.d.ts +50 -57
  303. package/dist/telemetry/otel.js +54 -130
  304. package/dist/telemetry/request-log.d.ts +22 -0
  305. package/dist/telemetry/request-log.js +83 -0
  306. package/dist/telemetry/request-trace.d.ts +123 -0
  307. package/dist/telemetry/request-trace.js +199 -0
  308. package/dist/telemetry/span-lifecycle.d.ts +11 -0
  309. package/dist/telemetry/span-lifecycle.js +114 -0
  310. package/dist/telemetry/traceparent.d.ts +40 -0
  311. package/dist/telemetry/traceparent.js +73 -0
  312. package/dist/testing/testing.d.ts +42 -0
  313. package/dist/testing/testing.js +101 -0
  314. package/dist/validation/content-type.d.ts +21 -0
  315. package/dist/validation/content-type.js +42 -0
  316. package/dist/validation/standard-schema.d.ts +41 -0
  317. package/dist/validation/standard-schema.js +5 -0
  318. package/dist/validation/validate-input.d.ts +45 -0
  319. package/dist/validation/validate-input.js +174 -0
  320. package/dist/validation/validate-output.d.ts +34 -0
  321. package/dist/validation/validate-output.js +107 -0
  322. package/dist/ws/bun.d.ts +30 -25
  323. package/dist/ws/bun.js +42 -46
  324. package/dist/ws/cloudflare.d.ts +6 -75
  325. package/dist/ws/cloudflare.js +37 -104
  326. package/dist/ws/contract.d.ts +74 -0
  327. package/dist/ws/contract.js +83 -0
  328. package/dist/ws/node.d.ts +12 -21
  329. package/dist/ws/node.js +103 -151
  330. package/dist/ws/origin.d.ts +23 -0
  331. package/dist/ws/origin.js +48 -0
  332. package/dist/ws/route.d.ts +14 -0
  333. package/dist/ws/route.js +5 -0
  334. package/dist/ws/session.d.ts +15 -6
  335. package/dist/ws/session.js +22 -23
  336. package/dist/ws/shared.d.ts +23 -33
  337. package/dist/ws/shared.js +53 -39
  338. package/package.json +169 -251
  339. package/dist/accepts.d.ts +0 -12
  340. package/dist/accepts.d.ts.map +0 -1
  341. package/dist/accepts.js +0 -126
  342. package/dist/accepts.js.map +0 -1
  343. package/dist/body-kind.d.ts +0 -26
  344. package/dist/body-kind.d.ts.map +0 -1
  345. package/dist/body-kind.js +0 -70
  346. package/dist/body-kind.js.map +0 -1
  347. package/dist/body-limit.d.ts +0 -26
  348. package/dist/body-limit.d.ts.map +0 -1
  349. package/dist/body-limit.js +0 -126
  350. package/dist/body-limit.js.map +0 -1
  351. package/dist/build/index.d.ts.map +0 -1
  352. package/dist/build/index.js.map +0 -1
  353. package/dist/cli-args.d.ts +0 -33
  354. package/dist/cli-args.d.ts.map +0 -1
  355. package/dist/cli-args.js +0 -102
  356. package/dist/cli-args.js.map +0 -1
  357. package/dist/cli-go/auth.go +0 -26
  358. package/dist/cli-go/config.go +0 -192
  359. package/dist/cli-go/errors.go +0 -75
  360. package/dist/cli-go/multipart.go +0 -79
  361. package/dist/cli-go/output.go +0 -163
  362. package/dist/cli-go/root.go +0 -30
  363. package/dist/cli-go/stream.go +0 -88
  364. package/dist/cli-go/version.go +0 -5
  365. package/dist/cli.d.ts +0 -3
  366. package/dist/cli.d.ts.map +0 -1
  367. package/dist/cli.js +0 -209
  368. package/dist/cli.js.map +0 -1
  369. package/dist/client/defaults.d.ts +0 -12
  370. package/dist/client/defaults.d.ts.map +0 -1
  371. package/dist/client/defaults.js +0 -48
  372. package/dist/client/defaults.js.map +0 -1
  373. package/dist/client/error.d.ts +0 -49
  374. package/dist/client/error.d.ts.map +0 -1
  375. package/dist/client/error.js +0 -71
  376. package/dist/client/error.js.map +0 -1
  377. package/dist/client/http.d.ts +0 -155
  378. package/dist/client/http.d.ts.map +0 -1
  379. package/dist/client/http.js +0 -571
  380. package/dist/client/http.js.map +0 -1
  381. package/dist/client/index.d.ts +0 -23
  382. package/dist/client/index.d.ts.map +0 -1
  383. package/dist/client/index.js +0 -95
  384. package/dist/client/index.js.map +0 -1
  385. package/dist/client/path.d.ts +0 -26
  386. package/dist/client/path.d.ts.map +0 -1
  387. package/dist/client/path.js +0 -163
  388. package/dist/client/path.js.map +0 -1
  389. package/dist/client/redirect-policy.d.ts +0 -12
  390. package/dist/client/redirect-policy.d.ts.map +0 -1
  391. package/dist/client/redirect-policy.js +0 -20
  392. package/dist/client/redirect-policy.js.map +0 -1
  393. package/dist/client/sdk.d.ts +0 -70
  394. package/dist/client/sdk.d.ts.map +0 -1
  395. package/dist/client/sdk.js +0 -292
  396. package/dist/client/sdk.js.map +0 -1
  397. package/dist/client/sse.d.ts +0 -23
  398. package/dist/client/sse.d.ts.map +0 -1
  399. package/dist/client/sse.js +0 -129
  400. package/dist/client/sse.js.map +0 -1
  401. package/dist/client/types.d.ts +0 -124
  402. package/dist/client/types.d.ts.map +0 -1
  403. package/dist/client/types.js +0 -2
  404. package/dist/client/types.js.map +0 -1
  405. package/dist/client/ws.d.ts +0 -22
  406. package/dist/client/ws.d.ts.map +0 -1
  407. package/dist/client/ws.js +0 -112
  408. package/dist/client/ws.js.map +0 -1
  409. package/dist/client-go/errors.go +0 -236
  410. package/dist/client-go/export.go +0 -44
  411. package/dist/client-go/invalidation.go +0 -371
  412. package/dist/client-go/nullable.go +0 -62
  413. package/dist/client-go/realtime.go +0 -354
  414. package/dist/client-go/result.go +0 -20
  415. package/dist/client-go/runtime.go +0 -975
  416. package/dist/client-go/sse.go +0 -159
  417. package/dist/client-go/transport.go +0 -495
  418. package/dist/client-go/ws.go +0 -128
  419. package/dist/client-info.d.ts +0 -36
  420. package/dist/client-info.d.ts.map +0 -1
  421. package/dist/client-info.js +0 -53
  422. package/dist/client-info.js.map +0 -1
  423. package/dist/client-mcp/README.md +0 -10
  424. package/dist/client-mcp/server.ts +0 -221
  425. package/dist/client-mcp/types.ts +0 -19
  426. package/dist/client-python/_errors.py +0 -115
  427. package/dist/client-python/_invalidation.py +0 -494
  428. package/dist/client-python/_realtime.py +0 -179
  429. package/dist/client-python/_runtime.py +0 -860
  430. package/dist/client-python/_sse.py +0 -155
  431. package/dist/client-python/_transport.py +0 -366
  432. package/dist/client-python/_ws.py +0 -159
  433. package/dist/client-python/py.typed +0 -0
  434. package/dist/client-rust/errors.rs +0 -220
  435. package/dist/client-rust/invalidation.rs +0 -412
  436. package/dist/client-rust/invalidation_sync.rs +0 -93
  437. package/dist/client-rust/nullable.rs +0 -17
  438. package/dist/client-rust/realtime.rs +0 -702
  439. package/dist/client-rust/result.rs +0 -22
  440. package/dist/client-rust/runtime.rs +0 -980
  441. package/dist/client-rust/runtime_sync.rs +0 -484
  442. package/dist/client-rust/sse.rs +0 -188
  443. package/dist/client-rust/ws.rs +0 -167
  444. package/dist/codegen-go-cli.d.ts +0 -22
  445. package/dist/codegen-go-cli.d.ts.map +0 -1
  446. package/dist/codegen-go-cli.js +0 -964
  447. package/dist/codegen-go-cli.js.map +0 -1
  448. package/dist/codegen-go.d.ts +0 -41
  449. package/dist/codegen-go.d.ts.map +0 -1
  450. package/dist/codegen-go.js +0 -872
  451. package/dist/codegen-go.js.map +0 -1
  452. package/dist/codegen-hash.d.ts +0 -3
  453. package/dist/codegen-hash.d.ts.map +0 -1
  454. package/dist/codegen-hash.js +0 -9
  455. package/dist/codegen-hash.js.map +0 -1
  456. package/dist/codegen-ir.d.ts +0 -190
  457. package/dist/codegen-ir.d.ts.map +0 -1
  458. package/dist/codegen-ir.js +0 -661
  459. package/dist/codegen-ir.js.map +0 -1
  460. package/dist/codegen-lang.d.ts +0 -65
  461. package/dist/codegen-lang.d.ts.map +0 -1
  462. package/dist/codegen-lang.js +0 -526
  463. package/dist/codegen-lang.js.map +0 -1
  464. package/dist/codegen-load.d.ts +0 -31
  465. package/dist/codegen-load.d.ts.map +0 -1
  466. package/dist/codegen-load.js +0 -138
  467. package/dist/codegen-load.js.map +0 -1
  468. package/dist/codegen-loaders.d.ts +0 -12
  469. package/dist/codegen-loaders.d.ts.map +0 -1
  470. package/dist/codegen-loaders.js +0 -55
  471. package/dist/codegen-loaders.js.map +0 -1
  472. package/dist/codegen-mcp.d.ts +0 -13
  473. package/dist/codegen-mcp.d.ts.map +0 -1
  474. package/dist/codegen-mcp.js +0 -368
  475. package/dist/codegen-mcp.js.map +0 -1
  476. package/dist/codegen-python.d.ts +0 -33
  477. package/dist/codegen-python.d.ts.map +0 -1
  478. package/dist/codegen-python.js +0 -828
  479. package/dist/codegen-python.js.map +0 -1
  480. package/dist/codegen-route-tree-intern.d.ts +0 -40
  481. package/dist/codegen-route-tree-intern.d.ts.map +0 -1
  482. package/dist/codegen-route-tree-intern.js +0 -221
  483. package/dist/codegen-route-tree-intern.js.map +0 -1
  484. package/dist/codegen-rust.d.ts +0 -18
  485. package/dist/codegen-rust.d.ts.map +0 -1
  486. package/dist/codegen-rust.js +0 -1293
  487. package/dist/codegen-rust.js.map +0 -1
  488. package/dist/codegen-sanitize.d.ts +0 -3
  489. package/dist/codegen-sanitize.d.ts.map +0 -1
  490. package/dist/codegen-sanitize.js +0 -56
  491. package/dist/codegen-sanitize.js.map +0 -1
  492. package/dist/codegen-schema-naming.d.ts +0 -27
  493. package/dist/codegen-schema-naming.d.ts.map +0 -1
  494. package/dist/codegen-schema-naming.js +0 -150
  495. package/dist/codegen-schema-naming.js.map +0 -1
  496. package/dist/codegen-sdk-model.d.ts +0 -71
  497. package/dist/codegen-sdk-model.d.ts.map +0 -1
  498. package/dist/codegen-sdk-model.js +0 -179
  499. package/dist/codegen-sdk-model.js.map +0 -1
  500. package/dist/codegen.d.ts +0 -187
  501. package/dist/codegen.d.ts.map +0 -1
  502. package/dist/codegen.js +0 -4619
  503. package/dist/codegen.js.map +0 -1
  504. package/dist/context.d.ts +0 -86
  505. package/dist/context.d.ts.map +0 -1
  506. package/dist/context.js +0 -242
  507. package/dist/context.js.map +0 -1
  508. package/dist/cookie-sign.d.ts +0 -17
  509. package/dist/cookie-sign.d.ts.map +0 -1
  510. package/dist/cookie-sign.js +0 -104
  511. package/dist/cookie-sign.js.map +0 -1
  512. package/dist/cookie.d.ts +0 -24
  513. package/dist/cookie.d.ts.map +0 -1
  514. package/dist/cookie.js +0 -138
  515. package/dist/cookie.js.map +0 -1
  516. package/dist/cors.d.ts +0 -14
  517. package/dist/cors.d.ts.map +0 -1
  518. package/dist/cors.js +0 -87
  519. package/dist/cors.js.map +0 -1
  520. package/dist/crypto.d.ts +0 -7
  521. package/dist/crypto.d.ts.map +0 -1
  522. package/dist/crypto.js +0 -38
  523. package/dist/crypto.js.map +0 -1
  524. package/dist/csrf.d.ts +0 -28
  525. package/dist/csrf.d.ts.map +0 -1
  526. package/dist/csrf.js +0 -79
  527. package/dist/csrf.js.map +0 -1
  528. package/dist/curl-logger.d.ts +0 -44
  529. package/dist/curl-logger.d.ts.map +0 -1
  530. package/dist/curl-logger.js +0 -199
  531. package/dist/curl-logger.js.map +0 -1
  532. package/dist/detect-runtime.d.ts +0 -16
  533. package/dist/detect-runtime.d.ts.map +0 -1
  534. package/dist/detect-runtime.js +0 -13
  535. package/dist/detect-runtime.js.map +0 -1
  536. package/dist/dict.d.ts +0 -11
  537. package/dist/dict.d.ts.map +0 -1
  538. package/dist/dict.js +0 -13
  539. package/dist/dict.js.map +0 -1
  540. package/dist/error.d.ts +0 -21
  541. package/dist/error.d.ts.map +0 -1
  542. package/dist/error.js +0 -44
  543. package/dist/error.js.map +0 -1
  544. package/dist/errors.d.ts +0 -40
  545. package/dist/errors.d.ts.map +0 -1
  546. package/dist/errors.js +0 -39
  547. package/dist/errors.js.map +0 -1
  548. package/dist/etag.d.ts +0 -11
  549. package/dist/etag.d.ts.map +0 -1
  550. package/dist/etag.js +0 -82
  551. package/dist/etag.js.map +0 -1
  552. package/dist/feature-detect.d.ts +0 -25
  553. package/dist/feature-detect.d.ts.map +0 -1
  554. package/dist/feature-detect.js +0 -144
  555. package/dist/feature-detect.js.map +0 -1
  556. package/dist/feature-load.d.ts +0 -3
  557. package/dist/feature-load.d.ts.map +0 -1
  558. package/dist/feature-load.js +0 -36
  559. package/dist/feature-load.js.map +0 -1
  560. package/dist/feature-slots.d.ts +0 -44
  561. package/dist/feature-slots.d.ts.map +0 -1
  562. package/dist/feature-slots.js +0 -48
  563. package/dist/feature-slots.js.map +0 -1
  564. package/dist/fetch-request.d.ts +0 -10
  565. package/dist/fetch-request.d.ts.map +0 -1
  566. package/dist/fetch-request.js +0 -13
  567. package/dist/fetch-request.js.map +0 -1
  568. package/dist/gen-process.d.ts +0 -15
  569. package/dist/gen-process.d.ts.map +0 -1
  570. package/dist/gen-process.js +0 -43
  571. package/dist/gen-process.js.map +0 -1
  572. package/dist/gen-write.d.ts +0 -19
  573. package/dist/gen-write.d.ts.map +0 -1
  574. package/dist/gen-write.js +0 -120
  575. package/dist/gen-write.js.map +0 -1
  576. package/dist/glob.d.ts +0 -21
  577. package/dist/glob.d.ts.map +0 -1
  578. package/dist/glob.js +0 -115
  579. package/dist/glob.js.map +0 -1
  580. package/dist/go-type-emitter.d.ts +0 -47
  581. package/dist/go-type-emitter.d.ts.map +0 -1
  582. package/dist/go-type-emitter.js +0 -594
  583. package/dist/go-type-emitter.js.map +0 -1
  584. package/dist/honey-response.d.ts +0 -82
  585. package/dist/honey-response.d.ts.map +0 -1
  586. package/dist/honey-response.js +0 -338
  587. package/dist/honey-response.js.map +0 -1
  588. package/dist/i18n-slot.d.ts +0 -15
  589. package/dist/i18n-slot.d.ts.map +0 -1
  590. package/dist/i18n-slot.js +0 -14
  591. package/dist/i18n-slot.js.map +0 -1
  592. package/dist/i18n.d.ts +0 -29
  593. package/dist/i18n.d.ts.map +0 -1
  594. package/dist/i18n.js +0 -250
  595. package/dist/i18n.js.map +0 -1
  596. package/dist/index.d.ts.map +0 -1
  597. package/dist/index.js.map +0 -1
  598. package/dist/init.d.ts +0 -5
  599. package/dist/init.d.ts.map +0 -1
  600. package/dist/init.js +0 -140
  601. package/dist/init.js.map +0 -1
  602. package/dist/input.d.ts +0 -6
  603. package/dist/input.d.ts.map +0 -1
  604. package/dist/input.js +0 -4
  605. package/dist/input.js.map +0 -1
  606. package/dist/invalidate-check.d.ts +0 -61
  607. package/dist/invalidate-check.d.ts.map +0 -1
  608. package/dist/invalidate-check.js +0 -163
  609. package/dist/invalidate-check.js.map +0 -1
  610. package/dist/invoke-user.d.ts +0 -35
  611. package/dist/invoke-user.d.ts.map +0 -1
  612. package/dist/invoke-user.js +0 -73
  613. package/dist/invoke-user.js.map +0 -1
  614. package/dist/ip-restrict.d.ts +0 -24
  615. package/dist/ip-restrict.d.ts.map +0 -1
  616. package/dist/ip-restrict.js +0 -60
  617. package/dist/ip-restrict.js.map +0 -1
  618. package/dist/ip.d.ts +0 -39
  619. package/dist/ip.d.ts.map +0 -1
  620. package/dist/ip.js +0 -209
  621. package/dist/ip.js.map +0 -1
  622. package/dist/logger.d.ts +0 -45
  623. package/dist/logger.d.ts.map +0 -1
  624. package/dist/logger.js +0 -113
  625. package/dist/logger.js.map +0 -1
  626. package/dist/media-type.d.ts +0 -30
  627. package/dist/media-type.d.ts.map +0 -1
  628. package/dist/media-type.js +0 -97
  629. package/dist/media-type.js.map +0 -1
  630. package/dist/meta-spec-merge.d.ts +0 -32
  631. package/dist/meta-spec-merge.d.ts.map +0 -1
  632. package/dist/meta-spec-merge.js +0 -68
  633. package/dist/meta-spec-merge.js.map +0 -1
  634. package/dist/meta-spec.d.ts +0 -94
  635. package/dist/meta-spec.d.ts.map +0 -1
  636. package/dist/meta-spec.js +0 -535
  637. package/dist/meta-spec.js.map +0 -1
  638. package/dist/middleware.d.ts +0 -77
  639. package/dist/middleware.d.ts.map +0 -1
  640. package/dist/middleware.js +0 -253
  641. package/dist/middleware.js.map +0 -1
  642. package/dist/node-request.d.ts +0 -104
  643. package/dist/node-request.d.ts.map +0 -1
  644. package/dist/node-request.js +0 -407
  645. package/dist/node-request.js.map +0 -1
  646. package/dist/node.d.ts +0 -30
  647. package/dist/node.d.ts.map +0 -1
  648. package/dist/node.js +0 -396
  649. package/dist/node.js.map +0 -1
  650. package/dist/openapi/collect.d.ts.map +0 -1
  651. package/dist/openapi/collect.js.map +0 -1
  652. package/dist/openapi/docs-page.d.ts.map +0 -1
  653. package/dist/openapi/docs-page.js.map +0 -1
  654. package/dist/openapi/document.d.ts.map +0 -1
  655. package/dist/openapi/document.js.map +0 -1
  656. package/dist/openapi/json-schema-slot.d.ts +0 -12
  657. package/dist/openapi/json-schema-slot.d.ts.map +0 -1
  658. package/dist/openapi/json-schema-slot.js +0 -38
  659. package/dist/openapi/json-schema-slot.js.map +0 -1
  660. package/dist/openapi/register.d.ts.map +0 -1
  661. package/dist/openapi/register.js.map +0 -1
  662. package/dist/openapi/scalar.d.ts.map +0 -1
  663. package/dist/openapi/scalar.js.map +0 -1
  664. package/dist/openapi/serve.d.ts.map +0 -1
  665. package/dist/openapi/serve.js.map +0 -1
  666. package/dist/openapi/spec-factory.d.ts +0 -65
  667. package/dist/openapi/spec-factory.d.ts.map +0 -1
  668. package/dist/openapi/spec-factory.js +0 -52
  669. package/dist/openapi/spec-factory.js.map +0 -1
  670. package/dist/openapi/spec.d.ts +0 -29
  671. package/dist/openapi/spec.d.ts.map +0 -1
  672. package/dist/openapi/spec.js +0 -50
  673. package/dist/openapi/spec.js.map +0 -1
  674. package/dist/openapi/swagger.d.ts.map +0 -1
  675. package/dist/openapi/swagger.js.map +0 -1
  676. package/dist/pattern.d.ts +0 -71
  677. package/dist/pattern.d.ts.map +0 -1
  678. package/dist/pattern.js +0 -239
  679. package/dist/pattern.js.map +0 -1
  680. package/dist/peer.d.ts +0 -17
  681. package/dist/peer.d.ts.map +0 -1
  682. package/dist/peer.js +0 -50
  683. package/dist/peer.js.map +0 -1
  684. package/dist/plugin.d.ts +0 -228
  685. package/dist/plugin.d.ts.map +0 -1
  686. package/dist/plugin.js +0 -666
  687. package/dist/plugin.js.map +0 -1
  688. package/dist/powered-by.d.ts +0 -7
  689. package/dist/powered-by.d.ts.map +0 -1
  690. package/dist/powered-by.js +0 -11
  691. package/dist/powered-by.js.map +0 -1
  692. package/dist/pretty-json.d.ts +0 -10
  693. package/dist/pretty-json.d.ts.map +0 -1
  694. package/dist/pretty-json.js +0 -47
  695. package/dist/pretty-json.js.map +0 -1
  696. package/dist/producer-stream.d.ts +0 -47
  697. package/dist/producer-stream.d.ts.map +0 -1
  698. package/dist/producer-stream.js +0 -267
  699. package/dist/producer-stream.js.map +0 -1
  700. package/dist/proxy.d.ts +0 -90
  701. package/dist/proxy.d.ts.map +0 -1
  702. package/dist/proxy.js +0 -274
  703. package/dist/proxy.js.map +0 -1
  704. package/dist/python-type-emitter.d.ts +0 -24
  705. package/dist/python-type-emitter.d.ts.map +0 -1
  706. package/dist/python-type-emitter.js +0 -157
  707. package/dist/python-type-emitter.js.map +0 -1
  708. package/dist/realtime/bus.d.ts.map +0 -1
  709. package/dist/realtime/bus.js.map +0 -1
  710. package/dist/realtime/register.d.ts +0 -3
  711. package/dist/realtime/register.d.ts.map +0 -1
  712. package/dist/realtime/register.js +0 -10
  713. package/dist/realtime/register.js.map +0 -1
  714. package/dist/realtime/route.d.ts.map +0 -1
  715. package/dist/realtime/route.js.map +0 -1
  716. package/dist/realtime/server.d.ts.map +0 -1
  717. package/dist/realtime/server.js.map +0 -1
  718. package/dist/request-id.d.ts +0 -19
  719. package/dist/request-id.d.ts.map +0 -1
  720. package/dist/request-id.js +0 -16
  721. package/dist/request-id.js.map +0 -1
  722. package/dist/request-limits.d.ts +0 -3
  723. package/dist/request-limits.d.ts.map +0 -1
  724. package/dist/request-limits.js +0 -3
  725. package/dist/request-limits.js.map +0 -1
  726. package/dist/request-path.d.ts +0 -33
  727. package/dist/request-path.d.ts.map +0 -1
  728. package/dist/request-path.js +0 -178
  729. package/dist/request-path.js.map +0 -1
  730. package/dist/request-to-curl.d.ts +0 -15
  731. package/dist/request-to-curl.d.ts.map +0 -1
  732. package/dist/request-to-curl.js +0 -48
  733. package/dist/request-to-curl.js.map +0 -1
  734. package/dist/response.d.ts +0 -86
  735. package/dist/response.d.ts.map +0 -1
  736. package/dist/response.js +0 -313
  737. package/dist/response.js.map +0 -1
  738. package/dist/rust-type-emitter.d.ts +0 -44
  739. package/dist/rust-type-emitter.d.ts.map +0 -1
  740. package/dist/rust-type-emitter.js +0 -463
  741. package/dist/rust-type-emitter.js.map +0 -1
  742. package/dist/secure-headers.d.ts +0 -16
  743. package/dist/secure-headers.d.ts.map +0 -1
  744. package/dist/secure-headers.js +0 -53
  745. package/dist/secure-headers.js.map +0 -1
  746. package/dist/serve-register.d.ts +0 -6
  747. package/dist/serve-register.d.ts.map +0 -1
  748. package/dist/serve-register.js +0 -9
  749. package/dist/serve-register.js.map +0 -1
  750. package/dist/serve-slot.d.ts +0 -9
  751. package/dist/serve-slot.d.ts.map +0 -1
  752. package/dist/serve-slot.js +0 -52
  753. package/dist/serve-slot.js.map +0 -1
  754. package/dist/serve.d.ts +0 -38
  755. package/dist/serve.d.ts.map +0 -1
  756. package/dist/serve.js +0 -157
  757. package/dist/serve.js.map +0 -1
  758. package/dist/server-timing.d.ts +0 -9
  759. package/dist/server-timing.d.ts.map +0 -1
  760. package/dist/server-timing.js +0 -51
  761. package/dist/server-timing.js.map +0 -1
  762. package/dist/static.d.ts +0 -21
  763. package/dist/static.d.ts.map +0 -1
  764. package/dist/static.js +0 -102
  765. package/dist/static.js.map +0 -1
  766. package/dist/telemetry/otel.d.ts.map +0 -1
  767. package/dist/telemetry/otel.js.map +0 -1
  768. package/dist/testing.d.ts +0 -36
  769. package/dist/testing.d.ts.map +0 -1
  770. package/dist/testing.js +0 -124
  771. package/dist/testing.js.map +0 -1
  772. package/dist/timeout.d.ts +0 -13
  773. package/dist/timeout.d.ts.map +0 -1
  774. package/dist/timeout.js +0 -36
  775. package/dist/timeout.js.map +0 -1
  776. package/dist/tree.d.ts +0 -197
  777. package/dist/tree.d.ts.map +0 -1
  778. package/dist/tree.js +0 -437
  779. package/dist/tree.js.map +0 -1
  780. package/dist/trust.d.ts +0 -21
  781. package/dist/trust.d.ts.map +0 -1
  782. package/dist/trust.js +0 -100
  783. package/dist/trust.js.map +0 -1
  784. package/dist/ts-type-emitter.d.ts +0 -8
  785. package/dist/ts-type-emitter.d.ts.map +0 -1
  786. package/dist/ts-type-emitter.js +0 -150
  787. package/dist/ts-type-emitter.js.map +0 -1
  788. package/dist/type-emitter.d.ts +0 -36
  789. package/dist/type-emitter.d.ts.map +0 -1
  790. package/dist/type-emitter.js +0 -729
  791. package/dist/type-emitter.js.map +0 -1
  792. package/dist/type-extractor.d.ts +0 -43
  793. package/dist/type-extractor.d.ts.map +0 -1
  794. package/dist/type-extractor.js +0 -819
  795. package/dist/type-extractor.js.map +0 -1
  796. package/dist/types.d.ts +0 -467
  797. package/dist/types.d.ts.map +0 -1
  798. package/dist/types.js +0 -96
  799. package/dist/types.js.map +0 -1
  800. package/dist/validation.d.ts +0 -31
  801. package/dist/validation.d.ts.map +0 -1
  802. package/dist/validation.js +0 -335
  803. package/dist/validation.js.map +0 -1
  804. package/dist/with-headers.d.ts +0 -15
  805. package/dist/with-headers.d.ts.map +0 -1
  806. package/dist/with-headers.js +0 -45
  807. package/dist/with-headers.js.map +0 -1
  808. package/dist/ws/bun.d.ts.map +0 -1
  809. package/dist/ws/bun.js.map +0 -1
  810. package/dist/ws/cloudflare.d.ts.map +0 -1
  811. package/dist/ws/cloudflare.js.map +0 -1
  812. package/dist/ws/deno.d.ts +0 -13
  813. package/dist/ws/deno.d.ts.map +0 -1
  814. package/dist/ws/deno.js +0 -133
  815. package/dist/ws/deno.js.map +0 -1
  816. package/dist/ws/node.d.ts.map +0 -1
  817. package/dist/ws/node.js.map +0 -1
  818. package/dist/ws/session.d.ts.map +0 -1
  819. package/dist/ws/session.js.map +0 -1
  820. package/dist/ws/shared.d.ts.map +0 -1
  821. package/dist/ws/shared.js.map +0 -1
  822. package/dist/ws-origin.d.ts +0 -20
  823. package/dist/ws-origin.d.ts.map +0 -1
  824. package/dist/ws-origin.js +0 -41
  825. package/dist/ws-origin.js.map +0 -1
  826. package/dist/yaml.d.ts +0 -18
  827. package/dist/yaml.d.ts.map +0 -1
  828. package/dist/yaml.js +0 -101
  829. package/dist/yaml.js.map +0 -1
  830. package/docs/api-ref/go.md +0 -399
  831. package/docs/api-ref/python.md +0 -399
  832. package/docs/api-ref/rust.md +0 -399
  833. package/docs/api-ref/typescript.md +0 -399
  834. package/docs/invalidate-spec.md +0 -333
  835. package/docs/meta-spec.md +0 -555
  836. package/docs/packaging.md +0 -104
  837. package/docs/regression-matrix/README.md +0 -32
  838. package/docs/regression-matrix/review.md +0 -44
  839. package/docs/regression-matrix/ws1-3.md +0 -97
  840. package/docs/regression-matrix/ws4-8.md +0 -107
  841. package/docs/regression-matrix/ws9-12.md +0 -266
  842. package/docs/sdk.md +0 -798
  843. package/src/accepts.ts +0 -136
  844. package/src/body-kind.ts +0 -67
  845. package/src/body-limit.ts +0 -152
  846. package/src/build/index.ts +0 -217
  847. package/src/cli-args.ts +0 -123
  848. package/src/cli-go/auth.go +0 -26
  849. package/src/cli-go/config.go +0 -192
  850. package/src/cli-go/errors.go +0 -75
  851. package/src/cli-go/multipart.go +0 -79
  852. package/src/cli-go/output.go +0 -163
  853. package/src/cli-go/root.go +0 -30
  854. package/src/cli-go/stream.go +0 -88
  855. package/src/cli-go/version.go +0 -5
  856. package/src/cli.ts +0 -209
  857. package/src/client/defaults.ts +0 -47
  858. package/src/client/error.ts +0 -82
  859. package/src/client/http.ts +0 -737
  860. package/src/client/index.ts +0 -157
  861. package/src/client/path.ts +0 -169
  862. package/src/client/redirect-policy.ts +0 -19
  863. package/src/client/sdk.ts +0 -351
  864. package/src/client/sse.ts +0 -128
  865. package/src/client/types.ts +0 -206
  866. package/src/client/ws.ts +0 -149
  867. package/src/client-go/errors.go +0 -236
  868. package/src/client-go/export.go +0 -44
  869. package/src/client-go/invalidation.go +0 -371
  870. package/src/client-go/nullable.go +0 -62
  871. package/src/client-go/realtime.go +0 -354
  872. package/src/client-go/result.go +0 -20
  873. package/src/client-go/runtime.go +0 -975
  874. package/src/client-go/sse.go +0 -159
  875. package/src/client-go/transport.go +0 -495
  876. package/src/client-go/ws.go +0 -128
  877. package/src/client-info.ts +0 -79
  878. package/src/client-mcp/README.md +0 -10
  879. package/src/client-mcp/server.ts +0 -221
  880. package/src/client-mcp/types.ts +0 -19
  881. package/src/client-python/_errors.py +0 -115
  882. package/src/client-python/_invalidation.py +0 -494
  883. package/src/client-python/_realtime.py +0 -179
  884. package/src/client-python/_runtime.py +0 -860
  885. package/src/client-python/_sse.py +0 -155
  886. package/src/client-python/_transport.py +0 -366
  887. package/src/client-python/_ws.py +0 -159
  888. package/src/client-python/py.typed +0 -0
  889. package/src/client-rust/errors.rs +0 -220
  890. package/src/client-rust/invalidation.rs +0 -412
  891. package/src/client-rust/invalidation_sync.rs +0 -93
  892. package/src/client-rust/nullable.rs +0 -17
  893. package/src/client-rust/realtime.rs +0 -702
  894. package/src/client-rust/result.rs +0 -22
  895. package/src/client-rust/runtime.rs +0 -980
  896. package/src/client-rust/runtime_sync.rs +0 -484
  897. package/src/client-rust/sse.rs +0 -188
  898. package/src/client-rust/ws.rs +0 -167
  899. package/src/codegen-go-cli.ts +0 -1066
  900. package/src/codegen-go.ts +0 -970
  901. package/src/codegen-hash.ts +0 -8
  902. package/src/codegen-ir.ts +0 -812
  903. package/src/codegen-lang.ts +0 -517
  904. package/src/codegen-load.ts +0 -150
  905. package/src/codegen-loaders.ts +0 -50
  906. package/src/codegen-mcp.ts +0 -445
  907. package/src/codegen-python.ts +0 -916
  908. package/src/codegen-route-tree-intern.ts +0 -198
  909. package/src/codegen-rust.ts +0 -1402
  910. package/src/codegen-sanitize.ts +0 -57
  911. package/src/codegen-schema-naming.ts +0 -165
  912. package/src/codegen-sdk-model.ts +0 -228
  913. package/src/codegen.ts +0 -5089
  914. package/src/context.ts +0 -325
  915. package/src/cookie-sign.ts +0 -119
  916. package/src/cookie.ts +0 -143
  917. package/src/cors.ts +0 -95
  918. package/src/crypto.ts +0 -38
  919. package/src/csrf.ts +0 -86
  920. package/src/curl-logger.ts +0 -258
  921. package/src/detect-runtime.ts +0 -17
  922. package/src/dict.ts +0 -12
  923. package/src/error.ts +0 -55
  924. package/src/errors.ts +0 -85
  925. package/src/etag.ts +0 -97
  926. package/src/feature-detect.ts +0 -147
  927. package/src/feature-load.ts +0 -23
  928. package/src/feature-slots.ts +0 -70
  929. package/src/fetch-request.ts +0 -13
  930. package/src/gen-process.ts +0 -42
  931. package/src/gen-write.ts +0 -127
  932. package/src/glob.ts +0 -109
  933. package/src/go-type-emitter.ts +0 -660
  934. package/src/honey-response.ts +0 -379
  935. package/src/i18n-slot.ts +0 -30
  936. package/src/i18n.ts +0 -300
  937. package/src/index.ts +0 -3829
  938. package/src/init.ts +0 -161
  939. package/src/input.ts +0 -8
  940. package/src/invalidate-check.ts +0 -205
  941. package/src/invoke-user.ts +0 -95
  942. package/src/ip-restrict.ts +0 -79
  943. package/src/ip.ts +0 -194
  944. package/src/logger.ts +0 -178
  945. package/src/media-type.ts +0 -104
  946. package/src/meta-spec-merge.ts +0 -80
  947. package/src/meta-spec.ts +0 -718
  948. package/src/middleware.ts +0 -331
  949. package/src/node-request.ts +0 -431
  950. package/src/node.ts +0 -454
  951. package/src/openapi/collect.ts +0 -50
  952. package/src/openapi/docs-page.ts +0 -89
  953. package/src/openapi/document.ts +0 -902
  954. package/src/openapi/json-schema-slot.ts +0 -53
  955. package/src/openapi/register.ts +0 -23
  956. package/src/openapi/scalar.ts +0 -34
  957. package/src/openapi/serve.ts +0 -39
  958. package/src/openapi/spec-factory.ts +0 -100
  959. package/src/openapi/spec.ts +0 -74
  960. package/src/openapi/swagger.ts +0 -35
  961. package/src/pattern.ts +0 -245
  962. package/src/peer.ts +0 -53
  963. package/src/plugin.ts +0 -864
  964. package/src/powered-by.ts +0 -18
  965. package/src/pretty-json.ts +0 -56
  966. package/src/producer-stream.ts +0 -296
  967. package/src/proxy.ts +0 -370
  968. package/src/python-type-emitter.ts +0 -181
  969. package/src/realtime/bus.ts +0 -140
  970. package/src/realtime/register.ts +0 -13
  971. package/src/realtime/route.ts +0 -153
  972. package/src/realtime/server.ts +0 -298
  973. package/src/request-id.ts +0 -32
  974. package/src/request-limits.ts +0 -2
  975. package/src/request-path.ts +0 -165
  976. package/src/request-to-curl.ts +0 -52
  977. package/src/response.ts +0 -411
  978. package/src/rust-type-emitter.ts +0 -548
  979. package/src/secure-headers.ts +0 -74
  980. package/src/serve-register.ts +0 -12
  981. package/src/serve-slot.ts +0 -58
  982. package/src/serve.ts +0 -220
  983. package/src/server-timing.ts +0 -71
  984. package/src/static.ts +0 -112
  985. package/src/telemetry/otel.ts +0 -156
  986. package/src/testing.ts +0 -167
  987. package/src/timeout.ts +0 -45
  988. package/src/tree.ts +0 -558
  989. package/src/trust.ts +0 -117
  990. package/src/ts-type-emitter.ts +0 -168
  991. package/src/type-emitter.ts +0 -760
  992. package/src/type-extractor.ts +0 -855
  993. package/src/types.ts +0 -756
  994. package/src/validation.ts +0 -413
  995. package/src/with-headers.ts +0 -45
  996. package/src/ws/bun.ts +0 -120
  997. package/src/ws/cloudflare.ts +0 -192
  998. package/src/ws/deno.ts +0 -188
  999. package/src/ws/node.ts +0 -240
  1000. package/src/ws/session.ts +0 -73
  1001. package/src/ws/shared.ts +0 -140
  1002. package/src/ws-origin.ts +0 -53
  1003. package/src/yaml.ts +0 -103
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The supported type the request's Accept header prefers, as `supported` spells it; `null` when
3
+ * the client accepts none of them. No Accept header, or one with no usable range, takes the first.
4
+ */
5
+ export declare function accepts<const T extends string>(req: Request, supported: readonly T[]): T | null;
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Content negotiation over the Accept header (RFC 9110 §12.5.1): which of the types a handler can
3
+ * answer with the client prefers. Each supported type takes the weight of the most specific range
4
+ * that matches it, so `text/html;q=0, *\/*` excludes `text/html`; equal weights go to the server's
5
+ * order. A plain function: nothing is registered, nothing is cached.
6
+ */
7
+ import { parseMediaType } from "../response/media-type.js";
8
+ /* RFC 9110 §12.4.2 qvalue, lenient on the digit count and a missing leading zero */
9
+ const QVALUE = /^(?:0(?:\.\d*)?|1(?:\.0*)?|\.\d+)$/;
10
+ /** A weight, or 0 for one out of range or malformed: such a range is unusable, never q=1. */
11
+ function weight(raw) {
12
+ return QVALUE.test(raw) ? Number(raw) : 0;
13
+ }
14
+ function unquote(value) {
15
+ return value.length >= 2 && value.startsWith('"') && value.endsWith('"') ? value.slice(1, -1) : value;
16
+ }
17
+ /** One comma-separated part of the header, or `null` when it is no media range (`*\/html` included). */
18
+ function parseRange(part) {
19
+ const segments = part.split(";");
20
+ const head = segments[0].trim().toLowerCase();
21
+ const slash = head.indexOf("/");
22
+ if (slash <= 0 || slash === head.length - 1)
23
+ return null;
24
+ const type = head.slice(0, slash);
25
+ const subtype = head.slice(slash + 1);
26
+ if (type === "*" && subtype !== "*")
27
+ return null;
28
+ const params = new Map();
29
+ let q = 1;
30
+ for (const segment of segments.slice(1)) {
31
+ const eq = segment.indexOf("=");
32
+ if (eq === -1)
33
+ continue;
34
+ const name = segment.slice(0, eq).trim().toLowerCase();
35
+ const value = segment.slice(eq + 1).trim();
36
+ /* what follows q is an accept extension, never a media-type parameter */
37
+ if (name === "q") {
38
+ q = weight(value);
39
+ break;
40
+ }
41
+ params.set(name, unquote(value));
42
+ }
43
+ return { params, q, subtype, type };
44
+ }
45
+ function parseAccept(header) {
46
+ const ranges = [];
47
+ for (const part of header.split(",")) {
48
+ const range = part.trim().length === 0 ? null : parseRange(part);
49
+ if (range !== null)
50
+ ranges.push(range);
51
+ }
52
+ return ranges;
53
+ }
54
+ /** How specifically `range` matches the supported type: 0 not at all, higher the more specific. */
55
+ function specificity(range, type, subtype, params) {
56
+ if (range.type === "*")
57
+ return 1;
58
+ if (range.type !== type)
59
+ return 0;
60
+ if (range.subtype === "*")
61
+ return 2;
62
+ if (range.subtype !== subtype)
63
+ return 0;
64
+ for (const [name, value] of range.params) {
65
+ if (params[name] !== value)
66
+ return 0;
67
+ }
68
+ return 3 + range.params.size;
69
+ }
70
+ /** The weight the client gives `supported`: that of its most specific matching range, or -1 for none. */
71
+ function weightOf(ranges, supported) {
72
+ const media = parseMediaType(supported);
73
+ if (media === null)
74
+ return -1;
75
+ let best = 0;
76
+ let q = -1;
77
+ for (const range of ranges) {
78
+ const spec = specificity(range, media.type, media.subtype, media.params);
79
+ if (spec > best) {
80
+ best = spec;
81
+ q = range.q;
82
+ }
83
+ }
84
+ return q;
85
+ }
86
+ /**
87
+ * The supported type the request's Accept header prefers, as `supported` spells it; `null` when
88
+ * the client accepts none of them. No Accept header, or one with no usable range, takes the first.
89
+ */
90
+ export function accepts(req, supported) {
91
+ const header = req.headers.get("accept");
92
+ const ranges = header === null ? [] : parseAccept(header);
93
+ if (ranges.length === 0)
94
+ return supported[0] ?? null;
95
+ let match = null;
96
+ let top = 0;
97
+ for (const type of supported) {
98
+ const q = weightOf(ranges, type);
99
+ if (q > top) {
100
+ top = q;
101
+ match = type;
102
+ }
103
+ }
104
+ return match;
105
+ }
@@ -0,0 +1,20 @@
1
+ /** The media types a route takes as a binary body: one, or a list; each `type/subtype` or `type/*`. */
2
+ export type BinaryTypes = `${string}/${string}` | readonly `${string}/${string}`[];
3
+ /** The body as ctx.input.binary carries it. */
4
+ export type BinaryBody<T extends string = string> = {
5
+ readonly bytes: Uint8Array<ArrayBuffer>;
6
+ readonly type: T;
7
+ };
8
+ /** One declared type: an exact essence, or a `type/*` range. */
9
+ type Range = {
10
+ readonly essence: string;
11
+ } | {
12
+ readonly type: string;
13
+ };
14
+ /** The declared types as ranges; one that is no media type or range throws, naming the route. */
15
+ export declare function binaryRanges(declared: BinaryTypes, method: string, path: string): readonly Range[];
16
+ /** The request's essence when a declared range takes it; anything else, none included, is a 415. */
17
+ export declare function binaryType(ranges: readonly Range[], contentType: string | null): string;
18
+ /** The body read once as bytes, with the media type it was sent as. */
19
+ export declare function binaryInput(req: Request, type: string): Promise<BinaryBody>;
20
+ export {};
@@ -0,0 +1,40 @@
1
+ /**
2
+ * A raw body as `.input({ binary })` declares it (A1): bytes of a declared media type, an upload
3
+ * of an image or a file. The declared types are exact essences or `type/*` ranges; a request
4
+ * whose media type matches none answers 415 before its body is read, and the one that matched is
5
+ * handed on beside the bytes. Size is bodyLimit's or the server's cap, not a knob of its own.
6
+ */
7
+ import { EK, HoneyError } from "../errors/error.js";
8
+ import { parseMediaType } from "../response/media-type.js";
9
+ /** A declared type as a range, or `null` when it is neither `type/subtype` nor `type/*` (no parameters). */
10
+ function rangeOf(declared) {
11
+ const text = declared.trim().toLowerCase();
12
+ if (text.includes(";"))
13
+ return null;
14
+ if (text.endsWith("/*")) {
15
+ const mt = parseMediaType(`${text.slice(0, -2)}/x`);
16
+ return mt === null || mt.type === "*" ? null : { type: mt.type };
17
+ }
18
+ const mt = parseMediaType(text);
19
+ return mt === null || mt.type === "*" ? null : { essence: mt.essence };
20
+ }
21
+ /** The declared types as ranges; one that is no media type or range throws, naming the route. */
22
+ export function binaryRanges(declared, method, path) {
23
+ return (typeof declared === "string" ? [declared] : declared).map((type) => {
24
+ const range = rangeOf(type);
25
+ if (range !== null)
26
+ return range;
27
+ throw new Error(`${method} ${path} declares binary type ${JSON.stringify(type)}: a binary type is type/subtype or type/*.`);
28
+ });
29
+ }
30
+ /** The request's essence when a declared range takes it; anything else, none included, is a 415. */
31
+ export function binaryType(ranges, contentType) {
32
+ const mt = parseMediaType(contentType);
33
+ if (mt !== null && ranges.some((r) => ("essence" in r ? r.essence === mt.essence : r.type === mt.type)))
34
+ return mt.essence;
35
+ throw new HoneyError({ errorKey: EK.unsupported_media_type, status: "unsupported_media_type" });
36
+ }
37
+ /** The body read once as bytes, with the media type it was sent as. */
38
+ export async function binaryInput(req, type) {
39
+ return { bytes: new Uint8Array(await req.arrayBuffer()), type };
40
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `buffered`: the whole body is in memory, or its length is declared, so reading it is bounded.
3
+ * `stream`: anything else that has a body; a middleware must never buffer it. `empty`: no body.
4
+ */
5
+ export type BodyKind = "buffered" | "empty" | "stream";
6
+ /** `response`'s body kind; its content type is never consulted (SSE and NDJSON carry one). */
7
+ export declare function bodyKind(response: Response): BodyKind;
8
+ /** Cancel `response`'s body, unread, unless it is one honey kept: an answer about to go out without it. */
9
+ export declare function discardBody(response: Response): void;
10
+ /**
11
+ * The answer to a HEAD request: GET's status and headers, no body. A body honey built keeps its
12
+ * length in `content-length`, so HEAD states what GET would send; any other body is cancelled
13
+ * unread, so a producer never starts (or stops if it already did).
14
+ */
15
+ export declare function headResponse(response: Response): Response;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * What body an answer carries, decided without reading it, and the answer to a HEAD request.
3
+ * Honey tags its answers at creation: a buffered one by its raw body, a produced stream (sse,
4
+ * stream, generate) by its tag. Neither ever reads `.body` off a buffered HoneyResponse, which on
5
+ * Node would build a stream for it.
6
+ */
7
+ import { isHoneyResponse, isProducedStream, rawBodyOf, replaceResponse } from "../response/builder.js";
8
+ /** `response`'s body kind; its content type is never consulted (SSE and NDJSON carry one). */
9
+ export function bodyKind(response) {
10
+ if (rawBodyOf(response) !== null)
11
+ return "buffered";
12
+ if (isProducedStream(response))
13
+ return "stream";
14
+ /* a HoneyResponse without a raw body hands out its stream, or null, without building one */
15
+ if (response.body === null)
16
+ return "empty";
17
+ if (isHoneyResponse(response))
18
+ return "stream";
19
+ const length = response.headers.get("content-length");
20
+ return length !== null && /^\d+$/.test(length.trim()) ? "buffered" : "stream";
21
+ }
22
+ // per-process-constant: text-codec
23
+ const encoder = /* @__PURE__ */ new TextEncoder();
24
+ function noop() { }
25
+ /** Cancel `response`'s body, unread, unless it is one honey kept: an answer about to go out without it. */
26
+ export function discardBody(response) {
27
+ if (rawBodyOf(response) !== null)
28
+ return;
29
+ const body = response.body;
30
+ /* the body is never sent: a cancel failing changes nothing the client sees */
31
+ if (body !== null && !body.locked)
32
+ body.cancel().catch(noop);
33
+ }
34
+ /**
35
+ * The answer to a HEAD request: GET's status and headers, no body. A body honey built keeps its
36
+ * length in `content-length`, so HEAD states what GET would send; any other body is cancelled
37
+ * unread, so a producer never starts (or stops if it already did).
38
+ */
39
+ export function headResponse(response) {
40
+ const raw = rawBodyOf(response);
41
+ const headers = new Headers(response.headers);
42
+ discardBody(response);
43
+ if (raw !== null && !headers.has("content-length")) {
44
+ headers.set("content-length", String(typeof raw === "string" ? encoder.encode(raw).byteLength : raw.byteLength));
45
+ }
46
+ return replaceResponse(response, { body: null, headers });
47
+ }
@@ -0,0 +1,21 @@
1
+ import { type MiddlewareFn } from "../middleware/middleware.ts";
2
+ export type BodyLimitOptions = {
3
+ /**
4
+ * Limits by media type, read from the request's parsed media type: an essence key
5
+ * (`"application/json"`) takes that type alone, a family key ending in `/` (`"multipart/"`)
6
+ * every subtype of its type. An essence key wins over its family.
7
+ */
8
+ limits?: Readonly<Record<string, number>>;
9
+ /** The cap for a body no `limits` key matches, in bytes. */
10
+ maxSize: number;
11
+ /**
12
+ * Take a declared Content-Length within the cap at its word and count nothing. HTTP/1.1 and
13
+ * HTTP/2 framing keep a body to its declared length, but only where the transport enforces
14
+ * it; by default every byte is counted. A body with no declared length is always counted.
15
+ */
16
+ trustContentLength?: boolean;
17
+ };
18
+ /** Limit the request body to `options.maxSize` bytes, or to the `limits` entry for its media type. */
19
+ export declare function bodyLimit(options: BodyLimitOptions): MiddlewareFn<{
20
+ req: Request;
21
+ }, {}, "content_too_large">;
@@ -0,0 +1,99 @@
1
+ /**
2
+ * `bodyLimit(options)`: a cap on the request body, in bytes. A declared Content-Length over the
3
+ * cap answers 413 before anything is read; otherwise the body is counted as it is read, whatever
4
+ * the length claims, and the read that passes the cap fails with 413. Every method that carries a
5
+ * body is limited, extension methods too; a request with no body and no declared length is not.
6
+ */
7
+ import { withBody } from "../adapters/fetch-request.js";
8
+ import { EK, HoneyError } from "../errors/error.js";
9
+ import { namedMiddleware } from "../middleware/middleware.js";
10
+ import { replaceRequest } from "../context/context.js";
11
+ import { parseMediaType } from "../response/media-type.js";
12
+ /* after an overflow the rest is read and dropped, so the client sees the 413 rather than a reset,
13
+ * but no further than this: past it the body is cancelled, so an endless one cannot hold the socket */
14
+ const DRAIN_LIMIT = 1_048_576;
15
+ function tooLarge() {
16
+ return new HoneyError({ errorKey: EK.content_too_large, status: "content_too_large" });
17
+ }
18
+ /** The cap for `contentType` under `limits`: its essence's key, else its family's; `maxSize` when none. */
19
+ function capFor(limits, maxSize, contentType) {
20
+ const mt = parseMediaType(contentType);
21
+ if (mt === null)
22
+ return maxSize;
23
+ return limits[mt.essence] ?? limits[`${mt.type}/`] ?? maxSize;
24
+ }
25
+ /** A declared length, or `null` when it is absent or not a whole number of bytes. */
26
+ function declaredLength(header) {
27
+ if (header === null || !/^\d+$/.test(header.trim()))
28
+ return null;
29
+ return Number(header);
30
+ }
31
+ /** Read and drop what is left after an overflow, up to DRAIN_LIMIT, then cancel the rest. */
32
+ async function drain(reader) {
33
+ let drained = 0;
34
+ try {
35
+ for (;;) {
36
+ const { done, value } = await reader.read();
37
+ if (done)
38
+ return;
39
+ drained += value.byteLength;
40
+ if (drained > DRAIN_LIMIT)
41
+ return void (await reader.cancel());
42
+ }
43
+ }
44
+ catch {
45
+ /* the body failed or was already done: nothing left to drop */
46
+ }
47
+ }
48
+ /**
49
+ * `body` counted against `cap`: the read that passes it errors with 413 and the rest is drained.
50
+ * Drained, not cancelled, so a FormData body still being encoded (undici) is left to finish.
51
+ */
52
+ function counted(body, cap) {
53
+ const reader = body.getReader();
54
+ let received = 0;
55
+ return new ReadableStream({
56
+ cancel() {
57
+ void drain(reader);
58
+ },
59
+ async pull(controller) {
60
+ let result;
61
+ try {
62
+ result = await reader.read();
63
+ }
64
+ catch (error) {
65
+ return controller.error(error);
66
+ }
67
+ if (result.done)
68
+ return controller.close();
69
+ received += result.value.byteLength;
70
+ if (received <= cap)
71
+ return controller.enqueue(result.value);
72
+ controller.error(tooLarge());
73
+ void drain(reader);
74
+ },
75
+ });
76
+ }
77
+ /** Limit the request body to `options.maxSize` bytes, or to the `limits` entry for its media type. */
78
+ export function bodyLimit(options) {
79
+ const { maxSize, trustContentLength = false } = options;
80
+ /* keys lowercased once, on a record with no prototype: a media type never finds a prototype member */
81
+ const limits = Object.create(null);
82
+ for (const [key, cap] of Object.entries(options.limits ?? {}))
83
+ limits[key.trim().toLowerCase()] = cap;
84
+ const mw = (ctx, next) => {
85
+ const req = ctx.req;
86
+ const declared = declaredLength(req.headers.get("content-length"));
87
+ const body = req.body;
88
+ if (body === null && declared === null)
89
+ return next();
90
+ const cap = capFor(limits, maxSize, req.headers.get("content-type"));
91
+ if (declared !== null && declared > cap)
92
+ throw tooLarge();
93
+ if (body === null || (trustContentLength && declared !== null))
94
+ return next();
95
+ replaceRequest(ctx, withBody(req, counted(body, cap)));
96
+ return next();
97
+ };
98
+ return namedMiddleware("bodyLimit", mw);
99
+ }
@@ -0,0 +1,7 @@
1
+ /** The cookies as `.input({ cookies })` declares them. */
2
+ import type { StandardSchemaLike } from "../validation/standard-schema.ts";
3
+ /**
4
+ * The cookies (ctx.cookies: the first of a repeated name, as RFC 6265 sends the most specific one
5
+ * first) validated by `schema`. Without a schema (a `readableStream()` entry) they pass as they are.
6
+ */
7
+ export declare function cookiesInput(schema: StandardSchemaLike | null, cookies: Record<string, string>): unknown;
@@ -0,0 +1,8 @@
1
+ import { runSchema } from "../validation/validate-input.js";
2
+ /**
3
+ * The cookies (ctx.cookies: the first of a repeated name, as RFC 6265 sends the most specific one
4
+ * first) validated by `schema`. Without a schema (a `readableStream()` entry) they pass as they are.
5
+ */
6
+ export function cookiesInput(schema, cookies) {
7
+ return schema === null ? cookies : runSchema(schema, cookies, "cookies");
8
+ }
@@ -0,0 +1,10 @@
1
+ /** A form body as `.input({ form })` declares it. */
2
+ import type { BodyParser } from "../response/media-type.ts";
3
+ import type { StandardSchemaLike } from "../validation/standard-schema.ts";
4
+ import { type Shape } from "../validation/validate-input.ts";
5
+ /**
6
+ * The body read once as an urlencoded or multipart form and validated by `schema`. Repeated keys
7
+ * follow `shape` (the schema's, computed once per route; the query's policy), and `__proto__`,
8
+ * `constructor` and `prototype` never reach it.
9
+ */
10
+ export declare function formInput(schema: StandardSchemaLike, req: Request, parser: Exclude<BodyParser, "json">, shape?: Shape | null): Promise<unknown>;
@@ -0,0 +1,24 @@
1
+ import { runSchema, shapedRecord, shapeOf } from "../validation/validate-input.js";
2
+ import { malformedBody } from "./json.js";
3
+ /** The multipart body's fields and files; a body that is not multipart is a 400 `malformed_body`. */
4
+ async function parts(req) {
5
+ /* read the bytes first: an error while reading passes through, only parsing them is the client's */
6
+ const bytes = await req.arrayBuffer();
7
+ /* the multipart parser was chosen from this header, so it is present: it carries the boundary */
8
+ const contentType = req.headers.get("content-type");
9
+ try {
10
+ return await new Response(bytes, { headers: { "content-type": contentType } }).formData();
11
+ }
12
+ catch (error) {
13
+ throw malformedBody("multipart", error);
14
+ }
15
+ }
16
+ /**
17
+ * The body read once as an urlencoded or multipart form and validated by `schema`. Repeated keys
18
+ * follow `shape` (the schema's, computed once per route; the query's policy), and `__proto__`,
19
+ * `constructor` and `prototype` never reach it.
20
+ */
21
+ export async function formInput(schema, req, parser, shape = shapeOf(schema)) {
22
+ const entries = parser === "urlencoded" ? new URLSearchParams(await req.text()) : await parts(req);
23
+ return runSchema(schema, shapedRecord(entries, shape), "form");
24
+ }
@@ -0,0 +1,7 @@
1
+ /** The request headers as `.input({ headers })` declares them. */
2
+ import type { StandardSchemaLike } from "../validation/standard-schema.ts";
3
+ /**
4
+ * The request headers (ctx.headers: lowercased names, repeated values joined as Fetch joins them)
5
+ * validated by `schema`. Without a schema (a `readableStream()` entry) they pass as they are.
6
+ */
7
+ export declare function headersInput(schema: StandardSchemaLike | null, headers: Record<string, string>): unknown;
@@ -0,0 +1,8 @@
1
+ import { runSchema } from "../validation/validate-input.js";
2
+ /**
3
+ * The request headers (ctx.headers: lowercased names, repeated values joined as Fetch joins them)
4
+ * validated by `schema`. Without a schema (a `readableStream()` entry) they pass as they are.
5
+ */
6
+ export function headersInput(schema, headers) {
7
+ return schema === null ? headers : runSchema(schema, headers, "headers");
8
+ }
@@ -0,0 +1,91 @@
1
+ /**
2
+ * `.input()`: what a route declares about the request it takes, compiled once into one step that
3
+ * runs after the route's middleware and before its handler. Sources are read in order (params,
4
+ * search, headers, cookies, then the body), and the first that fails answers. The step stays
5
+ * synchronous until a validator or the body has to wait (F6): a route with only sync validators
6
+ * and no body schema answers without a microtask, and only the route that declares one pays.
7
+ */
8
+ import type { MaybePromise } from "../middleware/middleware.ts";
9
+ import { type BinaryBody, type BinaryTypes } from "./binary.ts";
10
+ import type { InferInput, InferOutput, StandardSchemaLike } from "../validation/standard-schema.ts";
11
+ /**
12
+ * A source whose schema documents the shape (for the client and docs) but is not run: a body is
13
+ * left unread for the handler to stream from `ctx.req`, a non-body source passes as parsed.
14
+ */
15
+ export type ReadableStreamSchema<S> = {
16
+ readonly _tag: "readableStream";
17
+ readonly schema: S;
18
+ };
19
+ /** Hand the source on unvalidated: see {@link ReadableStreamSchema}. */
20
+ export declare function readableStream<S extends StandardSchemaLike>(schema: S): ReadableStreamSchema<S>;
21
+ /** A source's schema, or its `readableStream()` wrapper. */
22
+ export type InputEntry = StandardSchemaLike | ReadableStreamSchema<StandardSchemaLike>;
23
+ /** The non-body sources: all a WebSocket route may declare, since an upgrade has no body. */
24
+ export type NonBodyInput = {
25
+ readonly cookies?: InputEntry;
26
+ readonly headers?: InputEntry;
27
+ readonly params?: InputEntry;
28
+ readonly search?: InputEntry;
29
+ };
30
+ /** What `.input()` takes: json, form and binary are exclusive, as a request carries one body. */
31
+ export type InputSchemas = (NonBodyInput & {
32
+ readonly binary?: never;
33
+ readonly form?: InputEntry;
34
+ readonly json?: never;
35
+ }) | (NonBodyInput & {
36
+ readonly binary?: never;
37
+ readonly form?: never;
38
+ readonly json?: InputEntry;
39
+ }) | (NonBodyInput & {
40
+ readonly binary?: BinaryTypes;
41
+ readonly form?: never;
42
+ readonly json?: never;
43
+ });
44
+ /** The media type ctx.input.binary names: a declared essence, or any subtype of a `type/*` range. */
45
+ type BinaryTypeOf<T> = (T extends readonly (infer U)[] ? U : T) extends infer E ? E extends `${infer Type}/*` ? `${Type}/${string}` : E : never;
46
+ /** What an unvalidated non-body source carries: the record as parsed. */
47
+ type RawSource<K> = K extends "search" ? Record<string, string | string[]> : Record<string, string>;
48
+ /** One source on ctx.input: the schema's output, or the raw record a `readableStream()` entry passes. */
49
+ type SourceValue<K, E> = K extends "binary" ? BinaryBody<Extract<BinaryTypeOf<E>, string>> : E extends ReadableStreamSchema<unknown> ? RawSource<K> : InferOutput<E>;
50
+ /** The keys ctx.input carries: every declared source except a body left unread. */
51
+ type InputKey<T> = {
52
+ [K in keyof T]-?: [NonNullable<T[K]>] extends [never] ? never : K extends "form" | "json" ? NonNullable<T[K]> extends ReadableStreamSchema<unknown> ? never : K : K;
53
+ }[keyof T];
54
+ /** ctx.input for a declaration: each source as validated, typed by its schema. */
55
+ export type InferInputMap<T> = {
56
+ readonly [K in InputKey<T>]: SourceValue<K, NonNullable<T[K]>>;
57
+ };
58
+ /** One source as a client sends it: the schema's input type, a `readableStream()` entry by the schema it wraps. */
59
+ type RequestValue<K, E> = K extends "binary" ? BinaryBody<Extract<BinaryTypeOf<E>, string>> : InferInput<E extends ReadableStreamSchema<infer S> ? S : E>;
60
+ /** The keys a client sends: every declared source, a body left unread included. */
61
+ type RequestKey<T> = {
62
+ [K in keyof T]-?: [NonNullable<T[K]>] extends [never] ? never : K;
63
+ }[keyof T];
64
+ /** What a client sends for a declaration (the route record's `request`): `readableStream()` entries unwrapped. */
65
+ export type InferRequestMap<T> = {
66
+ readonly [K in RequestKey<T>]: RequestValue<K, NonNullable<T[K]>>;
67
+ };
68
+ /** What `.input()` records at the type level: the handler's ctx.input and the client's request. */
69
+ export type InputTypes<T> = {
70
+ input: InferInputMap<T>;
71
+ request: InferRequestMap<T>;
72
+ };
73
+ /** What the input step reads off a request context. */
74
+ type InputCtx = {
75
+ readonly cookies: Record<string, string>;
76
+ readonly headers: Record<string, string>;
77
+ input?: unknown;
78
+ readonly params: Record<string, string>;
79
+ readonly req: Request;
80
+ readonly searchAll: Record<string, string[]>;
81
+ };
82
+ /** The compiled step: sets ctx.input, or a promise of having set it when something had to wait. */
83
+ export type InputStep = (ctx: InputCtx) => Promise<void> | undefined;
84
+ /**
85
+ * Compile `schemas` for a route at `path` reached by `methods`. A body schema on a route only GET
86
+ * or HEAD reach, or json and form together, throws here, at registration.
87
+ */
88
+ export declare function compileInput(schemas: InputSchemas, methods: readonly string[], path: string): InputStep;
89
+ /** `handler` behind `step`: the handler runs once ctx.input is set, synchronously when the step was. */
90
+ export declare function withInput(step: InputStep, handler: (ctx: object) => MaybePromise<Response>): (ctx: object) => MaybePromise<Response>;
91
+ export {};
@@ -0,0 +1,88 @@
1
+ import { assertBodySchemaAllowed, assertRequestContentType } from "../validation/content-type.js";
2
+ import { binaryInput, binaryRanges, binaryType } from "./binary.js";
3
+ import { shapeOf } from "../validation/validate-input.js";
4
+ import { cookiesInput } from "./cookies.js";
5
+ import { formInput } from "./form.js";
6
+ import { headersInput } from "./headers.js";
7
+ import { jsonInput } from "./json.js";
8
+ import { paramsInput } from "./params.js";
9
+ import { searchInput } from "./query.js";
10
+ /** Hand the source on unvalidated: see {@link ReadableStreamSchema}. */
11
+ export function readableStream(schema) {
12
+ return { _tag: "readableStream", schema };
13
+ }
14
+ function compile(entry) {
15
+ if (entry === undefined)
16
+ return null;
17
+ const schema = "_tag" in entry ? null : entry;
18
+ return { schema, shape: schema === null ? null : shapeOf(schema) };
19
+ }
20
+ /** A body left unread for the handler: no ctx.input key. */
21
+ const UNREAD = /* @__PURE__ */ Symbol("honey.unread");
22
+ /** The body source, read once, or UNREAD for a `readableStream()` body. */
23
+ function readBody(body, ctx, parser) {
24
+ if (body.schema === null)
25
+ return UNREAD;
26
+ return parser === "json" ? jsonInput(body.schema, ctx.req) : formInput(body.schema, ctx.req, parser, body.shape);
27
+ }
28
+ /**
29
+ * Compile `schemas` for a route at `path` reached by `methods`. A body schema on a route only GET
30
+ * or HEAD reach, or json and form together, throws here, at registration.
31
+ */
32
+ export function compileInput(schemas, methods, path) {
33
+ assertBodySchemaAllowed(schemas, methods, path);
34
+ const params = compile(schemas.params);
35
+ const search = compile(schemas.search);
36
+ const headers = compile(schemas.headers);
37
+ const cookies = compile(schemas.cookies);
38
+ const json = compile(schemas.json);
39
+ const form = compile(schemas.form);
40
+ const reads = [];
41
+ if (params !== null)
42
+ reads.push(["params", (ctx) => paramsInput(params.schema, ctx.params)]);
43
+ if (search !== null)
44
+ reads.push(["search", (ctx) => searchInput(search.schema, ctx.searchAll, search.shape)]);
45
+ if (headers !== null)
46
+ reads.push(["headers", (ctx) => headersInput(headers.schema, ctx.headers)]);
47
+ if (cookies !== null)
48
+ reads.push(["cookies", (ctx) => cookiesInput(cookies.schema, ctx.cookies)]);
49
+ const body = json ?? form;
50
+ if (schemas.binary !== undefined) {
51
+ const ranges = binaryRanges(schemas.binary, methods[0], path);
52
+ reads.push(["binary", (ctx) => binaryInput(ctx.req, binaryType(ranges, ctx.req.headers.get("content-type")))]);
53
+ }
54
+ else if (body !== null) {
55
+ reads.push([
56
+ json !== null ? "json" : "form",
57
+ (ctx) => readBody(body, ctx, assertRequestContentType(schemas, ctx.req.headers.get("content-type"))),
58
+ ]);
59
+ }
60
+ return (ctx) => run(reads, 0, ctx, {});
61
+ }
62
+ /**
63
+ * Run `reads` from `from`: synchronously while each answers at once, then after each that has to
64
+ * wait. ctx.input is set once every source passed, so code after a failed step never sees a part.
65
+ */
66
+ function run(reads, from, ctx, input) {
67
+ for (let i = from; i < reads.length; i++) {
68
+ const [key, read] = reads[i];
69
+ const value = read(ctx);
70
+ if (value instanceof Promise) {
71
+ return value.then((settled) => {
72
+ input[key] = settled;
73
+ return run(reads, i + 1, ctx, input);
74
+ });
75
+ }
76
+ if (value !== UNREAD)
77
+ input[key] = value;
78
+ }
79
+ ctx.input = input;
80
+ return undefined;
81
+ }
82
+ /** `handler` behind `step`: the handler runs once ctx.input is set, synchronously when the step was. */
83
+ export function withInput(step, handler) {
84
+ return (ctx) => {
85
+ const pending = step(ctx);
86
+ return pending === undefined ? handler(ctx) : pending.then(() => handler(ctx));
87
+ };
88
+ }
@@ -0,0 +1,10 @@
1
+ /** A JSON body as `.input({ json })` declares it. */
2
+ import { HoneyError } from "../errors/error.ts";
3
+ import type { StandardSchemaLike } from "../validation/standard-schema.ts";
4
+ /** A body the declared parser cannot read: the client's mistake, a 400, never a 500. */
5
+ export declare function malformedBody(format: "json" | "multipart", cause: unknown): HoneyError;
6
+ /**
7
+ * The body read once as JSON and validated by `schema`. An empty or unparseable body is a 400
8
+ * `malformed_body`; an error while reading it (a size limit, a client abort) passes through.
9
+ */
10
+ export declare function jsonInput(schema: StandardSchemaLike, req: Request): Promise<unknown>;
@@ -0,0 +1,22 @@
1
+ /** A JSON body as `.input({ json })` declares it. */
2
+ import { EK, HoneyError } from "../errors/error.js";
3
+ import { runSchema } from "../validation/validate-input.js";
4
+ /** A body the declared parser cannot read: the client's mistake, a 400, never a 500. */
5
+ export function malformedBody(format, cause) {
6
+ return new HoneyError({ cause, errorKey: EK.malformed_body, status: "bad_request", vars: { format } });
7
+ }
8
+ function parse(text) {
9
+ try {
10
+ return JSON.parse(text);
11
+ }
12
+ catch (error) {
13
+ throw malformedBody("json", error);
14
+ }
15
+ }
16
+ /**
17
+ * The body read once as JSON and validated by `schema`. An empty or unparseable body is a 400
18
+ * `malformed_body`; an error while reading it (a size limit, a client abort) passes through.
19
+ */
20
+ export async function jsonInput(schema, req) {
21
+ return runSchema(schema, parse(await req.text()), "json");
22
+ }
@@ -0,0 +1,7 @@
1
+ /** The route's params as `.input({ params })` declares them. */
2
+ import type { StandardSchemaLike } from "../validation/standard-schema.ts";
3
+ /**
4
+ * `params` validated by `schema`: what the schema produced, a promise of it only for an async
5
+ * validator. Without a schema (a `readableStream()` entry) the params pass as they are.
6
+ */
7
+ export declare function paramsInput(schema: StandardSchemaLike | null, params: Record<string, string>): unknown;