@lovrozagar/honey 0.7.3 → 1.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1005) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +930 -1664
  3. package/bin/honey.js +87 -27
  4. package/dist/adapters/bun/serve.d.ts +18 -0
  5. package/dist/adapters/bun/serve.js +89 -0
  6. package/dist/adapters/fetch-request.d.ts +20 -0
  7. package/dist/adapters/fetch-request.js +29 -0
  8. package/dist/adapters/node/headers.d.ts +27 -0
  9. package/dist/adapters/node/headers.js +86 -0
  10. package/dist/adapters/node/request.d.ts +16 -0
  11. package/dist/adapters/node/request.js +214 -0
  12. package/dist/adapters/node/response.d.ts +11 -0
  13. package/dist/adapters/node/response.js +126 -0
  14. package/dist/adapters/node/serve.d.ts +39 -0
  15. package/dist/adapters/node/serve.js +205 -0
  16. package/dist/adapters/node/url.d.ts +13 -0
  17. package/dist/adapters/node/url.js +87 -0
  18. package/dist/adapters/serve.d.ts +36 -0
  19. package/dist/adapters/serve.js +52 -0
  20. package/dist/build/artifacts.d.ts +34 -0
  21. package/dist/build/artifacts.js +123 -0
  22. package/dist/build/cli-args.d.ts +30 -0
  23. package/dist/build/cli-args.js +97 -0
  24. package/dist/build/cli.d.ts +11 -0
  25. package/dist/build/cli.js +150 -0
  26. package/dist/build/config.d.ts +102 -0
  27. package/dist/build/config.js +89 -0
  28. package/dist/build/generate.d.ts +19 -0
  29. package/dist/build/generate.js +80 -0
  30. package/dist/build/glob.d.ts +8 -0
  31. package/dist/build/glob.js +97 -0
  32. package/dist/build/index.d.ts +3 -58
  33. package/dist/build/index.js +3 -173
  34. package/dist/build/init.d.ts +3 -0
  35. package/dist/build/init.js +131 -0
  36. package/dist/build/loaders.d.ts +33 -0
  37. package/dist/build/loaders.js +105 -0
  38. package/dist/build/plugin.d.ts +52 -0
  39. package/dist/build/plugin.js +146 -0
  40. package/dist/build/source.d.ts +21 -0
  41. package/dist/build/source.js +100 -0
  42. package/dist/build/targets.d.ts +59 -0
  43. package/dist/build/targets.js +107 -0
  44. package/dist/context/context.d.ts +111 -0
  45. package/dist/context/context.js +213 -0
  46. package/dist/context/cookie-sign.d.ts +38 -0
  47. package/dist/context/cookie-sign.js +113 -0
  48. package/dist/context/cookie.d.ts +28 -0
  49. package/dist/context/cookie.js +142 -0
  50. package/dist/context/peer.d.ts +34 -0
  51. package/dist/context/peer.js +190 -0
  52. package/dist/errors/error.d.ts +60 -0
  53. package/dist/errors/error.js +84 -0
  54. package/dist/errors/errors.d.ts +45 -0
  55. package/dist/errors/errors.js +31 -0
  56. package/dist/errors/on-error.d.ts +10 -0
  57. package/dist/errors/on-error.js +204 -0
  58. package/dist/errors/problem-json.d.ts +14 -0
  59. package/dist/errors/problem-json.js +58 -0
  60. package/dist/errors/projector.d.ts +50 -0
  61. package/dist/errors/projector.js +107 -0
  62. package/dist/i18n/error-i18n.d.ts +26 -0
  63. package/dist/i18n/error-i18n.js +77 -0
  64. package/dist/i18n/i18n.d.ts +21 -0
  65. package/dist/i18n/i18n.js +40 -0
  66. package/dist/i18n/icu.d.ts +29 -0
  67. package/dist/i18n/icu.js +170 -0
  68. package/dist/i18n/index.d.ts +4 -0
  69. package/dist/i18n/index.js +3 -0
  70. package/dist/index.d.ts +30 -746
  71. package/dist/index.js +12 -2364
  72. package/dist/input/accepts.d.ts +5 -0
  73. package/dist/input/accepts.js +105 -0
  74. package/dist/input/binary.d.ts +20 -0
  75. package/dist/input/binary.js +40 -0
  76. package/dist/input/body-kind.d.ts +15 -0
  77. package/dist/input/body-kind.js +47 -0
  78. package/dist/input/body-limit.d.ts +21 -0
  79. package/dist/input/body-limit.js +99 -0
  80. package/dist/input/cookies.d.ts +7 -0
  81. package/dist/input/cookies.js +8 -0
  82. package/dist/input/form.d.ts +10 -0
  83. package/dist/input/form.js +24 -0
  84. package/dist/input/headers.d.ts +7 -0
  85. package/dist/input/headers.js +8 -0
  86. package/dist/input/input.d.ts +91 -0
  87. package/dist/input/input.js +88 -0
  88. package/dist/input/json.d.ts +10 -0
  89. package/dist/input/json.js +22 -0
  90. package/dist/input/params.d.ts +7 -0
  91. package/dist/input/params.js +8 -0
  92. package/dist/input/query.d.ts +10 -0
  93. package/dist/input/query.js +17 -0
  94. package/dist/mcp/mount.d.ts +116 -0
  95. package/dist/mcp/mount.js +45 -0
  96. package/dist/mcp/oauth.d.ts +14 -0
  97. package/dist/mcp/oauth.js +88 -0
  98. package/dist/mcp/uploads.d.ts +36 -0
  99. package/dist/mcp/uploads.js +171 -0
  100. package/dist/mcp/url-files.d.ts +32 -0
  101. package/dist/mcp/url-files.js +75 -0
  102. package/dist/meta/meta-spec-apply.d.ts +25 -0
  103. package/dist/meta/meta-spec-apply.js +83 -0
  104. package/dist/meta/meta-spec-merge.d.ts +103 -0
  105. package/dist/meta/meta-spec-merge.js +50 -0
  106. package/dist/meta/meta-spec-validate.d.ts +61 -0
  107. package/dist/meta/meta-spec-validate.js +166 -0
  108. package/dist/meta/meta-spec.d.ts +49 -0
  109. package/dist/meta/meta-spec.js +197 -0
  110. package/dist/middleware/compress.d.ts +15 -0
  111. package/dist/middleware/compress.js +93 -0
  112. package/dist/middleware/cors.d.ts +18 -0
  113. package/dist/middleware/cors.js +80 -0
  114. package/dist/middleware/csrf.d.ts +11 -0
  115. package/dist/middleware/csrf.js +65 -0
  116. package/dist/middleware/ip-restrict.d.ts +10 -0
  117. package/dist/middleware/ip-restrict.js +82 -0
  118. package/dist/middleware/middleware.d.ts +53 -0
  119. package/dist/middleware/middleware.js +112 -0
  120. package/dist/middleware/powered-by.d.ts +6 -0
  121. package/dist/middleware/powered-by.js +13 -0
  122. package/dist/middleware/rate-limit.d.ts +40 -0
  123. package/dist/middleware/rate-limit.js +90 -0
  124. package/dist/middleware/request-id.d.ts +25 -0
  125. package/dist/middleware/request-id.js +30 -0
  126. package/dist/middleware/secure-headers.d.ts +18 -0
  127. package/dist/middleware/secure-headers.js +36 -0
  128. package/dist/middleware/server-timing.d.ts +8 -0
  129. package/dist/middleware/server-timing.js +52 -0
  130. package/dist/middleware/timeout.d.ts +6 -0
  131. package/dist/middleware/timeout.js +29 -0
  132. package/dist/observability/curl-logger.d.ts +46 -0
  133. package/dist/observability/curl-logger.js +175 -0
  134. package/dist/observability/request-to-curl.d.ts +17 -0
  135. package/dist/observability/request-to-curl.js +47 -0
  136. package/dist/openapi/collect.d.ts +56 -18
  137. package/dist/openapi/collect.js +109 -23
  138. package/dist/openapi/components.d.ts +9 -0
  139. package/dist/openapi/components.js +90 -0
  140. package/dist/openapi/docs-page.d.ts +20 -18
  141. package/dist/openapi/docs-page.js +28 -46
  142. package/dist/openapi/document.d.ts +33 -26
  143. package/dist/openapi/document.js +21 -780
  144. package/dist/openapi/extract-schemas.d.ts +11 -0
  145. package/dist/openapi/extract-schemas.js +31 -0
  146. package/dist/openapi/generate.d.ts +47 -0
  147. package/dist/openapi/generate.js +180 -0
  148. package/dist/openapi/manifest.d.ts +41 -0
  149. package/dist/openapi/manifest.js +49 -0
  150. package/dist/openapi/output-keys.d.ts +6 -0
  151. package/dist/openapi/output-keys.js +24 -0
  152. package/dist/openapi/paths.d.ts +35 -0
  153. package/dist/openapi/paths.js +175 -0
  154. package/dist/openapi/register.d.ts +14 -3
  155. package/dist/openapi/register.js +13 -20
  156. package/dist/openapi/responses.d.ts +44 -0
  157. package/dist/openapi/responses.js +159 -0
  158. package/dist/openapi/scalar.d.ts +4 -14
  159. package/dist/openapi/scalar.js +5 -7
  160. package/dist/openapi/security.d.ts +4 -0
  161. package/dist/openapi/security.js +25 -0
  162. package/dist/openapi/serve.d.ts +25 -9
  163. package/dist/openapi/serve.js +108 -29
  164. package/dist/openapi/servers.d.ts +19 -0
  165. package/dist/openapi/servers.js +72 -0
  166. package/dist/openapi/swagger.d.ts +4 -14
  167. package/dist/openapi/swagger.js +5 -7
  168. package/dist/openapi/tags.d.ts +20 -0
  169. package/dist/openapi/tags.js +20 -0
  170. package/dist/openapi/webhooks.d.ts +19 -0
  171. package/dist/openapi/webhooks.js +70 -0
  172. package/dist/openapi/yaml.d.ts +8 -0
  173. package/dist/openapi/yaml.js +74 -0
  174. package/dist/proxy/headers.d.ts +30 -0
  175. package/dist/proxy/headers.js +86 -0
  176. package/dist/proxy/proxy.d.ts +39 -0
  177. package/dist/proxy/proxy.js +103 -0
  178. package/dist/proxy/upstream.d.ts +30 -0
  179. package/dist/proxy/upstream.js +116 -0
  180. package/dist/realtime/bus.d.ts +10 -13
  181. package/dist/realtime/bus.js +48 -93
  182. package/dist/realtime/invoke-user.d.ts +36 -0
  183. package/dist/realtime/invoke-user.js +103 -0
  184. package/dist/realtime/realtime.d.ts +7 -0
  185. package/dist/realtime/realtime.js +40 -0
  186. package/dist/realtime/route.d.ts +33 -27
  187. package/dist/realtime/route.js +27 -43
  188. package/dist/realtime/server.d.ts +24 -28
  189. package/dist/realtime/server.js +202 -225
  190. package/dist/response/binary.d.ts +18 -0
  191. package/dist/response/binary.js +10 -0
  192. package/dist/response/builder.d.ts +73 -0
  193. package/dist/response/builder.js +214 -0
  194. package/dist/response/cache-control.d.ts +30 -0
  195. package/dist/response/cache-control.js +74 -0
  196. package/dist/response/etag.d.ts +15 -0
  197. package/dist/response/etag.js +83 -0
  198. package/dist/response/media-type.d.ts +28 -0
  199. package/dist/response/media-type.js +97 -0
  200. package/dist/response/out-headers.d.ts +31 -0
  201. package/dist/response/out-headers.js +130 -0
  202. package/dist/response/pretty-json.d.ts +10 -0
  203. package/dist/response/pretty-json.js +44 -0
  204. package/dist/response/range.d.ts +19 -0
  205. package/dist/response/range.js +98 -0
  206. package/dist/response/response-headers.d.ts +11 -0
  207. package/dist/response/response-headers.js +21 -0
  208. package/dist/response/response.d.ts +69 -0
  209. package/dist/response/response.js +208 -0
  210. package/dist/response/sse.d.ts +41 -0
  211. package/dist/response/sse.js +73 -0
  212. package/dist/response/static.d.ts +20 -0
  213. package/dist/response/static.js +181 -0
  214. package/dist/response/status.d.ts +5 -0
  215. package/dist/response/status.js +68 -0
  216. package/dist/response/with-headers.d.ts +11 -0
  217. package/dist/response/with-headers.js +47 -0
  218. package/dist/routing/app-types.d.ts +175 -0
  219. package/dist/routing/app-types.js +1 -0
  220. package/dist/routing/app.d.ts +76 -0
  221. package/dist/routing/app.js +137 -0
  222. package/dist/routing/codegen-types.d.ts +17 -0
  223. package/dist/routing/codegen-types.js +1 -0
  224. package/dist/routing/delegate.d.ts +9 -0
  225. package/dist/routing/delegate.js +75 -0
  226. package/dist/routing/dispatch.d.ts +22 -0
  227. package/dist/routing/dispatch.js +255 -0
  228. package/dist/routing/finalize.d.ts +47 -0
  229. package/dist/routing/finalize.js +169 -0
  230. package/dist/routing/gateway-tree.d.ts +19 -0
  231. package/dist/routing/gateway-tree.js +74 -0
  232. package/dist/routing/invalidate-check.d.ts +58 -0
  233. package/dist/routing/invalidate-check.js +124 -0
  234. package/dist/routing/match.d.ts +22 -0
  235. package/dist/routing/match.js +108 -0
  236. package/dist/routing/meta-types.d.ts +34 -0
  237. package/dist/routing/meta-types.js +5 -0
  238. package/dist/routing/middleware-chain.d.ts +16 -0
  239. package/dist/routing/middleware-chain.js +41 -0
  240. package/dist/routing/output-types.d.ts +91 -0
  241. package/dist/routing/output-types.js +1 -0
  242. package/dist/routing/pattern.d.ts +55 -0
  243. package/dist/routing/pattern.js +219 -0
  244. package/dist/routing/record.d.ts +18 -0
  245. package/dist/routing/record.js +4 -0
  246. package/dist/routing/register.d.ts +135 -0
  247. package/dist/routing/register.js +155 -0
  248. package/dist/routing/request-path.d.ts +30 -0
  249. package/dist/routing/request-path.js +173 -0
  250. package/dist/routing/route-builder.d.ts +160 -0
  251. package/dist/routing/route-builder.js +86 -0
  252. package/dist/routing/route-tree.d.ts +18 -0
  253. package/dist/routing/route-tree.js +91 -0
  254. package/dist/routing/settings-chain.d.ts +75 -0
  255. package/dist/routing/settings-chain.js +137 -0
  256. package/dist/routing/settings.d.ts +90 -0
  257. package/dist/routing/settings.js +44 -0
  258. package/dist/routing/tap.d.ts +31 -0
  259. package/dist/routing/tap.js +77 -0
  260. package/dist/routing/tree-merge.d.ts +7 -0
  261. package/dist/routing/tree-merge.js +77 -0
  262. package/dist/routing/tree.d.ts +85 -0
  263. package/dist/routing/tree.js +196 -0
  264. package/dist/routing/types.d.ts +20 -0
  265. package/dist/routing/types.js +1 -0
  266. package/dist/routing/ws-builder.d.ts +62 -0
  267. package/dist/routing/ws-builder.js +109 -0
  268. package/dist/runtime/detect-runtime.d.ts +16 -0
  269. package/dist/runtime/detect-runtime.js +11 -0
  270. package/dist/runtime/optional-peer.d.ts +10 -0
  271. package/dist/runtime/optional-peer.js +19 -0
  272. package/dist/schema/arktype.d.ts +7 -0
  273. package/dist/schema/arktype.js +13 -0
  274. package/dist/schema/canonicalize.d.ts +8 -0
  275. package/dist/schema/canonicalize.js +19 -0
  276. package/dist/schema/effect.d.ts +7 -0
  277. package/dist/schema/effect.js +4 -0
  278. package/dist/schema/naming.d.ts +31 -0
  279. package/dist/schema/naming.js +116 -0
  280. package/dist/schema/sanitize-spec.d.ts +15 -0
  281. package/dist/schema/sanitize-spec.js +43 -0
  282. package/dist/schema/slots.d.ts +15 -0
  283. package/dist/schema/slots.js +179 -0
  284. package/dist/schema/to-json-schema.d.ts +34 -0
  285. package/dist/schema/to-json-schema.js +94 -0
  286. package/dist/schema/valibot.d.ts +4 -0
  287. package/dist/schema/valibot.js +153 -0
  288. package/dist/schema/yup.d.ts +3 -0
  289. package/dist/schema/yup.js +57 -0
  290. package/dist/schema/zod.d.ts +6 -0
  291. package/dist/schema/zod.js +192 -0
  292. package/dist/security/crypto.d.ts +7 -0
  293. package/dist/security/crypto.js +30 -0
  294. package/dist/streaming/producer-stream.d.ts +45 -0
  295. package/dist/streaming/producer-stream.js +251 -0
  296. package/dist/telemetry/fields.d.ts +43 -0
  297. package/dist/telemetry/fields.js +64 -0
  298. package/dist/telemetry/log-format.d.ts +7 -0
  299. package/dist/telemetry/log-format.js +43 -0
  300. package/dist/telemetry/logger.d.ts +44 -0
  301. package/dist/telemetry/logger.js +136 -0
  302. package/dist/telemetry/otel-subpath.d.ts +7 -0
  303. package/dist/telemetry/otel-subpath.js +5 -0
  304. package/dist/telemetry/otel.d.ts +50 -57
  305. package/dist/telemetry/otel.js +54 -130
  306. package/dist/telemetry/request-log.d.ts +22 -0
  307. package/dist/telemetry/request-log.js +83 -0
  308. package/dist/telemetry/request-trace.d.ts +123 -0
  309. package/dist/telemetry/request-trace.js +199 -0
  310. package/dist/telemetry/span-lifecycle.d.ts +11 -0
  311. package/dist/telemetry/span-lifecycle.js +114 -0
  312. package/dist/telemetry/traceparent.d.ts +40 -0
  313. package/dist/telemetry/traceparent.js +73 -0
  314. package/dist/testing/testing.d.ts +42 -0
  315. package/dist/testing/testing.js +101 -0
  316. package/dist/validation/content-type.d.ts +21 -0
  317. package/dist/validation/content-type.js +42 -0
  318. package/dist/validation/standard-schema.d.ts +41 -0
  319. package/dist/validation/standard-schema.js +5 -0
  320. package/dist/validation/validate-input.d.ts +45 -0
  321. package/dist/validation/validate-input.js +174 -0
  322. package/dist/validation/validate-output.d.ts +34 -0
  323. package/dist/validation/validate-output.js +107 -0
  324. package/dist/ws/bun.d.ts +30 -25
  325. package/dist/ws/bun.js +42 -46
  326. package/dist/ws/cloudflare.d.ts +6 -75
  327. package/dist/ws/cloudflare.js +37 -104
  328. package/dist/ws/contract.d.ts +74 -0
  329. package/dist/ws/contract.js +83 -0
  330. package/dist/ws/node.d.ts +12 -21
  331. package/dist/ws/node.js +103 -151
  332. package/dist/ws/origin.d.ts +23 -0
  333. package/dist/ws/origin.js +48 -0
  334. package/dist/ws/route.d.ts +14 -0
  335. package/dist/ws/route.js +5 -0
  336. package/dist/ws/session.d.ts +15 -6
  337. package/dist/ws/session.js +22 -23
  338. package/dist/ws/shared.d.ts +23 -33
  339. package/dist/ws/shared.js +53 -39
  340. package/package.json +169 -251
  341. package/dist/accepts.d.ts +0 -12
  342. package/dist/accepts.d.ts.map +0 -1
  343. package/dist/accepts.js +0 -126
  344. package/dist/accepts.js.map +0 -1
  345. package/dist/body-kind.d.ts +0 -26
  346. package/dist/body-kind.d.ts.map +0 -1
  347. package/dist/body-kind.js +0 -70
  348. package/dist/body-kind.js.map +0 -1
  349. package/dist/body-limit.d.ts +0 -26
  350. package/dist/body-limit.d.ts.map +0 -1
  351. package/dist/body-limit.js +0 -126
  352. package/dist/body-limit.js.map +0 -1
  353. package/dist/build/index.d.ts.map +0 -1
  354. package/dist/build/index.js.map +0 -1
  355. package/dist/cli-args.d.ts +0 -33
  356. package/dist/cli-args.d.ts.map +0 -1
  357. package/dist/cli-args.js +0 -102
  358. package/dist/cli-args.js.map +0 -1
  359. package/dist/cli-go/auth.go +0 -26
  360. package/dist/cli-go/config.go +0 -192
  361. package/dist/cli-go/errors.go +0 -75
  362. package/dist/cli-go/multipart.go +0 -79
  363. package/dist/cli-go/output.go +0 -163
  364. package/dist/cli-go/root.go +0 -30
  365. package/dist/cli-go/stream.go +0 -88
  366. package/dist/cli-go/version.go +0 -5
  367. package/dist/cli.d.ts +0 -3
  368. package/dist/cli.d.ts.map +0 -1
  369. package/dist/cli.js +0 -209
  370. package/dist/cli.js.map +0 -1
  371. package/dist/client/defaults.d.ts +0 -12
  372. package/dist/client/defaults.d.ts.map +0 -1
  373. package/dist/client/defaults.js +0 -48
  374. package/dist/client/defaults.js.map +0 -1
  375. package/dist/client/error.d.ts +0 -49
  376. package/dist/client/error.d.ts.map +0 -1
  377. package/dist/client/error.js +0 -71
  378. package/dist/client/error.js.map +0 -1
  379. package/dist/client/http.d.ts +0 -155
  380. package/dist/client/http.d.ts.map +0 -1
  381. package/dist/client/http.js +0 -571
  382. package/dist/client/http.js.map +0 -1
  383. package/dist/client/index.d.ts +0 -23
  384. package/dist/client/index.d.ts.map +0 -1
  385. package/dist/client/index.js +0 -95
  386. package/dist/client/index.js.map +0 -1
  387. package/dist/client/path.d.ts +0 -26
  388. package/dist/client/path.d.ts.map +0 -1
  389. package/dist/client/path.js +0 -163
  390. package/dist/client/path.js.map +0 -1
  391. package/dist/client/redirect-policy.d.ts +0 -12
  392. package/dist/client/redirect-policy.d.ts.map +0 -1
  393. package/dist/client/redirect-policy.js +0 -20
  394. package/dist/client/redirect-policy.js.map +0 -1
  395. package/dist/client/sdk.d.ts +0 -70
  396. package/dist/client/sdk.d.ts.map +0 -1
  397. package/dist/client/sdk.js +0 -292
  398. package/dist/client/sdk.js.map +0 -1
  399. package/dist/client/sse.d.ts +0 -23
  400. package/dist/client/sse.d.ts.map +0 -1
  401. package/dist/client/sse.js +0 -129
  402. package/dist/client/sse.js.map +0 -1
  403. package/dist/client/types.d.ts +0 -124
  404. package/dist/client/types.d.ts.map +0 -1
  405. package/dist/client/types.js +0 -2
  406. package/dist/client/types.js.map +0 -1
  407. package/dist/client/ws.d.ts +0 -22
  408. package/dist/client/ws.d.ts.map +0 -1
  409. package/dist/client/ws.js +0 -112
  410. package/dist/client/ws.js.map +0 -1
  411. package/dist/client-go/errors.go +0 -236
  412. package/dist/client-go/export.go +0 -44
  413. package/dist/client-go/invalidation.go +0 -371
  414. package/dist/client-go/nullable.go +0 -62
  415. package/dist/client-go/realtime.go +0 -354
  416. package/dist/client-go/result.go +0 -20
  417. package/dist/client-go/runtime.go +0 -975
  418. package/dist/client-go/sse.go +0 -159
  419. package/dist/client-go/transport.go +0 -495
  420. package/dist/client-go/ws.go +0 -128
  421. package/dist/client-info.d.ts +0 -36
  422. package/dist/client-info.d.ts.map +0 -1
  423. package/dist/client-info.js +0 -53
  424. package/dist/client-info.js.map +0 -1
  425. package/dist/client-mcp/README.md +0 -10
  426. package/dist/client-mcp/server.ts +0 -221
  427. package/dist/client-mcp/types.ts +0 -19
  428. package/dist/client-python/_errors.py +0 -115
  429. package/dist/client-python/_invalidation.py +0 -494
  430. package/dist/client-python/_realtime.py +0 -179
  431. package/dist/client-python/_runtime.py +0 -860
  432. package/dist/client-python/_sse.py +0 -155
  433. package/dist/client-python/_transport.py +0 -366
  434. package/dist/client-python/_ws.py +0 -159
  435. package/dist/client-python/py.typed +0 -0
  436. package/dist/client-rust/errors.rs +0 -220
  437. package/dist/client-rust/invalidation.rs +0 -412
  438. package/dist/client-rust/invalidation_sync.rs +0 -93
  439. package/dist/client-rust/nullable.rs +0 -17
  440. package/dist/client-rust/realtime.rs +0 -702
  441. package/dist/client-rust/result.rs +0 -22
  442. package/dist/client-rust/runtime.rs +0 -980
  443. package/dist/client-rust/runtime_sync.rs +0 -484
  444. package/dist/client-rust/sse.rs +0 -188
  445. package/dist/client-rust/ws.rs +0 -167
  446. package/dist/codegen-go-cli.d.ts +0 -22
  447. package/dist/codegen-go-cli.d.ts.map +0 -1
  448. package/dist/codegen-go-cli.js +0 -964
  449. package/dist/codegen-go-cli.js.map +0 -1
  450. package/dist/codegen-go.d.ts +0 -41
  451. package/dist/codegen-go.d.ts.map +0 -1
  452. package/dist/codegen-go.js +0 -872
  453. package/dist/codegen-go.js.map +0 -1
  454. package/dist/codegen-hash.d.ts +0 -3
  455. package/dist/codegen-hash.d.ts.map +0 -1
  456. package/dist/codegen-hash.js +0 -9
  457. package/dist/codegen-hash.js.map +0 -1
  458. package/dist/codegen-ir.d.ts +0 -190
  459. package/dist/codegen-ir.d.ts.map +0 -1
  460. package/dist/codegen-ir.js +0 -661
  461. package/dist/codegen-ir.js.map +0 -1
  462. package/dist/codegen-lang.d.ts +0 -65
  463. package/dist/codegen-lang.d.ts.map +0 -1
  464. package/dist/codegen-lang.js +0 -526
  465. package/dist/codegen-lang.js.map +0 -1
  466. package/dist/codegen-load.d.ts +0 -31
  467. package/dist/codegen-load.d.ts.map +0 -1
  468. package/dist/codegen-load.js +0 -138
  469. package/dist/codegen-load.js.map +0 -1
  470. package/dist/codegen-loaders.d.ts +0 -12
  471. package/dist/codegen-loaders.d.ts.map +0 -1
  472. package/dist/codegen-loaders.js +0 -55
  473. package/dist/codegen-loaders.js.map +0 -1
  474. package/dist/codegen-mcp.d.ts +0 -13
  475. package/dist/codegen-mcp.d.ts.map +0 -1
  476. package/dist/codegen-mcp.js +0 -368
  477. package/dist/codegen-mcp.js.map +0 -1
  478. package/dist/codegen-python.d.ts +0 -33
  479. package/dist/codegen-python.d.ts.map +0 -1
  480. package/dist/codegen-python.js +0 -828
  481. package/dist/codegen-python.js.map +0 -1
  482. package/dist/codegen-route-tree-intern.d.ts +0 -40
  483. package/dist/codegen-route-tree-intern.d.ts.map +0 -1
  484. package/dist/codegen-route-tree-intern.js +0 -221
  485. package/dist/codegen-route-tree-intern.js.map +0 -1
  486. package/dist/codegen-rust.d.ts +0 -18
  487. package/dist/codegen-rust.d.ts.map +0 -1
  488. package/dist/codegen-rust.js +0 -1293
  489. package/dist/codegen-rust.js.map +0 -1
  490. package/dist/codegen-sanitize.d.ts +0 -3
  491. package/dist/codegen-sanitize.d.ts.map +0 -1
  492. package/dist/codegen-sanitize.js +0 -56
  493. package/dist/codegen-sanitize.js.map +0 -1
  494. package/dist/codegen-schema-naming.d.ts +0 -27
  495. package/dist/codegen-schema-naming.d.ts.map +0 -1
  496. package/dist/codegen-schema-naming.js +0 -150
  497. package/dist/codegen-schema-naming.js.map +0 -1
  498. package/dist/codegen-sdk-model.d.ts +0 -71
  499. package/dist/codegen-sdk-model.d.ts.map +0 -1
  500. package/dist/codegen-sdk-model.js +0 -179
  501. package/dist/codegen-sdk-model.js.map +0 -1
  502. package/dist/codegen.d.ts +0 -187
  503. package/dist/codegen.d.ts.map +0 -1
  504. package/dist/codegen.js +0 -4619
  505. package/dist/codegen.js.map +0 -1
  506. package/dist/context.d.ts +0 -86
  507. package/dist/context.d.ts.map +0 -1
  508. package/dist/context.js +0 -242
  509. package/dist/context.js.map +0 -1
  510. package/dist/cookie-sign.d.ts +0 -17
  511. package/dist/cookie-sign.d.ts.map +0 -1
  512. package/dist/cookie-sign.js +0 -104
  513. package/dist/cookie-sign.js.map +0 -1
  514. package/dist/cookie.d.ts +0 -24
  515. package/dist/cookie.d.ts.map +0 -1
  516. package/dist/cookie.js +0 -138
  517. package/dist/cookie.js.map +0 -1
  518. package/dist/cors.d.ts +0 -14
  519. package/dist/cors.d.ts.map +0 -1
  520. package/dist/cors.js +0 -87
  521. package/dist/cors.js.map +0 -1
  522. package/dist/crypto.d.ts +0 -7
  523. package/dist/crypto.d.ts.map +0 -1
  524. package/dist/crypto.js +0 -38
  525. package/dist/crypto.js.map +0 -1
  526. package/dist/csrf.d.ts +0 -28
  527. package/dist/csrf.d.ts.map +0 -1
  528. package/dist/csrf.js +0 -79
  529. package/dist/csrf.js.map +0 -1
  530. package/dist/curl-logger.d.ts +0 -44
  531. package/dist/curl-logger.d.ts.map +0 -1
  532. package/dist/curl-logger.js +0 -199
  533. package/dist/curl-logger.js.map +0 -1
  534. package/dist/detect-runtime.d.ts +0 -16
  535. package/dist/detect-runtime.d.ts.map +0 -1
  536. package/dist/detect-runtime.js +0 -13
  537. package/dist/detect-runtime.js.map +0 -1
  538. package/dist/dict.d.ts +0 -11
  539. package/dist/dict.d.ts.map +0 -1
  540. package/dist/dict.js +0 -13
  541. package/dist/dict.js.map +0 -1
  542. package/dist/error.d.ts +0 -21
  543. package/dist/error.d.ts.map +0 -1
  544. package/dist/error.js +0 -44
  545. package/dist/error.js.map +0 -1
  546. package/dist/errors.d.ts +0 -40
  547. package/dist/errors.d.ts.map +0 -1
  548. package/dist/errors.js +0 -39
  549. package/dist/errors.js.map +0 -1
  550. package/dist/etag.d.ts +0 -11
  551. package/dist/etag.d.ts.map +0 -1
  552. package/dist/etag.js +0 -82
  553. package/dist/etag.js.map +0 -1
  554. package/dist/feature-detect.d.ts +0 -25
  555. package/dist/feature-detect.d.ts.map +0 -1
  556. package/dist/feature-detect.js +0 -144
  557. package/dist/feature-detect.js.map +0 -1
  558. package/dist/feature-load.d.ts +0 -3
  559. package/dist/feature-load.d.ts.map +0 -1
  560. package/dist/feature-load.js +0 -36
  561. package/dist/feature-load.js.map +0 -1
  562. package/dist/feature-slots.d.ts +0 -44
  563. package/dist/feature-slots.d.ts.map +0 -1
  564. package/dist/feature-slots.js +0 -48
  565. package/dist/feature-slots.js.map +0 -1
  566. package/dist/fetch-request.d.ts +0 -10
  567. package/dist/fetch-request.d.ts.map +0 -1
  568. package/dist/fetch-request.js +0 -13
  569. package/dist/fetch-request.js.map +0 -1
  570. package/dist/gen-process.d.ts +0 -15
  571. package/dist/gen-process.d.ts.map +0 -1
  572. package/dist/gen-process.js +0 -43
  573. package/dist/gen-process.js.map +0 -1
  574. package/dist/gen-write.d.ts +0 -19
  575. package/dist/gen-write.d.ts.map +0 -1
  576. package/dist/gen-write.js +0 -120
  577. package/dist/gen-write.js.map +0 -1
  578. package/dist/glob.d.ts +0 -21
  579. package/dist/glob.d.ts.map +0 -1
  580. package/dist/glob.js +0 -115
  581. package/dist/glob.js.map +0 -1
  582. package/dist/go-type-emitter.d.ts +0 -47
  583. package/dist/go-type-emitter.d.ts.map +0 -1
  584. package/dist/go-type-emitter.js +0 -594
  585. package/dist/go-type-emitter.js.map +0 -1
  586. package/dist/honey-response.d.ts +0 -82
  587. package/dist/honey-response.d.ts.map +0 -1
  588. package/dist/honey-response.js +0 -338
  589. package/dist/honey-response.js.map +0 -1
  590. package/dist/i18n-slot.d.ts +0 -15
  591. package/dist/i18n-slot.d.ts.map +0 -1
  592. package/dist/i18n-slot.js +0 -14
  593. package/dist/i18n-slot.js.map +0 -1
  594. package/dist/i18n.d.ts +0 -29
  595. package/dist/i18n.d.ts.map +0 -1
  596. package/dist/i18n.js +0 -250
  597. package/dist/i18n.js.map +0 -1
  598. package/dist/index.d.ts.map +0 -1
  599. package/dist/index.js.map +0 -1
  600. package/dist/init.d.ts +0 -5
  601. package/dist/init.d.ts.map +0 -1
  602. package/dist/init.js +0 -140
  603. package/dist/init.js.map +0 -1
  604. package/dist/input.d.ts +0 -6
  605. package/dist/input.d.ts.map +0 -1
  606. package/dist/input.js +0 -4
  607. package/dist/input.js.map +0 -1
  608. package/dist/invalidate-check.d.ts +0 -61
  609. package/dist/invalidate-check.d.ts.map +0 -1
  610. package/dist/invalidate-check.js +0 -163
  611. package/dist/invalidate-check.js.map +0 -1
  612. package/dist/invoke-user.d.ts +0 -35
  613. package/dist/invoke-user.d.ts.map +0 -1
  614. package/dist/invoke-user.js +0 -73
  615. package/dist/invoke-user.js.map +0 -1
  616. package/dist/ip-restrict.d.ts +0 -24
  617. package/dist/ip-restrict.d.ts.map +0 -1
  618. package/dist/ip-restrict.js +0 -60
  619. package/dist/ip-restrict.js.map +0 -1
  620. package/dist/ip.d.ts +0 -39
  621. package/dist/ip.d.ts.map +0 -1
  622. package/dist/ip.js +0 -209
  623. package/dist/ip.js.map +0 -1
  624. package/dist/logger.d.ts +0 -45
  625. package/dist/logger.d.ts.map +0 -1
  626. package/dist/logger.js +0 -113
  627. package/dist/logger.js.map +0 -1
  628. package/dist/media-type.d.ts +0 -30
  629. package/dist/media-type.d.ts.map +0 -1
  630. package/dist/media-type.js +0 -97
  631. package/dist/media-type.js.map +0 -1
  632. package/dist/meta-spec-merge.d.ts +0 -32
  633. package/dist/meta-spec-merge.d.ts.map +0 -1
  634. package/dist/meta-spec-merge.js +0 -68
  635. package/dist/meta-spec-merge.js.map +0 -1
  636. package/dist/meta-spec.d.ts +0 -94
  637. package/dist/meta-spec.d.ts.map +0 -1
  638. package/dist/meta-spec.js +0 -535
  639. package/dist/meta-spec.js.map +0 -1
  640. package/dist/middleware.d.ts +0 -77
  641. package/dist/middleware.d.ts.map +0 -1
  642. package/dist/middleware.js +0 -253
  643. package/dist/middleware.js.map +0 -1
  644. package/dist/node-request.d.ts +0 -104
  645. package/dist/node-request.d.ts.map +0 -1
  646. package/dist/node-request.js +0 -407
  647. package/dist/node-request.js.map +0 -1
  648. package/dist/node.d.ts +0 -30
  649. package/dist/node.d.ts.map +0 -1
  650. package/dist/node.js +0 -396
  651. package/dist/node.js.map +0 -1
  652. package/dist/openapi/collect.d.ts.map +0 -1
  653. package/dist/openapi/collect.js.map +0 -1
  654. package/dist/openapi/docs-page.d.ts.map +0 -1
  655. package/dist/openapi/docs-page.js.map +0 -1
  656. package/dist/openapi/document.d.ts.map +0 -1
  657. package/dist/openapi/document.js.map +0 -1
  658. package/dist/openapi/json-schema-slot.d.ts +0 -12
  659. package/dist/openapi/json-schema-slot.d.ts.map +0 -1
  660. package/dist/openapi/json-schema-slot.js +0 -38
  661. package/dist/openapi/json-schema-slot.js.map +0 -1
  662. package/dist/openapi/register.d.ts.map +0 -1
  663. package/dist/openapi/register.js.map +0 -1
  664. package/dist/openapi/scalar.d.ts.map +0 -1
  665. package/dist/openapi/scalar.js.map +0 -1
  666. package/dist/openapi/serve.d.ts.map +0 -1
  667. package/dist/openapi/serve.js.map +0 -1
  668. package/dist/openapi/spec-factory.d.ts +0 -65
  669. package/dist/openapi/spec-factory.d.ts.map +0 -1
  670. package/dist/openapi/spec-factory.js +0 -52
  671. package/dist/openapi/spec-factory.js.map +0 -1
  672. package/dist/openapi/spec.d.ts +0 -29
  673. package/dist/openapi/spec.d.ts.map +0 -1
  674. package/dist/openapi/spec.js +0 -50
  675. package/dist/openapi/spec.js.map +0 -1
  676. package/dist/openapi/swagger.d.ts.map +0 -1
  677. package/dist/openapi/swagger.js.map +0 -1
  678. package/dist/pattern.d.ts +0 -71
  679. package/dist/pattern.d.ts.map +0 -1
  680. package/dist/pattern.js +0 -239
  681. package/dist/pattern.js.map +0 -1
  682. package/dist/peer.d.ts +0 -17
  683. package/dist/peer.d.ts.map +0 -1
  684. package/dist/peer.js +0 -50
  685. package/dist/peer.js.map +0 -1
  686. package/dist/plugin.d.ts +0 -228
  687. package/dist/plugin.d.ts.map +0 -1
  688. package/dist/plugin.js +0 -666
  689. package/dist/plugin.js.map +0 -1
  690. package/dist/powered-by.d.ts +0 -7
  691. package/dist/powered-by.d.ts.map +0 -1
  692. package/dist/powered-by.js +0 -11
  693. package/dist/powered-by.js.map +0 -1
  694. package/dist/pretty-json.d.ts +0 -10
  695. package/dist/pretty-json.d.ts.map +0 -1
  696. package/dist/pretty-json.js +0 -47
  697. package/dist/pretty-json.js.map +0 -1
  698. package/dist/producer-stream.d.ts +0 -47
  699. package/dist/producer-stream.d.ts.map +0 -1
  700. package/dist/producer-stream.js +0 -267
  701. package/dist/producer-stream.js.map +0 -1
  702. package/dist/proxy.d.ts +0 -90
  703. package/dist/proxy.d.ts.map +0 -1
  704. package/dist/proxy.js +0 -274
  705. package/dist/proxy.js.map +0 -1
  706. package/dist/python-type-emitter.d.ts +0 -24
  707. package/dist/python-type-emitter.d.ts.map +0 -1
  708. package/dist/python-type-emitter.js +0 -157
  709. package/dist/python-type-emitter.js.map +0 -1
  710. package/dist/realtime/bus.d.ts.map +0 -1
  711. package/dist/realtime/bus.js.map +0 -1
  712. package/dist/realtime/register.d.ts +0 -3
  713. package/dist/realtime/register.d.ts.map +0 -1
  714. package/dist/realtime/register.js +0 -10
  715. package/dist/realtime/register.js.map +0 -1
  716. package/dist/realtime/route.d.ts.map +0 -1
  717. package/dist/realtime/route.js.map +0 -1
  718. package/dist/realtime/server.d.ts.map +0 -1
  719. package/dist/realtime/server.js.map +0 -1
  720. package/dist/request-id.d.ts +0 -19
  721. package/dist/request-id.d.ts.map +0 -1
  722. package/dist/request-id.js +0 -16
  723. package/dist/request-id.js.map +0 -1
  724. package/dist/request-limits.d.ts +0 -3
  725. package/dist/request-limits.d.ts.map +0 -1
  726. package/dist/request-limits.js +0 -3
  727. package/dist/request-limits.js.map +0 -1
  728. package/dist/request-path.d.ts +0 -33
  729. package/dist/request-path.d.ts.map +0 -1
  730. package/dist/request-path.js +0 -178
  731. package/dist/request-path.js.map +0 -1
  732. package/dist/request-to-curl.d.ts +0 -15
  733. package/dist/request-to-curl.d.ts.map +0 -1
  734. package/dist/request-to-curl.js +0 -48
  735. package/dist/request-to-curl.js.map +0 -1
  736. package/dist/response.d.ts +0 -86
  737. package/dist/response.d.ts.map +0 -1
  738. package/dist/response.js +0 -313
  739. package/dist/response.js.map +0 -1
  740. package/dist/rust-type-emitter.d.ts +0 -44
  741. package/dist/rust-type-emitter.d.ts.map +0 -1
  742. package/dist/rust-type-emitter.js +0 -463
  743. package/dist/rust-type-emitter.js.map +0 -1
  744. package/dist/secure-headers.d.ts +0 -16
  745. package/dist/secure-headers.d.ts.map +0 -1
  746. package/dist/secure-headers.js +0 -53
  747. package/dist/secure-headers.js.map +0 -1
  748. package/dist/serve-register.d.ts +0 -6
  749. package/dist/serve-register.d.ts.map +0 -1
  750. package/dist/serve-register.js +0 -9
  751. package/dist/serve-register.js.map +0 -1
  752. package/dist/serve-slot.d.ts +0 -9
  753. package/dist/serve-slot.d.ts.map +0 -1
  754. package/dist/serve-slot.js +0 -52
  755. package/dist/serve-slot.js.map +0 -1
  756. package/dist/serve.d.ts +0 -38
  757. package/dist/serve.d.ts.map +0 -1
  758. package/dist/serve.js +0 -157
  759. package/dist/serve.js.map +0 -1
  760. package/dist/server-timing.d.ts +0 -9
  761. package/dist/server-timing.d.ts.map +0 -1
  762. package/dist/server-timing.js +0 -51
  763. package/dist/server-timing.js.map +0 -1
  764. package/dist/static.d.ts +0 -21
  765. package/dist/static.d.ts.map +0 -1
  766. package/dist/static.js +0 -102
  767. package/dist/static.js.map +0 -1
  768. package/dist/telemetry/otel.d.ts.map +0 -1
  769. package/dist/telemetry/otel.js.map +0 -1
  770. package/dist/testing.d.ts +0 -36
  771. package/dist/testing.d.ts.map +0 -1
  772. package/dist/testing.js +0 -124
  773. package/dist/testing.js.map +0 -1
  774. package/dist/timeout.d.ts +0 -13
  775. package/dist/timeout.d.ts.map +0 -1
  776. package/dist/timeout.js +0 -36
  777. package/dist/timeout.js.map +0 -1
  778. package/dist/tree.d.ts +0 -197
  779. package/dist/tree.d.ts.map +0 -1
  780. package/dist/tree.js +0 -437
  781. package/dist/tree.js.map +0 -1
  782. package/dist/trust.d.ts +0 -21
  783. package/dist/trust.d.ts.map +0 -1
  784. package/dist/trust.js +0 -100
  785. package/dist/trust.js.map +0 -1
  786. package/dist/ts-type-emitter.d.ts +0 -8
  787. package/dist/ts-type-emitter.d.ts.map +0 -1
  788. package/dist/ts-type-emitter.js +0 -150
  789. package/dist/ts-type-emitter.js.map +0 -1
  790. package/dist/type-emitter.d.ts +0 -36
  791. package/dist/type-emitter.d.ts.map +0 -1
  792. package/dist/type-emitter.js +0 -729
  793. package/dist/type-emitter.js.map +0 -1
  794. package/dist/type-extractor.d.ts +0 -43
  795. package/dist/type-extractor.d.ts.map +0 -1
  796. package/dist/type-extractor.js +0 -819
  797. package/dist/type-extractor.js.map +0 -1
  798. package/dist/types.d.ts +0 -467
  799. package/dist/types.d.ts.map +0 -1
  800. package/dist/types.js +0 -96
  801. package/dist/types.js.map +0 -1
  802. package/dist/validation.d.ts +0 -31
  803. package/dist/validation.d.ts.map +0 -1
  804. package/dist/validation.js +0 -335
  805. package/dist/validation.js.map +0 -1
  806. package/dist/with-headers.d.ts +0 -15
  807. package/dist/with-headers.d.ts.map +0 -1
  808. package/dist/with-headers.js +0 -45
  809. package/dist/with-headers.js.map +0 -1
  810. package/dist/ws/bun.d.ts.map +0 -1
  811. package/dist/ws/bun.js.map +0 -1
  812. package/dist/ws/cloudflare.d.ts.map +0 -1
  813. package/dist/ws/cloudflare.js.map +0 -1
  814. package/dist/ws/deno.d.ts +0 -13
  815. package/dist/ws/deno.d.ts.map +0 -1
  816. package/dist/ws/deno.js +0 -133
  817. package/dist/ws/deno.js.map +0 -1
  818. package/dist/ws/node.d.ts.map +0 -1
  819. package/dist/ws/node.js.map +0 -1
  820. package/dist/ws/session.d.ts.map +0 -1
  821. package/dist/ws/session.js.map +0 -1
  822. package/dist/ws/shared.d.ts.map +0 -1
  823. package/dist/ws/shared.js.map +0 -1
  824. package/dist/ws-origin.d.ts +0 -20
  825. package/dist/ws-origin.d.ts.map +0 -1
  826. package/dist/ws-origin.js +0 -41
  827. package/dist/ws-origin.js.map +0 -1
  828. package/dist/yaml.d.ts +0 -18
  829. package/dist/yaml.d.ts.map +0 -1
  830. package/dist/yaml.js +0 -101
  831. package/dist/yaml.js.map +0 -1
  832. package/docs/api-ref/go.md +0 -399
  833. package/docs/api-ref/python.md +0 -399
  834. package/docs/api-ref/rust.md +0 -399
  835. package/docs/api-ref/typescript.md +0 -399
  836. package/docs/invalidate-spec.md +0 -333
  837. package/docs/meta-spec.md +0 -555
  838. package/docs/packaging.md +0 -104
  839. package/docs/regression-matrix/README.md +0 -32
  840. package/docs/regression-matrix/review.md +0 -44
  841. package/docs/regression-matrix/ws1-3.md +0 -97
  842. package/docs/regression-matrix/ws4-8.md +0 -107
  843. package/docs/regression-matrix/ws9-12.md +0 -266
  844. package/docs/sdk.md +0 -798
  845. package/src/accepts.ts +0 -136
  846. package/src/body-kind.ts +0 -67
  847. package/src/body-limit.ts +0 -152
  848. package/src/build/index.ts +0 -217
  849. package/src/cli-args.ts +0 -123
  850. package/src/cli-go/auth.go +0 -26
  851. package/src/cli-go/config.go +0 -192
  852. package/src/cli-go/errors.go +0 -75
  853. package/src/cli-go/multipart.go +0 -79
  854. package/src/cli-go/output.go +0 -163
  855. package/src/cli-go/root.go +0 -30
  856. package/src/cli-go/stream.go +0 -88
  857. package/src/cli-go/version.go +0 -5
  858. package/src/cli.ts +0 -209
  859. package/src/client/defaults.ts +0 -47
  860. package/src/client/error.ts +0 -82
  861. package/src/client/http.ts +0 -737
  862. package/src/client/index.ts +0 -157
  863. package/src/client/path.ts +0 -169
  864. package/src/client/redirect-policy.ts +0 -19
  865. package/src/client/sdk.ts +0 -351
  866. package/src/client/sse.ts +0 -128
  867. package/src/client/types.ts +0 -206
  868. package/src/client/ws.ts +0 -149
  869. package/src/client-go/errors.go +0 -236
  870. package/src/client-go/export.go +0 -44
  871. package/src/client-go/invalidation.go +0 -371
  872. package/src/client-go/nullable.go +0 -62
  873. package/src/client-go/realtime.go +0 -354
  874. package/src/client-go/result.go +0 -20
  875. package/src/client-go/runtime.go +0 -975
  876. package/src/client-go/sse.go +0 -159
  877. package/src/client-go/transport.go +0 -495
  878. package/src/client-go/ws.go +0 -128
  879. package/src/client-info.ts +0 -79
  880. package/src/client-mcp/README.md +0 -10
  881. package/src/client-mcp/server.ts +0 -221
  882. package/src/client-mcp/types.ts +0 -19
  883. package/src/client-python/_errors.py +0 -115
  884. package/src/client-python/_invalidation.py +0 -494
  885. package/src/client-python/_realtime.py +0 -179
  886. package/src/client-python/_runtime.py +0 -860
  887. package/src/client-python/_sse.py +0 -155
  888. package/src/client-python/_transport.py +0 -366
  889. package/src/client-python/_ws.py +0 -159
  890. package/src/client-python/py.typed +0 -0
  891. package/src/client-rust/errors.rs +0 -220
  892. package/src/client-rust/invalidation.rs +0 -412
  893. package/src/client-rust/invalidation_sync.rs +0 -93
  894. package/src/client-rust/nullable.rs +0 -17
  895. package/src/client-rust/realtime.rs +0 -702
  896. package/src/client-rust/result.rs +0 -22
  897. package/src/client-rust/runtime.rs +0 -980
  898. package/src/client-rust/runtime_sync.rs +0 -484
  899. package/src/client-rust/sse.rs +0 -188
  900. package/src/client-rust/ws.rs +0 -167
  901. package/src/codegen-go-cli.ts +0 -1066
  902. package/src/codegen-go.ts +0 -970
  903. package/src/codegen-hash.ts +0 -8
  904. package/src/codegen-ir.ts +0 -812
  905. package/src/codegen-lang.ts +0 -517
  906. package/src/codegen-load.ts +0 -150
  907. package/src/codegen-loaders.ts +0 -50
  908. package/src/codegen-mcp.ts +0 -445
  909. package/src/codegen-python.ts +0 -916
  910. package/src/codegen-route-tree-intern.ts +0 -198
  911. package/src/codegen-rust.ts +0 -1402
  912. package/src/codegen-sanitize.ts +0 -57
  913. package/src/codegen-schema-naming.ts +0 -165
  914. package/src/codegen-sdk-model.ts +0 -228
  915. package/src/codegen.ts +0 -5089
  916. package/src/context.ts +0 -325
  917. package/src/cookie-sign.ts +0 -119
  918. package/src/cookie.ts +0 -143
  919. package/src/cors.ts +0 -95
  920. package/src/crypto.ts +0 -38
  921. package/src/csrf.ts +0 -86
  922. package/src/curl-logger.ts +0 -258
  923. package/src/detect-runtime.ts +0 -17
  924. package/src/dict.ts +0 -12
  925. package/src/error.ts +0 -55
  926. package/src/errors.ts +0 -85
  927. package/src/etag.ts +0 -97
  928. package/src/feature-detect.ts +0 -147
  929. package/src/feature-load.ts +0 -23
  930. package/src/feature-slots.ts +0 -70
  931. package/src/fetch-request.ts +0 -13
  932. package/src/gen-process.ts +0 -42
  933. package/src/gen-write.ts +0 -127
  934. package/src/glob.ts +0 -109
  935. package/src/go-type-emitter.ts +0 -660
  936. package/src/honey-response.ts +0 -379
  937. package/src/i18n-slot.ts +0 -30
  938. package/src/i18n.ts +0 -300
  939. package/src/index.ts +0 -3829
  940. package/src/init.ts +0 -161
  941. package/src/input.ts +0 -8
  942. package/src/invalidate-check.ts +0 -205
  943. package/src/invoke-user.ts +0 -95
  944. package/src/ip-restrict.ts +0 -79
  945. package/src/ip.ts +0 -194
  946. package/src/logger.ts +0 -178
  947. package/src/media-type.ts +0 -104
  948. package/src/meta-spec-merge.ts +0 -80
  949. package/src/meta-spec.ts +0 -718
  950. package/src/middleware.ts +0 -331
  951. package/src/node-request.ts +0 -431
  952. package/src/node.ts +0 -454
  953. package/src/openapi/collect.ts +0 -50
  954. package/src/openapi/docs-page.ts +0 -89
  955. package/src/openapi/document.ts +0 -902
  956. package/src/openapi/json-schema-slot.ts +0 -53
  957. package/src/openapi/register.ts +0 -23
  958. package/src/openapi/scalar.ts +0 -34
  959. package/src/openapi/serve.ts +0 -39
  960. package/src/openapi/spec-factory.ts +0 -100
  961. package/src/openapi/spec.ts +0 -74
  962. package/src/openapi/swagger.ts +0 -35
  963. package/src/pattern.ts +0 -245
  964. package/src/peer.ts +0 -53
  965. package/src/plugin.ts +0 -864
  966. package/src/powered-by.ts +0 -18
  967. package/src/pretty-json.ts +0 -56
  968. package/src/producer-stream.ts +0 -296
  969. package/src/proxy.ts +0 -370
  970. package/src/python-type-emitter.ts +0 -181
  971. package/src/realtime/bus.ts +0 -140
  972. package/src/realtime/register.ts +0 -13
  973. package/src/realtime/route.ts +0 -153
  974. package/src/realtime/server.ts +0 -298
  975. package/src/request-id.ts +0 -32
  976. package/src/request-limits.ts +0 -2
  977. package/src/request-path.ts +0 -165
  978. package/src/request-to-curl.ts +0 -52
  979. package/src/response.ts +0 -411
  980. package/src/rust-type-emitter.ts +0 -548
  981. package/src/secure-headers.ts +0 -74
  982. package/src/serve-register.ts +0 -12
  983. package/src/serve-slot.ts +0 -58
  984. package/src/serve.ts +0 -220
  985. package/src/server-timing.ts +0 -71
  986. package/src/static.ts +0 -112
  987. package/src/telemetry/otel.ts +0 -156
  988. package/src/testing.ts +0 -167
  989. package/src/timeout.ts +0 -45
  990. package/src/tree.ts +0 -558
  991. package/src/trust.ts +0 -117
  992. package/src/ts-type-emitter.ts +0 -168
  993. package/src/type-emitter.ts +0 -760
  994. package/src/type-extractor.ts +0 -855
  995. package/src/types.ts +0 -756
  996. package/src/validation.ts +0 -413
  997. package/src/with-headers.ts +0 -45
  998. package/src/ws/bun.ts +0 -120
  999. package/src/ws/cloudflare.ts +0 -192
  1000. package/src/ws/deno.ts +0 -188
  1001. package/src/ws/node.ts +0 -240
  1002. package/src/ws/session.ts +0 -73
  1003. package/src/ws/shared.ts +0 -140
  1004. package/src/ws-origin.ts +0 -53
  1005. package/src/yaml.ts +0 -103
package/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>;