@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/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
- }