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