@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/src/proxy.ts DELETED
@@ -1,370 +0,0 @@
1
- import { clientInfo, type HoneyContext } from "./context.ts"
2
- import { HoneyError } from "./error.ts"
3
- import { registerFeature } from "./feature-slots.ts"
4
- import { searchOfUrl } from "./request-path.ts"
5
- import { EK, SK } from "./types.ts"
6
-
7
- /* Bodies up to this size with a declared length are forwarded as bytes; larger or unsized ones
8
- stream (uploads). */
9
- const MAX_BUFFERED_BODY_BYTES = 1024 * 1024
10
-
11
- /** Default time allowed until the upstream's response headers arrive. */
12
- const DEFAULT_TIMEOUT_MS = 60_000
13
-
14
- /**
15
- * Hop-by-hop headers (RFC 9110 §7.6.1) describe one connection and never cross a proxy, in
16
- * either direction. `proxy-connection` is the pre-standard spelling clients still send.
17
- * Headers a `Connection` header names are hop-by-hop too, see `stripHopByHop`.
18
- */
19
- const HOP_BY_HOP = [
20
- "connection",
21
- "keep-alive",
22
- "proxy-authenticate",
23
- "proxy-authorization",
24
- "proxy-connection",
25
- "te",
26
- "trailer",
27
- "transfer-encoding",
28
- "upgrade",
29
- ]
30
-
31
- /**
32
- * Client-sent forwarding headers. The app's `trustProxy()` setting has already decided what is
33
- * true about the client (`clientInfo`); what the client wrote is replaced, never passed on.
34
- */
35
- const FORWARDING = ["forwarded", "x-forwarded-for", "x-forwarded-host", "x-forwarded-proto", "x-real-ip"]
36
-
37
- /** Statuses whose response can never carry a body: rebuilding one with a body throws. */
38
- const NULL_BODY = new Set([101, 103, 204, 205, 304])
39
-
40
- function stripHopByHop(headers: Headers, keepUpgrade: boolean): void {
41
- const named = headers.get("connection")
42
- if (named !== null) {
43
- for (const token of named.split(",")) {
44
- const name = token.trim().toLowerCase()
45
- if (name === "" || (keepUpgrade && name === "upgrade")) continue
46
- headers.delete(name)
47
- }
48
- }
49
- for (const name of HOP_BY_HOP) {
50
- if (keepUpgrade && name === "upgrade") continue
51
- headers.delete(name)
52
- }
53
- }
54
-
55
- /**
56
- * A streamed body that the destination never reads (a route without input that was sent `{}`)
57
- * can keep the call open until it times out: a service binding does not settle while the
58
- * request stream is unconsumed, and a stream teed by `request.clone()` (a body-logging
59
- * middleware) has no known length. Bytes have neither problem.
60
- */
61
- async function forwardBody(request: Request): Promise<ArrayBuffer | ReadableStream<Uint8Array> | null> {
62
- if (request.body === null) return null
63
- const declared = request.headers.get("content-length")
64
- const length = declared === null ? Number.NaN : Number.parseInt(declared, 10)
65
- if (Number.isFinite(length) && length <= MAX_BUFFERED_BODY_BYTES) return request.arrayBuffer()
66
- return request.body
67
- }
68
-
69
- /** Network-level codes runtimes put on errors when the upstream cannot be reached or drops. */
70
- const NETWORK_CODES = /^(?:E[A-Z0-9_]+|Connection\w*|UND_ERR\w*|UNABLE_\w+|CERT_\w+|DEPTH_ZERO\w*)$/
71
-
72
- /**
73
- * Whether `error` means the upstream failed (502), as opposed to a bug in user code (500).
74
- * Fetch reports network failures as a `TypeError` — so does a typo in `destination` — and the
75
- * runtimes tell them apart differently: undici and Deno say "fetch failed" (with a `cause`),
76
- * Bun puts a `code` on the error (`ConnectionRefused`, `ENOTFOUND`), Workers say the network
77
- * connection was lost. An invalid URL is the destination's bug.
78
- */
79
- function isUpstreamFailure(error: unknown): boolean {
80
- if (!(error instanceof Error)) return false
81
- const code = (error as { code?: unknown }).code
82
- if (typeof code === "string") return !code.startsWith("ERR_INVALID") && NETWORK_CODES.test(code)
83
- if (!(error instanceof TypeError)) return false
84
- const message = error.message
85
- return /^fetch failed/i.test(message) || /network connection (?:was )?lost/i.test(message)
86
- }
87
-
88
- /**
89
- * Proxy configuration — controls how requests are forwarded to downstream services.
90
- *
91
- * `destination` is the only required field. The framework builds the RequestInit
92
- * (headers, body, signal, redirect) and passes it along with the resolved URL.
93
- *
94
- * What the framework does, both ways:
95
- * - Hop-by-hop headers (`Connection`, `Keep-Alive`, `Transfer-Encoding`, `TE`, `Trailer`,
96
- * `Upgrade`, `Proxy-*`, and every header `Connection` names) are dropped. A WebSocket upgrade
97
- * keeps `Upgrade: websocket` and `Connection: upgrade`.
98
- * - The client's `Host` is not sent: the upstream sees the destination's host.
99
- * `X-Forwarded-For`, `-Proto` and `-Host` describe the client as the app's `trustProxy()`
100
- * setting decided it (`clientInfo(ctx)`), with one `X-Forwarded-For` entry; whatever
101
- * forwarding headers the client sent (`Forwarded`, `X-Forwarded-*`, `X-Real-IP`) are dropped.
102
- * Configure the upstream to trust exactly one hop: this proxy.
103
- * - `Expect` is dropped (the proxy reads the body itself).
104
- * - Every method except GET and HEAD forwards its body (DELETE, OPTIONS, PROPFIND…).
105
- * - The request follows `ctx.signal`: a client disconnect, `timeout()` or shutdown cancels the
106
- * upstream call and its body.
107
- * - Redirects are returned to the client, never followed.
108
- */
109
- export type ProxyConfig<TCtx> = {
110
- /**
111
- * Where to send the request. Framework doesn't care how — CF service binding,
112
- * URL fetch, Durable Object stub, anything that returns a Response.
113
- *
114
- * A network failure the runtime reports (connection refused, DNS, reset) answers 502; any
115
- * other throw — a bug in this function included — is a 500.
116
- *
117
- * @param ctx - honey context (middleware additions available)
118
- * @param url - normalized path + query string, after rewriteUrl if provided
119
- * @param init - framework-prepared RequestInit (method, headers, body, signal, redirect)
120
- */
121
- destination: (ctx: TCtx, url: string, init: RequestInit) => Response | Promise<Response>
122
-
123
- /**
124
- * Whether the destination's Response body is already decoded, as `fetch()` always returns
125
- * it (the runtime decompresses gzip, br, zstd and keeps the `Content-Encoding` header).
126
- * When true (the default), `Content-Encoding` and `Content-Length` are dropped from encoded
127
- * responses so the headers describe the bytes the client gets. Set false when the
128
- * destination returns bytes still encoded (a store of compressed objects), so the headers
129
- * pass through.
130
- */
131
- decoded?: boolean
132
-
133
- /**
134
- * Add `X-Forwarded-For`, `-Proto` and `-Host`. Default true. Client-sent forwarding headers
135
- * are dropped either way.
136
- */
137
- forwardedHeaders?: boolean
138
-
139
- /**
140
- * Most milliseconds the upstream may stay silent while the body streams: the time between
141
- * two chunks. Omitted or non-positive: no limit (streams such as SSE may idle). A stall
142
- * aborts the upstream and errors the body. Disabled for WebSocket upgrades.
143
- */
144
- idleTimeout?: number | ((ctx: TCtx) => number)
145
-
146
- /**
147
- * Hook after downstream responds, before returning to client.
148
- * Return void to passthrough, or return a new Response to replace.
149
- * The response is the proxy's own copy, so its headers can be set in place.
150
- * NOT called for 101 WebSocket upgrades (opaque response).
151
- */
152
- onResponse?: (ctx: TCtx, response: Response) => void | Response | Promise<void | Response>
153
-
154
- /**
155
- * Set request headers before forwarding. Called after hop-by-hop and forwarding headers
156
- * are handled, so it can override any of them (including `Host` on runtimes that send it).
157
- * Static record: entries are set on the headers object.
158
- * Function: mutate headers in place.
159
- */
160
- requestHeaders?: Record<string, string> | ((ctx: TCtx, headers: Headers) => void)
161
-
162
- /**
163
- * Rewrite URL before passing to destination.
164
- * Receives the normalized path + query string, returns transformed URL.
165
- */
166
- rewriteUrl?: (url: string, ctx: TCtx) => string
167
-
168
- /**
169
- * Most milliseconds to wait for the upstream's response headers; a later answer is a 504.
170
- * Default 60 000. `0` or a non-positive value: no limit. The body is not covered — see
171
- * `idleTimeout`. Accepts a number or a function of ctx. Disabled for WebSocket upgrades.
172
- */
173
- timeout?: number | ((ctx: TCtx) => number)
174
- }
175
-
176
- function resolveMs<TCtx>(opt: number | ((ctx: TCtx) => number) | undefined, ctx: TCtx, fallback?: number) {
177
- const ms = typeof opt === "function" ? opt(ctx) : (opt ?? fallback)
178
- return ms !== undefined && ms > 0 ? ms : undefined
179
- }
180
-
181
- function timeoutError(): DOMException {
182
- return new DOMException("upstream timed out", "TimeoutError")
183
- }
184
-
185
- /**
186
- * The body, erroring (and aborting the upstream through `onIdle`) when the upstream sends
187
- * nothing for `ms`. The clock runs only while a read is outstanding: a client that reads slowly
188
- * is backpressure, not an idle upstream.
189
- */
190
- function withIdleTimeout(body: ReadableStream<Uint8Array>, ms: number, onIdle: () => void): ReadableStream<Uint8Array> {
191
- const reader = body.getReader()
192
- return new ReadableStream<Uint8Array>({
193
- async cancel(reason) {
194
- await reader.cancel(reason)
195
- },
196
- async pull(controller) {
197
- let timer: ReturnType<typeof setTimeout> | undefined
198
- const idle = new Promise<"idle">((resolve) => {
199
- timer = setTimeout(() => resolve("idle"), ms)
200
- })
201
- try {
202
- const result = await Promise.race([reader.read(), idle])
203
- if (result === "idle") {
204
- onIdle()
205
- const error = timeoutError()
206
- /* the upstream may not react to the abort (a binding, a stub): drop it either way */
207
- reader.cancel(error).catch(() => {})
208
- controller.error(error)
209
- } else if (result.done) {
210
- controller.close()
211
- } else {
212
- controller.enqueue(result.value)
213
- }
214
- } catch (error) {
215
- controller.error(error)
216
- } finally {
217
- clearTimeout(timer)
218
- }
219
- },
220
- })
221
- }
222
-
223
- /**
224
- * The response the client gets: hop-by-hop headers dropped, encoding headers made true for
225
- * the bytes, in a copy whose headers are mutable (fetch() responses are immutable).
226
- */
227
- function clientResponse(response: Response, decoded: boolean, body: ReadableStream<Uint8Array> | null): Response {
228
- const headers = new Headers(response.headers)
229
- stripHopByHop(headers, false)
230
- if (decoded) {
231
- const encoding = headers.get("content-encoding")
232
- if (encoding !== null && encoding.trim().toLowerCase() !== "identity") {
233
- headers.delete("content-encoding")
234
- /* the length of the encoded bytes, not of the decoded body the client receives */
235
- headers.delete("content-length")
236
- }
237
- }
238
- return new Response(NULL_BODY.has(response.status) ? null : body, {
239
- headers,
240
- status: response.status,
241
- statusText: response.statusText,
242
- })
243
- }
244
-
245
- /**
246
- * Creates a proxy handler function from config.
247
- * Used internally by RouteBuilder.proxy() — not meant for direct consumption.
248
- *
249
- * TCtx is unconstrained because HandlerCtx uses Omit which breaks structural
250
- * compatibility with { path, req }. At runtime ctx is always HoneyContext
251
- * which has both fields — we access them via property access on the object.
252
- */
253
- export function createProxyHandler<TCtx>(config: ProxyConfig<TCtx>): (ctx: TCtx) => Promise<Response> {
254
- const decoded = config.decoded !== false
255
- const forwarded = config.forwardedHeaders !== false
256
-
257
- return async (ctx: TCtx) => {
258
- /* HoneyContext always has path + req + signal — safe at runtime */
259
- const c = ctx as unknown as HoneyContext
260
- const request = c.req
261
- const method = request.method.toUpperCase()
262
- const isWs = request.headers.get("upgrade")?.trim().toLowerCase() === "websocket"
263
- const headerMs = isWs ? undefined : resolveMs(config.timeout, ctx, DEFAULT_TIMEOUT_MS)
264
- const idleMs = isWs ? undefined : resolveMs(config.idleTimeout, ctx)
265
-
266
- /* URL: the normalized path the router matched, plus the raw query — no new URL() */
267
- const pathQuery = c.path + searchOfUrl(request.url)
268
- const url = config.rewriteUrl ? config.rewriteUrl(pathQuery, ctx) : pathQuery
269
-
270
- /* headers — one copy (the original is immutable) */
271
- const headers = new Headers(request.headers)
272
- stripHopByHop(headers, isWs)
273
- if (isWs) {
274
- headers.set("upgrade", "websocket")
275
- headers.set("connection", "upgrade")
276
- }
277
- headers.delete("host")
278
- headers.delete("expect")
279
- for (const name of FORWARDING) headers.delete(name)
280
- if (forwarded) {
281
- const client = clientInfo(c)
282
- if (client.ip !== null) headers.set("x-forwarded-for", client.ip)
283
- headers.set("x-forwarded-proto", client.protocol)
284
- if (client.host !== null) headers.set("x-forwarded-host", client.host)
285
- }
286
-
287
- /* body: every method that can carry one (fetch refuses a GET or HEAD body) */
288
- const body = method === "GET" || method === "HEAD" ? null : await forwardBody(request)
289
- if (body === null || body instanceof ArrayBuffer) {
290
- /* no body, or bytes whose length fetch() computes itself */
291
- headers.delete("content-length")
292
- }
293
-
294
- if (config.requestHeaders) {
295
- if (typeof config.requestHeaders === "function") {
296
- config.requestHeaders(ctx, headers)
297
- } else {
298
- for (const [k, v] of Object.entries(config.requestHeaders)) {
299
- headers.set(k, v)
300
- }
301
- }
302
- }
303
-
304
- /* one controller for the proxy's own timeouts, following the request's signal */
305
- const upstream = new AbortController()
306
- const clientSignal = c.signal as AbortSignal | undefined
307
- const signal = clientSignal ? AbortSignal.any([clientSignal, upstream.signal]) : upstream.signal
308
-
309
- const init: RequestInit = {
310
- body: body ?? undefined,
311
- headers,
312
- method,
313
- redirect: "manual",
314
- signal,
315
- }
316
-
317
- /* duplex required for streaming body (Node needs it, CF handles implicitly) */
318
- if (body instanceof ReadableStream) {
319
- ;(init as Record<string, unknown>)["duplex"] = "half"
320
- }
321
-
322
- /* forward */
323
- let headerTimedOut = false
324
- const headerTimer =
325
- headerMs === undefined
326
- ? undefined
327
- : setTimeout(() => {
328
- headerTimedOut = true
329
- upstream.abort(timeoutError())
330
- }, headerMs)
331
- let response: Response
332
- try {
333
- response = await config.destination(ctx, url, init)
334
- } catch (error) {
335
- /* ours, or the destination's own AbortSignal.timeout() */
336
- if (headerTimedOut || (error instanceof DOMException && error.name === "TimeoutError")) {
337
- throw new HoneyError({ errorKey: EK.gateway_timeout, status: SK.gateway_timeout })
338
- }
339
- if (clientSignal?.aborted) throw error
340
- if (isUpstreamFailure(error)) {
341
- throw new HoneyError({ errorKey: EK.bad_gateway, status: SK.bad_gateway })
342
- }
343
- throw error
344
- } finally {
345
- clearTimeout(headerTimer)
346
- }
347
-
348
- /* WS 101 — return immediately, opaque */
349
- if (response.status === 101) {
350
- return response
351
- }
352
-
353
- let responseBody: ReadableStream<Uint8Array> | null = response.body
354
- if (responseBody !== null && idleMs !== undefined) {
355
- responseBody = withIdleTimeout(responseBody, idleMs, () => upstream.abort(timeoutError()))
356
- }
357
- let result = clientResponse(response, decoded, responseBody)
358
-
359
- /* response hook */
360
- if (config.onResponse) {
361
- const replaced = await config.onResponse(ctx, result)
362
- if (replaced) result = replaced
363
- }
364
-
365
- return result
366
- }
367
- }
368
-
369
- /* `import "@lovrozagar/honey/proxy"` is what makes `.proxy()` available; the core never imports this module */
370
- registerFeature("proxy", { createProxyHandler })
@@ -1,181 +0,0 @@
1
- import { schemaToIR } from "./codegen-ir.ts"
2
- import type { IRField, IRSchema } from "./codegen-ir.ts"
3
- import { cmpCodeUnit, pyClassName, pyString } from "./codegen-lang.ts"
4
-
5
- /** Attribute-safe name that keeps the original casing (`apiKeys` stays `apiKeys`).
6
- * Non-identifier characters become `_`; keywords get a `_` suffix per PEP 8. */
7
- export function pyIdent(name: string): string {
8
- let out = name.replace(/[^A-Za-z0-9_]/g, "_")
9
- if (out === "") out = "value"
10
- if (/^[0-9]/.test(out)) out = `_${out}`
11
- if (PY_HARD_KEYWORDS.has(out) || out === "self") return `${out}_`
12
- return out
13
- }
14
-
15
- const PY_HARD_KEYWORDS = new Set(
16
- "False None True and as assert async await break class continue def del elif else except finally for from global if import in is lambda nonlocal not or pass raise return try while with yield".split(
17
- " ",
18
- ),
19
- )
20
-
21
- function primitiveToPy(t: string): string {
22
- if (t === "string") return "str"
23
- if (t === "integer") return "int"
24
- if (t === "number") return "float"
25
- if (t === "boolean") return "bool"
26
- if (t === "null") return "None"
27
- return "Any"
28
- }
29
-
30
- function formatConstPy(v: string | number | boolean): string {
31
- if (typeof v === "string") return pyString(v)
32
- if (typeof v === "boolean") return v ? "True" : "False"
33
- return String(v)
34
- }
35
-
36
- function emitScalarPy(ir: Extract<IRSchema, { kind: "scalar" }>): string {
37
- if (ir.enum) {
38
- const members = ir.enum
39
- .filter((v) => v !== null)
40
- .map((v) => (typeof v === "string" ? pyString(v) : typeof v === "boolean" ? (v ? "True" : "False") : String(v)))
41
- .join(", ")
42
- if (members === "") return primitiveToPy(ir.type)
43
- return `Literal[${members}]`
44
- }
45
- return primitiveToPy(ir.type)
46
- }
47
-
48
- /** Module-level naming for generated types. Without it, nested objects render inline. */
49
- export type PyTypeNames = {
50
- ref: (schemaName: string) => string
51
- /** Hoists an object schema to a named TypedDict and returns its name. */
52
- hoist: (key: string, base: string, schema: Extract<IRSchema, { kind: "object" }>) => string
53
- }
54
-
55
- type Ctx = { names?: PyTypeNames; parent: string; field: string }
56
-
57
- function emitObjectPy(ir: Extract<IRSchema, { kind: "object" }>, depth: number, ctx: Ctx): string {
58
- const { fields, additional } = ir
59
-
60
- if (fields.length === 0) {
61
- if (additional) {
62
- return `dict[str, ${irToPythonCtx(additional, depth + 1, { ...ctx, field: `${ctx.field}Value` })}]`
63
- }
64
- return "dict[str, Any]"
65
- }
66
-
67
- if (ctx.names) {
68
- const base = ctx.field === "" ? ctx.parent : `${ctx.parent}${pyClassName(ctx.field)}`
69
- return ctx.names.hoist(`${ctx.parent}.${ctx.field}`, base, ir)
70
- }
71
-
72
- const sortedFields = fields.slice().sort((a, b) => cmpCodeUnit(a.name, b.name))
73
- const entries = sortedFields.map((f) => {
74
- const pyType = irToPythonCtx(f.schema, depth + 1, ctx)
75
- const annotation = f.required ? pyType : `NotRequired[${pyType}]`
76
- return `${pyString(f.name)}: ${annotation}`
77
- })
78
-
79
- return `TypedDict("X", {${entries.join(", ")}})`
80
- }
81
-
82
- /**
83
- * Convert an IRSchema to a Python type string.
84
- * depth > 8 returns `Any` (mirrors TS `unknown` fallback).
85
- */
86
- export function irToPython(ir: IRSchema, depth = 0): string {
87
- return irToPythonCtx(ir, depth, { field: "Value", parent: "Model" })
88
- }
89
-
90
- /** `irToPython` with module naming: refs map to emitted class names, nested objects are hoisted. */
91
- export function irToPythonNamed(ir: IRSchema, names: PyTypeNames, parent: string, field: string): string {
92
- return irToPythonCtx(ir, 0, { field, names, parent })
93
- }
94
-
95
- function irToPythonCtx(ir: IRSchema, depth: number, ctx: Ctx): string {
96
- if (depth > 8) return "Any"
97
-
98
- switch (ir.kind) {
99
- case "scalar":
100
- return emitScalarPy(ir)
101
-
102
- case "const":
103
- return `Literal[${formatConstPy(ir.value)}]`
104
-
105
- case "object":
106
- return emitObjectPy(ir, depth, ctx)
107
-
108
- case "array":
109
- return `list[${irToPythonCtx(ir.items, depth + 1, { ...ctx, field: `${ctx.field}Item` })}]`
110
-
111
- case "tuple":
112
- return ir.items.length === 0
113
- ? "tuple[()]"
114
- : `tuple[${ir.items.map((i, n) => irToPythonCtx(i, depth + 1, { ...ctx, field: `${ctx.field}${n}` })).join(", ")}]`
115
-
116
- case "union": {
117
- /* union-of-const → single Literal[...] to match mixed enum behavior */
118
- if (ir.variants.length > 0 && ir.variants.every((v) => v.kind === "const")) {
119
- const members = ir.variants
120
- .map((v) => formatConstPy((v as Extract<IRSchema, { kind: "const" }>).value))
121
- .join(", ")
122
- return `Literal[${members}]`
123
- }
124
- return ir.variants
125
- .map((v, n) => irToPythonCtx(v, depth + 1, { ...ctx, field: `${ctx.field}Variant${n}` }))
126
- .join(" | ")
127
- }
128
-
129
- case "allOf": {
130
- const allObjects = ir.parts.every((p) => p.kind === "object")
131
- if (!allObjects) {
132
- if (ctx.names && ir.parts.length === 1) return irToPythonCtx(ir.parts[0], depth + 1, ctx)
133
- return "Any"
134
- }
135
- /* later parts overwrite earlier (mirrors Object.assign semantics in old jsonSchemaToPy) */
136
- const mergedMap = new Map<string, IRField>()
137
- const requiredSet = new Set<string>()
138
- for (const part of ir.parts) {
139
- const obj = part as Extract<IRSchema, { kind: "object" }>
140
- for (const f of obj.fields) {
141
- mergedMap.set(f.name, f)
142
- if (f.required) requiredSet.add(f.name)
143
- }
144
- }
145
- const mergedFields: IRField[] = Array.from(mergedMap.values()).map((f) => {
146
- const mf: IRField = Object.assign({}, f)
147
- mf.required = requiredSet.has(f.name)
148
- return mf
149
- })
150
- return emitObjectPy({ fields: mergedFields, kind: "object" }, depth, ctx)
151
- }
152
-
153
- case "ref":
154
- return ctx.names ? ctx.names.ref(ir.name) : ir.name
155
-
156
- case "nullable":
157
- return `${irToPythonCtx(ir.inner, depth + 1, ctx)} | None`
158
-
159
- /*
160
- * binary kind arises from {type:"string", format:"binary"}.
161
- * dominant case matches "str"; bare {format:"binary"} with no type is
162
- * a deliberate 1-case divergence from old jsonSchemaToPy (see spec §binary).
163
- */
164
- case "binary":
165
- return "str"
166
-
167
- case "unknown":
168
- return "Any"
169
- }
170
- }
171
-
172
- /** Thin shim — delegates to irToPython(schemaToIR(schema), depth). */
173
- export function jsonSchemaToPy(schema: Record<string, unknown> | undefined, depth = 0): string {
174
- if (!schema || depth > 8) return "Any"
175
- return irToPython(schemaToIR(schema), depth)
176
- }
177
-
178
- /** A key usable as a TypedDict class-syntax attribute (else the functional syntax is used). */
179
- export function isPyAttributeKey(key: string): boolean {
180
- return /^[A-Za-z_][A-Za-z0-9_]*$/.test(key) && !PY_HARD_KEYWORDS.has(key) && !key.startsWith("__")
181
- }
@@ -1,140 +0,0 @@
1
- /**
2
- * In-process topic bus behind `app.realtime()`. Topics are opaque keys here; the realtime server
3
- * namespaces them per route before they reach the bus. Each publish serializes its payload once and
4
- * hands every subscriber the same JSON text frame.
5
- */
6
- export interface RealtimeBus {
7
- subscribe(connId: string, topic: string): void
8
- unsubscribe(connId: string, topic: string): void
9
- unsubscribeAll(connId: string): void
10
- /** Serialize `data` once and deliver the frame to every subscriber of `topic`. Throws when `data` is not JSON-serializable. */
11
- publish(topic: string, data: unknown): void
12
- /** Deliver an already-serialized frame to every subscriber of `topic`. */
13
- publishFrame(topic: string, frame: string): void
14
- onMessage(connId: string, handler: (frame: string) => void): void
15
- removeHandler(connId: string): void
16
- presence(topic: string): string[]
17
- /** Number of topics `connId` is subscribed to. */
18
- topicCount(connId: string): number
19
- isSubscribed(connId: string, topic: string): boolean
20
- }
21
-
22
- /**
23
- * The wire format of the shipped bus: every frame, in both directions, is one JSON text.
24
- * Throws a `TypeError` for values JSON cannot represent (`undefined`, functions, symbols, BigInt, cycles).
25
- */
26
- export function encodeRealtimeFrame(data: unknown): string {
27
- const frame = JSON.stringify(data) as string | undefined
28
- if (frame === undefined) {
29
- throw new TypeError(`realtime payload is not JSON-serializable (got ${typeof data})`)
30
- }
31
- return frame
32
- }
33
-
34
- export function createBus(): RealtimeBus {
35
- /* topic -> set of connIds subscribed to it */
36
- const topicSubs = new Map<string, Set<string>>()
37
- /* connId -> set of topics it is subscribed to (reverse lookup for unsubscribeAll) */
38
- const connTopics = new Map<string, Set<string>>()
39
- /* connId -> frame sink */
40
- const handlers = new Map<string, (frame: string) => void>()
41
-
42
- function subscribe(connId: string, topic: string): void {
43
- let subs = topicSubs.get(topic)
44
- if (!subs) {
45
- subs = new Set()
46
- topicSubs.set(topic, subs)
47
- }
48
- subs.add(connId)
49
-
50
- let topics = connTopics.get(connId)
51
- if (!topics) {
52
- topics = new Set()
53
- connTopics.set(connId, topics)
54
- }
55
- topics.add(topic)
56
- }
57
-
58
- function unsubscribe(connId: string, topic: string): void {
59
- const subs = topicSubs.get(topic)
60
- if (subs) {
61
- subs.delete(connId)
62
- if (subs.size === 0) topicSubs.delete(topic)
63
- }
64
-
65
- const topics = connTopics.get(connId)
66
- if (topics) {
67
- topics.delete(topic)
68
- if (topics.size === 0) connTopics.delete(connId)
69
- }
70
- }
71
-
72
- function unsubscribeAll(connId: string): void {
73
- const topics = connTopics.get(connId)
74
- if (!topics) return
75
-
76
- for (const topic of topics) {
77
- const subs = topicSubs.get(topic)
78
- if (subs) {
79
- subs.delete(connId)
80
- if (subs.size === 0) topicSubs.delete(topic)
81
- }
82
- }
83
- connTopics.delete(connId)
84
- }
85
-
86
- function publishFrame(topic: string, frame: string): void {
87
- const subs = topicSubs.get(topic)
88
- if (!subs) return
89
-
90
- /* snapshot: a sink that closes its connection unsubscribes while we iterate */
91
- for (const connId of Array.from(subs)) {
92
- const handler = handlers.get(connId)
93
- if (!handler) continue
94
- try {
95
- handler(frame)
96
- } catch {
97
- /* sinks are internal and contain their own errors; one must never block the others */
98
- }
99
- }
100
- }
101
-
102
- function publish(topic: string, data: unknown): void {
103
- publishFrame(topic, encodeRealtimeFrame(data))
104
- }
105
-
106
- function onMessage(connId: string, handler: (frame: string) => void): void {
107
- handlers.set(connId, handler)
108
- }
109
-
110
- function removeHandler(connId: string): void {
111
- handlers.delete(connId)
112
- }
113
-
114
- function presence(topic: string): string[] {
115
- const subs = topicSubs.get(topic)
116
- if (!subs) return []
117
- return [...subs]
118
- }
119
-
120
- function topicCount(connId: string): number {
121
- return connTopics.get(connId)?.size ?? 0
122
- }
123
-
124
- function isSubscribed(connId: string, topic: string): boolean {
125
- return connTopics.get(connId)?.has(topic) ?? false
126
- }
127
-
128
- return {
129
- isSubscribed,
130
- onMessage,
131
- presence,
132
- publish,
133
- publishFrame,
134
- removeHandler,
135
- subscribe,
136
- topicCount,
137
- unsubscribe,
138
- unsubscribeAll,
139
- }
140
- }