@lovrozagar/honey 0.7.2 → 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 -744
  71. package/dist/index.js +12 -2363
  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 -776
  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 -193
  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 -893
  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 -554
  989. package/src/trust.ts +0 -117
  990. package/src/ts-type-emitter.ts +0 -168
  991. package/src/type-emitter.ts +0 -760
  992. package/src/type-extractor.ts +0 -855
  993. package/src/types.ts +0 -756
  994. package/src/validation.ts +0 -413
  995. package/src/with-headers.ts +0 -45
  996. package/src/ws/bun.ts +0 -120
  997. package/src/ws/cloudflare.ts +0 -192
  998. package/src/ws/deno.ts +0 -188
  999. package/src/ws/node.ts +0 -240
  1000. package/src/ws/session.ts +0 -73
  1001. package/src/ws/shared.ts +0 -140
  1002. package/src/ws-origin.ts +0 -53
  1003. package/src/yaml.ts +0 -103
@@ -1,737 +0,0 @@
1
- import { bindDefaultFetch, parseClientBaseURL } from "./defaults.ts"
2
- import type { ClientError } from "./error.ts"
3
- import { clientErrorFor } from "./error.ts"
4
- import { isJsonMediaType, isTextMediaType, parseMediaType } from "../media-type.ts"
5
- import { interpolatePath } from "./path.ts"
6
- import { crossOriginHeaders } from "./redirect-policy.ts"
7
- import type { SSEEvent } from "./sse.ts"
8
- import { parseSSEStream } from "./sse.ts"
9
-
10
- export { interpolatePath } from "./path.ts"
11
-
12
- export type HeadersContext = {
13
- method: string
14
- path: string
15
- }
16
-
17
- type HeadersRecord = Record<string, string | undefined>
18
-
19
- export type HeadersInit = ((ctx: HeadersContext) => HeadersRecord | Promise<HeadersRecord>) | HeadersRecord
20
-
21
- export type RequestMeta = {
22
- invalidatedBy: string[]
23
- isStale: boolean
24
- selector: string
25
- seqSnapshot: number
26
- }
27
-
28
- export type OnRequestContext = {
29
- body?: BodyInit
30
- headers: Headers
31
- invalidatedBy?: string[]
32
- isStale?: boolean
33
- method: string
34
- path: string
35
- selector?: string
36
- state: Record<string, unknown>
37
- url: string
38
- }
39
-
40
- export type OnResponseContext = {
41
- invalidatedBy?: string[]
42
- isRetry: boolean
43
- isStale?: boolean
44
- method: string
45
- path: string
46
- readonly request: Request
47
- response: Response
48
- /**
49
- * Send the request once more and resolve with the new response, whatever its status. On
50
- * a request that is itself a retry, it resolves with the current response (one retry max).
51
- */
52
- retry: () => Promise<Response>
53
- selector?: string
54
- state: Record<string, unknown>
55
- url: string
56
- }
57
-
58
- /**
59
- * - `same-origin` (default): follow redirects that stay on the base URL's origin; a
60
- * cross-origin redirect is returned unfollowed (a non-2xx result). In browsers, which hide
61
- * redirect targets from script, the platform follows and applies CORS to the target.
62
- * - `follow`: also follow cross-origin redirects. Such a hop carries only `Accept`,
63
- * `Accept-Language` and `User-Agent` (no credentials, auth header, configured, per-call or
64
- * `onRequest` header) and never replays a body.
65
- * - `manual` / `error`: passed to `fetch`.
66
- */
67
- export type RedirectPolicy = "error" | "follow" | "manual" | "same-origin"
68
-
69
- export type AuthExpiredContext = {
70
- /** The token the 401 rejected (read from the auth header), so concurrent 401s can share one refresh. */
71
- rejectedToken: string | null
72
- }
73
-
74
- export type ClientConfig = {
75
- /** Header that carries the token from `onAuthExpired`. Default `Authorization`. */
76
- authHeaderName?: string
77
- /** Prefix for that header. Default `"Bearer "`. */
78
- authHeaderPrefix?: string
79
- /** Absolute `http(s):` / `ws(s):` URL, or a same-origin path such as `"/api"`. */
80
- baseURL: string
81
- buildSearchParams?: (query: Record<string, unknown>) => URLSearchParams
82
- credentials?: RequestCredentials
83
- /** Defaults to the environment `fetch`, bound so it is safe to call in browsers. */
84
- fetch?: typeof fetch
85
- headers?: HeadersInit
86
- mode?: RequestMode
87
- /**
88
- * Called on a 401. Return a fresh token to retry the request once with it (and use it for
89
- * later requests); return null or "" to give up. Concurrent 401s share one call. Requests
90
- * whose body is a stream are not retried.
91
- */
92
- onAuthExpired?: (ctx: AuthExpiredContext) => Promise<string | null | undefined> | string | null | undefined
93
- onRequest?: Array<(ctx: OnRequestContext) => Promise<void> | void>
94
- onResponse?: Array<(ctx: OnResponseContext) => Promise<Response | undefined> | Response | undefined>
95
- /** Redirect handling; see `RedirectPolicy`. Default `"same-origin"`. */
96
- redirect?: RedirectPolicy
97
- /** Send an `x-request-id` header on every request. Default `true`; `false` avoids a CORS preflight. */
98
- requestId?: boolean
99
- sortSearchParams?: boolean
100
- state?: Record<string, unknown>
101
- throwOnError?: boolean
102
- /** Milliseconds for a whole request, including reading the body. Streams are exempt. */
103
- timeout?: number
104
-
105
- /* Realtime hooks — called by the generated runtime module */
106
- onReconnecting?: (attempt: number, transport: string) => void
107
- onReconnected?: () => void
108
- }
109
-
110
- export type RequestOptions = {
111
- cookies?: Record<string, string>
112
- form?: Record<string, unknown>
113
- headers?: Record<string, string | undefined>
114
- json?: unknown
115
- lastEventId?: string
116
- params?: Record<string, string>
117
- search?: Record<string, unknown>
118
- signal?: AbortSignal
119
- /** Per-call timeout in milliseconds; overrides `config.timeout`, `0` disables it. */
120
- timeout?: number
121
- }
122
-
123
- type Kind = "auto" | "rest" | "stream"
124
-
125
- type Sent = {
126
- /** Release timers and listeners. Call once the body has been read or abandoned. */
127
- done: () => void
128
- /** Stop the timeout but keep user cancellation (the response turned out to be a stream). */
129
- exemptFromTimeout: () => void
130
- response: Response
131
- }
132
-
133
- function coerceParam(v: unknown): string | null {
134
- if (v === undefined || v === null) return null
135
- if (v instanceof Date) return v.toISOString()
136
- if (typeof v === "symbol") return null
137
- return String(v)
138
- }
139
-
140
- function coerceFormValue(key: string, v: unknown): string | null {
141
- if (v !== null && typeof v === "object" && !(v instanceof Date)) {
142
- throw new TypeError(
143
- `Form field ${JSON.stringify(key)}: nested objects cannot be form-encoded; pass a string (e.g. JSON.stringify) or use json`,
144
- )
145
- }
146
- return coerceParam(v)
147
- }
148
-
149
- function defaultSearchParams(query: Record<string, unknown>): URLSearchParams {
150
- const params = new URLSearchParams()
151
- for (const [k, v] of Object.entries(query)) {
152
- if (v === undefined || v === null) continue
153
- if (Array.isArray(v)) {
154
- for (const item of v) {
155
- const s = coerceParam(item)
156
- if (s !== null) params.append(k, s)
157
- }
158
- } else {
159
- const s = coerceParam(v)
160
- if (s !== null) params.set(k, s)
161
- }
162
- }
163
- return params
164
- }
165
-
166
- /**
167
- * RFC 4122 §4.4 UUID for `x-request-id`. Prefer `crypto.randomUUID` (browser,
168
- * Node 19+, Bun, Deno, CF Workers). Fall back to `getRandomValues` when
169
- * `randomUUID` is missing so older runtimes still work without node:crypto.
170
- */
171
- export function newClientRequestId(): string {
172
- const c = globalThis.crypto as Crypto | undefined
173
- if (c && typeof c.randomUUID === "function") return c.randomUUID()
174
- if (c && typeof c.getRandomValues === "function") {
175
- const bytes = new Uint8Array(16)
176
- c.getRandomValues(bytes)
177
- bytes[6] = (bytes[6]! & 0x0f) | 0x40
178
- bytes[8] = (bytes[8]! & 0x3f) | 0x80
179
- let out = ""
180
- for (let i = 0; i < 16; i++) {
181
- if (i === 4 || i === 6 || i === 8 || i === 10) out += "-"
182
- out += bytes[i]!.toString(16).padStart(2, "0")
183
- }
184
- return out
185
- }
186
- throw new Error("honey: no crypto.randomUUID or crypto.getRandomValues in this runtime")
187
- }
188
-
189
- function isFileLike(v: unknown): boolean {
190
- return (typeof File !== "undefined" && v instanceof File) || (typeof Blob !== "undefined" && v instanceof Blob)
191
- }
192
-
193
- function encodeBody(opts: RequestOptions, headers: Headers): BodyInit | undefined {
194
- if (opts.json !== undefined) {
195
- headers.set("content-type", "application/json")
196
- return JSON.stringify(opts.json)
197
- }
198
- if (opts.form === undefined) return undefined
199
-
200
- const entries = Object.entries(opts.form)
201
- const hasFiles = entries.some(
202
- ([, v]) =>
203
- isFileLike(v) ||
204
- (typeof FileList !== "undefined" && v instanceof FileList) ||
205
- (Array.isArray(v) && v.some(isFileLike)),
206
- )
207
-
208
- /* Both encodings repeat the key for array items, so a field reads the same either way. */
209
- if (hasFiles) {
210
- const fd = new FormData()
211
- for (const [k, v] of entries) {
212
- if (v === undefined || v === null) continue
213
- const items =
214
- typeof FileList !== "undefined" && v instanceof FileList ? Array.from(v) : Array.isArray(v) ? v : [v]
215
- for (const item of items) {
216
- if (isFileLike(item)) fd.append(k, item as Blob)
217
- else {
218
- const s = coerceFormValue(k, item)
219
- if (s !== null) fd.append(k, s)
220
- }
221
- }
222
- }
223
- /* don't set content-type — fetch sets the multipart boundary */
224
- return fd
225
- }
226
-
227
- headers.set("content-type", "application/x-www-form-urlencoded")
228
- const params = new URLSearchParams()
229
- for (const [k, v] of entries) {
230
- for (const item of Array.isArray(v) ? v : [v]) {
231
- const s = coerceFormValue(k, item)
232
- if (s !== null) params.append(k, s)
233
- }
234
- }
235
- return params.toString()
236
- }
237
-
238
- /** A body that can be sent a second time (retry, redirect). Streams are consumed by the first send. */
239
- function isReplayable(body: BodyInit | null | undefined): boolean {
240
- return !(typeof ReadableStream !== "undefined" && body instanceof ReadableStream)
241
- }
242
-
243
- export function isEventStream(response: Response): boolean {
244
- return parseMediaType(response.headers.get("content-type"))?.essence === "text/event-stream"
245
- }
246
-
247
- /* oxlint-disable-next-line no-control-regex -- intentional strip of ASCII control characters */
248
- const CONTROL_RE = /[\x00-\x1f\x7f]/g
249
-
250
- function sanitizeMessage(message: string): string {
251
- return message.replace(CONTROL_RE, "").slice(0, 512)
252
- }
253
-
254
- /** Read an error body: JSON when it parses, else the text, else null. Never throws on the body. */
255
- async function readErrorBody(response: Response): Promise<unknown> {
256
- let text: string
257
- try {
258
- text = await response.text()
259
- } catch {
260
- return null
261
- }
262
- if (text.length === 0) return null
263
- try {
264
- return JSON.parse(text)
265
- } catch {
266
- return text
267
- }
268
- }
269
-
270
- async function errorFromResponse(response: Response): Promise<ClientError> {
271
- const preserved = response.clone()
272
- const body = await readErrorBody(response)
273
- const msgVal =
274
- typeof body === "object" && body !== null && "message" in body
275
- ? (body as Record<string, unknown>).message
276
- : undefined
277
- const message = typeof msgVal === "string" && msgVal.length > 0 ? sanitizeMessage(msgVal) : `HTTP ${response.status}`
278
- return clientErrorFor({ body, message, response: preserved, status: response.status })
279
- }
280
-
281
- /**
282
- * Safe-mode error value: the server's error object when the body is a JSON object, else the
283
- * `ClientError` itself, so `error` is truthy for every non-2xx and always carries `status`.
284
- */
285
- function safeErrorValue(error: ClientError): unknown {
286
- const body = error.body
287
- return typeof body === "object" && body !== null && !Array.isArray(body) ? body : error
288
- }
289
-
290
- function timeoutError(ms: number): Error {
291
- return typeof DOMException === "function"
292
- ? new DOMException(`Request timed out after ${ms} ms`, "TimeoutError")
293
- : Object.assign(new Error(`Request timed out after ${ms} ms`), { name: "TimeoutError" })
294
- }
295
-
296
- /** Browsers hide redirect targets from script (`opaqueredirect`), so the platform must follow. */
297
- function platformFollowsRedirects(): boolean {
298
- const g = globalThis as { document?: unknown; WorkerGlobalScope?: unknown }
299
- return typeof g.document !== "undefined" || typeof g.WorkerGlobalScope !== "undefined"
300
- }
301
-
302
- const REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308])
303
- const MAX_REDIRECTS = 20
304
-
305
- export class HTTPClient {
306
- private _config: ClientConfig
307
- private _fetch: typeof fetch
308
- private _base: URL | undefined
309
- private _token: string | null = null
310
- private _refreshing: Promise<string | null> | null = null
311
-
312
- constructor(config: ClientConfig) {
313
- this._config = config
314
- this._fetch = bindDefaultFetch(config.fetch)
315
- }
316
-
317
- /** The base URL, parsed once. */
318
- private get base(): URL {
319
- this._base ??= parseClientBaseURL(this._config.baseURL)
320
- return this._base
321
- }
322
-
323
- private get authName(): string {
324
- return this._config.authHeaderName ?? "Authorization"
325
- }
326
-
327
- private get authPrefix(): string {
328
- return this._config.authHeaderPrefix ?? "Bearer "
329
- }
330
-
331
- /** Resolve `path` against the base URL, keeping the base path and query, and assert it stays there. */
332
- private _url(path: string, opts: RequestOptions): URL {
333
- const resolvedPath = opts.params ? interpolatePath(path, opts.params) : interpolatePath(path)
334
- const base = this.base
335
- const basePath = base.pathname.endsWith("/") ? base.pathname : `${base.pathname}/`
336
- const relative = resolvedPath.startsWith("/") ? resolvedPath.slice(1) : resolvedPath
337
- const url = new URL(base.href)
338
- url.pathname = `${basePath}${relative}`
339
- url.hash = ""
340
- /* Params are validated, so this only fires on a malformed template; never send it anywhere else. */
341
- if (url.origin !== base.origin || !url.pathname.startsWith(basePath.slice(0, -1))) {
342
- throw new Error(`Request path ${JSON.stringify(path)} resolves outside the base URL`)
343
- }
344
- if (opts.search) {
345
- const serializer = this._config.buildSearchParams ?? defaultSearchParams
346
- const params = serializer(opts.search)
347
- if (this._config.sortSearchParams) params.sort()
348
- for (const [k, v] of params.entries()) url.searchParams.append(k, v)
349
- }
350
- return url
351
- }
352
-
353
- private async _headers(opts: RequestOptions, ctx: HeadersContext): Promise<Headers> {
354
- const headers = new Headers()
355
- const config = this._config
356
-
357
- if (config.headers) {
358
- const resolved = typeof config.headers === "function" ? await config.headers(ctx) : config.headers
359
- for (const [k, v] of Object.entries(resolved)) {
360
- if (v !== undefined) headers.set(k, v)
361
- }
362
- }
363
-
364
- /* a refreshed token replaces the configured one; per-call headers still win */
365
- if (this._token !== null) headers.set(this.authName, `${this.authPrefix}${this._token}`)
366
-
367
- if (opts.headers) {
368
- for (const [k, v] of Object.entries(opts.headers)) {
369
- if (v !== undefined) headers.set(k, v)
370
- }
371
- }
372
-
373
- if (opts.cookies) {
374
- const existing = headers.get("cookie")
375
- const pairs = Object.entries(opts.cookies)
376
- .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(v)}`)
377
- .join("; ")
378
- if (pairs) {
379
- headers.set("cookie", existing ? `${existing}; ${pairs}` : pairs)
380
- }
381
- }
382
-
383
- /* auto correlation id — config/per-call win; onRequest may overwrite later */
384
- if (config.requestId !== false && !headers.has("x-request-id")) {
385
- headers.set("x-request-id", newClientRequestId())
386
- }
387
-
388
- return headers
389
- }
390
-
391
- /** One combined signal for the user's abort and the timeout, alive until `done()`. */
392
- private _signal(
393
- opts: RequestOptions,
394
- kind: Kind,
395
- ): { done: () => void; exemptFromTimeout: () => void; signal: AbortSignal | undefined } {
396
- const userSignal = opts.signal
397
- const timeout = kind === "stream" ? undefined : (opts.timeout ?? this._config.timeout)
398
- if (!timeout || timeout <= 0) {
399
- return { done: () => {}, exemptFromTimeout: () => {}, signal: userSignal }
400
- }
401
-
402
- const ctrl = new AbortController()
403
- const timer = setTimeout(() => ctrl.abort(timeoutError(timeout)), timeout)
404
- ;(timer as unknown as { unref?: () => void }).unref?.()
405
- const onUserAbort = () => ctrl.abort(userSignal?.reason)
406
- if (userSignal?.aborted) ctrl.abort(userSignal.reason)
407
- else userSignal?.addEventListener("abort", onUserAbort, { once: true })
408
- return {
409
- done: () => {
410
- clearTimeout(timer)
411
- userSignal?.removeEventListener("abort", onUserAbort)
412
- },
413
- exemptFromTimeout: () => clearTimeout(timer),
414
- signal: ctrl.signal,
415
- }
416
- }
417
-
418
- /** Share one `onAuthExpired` call between concurrent 401s; reuse a token another request already got. */
419
- private _refresh(rejectedToken: string | null): Promise<string | null> {
420
- if (this._token !== null && rejectedToken !== this._token) return Promise.resolve(this._token)
421
- if (this._refreshing) return this._refreshing
422
- const hook = this._config.onAuthExpired
423
- if (!hook) return Promise.resolve(null)
424
- this._refreshing = Promise.resolve()
425
- .then(() => hook({ rejectedToken }))
426
- .then((token) => {
427
- this._token = typeof token === "string" && token.length > 0 ? token : null
428
- return this._token
429
- })
430
- .finally(() => {
431
- this._refreshing = null
432
- })
433
- return this._refreshing
434
- }
435
-
436
- private async _fetchWithRedirects(url: URL, init: RequestInit): Promise<Response> {
437
- const policy = this._config.redirect ?? "same-origin"
438
- if (policy === "manual" || policy === "error" || platformFollowsRedirects()) {
439
- return this._fetch(url.toString(), policy === "same-origin" ? init : { ...init, redirect: policy })
440
- }
441
-
442
- const origin = this.base.origin
443
- let current = url
444
- let currentInit: RequestInit = { ...init, redirect: "manual" }
445
- for (let hop = 0; ; hop++) {
446
- const response = await this._fetch(current.toString(), currentInit)
447
- const location = response.headers.get("location")
448
- if (!REDIRECT_STATUSES.has(response.status) || location === null || hop >= MAX_REDIRECTS) return response
449
-
450
- let target: URL
451
- try {
452
- target = new URL(location, current)
453
- } catch {
454
- return response
455
- }
456
- if (target.protocol !== "http:" && target.protocol !== "https:") return response
457
- const crossOrigin = target.origin !== origin
458
- if (crossOrigin && policy !== "follow") return response
459
-
460
- const nextInit: RequestInit = { ...currentInit, headers: new Headers(currentInit.headers) }
461
- const keepsBody = response.status === 307 || response.status === 308
462
- if (keepsBody) {
463
- if (currentInit.body != null && (crossOrigin || !isReplayable(currentInit.body))) return response
464
- } else {
465
- /* 303, and 301/302 for POST: the browser behavior is GET without a body */
466
- const method = (currentInit.method ?? "GET").toUpperCase()
467
- if (response.status === 303 ? method !== "HEAD" : method === "POST") {
468
- nextInit.method = "GET"
469
- nextInit.body = undefined
470
- ;(nextInit.headers as Headers).delete("content-type")
471
- }
472
- }
473
- if (crossOrigin) nextInit.headers = crossOriginHeaders(nextInit.headers as Headers)
474
- await response.body?.cancel().catch(() => {})
475
- current = target
476
- currentInit = nextInit
477
- }
478
- }
479
-
480
- /** Build, send and post-process one request: hooks, auth refresh, redirects. */
481
- private async _send(
482
- method: string,
483
- path: string,
484
- opts: RequestOptions,
485
- kind: Kind,
486
- meta?: RequestMeta,
487
- isRetry = false,
488
- ): Promise<Sent> {
489
- const url = this._url(path, opts)
490
- const headers = await this._headers(opts, { method, path })
491
- if (kind === "stream") {
492
- headers.set("accept", "text/event-stream")
493
- if (opts.lastEventId) headers.set("last-event-id", opts.lastEventId)
494
- }
495
- let body = encodeBody(opts, headers)
496
-
497
- if (this._config.onRequest) {
498
- const reqCtx: OnRequestContext = {
499
- body,
500
- headers,
501
- method,
502
- path,
503
- state: this._config.state ?? {},
504
- url: url.toString(),
505
- }
506
- if (meta) {
507
- reqCtx.invalidatedBy = meta.invalidatedBy
508
- reqCtx.isStale = meta.isStale
509
- reqCtx.selector = meta.selector
510
- }
511
- for (const hook of this._config.onRequest) {
512
- await hook(reqCtx)
513
- }
514
- body = reqCtx.body
515
- }
516
-
517
- const { signal, done, exemptFromTimeout } = this._signal(opts, kind)
518
- const cleanups: Array<() => void> = [done]
519
- const finish = () => {
520
- for (const fn of cleanups.splice(0)) fn()
521
- }
522
- const init: RequestInit = { body, headers, method, signal }
523
- if (this._config.credentials) init.credentials = this._config.credentials
524
- if (this._config.mode) init.mode = this._config.mode
525
- /* a stream body needs half-duplex on Node's fetch */
526
- if (body !== undefined && !isReplayable(body)) (init as RequestInit & { duplex?: string }).duplex = "half"
527
-
528
- try {
529
- signal?.throwIfAborted()
530
- let response = await this._fetchWithRedirects(url, init)
531
-
532
- if (response.status === 401 && this._config.onAuthExpired && !isRetry && isReplayable(body)) {
533
- const sent = headers.get(this.authName)
534
- const rejectedToken = sent?.startsWith(this.authPrefix) ? sent.slice(this.authPrefix.length) : (sent ?? null)
535
- const token = await this._refresh(rejectedToken)
536
- if (token !== null) {
537
- const retryHeaders = new Headers(headers)
538
- retryHeaders.set(this.authName, `${this.authPrefix}${token}`)
539
- init.headers = retryHeaders
540
- await response.body?.cancel().catch(() => {})
541
- response = await this._fetchWithRedirects(url, { ...init })
542
- }
543
- }
544
-
545
- if (this._config.onResponse) {
546
- let request: Request | undefined
547
- const resCtx: OnResponseContext = {
548
- isRetry,
549
- method,
550
- path,
551
- get request() {
552
- /* built on demand: constructing a Request per response is not free */
553
- request ??= new Request(url.toString(), { ...init, body: isReplayable(body) ? body : undefined })
554
- return request
555
- },
556
- response,
557
- retry: async () => {
558
- if (isRetry) return resCtx.response
559
- const again = await this._send(method, path, opts, kind, meta, true)
560
- cleanups.push(again.done)
561
- return again.response
562
- },
563
- state: this._config.state ?? {},
564
- url: url.toString(),
565
- }
566
- if (meta) {
567
- resCtx.invalidatedBy = meta.invalidatedBy
568
- resCtx.isStale = meta.isStale
569
- resCtx.selector = meta.selector
570
- }
571
- for (const hook of this._config.onResponse) {
572
- const result = await hook(resCtx)
573
- if (result instanceof Response) {
574
- response = result
575
- resCtx.response = result
576
- }
577
- }
578
- }
579
-
580
- return { done: finish, exemptFromTimeout, response }
581
- } catch (e) {
582
- finish()
583
- throw e
584
- }
585
- }
586
-
587
- private async _parseBody(response: Response, method: string): Promise<unknown> {
588
- if (
589
- response.status === 204 ||
590
- response.status === 205 ||
591
- response.status === 304 ||
592
- method.toUpperCase() === "HEAD"
593
- ) {
594
- await response.body?.cancel().catch(() => {})
595
- return null
596
- }
597
- const ct = parseMediaType(response.headers.get("content-type"))
598
- if (isJsonMediaType(ct)) {
599
- const text = await response.text()
600
- if (text.length === 0) return null
601
- try {
602
- return JSON.parse(text)
603
- } catch {
604
- throw clientErrorFor({
605
- body: text,
606
- message: "Response body is not valid JSON",
607
- response,
608
- status: response.status,
609
- })
610
- }
611
- }
612
- if (isTextMediaType(ct)) return response.text()
613
- const buffer = await response.arrayBuffer()
614
- return buffer.byteLength === 0 ? null : buffer
615
- }
616
-
617
- /** Read the response of a REST call into a value (throw mode) or a result tuple (safe mode). */
618
- private async _finish(sent: Sent, method: string, shouldThrow: boolean): Promise<unknown> {
619
- const { response } = sent
620
- try {
621
- if (!response.ok) {
622
- const error = await errorFromResponse(response)
623
- if (shouldThrow) throw error
624
- return { data: null, error: safeErrorValue(error), response: error.response, status: response.status }
625
- }
626
- if (shouldThrow) return await this._parseBody(response, method)
627
- try {
628
- const data = await this._parseBody(response, method)
629
- return { data, error: null, response, status: response.status }
630
- } catch (e) {
631
- return { data: null, error: e, response, status: response.status }
632
- }
633
- } finally {
634
- sent.done()
635
- }
636
- }
637
-
638
- private _iterate(sent: Sent): AsyncIterable<SSEEvent> {
639
- return {
640
- async *[Symbol.asyncIterator]() {
641
- try {
642
- if (!sent.response.body) return
643
- yield* parseSSEStream(sent.response.body)
644
- } finally {
645
- sent.done()
646
- }
647
- },
648
- }
649
- }
650
-
651
- /** Throw mode — throws ClientError (a per-status subclass) on non-2xx */
652
- async request(method: string, path: string, opts: RequestOptions, _requestMeta?: RequestMeta): Promise<unknown> {
653
- const sent = await this._send(method, path, opts, "rest", _requestMeta)
654
- return this._finish(sent, method, true)
655
- }
656
-
657
- /** Safe mode — returns { data, error, response, status }; `error` is truthy for every non-2xx */
658
- async requestSafe(
659
- method: string,
660
- path: string,
661
- opts: RequestOptions,
662
- _requestMeta?: RequestMeta,
663
- ): Promise<{
664
- data: unknown
665
- error: unknown
666
- response: Response
667
- status: number
668
- }> {
669
- const sent = await this._send(method, path, opts, "rest", _requestMeta)
670
- return this._finish(sent, method, false) as Promise<{
671
- data: unknown
672
- error: unknown
673
- response: Response
674
- status: number
675
- }>
676
- }
677
-
678
- /**
679
- * One request whose shape is decided by the response: an event stream becomes an
680
- * `AsyncIterable<SSEEvent>` (never buffered, exempt from the timeout once headers arrive);
681
- * anything else is parsed as in `request` / `requestSafe`.
682
- */
683
- async requestAuto(method: string, path: string, opts: RequestOptions, shouldThrow: boolean): Promise<unknown> {
684
- const sent = await this._send(method, path, opts, "auto")
685
- if (sent.response.ok && isEventStream(sent.response)) {
686
- sent.exemptFromTimeout()
687
- return this._iterate(sent)
688
- }
689
- return this._finish(sent, method, shouldThrow)
690
- }
691
-
692
- requestStream(method: string, path: string, opts: RequestOptions): AsyncIterable<SSEEvent> {
693
- return {
694
- [Symbol.asyncIterator]: () => this._doStream(method, path, opts),
695
- }
696
- }
697
-
698
- private async *_doStream(
699
- method: string,
700
- path: string,
701
- opts: RequestOptions,
702
- ): AsyncGenerator<SSEEvent, void, undefined> {
703
- const sent = await this._send(method, path, opts, "stream")
704
- if (!sent.response.ok) {
705
- try {
706
- throw await errorFromResponse(sent.response)
707
- } finally {
708
- sent.done()
709
- }
710
- }
711
- yield* this._iterate(sent)
712
- }
713
-
714
- buildUrl(path: string, opts: RequestOptions): string {
715
- return this._url(path, opts).toString()
716
- }
717
-
718
- buildPath(path: string, opts: RequestOptions): string {
719
- const resolved = opts.params ? interpolatePath(path, opts.params) : interpolatePath(path)
720
-
721
- if (!opts.search) return resolved
722
-
723
- const serializer = this._config.buildSearchParams ?? defaultSearchParams
724
- const params = serializer(opts.search)
725
- if (this._config.sortSearchParams) params.sort()
726
-
727
- const qs = params.toString()
728
- return qs ? `${resolved}?${qs}` : resolved
729
- }
730
-
731
- buildWSUrl(path: string, opts: RequestOptions): string {
732
- const url = this._url(path, opts)
733
- if (url.protocol === "https:") url.protocol = "wss:"
734
- else if (url.protocol === "http:") url.protocol = "ws:"
735
- return url.toString()
736
- }
737
- }