@lovrozagar/honey 0.7.3 → 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1003) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -1969
  3. package/bin/honey.js +87 -27
  4. package/dist/adapters/bun/serve.d.ts +18 -0
  5. package/dist/adapters/bun/serve.js +89 -0
  6. package/dist/adapters/fetch-request.d.ts +20 -0
  7. package/dist/adapters/fetch-request.js +29 -0
  8. package/dist/adapters/node/headers.d.ts +27 -0
  9. package/dist/adapters/node/headers.js +86 -0
  10. package/dist/adapters/node/request.d.ts +16 -0
  11. package/dist/adapters/node/request.js +214 -0
  12. package/dist/adapters/node/response.d.ts +11 -0
  13. package/dist/adapters/node/response.js +126 -0
  14. package/dist/adapters/node/serve.d.ts +39 -0
  15. package/dist/adapters/node/serve.js +205 -0
  16. package/dist/adapters/node/url.d.ts +13 -0
  17. package/dist/adapters/node/url.js +87 -0
  18. package/dist/adapters/serve.d.ts +36 -0
  19. package/dist/adapters/serve.js +52 -0
  20. package/dist/build/artifacts.d.ts +34 -0
  21. package/dist/build/artifacts.js +123 -0
  22. package/dist/build/cli-args.d.ts +30 -0
  23. package/dist/build/cli-args.js +97 -0
  24. package/dist/build/cli.d.ts +11 -0
  25. package/dist/build/cli.js +150 -0
  26. package/dist/build/config.d.ts +102 -0
  27. package/dist/build/config.js +89 -0
  28. package/dist/build/generate.d.ts +19 -0
  29. package/dist/build/generate.js +80 -0
  30. package/dist/build/glob.d.ts +8 -0
  31. package/dist/build/glob.js +97 -0
  32. package/dist/build/index.d.ts +3 -58
  33. package/dist/build/index.js +3 -173
  34. package/dist/build/init.d.ts +3 -0
  35. package/dist/build/init.js +131 -0
  36. package/dist/build/loaders.d.ts +33 -0
  37. package/dist/build/loaders.js +105 -0
  38. package/dist/build/plugin.d.ts +52 -0
  39. package/dist/build/plugin.js +146 -0
  40. package/dist/build/source.d.ts +21 -0
  41. package/dist/build/source.js +100 -0
  42. package/dist/build/targets.d.ts +59 -0
  43. package/dist/build/targets.js +107 -0
  44. package/dist/context/context.d.ts +111 -0
  45. package/dist/context/context.js +213 -0
  46. package/dist/context/cookie-sign.d.ts +38 -0
  47. package/dist/context/cookie-sign.js +113 -0
  48. package/dist/context/cookie.d.ts +28 -0
  49. package/dist/context/cookie.js +142 -0
  50. package/dist/context/peer.d.ts +34 -0
  51. package/dist/context/peer.js +190 -0
  52. package/dist/errors/error.d.ts +60 -0
  53. package/dist/errors/error.js +84 -0
  54. package/dist/errors/errors.d.ts +45 -0
  55. package/dist/errors/errors.js +31 -0
  56. package/dist/errors/on-error.d.ts +10 -0
  57. package/dist/errors/on-error.js +204 -0
  58. package/dist/errors/problem-json.d.ts +14 -0
  59. package/dist/errors/problem-json.js +58 -0
  60. package/dist/errors/projector.d.ts +50 -0
  61. package/dist/errors/projector.js +107 -0
  62. package/dist/i18n/error-i18n.d.ts +26 -0
  63. package/dist/i18n/error-i18n.js +77 -0
  64. package/dist/i18n/i18n.d.ts +21 -0
  65. package/dist/i18n/i18n.js +40 -0
  66. package/dist/i18n/icu.d.ts +29 -0
  67. package/dist/i18n/icu.js +170 -0
  68. package/dist/i18n/index.d.ts +4 -0
  69. package/dist/i18n/index.js +3 -0
  70. package/dist/index.d.ts +30 -746
  71. package/dist/index.js +12 -2364
  72. package/dist/input/accepts.d.ts +5 -0
  73. package/dist/input/accepts.js +105 -0
  74. package/dist/input/binary.d.ts +20 -0
  75. package/dist/input/binary.js +40 -0
  76. package/dist/input/body-kind.d.ts +15 -0
  77. package/dist/input/body-kind.js +47 -0
  78. package/dist/input/body-limit.d.ts +21 -0
  79. package/dist/input/body-limit.js +99 -0
  80. package/dist/input/cookies.d.ts +7 -0
  81. package/dist/input/cookies.js +8 -0
  82. package/dist/input/form.d.ts +10 -0
  83. package/dist/input/form.js +24 -0
  84. package/dist/input/headers.d.ts +7 -0
  85. package/dist/input/headers.js +8 -0
  86. package/dist/input/input.d.ts +91 -0
  87. package/dist/input/input.js +88 -0
  88. package/dist/input/json.d.ts +10 -0
  89. package/dist/input/json.js +22 -0
  90. package/dist/input/params.d.ts +7 -0
  91. package/dist/input/params.js +8 -0
  92. package/dist/input/query.d.ts +10 -0
  93. package/dist/input/query.js +17 -0
  94. package/dist/mcp/mount.d.ts +116 -0
  95. package/dist/mcp/mount.js +45 -0
  96. package/dist/mcp/oauth.d.ts +14 -0
  97. package/dist/mcp/oauth.js +88 -0
  98. package/dist/mcp/uploads.d.ts +36 -0
  99. package/dist/mcp/uploads.js +171 -0
  100. package/dist/mcp/url-files.d.ts +32 -0
  101. package/dist/mcp/url-files.js +75 -0
  102. package/dist/meta/meta-spec-apply.d.ts +25 -0
  103. package/dist/meta/meta-spec-apply.js +83 -0
  104. package/dist/meta/meta-spec-merge.d.ts +103 -0
  105. package/dist/meta/meta-spec-merge.js +50 -0
  106. package/dist/meta/meta-spec-validate.d.ts +61 -0
  107. package/dist/meta/meta-spec-validate.js +166 -0
  108. package/dist/meta/meta-spec.d.ts +49 -0
  109. package/dist/meta/meta-spec.js +197 -0
  110. package/dist/middleware/compress.d.ts +15 -0
  111. package/dist/middleware/compress.js +93 -0
  112. package/dist/middleware/cors.d.ts +18 -0
  113. package/dist/middleware/cors.js +80 -0
  114. package/dist/middleware/csrf.d.ts +11 -0
  115. package/dist/middleware/csrf.js +65 -0
  116. package/dist/middleware/ip-restrict.d.ts +10 -0
  117. package/dist/middleware/ip-restrict.js +82 -0
  118. package/dist/middleware/middleware.d.ts +53 -0
  119. package/dist/middleware/middleware.js +112 -0
  120. package/dist/middleware/powered-by.d.ts +6 -0
  121. package/dist/middleware/powered-by.js +13 -0
  122. package/dist/middleware/rate-limit.d.ts +40 -0
  123. package/dist/middleware/rate-limit.js +90 -0
  124. package/dist/middleware/request-id.d.ts +25 -0
  125. package/dist/middleware/request-id.js +30 -0
  126. package/dist/middleware/secure-headers.d.ts +18 -0
  127. package/dist/middleware/secure-headers.js +36 -0
  128. package/dist/middleware/server-timing.d.ts +8 -0
  129. package/dist/middleware/server-timing.js +52 -0
  130. package/dist/middleware/timeout.d.ts +6 -0
  131. package/dist/middleware/timeout.js +29 -0
  132. package/dist/observability/curl-logger.d.ts +46 -0
  133. package/dist/observability/curl-logger.js +175 -0
  134. package/dist/observability/request-to-curl.d.ts +17 -0
  135. package/dist/observability/request-to-curl.js +47 -0
  136. package/dist/openapi/collect.d.ts +56 -18
  137. package/dist/openapi/collect.js +109 -23
  138. package/dist/openapi/components.d.ts +9 -0
  139. package/dist/openapi/components.js +90 -0
  140. package/dist/openapi/docs-page.d.ts +20 -18
  141. package/dist/openapi/docs-page.js +28 -46
  142. package/dist/openapi/document.d.ts +33 -26
  143. package/dist/openapi/document.js +21 -780
  144. package/dist/openapi/extract-schemas.d.ts +11 -0
  145. package/dist/openapi/extract-schemas.js +31 -0
  146. package/dist/openapi/generate.d.ts +47 -0
  147. package/dist/openapi/generate.js +180 -0
  148. package/dist/openapi/manifest.d.ts +41 -0
  149. package/dist/openapi/manifest.js +49 -0
  150. package/dist/openapi/output-keys.d.ts +6 -0
  151. package/dist/openapi/output-keys.js +24 -0
  152. package/dist/openapi/paths.d.ts +35 -0
  153. package/dist/openapi/paths.js +175 -0
  154. package/dist/openapi/register.d.ts +14 -3
  155. package/dist/openapi/register.js +13 -20
  156. package/dist/openapi/responses.d.ts +44 -0
  157. package/dist/openapi/responses.js +159 -0
  158. package/dist/openapi/scalar.d.ts +4 -14
  159. package/dist/openapi/scalar.js +5 -7
  160. package/dist/openapi/security.d.ts +4 -0
  161. package/dist/openapi/security.js +25 -0
  162. package/dist/openapi/serve.d.ts +25 -9
  163. package/dist/openapi/serve.js +108 -29
  164. package/dist/openapi/servers.d.ts +19 -0
  165. package/dist/openapi/servers.js +72 -0
  166. package/dist/openapi/swagger.d.ts +4 -14
  167. package/dist/openapi/swagger.js +5 -7
  168. package/dist/openapi/tags.d.ts +20 -0
  169. package/dist/openapi/tags.js +20 -0
  170. package/dist/openapi/webhooks.d.ts +19 -0
  171. package/dist/openapi/webhooks.js +70 -0
  172. package/dist/openapi/yaml.d.ts +8 -0
  173. package/dist/openapi/yaml.js +74 -0
  174. package/dist/proxy/headers.d.ts +30 -0
  175. package/dist/proxy/headers.js +86 -0
  176. package/dist/proxy/proxy.d.ts +39 -0
  177. package/dist/proxy/proxy.js +103 -0
  178. package/dist/proxy/upstream.d.ts +30 -0
  179. package/dist/proxy/upstream.js +116 -0
  180. package/dist/realtime/bus.d.ts +10 -13
  181. package/dist/realtime/bus.js +48 -93
  182. package/dist/realtime/invoke-user.d.ts +36 -0
  183. package/dist/realtime/invoke-user.js +103 -0
  184. package/dist/realtime/realtime.d.ts +7 -0
  185. package/dist/realtime/realtime.js +40 -0
  186. package/dist/realtime/route.d.ts +33 -27
  187. package/dist/realtime/route.js +27 -43
  188. package/dist/realtime/server.d.ts +24 -28
  189. package/dist/realtime/server.js +202 -225
  190. package/dist/response/binary.d.ts +18 -0
  191. package/dist/response/binary.js +10 -0
  192. package/dist/response/builder.d.ts +73 -0
  193. package/dist/response/builder.js +214 -0
  194. package/dist/response/cache-control.d.ts +30 -0
  195. package/dist/response/cache-control.js +74 -0
  196. package/dist/response/etag.d.ts +15 -0
  197. package/dist/response/etag.js +83 -0
  198. package/dist/response/media-type.d.ts +28 -0
  199. package/dist/response/media-type.js +97 -0
  200. package/dist/response/out-headers.d.ts +31 -0
  201. package/dist/response/out-headers.js +130 -0
  202. package/dist/response/pretty-json.d.ts +10 -0
  203. package/dist/response/pretty-json.js +44 -0
  204. package/dist/response/range.d.ts +19 -0
  205. package/dist/response/range.js +98 -0
  206. package/dist/response/response-headers.d.ts +11 -0
  207. package/dist/response/response-headers.js +21 -0
  208. package/dist/response/response.d.ts +69 -0
  209. package/dist/response/response.js +208 -0
  210. package/dist/response/sse.d.ts +41 -0
  211. package/dist/response/sse.js +73 -0
  212. package/dist/response/static.d.ts +20 -0
  213. package/dist/response/static.js +181 -0
  214. package/dist/response/status.d.ts +5 -0
  215. package/dist/response/status.js +68 -0
  216. package/dist/response/with-headers.d.ts +11 -0
  217. package/dist/response/with-headers.js +47 -0
  218. package/dist/routing/app-types.d.ts +181 -0
  219. package/dist/routing/app-types.js +1 -0
  220. package/dist/routing/app.d.ts +76 -0
  221. package/dist/routing/app.js +137 -0
  222. package/dist/routing/codegen-types.d.ts +17 -0
  223. package/dist/routing/codegen-types.js +1 -0
  224. package/dist/routing/delegate.d.ts +9 -0
  225. package/dist/routing/delegate.js +75 -0
  226. package/dist/routing/dispatch.d.ts +22 -0
  227. package/dist/routing/dispatch.js +255 -0
  228. package/dist/routing/finalize.d.ts +47 -0
  229. package/dist/routing/finalize.js +169 -0
  230. package/dist/routing/gateway-tree.d.ts +19 -0
  231. package/dist/routing/gateway-tree.js +74 -0
  232. package/dist/routing/invalidate-check.d.ts +58 -0
  233. package/dist/routing/invalidate-check.js +124 -0
  234. package/dist/routing/match.d.ts +22 -0
  235. package/dist/routing/match.js +108 -0
  236. package/dist/routing/middleware-chain.d.ts +16 -0
  237. package/dist/routing/middleware-chain.js +41 -0
  238. package/dist/routing/output-types.d.ts +91 -0
  239. package/dist/routing/output-types.js +1 -0
  240. package/dist/routing/pattern.d.ts +55 -0
  241. package/dist/routing/pattern.js +219 -0
  242. package/dist/routing/record.d.ts +18 -0
  243. package/dist/routing/record.js +4 -0
  244. package/dist/routing/register.d.ts +135 -0
  245. package/dist/routing/register.js +155 -0
  246. package/dist/routing/request-path.d.ts +30 -0
  247. package/dist/routing/request-path.js +173 -0
  248. package/dist/routing/route-builder.d.ts +160 -0
  249. package/dist/routing/route-builder.js +86 -0
  250. package/dist/routing/route-tree.d.ts +18 -0
  251. package/dist/routing/route-tree.js +91 -0
  252. package/dist/routing/settings-chain.d.ts +75 -0
  253. package/dist/routing/settings-chain.js +137 -0
  254. package/dist/routing/settings.d.ts +90 -0
  255. package/dist/routing/settings.js +44 -0
  256. package/dist/routing/tap.d.ts +31 -0
  257. package/dist/routing/tap.js +77 -0
  258. package/dist/routing/tree-merge.d.ts +7 -0
  259. package/dist/routing/tree-merge.js +77 -0
  260. package/dist/routing/tree.d.ts +85 -0
  261. package/dist/routing/tree.js +196 -0
  262. package/dist/routing/types.d.ts +20 -0
  263. package/dist/routing/types.js +1 -0
  264. package/dist/routing/ws-builder.d.ts +62 -0
  265. package/dist/routing/ws-builder.js +109 -0
  266. package/dist/runtime/detect-runtime.d.ts +16 -0
  267. package/dist/runtime/detect-runtime.js +11 -0
  268. package/dist/runtime/optional-peer.d.ts +10 -0
  269. package/dist/runtime/optional-peer.js +19 -0
  270. package/dist/schema/arktype.d.ts +7 -0
  271. package/dist/schema/arktype.js +13 -0
  272. package/dist/schema/canonicalize.d.ts +8 -0
  273. package/dist/schema/canonicalize.js +19 -0
  274. package/dist/schema/effect.d.ts +7 -0
  275. package/dist/schema/effect.js +4 -0
  276. package/dist/schema/naming.d.ts +31 -0
  277. package/dist/schema/naming.js +116 -0
  278. package/dist/schema/sanitize-spec.d.ts +15 -0
  279. package/dist/schema/sanitize-spec.js +43 -0
  280. package/dist/schema/slots.d.ts +15 -0
  281. package/dist/schema/slots.js +179 -0
  282. package/dist/schema/to-json-schema.d.ts +34 -0
  283. package/dist/schema/to-json-schema.js +94 -0
  284. package/dist/schema/valibot.d.ts +4 -0
  285. package/dist/schema/valibot.js +153 -0
  286. package/dist/schema/yup.d.ts +3 -0
  287. package/dist/schema/yup.js +57 -0
  288. package/dist/schema/zod.d.ts +6 -0
  289. package/dist/schema/zod.js +192 -0
  290. package/dist/security/crypto.d.ts +7 -0
  291. package/dist/security/crypto.js +30 -0
  292. package/dist/streaming/producer-stream.d.ts +45 -0
  293. package/dist/streaming/producer-stream.js +251 -0
  294. package/dist/telemetry/fields.d.ts +43 -0
  295. package/dist/telemetry/fields.js +64 -0
  296. package/dist/telemetry/log-format.d.ts +7 -0
  297. package/dist/telemetry/log-format.js +43 -0
  298. package/dist/telemetry/logger.d.ts +44 -0
  299. package/dist/telemetry/logger.js +122 -0
  300. package/dist/telemetry/otel-subpath.d.ts +7 -0
  301. package/dist/telemetry/otel-subpath.js +5 -0
  302. package/dist/telemetry/otel.d.ts +50 -57
  303. package/dist/telemetry/otel.js +54 -130
  304. package/dist/telemetry/request-log.d.ts +22 -0
  305. package/dist/telemetry/request-log.js +83 -0
  306. package/dist/telemetry/request-trace.d.ts +123 -0
  307. package/dist/telemetry/request-trace.js +199 -0
  308. package/dist/telemetry/span-lifecycle.d.ts +11 -0
  309. package/dist/telemetry/span-lifecycle.js +114 -0
  310. package/dist/telemetry/traceparent.d.ts +40 -0
  311. package/dist/telemetry/traceparent.js +73 -0
  312. package/dist/testing/testing.d.ts +42 -0
  313. package/dist/testing/testing.js +101 -0
  314. package/dist/validation/content-type.d.ts +21 -0
  315. package/dist/validation/content-type.js +42 -0
  316. package/dist/validation/standard-schema.d.ts +41 -0
  317. package/dist/validation/standard-schema.js +5 -0
  318. package/dist/validation/validate-input.d.ts +45 -0
  319. package/dist/validation/validate-input.js +174 -0
  320. package/dist/validation/validate-output.d.ts +34 -0
  321. package/dist/validation/validate-output.js +107 -0
  322. package/dist/ws/bun.d.ts +30 -25
  323. package/dist/ws/bun.js +42 -46
  324. package/dist/ws/cloudflare.d.ts +6 -75
  325. package/dist/ws/cloudflare.js +37 -104
  326. package/dist/ws/contract.d.ts +74 -0
  327. package/dist/ws/contract.js +83 -0
  328. package/dist/ws/node.d.ts +12 -21
  329. package/dist/ws/node.js +103 -151
  330. package/dist/ws/origin.d.ts +23 -0
  331. package/dist/ws/origin.js +48 -0
  332. package/dist/ws/route.d.ts +14 -0
  333. package/dist/ws/route.js +5 -0
  334. package/dist/ws/session.d.ts +15 -6
  335. package/dist/ws/session.js +22 -23
  336. package/dist/ws/shared.d.ts +23 -33
  337. package/dist/ws/shared.js +53 -39
  338. package/package.json +169 -251
  339. package/dist/accepts.d.ts +0 -12
  340. package/dist/accepts.d.ts.map +0 -1
  341. package/dist/accepts.js +0 -126
  342. package/dist/accepts.js.map +0 -1
  343. package/dist/body-kind.d.ts +0 -26
  344. package/dist/body-kind.d.ts.map +0 -1
  345. package/dist/body-kind.js +0 -70
  346. package/dist/body-kind.js.map +0 -1
  347. package/dist/body-limit.d.ts +0 -26
  348. package/dist/body-limit.d.ts.map +0 -1
  349. package/dist/body-limit.js +0 -126
  350. package/dist/body-limit.js.map +0 -1
  351. package/dist/build/index.d.ts.map +0 -1
  352. package/dist/build/index.js.map +0 -1
  353. package/dist/cli-args.d.ts +0 -33
  354. package/dist/cli-args.d.ts.map +0 -1
  355. package/dist/cli-args.js +0 -102
  356. package/dist/cli-args.js.map +0 -1
  357. package/dist/cli-go/auth.go +0 -26
  358. package/dist/cli-go/config.go +0 -192
  359. package/dist/cli-go/errors.go +0 -75
  360. package/dist/cli-go/multipart.go +0 -79
  361. package/dist/cli-go/output.go +0 -163
  362. package/dist/cli-go/root.go +0 -30
  363. package/dist/cli-go/stream.go +0 -88
  364. package/dist/cli-go/version.go +0 -5
  365. package/dist/cli.d.ts +0 -3
  366. package/dist/cli.d.ts.map +0 -1
  367. package/dist/cli.js +0 -209
  368. package/dist/cli.js.map +0 -1
  369. package/dist/client/defaults.d.ts +0 -12
  370. package/dist/client/defaults.d.ts.map +0 -1
  371. package/dist/client/defaults.js +0 -48
  372. package/dist/client/defaults.js.map +0 -1
  373. package/dist/client/error.d.ts +0 -49
  374. package/dist/client/error.d.ts.map +0 -1
  375. package/dist/client/error.js +0 -71
  376. package/dist/client/error.js.map +0 -1
  377. package/dist/client/http.d.ts +0 -155
  378. package/dist/client/http.d.ts.map +0 -1
  379. package/dist/client/http.js +0 -571
  380. package/dist/client/http.js.map +0 -1
  381. package/dist/client/index.d.ts +0 -23
  382. package/dist/client/index.d.ts.map +0 -1
  383. package/dist/client/index.js +0 -95
  384. package/dist/client/index.js.map +0 -1
  385. package/dist/client/path.d.ts +0 -26
  386. package/dist/client/path.d.ts.map +0 -1
  387. package/dist/client/path.js +0 -163
  388. package/dist/client/path.js.map +0 -1
  389. package/dist/client/redirect-policy.d.ts +0 -12
  390. package/dist/client/redirect-policy.d.ts.map +0 -1
  391. package/dist/client/redirect-policy.js +0 -20
  392. package/dist/client/redirect-policy.js.map +0 -1
  393. package/dist/client/sdk.d.ts +0 -70
  394. package/dist/client/sdk.d.ts.map +0 -1
  395. package/dist/client/sdk.js +0 -292
  396. package/dist/client/sdk.js.map +0 -1
  397. package/dist/client/sse.d.ts +0 -23
  398. package/dist/client/sse.d.ts.map +0 -1
  399. package/dist/client/sse.js +0 -129
  400. package/dist/client/sse.js.map +0 -1
  401. package/dist/client/types.d.ts +0 -124
  402. package/dist/client/types.d.ts.map +0 -1
  403. package/dist/client/types.js +0 -2
  404. package/dist/client/types.js.map +0 -1
  405. package/dist/client/ws.d.ts +0 -22
  406. package/dist/client/ws.d.ts.map +0 -1
  407. package/dist/client/ws.js +0 -112
  408. package/dist/client/ws.js.map +0 -1
  409. package/dist/client-go/errors.go +0 -236
  410. package/dist/client-go/export.go +0 -44
  411. package/dist/client-go/invalidation.go +0 -371
  412. package/dist/client-go/nullable.go +0 -62
  413. package/dist/client-go/realtime.go +0 -354
  414. package/dist/client-go/result.go +0 -20
  415. package/dist/client-go/runtime.go +0 -975
  416. package/dist/client-go/sse.go +0 -159
  417. package/dist/client-go/transport.go +0 -495
  418. package/dist/client-go/ws.go +0 -128
  419. package/dist/client-info.d.ts +0 -36
  420. package/dist/client-info.d.ts.map +0 -1
  421. package/dist/client-info.js +0 -53
  422. package/dist/client-info.js.map +0 -1
  423. package/dist/client-mcp/README.md +0 -10
  424. package/dist/client-mcp/server.ts +0 -221
  425. package/dist/client-mcp/types.ts +0 -19
  426. package/dist/client-python/_errors.py +0 -115
  427. package/dist/client-python/_invalidation.py +0 -494
  428. package/dist/client-python/_realtime.py +0 -179
  429. package/dist/client-python/_runtime.py +0 -860
  430. package/dist/client-python/_sse.py +0 -155
  431. package/dist/client-python/_transport.py +0 -366
  432. package/dist/client-python/_ws.py +0 -159
  433. package/dist/client-python/py.typed +0 -0
  434. package/dist/client-rust/errors.rs +0 -220
  435. package/dist/client-rust/invalidation.rs +0 -412
  436. package/dist/client-rust/invalidation_sync.rs +0 -93
  437. package/dist/client-rust/nullable.rs +0 -17
  438. package/dist/client-rust/realtime.rs +0 -702
  439. package/dist/client-rust/result.rs +0 -22
  440. package/dist/client-rust/runtime.rs +0 -980
  441. package/dist/client-rust/runtime_sync.rs +0 -484
  442. package/dist/client-rust/sse.rs +0 -188
  443. package/dist/client-rust/ws.rs +0 -167
  444. package/dist/codegen-go-cli.d.ts +0 -22
  445. package/dist/codegen-go-cli.d.ts.map +0 -1
  446. package/dist/codegen-go-cli.js +0 -964
  447. package/dist/codegen-go-cli.js.map +0 -1
  448. package/dist/codegen-go.d.ts +0 -41
  449. package/dist/codegen-go.d.ts.map +0 -1
  450. package/dist/codegen-go.js +0 -872
  451. package/dist/codegen-go.js.map +0 -1
  452. package/dist/codegen-hash.d.ts +0 -3
  453. package/dist/codegen-hash.d.ts.map +0 -1
  454. package/dist/codegen-hash.js +0 -9
  455. package/dist/codegen-hash.js.map +0 -1
  456. package/dist/codegen-ir.d.ts +0 -190
  457. package/dist/codegen-ir.d.ts.map +0 -1
  458. package/dist/codegen-ir.js +0 -661
  459. package/dist/codegen-ir.js.map +0 -1
  460. package/dist/codegen-lang.d.ts +0 -65
  461. package/dist/codegen-lang.d.ts.map +0 -1
  462. package/dist/codegen-lang.js +0 -526
  463. package/dist/codegen-lang.js.map +0 -1
  464. package/dist/codegen-load.d.ts +0 -31
  465. package/dist/codegen-load.d.ts.map +0 -1
  466. package/dist/codegen-load.js +0 -138
  467. package/dist/codegen-load.js.map +0 -1
  468. package/dist/codegen-loaders.d.ts +0 -12
  469. package/dist/codegen-loaders.d.ts.map +0 -1
  470. package/dist/codegen-loaders.js +0 -55
  471. package/dist/codegen-loaders.js.map +0 -1
  472. package/dist/codegen-mcp.d.ts +0 -13
  473. package/dist/codegen-mcp.d.ts.map +0 -1
  474. package/dist/codegen-mcp.js +0 -368
  475. package/dist/codegen-mcp.js.map +0 -1
  476. package/dist/codegen-python.d.ts +0 -33
  477. package/dist/codegen-python.d.ts.map +0 -1
  478. package/dist/codegen-python.js +0 -828
  479. package/dist/codegen-python.js.map +0 -1
  480. package/dist/codegen-route-tree-intern.d.ts +0 -40
  481. package/dist/codegen-route-tree-intern.d.ts.map +0 -1
  482. package/dist/codegen-route-tree-intern.js +0 -221
  483. package/dist/codegen-route-tree-intern.js.map +0 -1
  484. package/dist/codegen-rust.d.ts +0 -18
  485. package/dist/codegen-rust.d.ts.map +0 -1
  486. package/dist/codegen-rust.js +0 -1293
  487. package/dist/codegen-rust.js.map +0 -1
  488. package/dist/codegen-sanitize.d.ts +0 -3
  489. package/dist/codegen-sanitize.d.ts.map +0 -1
  490. package/dist/codegen-sanitize.js +0 -56
  491. package/dist/codegen-sanitize.js.map +0 -1
  492. package/dist/codegen-schema-naming.d.ts +0 -27
  493. package/dist/codegen-schema-naming.d.ts.map +0 -1
  494. package/dist/codegen-schema-naming.js +0 -150
  495. package/dist/codegen-schema-naming.js.map +0 -1
  496. package/dist/codegen-sdk-model.d.ts +0 -71
  497. package/dist/codegen-sdk-model.d.ts.map +0 -1
  498. package/dist/codegen-sdk-model.js +0 -179
  499. package/dist/codegen-sdk-model.js.map +0 -1
  500. package/dist/codegen.d.ts +0 -187
  501. package/dist/codegen.d.ts.map +0 -1
  502. package/dist/codegen.js +0 -4619
  503. package/dist/codegen.js.map +0 -1
  504. package/dist/context.d.ts +0 -86
  505. package/dist/context.d.ts.map +0 -1
  506. package/dist/context.js +0 -242
  507. package/dist/context.js.map +0 -1
  508. package/dist/cookie-sign.d.ts +0 -17
  509. package/dist/cookie-sign.d.ts.map +0 -1
  510. package/dist/cookie-sign.js +0 -104
  511. package/dist/cookie-sign.js.map +0 -1
  512. package/dist/cookie.d.ts +0 -24
  513. package/dist/cookie.d.ts.map +0 -1
  514. package/dist/cookie.js +0 -138
  515. package/dist/cookie.js.map +0 -1
  516. package/dist/cors.d.ts +0 -14
  517. package/dist/cors.d.ts.map +0 -1
  518. package/dist/cors.js +0 -87
  519. package/dist/cors.js.map +0 -1
  520. package/dist/crypto.d.ts +0 -7
  521. package/dist/crypto.d.ts.map +0 -1
  522. package/dist/crypto.js +0 -38
  523. package/dist/crypto.js.map +0 -1
  524. package/dist/csrf.d.ts +0 -28
  525. package/dist/csrf.d.ts.map +0 -1
  526. package/dist/csrf.js +0 -79
  527. package/dist/csrf.js.map +0 -1
  528. package/dist/curl-logger.d.ts +0 -44
  529. package/dist/curl-logger.d.ts.map +0 -1
  530. package/dist/curl-logger.js +0 -199
  531. package/dist/curl-logger.js.map +0 -1
  532. package/dist/detect-runtime.d.ts +0 -16
  533. package/dist/detect-runtime.d.ts.map +0 -1
  534. package/dist/detect-runtime.js +0 -13
  535. package/dist/detect-runtime.js.map +0 -1
  536. package/dist/dict.d.ts +0 -11
  537. package/dist/dict.d.ts.map +0 -1
  538. package/dist/dict.js +0 -13
  539. package/dist/dict.js.map +0 -1
  540. package/dist/error.d.ts +0 -21
  541. package/dist/error.d.ts.map +0 -1
  542. package/dist/error.js +0 -44
  543. package/dist/error.js.map +0 -1
  544. package/dist/errors.d.ts +0 -40
  545. package/dist/errors.d.ts.map +0 -1
  546. package/dist/errors.js +0 -39
  547. package/dist/errors.js.map +0 -1
  548. package/dist/etag.d.ts +0 -11
  549. package/dist/etag.d.ts.map +0 -1
  550. package/dist/etag.js +0 -82
  551. package/dist/etag.js.map +0 -1
  552. package/dist/feature-detect.d.ts +0 -25
  553. package/dist/feature-detect.d.ts.map +0 -1
  554. package/dist/feature-detect.js +0 -144
  555. package/dist/feature-detect.js.map +0 -1
  556. package/dist/feature-load.d.ts +0 -3
  557. package/dist/feature-load.d.ts.map +0 -1
  558. package/dist/feature-load.js +0 -36
  559. package/dist/feature-load.js.map +0 -1
  560. package/dist/feature-slots.d.ts +0 -44
  561. package/dist/feature-slots.d.ts.map +0 -1
  562. package/dist/feature-slots.js +0 -48
  563. package/dist/feature-slots.js.map +0 -1
  564. package/dist/fetch-request.d.ts +0 -10
  565. package/dist/fetch-request.d.ts.map +0 -1
  566. package/dist/fetch-request.js +0 -13
  567. package/dist/fetch-request.js.map +0 -1
  568. package/dist/gen-process.d.ts +0 -15
  569. package/dist/gen-process.d.ts.map +0 -1
  570. package/dist/gen-process.js +0 -43
  571. package/dist/gen-process.js.map +0 -1
  572. package/dist/gen-write.d.ts +0 -19
  573. package/dist/gen-write.d.ts.map +0 -1
  574. package/dist/gen-write.js +0 -120
  575. package/dist/gen-write.js.map +0 -1
  576. package/dist/glob.d.ts +0 -21
  577. package/dist/glob.d.ts.map +0 -1
  578. package/dist/glob.js +0 -115
  579. package/dist/glob.js.map +0 -1
  580. package/dist/go-type-emitter.d.ts +0 -47
  581. package/dist/go-type-emitter.d.ts.map +0 -1
  582. package/dist/go-type-emitter.js +0 -594
  583. package/dist/go-type-emitter.js.map +0 -1
  584. package/dist/honey-response.d.ts +0 -82
  585. package/dist/honey-response.d.ts.map +0 -1
  586. package/dist/honey-response.js +0 -338
  587. package/dist/honey-response.js.map +0 -1
  588. package/dist/i18n-slot.d.ts +0 -15
  589. package/dist/i18n-slot.d.ts.map +0 -1
  590. package/dist/i18n-slot.js +0 -14
  591. package/dist/i18n-slot.js.map +0 -1
  592. package/dist/i18n.d.ts +0 -29
  593. package/dist/i18n.d.ts.map +0 -1
  594. package/dist/i18n.js +0 -250
  595. package/dist/i18n.js.map +0 -1
  596. package/dist/index.d.ts.map +0 -1
  597. package/dist/index.js.map +0 -1
  598. package/dist/init.d.ts +0 -5
  599. package/dist/init.d.ts.map +0 -1
  600. package/dist/init.js +0 -140
  601. package/dist/init.js.map +0 -1
  602. package/dist/input.d.ts +0 -6
  603. package/dist/input.d.ts.map +0 -1
  604. package/dist/input.js +0 -4
  605. package/dist/input.js.map +0 -1
  606. package/dist/invalidate-check.d.ts +0 -61
  607. package/dist/invalidate-check.d.ts.map +0 -1
  608. package/dist/invalidate-check.js +0 -163
  609. package/dist/invalidate-check.js.map +0 -1
  610. package/dist/invoke-user.d.ts +0 -35
  611. package/dist/invoke-user.d.ts.map +0 -1
  612. package/dist/invoke-user.js +0 -73
  613. package/dist/invoke-user.js.map +0 -1
  614. package/dist/ip-restrict.d.ts +0 -24
  615. package/dist/ip-restrict.d.ts.map +0 -1
  616. package/dist/ip-restrict.js +0 -60
  617. package/dist/ip-restrict.js.map +0 -1
  618. package/dist/ip.d.ts +0 -39
  619. package/dist/ip.d.ts.map +0 -1
  620. package/dist/ip.js +0 -209
  621. package/dist/ip.js.map +0 -1
  622. package/dist/logger.d.ts +0 -45
  623. package/dist/logger.d.ts.map +0 -1
  624. package/dist/logger.js +0 -113
  625. package/dist/logger.js.map +0 -1
  626. package/dist/media-type.d.ts +0 -30
  627. package/dist/media-type.d.ts.map +0 -1
  628. package/dist/media-type.js +0 -97
  629. package/dist/media-type.js.map +0 -1
  630. package/dist/meta-spec-merge.d.ts +0 -32
  631. package/dist/meta-spec-merge.d.ts.map +0 -1
  632. package/dist/meta-spec-merge.js +0 -68
  633. package/dist/meta-spec-merge.js.map +0 -1
  634. package/dist/meta-spec.d.ts +0 -94
  635. package/dist/meta-spec.d.ts.map +0 -1
  636. package/dist/meta-spec.js +0 -535
  637. package/dist/meta-spec.js.map +0 -1
  638. package/dist/middleware.d.ts +0 -77
  639. package/dist/middleware.d.ts.map +0 -1
  640. package/dist/middleware.js +0 -253
  641. package/dist/middleware.js.map +0 -1
  642. package/dist/node-request.d.ts +0 -104
  643. package/dist/node-request.d.ts.map +0 -1
  644. package/dist/node-request.js +0 -407
  645. package/dist/node-request.js.map +0 -1
  646. package/dist/node.d.ts +0 -30
  647. package/dist/node.d.ts.map +0 -1
  648. package/dist/node.js +0 -396
  649. package/dist/node.js.map +0 -1
  650. package/dist/openapi/collect.d.ts.map +0 -1
  651. package/dist/openapi/collect.js.map +0 -1
  652. package/dist/openapi/docs-page.d.ts.map +0 -1
  653. package/dist/openapi/docs-page.js.map +0 -1
  654. package/dist/openapi/document.d.ts.map +0 -1
  655. package/dist/openapi/document.js.map +0 -1
  656. package/dist/openapi/json-schema-slot.d.ts +0 -12
  657. package/dist/openapi/json-schema-slot.d.ts.map +0 -1
  658. package/dist/openapi/json-schema-slot.js +0 -38
  659. package/dist/openapi/json-schema-slot.js.map +0 -1
  660. package/dist/openapi/register.d.ts.map +0 -1
  661. package/dist/openapi/register.js.map +0 -1
  662. package/dist/openapi/scalar.d.ts.map +0 -1
  663. package/dist/openapi/scalar.js.map +0 -1
  664. package/dist/openapi/serve.d.ts.map +0 -1
  665. package/dist/openapi/serve.js.map +0 -1
  666. package/dist/openapi/spec-factory.d.ts +0 -65
  667. package/dist/openapi/spec-factory.d.ts.map +0 -1
  668. package/dist/openapi/spec-factory.js +0 -52
  669. package/dist/openapi/spec-factory.js.map +0 -1
  670. package/dist/openapi/spec.d.ts +0 -29
  671. package/dist/openapi/spec.d.ts.map +0 -1
  672. package/dist/openapi/spec.js +0 -50
  673. package/dist/openapi/spec.js.map +0 -1
  674. package/dist/openapi/swagger.d.ts.map +0 -1
  675. package/dist/openapi/swagger.js.map +0 -1
  676. package/dist/pattern.d.ts +0 -71
  677. package/dist/pattern.d.ts.map +0 -1
  678. package/dist/pattern.js +0 -239
  679. package/dist/pattern.js.map +0 -1
  680. package/dist/peer.d.ts +0 -17
  681. package/dist/peer.d.ts.map +0 -1
  682. package/dist/peer.js +0 -50
  683. package/dist/peer.js.map +0 -1
  684. package/dist/plugin.d.ts +0 -228
  685. package/dist/plugin.d.ts.map +0 -1
  686. package/dist/plugin.js +0 -666
  687. package/dist/plugin.js.map +0 -1
  688. package/dist/powered-by.d.ts +0 -7
  689. package/dist/powered-by.d.ts.map +0 -1
  690. package/dist/powered-by.js +0 -11
  691. package/dist/powered-by.js.map +0 -1
  692. package/dist/pretty-json.d.ts +0 -10
  693. package/dist/pretty-json.d.ts.map +0 -1
  694. package/dist/pretty-json.js +0 -47
  695. package/dist/pretty-json.js.map +0 -1
  696. package/dist/producer-stream.d.ts +0 -47
  697. package/dist/producer-stream.d.ts.map +0 -1
  698. package/dist/producer-stream.js +0 -267
  699. package/dist/producer-stream.js.map +0 -1
  700. package/dist/proxy.d.ts +0 -90
  701. package/dist/proxy.d.ts.map +0 -1
  702. package/dist/proxy.js +0 -274
  703. package/dist/proxy.js.map +0 -1
  704. package/dist/python-type-emitter.d.ts +0 -24
  705. package/dist/python-type-emitter.d.ts.map +0 -1
  706. package/dist/python-type-emitter.js +0 -157
  707. package/dist/python-type-emitter.js.map +0 -1
  708. package/dist/realtime/bus.d.ts.map +0 -1
  709. package/dist/realtime/bus.js.map +0 -1
  710. package/dist/realtime/register.d.ts +0 -3
  711. package/dist/realtime/register.d.ts.map +0 -1
  712. package/dist/realtime/register.js +0 -10
  713. package/dist/realtime/register.js.map +0 -1
  714. package/dist/realtime/route.d.ts.map +0 -1
  715. package/dist/realtime/route.js.map +0 -1
  716. package/dist/realtime/server.d.ts.map +0 -1
  717. package/dist/realtime/server.js.map +0 -1
  718. package/dist/request-id.d.ts +0 -19
  719. package/dist/request-id.d.ts.map +0 -1
  720. package/dist/request-id.js +0 -16
  721. package/dist/request-id.js.map +0 -1
  722. package/dist/request-limits.d.ts +0 -3
  723. package/dist/request-limits.d.ts.map +0 -1
  724. package/dist/request-limits.js +0 -3
  725. package/dist/request-limits.js.map +0 -1
  726. package/dist/request-path.d.ts +0 -33
  727. package/dist/request-path.d.ts.map +0 -1
  728. package/dist/request-path.js +0 -178
  729. package/dist/request-path.js.map +0 -1
  730. package/dist/request-to-curl.d.ts +0 -15
  731. package/dist/request-to-curl.d.ts.map +0 -1
  732. package/dist/request-to-curl.js +0 -48
  733. package/dist/request-to-curl.js.map +0 -1
  734. package/dist/response.d.ts +0 -86
  735. package/dist/response.d.ts.map +0 -1
  736. package/dist/response.js +0 -313
  737. package/dist/response.js.map +0 -1
  738. package/dist/rust-type-emitter.d.ts +0 -44
  739. package/dist/rust-type-emitter.d.ts.map +0 -1
  740. package/dist/rust-type-emitter.js +0 -463
  741. package/dist/rust-type-emitter.js.map +0 -1
  742. package/dist/secure-headers.d.ts +0 -16
  743. package/dist/secure-headers.d.ts.map +0 -1
  744. package/dist/secure-headers.js +0 -53
  745. package/dist/secure-headers.js.map +0 -1
  746. package/dist/serve-register.d.ts +0 -6
  747. package/dist/serve-register.d.ts.map +0 -1
  748. package/dist/serve-register.js +0 -9
  749. package/dist/serve-register.js.map +0 -1
  750. package/dist/serve-slot.d.ts +0 -9
  751. package/dist/serve-slot.d.ts.map +0 -1
  752. package/dist/serve-slot.js +0 -52
  753. package/dist/serve-slot.js.map +0 -1
  754. package/dist/serve.d.ts +0 -38
  755. package/dist/serve.d.ts.map +0 -1
  756. package/dist/serve.js +0 -157
  757. package/dist/serve.js.map +0 -1
  758. package/dist/server-timing.d.ts +0 -9
  759. package/dist/server-timing.d.ts.map +0 -1
  760. package/dist/server-timing.js +0 -51
  761. package/dist/server-timing.js.map +0 -1
  762. package/dist/static.d.ts +0 -21
  763. package/dist/static.d.ts.map +0 -1
  764. package/dist/static.js +0 -102
  765. package/dist/static.js.map +0 -1
  766. package/dist/telemetry/otel.d.ts.map +0 -1
  767. package/dist/telemetry/otel.js.map +0 -1
  768. package/dist/testing.d.ts +0 -36
  769. package/dist/testing.d.ts.map +0 -1
  770. package/dist/testing.js +0 -124
  771. package/dist/testing.js.map +0 -1
  772. package/dist/timeout.d.ts +0 -13
  773. package/dist/timeout.d.ts.map +0 -1
  774. package/dist/timeout.js +0 -36
  775. package/dist/timeout.js.map +0 -1
  776. package/dist/tree.d.ts +0 -197
  777. package/dist/tree.d.ts.map +0 -1
  778. package/dist/tree.js +0 -437
  779. package/dist/tree.js.map +0 -1
  780. package/dist/trust.d.ts +0 -21
  781. package/dist/trust.d.ts.map +0 -1
  782. package/dist/trust.js +0 -100
  783. package/dist/trust.js.map +0 -1
  784. package/dist/ts-type-emitter.d.ts +0 -8
  785. package/dist/ts-type-emitter.d.ts.map +0 -1
  786. package/dist/ts-type-emitter.js +0 -150
  787. package/dist/ts-type-emitter.js.map +0 -1
  788. package/dist/type-emitter.d.ts +0 -36
  789. package/dist/type-emitter.d.ts.map +0 -1
  790. package/dist/type-emitter.js +0 -729
  791. package/dist/type-emitter.js.map +0 -1
  792. package/dist/type-extractor.d.ts +0 -43
  793. package/dist/type-extractor.d.ts.map +0 -1
  794. package/dist/type-extractor.js +0 -819
  795. package/dist/type-extractor.js.map +0 -1
  796. package/dist/types.d.ts +0 -467
  797. package/dist/types.d.ts.map +0 -1
  798. package/dist/types.js +0 -96
  799. package/dist/types.js.map +0 -1
  800. package/dist/validation.d.ts +0 -31
  801. package/dist/validation.d.ts.map +0 -1
  802. package/dist/validation.js +0 -335
  803. package/dist/validation.js.map +0 -1
  804. package/dist/with-headers.d.ts +0 -15
  805. package/dist/with-headers.d.ts.map +0 -1
  806. package/dist/with-headers.js +0 -45
  807. package/dist/with-headers.js.map +0 -1
  808. package/dist/ws/bun.d.ts.map +0 -1
  809. package/dist/ws/bun.js.map +0 -1
  810. package/dist/ws/cloudflare.d.ts.map +0 -1
  811. package/dist/ws/cloudflare.js.map +0 -1
  812. package/dist/ws/deno.d.ts +0 -13
  813. package/dist/ws/deno.d.ts.map +0 -1
  814. package/dist/ws/deno.js +0 -133
  815. package/dist/ws/deno.js.map +0 -1
  816. package/dist/ws/node.d.ts.map +0 -1
  817. package/dist/ws/node.js.map +0 -1
  818. package/dist/ws/session.d.ts.map +0 -1
  819. package/dist/ws/session.js.map +0 -1
  820. package/dist/ws/shared.d.ts.map +0 -1
  821. package/dist/ws/shared.js.map +0 -1
  822. package/dist/ws-origin.d.ts +0 -20
  823. package/dist/ws-origin.d.ts.map +0 -1
  824. package/dist/ws-origin.js +0 -41
  825. package/dist/ws-origin.js.map +0 -1
  826. package/dist/yaml.d.ts +0 -18
  827. package/dist/yaml.d.ts.map +0 -1
  828. package/dist/yaml.js +0 -101
  829. package/dist/yaml.js.map +0 -1
  830. package/docs/api-ref/go.md +0 -399
  831. package/docs/api-ref/python.md +0 -399
  832. package/docs/api-ref/rust.md +0 -399
  833. package/docs/api-ref/typescript.md +0 -399
  834. package/docs/invalidate-spec.md +0 -333
  835. package/docs/meta-spec.md +0 -555
  836. package/docs/packaging.md +0 -104
  837. package/docs/regression-matrix/README.md +0 -32
  838. package/docs/regression-matrix/review.md +0 -44
  839. package/docs/regression-matrix/ws1-3.md +0 -97
  840. package/docs/regression-matrix/ws4-8.md +0 -107
  841. package/docs/regression-matrix/ws9-12.md +0 -266
  842. package/docs/sdk.md +0 -798
  843. package/src/accepts.ts +0 -136
  844. package/src/body-kind.ts +0 -67
  845. package/src/body-limit.ts +0 -152
  846. package/src/build/index.ts +0 -217
  847. package/src/cli-args.ts +0 -123
  848. package/src/cli-go/auth.go +0 -26
  849. package/src/cli-go/config.go +0 -192
  850. package/src/cli-go/errors.go +0 -75
  851. package/src/cli-go/multipart.go +0 -79
  852. package/src/cli-go/output.go +0 -163
  853. package/src/cli-go/root.go +0 -30
  854. package/src/cli-go/stream.go +0 -88
  855. package/src/cli-go/version.go +0 -5
  856. package/src/cli.ts +0 -209
  857. package/src/client/defaults.ts +0 -47
  858. package/src/client/error.ts +0 -82
  859. package/src/client/http.ts +0 -737
  860. package/src/client/index.ts +0 -157
  861. package/src/client/path.ts +0 -169
  862. package/src/client/redirect-policy.ts +0 -19
  863. package/src/client/sdk.ts +0 -351
  864. package/src/client/sse.ts +0 -128
  865. package/src/client/types.ts +0 -206
  866. package/src/client/ws.ts +0 -149
  867. package/src/client-go/errors.go +0 -236
  868. package/src/client-go/export.go +0 -44
  869. package/src/client-go/invalidation.go +0 -371
  870. package/src/client-go/nullable.go +0 -62
  871. package/src/client-go/realtime.go +0 -354
  872. package/src/client-go/result.go +0 -20
  873. package/src/client-go/runtime.go +0 -975
  874. package/src/client-go/sse.go +0 -159
  875. package/src/client-go/transport.go +0 -495
  876. package/src/client-go/ws.go +0 -128
  877. package/src/client-info.ts +0 -79
  878. package/src/client-mcp/README.md +0 -10
  879. package/src/client-mcp/server.ts +0 -221
  880. package/src/client-mcp/types.ts +0 -19
  881. package/src/client-python/_errors.py +0 -115
  882. package/src/client-python/_invalidation.py +0 -494
  883. package/src/client-python/_realtime.py +0 -179
  884. package/src/client-python/_runtime.py +0 -860
  885. package/src/client-python/_sse.py +0 -155
  886. package/src/client-python/_transport.py +0 -366
  887. package/src/client-python/_ws.py +0 -159
  888. package/src/client-python/py.typed +0 -0
  889. package/src/client-rust/errors.rs +0 -220
  890. package/src/client-rust/invalidation.rs +0 -412
  891. package/src/client-rust/invalidation_sync.rs +0 -93
  892. package/src/client-rust/nullable.rs +0 -17
  893. package/src/client-rust/realtime.rs +0 -702
  894. package/src/client-rust/result.rs +0 -22
  895. package/src/client-rust/runtime.rs +0 -980
  896. package/src/client-rust/runtime_sync.rs +0 -484
  897. package/src/client-rust/sse.rs +0 -188
  898. package/src/client-rust/ws.rs +0 -167
  899. package/src/codegen-go-cli.ts +0 -1066
  900. package/src/codegen-go.ts +0 -970
  901. package/src/codegen-hash.ts +0 -8
  902. package/src/codegen-ir.ts +0 -812
  903. package/src/codegen-lang.ts +0 -517
  904. package/src/codegen-load.ts +0 -150
  905. package/src/codegen-loaders.ts +0 -50
  906. package/src/codegen-mcp.ts +0 -445
  907. package/src/codegen-python.ts +0 -916
  908. package/src/codegen-route-tree-intern.ts +0 -198
  909. package/src/codegen-rust.ts +0 -1402
  910. package/src/codegen-sanitize.ts +0 -57
  911. package/src/codegen-schema-naming.ts +0 -165
  912. package/src/codegen-sdk-model.ts +0 -228
  913. package/src/codegen.ts +0 -5089
  914. package/src/context.ts +0 -325
  915. package/src/cookie-sign.ts +0 -119
  916. package/src/cookie.ts +0 -143
  917. package/src/cors.ts +0 -95
  918. package/src/crypto.ts +0 -38
  919. package/src/csrf.ts +0 -86
  920. package/src/curl-logger.ts +0 -258
  921. package/src/detect-runtime.ts +0 -17
  922. package/src/dict.ts +0 -12
  923. package/src/error.ts +0 -55
  924. package/src/errors.ts +0 -85
  925. package/src/etag.ts +0 -97
  926. package/src/feature-detect.ts +0 -147
  927. package/src/feature-load.ts +0 -23
  928. package/src/feature-slots.ts +0 -70
  929. package/src/fetch-request.ts +0 -13
  930. package/src/gen-process.ts +0 -42
  931. package/src/gen-write.ts +0 -127
  932. package/src/glob.ts +0 -109
  933. package/src/go-type-emitter.ts +0 -660
  934. package/src/honey-response.ts +0 -379
  935. package/src/i18n-slot.ts +0 -30
  936. package/src/i18n.ts +0 -300
  937. package/src/index.ts +0 -3829
  938. package/src/init.ts +0 -161
  939. package/src/input.ts +0 -8
  940. package/src/invalidate-check.ts +0 -205
  941. package/src/invoke-user.ts +0 -95
  942. package/src/ip-restrict.ts +0 -79
  943. package/src/ip.ts +0 -194
  944. package/src/logger.ts +0 -178
  945. package/src/media-type.ts +0 -104
  946. package/src/meta-spec-merge.ts +0 -80
  947. package/src/meta-spec.ts +0 -718
  948. package/src/middleware.ts +0 -331
  949. package/src/node-request.ts +0 -431
  950. package/src/node.ts +0 -454
  951. package/src/openapi/collect.ts +0 -50
  952. package/src/openapi/docs-page.ts +0 -89
  953. package/src/openapi/document.ts +0 -902
  954. package/src/openapi/json-schema-slot.ts +0 -53
  955. package/src/openapi/register.ts +0 -23
  956. package/src/openapi/scalar.ts +0 -34
  957. package/src/openapi/serve.ts +0 -39
  958. package/src/openapi/spec-factory.ts +0 -100
  959. package/src/openapi/spec.ts +0 -74
  960. package/src/openapi/swagger.ts +0 -35
  961. package/src/pattern.ts +0 -245
  962. package/src/peer.ts +0 -53
  963. package/src/plugin.ts +0 -864
  964. package/src/powered-by.ts +0 -18
  965. package/src/pretty-json.ts +0 -56
  966. package/src/producer-stream.ts +0 -296
  967. package/src/proxy.ts +0 -370
  968. package/src/python-type-emitter.ts +0 -181
  969. package/src/realtime/bus.ts +0 -140
  970. package/src/realtime/register.ts +0 -13
  971. package/src/realtime/route.ts +0 -153
  972. package/src/realtime/server.ts +0 -298
  973. package/src/request-id.ts +0 -32
  974. package/src/request-limits.ts +0 -2
  975. package/src/request-path.ts +0 -165
  976. package/src/request-to-curl.ts +0 -52
  977. package/src/response.ts +0 -411
  978. package/src/rust-type-emitter.ts +0 -548
  979. package/src/secure-headers.ts +0 -74
  980. package/src/serve-register.ts +0 -12
  981. package/src/serve-slot.ts +0 -58
  982. package/src/serve.ts +0 -220
  983. package/src/server-timing.ts +0 -71
  984. package/src/static.ts +0 -112
  985. package/src/telemetry/otel.ts +0 -156
  986. package/src/testing.ts +0 -167
  987. package/src/timeout.ts +0 -45
  988. package/src/tree.ts +0 -558
  989. package/src/trust.ts +0 -117
  990. package/src/ts-type-emitter.ts +0 -168
  991. package/src/type-emitter.ts +0 -760
  992. package/src/type-extractor.ts +0 -855
  993. package/src/types.ts +0 -756
  994. package/src/validation.ts +0 -413
  995. package/src/with-headers.ts +0 -45
  996. package/src/ws/bun.ts +0 -120
  997. package/src/ws/cloudflare.ts +0 -192
  998. package/src/ws/deno.ts +0 -188
  999. package/src/ws/node.ts +0 -240
  1000. package/src/ws/session.ts +0 -73
  1001. package/src/ws/shared.ts +0 -140
  1002. package/src/ws-origin.ts +0 -53
  1003. package/src/yaml.ts +0 -103
package/docs/sdk.md DELETED
@@ -1,798 +0,0 @@
1
- # Honey SDKs
2
-
3
- OpenAPI-in, tier-1 SDKs out. One spec is parsed once into a shared IR, then four language printers emit idiomatic, feature-equivalent clients for **TypeScript, Python, Go, and Rust**.
4
-
5
- Framework start: [README](../README.md).
6
-
7
- ## Four-language parity pledge
8
-
9
- Every SDK exposes the same capability surface with native bindings. `context.Context` in Go, `AbortSignal` in TS, `asyncio.Task.cancel()` in Python, `tokio_util::sync::CancellationToken` in Rust — all four satisfy "cancellation" without translating each other's syntax. This page is the scannable index of the four-language SDK surface.
10
-
11
- Entry points:
12
-
13
- - `generateTypeScriptSDK(spec, { name, stem })` — emits `sdk.client.gen.ts`, `sdk.types.gen.ts`, `sdk.index.gen.ts`, `sdk.map.gen.ts`, and (when `x-realtime` is present) `sdk.runtime.gen.ts`.
14
- - `generatePythonSDK(spec)` — emits a `sdk/` package with `client.py`, `_runtime.py`, `_errors.py`, `_realtime.py`, `_transport.py`, `_ws.py`.
15
- - `generateGoSDK(spec, { modulePath })` — emits a Go module importable via a `replace` directive.
16
- - `generateRustSDK(spec, { crateName })` — emits a Cargo crate referenced via `path = "..."`.
17
-
18
- The rest of this page is the capability matrix and "how to do X" snippets. All snippets come from `../examples/`.
19
-
20
- ## Capability matrix
21
-
22
- | § | Capability | TS | Python | Go | Rust |
23
- | --- | ----------------------------------------------------- | --- | ------ | --- | ---- |
24
- | 1 | Typed operations (request, response, params, bodies) | ✓ | ✓ | ✓ | ✓ |
25
- | 2 | Typed error hierarchy + `.data` typed payload | ✓ | ✓ | ✓ | ✓ |
26
- | 3 | `onAuthExpired` callback + 1x 401 retry | ✓ | ✓ | ✓ | ✓ |
27
- | 4 | Cancellation (idiomatic per lang) | ✓ | ✓ | ✓ | ✓ |
28
- | 5 | Per-call timeout override | ✓ | ✓ | ✓ | ✓ |
29
- | 6 | Per-call headers merge | ✓ | ✓ | ✓ | ✓ |
30
- | 7 | `onRequest` / `onResponse` hook chain | ✓ | ✓ | ✓ | ✓ |
31
- | 8 | Invalidation + `isStale` | ✓ | ✓ | ✓ | ✓ |
32
- | 9 | SSE iteration | ✓ | ✓ | ✓ | ✓ |
33
- | 10 | Realtime (`x-realtime`) + `TransportAdapter` fallback | ✓ | ✓ | ✓ | ✓ |
34
- | 11 | WebSocket (`x-websocket`) bidi | ✓ | ✓ | ✓ | ✓ |
35
- | 12 | Streaming request body | ✓ | ✓ | ✓ | ✓ |
36
- | 13 | Sync runtime | — | ✓ | — | ✓ |
37
- | 14 | `onLog` lifecycle hook | ✓ | ✓ | ✓ | ✓ |
38
- | 15 | `x-deprecated` | ✓ | ✓ | ✓ | ✓ |
39
- | 16 | `x-idempotency-key` | ✓ | ✓ | ✓ | ✓ |
40
-
41
- Sync runtime is not idiomatic in TS (no sync HTTP in browsers or workerd) or Go (goroutines + `context.Context` are the async model). Python and Rust ship dual async + sync generation.
42
-
43
- ## How to do X
44
-
45
- Each subsection below shows the same capability realized in all four languages. Snippets are trimmed from `../examples/{lang}/example.*` — those files are the source of truth and contain the full frame plus imports.
46
-
47
- ### §1 — Client init + config
48
-
49
- Config is mechanism, not policy. You pick retry, logging, auth refresh, and invalidation strategies; the SDK supplies the hook slots.
50
-
51
- ```ts
52
- const sdk = new MockSDK({
53
- baseURL: BASE_URL,
54
- headers: { Authorization: "Bearer expired-token" },
55
- onAuthExpired: () => Promise.resolve("valid-token"),
56
- onLog: (entry) => console.debug(entry.event, entry.operation, entry.duration_ms, entry.status),
57
- onRequest: [addTrace, addApp],
58
- onResponse: [inspect5xx],
59
- throwOnError: true,
60
- timeout: 10_000,
61
- })
62
- ```
63
-
64
- In a browser, `baseURL` may be a same-origin path. It resolves against `location.origin`. Omit `fetch` — the default is the environment `fetch`, bound so it is safe to call on `window`. In Node and Workers without an origin, pass an absolute `http(s):` or `ws(s):` URL.
65
-
66
- ```ts
67
- const browserSdk = new MockSDK({
68
- baseURL: "/api",
69
- credentials: "include",
70
- throwOnError: true,
71
- })
72
- ```
73
-
74
- ```py
75
- sdk = AsyncSDK(ClientConfig(
76
- base_url=BASE_URL,
77
- headers={"Authorization": "Bearer expired-token"},
78
- on_auth_expired=refresh_token,
79
- on_log=on_log,
80
- on_request=[add_trace_hook, add_app_hook],
81
- on_response=[inspect_response_hook],
82
- invalidation=InvalidationConfig(stale_time=5.0),
83
- timeout=10.0,
84
- ))
85
- ```
86
-
87
- ```go
88
- client := sdk.NewClient(sdk.Config{
89
- BaseURL: baseURL,
90
- Headers: map[string]string{"Authorization": "Bearer expired-token"},
91
- OnAuthExpired: func(ctx context.Context) (string, error) { return "valid-token", nil },
92
- OnRequest: []func(*sdk.RequestContext) error{addTrace, addApp},
93
- OnResponse: []func(*sdk.ResponseContext) error{inspect5xx},
94
- OnLog: func(e sdk.LogEntry) { fmt.Println(e.Event, e.Operation, e.DurationMs, e.Status) },
95
- Invalidation: &sdk.InvalidationConfig{StaleTime: 5000}, // milliseconds
96
- Timeout: 10 * time.Second,
97
- })
98
- ```
99
-
100
- ```rust
101
- let client = Client::new(ClientConfig {
102
- base_url,
103
- bearer_token: Some("expired-token".into()),
104
- on_auth_expired: Some(Arc::new(|| Box::pin(async { Ok("valid-token".to_string()) }))),
105
- on_log: Some(Arc::new(|e: LogEntry| println!("{} {} {}", e.event, e.operation, e.duration_ms))),
106
- on_request: vec![trace_hook, app_hook],
107
- on_response: vec![inspect_hook],
108
- invalidation: Some(InvalidationConfig { stale_time: 5_000, ..Default::default() }),
109
- timeout: Some(Duration::from_secs(10)),
110
- ..Default::default()
111
- });
112
- ```
113
-
114
- ### §2 — Typed operation call
115
-
116
- Every OpenAPI operation becomes a typed method. Path / query / header params are typed per operation; request and response bodies are typed from the declared schemas.
117
-
118
- ```ts
119
- const user = await sdk.createUser({ json: { email: "a@b.com", name: "Alice" } })
120
- console.log(user.id, user.name)
121
- ```
122
-
123
- ```py
124
- user = await sdk.create_user(body={"name": "Alice", "email": "a@b.com"})
125
- print(user["id"], user["name"])
126
- ```
127
-
128
- ```go
129
- user, err := client.CreateUser(ctx, sdk.UserCreate{Name: "Alice", Email: "a@b.com"}, nil)
130
- if err == nil {
131
- fmt.Println(user.Id, user.Name)
132
- }
133
- ```
134
-
135
- ```rust
136
- let user = client
137
- .create_user(
138
- &UserCreate { name: "Alice".into(), email: "a@b.com".into() },
139
- &CreateUserOpts::default(),
140
- )
141
- .await?;
142
- println!("{} {}", user.id, user.name);
143
- ```
144
-
145
- ### §3 — Typed error catch
146
-
147
- Every SDK emits the unified taxonomy: `BadRequestError`, `UnauthorizedError`, `NotFoundError`, `RateLimitError`, `InternalServerError`, and a `ClientError` / `Error` base. Each carries `status`, `body`, and (§4) a typed `data` payload.
148
-
149
- ```ts
150
- try {
151
- await sdk.createUser({ json: input })
152
- } catch (e) {
153
- if (e instanceof BadRequestError) console.error("400", e.status)
154
- else if (e instanceof UnauthorizedError) console.error("401")
155
- else if (e instanceof NotFoundError) console.error("404")
156
- else if (e instanceof RateLimitError) console.error("429")
157
- else if (e instanceof InternalServerError) console.error("500")
158
- else if (isClientError(e)) console.error("unknown:", e.status)
159
- else throw e
160
- }
161
- ```
162
-
163
- ```py
164
- try:
165
- await sdk.create_user(body=input)
166
- except BadRequestError as e:
167
- print("400", e.status)
168
- except UnauthorizedError:
169
- print("401")
170
- except NotFoundError:
171
- print("404")
172
- except RateLimitError:
173
- print("429")
174
- except InternalServerError:
175
- print("500")
176
- except ClientError as e:
177
- print("unknown:", e.status)
178
- ```
179
-
180
- ```go
181
- user, err := client.CreateUser(ctx, input, nil)
182
- if err != nil {
183
- var bre *sdk.BadRequestError
184
- var ue *sdk.UnauthorizedError
185
- var nfe *sdk.NotFoundError
186
- switch {
187
- case errors.As(err, &bre): fmt.Println("400", bre.Status())
188
- case errors.As(err, &ue): fmt.Println("401")
189
- case errors.As(err, &nfe): fmt.Println("404")
190
- default: fmt.Println("unknown:", err)
191
- }
192
- }
193
- ```
194
-
195
- ```rust
196
- match client.create_user(&input, &CreateUserOpts::default()).await {
197
- Ok(user) => println!("{}", user.id),
198
- Err(Error::Api(api_err)) => {
199
- let dyn_err: &(dyn std::error::Error + 'static) = api_err.as_ref();
200
- if let Some(bre) = dyn_err.downcast_ref::<BadRequestError>() {
201
- println!("400 {}", bre.status_code);
202
- } else if dyn_err.downcast_ref::<UnauthorizedError>().is_some() {
203
- println!("401");
204
- }
205
- }
206
- Err(e) => eprintln!("{}", e),
207
- }
208
- ```
209
-
210
- ### §4 — Declared error payload (`err.data`)
211
-
212
- When an operation declares a `4xx` response schema in OpenAPI, the parsed payload is eagerly populated on the error object at response time. `err.body` remains the raw bytes; `err.data` is typed.
213
-
214
- ```ts
215
- try {
216
- await sdk.createUser({ json: bad })
217
- } catch (e) {
218
- if (e instanceof BadRequestError) {
219
- console.error("400 data:", e.data, "body:", e.body)
220
- }
221
- }
222
- ```
223
-
224
- ```py
225
- try:
226
- await sdk.create_user(body=bad)
227
- except BadRequestError as e:
228
- print("400 data:", e.data, "body:", e.body)
229
- ```
230
-
231
- ```go
232
- var bre *sdk.BadRequestError
233
- if errors.As(err, &bre) {
234
- fmt.Println("400 data:", bre.Data, "body:", string(bre.Body))
235
- }
236
- ```
237
-
238
- ```rust
239
- if let Some(bre) = dyn_err.downcast_ref::<BadRequestError>() {
240
- println!("400 data: {:?} body_len: {}", bre.data, bre.body.len());
241
- }
242
- ```
243
-
244
- ### §5 — `onAuthExpired` callback
245
-
246
- Exactly **one** retry on 401 with a freshly-fetched token. The callback owns storage; the SDK never writes to disk or env. Retry beyond 401 is a non-goal — wire 5xx / 429 retry via `onResponse`.
247
-
248
- ```ts
249
- onAuthExpired: () => Promise.resolve("valid-token"),
250
- ```
251
-
252
- ```py
253
- async def refresh_token() -> str:
254
- return "valid-token"
255
-
256
- ClientConfig(on_auth_expired=refresh_token, ...)
257
- ```
258
-
259
- ```go
260
- OnAuthExpired: func(ctx context.Context) (string, error) {
261
- return "valid-token", nil
262
- },
263
- ```
264
-
265
- ```rust
266
- on_auth_expired: Some(Arc::new(|| Box::pin(async {
267
- Ok("valid-token".to_string()) // an empty string gives up and returns the 401
268
- }))),
269
- ```
270
-
271
- ### §6 — Cancellation
272
-
273
- Each SDK uses the language's native cancellation primitive. Cancellation propagates into HTTP, SSE, WS, and `ResumableConnection` — never silently dropped.
274
-
275
- ```ts
276
- const ctrl = new AbortController()
277
- setTimeout(() => ctrl.abort(), 25)
278
- try {
279
- await sdk.slow({ search: { ms: 500 }, signal: ctrl.signal })
280
- } catch (e) {
281
- console.error("cancelled:", (e as Error).name)
282
- }
283
- ```
284
-
285
- ```py
286
- task = asyncio.create_task(sdk.slow(ms=500))
287
- await asyncio.sleep(0.01)
288
- task.cancel()
289
- try:
290
- await task
291
- except asyncio.CancelledError:
292
- print("cancelled async")
293
- ```
294
-
295
- ```go
296
- cancelCtx, cancel := context.WithTimeout(ctx, 25*time.Millisecond)
297
- defer cancel()
298
- _, err := client.Slow(cancelCtx, &sdk.SlowOpts{Ms: ptr(int64(500))})
299
- if err != nil {
300
- fmt.Println("cancelled:", err)
301
- }
302
- ```
303
-
304
- ```rust
305
- let token = CancellationToken::new();
306
- let token_clone = token.clone();
307
- tokio::spawn(async move {
308
- tokio::time::sleep(Duration::from_millis(25)).await;
309
- token_clone.cancel();
310
- });
311
- let _ = client
312
- .slow(&SlowOpts { ms: Some(500), cancel_token: Some(token), ..Default::default() })
313
- .await;
314
- ```
315
-
316
- ### §7 — Per-call timeout
317
-
318
- Config timeout is the default. Per-call `timeout` on any op is a hard override. Distinct from cancellation — timeout is a deadline, cancellation is an external signal.
319
-
320
- ```ts
321
- await sdk.slow({ search: { ms: 200 }, timeout: 50 })
322
- ```
323
-
324
- ```py
325
- await sdk.slow(ms=200, timeout=0.05)
326
- ```
327
-
328
- ```go
329
- // Go's per-call timeout is a context deadline; Config.Timeout (default 30s) applies to every call
330
- slowCtx, cancel := context.WithTimeout(ctx, 50*time.Millisecond)
331
- defer cancel()
332
- _, err := client.Slow(slowCtx, &sdk.SlowOpts{Ms: ptr(int64(200))})
333
- ```
334
-
335
- ```rust
336
- client
337
- .slow(&SlowOpts {
338
- ms: Some(200),
339
- timeout: Some(Duration::from_millis(50)),
340
- ..Default::default()
341
- })
342
- .await?;
343
- ```
344
-
345
- ### §8 — Per-call headers
346
-
347
- Per-call headers merge over config headers; per-call wins per key. Useful for request-scoped tracing IDs, idempotency keys, or one-off auth overrides.
348
-
349
- Every outbound REST/SSE request also gets an auto `x-request-id` (UUID v4) when none is already set. Precedence: config / per-call headers keep their value; `onRequest` / `OnRequest` / `on_request` hooks run after and **win** if they set the header.
350
-
351
- ```ts
352
- await sdk.getUser({
353
- headers: { "X-Both": "call-wins" },
354
- params: { id: "u1" },
355
- })
356
- ```
357
-
358
- ```py
359
- await sdk.get_user("u1", headers={"X-Both": "call-wins"})
360
- ```
361
-
362
- ```go
363
- _, _ = client.GetUser(ctx, "u1", &sdk.GetUserOpts{
364
- Headers: map[string]string{"X-Both": "call-wins"},
365
- })
366
- ```
367
-
368
- ```rust
369
- let _ = client
370
- .get_user(
371
- "u1",
372
- &GetUserOpts {
373
- headers: Some([("X-Both".into(), "call-wins".into())].into_iter().collect()),
374
- ..Default::default()
375
- },
376
- )
377
- .await;
378
- ```
379
-
380
- ### §9 — `onRequest` / `onResponse` hooks
381
-
382
- Hook chains run in declaration order, awaited in order, and may mutate the context (headers pre-send, status inspection post-receive). They are the only built-in retry primitive beyond the 401 path — 5xx backoff, circuit breakers, tracing all live here.
383
-
384
- ```ts
385
- onRequest: [
386
- (ctx) => { ctx.headers["X-Trace-Id"] = crypto.randomUUID(); return Promise.resolve() },
387
- (ctx) => { ctx.headers["X-App"] = "example"; return Promise.resolve() },
388
- ],
389
- onResponse: [
390
- (ctx) => { if (ctx.status >= 500) console.warn("5xx:", ctx.status); return Promise.resolve() },
391
- ],
392
- ```
393
-
394
- ```py
395
- async def add_trace_hook(ctx):
396
- ctx.headers["X-Trace-Id"] = "trace-123"
397
-
398
- async def inspect_response_hook(rctx):
399
- if rctx.response.status_code >= 500:
400
- print("5xx:", rctx.response.status_code)
401
-
402
- ClientConfig(on_request=[add_trace_hook], on_response=[inspect_response_hook], ...)
403
- ```
404
-
405
- ```go
406
- OnRequest: []func(*sdk.RequestContext) error{
407
- func(c *sdk.RequestContext) error { c.Headers.Set("X-Trace-Id", "trace-123"); return nil },
408
- func(c *sdk.RequestContext) error { c.Headers.Set("X-App", "example"); return nil },
409
- },
410
- OnResponse: []func(*sdk.ResponseContext) error{
411
- func(c *sdk.ResponseContext) error {
412
- if c.Status >= 500 { fmt.Println("5xx:", c.Status) }
413
- return nil
414
- },
415
- },
416
- ```
417
-
418
- ```rust
419
- let trace_hook: OnRequestHook = Arc::new(|ctx| {
420
- Box::pin(async move {
421
- ctx.headers.insert("X-Trace-Id".into(), "trace-123".into());
422
- Ok(())
423
- })
424
- });
425
- let inspect_hook: OnResponseHook = Arc::new(|ctx| {
426
- let status = ctx.status;
427
- Box::pin(async move {
428
- if status >= 500 { eprintln!("5xx: {}", status); }
429
- Ok(())
430
- })
431
- });
432
- ```
433
-
434
- ### §10 — `onLog`
435
-
436
- A single pluggable sink. `LogEntry` carries `{ level, event, operation, duration_ms, status?, error? }`. This is not a logger framework — wire it into whatever leveled logger the consumer already has.
437
-
438
- ```ts
439
- onLog: (entry) => console.debug(entry.event, entry.operation, entry.duration_ms, entry.status),
440
- ```
441
-
442
- ```py
443
- def on_log(entry: LogEntry) -> None:
444
- print(entry.event, entry.operation, entry.duration_ms, entry.status)
445
- ```
446
-
447
- ```go
448
- OnLog: func(e sdk.LogEntry) {
449
- fmt.Println(e.Event, e.Operation, e.DurationMs, e.Status)
450
- },
451
- ```
452
-
453
- ```rust
454
- on_log: Some(Arc::new(|e: LogEntry| {
455
- println!("{} {} {} {:?}", e.event, e.operation, e.duration_ms, e.status);
456
- })),
457
- ```
458
-
459
- ### §11 — Invalidation + `isStale`
460
-
461
- An `x-invalidate: ["GET /resource/:id"]` extension on a mutating op marks matching GET paths stale. Two-tier lookup (exact → pattern regex, cached). TTL config governs the stale window. The SDK stores staleness only — never cached bodies — so consumer code picks the refetch moment.
462
-
463
- ```ts
464
- await sdk.updateUser({ json: { name: "Alice2" }, params: { id: "u1" } })
465
- const stale = sdk.isStale("GET", "/users/u1")
466
- console.log("users/u1 stale?", stale)
467
- ```
468
-
469
- ```py
470
- await sdk.update_user("u1", body={"name": "Alice2"})
471
- print("users/u1 stale?", await sdk.is_stale("GET", "/users/u1"))
472
- ```
473
-
474
- ```go
475
- _, _ = client.UpdateUser(ctx, "u1", sdk.UserUpdate{Name: "Alice2"}, nil)
476
- fmt.Println("users/u1 stale?", client.IsStale("GET", "/users/u1"))
477
- ```
478
-
479
- ```rust
480
- let _ = client
481
- .update_user(
482
- "u1",
483
- &UserUpdate { name: Some("Alice2".into()), ..Default::default() },
484
- &UpdateUserOpts::default(),
485
- )
486
- .await;
487
- println!("users/u1 stale? {}", client.is_stale("GET", "/users/u1"));
488
- ```
489
-
490
- ### §12 — SSE iteration
491
-
492
- Operations with `produces: text/event-stream` return a typed async iterable of events. Reconnect on drop is consumer-driven for basic SSE (use `x-realtime` in §13 for auto-reconnect).
493
-
494
- ```ts
495
- for await (const ev of sdk.streamEvents()) {
496
- console.log("sse event:", ev)
497
- break
498
- }
499
- ```
500
-
501
- ```py
502
- async for ev in sdk.stream_events():
503
- print("sse event:", ev)
504
- break
505
- ```
506
-
507
- ```go
508
- // an iter.Seq2; breaking out of the loop closes the stream
509
- for ev, err := range client.StreamEvents(ctx, nil) {
510
- if err != nil {
511
- fmt.Println("sse error:", err)
512
- break
513
- }
514
- fmt.Println("sse event:", ev.Data)
515
- break
516
- }
517
- ```
518
-
519
- ```rust
520
- // a Stream: the call itself is not awaited
521
- let mut sse = std::pin::pin!(client.stream_events(&StreamEventsOpts::default()));
522
- if let Some(Ok(ev)) = sse.next().await {
523
- println!("sse event: {}", ev.data);
524
- }
525
- ```
526
-
527
- ### §13 — WebSocket bidi
528
-
529
- Operations with `x-websocket: true` yield a typed bidirectional channel: `Send` / `Recv` types come from the schema. Client close returns code 1000; server-initiated close surfaces a reason.
530
-
531
- ```ts
532
- const ws = sdk.connectWs()
533
- await new Promise<void>((resolve) => {
534
- ws.on("open", () => resolve())
535
- })
536
- ws.on("message", (data: string) => {
537
- console.log("ws recv:", data)
538
- ws.close(1000, "done")
539
- })
540
- ws.send("hello")
541
- ```
542
-
543
- ```py
544
- async with sdk.connect_ws() as ws:
545
- await ws.send("hello")
546
- async for msg in ws:
547
- print("ws recv:", msg)
548
- break
549
- await ws.close(1000, "done")
550
- ```
551
-
552
- ```go
553
- ws, err := client.ConnectWs(ctx, nil)
554
- if err == nil {
555
- _ = ws.Send(ctx, "hello")
556
- msg, _ := ws.Read(ctx)
557
- fmt.Println("ws recv:", string(msg))
558
- _ = ws.Close(sdk.WSStatusNormalClosure, "done")
559
- }
560
- ```
561
-
562
- ```rust
563
- let mut ws = client.connect_ws(&ConnectWsOpts::default()).await?;
564
- ws.send_text("hello").await?;
565
- let msg = ws.read().await?;
566
- println!("ws recv: {}", String::from_utf8_lossy(&msg));
567
- ws.close(1000, "done").await?;
568
- ```
569
-
570
- ### §14 — Realtime with custom adapter
571
-
572
- `x-realtime: true` opens a `ResumableConnection` with a pluggable `TransportAdapter`, a fallback chain (`[ws, sse, longpoll]` by default), and proven-transport memoization. The generated method always uses the default chain; to reorder, drop, or inject custom transports, construct the connection directly with your own list (as below). The config's headers and auth reach every transport. A dropped connection reconnects with exponential backoff and jitter (capped at 30 s; default 5 consecutive attempts, 1 s first delay), and a message resets the count.
573
-
574
- Not implemented yet: the resume protocol (`ready` frames, resume tokens, ping/liveness, replay). Honey's shipped realtime server is a topic bus over WebSocket; the SSE and long-poll transports only work against servers that speak them.
575
-
576
- ```ts
577
- function makeCustomAdapter(): TransportAdapter {
578
- return {
579
- connect(_url, _opts): TransportConnection {
580
- let onFrame: (f: ServerFrame) => void = () => {}
581
- const conn: TransportConnection = {
582
- close() {},
583
- onClose: () => {},
584
- onError: () => {},
585
- get onFrame() {
586
- return onFrame
587
- },
588
- set onFrame(cb) {
589
- onFrame = cb
590
- },
591
- send(_data) {},
592
- }
593
- queueMicrotask(() => onFrame({ data: { kind: "tick" }, id: 1, t: "msg" }))
594
- return conn
595
- },
596
- }
597
- }
598
- const rc = createResumableConnection({
599
- maxReconnectAttempts: 5,
600
- reconnectDelayMs: 100,
601
- transports: [makeCustomAdapter()],
602
- url: `${BASE_URL}/rt`,
603
- })
604
- for await (const ev of rc) {
605
- console.log("rt:", ev)
606
- break
607
- }
608
- rc.close()
609
- ```
610
-
611
- ```py
612
- class TickAdapter:
613
- def name(self): return "tick"
614
- def kind(self): return TransportKind.WS
615
-
616
- async def connect(self, _url, _opts):
617
- return TickConn()
618
-
619
- rc = ResumableConnection(f"{BASE_URL}/rt", [TickAdapter()], TransportOpts())
620
- await rc.connect()
621
- async for ev in rc:
622
- print("rt event:", ev)
623
- break
624
- await rc.close()
625
- ```
626
-
627
- ```go
628
- // the generated method (client.ConnectRealtime) uses the default chain;
629
- // NewResumableConnection takes a custom one
630
- rc := sdk.NewResumableConnection(baseURL+"/rt", []sdk.Transport{&tickTransport{}}, &sdk.TransportOpts{
631
- MaxReconnectAttempts: 5,
632
- ReconnectDelayMs: 100,
633
- })
634
- if err := rc.Connect(ctx); err == nil {
635
- for ev := range rc.Events() {
636
- fmt.Println("rt event:", ev)
637
- break
638
- }
639
- _ = rc.Close()
640
- }
641
- ```
642
-
643
- ```rust
644
- // the generated method uses the default chain; ResumableConnection::connect takes a custom one
645
- let mut rc = ResumableConnection::<serde_json::Value, serde_json::Value>::connect(
646
- format!("{}/rt", base_url),
647
- ResumableConnectionOpts { max_reconnect_attempts: Some(5), reconnect_delay_ms: Some(100), ..Default::default() },
648
- vec![Box::new(TickAdapter)],
649
- )
650
- .await?;
651
- let ev = rc.recv().await?;
652
- println!("rt event: {:?}", ev);
653
- rc.close().await?;
654
- ```
655
-
656
- ### §15 — Streaming upload
657
-
658
- `application/octet-stream` bodies flow as a stream: the SDK pipes the source into the HTTP client without buffering (critical on memory-bounded runtimes like CF Workers), and does not retry them after an auth refresh. Multipart and urlencoded bodies are supported in all four languages: TS takes a `FormData`/object, Python a dict whose file parts are bytes, a file object or `(filename, content[, content_type])`, Go a generated `<Op>Body` struct with `sdk.FilePart` fields (read into memory so the request can be retried), Rust a `reqwest::multipart::Form`.
659
-
660
- ```ts
661
- const stream = new ReadableStream<Uint8Array>({
662
- pull(controller) {
663
- if (sent >= TOTAL) {
664
- controller.close()
665
- return
666
- }
667
- const chunk = new Uint8Array(Math.min(CHUNK, TOTAL - sent))
668
- sent += chunk.length
669
- controller.enqueue(chunk)
670
- },
671
- })
672
- const uploaded = await sdk.uploadBlob({ body: stream })
673
- console.log("uploaded:", uploaded.size, uploaded.hash)
674
- ```
675
-
676
- ```py
677
- async def gen() -> AsyncIterator[bytes]:
678
- for off in range(0, TOTAL, CHUNK):
679
- yield buf[off:off + CHUNK]
680
-
681
- uploaded = await sdk.upload_blob(gen())
682
- print("uploaded:", uploaded["size"], uploaded["hash"])
683
- ```
684
-
685
- ```go
686
- uploaded, err := client.UploadBlob(ctx, bytes.NewReader(buf), nil)
687
- if err == nil {
688
- fmt.Println("uploaded:", uploaded.Size, uploaded.Hash)
689
- }
690
- ```
691
-
692
- ```rust
693
- let chunks: Vec<Bytes> = buf.chunks(CHUNK).map(|c| Bytes::copy_from_slice(c)).collect();
694
- let body_stream = stream::iter(chunks.into_iter().map(Ok::<_, std::io::Error>));
695
- let uploaded = client.upload_blob(body_stream, &UploadBlobOpts::default()).await?;
696
- println!("uploaded: {} {}", uploaded.size, uploaded.hash);
697
- ```
698
-
699
- ### §16 — `x-idempotency-key`
700
-
701
- Operations marked `x-idempotency-key: true` auto-send an `Idempotency-Key` header with a UUID when the caller doesn't supply one. Precedence: `headers["Idempotency-Key"]` wins over the explicit opts field, which wins over the auto UUID.
702
-
703
- ```ts
704
- const auto = await sdk.idempotentCreate()
705
- const explicit = await sdk.idempotentCreate({ idempotencyKey: "user-supplied-123" })
706
- const viaHeader = await sdk.idempotentCreate({ headers: { "Idempotency-Key": "header-wins-456" } })
707
- ```
708
-
709
- ```py
710
- auto = await sdk.idempotent_create()
711
- explicit = await sdk.idempotent_create(idempotency_key="user-supplied-123")
712
- via_header = await sdk.idempotent_create(headers={"Idempotency-Key": "header-wins-456"})
713
- ```
714
-
715
- ```go
716
- auto, _ := client.IdempotentCreate(ctx, nil)
717
- explicit, _ := client.IdempotentCreate(ctx, &sdk.IdempotentCreateOpts{IdempotencyKey: "user-supplied-123"})
718
- viaHeader, _ := client.IdempotentCreate(ctx, &sdk.IdempotentCreateOpts{
719
- Headers: map[string]string{"Idempotency-Key": "header-wins-456"},
720
- })
721
- ```
722
-
723
- ```rust
724
- let auto = client.idempotent_create(&IdempotentCreateOpts::default()).await?;
725
- let explicit = client
726
- .idempotent_create(&IdempotentCreateOpts {
727
- idempotency_key: Some("user-supplied-123".into()),
728
- ..Default::default()
729
- })
730
- .await?;
731
- let via_header = client
732
- .idempotent_create(&IdempotentCreateOpts {
733
- headers: Some([("Idempotency-Key".into(), "header-wins-456".into())].into_iter().collect()),
734
- ..Default::default()
735
- })
736
- .await?;
737
- ```
738
-
739
- ## Runtime behavior
740
-
741
- The Go, Python and Rust runtimes follow one behavior spec. The shared vectors in
742
- `tests/conformance/vectors/` (URL building, SSE) are run by every runtime, and one operation
743
- is sent by each generated SDK to the same capture server and compared byte for byte
744
- (`tests/integration/sdk-harness/polyglot-conformance.test.ts`).
745
-
746
- - **Path params.** Templates accept `{name}` anywhere in a segment, `:name` / `:name?` for a
747
- whole segment and a trailing `*name`. Values are encoded like `encodeURIComponent`. `""`,
748
- `.` and `..` are rejected before sending (`PathParamError` in Go and Python, `Error::Other`
749
- in Rust), so a value can never retarget a request to a parent resource or another host.
750
- - **Base URL.** The base path and base query are kept: `https://host/v1` + `/users` is
751
- `https://host/v1/users`.
752
- - **Query.** Encoded like `URLSearchParams` (space is `+`). Arrays repeat the key, `null`
753
- and unset optionals are omitted, booleans are `true`/`false`, numbers use JavaScript's
754
- formatting (`100`, `1e+21`).
755
- - **Headers.** Config headers, then per-call headers, then auth; merged case-insensitively,
756
- so exactly one of each is sent.
757
- - **Timeouts.** The config timeout (default 30 s) bounds a whole regular request including
758
- the body. SSE, WebSocket and realtime streams are not bounded by it.
759
- - **Redirects.** The default HTTP client follows redirects only to the same origin; any other
760
- redirect is returned as an error, so custom auth headers never leave the origin.
761
- - **Auth refresh.** A 401 calls `onAuthExpired` once; concurrent 401s share one refresh; the
762
- new token is kept for later calls; an empty token (or `None`) gives up. Streamed bodies
763
- are not retried.
764
- - **Errors.** Every non-2xx (3xx included) is a typed error carrying status, raw body and
765
- parsed data. Messages prefer the body's `message` field, drop control characters and are
766
- capped at 512 characters.
767
- - **SSE.** WHATWG parsing: CR, LF and CRLF line endings (U+2028 is data), one leading space
768
- stripped, the id is sticky, `retry` needs digits, a final event without its blank line is
769
- discarded, lines are capped at 1 MiB.
770
- - **Operations without `operationId`** get a derived name (`GET /users/{id}` → `getUsersById`)
771
- in every SDK, the TypeScript one and MCP tools included, instead of being dropped.
772
- - **Optional nullable fields** are tri-state, so "leave it", "clear it" and "set it" are three
773
- different requests:
774
-
775
- | | absent | `null` | value |
776
- | ------------------------------ | ------------ | ----------------- | --------------- |
777
- | TypeScript | omit the key | `null` | `v` |
778
- | Python (`TypedDict`) | omit the key | `None` | `v` |
779
- | Go (`Nullable[T]`, `omitzero`) | zero value | `sdk.NullOf[T]()` | `sdk.Some(v)` |
780
- | Rust (`Option<Option<T>>`) | `None` | `Some(None)` | `Some(Some(v))` |
781
-
782
- Decoding keeps the distinction (`IsNull()` / `Get()` in Go). A required array or map left
783
- empty is sent as `[]` / `{}`, never `null`.
784
-
785
- ## Links
786
-
787
- - **End-to-end examples** — full per-lang files with every capability §1–16 in context:
788
- - `../examples/typescript/example.ts`
789
- - `../examples/python/example.py`
790
- - `../examples/go/example.go`
791
- - `../examples/rust/example.rs`
792
- - `../examples/README.md` — examples index + parity surface map.
793
- - **Master spec** — full capability surface lived in the iterating monorepo workerc specs; this page plus `./api-ref/` are the in-repo index.
794
- - **Behavioral harnesses** — the tier-4 tests that verify what this page documents:
795
- - `../tests/integration/sdk-harness/ts-harness.test.ts`
796
- - `../tests/integration/sdk-harness/python-harness.test.ts`
797
- - `../tests/integration/sdk-harness/go-harness.test.ts`
798
- - `../tests/integration/sdk-harness/rust-harness.test.ts`