@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
package/bin/honey.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import { spawnSync } from "node:child_process"
3
- import { existsSync } from "node:fs"
4
- import { basename } from "node:path"
2
+ // The honey bin (bit 19 h2), honey-clients's twin. A repository checkout (marked by tsconfig.json, which is not
3
+ // published) runs the TypeScript source, through jiti on Node, so a stale dist/ never runs; an installed package runs
4
+ // the compiled JavaScript on any runtime (the tarball ships dist/, not src/).
5
+ import { spawn } from "node:child_process"
6
+ import { existsSync, readFileSync } from "node:fs"
7
+ import { createRequire } from "node:module"
8
+ import { basename, dirname, join } from "node:path"
5
9
  import { fileURLToPath } from "node:url"
6
10
 
7
- /* Bun runs the TypeScript source; an installed package on any other runtime runs the compiled
8
- * JavaScript. A repository checkout (marked by tsconfig.json, which is not published) runs the
9
- * source on Node too, through jiti, so `honey generate` never runs a stale dist/. */
10
11
  const isBun = typeof globalThis.Bun !== "undefined"
11
12
  const checkout = existsSync(new URL("../tsconfig.json", import.meta.url))
12
13
 
13
- /* `bun run generate` starts this file through its node shebang. The app is meant for Bun, though
14
- * (text-module imports such as `.md`, Bun-only APIs), so hand over to the Bun that started us,
15
- * which `bun run` and `bunx` name in npm_execpath. */
14
+ // `bun run` and `bunx` start this file through its node shebang, while what they run is meant for Bun: hand over to
15
+ // the Bun that started us, which they name in npm_execpath. Once, never again in the child.
16
16
  function invokingBun() {
17
17
  if (isBun || process.env.HONEY_NO_BUN_HANDOFF === "1") return null
18
18
  if (!process.env.npm_config_user_agent?.startsWith("bun/")) return null
@@ -21,28 +21,88 @@ function invokingBun() {
21
21
  return bun
22
22
  }
23
23
 
24
- const bun = invokingBun()
25
- if (bun) {
26
- const run = spawnSync(bun, [fileURLToPath(import.meta.url), ...process.argv.slice(2)], {
27
- env: { ...process.env, HONEY_NO_BUN_HANDOFF: "1" },
24
+ // The handoff: Bun runs this file with our arguments and `env` over ours; a signal we get is passed on to it, and we
25
+ // end as it ended, its exit code or the same signal.
26
+ function handOff(bun, env = {}) {
27
+ // Forwarders first: a signal landing as spawn returns would otherwise end this process by its default action,
28
+ // orphaning the child. A handler runs from the event loop, after this block, so `child` is set by then.
29
+ let child
30
+ const forward = (signal) => child.kill(signal)
31
+ for (const signal of ["SIGINT", "SIGTERM", "SIGHUP"]) process.on(signal, forward)
32
+ child = spawn(bun, [fileURLToPath(import.meta.url), ...process.argv.slice(2)], {
33
+ env: { ...process.env, ...env, HONEY_NO_BUN_HANDOFF: "1" },
28
34
  stdio: "inherit",
29
35
  })
30
- if (run.error) throw run.error
31
- if (run.signal) process.kill(process.pid, run.signal)
32
- process.exit(run.status ?? 1)
33
- } else if (isBun) {
34
- await import("../src/cli.ts")
35
- } else if (checkout) {
36
- const { createJiti } = await import("jiti")
37
- await createJiti(import.meta.url).import("../src/cli.ts")
38
- } else {
36
+ child.on("error", (error) => {
37
+ console.error(`honey: could not start ${bun}: ${error.message}`)
38
+ process.exit(1)
39
+ })
40
+ child.on("exit", (code, signal) => {
41
+ if (signal) {
42
+ for (const each of ["SIGINT", "SIGTERM", "SIGHUP"]) process.off(each, forward)
43
+ process.kill(process.pid, signal)
44
+ return
45
+ }
46
+ process.exit(code ?? 1)
47
+ })
48
+ }
49
+
50
+ // A checkout's specifier for `name` mapped to its source: each export's `honey-source` file. The published exports
51
+ // send `default` to dist/, which a checkout does not build.
52
+ function sourceAliases(name) {
53
+ const root = dirname(createRequire(import.meta.url).resolve(`${name}/package.json`))
54
+ const { exports = {} } = JSON.parse(readFileSync(join(root, "package.json"), "utf8"))
55
+ return Object.fromEntries(
56
+ Object.entries(exports)
57
+ .filter(([, target]) => typeof target === "object" && target["honey-source"])
58
+ .map(([subpath, target]) => [name + subpath.slice(1), join(root, target["honey-source"])]),
59
+ )
60
+ }
61
+
62
+ // A checkout on Bun runs its source natively, under the honey-source condition: honey-clients, and an app's honey,
63
+ // resolve to source then, not to the unbuilt dist/. Set through BUN_OPTIONS when the caller did not, so every
64
+ // generation child inherits it.
65
+ const SOURCE_CONDITION = "--conditions=honey-source"
66
+ const unconditioned = isBun && checkout && !process.execArgv.includes(SOURCE_CONDITION)
67
+ // The hand-off's backstop: its child carries HONEY_BUN_HANDOFF, the depth of hand-offs before it. A child that would
68
+ // hand off again (the condition set but not in its execArgv) refuses instead of re-running itself without end.
69
+ const handOffDepth = Number(process.env.HONEY_BUN_HANDOFF ?? 0)
70
+
71
+ async function entry() {
72
+ if (checkout) {
73
+ /* never jiti on Bun: its Babel, loaded on any fs-cache miss, hooks Error.prepareStackTrace, and Bun's own then
74
+ * throws "First argument must be an Error object" at a captureStackTrace on a non-Error (bit 20 k-fix) */
75
+ if (isBun) return import("../src/build/cli.ts")
76
+ const { createJiti } = await import("jiti")
77
+ const alias = sourceAliases("@lovrozagar/honey-clients")
78
+ return createJiti(import.meta.url, { alias, tryNative: false }).import("../src/build/cli.ts")
79
+ }
39
80
  try {
40
- await import("../dist/cli.js")
41
- } catch (err) {
42
- if (err?.code === "ERR_MODULE_NOT_FOUND" && String(err.url).endsWith("/dist/cli.js")) {
43
- console.error("honey: dist/ is missing from this install. Reinstall @lovrozagar/honey, or run honey with Bun.")
81
+ return await import("../dist/build/cli.js")
82
+ } catch (error) {
83
+ if (error?.code === "ERR_MODULE_NOT_FOUND" && String(error.url).endsWith("/dist/build/cli.js")) {
84
+ console.error("honey: dist/ is missing from this install. Reinstall it, or run it with Bun.")
44
85
  process.exit(1)
45
86
  }
46
- throw err
87
+ throw error
47
88
  }
48
89
  }
90
+
91
+ const bun = invokingBun()
92
+ if (bun) handOff(bun)
93
+ else if (unconditioned && handOffDepth >= 1) {
94
+ console.error("honey: Bun hand-off loop: --conditions=honey-source not visible after re-exec")
95
+ process.exit(1)
96
+ } else if (unconditioned)
97
+ handOff(process.execPath, {
98
+ BUN_OPTIONS: `${process.env.BUN_OPTIONS ?? ""} ${SOURCE_CONDITION}`.trim(),
99
+ HONEY_BUN_HANDOFF: String(handOffDepth + 1),
100
+ })
101
+ else {
102
+ const { main } = await entry()
103
+ const io = { err: (text) => process.stderr.write(text), out: (text) => process.stdout.write(text) }
104
+ const code = await main(process.argv.slice(2), io)
105
+ /* the app may leave a timer or a socket open: the run is over once main returns, its output flushed */
106
+ for (const stream of [process.stdout, process.stderr]) await new Promise((done) => stream.write("", done))
107
+ process.exit(code)
108
+ }
@@ -0,0 +1,18 @@
1
+ type FetchApp<TEnv> = {
2
+ fetch(request: Request, env: TEnv): Response | Promise<Response>;
3
+ };
4
+ export type BunServeOptions<TEnv> = {
5
+ env: TEnv;
6
+ hostname: string;
7
+ maxRequestBodySize: number;
8
+ /** Errors the app could not answer; Bun then answers 500. Unset, Bun's own error handling applies. */
9
+ onError?: (error: unknown) => void;
10
+ port: number;
11
+ };
12
+ export type BunListener = {
13
+ /** Let in-flight requests finish for up to `timeout` ms, then cut every connection. */
14
+ close(timeout: number): Promise<void>;
15
+ readonly port: number;
16
+ };
17
+ export declare function serve<TEnv>(app: FetchApp<TEnv>, options: BunServeOptions<TEnv>): BunListener;
18
+ export {};
@@ -0,0 +1,89 @@
1
+ /**
2
+ * The Bun adapter: `Bun.serve` with the app's fetch, the server passed in the env so `ctx.ip` and
3
+ * the WebSocket upgrade read it. Bun takes the `websocket` handlers at creation, so a honey app's
4
+ * ws adapter is fixed here: its own `bunWebSocket()`, or one set before `serve()`.
5
+ *
6
+ * A known residual: when a response body stream errors (a proxied upstream cut by its idle
7
+ * timeout, a producer that fails), Bun itself prints the error to stderr, outside both the
8
+ * `error` handler and the app's logger. The stream erroring is correct, since closing it would
9
+ * pass a cut body off as complete; redirecting Bun's own diagnostic would mean wrapping every
10
+ * response body, a per-response cost for a sink change, so it is left as Bun reports it.
11
+ */
12
+ import { HoneyError } from "../../errors/error.js";
13
+ import { GRAPH } from "../../routing/app.js";
14
+ import { createLogger } from "../../telemetry/logger.js";
15
+ import { bunWebSocket } from "../../ws/bun.js";
16
+ /** Settle when `work` does or after `ms`, whichever is first; the timer never outlives it. */
17
+ async function within(work, ms) {
18
+ let timer;
19
+ const timeout = new Promise((resolve) => {
20
+ timer = setTimeout(() => resolve("timeout"), ms);
21
+ });
22
+ try {
23
+ return await Promise.race([work.then(() => "done"), timeout]);
24
+ }
25
+ finally {
26
+ clearTimeout(timer);
27
+ }
28
+ }
29
+ const SWAPPED = "honey: app.wsAdapter() changed after serve(app) on Bun, where Bun.serve took the first adapter's handlers: set app.wsAdapter() before serve()";
30
+ /** The honey app's settings, where its ws adapter lives; `null` for a plain fetch handler. */
31
+ function settingsOf(app) {
32
+ return app[GRAPH]?.settings ?? null;
33
+ }
34
+ /** The app's ws adapter for Bun: the one it was given, else `bunWebSocket()`, set on the app. */
35
+ function bunAdapterOf(settings) {
36
+ settings.wsAdapter ??= bunWebSocket();
37
+ if (settings.wsAdapter.runtime !== "bun") {
38
+ throw new Error("serve() on Bun needs a bunWebSocket() adapter, but app.wsAdapter() was given another");
39
+ }
40
+ return settings.wsAdapter;
41
+ }
42
+ function isWebSocketUpgrade(request) {
43
+ return request.headers.get("upgrade")?.toLowerCase() === "websocket";
44
+ }
45
+ /** Bun expects nothing back from a fetch that upgraded the request. */
46
+ /** The default failure reporter: the app's logger, or a default one for a plain fetch handler. */
47
+ function reportTo(logger) {
48
+ return (error) => logger.error({ err: HoneyError.serialize(error) }, "serve failed");
49
+ }
50
+ function unlessUpgraded(response) {
51
+ return response.status === 101 ? undefined : response;
52
+ }
53
+ export function serve(app, options) {
54
+ const settings = settingsOf(app);
55
+ /* no onError: the app's logger, never Bun's own error page (a stack in development, outside the sink) */
56
+ const onError = options.onError ?? reportTo(settings?.logger ?? createLogger());
57
+ const adapter = settings === null ? null : bunAdapterOf(settings);
58
+ /* the server is the same object on every request: the env carrying it is built once */
59
+ let env;
60
+ const server = globalThis.Bun.serve({
61
+ error: (error) => {
62
+ onError(error);
63
+ return new Response("Internal Server Error", { status: 500 });
64
+ },
65
+ fetch: (request, bun) => {
66
+ /* an adapter set after Bun.serve took the first one's handlers can never upgrade: say so */
67
+ if (settings !== null && settings.wsAdapter !== adapter && isWebSocketUpgrade(request))
68
+ throw new Error(SWAPPED);
69
+ const answer = app.fetch(request, (env ??= { ...options.env, server: bun }));
70
+ return answer instanceof Promise ? answer.then(unlessUpgraded) : unlessUpgraded(answer);
71
+ },
72
+ hostname: options.hostname,
73
+ maxRequestBodySize: options.maxRequestBodySize,
74
+ port: options.port,
75
+ ...(adapter === null ? {} : { websocket: adapter.websocket }),
76
+ });
77
+ return {
78
+ async close(timeout) {
79
+ /* graceful first; idle keep-alive connections would otherwise keep serving, so close them
80
+ * now and again once the in-flight requests have finished and left theirs idle */
81
+ const graceful = server.stop(false);
82
+ server.closeIdleConnections();
83
+ if ((await within(graceful, timeout)) === "timeout")
84
+ await server.stop(true);
85
+ server.closeIdleConnections();
86
+ },
87
+ port: server.port,
88
+ };
89
+ }
@@ -0,0 +1,20 @@
1
+ /** A request view (the Node adapter's) hands over the Fetch `Request` behind it under this key. */
2
+ export declare const TO_FETCH_REQUEST: unique symbol;
3
+ /**
4
+ * The Fetch `Request` for `req`. On Bun and Workers that is `req` itself. On Node, `ctx.req` is a
5
+ * lighter view of the incoming message, so `new Request(ctx.req)`, `fetch(ctx.req)` and
6
+ * `instanceof Request` need this first. The view builds its Request once, which then owns the body.
7
+ */
8
+ export declare function toFetchRequest(req: Request): Request;
9
+ /**
10
+ * A request view (the Node adapter's) swaps its body for another stream under this key and stays
11
+ * the view. Not TO_FETCH_REQUEST: that builds the Fetch Request behind the view, which then owns
12
+ * the body; this keeps the view, so no Request is built unless something later asks for one, and
13
+ * then it carries the swapped body.
14
+ */
15
+ export declare const REPLACE_BODY: unique symbol;
16
+ /**
17
+ * `req` with `body` in place of its own body: a request view swaps it in place and is returned
18
+ * as is; a Fetch Request becomes one new Request with the same method, URL, headers and signal.
19
+ */
20
+ export declare function withBody(req: Request, body: ReadableStream<Uint8Array>): Request;
@@ -0,0 +1,29 @@
1
+ /** A request view (the Node adapter's) hands over the Fetch `Request` behind it under this key. */
2
+ export const TO_FETCH_REQUEST = /* @__PURE__ */ Symbol.for("honey.toFetchRequest");
3
+ /**
4
+ * The Fetch `Request` for `req`. On Bun and Workers that is `req` itself. On Node, `ctx.req` is a
5
+ * lighter view of the incoming message, so `new Request(ctx.req)`, `fetch(ctx.req)` and
6
+ * `instanceof Request` need this first. The view builds its Request once, which then owns the body.
7
+ */
8
+ export function toFetchRequest(req) {
9
+ const own = req[TO_FETCH_REQUEST];
10
+ return typeof own === "function" ? own.call(req) : req;
11
+ }
12
+ /**
13
+ * A request view (the Node adapter's) swaps its body for another stream under this key and stays
14
+ * the view. Not TO_FETCH_REQUEST: that builds the Fetch Request behind the view, which then owns
15
+ * the body; this keeps the view, so no Request is built unless something later asks for one, and
16
+ * then it carries the swapped body.
17
+ */
18
+ export const REPLACE_BODY = /* @__PURE__ */ Symbol.for("honey.replaceBody");
19
+ /**
20
+ * `req` with `body` in place of its own body: a request view swaps it in place and is returned
21
+ * as is; a Fetch Request becomes one new Request with the same method, URL, headers and signal.
22
+ */
23
+ export function withBody(req, body) {
24
+ const swap = req[REPLACE_BODY];
25
+ if (typeof swap !== "function")
26
+ return new Request(req, { body, duplex: "half" });
27
+ swap.call(req, body);
28
+ return req;
29
+ }
@@ -0,0 +1,27 @@
1
+ import type { IncomingMessage } from "node:http";
2
+ /**
3
+ * Fetch's `Headers` over Node's parsed headers. `get` and `has` read maps over what Node parsed;
4
+ * a real `Headers` is built only when something iterates or writes, and answers from then on.
5
+ */
6
+ export declare class NodeHeaders {
7
+ #private;
8
+ constructor(incoming: IncomingMessage);
9
+ /**
10
+ * Every value, joined as Fetch joins them. Node's `headers` map keeps only the first
11
+ * `Authorization`, `Host`, …; the raw pairs keep them all, so the answer does not change once
12
+ * something iterates. Built from `rawHeaders`, never `headersDistinct`: Bun's node:http before
13
+ * 1.4 has no `headersDistinct`.
14
+ */
15
+ get(name: string): string | null;
16
+ has(name: string): boolean;
17
+ append(name: string, value: string): void;
18
+ delete(name: string): void;
19
+ set(name: string, value: string): void;
20
+ getSetCookie(): string[];
21
+ forEach(callback: (value: string, key: string, parent: Headers) => void, thisArg?: unknown): void;
22
+ keys(): HeadersIterator<string>;
23
+ values(): HeadersIterator<string>;
24
+ entries(): HeadersIterator<[string, string]>;
25
+ [Symbol.iterator](): HeadersIterator<[string, string]>;
26
+ get [Symbol.toStringTag](): string;
27
+ }
@@ -0,0 +1,86 @@
1
+ /** Every raw header value under its lowercased name, in order: what `headersDistinct` holds on Node. */
2
+ function distinctOf(raw) {
3
+ const all = new Map();
4
+ for (let i = 0; i < raw.length; i += 2) {
5
+ const key = raw[i].toLowerCase();
6
+ const values = all.get(key);
7
+ if (values === undefined)
8
+ all.set(key, [raw[i + 1]]);
9
+ else
10
+ values.push(raw[i + 1]);
11
+ }
12
+ return all;
13
+ }
14
+ /**
15
+ * Fetch's `Headers` over Node's parsed headers. `get` and `has` read maps over what Node parsed;
16
+ * a real `Headers` is built only when something iterates or writes, and answers from then on.
17
+ */
18
+ export class NodeHeaders {
19
+ #incoming;
20
+ #distinct = null;
21
+ #native = null;
22
+ constructor(incoming) {
23
+ this.#incoming = incoming;
24
+ }
25
+ /**
26
+ * Every value, joined as Fetch joins them. Node's `headers` map keeps only the first
27
+ * `Authorization`, `Host`, …; the raw pairs keep them all, so the answer does not change once
28
+ * something iterates. Built from `rawHeaders`, never `headersDistinct`: Bun's node:http before
29
+ * 1.4 has no `headersDistinct`.
30
+ */
31
+ get(name) {
32
+ if (this.#native !== null)
33
+ return this.#native.get(name);
34
+ this.#distinct ??= distinctOf(this.#incoming.rawHeaders);
35
+ const values = this.#distinct.get(name.toLowerCase());
36
+ if (values === undefined)
37
+ return null;
38
+ return values.length === 1 ? values[0] : values.join(", ");
39
+ }
40
+ has(name) {
41
+ if (this.#native !== null)
42
+ return this.#native.has(name);
43
+ return Object.hasOwn(this.#incoming.headers, name.toLowerCase());
44
+ }
45
+ append(name, value) {
46
+ this.#ensureNative().append(name, value);
47
+ }
48
+ delete(name) {
49
+ this.#ensureNative().delete(name);
50
+ }
51
+ set(name, value) {
52
+ this.#ensureNative().set(name, value);
53
+ }
54
+ getSetCookie() {
55
+ return this.#ensureNative().getSetCookie();
56
+ }
57
+ forEach(callback, thisArg) {
58
+ this.#ensureNative().forEach(callback, thisArg);
59
+ }
60
+ keys() {
61
+ return this.#ensureNative().keys();
62
+ }
63
+ values() {
64
+ return this.#ensureNative().values();
65
+ }
66
+ entries() {
67
+ return this.#ensureNative().entries();
68
+ }
69
+ [Symbol.iterator]() {
70
+ return this.#ensureNative()[Symbol.iterator]();
71
+ }
72
+ get [Symbol.toStringTag]() {
73
+ return "Headers";
74
+ }
75
+ /* from the raw pairs, so every repeated value survives */
76
+ #ensureNative() {
77
+ if (this.#native !== null)
78
+ return this.#native;
79
+ const headers = new Headers();
80
+ const raw = this.#incoming.rawHeaders;
81
+ for (let i = 0; i < raw.length; i += 2)
82
+ headers.append(raw[i], raw[i + 1]);
83
+ this.#native = headers;
84
+ return headers;
85
+ }
86
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The `node:http` → Fetch side of the Node adapter: a Request-shaped view of the IncomingMessage
3
+ * that builds a real `Request` only when something needs one (formData, blob, clone,
4
+ * `toFetchRequest`).
5
+ */
6
+ import type { IncomingMessage } from "node:http";
7
+ /** The serve side calls this when the response closed before it finished: client gone, or shutdown. */
8
+ export declare const ABORT_REQUEST: unique symbol;
9
+ /** True once a body read went over the cap: the body is left on the socket, so the connection is not reused. */
10
+ export declare const BODY_OVERFLOW: unique symbol;
11
+ /**
12
+ * The Request the app sees for `incoming`. It is not a Fetch `Request` (`instanceof Request` is
13
+ * false): `toFetchRequest()` gives the real one. A body over `maxBody` bytes fails its read with
14
+ * 413; `0` turns the cap off.
15
+ */
16
+ export declare function nodeRequest(incoming: IncomingMessage, url: string, maxBody: number): Request;
@@ -0,0 +1,214 @@
1
+ import { Readable } from "node:stream";
2
+ import { PEER_ADDRESS } from "../../context/peer.js";
3
+ import { EK, HoneyError } from "../../errors/error.js";
4
+ import { NODE_OUTBOUND } from "../../response/builder.js";
5
+ import { REPLACE_BODY, TO_FETCH_REQUEST } from "../fetch-request.js";
6
+ import { NodeHeaders } from "./headers.js";
7
+ /** The serve side calls this when the response closed before it finished: client gone, or shutdown. */
8
+ export const ABORT_REQUEST = /* @__PURE__ */ Symbol("honey.abortRequest");
9
+ /** True once a body read went over the cap: the body is left on the socket, so the connection is not reused. */
10
+ export const BODY_OVERFLOW = /* @__PURE__ */ Symbol("honey.bodyOverflow");
11
+ /** Request-shaped view of an IncomingMessage: no `new Request()` until something needs the real one. */
12
+ class NodeRequest {
13
+ headers;
14
+ method;
15
+ url;
16
+ #incoming;
17
+ #hasBody;
18
+ #maxBody;
19
+ #received = 0;
20
+ #overflow = false;
21
+ #bodyUsed = false;
22
+ #stream;
23
+ #fetch;
24
+ #controller;
25
+ /* the abort that came before anything read `signal` */
26
+ #abortReason;
27
+ constructor(incoming, url, maxBody) {
28
+ this.#incoming = incoming;
29
+ this.#maxBody = maxBody;
30
+ this.url = url;
31
+ this.method = incoming.method;
32
+ this.headers = new NodeHeaders(incoming);
33
+ this.#hasBody = this.method !== "GET" && this.method !== "HEAD";
34
+ }
35
+ get cache() {
36
+ return "default";
37
+ }
38
+ get credentials() {
39
+ return "same-origin";
40
+ }
41
+ get destination() {
42
+ return "";
43
+ }
44
+ get duplex() {
45
+ return "half";
46
+ }
47
+ get integrity() {
48
+ return "";
49
+ }
50
+ get keepalive() {
51
+ return false;
52
+ }
53
+ get mode() {
54
+ return "cors";
55
+ }
56
+ get redirect() {
57
+ return "follow";
58
+ }
59
+ get referrer() {
60
+ return "about:client";
61
+ }
62
+ get referrerPolicy() {
63
+ return "";
64
+ }
65
+ get [NODE_OUTBOUND]() {
66
+ return true;
67
+ }
68
+ /** The socket peer, for `ctx.ip`. */
69
+ get [PEER_ADDRESS]() {
70
+ return this.#incoming.socket.remoteAddress ?? null;
71
+ }
72
+ get [BODY_OVERFLOW]() {
73
+ return this.#overflow;
74
+ }
75
+ get body() {
76
+ if (!this.#hasBody)
77
+ return null;
78
+ /* once a Fetch Request owns the stream, it is the body */
79
+ if (this.#fetch !== undefined)
80
+ return this.#fetch.body;
81
+ this.#stream ??= this.#cappedStream();
82
+ return this.#stream;
83
+ }
84
+ get bodyUsed() {
85
+ if (this.#fetch !== undefined)
86
+ return this.#fetch.bodyUsed;
87
+ return this.#bodyUsed || (this.#hasBody && this.#incoming.readableEnded);
88
+ }
89
+ /** Aborts when the response closes before it finished: the client left, or the server shut down. */
90
+ get signal() {
91
+ if (this.#controller === undefined) {
92
+ this.#controller = new AbortController();
93
+ if (this.#abortReason !== undefined)
94
+ this.#controller.abort(this.#abortReason.reason);
95
+ }
96
+ return this.#controller.signal;
97
+ }
98
+ [ABORT_REQUEST](reason = new DOMException("The client disconnected", "AbortError")) {
99
+ if (this.#controller !== undefined)
100
+ this.#controller.abort(reason);
101
+ else
102
+ this.#abortReason ??= { reason };
103
+ }
104
+ /** Swap the body for `body` (bodyLimit's counted stream) and stay the view: nothing has read it yet. */
105
+ [REPLACE_BODY](body) {
106
+ this.#stream = body;
107
+ }
108
+ /** The real Fetch `Request` behind the view: `new Request(x)`, `fetch(x)` and `instanceof` take it. */
109
+ [TO_FETCH_REQUEST]() {
110
+ return this.#asFetch();
111
+ }
112
+ async arrayBuffer() {
113
+ const buf = await this.#read();
114
+ return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);
115
+ }
116
+ async bytes() {
117
+ const buf = await this.#read();
118
+ return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
119
+ }
120
+ /** As Fetch: an empty body is a `SyntaxError`, not `null`. */
121
+ async json() {
122
+ return JSON.parse(await this.text());
123
+ }
124
+ async text() {
125
+ return (await this.#read()).toString("utf8");
126
+ }
127
+ blob() {
128
+ return this.#asFetch().blob();
129
+ }
130
+ clone() {
131
+ return this.#asFetch().clone();
132
+ }
133
+ formData() {
134
+ return this.#asFetch().formData();
135
+ }
136
+ #asFetch() {
137
+ this.#fetch ??= new Request(this.url, {
138
+ body: this.body,
139
+ duplex: "half",
140
+ /* every value of a repeated header, as the view reports them */
141
+ headers: [...this.headers],
142
+ method: this.method,
143
+ signal: this.signal,
144
+ });
145
+ return this.#fetch;
146
+ }
147
+ /** Count bytes against the cap; over it, the read fails with 413 and the rest stays unread. */
148
+ #count(n) {
149
+ this.#received += n;
150
+ if (this.#maxBody > 0 && this.#received > this.#maxBody)
151
+ this.#tooLarge();
152
+ }
153
+ /** A declared length over the cap fails before anything is read. */
154
+ #checkDeclared() {
155
+ if (this.#maxBody > 0 && Number(this.#incoming.headers["content-length"]) > this.#maxBody)
156
+ this.#tooLarge();
157
+ }
158
+ #tooLarge() {
159
+ this.#overflow = true;
160
+ throw new HoneyError({ errorKey: EK.content_too_large, status: "content_too_large" });
161
+ }
162
+ #cappedStream() {
163
+ /* Node's web stream and the DOM ReadableStream brands do not overlap */
164
+ if (this.#maxBody <= 0)
165
+ return Readable.toWeb(this.#incoming);
166
+ const chunks = this.#incoming[Symbol.asyncIterator]();
167
+ return new ReadableStream({
168
+ cancel: async () => {
169
+ await chunks.return?.();
170
+ },
171
+ pull: async (controller) => {
172
+ try {
173
+ this.#checkDeclared();
174
+ const { done, value } = (await chunks.next());
175
+ if (done === true)
176
+ return controller.close();
177
+ this.#count(value.byteLength);
178
+ controller.enqueue(value);
179
+ }
180
+ catch (error) {
181
+ controller.error(error);
182
+ void chunks.return?.();
183
+ }
184
+ },
185
+ });
186
+ }
187
+ async #read() {
188
+ /* a request without a body reads as empty, any number of times */
189
+ if (!this.#hasBody)
190
+ return Buffer.alloc(0);
191
+ if (this.bodyUsed)
192
+ throw new TypeError("Body has already been used");
193
+ this.#bodyUsed = true;
194
+ if (this.#fetch !== undefined)
195
+ return Buffer.from(await this.#fetch.arrayBuffer());
196
+ if (this.#stream !== undefined)
197
+ return Buffer.from(await new Response(this.#stream).arrayBuffer());
198
+ this.#checkDeclared();
199
+ const chunks = [];
200
+ for await (const chunk of this.#incoming) {
201
+ this.#count(chunk.byteLength);
202
+ chunks.push(chunk);
203
+ }
204
+ return chunks.length === 1 ? chunks[0] : Buffer.concat(chunks);
205
+ }
206
+ }
207
+ /**
208
+ * The Request the app sees for `incoming`. It is not a Fetch `Request` (`instanceof Request` is
209
+ * false): `toFetchRequest()` gives the real one. A body over `maxBody` bytes fails its read with
210
+ * 413; `0` turns the cap off.
211
+ */
212
+ export function nodeRequest(incoming, url, maxBody) {
213
+ return new NodeRequest(incoming, url, maxBody);
214
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Fetch → `node:http`: a Response written to a ServerResponse. Headers that described another
3
+ * connection are dropped, a stream's declared length is never trusted, a HoneyResponse goes out
4
+ * from its bytes and header map with no Fetch Response built.
5
+ */
6
+ import type { ServerResponse } from "node:http";
7
+ /**
8
+ * Write `response` to `res`: headers for this connection, the body buffered or piped. For a
9
+ * HEAD (`head`), Node writes no body; a body still unread is never read.
10
+ */
11
+ export declare function writeResponse(response: Response, res: ServerResponse, head?: boolean): Promise<void>;