@lovrozagar/honey 0.7.3 → 1.0.0-rc.3

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