@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
@@ -1,828 +0,0 @@
1
- /** Python SDK code generator.
2
- *
3
- * Input is the SDK request model (codegen-sdk-model.ts). Identifiers come from per-scope
4
- * NameScopes (module, class, method) and every spec string reaches source through pyString,
5
- * docstring or comment writers (codegen-lang.ts).
6
- */
7
- import { readFileSync } from "node:fs";
8
- import { methodsOf, namespacesOf } from "./codegen-ir.js";
9
- import { NameScope, cmpCodeUnit, pyClassName, pyDocLines, pyIdentifier, pyString } from "./codegen-lang.js";
10
- import { buildSdkModel } from "./codegen-sdk-model.js";
11
- import { irToPythonNamed, isPyAttributeKey, pyIdent } from "./python-type-emitter.js";
12
- const PYTHON_FUTURE = "from __future__ import annotations";
13
- const STATIC_FILE_NAMES = [
14
- "_runtime.py",
15
- "_errors.py",
16
- "_invalidation.py",
17
- "_sse.py",
18
- "_ws.py",
19
- "_transport.py",
20
- "_realtime.py",
21
- ];
22
- const RUNTIME_TEMPLATE_CACHE = new Map();
23
- const ERROR_NAMES = {
24
- 400: "BadRequestError",
25
- 401: "UnauthorizedError",
26
- 403: "ForbiddenError",
27
- 404: "NotFoundError",
28
- 409: "ConflictError",
29
- 422: "UnprocessableEntityError",
30
- 429: "RateLimitError",
31
- 500: "InternalServerError",
32
- 502: "BadGatewayError",
33
- 503: "ServiceUnavailableError",
34
- 504: "GatewayTimeoutError",
35
- };
36
- const ERROR_CLASSES = [
37
- "APIError",
38
- "APIStatusError",
39
- "BadGatewayError",
40
- "BadRequestError",
41
- "ConflictError",
42
- "ForbiddenError",
43
- "GatewayTimeoutError",
44
- "InternalServerError",
45
- "NotFoundError",
46
- "RateLimitError",
47
- "ServiceUnavailableError",
48
- "UnauthorizedError",
49
- "UnprocessableEntityError",
50
- ];
51
- const TRANSPORT_EXPORTS = [
52
- "LongpollAdapter",
53
- "SseAdapter",
54
- "TransportAdapter",
55
- "TransportConn",
56
- "TransportKind",
57
- "TransportOpts",
58
- "WsAdapter",
59
- ];
60
- const REALTIME_EXPORTS = ["ConnectionState", "ResumableConnection"];
61
- /** Names a generated module-level type must not take: package exports, typing and builtins. */
62
- const PY_MODULE_RESERVED = [
63
- "AsyncSDK",
64
- "SDK",
65
- ...ERROR_CLASSES,
66
- ...TRANSPORT_EXPORTS,
67
- ...REALTIME_EXPORTS,
68
- "ClientConfig",
69
- "InvalidationConfig",
70
- "SDKResult",
71
- "SSEEvent",
72
- "PathParamError",
73
- "FileInput",
74
- "Any",
75
- "AsyncIterator",
76
- "Literal",
77
- "NotRequired",
78
- "TypeAlias",
79
- "TypedDict",
80
- "bool",
81
- "bytes",
82
- "dict",
83
- "float",
84
- "int",
85
- "list",
86
- "object",
87
- "str",
88
- "tuple",
89
- "type",
90
- "httpx",
91
- "asyncio",
92
- "threading",
93
- "uuid",
94
- ];
95
- export function loadPythonRuntimeTemplates() {
96
- if (RUNTIME_TEMPLATE_CACHE.size > 0)
97
- return RUNTIME_TEMPLATE_CACHE;
98
- for (const name of STATIC_FILE_NAMES) {
99
- const url = new URL(`./client-python/${name}`, import.meta.url);
100
- RUNTIME_TEMPLATE_CACHE.set(name, readFileSync(url, "utf8"));
101
- }
102
- RUNTIME_TEMPLATE_CACHE.set("py.typed", "");
103
- return RUNTIME_TEMPLATE_CACHE;
104
- }
105
- function typedDictSource(name, ir, names) {
106
- const fields = ir.fields.slice().sort((a, b) => cmpCodeUnit(a.name, b.name));
107
- const rendered = fields.map((f) => {
108
- const t = irToPythonNamed(f.schema, names, name, f.name);
109
- return { annotation: f.required ? t : `NotRequired[${t}]`, field: f };
110
- });
111
- if (fields.every((f) => isPyAttributeKey(f.name))) {
112
- const l = [`class ${name}(TypedDict, total=False):`];
113
- for (const r of rendered)
114
- l.push(` ${r.field.name}: ${r.annotation}`);
115
- if (rendered.length === 0)
116
- l.push(` pass`);
117
- return l.join("\n");
118
- }
119
- /* functional syntax: any JSON key is allowed; annotations are strings, so forward refs work */
120
- const l = [`${name} = TypedDict(`, ` ${pyString(name)},`, ` {`];
121
- for (const r of rendered)
122
- l.push(` ${pyString(r.field.name)}: ${pyString(r.annotation)},`);
123
- l.push(` },`, ` total=False,`, `)`);
124
- return l.join("\n");
125
- }
126
- function buildPyNames(model) {
127
- const module = new NameScope(PY_MODULE_RESERVED);
128
- const schemaNames = new Map();
129
- for (const name of model.schemaNames) {
130
- const base = pyClassName(name);
131
- schemaNames.set(name, module.has(base) ? module.claim(`${base}Model`) : module.claim(base));
132
- }
133
- const decls = new Map();
134
- const declOrder = [];
135
- const hoistKeys = new Map();
136
- const names = { declOrder, decls, module, schemaNames, types: undefined };
137
- names.types = {
138
- hoist: (key, base, schema) => {
139
- const hit = hoistKeys.get(key);
140
- if (hit)
141
- return hit;
142
- const name = module.claim(pyClassName(base));
143
- hoistKeys.set(key, name);
144
- decls.set(name, "");
145
- declOrder.push(name);
146
- decls.set(name, typedDictSource(name, schema, names.types));
147
- return name;
148
- },
149
- ref: (name) => schemaNames.get(name) ?? pyClassName(name),
150
- };
151
- return names;
152
- }
153
- function buildPyTypes(model, names) {
154
- const body = [];
155
- for (const name of model.schemaNames) {
156
- const ir = model.ir.schemas[name];
157
- const pyName = names.types.ref(name);
158
- if (ir.kind === "object" && ir.fields.length > 0) {
159
- body.push(typedDictSource(pyName, ir, names.types));
160
- }
161
- else {
162
- /* string alias: lazy, so the order of definitions does not matter */
163
- const t = irToPythonNamed(ir, names.types, pyName, "");
164
- body.push(`${pyName}: TypeAlias = ${pyString(t)}`);
165
- }
166
- body.push("");
167
- }
168
- return body.join("\n");
169
- }
170
- function typesFile(schemaSource, names) {
171
- const hoisted = names.declOrder.map((n) => `${names.decls.get(n)}\n`).join("\n");
172
- const bodyText = `${schemaSource}\n${hoisted}`;
173
- const typing = ["Any", "Literal", "NotRequired", "TypeAlias", "TypedDict"].filter((sym) => new RegExp(`\\b${sym}\\b`).test(bodyText));
174
- const fileInput = /\bFileInput\b/.test(bodyText);
175
- /* string aliases mention `Any`/`Literal` only inside quotes; keep them importable for checkers */
176
- if (/TypeAlias = /.test(bodyText)) {
177
- for (const sym of ["Any", "Literal"])
178
- if (!typing.includes(sym))
179
- typing.push(sym);
180
- }
181
- const l = [];
182
- l.push("# ruff: noqa: E501");
183
- l.push(PYTHON_FUTURE);
184
- l.push("");
185
- if (typing.length > 0)
186
- l.push(`from typing import ${typing.sort(cmpCodeUnit).join(", ")}`);
187
- if (fileInput)
188
- l.push(`from ._runtime import FileInput`);
189
- if (typing.length > 0 || fileInput)
190
- l.push("");
191
- l.push(bodyText);
192
- const exported = [...names.schemaNames.values(), ...names.declOrder];
193
- if (exported.length === 0)
194
- l.push("__all__: list[str] = []");
195
- else
196
- l.push(`__all__ = [${exported.map(pyString).join(", ")}]`);
197
- l.push("");
198
- return l.join("\n");
199
- }
200
- /** kwargs the generated methods always take; params must not reuse them. */
201
- /** What client.py may import from the runtime modules; each name only when the bodies use it. */
202
- const PY_CLIENT_IMPORTS = [
203
- [
204
- "._runtime",
205
- [
206
- "ClientConfig",
207
- "SDKResult",
208
- "_AuthState",
209
- "_build_headers",
210
- "_build_url",
211
- "_do_request_async",
212
- "_do_request_sync",
213
- "_expand_path",
214
- "_form_content",
215
- "_format_value",
216
- "_has_header",
217
- "_multipart_parts",
218
- "_open_stream",
219
- "_parse_body",
220
- "_raise_for_status",
221
- "_set_header",
222
- "_to_ws_url",
223
- ],
224
- ],
225
- ["._invalidation", ["_StaleTracker", "_StaleTrackerSync"]],
226
- ["._sse", ["SSEEvent", "parse_sse_stream"]],
227
- ["._ws", ["_TypedWebSocket"]],
228
- ["._transport", ["LongpollAdapter", "SseAdapter", "TransportOpts", "WsAdapter"]],
229
- ["._realtime", ["ResumableConnection"]],
230
- ];
231
- /**
232
- * Module-scope names a generated method body evaluates at runtime (calls and attribute access, not
233
- * annotations, which `from __future__ import annotations` never evaluates). A parameter local must
234
- * never shadow one: a path param named `uuid` would turn `str(uuid.uuid4())` into an
235
- * AttributeError. Underscore names cannot collide, since parameter locals never start with `_`.
236
- */
237
- export const PY_BODY_GLOBALS = [
238
- "httpx",
239
- "str",
240
- "threading",
241
- "uuid",
242
- ...PY_CLIENT_IMPORTS.flatMap(([, syms]) => syms.filter((n) => !n.startsWith("_"))),
243
- ];
244
- const PY_METHOD_RESERVED = [
245
- "self",
246
- "timeout",
247
- "headers",
248
- "cancel_token",
249
- "idempotency_key",
250
- "last_event_id",
251
- "protocols",
252
- "reconnect_token",
253
- ...PY_BODY_GLOBALS,
254
- ];
255
- function planPyOp(op, methodName, names, model) {
256
- const locals = new NameScope(PY_METHOD_RESERVED);
257
- const typeParent = pyClassName(op.id);
258
- const plan = { headerParams: [], methodName, op, pathParams: [], queryParams: [], returnType: "None" };
259
- const b = op.body;
260
- const hasBodyArg = b !== undefined && op.stream !== "ws" && op.stream !== "realtime";
261
- const bodyLocal = hasBodyArg ? locals.claim("body") : "";
262
- for (const p of op.pathParams)
263
- plan.pathParams.push({ local: locals.claim(pyIdentifier(p.name)), wire: p.name });
264
- if (op.stream !== "realtime") {
265
- for (const q of op.query) {
266
- if (op.stream === "sse" && /^last[-_]?event[-_]?id$/i.test(q.name))
267
- continue;
268
- plan.queryParams.push({
269
- local: locals.claim(pyIdentifier(q.name)),
270
- required: q.required === true,
271
- type: irToPythonNamed(q.schema, names.types, typeParent, q.name),
272
- wire: q.name,
273
- });
274
- }
275
- for (const h of op.headers) {
276
- plan.headerParams.push({
277
- local: locals.claim(pyIdentifier(h.name)),
278
- required: h.required === true,
279
- type: irToPythonNamed(h.schema, names.types, typeParent, h.name),
280
- wire: h.name,
281
- });
282
- }
283
- }
284
- if (hasBodyArg && b) {
285
- let type;
286
- switch (b.kind) {
287
- case "json":
288
- case "form":
289
- type = irToPythonNamed(b.schema, names.types, typeParent, "Body");
290
- break;
291
- case "binary":
292
- type = "bytes | AsyncIterator[bytes]";
293
- break;
294
- case "text":
295
- type = "str";
296
- break;
297
- case "multipart": {
298
- const files = [];
299
- const listFiles = [];
300
- const fields = b.parts.map((part) => {
301
- const schema = part.schema ? model.resolve(part.schema) : { kind: "unknown" };
302
- if (part.type === "file") {
303
- if (schema.kind === "array")
304
- listFiles.push(part.name);
305
- else
306
- files.push(part.name);
307
- return {
308
- name: part.name,
309
- required: false,
310
- schema: { kind: "unknown" },
311
- file: true,
312
- list: schema.kind === "array",
313
- };
314
- }
315
- return {
316
- file: false,
317
- list: false,
318
- name: part.name,
319
- required: false,
320
- schema: part.schema ?? { kind: "unknown" },
321
- };
322
- });
323
- const objectIR = {
324
- fields: fields.map((f) => ({ name: f.name, required: f.required, schema: f.schema })),
325
- kind: "object",
326
- };
327
- type = names.types.hoist(`${op.id}.multipart`, `${typeParent}Body`, objectIR);
328
- /* file parts: re-render with the FileInput alias instead of Any */
329
- const decl = names.decls.get(type) ?? "";
330
- let patched = decl;
331
- for (const f of fields.filter((x) => x.file)) {
332
- const key = pyString(f.name);
333
- const t = f.list ? "list[FileInput]" : "FileInput";
334
- patched = patched
335
- .replace(` ${f.name}: NotRequired[Any]`, ` ${f.name}: NotRequired[${t}]`)
336
- .replace(` ${key}: "NotRequired[Any]",`, ` ${key}: ${pyString(`NotRequired[${t}]`)},`);
337
- }
338
- names.decls.set(type, patched);
339
- plan.multipart = { files, listFiles };
340
- break;
341
- }
342
- }
343
- plan.body = { local: bodyLocal, required: b.required, type };
344
- }
345
- if (op.stream === null) {
346
- const s = op.success;
347
- if (s.kind === "json")
348
- plan.returnType = s.schema ? irToPythonNamed(s.schema, names.types, typeParent, "Response") : "Any";
349
- else if (s.kind === "text")
350
- plan.returnType = "str";
351
- else if (s.kind === "binary")
352
- plan.returnType = "bytes";
353
- else
354
- plan.returnType = "None";
355
- }
356
- return plan;
357
- }
358
- function signature(plan, throwOnError, isAsync) {
359
- const { op } = plan;
360
- const defKw = op.stream === "ws" || op.stream === "realtime" || !isAsync ? "def" : "async def";
361
- const pos = ["self", ...plan.pathParams.map((p) => `${p.local}: str`)];
362
- const kw = [];
363
- if (op.stream === "realtime") {
364
- kw.push(`reconnect_token: str | None = None`, `last_event_id: str | None = None`, `headers: dict[str, str] | None = None`);
365
- return emitSignature(defKw, plan.methodName, pos, kw, "ResumableConnection");
366
- }
367
- if (plan.body) {
368
- if (plan.body.required)
369
- pos.push(`${plan.body.local}: ${plan.body.type}`);
370
- else
371
- kw.push(`${plan.body.local}: ${optional(plan.body.type)} = None`);
372
- }
373
- for (const q of [...plan.queryParams, ...plan.headerParams]) {
374
- if (q.required)
375
- pos.push(`${q.local}: ${q.type}`);
376
- else
377
- kw.push(`${q.local}: ${optional(q.type)} = None`);
378
- }
379
- if (op.stream === "sse")
380
- kw.push(`last_event_id: str | None = None`, `headers: dict[str, str] | None = None`);
381
- if (op.stream === "ws") {
382
- kw.push(`protocols: list[str] | None = None`, `reconnect_token: str | None = None`, `headers: dict[str, str] | None = None`);
383
- }
384
- if (op.stream === null) {
385
- if (op.idempotent)
386
- kw.push(`idempotency_key: str | None = None`);
387
- kw.push(`timeout: float | None = None`, `headers: dict[str, str] | None = None`);
388
- kw.push(`cancel_token: "threading.Event | None" = None`);
389
- }
390
- let ret;
391
- if (op.stream === "sse")
392
- ret = "AsyncIterator[SSEEvent]";
393
- else if (op.stream === "ws")
394
- ret = "_TypedWebSocket";
395
- else if (throwOnError)
396
- ret = plan.returnType;
397
- else
398
- ret = `SDKResult[${plan.returnType}]`;
399
- return emitSignature(defKw, plan.methodName, pos, kw, ret);
400
- }
401
- function optional(t) {
402
- return t.endsWith("| None") ? t : `${t} | None`;
403
- }
404
- function emitSignature(defKw, name, pos, kw, ret) {
405
- if (kw.length === 0)
406
- return [` ${defKw} ${name}(${pos.join(", ")}) -> ${ret}:`];
407
- const l = [` ${defKw} ${name}(${pos.join(", ")},`, ` *,`];
408
- kw.forEach((k, i) => l.push(` ${k}${i < kw.length - 1 ? "," : ""}`));
409
- l.push(` ) -> ${ret}:`);
410
- return l;
411
- }
412
- function docstring(op) {
413
- const text = op.summary || op.description;
414
- const lines = text ? pyDocLines(text) : [];
415
- if (lines.length === 0 && op.errorStatuses.length === 0)
416
- return [];
417
- const out = [];
418
- if (op.errorStatuses.length === 0 && lines.length === 1)
419
- return [` """${lines[0]}"""`];
420
- out.push(` """${lines[0] ?? ""}`);
421
- for (const line of lines.slice(1))
422
- out.push(line === "" ? "" : ` ${line}`);
423
- if (op.errorStatuses.length > 0) {
424
- out.push(``);
425
- out.push(` Raises:`);
426
- for (const status of op.errorStatuses)
427
- out.push(` ${ERROR_NAMES[status] ?? "APIStatusError"}: HTTP ${status}`);
428
- }
429
- out.push(` """`);
430
- return out;
431
- }
432
- function pathExpr(plan) {
433
- if (plan.pathParams.length === 0)
434
- return pyString(plan.op.path);
435
- const dict = plan.pathParams.map((p) => `${pyString(p.wire)}: ${p.local}`).join(", ");
436
- return `_expand_path(${pyString(plan.op.path)}, {${dict}})`;
437
- }
438
- function paramsDict(plan) {
439
- const entries = plan.queryParams.map((q) => `${pyString(q.wire)}: ${q.local}`);
440
- return `{${entries.join(", ")}}`;
441
- }
442
- function headerLines(plan, configRef, authRef, base) {
443
- const l = [];
444
- l.push(` _extra: dict[str, str] = ${base}`);
445
- for (const h of plan.headerParams) {
446
- l.push(` if ${h.local} is not None:`);
447
- l.push(` _extra[${pyString(h.wire)}] = _format_value(${h.local})`);
448
- }
449
- l.push(` _extra.update(headers or {})`);
450
- l.push(` _headers = _build_headers(${configRef}, extra=_extra, bearer_token=${authRef}.token)`);
451
- return l;
452
- }
453
- function bodyArgs(plan, l) {
454
- const b = plan.op.body;
455
- const local = plan.body?.local;
456
- if (!b || !local)
457
- return "";
458
- switch (b.kind) {
459
- case "json":
460
- return `json=${local}`;
461
- case "form":
462
- l.push(` _headers.setdefault("Content-Type", "application/x-www-form-urlencoded")`);
463
- return `content=_form_content(${local})`;
464
- case "text":
465
- l.push(` _set_header(_headers, "Content-Type", ${pyString(b.contentType)})`);
466
- return `content=${local}.encode() if ${local} is not None else None`;
467
- case "binary":
468
- l.push(` _set_header(_headers, "Content-Type", ${pyString(b.contentType)})`);
469
- return `content=${local}`;
470
- case "multipart": {
471
- const files = plan.multipart?.files ?? [];
472
- const listFiles = plan.multipart?.listFiles ?? [];
473
- l.push(` _data, _files = _multipart_parts(${local}, files=[${files.map(pyString).join(", ")}], list_files=[${listFiles.map(pyString).join(", ")}])`);
474
- return `data=_data, files=_files`;
475
- }
476
- }
477
- }
478
- function methodBody(plan, throwOnError, isAsync, isTopLevel) {
479
- const l = [];
480
- const { op } = plan;
481
- const self = isTopLevel ? "self" : "self._client";
482
- const configRef = `${self}._config`;
483
- const authRef = `${self}._auth`;
484
- const clientRef = isAsync ? `${self}._async_client` : `${self}._sync_client`;
485
- const trackerRef = `${self}._stale_tracker`;
486
- const aw = isAsync ? "await " : "";
487
- if (op.stream === "realtime") {
488
- l.push(` _url = _build_url(${configRef}.base_url, ${pathExpr(plan)})`);
489
- l.push(` _opts = TransportOpts(`);
490
- l.push(` reconnect_token=reconnect_token,`);
491
- l.push(` last_event_id=last_event_id,`);
492
- l.push(` headers=_build_headers(${configRef}, extra=headers, bearer_token=${authRef}.token),`);
493
- l.push(` )`);
494
- l.push(` _transports: list[Any] = [WsAdapter(), SseAdapter(), LongpollAdapter()]`);
495
- l.push(` return ResumableConnection(_url, _transports, _opts)`);
496
- return l;
497
- }
498
- l.push(` _path = ${pathExpr(plan)}`);
499
- if (op.stream === "ws") {
500
- l.push(` _params: dict[str, Any] = ${paramsDict(plan)}`);
501
- l.push(` if reconnect_token is not None:`);
502
- l.push(` _params["reconnect_token"] = reconnect_token`);
503
- l.push(...headerLines(plan, configRef, authRef, "{}"));
504
- l.push(` _url = _build_url(${configRef}.base_url, _path, _params)`);
505
- l.push(` _ws_url = _to_ws_url(_url)`);
506
- l.push(` return _TypedWebSocket(_ws_url, protocols=protocols, extra_headers=_headers)`);
507
- return l;
508
- }
509
- if (op.stream === "sse") {
510
- l.push(` _params: dict[str, Any] = ${paramsDict(plan)}`);
511
- l.push(...headerLines(plan, configRef, authRef, `{"Accept": "text/event-stream"}`));
512
- l.push(` if last_event_id is not None:`);
513
- l.push(` _headers["Last-Event-ID"] = last_event_id`);
514
- const args = bodyArgs(plan, l);
515
- l.push(` _url = _build_url(${configRef}.base_url, _path, _params)`);
516
- l.push(` async with _open_stream(${clientRef}, ${configRef}, ${pyString(op.method)}, _url, _headers${args ? `, ${args}` : ""}) as _response:`);
517
- l.push(` async for _event in parse_sse_stream(_response):`);
518
- l.push(` yield _event`);
519
- return l;
520
- }
521
- l.push(` _params: dict[str, Any] = ${paramsDict(plan)}`);
522
- l.push(...headerLines(plan, configRef, authRef, "{}"));
523
- if (op.idempotent) {
524
- /* explicit header (any casing) > idempotency_key kwarg > uuid4 */
525
- l.push(` if not _has_header(_headers, "Idempotency-Key"):`);
526
- l.push(` _headers["Idempotency-Key"] = idempotency_key if idempotency_key is not None else str(uuid.uuid4())`);
527
- }
528
- const args = bodyArgs(plan, l);
529
- const dictEntries = plan.pathParams.map((p) => `${pyString(p.wire)}: ${p.local}`);
530
- l.push(` _path_params: dict[str, str] | None = ${dictEntries.length > 0 ? `{${dictEntries.join(", ")}}` : "None"}`);
531
- l.push(` _selector = ${pyString(`${op.method} `)} + _path`);
532
- l.push(` _request_meta = ${aw}${trackerRef}.build_request_meta(_selector, _path, ${pyString(op.method)})`);
533
- l.push(` _url = _build_url(${configRef}.base_url, _path, _params)`);
534
- l.push(` _response = ${aw}${isAsync ? "_do_request_async" : "_do_request_sync"}(`);
535
- l.push(` ${clientRef}, ${configRef}, ${pyString(op.method)}, _url,`);
536
- l.push(` headers=_headers,${args ? ` ${args},` : ""} timeout=timeout,`);
537
- l.push(` cancel_token=cancel_token, operation=${pyString(`${op.method} ${op.path}`)},`);
538
- l.push(` request_meta=_request_meta, auth=${authRef},`);
539
- l.push(` )`);
540
- l.push(` if 200 <= _response.status_code < 300:`);
541
- const targets = op.invalidates.map(pyString).join(", ");
542
- l.push(` ${aw}${trackerRef}.mark_stale([${targets}], _path_params, _selector)`);
543
- l.push(` if _request_meta is not None and _request_meta.is_stale:`);
544
- l.push(` ${aw}${trackerRef}.clear_stale(_selector, _path, ${pyString(op.method)}, _request_meta.seq_snapshot)`);
545
- const kind = op.success.kind;
546
- if (throwOnError) {
547
- l.push(` _raise_for_status(_response)`);
548
- l.push(` return _parse_body(_response, ${pyString(kind)})`);
549
- }
550
- else {
551
- l.push(` if not 200 <= _response.status_code < 300:`);
552
- l.push(` return SDKResult(data=None, error=_parse_body(_response), status=_response.status_code, response=_response)`);
553
- l.push(` return SDKResult(data=_parse_body(_response, ${pyString(kind)}), error=None, status=_response.status_code, response=_response)`);
554
- }
555
- return l;
556
- }
557
- function isSyncCapable(op) {
558
- return op.stream === null && op.body?.kind !== "binary";
559
- }
560
- function hasSyncContent(node) {
561
- return node.plans.some((p) => isSyncCapable(p.op)) || node.children.some((c) => hasSyncContent(c.node));
562
- }
563
- function trackerInit(cls) {
564
- return [
565
- " _inv = config.invalidation",
566
- ` self._stale_tracker = ${cls}(`,
567
- " stale_time=_inv.stale_time if _inv is not None else 0.0,",
568
- " stale_max_entries=(",
569
- " _inv.stale_max_entries if _inv is not None else 1000",
570
- " ),",
571
- " max_sources_per_target=(",
572
- " _inv.max_sources_per_target if _inv is not None else 16",
573
- " ),",
574
- " )",
575
- ];
576
- }
577
- function buildPyClient(model, names, options, serviceMap) {
578
- const throwOnError = options.throwOnError !== false;
579
- function planNs(ns, path, reserved) {
580
- const members = new NameScope(reserved);
581
- const node = {
582
- asyncName: path.length === 0 ? "AsyncSDK" : names.module.claim(`_${path.map(pyClassName).join("")}Resource`),
583
- children: [],
584
- ns,
585
- path,
586
- plans: [],
587
- };
588
- if (path.length > 0)
589
- node.syncName = names.module.claim(`_Sync${path.map(pyClassName).join("")}Resource`);
590
- for (const [seg, childNs] of namespacesOf(ns)) {
591
- const attr = members.claim(pyIdent(seg));
592
- node.children.push({ attr, node: planNs(childNs, [...path, seg], ["_client"]) });
593
- }
594
- for (const [seg, irOp] of methodsOf(ns)) {
595
- const op = model.opsById.get(irOp.id);
596
- if (!op)
597
- continue;
598
- let base = pyIdentifier(seg);
599
- if (op.stream === "realtime") {
600
- /* realtime methods keep the `connectX` name they always had */
601
- const ident = pyIdentifier(seg);
602
- base = /^connect(_|$)/.test(ident) ? ident : `connect${ident.charAt(0).toUpperCase()}${ident.slice(1)}`;
603
- }
604
- node.plans.push(planPyOp(op, members.claim(base), names, model));
605
- }
606
- return node;
607
- }
608
- const root = planNs(model.ir.tree, [], ["_config", "_auth", "_async_client", "_sync_client", "_stale_tracker", "is_stale", "aclose", "close"]);
609
- const body = [];
610
- const invEntries = Object.entries(serviceMap).filter(([, v]) => v.invalidate && v.invalidate.length > 0);
611
- body.push("_INVALIDATION_MAP: dict[str, dict[str, Any]] = {");
612
- for (const [opId, entry] of invEntries) {
613
- body.push(` ${pyString(opId)}: {`);
614
- body.push(` "method": ${pyString(entry.method)},`);
615
- body.push(` "path": ${pyString(entry.path)},`);
616
- body.push(` "invalidate": [${(entry.invalidate ?? []).map(pyString).join(", ")}],`);
617
- body.push(` },`);
618
- }
619
- body.push("}");
620
- body.push("");
621
- /* children before parents so class names resolve at definition time */
622
- /* every resource holds the root SDK: nested resources reach config and clients directly */
623
- function emitAsync(node) {
624
- for (const c of node.children)
625
- emitAsync(c.node);
626
- if (node.path.length === 0)
627
- return;
628
- body.push(`class ${node.asyncName}:`);
629
- body.push(` def __init__(self, _client: "AsyncSDK") -> None:`);
630
- body.push(` self._client = _client`);
631
- for (const c of node.children)
632
- body.push(` self.${c.attr} = ${c.node.asyncName}(_client)`);
633
- body.push("");
634
- for (const plan of node.plans) {
635
- body.push(...signature(plan, throwOnError, true));
636
- body.push(...docstring(plan.op));
637
- body.push(...methodBody(plan, throwOnError, true, false));
638
- body.push("");
639
- }
640
- body.push("");
641
- }
642
- function emitSync(node) {
643
- for (const c of node.children)
644
- emitSync(c.node);
645
- if (node.path.length === 0 || !hasSyncContent(node))
646
- return;
647
- body.push(`class ${node.syncName}:`);
648
- body.push(` def __init__(self, _client: "SDK") -> None:`);
649
- body.push(` self._client = _client`);
650
- for (const c of node.children) {
651
- if (hasSyncContent(c.node))
652
- body.push(` self.${c.attr} = ${c.node.syncName}(_client)`);
653
- }
654
- body.push("");
655
- for (const plan of node.plans.filter((p) => isSyncCapable(p.op))) {
656
- body.push(...signature(plan, throwOnError, false));
657
- body.push(...docstring(plan.op));
658
- body.push(...methodBody(plan, throwOnError, false, false));
659
- body.push("");
660
- }
661
- body.push("");
662
- }
663
- emitAsync(root);
664
- emitSync(root);
665
- body.push("class SDK:");
666
- body.push(" def __init__(self, config: ClientConfig) -> None:");
667
- body.push(" self._config = config");
668
- body.push(" self._auth = _AuthState(config.bearer_token)");
669
- body.push(" self._sync_client = httpx.Client(");
670
- body.push(" transport=config.sync_transport,");
671
- body.push(" )");
672
- body.push(...trackerInit("_StaleTrackerSync"));
673
- for (const c of root.children) {
674
- if (hasSyncContent(c.node))
675
- body.push(` self.${c.attr} = ${c.node.syncName}(self)`);
676
- }
677
- body.push("");
678
- body.push(" def close(self) -> None:");
679
- body.push(' """Closes the underlying HTTP client."""');
680
- body.push(" self._sync_client.close()");
681
- body.push("");
682
- body.push(" def is_stale(self, method: str, path: str) -> bool:");
683
- body.push(' """Returns True when (method, path) sits inside an active stale window."""');
684
- body.push(" return self._stale_tracker.is_stale(method, path)");
685
- body.push("");
686
- for (const plan of root.plans.filter((p) => isSyncCapable(p.op))) {
687
- body.push(...signature(plan, throwOnError, false));
688
- body.push(...docstring(plan.op));
689
- body.push(...methodBody(plan, throwOnError, false, true));
690
- body.push("");
691
- }
692
- body.push("");
693
- body.push("class AsyncSDK:");
694
- body.push(" def __init__(self, config: ClientConfig) -> None:");
695
- body.push(" self._config = config");
696
- body.push(" self._auth = _AuthState(config.bearer_token)");
697
- body.push(" self._async_client = httpx.AsyncClient(");
698
- body.push(" transport=config.transport,");
699
- body.push(" )");
700
- body.push(...trackerInit("_StaleTracker"));
701
- for (const c of root.children)
702
- body.push(` self.${c.attr} = ${c.node.asyncName}(self)`);
703
- body.push("");
704
- body.push(" async def aclose(self) -> None:");
705
- body.push(' """Closes the underlying HTTP client."""');
706
- body.push(" await self._async_client.aclose()");
707
- body.push("");
708
- body.push(" async def is_stale(self, method: str, path: str) -> bool:");
709
- body.push(' """Returns True when (method, path) sits inside an active stale window."""');
710
- body.push(" return await self._stale_tracker.is_stale(method, path)");
711
- body.push("");
712
- for (const plan of root.plans) {
713
- body.push(...signature(plan, throwOnError, true));
714
- body.push(...docstring(plan.op));
715
- body.push(...methodBody(plan, throwOnError, true, true));
716
- body.push("");
717
- }
718
- return body.join("\n");
719
- }
720
- function clientFile(bodyText, names) {
721
- const uses = (sym) => new RegExp(`(?<![\\w.])${sym.replace(/[.]/g, "\\.")}\\b`).test(bodyText);
722
- const imports = [];
723
- if (/\bthreading\b/.test(bodyText))
724
- imports.push("import threading");
725
- if (/\buuid\.uuid4\b/.test(bodyText))
726
- imports.push("import uuid");
727
- imports.push("import httpx");
728
- const typingUsed = ["Any", "AsyncIterator", "Literal", "NotRequired", "TypedDict"].filter(uses);
729
- if (typingUsed.length > 0)
730
- imports.push(`from typing import ${typingUsed.join(", ")}`);
731
- for (const [mod, syms] of PY_CLIENT_IMPORTS) {
732
- const used = syms.filter(uses);
733
- if (used.length === 0)
734
- continue;
735
- imports.push(`from ${mod} import (`);
736
- for (const s of used)
737
- imports.push(` ${s},`);
738
- imports.push(")");
739
- }
740
- const typeNames = [...names.schemaNames.values(), ...names.declOrder].filter(uses).sort(cmpCodeUnit);
741
- if (typeNames.length > 0) {
742
- imports.push("from .types import (");
743
- for (const n of typeNames)
744
- imports.push(` ${n},`);
745
- imports.push(")");
746
- }
747
- const out = [];
748
- out.push("# ruff: noqa: E501");
749
- out.push(PYTHON_FUTURE);
750
- out.push("");
751
- out.push(...imports);
752
- out.push("");
753
- out.push(bodyText);
754
- out.push("");
755
- return out.join("\n");
756
- }
757
- function buildPyInit(names) {
758
- const typeNames = [...names.schemaNames.values()].sort(cmpCodeUnit);
759
- const l = [];
760
- l.push(PYTHON_FUTURE);
761
- l.push("");
762
- l.push("from .client import AsyncSDK, SDK");
763
- l.push("from ._errors import (");
764
- for (const name of ERROR_CLASSES)
765
- l.push(` ${name},`);
766
- l.push(")");
767
- l.push("from ._runtime import ClientConfig, InvalidationConfig, PathParamError");
768
- l.push("from ._transport import (");
769
- for (const name of TRANSPORT_EXPORTS)
770
- l.push(` ${name},`);
771
- l.push(")");
772
- l.push("from ._realtime import (");
773
- for (const name of REALTIME_EXPORTS)
774
- l.push(` ${name},`);
775
- l.push(")");
776
- if (typeNames.length > 0) {
777
- l.push("from .types import (");
778
- for (const name of typeNames)
779
- l.push(` ${name},`);
780
- l.push(")");
781
- }
782
- l.push("");
783
- const allExports = [
784
- "AsyncSDK",
785
- "SDK",
786
- ...ERROR_CLASSES,
787
- "ClientConfig",
788
- "InvalidationConfig",
789
- "PathParamError",
790
- ...TRANSPORT_EXPORTS,
791
- ...REALTIME_EXPORTS,
792
- ...typeNames,
793
- ];
794
- l.push("__all__ = [");
795
- for (const name of allExports)
796
- l.push(` ${pyString(name)},`);
797
- l.push("]");
798
- l.push("");
799
- return l.join("\n");
800
- }
801
- function buildServiceMap(model) {
802
- const result = Object.create(null);
803
- for (const op of model.ops) {
804
- result[op.id] = {
805
- invalidate: op.invalidates.length > 0 ? op.invalidates : undefined,
806
- method: op.method,
807
- operationId: op.id,
808
- path: op.path,
809
- };
810
- }
811
- return result;
812
- }
813
- export function generatePythonSDK(spec, options = {}) {
814
- const templates = loadPythonRuntimeTemplates();
815
- const model = buildSdkModel(spec);
816
- const serviceMap = buildServiceMap(model);
817
- const names = buildPyNames(model);
818
- const files = {};
819
- for (const [name, content] of templates)
820
- files[name] = content;
821
- /* schema types claim their names first; the client then hoists into the same table */
822
- const schemaSource = buildPyTypes(model, names);
823
- files["client.py"] = clientFile(buildPyClient(model, names, options, serviceMap), names);
824
- files["types.py"] = typesFile(schemaSource, names);
825
- files["__init__.py"] = buildPyInit(names);
826
- return { files, serviceMap };
827
- }
828
- //# sourceMappingURL=codegen-python.js.map