@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
@@ -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,34 @@
1
+ /**
2
+ * The meta type machinery, split from app-types.ts for the 300-line limit (bit 22 a): what a handle declares,
3
+ * what a chain `.meta(values)` records, what a route must still pass, and what the route record leaves out.
4
+ */
5
+ /** `TMeta` defaults to `never`, and `never & X` is `never`: accumulated meta starts at `{}`. */
6
+ export type InitAccMeta<TMeta> = [TMeta] extends [never] ? {} : TMeta;
7
+ /** Chain `.meta(values)` at the type level: a phantom optional key, so routes see the values without having to repeat them. */
8
+ declare const CHAIN_META: unique symbol;
9
+ /** The handle's meta after a chain `.meta(values)`. */
10
+ export type WithChainMeta<TMeta, TValues> = InitAccMeta<TMeta> & {
11
+ readonly [CHAIN_META]?: TValues;
12
+ };
13
+ /**
14
+ * What a route under this handle must still pass to `.meta()`: the handle's meta with the keys chain
15
+ * `.meta(values)` already supplied turned optional. A key no chain value sets stays as declared, so a required one
16
+ * is still required (bit 22 a) — the chain's defaults are a default, not a licence to drop the declaration.
17
+ */
18
+ export type ChainSupplied<TAccMeta> = [TAccMeta] extends [never] ? {} : TAccMeta extends {
19
+ readonly [CHAIN_META]?: infer TValues;
20
+ } ? Omit<TAccMeta, keyof NonNullable<TValues>> & Partial<{
21
+ [K in keyof NonNullable<TValues>]: unknown;
22
+ } & RouteMeta<TAccMeta>> : RouteMeta<TAccMeta>;
23
+ /** The meta type a handle declares (`meta<T>()`), chain values left out; `never` when none was declared. */
24
+ export type DeclaredMeta<TMeta> = [TMeta] extends [never] ? never : [keyof RouteMeta<TMeta>] extends [never] ? never : RouteMeta<TMeta>;
25
+ /** Route meta as it is recorded: without the chain-meta key. */
26
+ export type RouteMeta<TAccMeta> = Omit<TAccMeta, typeof CHAIN_META>;
27
+ type IsInternal<T> = [T] extends [{
28
+ internal: true;
29
+ }] ? true : false;
30
+ /** A route whose meta, its own or its chain's, is `{ internal: true }` is left out of `$routes`. */
31
+ export type SkipRouteRecord<TAccMeta> = [TAccMeta] extends [never] ? false : IsInternal<TAccMeta> extends true ? true : TAccMeta extends {
32
+ readonly [CHAIN_META]?: infer C;
33
+ } ? IsInternal<NonNullable<C>> : false;
34
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The meta type machinery, split from app-types.ts for the 300-line limit (bit 22 a): what a handle declares,
3
+ * what a chain `.meta(values)` records, what a route must still pass, and what the route record leaves out.
4
+ */
5
+ export {};
@@ -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;