@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
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Finalize: resolve every registered route against its graph once, and compile what it runs.
3
+ * A route runs `chain → scopes covering it → route middleware`; its error keys, boundary, error
4
+ * factory and meta come from that chain and the app it was registered on. Re-runs whenever a
5
+ * registration moved the graph's epoch.
6
+ */
7
+ import { REQUEST } from "../context/context.js";
8
+ import { withInput } from "../input/input.js";
9
+ import { compileResponseHeaders } from "../response/response-headers.js";
10
+ import { compileOutput, outputValidationOn, withOutput } from "../validation/validate-output.js";
11
+ import { collectMiddlewareMeta, compileChain, } from "../middleware/middleware.js";
12
+ import { assertTreeCurrent, delegatedRecords } from "./delegate.js";
13
+ import { commonPrefix } from "./middleware-chain.js";
14
+ import { canonical, expandOptional, isStaticPattern, variantsCoverage, splitRouteId, } from "./pattern.js";
15
+ import { assertNothingDiscarded, chainErrorKeys } from "./register.js";
16
+ import { assertSettingsAgree } from "./settings.js";
17
+ import { answering, firing, tapsFor } from "./tap.js";
18
+ import { dict } from "./tree.js";
19
+ const EMPTY_META = /* @__PURE__ */ Object.freeze({});
20
+ /** Route meta: what the middleware contributes, overlaid by everything stated explicitly. */
21
+ function routeMeta(chain, explicit) {
22
+ const contributed = collectMiddlewareMeta([chain]);
23
+ if (contributed === null)
24
+ return explicit === null ? null : Object.freeze({ ...explicit });
25
+ return Object.freeze(explicit === null ? contributed : { ...contributed, ...explicit });
26
+ }
27
+ /** The keys a route may throw: the app's defaults, its chain's, its own and its boundary. */
28
+ function declaredKeys(src, chain, own, boundaryKey) {
29
+ const declared = new Set([...src.defaultErrorKeys, ...chainErrorKeys(chain), ...own]);
30
+ if (boundaryKey !== null)
31
+ declared.add(boundaryKey);
32
+ return declared;
33
+ }
34
+ /**
35
+ * ctx.errors: a frozen copy, so a handler never reaches a factory itself. An open route (nothing
36
+ * declared) gets every key of the app's factory; a declared key comes from the factory the route
37
+ * named, else the app's.
38
+ */
39
+ function ctxErrors(factory, named, declared) {
40
+ if (factory === null && named === null)
41
+ return null;
42
+ const subset = Object.create(null);
43
+ if (declared === null)
44
+ return Object.freeze(Object.assign(subset, factory));
45
+ for (const key of declared) {
46
+ const from = named !== null && Object.hasOwn(named, key) ? named : factory;
47
+ if (from !== null && Object.hasOwn(from, key))
48
+ subset[key] = from[key];
49
+ }
50
+ return Object.freeze(subset);
51
+ }
52
+ /** The error keys, boundary and factory a chain resolves to under `src`'s defaults. */
53
+ function resolveErrors(src, chain, route) {
54
+ const boundaryKey = route?.rb ?? src.defaultBoundaryKey;
55
+ const keys = declaredKeys(src, chain, route?.dk ?? new Set(), boundaryKey);
56
+ const declared = keys.size > 0 ? keys : null;
57
+ const errors = ctxErrors(src.errorFactory, route?.ef ?? null, declared);
58
+ return { errors, policy: { boundaryKey, declared, factory: src.errorFactory } };
59
+ }
60
+ /** The scoped middleware a pattern runs: whole where the scope covers it, behind the path check where it covers part. */
61
+ export function scopesFor(g, variants) {
62
+ const out = [];
63
+ for (const entry of g.scoped) {
64
+ const coverage = variantsCoverage(variants, entry.segs);
65
+ if (coverage === "all")
66
+ out.push(entry.mw);
67
+ else if (coverage === "some")
68
+ out.push(entry.guard);
69
+ }
70
+ return out;
71
+ }
72
+ /** The runtime's `process`, where there is one (Node, Bun); Workers have none. */
73
+ function globalProcess() {
74
+ return globalThis.process;
75
+ }
76
+ /** The request's trace: an app with telemetry traces every request it serves, and only its chains are wrapped. */
77
+ function traceOf(ctx) {
78
+ return ctx[REQUEST].trace;
79
+ }
80
+ /** `mw` inside a `middleware.<name>` span on a traced request. */
81
+ function tracedMiddleware(mw) {
82
+ const name = `middleware.${mw.name || "anonymous"}`;
83
+ return (ctx, next) => traceOf(ctx).within(name, () => mw(ctx, next));
84
+ }
85
+ /** The route handler inside an `http.handler` span, active for the app's own instrumentation. */
86
+ function tracedHandler(handler) {
87
+ return (ctx) => {
88
+ const trace = traceOf(ctx);
89
+ return trace.within("http.handler", (span) => trace.run(span, () => handler(ctx)));
90
+ };
91
+ }
92
+ function planRoute(g, r, variants, hooks) {
93
+ const src = r.own.errorFactory === null ? g.settings : r.own;
94
+ const chain = [...r.cm, ...scopesFor(g, variants), ...r.rm];
95
+ const { errors, policy } = resolveErrors(src, chain, r);
96
+ const meta = routeMeta(chain, r.xm);
97
+ r.mt = meta;
98
+ /* only a route with taps pays for them: the handler marks its answer, the chain fires after */
99
+ const taps = tapsFor(g.settings, r.own);
100
+ const traced = g.settings.telemetry !== null;
101
+ const run = traced ? chain.map(tracedMiddleware) : chain;
102
+ /* only a route with .input() pays for it: the step runs between the middleware and the handler */
103
+ const input = r.in === null ? r.fn : withInput(r.in, r.fn);
104
+ /* only a route with .output() in an app checking answers pays for the check */
105
+ const checked = r.out !== null && outputValidationOn(g.settings.outputValidation, globalProcess());
106
+ const fn = checked
107
+ ? withOutput(compileOutput(r.out, compileResponseHeaders(r.out.headers)), input)
108
+ : input;
109
+ const handler = traced ? tracedHandler(taps === null ? fn : answering(fn)) : taps === null ? fn : answering(fn);
110
+ const compiled = compileChain(run, handler, hooks.convert);
111
+ return {
112
+ cv: r.cv,
113
+ mw: chain,
114
+ pf: null,
115
+ pfChain: run,
116
+ policy,
117
+ route: { errors, id: r.id, meta: meta ?? EMPTY_META, pattern: r.rp },
118
+ run: taps === null ? compiled : firing(compiled, taps),
119
+ };
120
+ }
121
+ /**
122
+ * 404 and 405 run through the same pipeline as a route: the middleware every route starts with
123
+ * (with no routes: every handle that served a request), then every scope behind its path check.
124
+ * So an app-wide logger or CORS policy covers unknown paths, and a scope's guard answers before
125
+ * "not found" leaks what exists under it.
126
+ */
127
+ function planMiss(g, hooks) {
128
+ const chains = [...g.records.values()].map((r) => r.cm);
129
+ const prefix = commonPrefix(chains.length > 0 ? chains : [...g.served]);
130
+ const chain = [...prefix, ...g.scoped.map((entry) => entry.guard)];
131
+ const { errors, policy } = resolveErrors(g.settings, chain, null);
132
+ const meta = routeMeta(chain, null);
133
+ const run = g.settings.telemetry === null ? chain : chain.map(tracedMiddleware);
134
+ return {
135
+ cv: null,
136
+ mw: chain,
137
+ pf: null,
138
+ pfChain: run,
139
+ policy,
140
+ route: { errors, id: "", meta: meta ?? EMPTY_META, pattern: "" },
141
+ run: compileChain(run, hooks.miss, hooks.convert),
142
+ };
143
+ }
144
+ /** The graph's final table, recompiled only when a registration moved its epoch. */
145
+ export function finalize(g, hooks) {
146
+ if (g.final !== null && g.final.epoch === g.epoch)
147
+ return g.final;
148
+ assertNothingDiscarded(g);
149
+ assertSettingsAgree(g.settings);
150
+ assertTreeCurrent(g);
151
+ const plans = new Map();
152
+ const statics = dict();
153
+ let ws = false;
154
+ for (const [id, r] of [...g.records, ...delegatedRecords(g)]) {
155
+ const variants = expandOptional(r.sg);
156
+ const plan = planRoute(g, r, variants, hooks);
157
+ plans.set(id, plan);
158
+ const { method } = splitRouteId(id);
159
+ if (method === "WS")
160
+ ws = true;
161
+ for (const variant of variants) {
162
+ if (isStaticPattern(variant))
163
+ (statics[method] ??= dict())[canonical(variant)] = plan;
164
+ }
165
+ }
166
+ const miss = planMiss(g, hooks);
167
+ g.final = { epoch: g.epoch, miss, notFound: miss.pfChain.length === 0 ? hooks.notFound : null, plans, statics, ws };
168
+ return g.final;
169
+ }
@@ -0,0 +1,19 @@
1
+ import { GRAPH, type HoneyGraph } from "./register.ts";
2
+ import { type RouteTree } from "./tree.ts";
3
+ type App = {
4
+ readonly [GRAPH]: HoneyGraph;
5
+ };
6
+ /**
7
+ * The tree a gateway serves: `source` (its services' merged routes) with the gateway's own routes
8
+ * as further leaves. Its root wildcards stay out, as the catch-all the services' routes delegate
9
+ * to, and so do the routes it serves about itself (serveOpenApi, serveManifest). An own route that is also a service route throws, unless `source` is the gateway's own snapshot.
10
+ */
11
+ export declare function gatewayTree(app: App, source: RouteTree): RouteTree;
12
+ /**
13
+ * Give `app`'s routes the input and output declarations `source` holds for them where they
14
+ * declare none: a gateway documents each service route by the service's schemas. Its own stay.
15
+ * A gateway serving its generated tree holds its services' routes as loaded leaves, without a
16
+ * record (bit 19 h2): those leaves take the schemas the same way.
17
+ */
18
+ export declare function overlaySchemas(app: App, source: RouteTree): void;
19
+ export {};
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Generate time, for a gateway: the tree it serves (its services' routes and its own) and the
3
+ * schemas it documents its services' routes with. Pure: the gateway serves the result through
4
+ * `routeTree()` like any generated tree.
5
+ */
6
+ import { expandOptional, parsePattern, splitRouteId } from "./pattern.js";
7
+ import { GRAPH, isServed } from "./register.js";
8
+ import { snapshotRouteTree } from "./route-tree.js";
9
+ import { assertTreeFormat, cloneTree, dict, insertLeaf, ROUTE_TREE_VERSION, } from "./tree.js";
10
+ /** An entry as a generated file carries it: data only, no live record. */
11
+ function dataOf({ h: _live, ...data }) {
12
+ return data;
13
+ }
14
+ const isRootWildcard = (id) => {
15
+ const segments = parsePattern(splitRouteId(id).pattern);
16
+ return segments.length === 1 && segments[0]?.k === "wildcard";
17
+ };
18
+ /**
19
+ * The tree a gateway serves: `source` (its services' merged routes) with the gateway's own routes
20
+ * as further leaves. Its root wildcards stay out, as the catch-all the services' routes delegate
21
+ * to, and so do the routes it serves about itself (serveOpenApi, serveManifest). An own route that is also a service route throws, unless `source` is the gateway's own snapshot.
22
+ */
23
+ export function gatewayTree(app, source) {
24
+ assertTreeFormat(source);
25
+ const g = app[GRAPH];
26
+ const routes = dict();
27
+ for (const [id, entry] of Object.entries(source.routes))
28
+ routes[id] = dataOf(entry);
29
+ /* a route the app serves about itself stays out, as in its snapshot: each app serving the tree mounts its own */
30
+ const own = [...g.records].filter(([id, r]) => !isRootWildcard(id) && !isServed(r)).map(([id]) => id);
31
+ const shadowed = own.filter((id) => Object.hasOwn(routes, id));
32
+ const served = (id) => g.records.has(id) || g.catchAll.has(id);
33
+ const self = own.length > 0 && shadowed.length === own.length && Object.keys(routes).every(served);
34
+ if (shadowed.length > 0 && !self) {
35
+ throw new Error(`Gateway routes are also downstream routes in the merged tree: ${shadowed.join(", ")}`);
36
+ }
37
+ const root = cloneTree(source.root);
38
+ if (!self) {
39
+ const snapshot = snapshotRouteTree(g);
40
+ for (const id of own) {
41
+ const { method } = splitRouteId(id);
42
+ for (const variant of expandOptional(g.records.get(id).sg))
43
+ insertLeaf(root, variant, method, id);
44
+ routes[id] = dataOf(snapshot.routes[id]);
45
+ }
46
+ }
47
+ return { meta: { ...source.meta }, root, routes, v: ROUTE_TREE_VERSION };
48
+ }
49
+ /**
50
+ * Give `app`'s routes the input and output declarations `source` holds for them where they
51
+ * declare none: a gateway documents each service route by the service's schemas. Its own stay.
52
+ * A gateway serving its generated tree holds its services' routes as loaded leaves, without a
53
+ * record (bit 19 h2): those leaves take the schemas the same way.
54
+ */
55
+ export function overlaySchemas(app, source) {
56
+ const g = app[GRAPH];
57
+ const leaves = dict();
58
+ for (const [id, entry] of Object.entries(source.routes)) {
59
+ const target = g.records.get(id);
60
+ const leaf = g.loaded?.[id];
61
+ if (target !== undefined)
62
+ g.records.set(id, { ...target, ...schemasOf(target, entry) });
63
+ else if (leaf !== undefined)
64
+ leaves[id] = { ...leaf, ...schemasOf(leaf, entry) };
65
+ }
66
+ if (g.loaded !== null && Object.keys(leaves).length > 0)
67
+ g.loaded = Object.assign(dict(), g.loaded, leaves);
68
+ g.epoch++;
69
+ }
70
+ /** `target`'s own schemas, else what `entry` declares, else its live record's. */
71
+ function schemasOf(target, entry) {
72
+ const live = entry.h;
73
+ return { iv: target.iv ?? entry.iv ?? live?.iv ?? null, out: target.out ?? entry.out ?? live?.out ?? null };
74
+ }
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Codegen-time check: mutations that declare no `invalidate`.
3
+ *
4
+ * A correctness signal, not a documentation one: `x-invalidate` drives generated SDK behavior (the
5
+ * Rust and Go clients expand it into an invalidation post-flight, the Python client reads it), so a
6
+ * mutation with no `invalidate` produces clients that refresh nothing after the call.
7
+ *
8
+ * It warns and never blocks by default: plenty of mutations correctly invalidate nothing (login,
9
+ * logout, webhook receipt) and plenty of honey users never generate an SDK. A rule that fails the
10
+ * build teaches people to paste the shortest token that makes it pass. This module only decides;
11
+ * the OpenAPI emitter throws or logs the report.
12
+ */
13
+ /** How a missing `invalidate` is reported. Default `"warn"`. */
14
+ export type InvalidateCheckLevel = "error" | "off" | "warn";
15
+ export type InvalidateCheckConfig = {
16
+ /**
17
+ * Operation extension naming the entity an operation touches, e.g. `"x-entity"`. A mutation and
18
+ * a read carrying the same value is a sharper signal than path shape. honey does not own the
19
+ * key's name; the app says which one it uses.
20
+ */
21
+ entityKey?: string;
22
+ level?: InvalidateCheckLevel;
23
+ } | InvalidateCheckLevel;
24
+ export type InvalidateCheckOperation = {
25
+ /** lowercased HTTP method */
26
+ method: string;
27
+ /** route meta as authored, to tell "absent" from a deliberate "nothing" */
28
+ meta: Record<string, unknown> | null;
29
+ /** the emitted operation object */
30
+ operation: Record<string, unknown>;
31
+ /** OpenAPI-style path */
32
+ path: string;
33
+ };
34
+ export type InvalidateFinding = {
35
+ /** read operations that make this mutation look like an oversight */
36
+ affects: string[];
37
+ method: string;
38
+ path: string;
39
+ };
40
+ /** The level an `invalidate` config reports at. */
41
+ export declare function invalidateLevel(config: InvalidateCheckConfig | undefined): InvalidateCheckLevel;
42
+ /** Mutations with no `invalidate` that the document suggests should have one. */
43
+ export declare function findMissingInvalidate(operations: readonly InvalidateCheckOperation[], entityKey: string | undefined): InvalidateFinding[];
44
+ /**
45
+ * The report for mutations with no `invalidate`, or `null` when the check is off or finds nothing.
46
+ * One summary, never one line per operation: a warning that fires 53 times gets filtered out of
47
+ * the log; one that fires once and lists 10 gets read.
48
+ */
49
+ export declare function missingInvalidateReport(operations: readonly InvalidateCheckOperation[], config: InvalidateCheckConfig | undefined): string | null;
50
+ /**
51
+ * `invalidate` selectors that name no route. A selector is `"<METHOD> <pattern>"`, exactly as the
52
+ * generated `RouteSelector` union spells it; anything else invalidates nothing at runtime.
53
+ */
54
+ export declare function findInvalidSelectors(operations: readonly InvalidateCheckOperation[], inventory: ReadonlySet<string>): Array<{
55
+ method: string;
56
+ path: string;
57
+ selector: unknown;
58
+ }>;
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Codegen-time check: mutations that declare no `invalidate`.
3
+ *
4
+ * A correctness signal, not a documentation one: `x-invalidate` drives generated SDK behavior (the
5
+ * Rust and Go clients expand it into an invalidation post-flight, the Python client reads it), so a
6
+ * mutation with no `invalidate` produces clients that refresh nothing after the call.
7
+ *
8
+ * It warns and never blocks by default: plenty of mutations correctly invalidate nothing (login,
9
+ * logout, webhook receipt) and plenty of honey users never generate an SDK. A rule that fails the
10
+ * build teaches people to paste the shortest token that makes it pass. This module only decides;
11
+ * the OpenAPI emitter throws or logs the report.
12
+ */
13
+ const MUTATION_METHODS = ["delete", "patch", "post", "put"];
14
+ const MAX_LISTED = 20;
15
+ function resolveConfig(config) {
16
+ if (config === undefined)
17
+ return { level: "warn" };
18
+ if (typeof config === "string")
19
+ return { level: config };
20
+ return { entityKey: config.entityKey, level: config.level ?? "warn" };
21
+ }
22
+ /** The level an `invalidate` config reports at. */
23
+ export function invalidateLevel(config) {
24
+ return resolveConfig(config).level;
25
+ }
26
+ /**
27
+ * Did the author record a decision? `null` and `[]` both say "this mutation refreshes nothing";
28
+ * absent says nothing at all, which is what this check looks for.
29
+ */
30
+ function declaredNothing(meta) {
31
+ if (meta === null || !Object.hasOwn(meta, "invalidate"))
32
+ return false;
33
+ const value = meta.invalidate;
34
+ return value === null || (Array.isArray(value) && value.length === 0);
35
+ }
36
+ const nonEmpty = (value) => Array.isArray(value) && value.length > 0;
37
+ /** Declared in the meta, or emitted: a profile that leaves `x-invalidate` out must not make every mutation look undeclared. */
38
+ function alreadyInvalidates(entry) {
39
+ return nonEmpty(entry.meta?.invalidate) || nonEmpty(entry.operation["x-invalidate"]);
40
+ }
41
+ /**
42
+ * Paths a mutation plausibly affects: its own, and its collection when it targets an item.
43
+ * `DELETE /tables/{id}` affects `GET /tables/{id}` and `GET /tables`.
44
+ */
45
+ function pathFamily(path) {
46
+ const segments = path.split("/");
47
+ const last = segments.at(-1);
48
+ const item = last.startsWith("{") && last.endsWith("}") && segments.length > 2;
49
+ return item ? [path, segments.slice(0, -1).join("/")] : [path];
50
+ }
51
+ function entityOf(entry, entityKey) {
52
+ const entity = entityKey === undefined ? undefined : entry.operation[entityKey];
53
+ return entity === undefined || entity === null ? null : JSON.stringify(entity);
54
+ }
55
+ function readIndex(operations, entityKey) {
56
+ const paths = new Set();
57
+ const byEntity = new Map();
58
+ for (const entry of operations.filter((o) => o.method === "get")) {
59
+ paths.add(entry.path);
60
+ const entity = entityOf(entry, entityKey);
61
+ if (entity !== null)
62
+ byEntity.set(entity, [...(byEntity.get(entity) ?? []), `GET ${entry.path}`]);
63
+ }
64
+ return { byEntity, paths };
65
+ }
66
+ /** Mutations with no `invalidate` that the document suggests should have one. */
67
+ export function findMissingInvalidate(operations, entityKey) {
68
+ const reads = readIndex(operations, entityKey);
69
+ const undeclared = operations.filter((e) => MUTATION_METHODS.includes(e.method) && !alreadyInvalidates(e) && !declaredNothing(e.meta));
70
+ return undeclared.flatMap((entry) => {
71
+ const entity = entityOf(entry, entityKey);
72
+ /* the same entity read elsewhere is sharper than path shape; with no tagged reader, path shape still speaks */
73
+ const byEntity = entity === null ? [] : (reads.byEntity.get(entity) ?? []);
74
+ const affects = byEntity.length > 0
75
+ ? byEntity
76
+ : pathFamily(entry.path)
77
+ .filter((p) => reads.paths.has(p))
78
+ .map((p) => `GET ${p}`);
79
+ return affects.length === 0 ? [] : [{ affects, method: entry.method.toUpperCase(), path: entry.path }];
80
+ });
81
+ }
82
+ /**
83
+ * The report for mutations with no `invalidate`, or `null` when the check is off or finds nothing.
84
+ * One summary, never one line per operation: a warning that fires 53 times gets filtered out of
85
+ * the log; one that fires once and lists 10 gets read.
86
+ */
87
+ export function missingInvalidateReport(operations, config) {
88
+ const { entityKey, level } = resolveConfig(config);
89
+ if (level === "off")
90
+ return null;
91
+ const findings = findMissingInvalidate(operations, entityKey);
92
+ if (findings.length === 0)
93
+ return null;
94
+ const width = Math.max(...findings.map((f) => f.method.length));
95
+ const shown = findings
96
+ .slice(0, MAX_LISTED)
97
+ .map((f) => ` ${f.method.padEnd(width)} ${f.path} → ${f.affects.join(", ")}`);
98
+ const more = findings.length > shown.length ? `\n … and ${findings.length - shown.length} more` : "";
99
+ return (`[honey:invalidate] ${findings.length} mutation(s) declare no \`invalidate\`, but the document has ` +
100
+ "read routes they plausibly affect.\nGenerated SDK clients refresh nothing after these calls.\n" +
101
+ `${shown.join("\n")}${more}\n` +
102
+ "Declare the routes each one refreshes, or `invalidate: null` to record that it refreshes nothing.");
103
+ }
104
+ /**
105
+ * `invalidate` selectors that name no route. A selector is `"<METHOD> <pattern>"`, exactly as the
106
+ * generated `RouteSelector` union spells it; anything else invalidates nothing at runtime.
107
+ */
108
+ export function findInvalidSelectors(operations, inventory) {
109
+ const out = [];
110
+ const seen = new Set();
111
+ for (const entry of operations) {
112
+ const declared = entry.meta?.invalidate;
113
+ if (!Array.isArray(declared))
114
+ continue;
115
+ for (const selector of declared) {
116
+ const key = `${entry.method} ${entry.path} ${String(selector)}`;
117
+ if ((typeof selector === "string" && inventory.has(selector)) || seen.has(key))
118
+ continue;
119
+ seen.add(key);
120
+ out.push({ method: entry.method.toUpperCase(), path: entry.path, selector });
121
+ }
122
+ }
123
+ return out;
124
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Request matching over the route tree. Depth-first in precedence order (static, then param, then
3
+ * wildcard), retrying the next branch on a dead end and on a method miss. A trie node sits at one
4
+ * depth, so each node is visited at most once per request: the walk is linear in the route set,
5
+ * and recursion depth is bounded by the deepest registered route, not by the request path.
6
+ */
7
+ import type { RouteId } from "./pattern.ts";
8
+ import { type TreeNode } from "./tree.ts";
9
+ import type { HttpMethod } from "./types.ts";
10
+ export type MatchResult = {
11
+ allowed: HttpMethod[];
12
+ matched: false;
13
+ } | {
14
+ id: RouteId;
15
+ matched: true;
16
+ params: Record<string, string>;
17
+ } | null;
18
+ export declare function matchRoute(root: TreeNode, method: HttpMethod | string, path: string): MatchResult;
19
+ export declare function matchWsRoute(root: TreeNode, path: string): {
20
+ id: RouteId;
21
+ params: Record<string, string>;
22
+ } | null;
@@ -0,0 +1,108 @@
1
+ import { dict } from "./tree.js";
2
+ function decode(s) {
3
+ if (!s.includes("%"))
4
+ return s;
5
+ try {
6
+ return decodeURIComponent(s);
7
+ }
8
+ catch {
9
+ /* a malformed escape is client data: the param keeps it as written */
10
+ return s;
11
+ }
12
+ }
13
+ /** The exact method, then GET for HEAD, then ALL. */
14
+ function pickMethod(m, method) {
15
+ return m[method] ?? (method === "HEAD" ? m.GET : undefined) ?? m.ALL;
16
+ }
17
+ function addAllowed(st, m) {
18
+ st.allowed ??= new Set();
19
+ /* a map holding ALL never misses (pickMethod falls back to it), so every key here is a method */
20
+ for (const k in m)
21
+ st.allowed.add(k);
22
+ }
23
+ /** A wildcard's leaf for the method, capturing `rest`; on a method miss its methods join Allow. */
24
+ function wildcardHit(node, rest, st) {
25
+ if (node.w === null)
26
+ return undefined;
27
+ const id = pickMethod(node.w.m, st.method);
28
+ if (id === undefined) {
29
+ addAllowed(st, node.w.m);
30
+ return undefined;
31
+ }
32
+ st.names.push(node.w.n);
33
+ st.values.push(rest);
34
+ return id;
35
+ }
36
+ function skipSlashes(path, pos) {
37
+ let at = pos;
38
+ while (path.charCodeAt(at) === 47)
39
+ at++;
40
+ return at;
41
+ }
42
+ /** The leaf at the end of the path: this node's methods, else an empty wildcard below it. */
43
+ function endOfPath(node, st) {
44
+ if (node.m !== null) {
45
+ const id = pickMethod(node.m, st.method);
46
+ if (id !== undefined)
47
+ return id;
48
+ addAllowed(st, node.m);
49
+ }
50
+ return wildcardHit(node, "", st);
51
+ }
52
+ /** Try the param branch with `seg` bound; unbind it again on a dead end. */
53
+ function tryParam(node, seg, end, st) {
54
+ if (node.d === null)
55
+ return undefined;
56
+ const depth = st.names.length;
57
+ st.names.push(node.d.n);
58
+ st.values.push(decode(seg));
59
+ const id = st.walk(node.d.c, end, st);
60
+ if (id !== undefined)
61
+ return id;
62
+ st.names.length = depth;
63
+ st.values.length = depth;
64
+ return undefined;
65
+ }
66
+ function walk(node, from, st) {
67
+ const pos = skipSlashes(st.path, from);
68
+ if (pos >= st.path.length)
69
+ return endOfPath(node, st);
70
+ const slash = st.path.indexOf("/", pos);
71
+ const end = slash === -1 ? st.path.length : slash;
72
+ const seg = st.path.substring(pos, end);
73
+ const staticChild = node.s[seg];
74
+ const viaStatic = staticChild === undefined ? undefined : walk(staticChild, end, st);
75
+ return viaStatic ?? tryParam(node, seg, end, st) ?? wildcardHit(node, decode(st.path.substring(pos)), st);
76
+ }
77
+ function paramsOf(st) {
78
+ const params = dict();
79
+ st.names.forEach((name, i) => {
80
+ params[name] = st.values[i];
81
+ });
82
+ return params;
83
+ }
84
+ export function matchRoute(root, method, path) {
85
+ const st = { allowed: null, method, names: [], path, values: [], walk };
86
+ const id = walk(root, 0, st);
87
+ if (id !== undefined)
88
+ return { id, matched: true, params: paramsOf(st) };
89
+ if (st.allowed !== null)
90
+ return { allowed: [...st.allowed], matched: false };
91
+ return null;
92
+ }
93
+ function walkWs(node, from, st) {
94
+ const pos = skipSlashes(st.path, from);
95
+ if (pos >= st.path.length)
96
+ return node.ws ?? undefined;
97
+ const slash = st.path.indexOf("/", pos);
98
+ const end = slash === -1 ? st.path.length : slash;
99
+ const seg = st.path.substring(pos, end);
100
+ const staticChild = node.s[seg];
101
+ const viaStatic = staticChild === undefined ? undefined : walkWs(staticChild, end, st);
102
+ return viaStatic ?? tryParam(node, seg, end, st);
103
+ }
104
+ export function matchWsRoute(root, path) {
105
+ const st = { allowed: null, method: "WS", names: [], path, values: [], walk: walkWs };
106
+ const id = walkWs(root, 0, st);
107
+ return id === undefined ? null : { id, params: paramsOf(st) };
108
+ }
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Dispatch-side middleware helpers, run once at finalize: the request-path guard behind a scoped
3
+ * `use()`, and what 404/405 run (the run of middleware every route starts with). Tracing wraps
4
+ * middleware in telemetry/request-trace.ts.
5
+ */
6
+ import type { RuntimeMiddleware } from "../middleware/middleware.ts";
7
+ import { type Segment } from "./pattern.ts";
8
+ /** The error keys a middleware declares (`defineMiddleware`). */
9
+ export declare function errorsOf(mw: RuntimeMiddleware): readonly string[] | undefined;
10
+ /** The factory a middleware's error keys come from (`defineMiddleware`). */
11
+ export declare function errorFactoryOf(mw: RuntimeMiddleware): Readonly<Record<string, unknown>> | undefined;
12
+ /** A scoped middleware behind a request-path check: it runs only when the path is inside the scope. */
13
+ export declare function scopeGuard(segs: readonly Segment[], mw: RuntimeMiddleware): RuntimeMiddleware;
14
+ /** The longest run of middleware every chain starts with: what 404 and 405 run. */
15
+ export declare function commonPrefix(chains: ReadonlyArray<readonly RuntimeMiddleware[]>): RuntimeMiddleware[];
16
+ export declare function describeMw(mw: RuntimeMiddleware): string;
@@ -0,0 +1,41 @@
1
+ import { pathInScope } from "./pattern.js";
2
+ /** The error keys a middleware declares (`defineMiddleware`). */
3
+ export function errorsOf(mw) {
4
+ return mw.errors;
5
+ }
6
+ /** The factory a middleware's error keys come from (`defineMiddleware`). */
7
+ export function errorFactoryOf(mw) {
8
+ return mw.errorFactory;
9
+ }
10
+ /** A scoped middleware behind a request-path check: it runs only when the path is inside the scope. */
11
+ export function scopeGuard(segs, mw) {
12
+ const guard = (ctx, next) => (pathInScope(ctx.path, segs) ? mw(ctx, next) : next());
13
+ Object.defineProperty(guard, "name", { configurable: true, value: mw.name });
14
+ const errors = errorsOf(mw);
15
+ const factory = errorFactoryOf(mw);
16
+ const meta = mw.meta;
17
+ if (errors)
18
+ Object.defineProperty(guard, "errors", { value: errors });
19
+ if (factory)
20
+ Object.defineProperty(guard, "errorFactory", { value: factory });
21
+ if (meta)
22
+ Object.defineProperty(guard, "meta", { value: meta });
23
+ return guard;
24
+ }
25
+ /** The longest run of middleware every chain starts with: what 404 and 405 run. */
26
+ export function commonPrefix(chains) {
27
+ const [first, ...rest] = chains;
28
+ if (first === undefined)
29
+ return [];
30
+ let n = first.length;
31
+ for (const chain of rest) {
32
+ let i = 0;
33
+ while (i < n && i < chain.length && chain[i] === first[i])
34
+ i++;
35
+ n = i;
36
+ }
37
+ return first.slice(0, n);
38
+ }
39
+ export function describeMw(mw) {
40
+ return mw.name ? `"${mw.name}"` : "an anonymous middleware";
41
+ }