@lovrozagar/honey 0.7.2 → 1.0.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1003) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +36 -1969
  3. package/bin/honey.js +87 -27
  4. package/dist/adapters/bun/serve.d.ts +18 -0
  5. package/dist/adapters/bun/serve.js +89 -0
  6. package/dist/adapters/fetch-request.d.ts +20 -0
  7. package/dist/adapters/fetch-request.js +29 -0
  8. package/dist/adapters/node/headers.d.ts +27 -0
  9. package/dist/adapters/node/headers.js +86 -0
  10. package/dist/adapters/node/request.d.ts +16 -0
  11. package/dist/adapters/node/request.js +214 -0
  12. package/dist/adapters/node/response.d.ts +11 -0
  13. package/dist/adapters/node/response.js +126 -0
  14. package/dist/adapters/node/serve.d.ts +39 -0
  15. package/dist/adapters/node/serve.js +205 -0
  16. package/dist/adapters/node/url.d.ts +13 -0
  17. package/dist/adapters/node/url.js +87 -0
  18. package/dist/adapters/serve.d.ts +36 -0
  19. package/dist/adapters/serve.js +52 -0
  20. package/dist/build/artifacts.d.ts +34 -0
  21. package/dist/build/artifacts.js +123 -0
  22. package/dist/build/cli-args.d.ts +30 -0
  23. package/dist/build/cli-args.js +97 -0
  24. package/dist/build/cli.d.ts +11 -0
  25. package/dist/build/cli.js +150 -0
  26. package/dist/build/config.d.ts +102 -0
  27. package/dist/build/config.js +89 -0
  28. package/dist/build/generate.d.ts +19 -0
  29. package/dist/build/generate.js +80 -0
  30. package/dist/build/glob.d.ts +8 -0
  31. package/dist/build/glob.js +97 -0
  32. package/dist/build/index.d.ts +3 -58
  33. package/dist/build/index.js +3 -173
  34. package/dist/build/init.d.ts +3 -0
  35. package/dist/build/init.js +131 -0
  36. package/dist/build/loaders.d.ts +33 -0
  37. package/dist/build/loaders.js +105 -0
  38. package/dist/build/plugin.d.ts +52 -0
  39. package/dist/build/plugin.js +146 -0
  40. package/dist/build/source.d.ts +21 -0
  41. package/dist/build/source.js +100 -0
  42. package/dist/build/targets.d.ts +59 -0
  43. package/dist/build/targets.js +107 -0
  44. package/dist/context/context.d.ts +111 -0
  45. package/dist/context/context.js +213 -0
  46. package/dist/context/cookie-sign.d.ts +38 -0
  47. package/dist/context/cookie-sign.js +113 -0
  48. package/dist/context/cookie.d.ts +28 -0
  49. package/dist/context/cookie.js +142 -0
  50. package/dist/context/peer.d.ts +34 -0
  51. package/dist/context/peer.js +190 -0
  52. package/dist/errors/error.d.ts +60 -0
  53. package/dist/errors/error.js +84 -0
  54. package/dist/errors/errors.d.ts +45 -0
  55. package/dist/errors/errors.js +31 -0
  56. package/dist/errors/on-error.d.ts +10 -0
  57. package/dist/errors/on-error.js +204 -0
  58. package/dist/errors/problem-json.d.ts +14 -0
  59. package/dist/errors/problem-json.js +58 -0
  60. package/dist/errors/projector.d.ts +50 -0
  61. package/dist/errors/projector.js +107 -0
  62. package/dist/i18n/error-i18n.d.ts +26 -0
  63. package/dist/i18n/error-i18n.js +77 -0
  64. package/dist/i18n/i18n.d.ts +21 -0
  65. package/dist/i18n/i18n.js +40 -0
  66. package/dist/i18n/icu.d.ts +29 -0
  67. package/dist/i18n/icu.js +170 -0
  68. package/dist/i18n/index.d.ts +4 -0
  69. package/dist/i18n/index.js +3 -0
  70. package/dist/index.d.ts +30 -744
  71. package/dist/index.js +12 -2363
  72. package/dist/input/accepts.d.ts +5 -0
  73. package/dist/input/accepts.js +105 -0
  74. package/dist/input/binary.d.ts +20 -0
  75. package/dist/input/binary.js +40 -0
  76. package/dist/input/body-kind.d.ts +15 -0
  77. package/dist/input/body-kind.js +47 -0
  78. package/dist/input/body-limit.d.ts +21 -0
  79. package/dist/input/body-limit.js +99 -0
  80. package/dist/input/cookies.d.ts +7 -0
  81. package/dist/input/cookies.js +8 -0
  82. package/dist/input/form.d.ts +10 -0
  83. package/dist/input/form.js +24 -0
  84. package/dist/input/headers.d.ts +7 -0
  85. package/dist/input/headers.js +8 -0
  86. package/dist/input/input.d.ts +91 -0
  87. package/dist/input/input.js +88 -0
  88. package/dist/input/json.d.ts +10 -0
  89. package/dist/input/json.js +22 -0
  90. package/dist/input/params.d.ts +7 -0
  91. package/dist/input/params.js +8 -0
  92. package/dist/input/query.d.ts +10 -0
  93. package/dist/input/query.js +17 -0
  94. package/dist/mcp/mount.d.ts +116 -0
  95. package/dist/mcp/mount.js +45 -0
  96. package/dist/mcp/oauth.d.ts +14 -0
  97. package/dist/mcp/oauth.js +88 -0
  98. package/dist/mcp/uploads.d.ts +36 -0
  99. package/dist/mcp/uploads.js +171 -0
  100. package/dist/mcp/url-files.d.ts +32 -0
  101. package/dist/mcp/url-files.js +75 -0
  102. package/dist/meta/meta-spec-apply.d.ts +25 -0
  103. package/dist/meta/meta-spec-apply.js +83 -0
  104. package/dist/meta/meta-spec-merge.d.ts +103 -0
  105. package/dist/meta/meta-spec-merge.js +50 -0
  106. package/dist/meta/meta-spec-validate.d.ts +61 -0
  107. package/dist/meta/meta-spec-validate.js +166 -0
  108. package/dist/meta/meta-spec.d.ts +49 -0
  109. package/dist/meta/meta-spec.js +197 -0
  110. package/dist/middleware/compress.d.ts +15 -0
  111. package/dist/middleware/compress.js +93 -0
  112. package/dist/middleware/cors.d.ts +18 -0
  113. package/dist/middleware/cors.js +80 -0
  114. package/dist/middleware/csrf.d.ts +11 -0
  115. package/dist/middleware/csrf.js +65 -0
  116. package/dist/middleware/ip-restrict.d.ts +10 -0
  117. package/dist/middleware/ip-restrict.js +82 -0
  118. package/dist/middleware/middleware.d.ts +53 -0
  119. package/dist/middleware/middleware.js +112 -0
  120. package/dist/middleware/powered-by.d.ts +6 -0
  121. package/dist/middleware/powered-by.js +13 -0
  122. package/dist/middleware/rate-limit.d.ts +40 -0
  123. package/dist/middleware/rate-limit.js +90 -0
  124. package/dist/middleware/request-id.d.ts +25 -0
  125. package/dist/middleware/request-id.js +30 -0
  126. package/dist/middleware/secure-headers.d.ts +18 -0
  127. package/dist/middleware/secure-headers.js +36 -0
  128. package/dist/middleware/server-timing.d.ts +8 -0
  129. package/dist/middleware/server-timing.js +52 -0
  130. package/dist/middleware/timeout.d.ts +6 -0
  131. package/dist/middleware/timeout.js +29 -0
  132. package/dist/observability/curl-logger.d.ts +46 -0
  133. package/dist/observability/curl-logger.js +175 -0
  134. package/dist/observability/request-to-curl.d.ts +17 -0
  135. package/dist/observability/request-to-curl.js +47 -0
  136. package/dist/openapi/collect.d.ts +56 -18
  137. package/dist/openapi/collect.js +109 -23
  138. package/dist/openapi/components.d.ts +9 -0
  139. package/dist/openapi/components.js +90 -0
  140. package/dist/openapi/docs-page.d.ts +20 -18
  141. package/dist/openapi/docs-page.js +28 -46
  142. package/dist/openapi/document.d.ts +33 -26
  143. package/dist/openapi/document.js +21 -776
  144. package/dist/openapi/extract-schemas.d.ts +11 -0
  145. package/dist/openapi/extract-schemas.js +31 -0
  146. package/dist/openapi/generate.d.ts +47 -0
  147. package/dist/openapi/generate.js +180 -0
  148. package/dist/openapi/manifest.d.ts +41 -0
  149. package/dist/openapi/manifest.js +49 -0
  150. package/dist/openapi/output-keys.d.ts +6 -0
  151. package/dist/openapi/output-keys.js +24 -0
  152. package/dist/openapi/paths.d.ts +35 -0
  153. package/dist/openapi/paths.js +175 -0
  154. package/dist/openapi/register.d.ts +14 -3
  155. package/dist/openapi/register.js +13 -20
  156. package/dist/openapi/responses.d.ts +44 -0
  157. package/dist/openapi/responses.js +159 -0
  158. package/dist/openapi/scalar.d.ts +4 -14
  159. package/dist/openapi/scalar.js +5 -7
  160. package/dist/openapi/security.d.ts +4 -0
  161. package/dist/openapi/security.js +25 -0
  162. package/dist/openapi/serve.d.ts +25 -9
  163. package/dist/openapi/serve.js +108 -29
  164. package/dist/openapi/servers.d.ts +19 -0
  165. package/dist/openapi/servers.js +72 -0
  166. package/dist/openapi/swagger.d.ts +4 -14
  167. package/dist/openapi/swagger.js +5 -7
  168. package/dist/openapi/tags.d.ts +20 -0
  169. package/dist/openapi/tags.js +20 -0
  170. package/dist/openapi/webhooks.d.ts +19 -0
  171. package/dist/openapi/webhooks.js +70 -0
  172. package/dist/openapi/yaml.d.ts +8 -0
  173. package/dist/openapi/yaml.js +74 -0
  174. package/dist/proxy/headers.d.ts +30 -0
  175. package/dist/proxy/headers.js +86 -0
  176. package/dist/proxy/proxy.d.ts +39 -0
  177. package/dist/proxy/proxy.js +103 -0
  178. package/dist/proxy/upstream.d.ts +30 -0
  179. package/dist/proxy/upstream.js +116 -0
  180. package/dist/realtime/bus.d.ts +10 -13
  181. package/dist/realtime/bus.js +48 -93
  182. package/dist/realtime/invoke-user.d.ts +36 -0
  183. package/dist/realtime/invoke-user.js +103 -0
  184. package/dist/realtime/realtime.d.ts +7 -0
  185. package/dist/realtime/realtime.js +40 -0
  186. package/dist/realtime/route.d.ts +33 -27
  187. package/dist/realtime/route.js +27 -43
  188. package/dist/realtime/server.d.ts +24 -28
  189. package/dist/realtime/server.js +202 -225
  190. package/dist/response/binary.d.ts +18 -0
  191. package/dist/response/binary.js +10 -0
  192. package/dist/response/builder.d.ts +73 -0
  193. package/dist/response/builder.js +214 -0
  194. package/dist/response/cache-control.d.ts +30 -0
  195. package/dist/response/cache-control.js +74 -0
  196. package/dist/response/etag.d.ts +15 -0
  197. package/dist/response/etag.js +83 -0
  198. package/dist/response/media-type.d.ts +28 -0
  199. package/dist/response/media-type.js +97 -0
  200. package/dist/response/out-headers.d.ts +31 -0
  201. package/dist/response/out-headers.js +130 -0
  202. package/dist/response/pretty-json.d.ts +10 -0
  203. package/dist/response/pretty-json.js +44 -0
  204. package/dist/response/range.d.ts +19 -0
  205. package/dist/response/range.js +98 -0
  206. package/dist/response/response-headers.d.ts +11 -0
  207. package/dist/response/response-headers.js +21 -0
  208. package/dist/response/response.d.ts +69 -0
  209. package/dist/response/response.js +208 -0
  210. package/dist/response/sse.d.ts +41 -0
  211. package/dist/response/sse.js +73 -0
  212. package/dist/response/static.d.ts +20 -0
  213. package/dist/response/static.js +181 -0
  214. package/dist/response/status.d.ts +5 -0
  215. package/dist/response/status.js +68 -0
  216. package/dist/response/with-headers.d.ts +11 -0
  217. package/dist/response/with-headers.js +47 -0
  218. package/dist/routing/app-types.d.ts +181 -0
  219. package/dist/routing/app-types.js +1 -0
  220. package/dist/routing/app.d.ts +76 -0
  221. package/dist/routing/app.js +137 -0
  222. package/dist/routing/codegen-types.d.ts +17 -0
  223. package/dist/routing/codegen-types.js +1 -0
  224. package/dist/routing/delegate.d.ts +9 -0
  225. package/dist/routing/delegate.js +75 -0
  226. package/dist/routing/dispatch.d.ts +22 -0
  227. package/dist/routing/dispatch.js +255 -0
  228. package/dist/routing/finalize.d.ts +47 -0
  229. package/dist/routing/finalize.js +169 -0
  230. package/dist/routing/gateway-tree.d.ts +19 -0
  231. package/dist/routing/gateway-tree.js +74 -0
  232. package/dist/routing/invalidate-check.d.ts +58 -0
  233. package/dist/routing/invalidate-check.js +124 -0
  234. package/dist/routing/match.d.ts +22 -0
  235. package/dist/routing/match.js +108 -0
  236. package/dist/routing/middleware-chain.d.ts +16 -0
  237. package/dist/routing/middleware-chain.js +41 -0
  238. package/dist/routing/output-types.d.ts +91 -0
  239. package/dist/routing/output-types.js +1 -0
  240. package/dist/routing/pattern.d.ts +55 -0
  241. package/dist/routing/pattern.js +219 -0
  242. package/dist/routing/record.d.ts +18 -0
  243. package/dist/routing/record.js +4 -0
  244. package/dist/routing/register.d.ts +135 -0
  245. package/dist/routing/register.js +155 -0
  246. package/dist/routing/request-path.d.ts +30 -0
  247. package/dist/routing/request-path.js +173 -0
  248. package/dist/routing/route-builder.d.ts +160 -0
  249. package/dist/routing/route-builder.js +86 -0
  250. package/dist/routing/route-tree.d.ts +18 -0
  251. package/dist/routing/route-tree.js +91 -0
  252. package/dist/routing/settings-chain.d.ts +75 -0
  253. package/dist/routing/settings-chain.js +137 -0
  254. package/dist/routing/settings.d.ts +90 -0
  255. package/dist/routing/settings.js +44 -0
  256. package/dist/routing/tap.d.ts +31 -0
  257. package/dist/routing/tap.js +77 -0
  258. package/dist/routing/tree-merge.d.ts +7 -0
  259. package/dist/routing/tree-merge.js +77 -0
  260. package/dist/routing/tree.d.ts +85 -0
  261. package/dist/routing/tree.js +196 -0
  262. package/dist/routing/types.d.ts +20 -0
  263. package/dist/routing/types.js +1 -0
  264. package/dist/routing/ws-builder.d.ts +62 -0
  265. package/dist/routing/ws-builder.js +109 -0
  266. package/dist/runtime/detect-runtime.d.ts +16 -0
  267. package/dist/runtime/detect-runtime.js +11 -0
  268. package/dist/runtime/optional-peer.d.ts +10 -0
  269. package/dist/runtime/optional-peer.js +19 -0
  270. package/dist/schema/arktype.d.ts +7 -0
  271. package/dist/schema/arktype.js +13 -0
  272. package/dist/schema/canonicalize.d.ts +8 -0
  273. package/dist/schema/canonicalize.js +19 -0
  274. package/dist/schema/effect.d.ts +7 -0
  275. package/dist/schema/effect.js +4 -0
  276. package/dist/schema/naming.d.ts +31 -0
  277. package/dist/schema/naming.js +116 -0
  278. package/dist/schema/sanitize-spec.d.ts +15 -0
  279. package/dist/schema/sanitize-spec.js +43 -0
  280. package/dist/schema/slots.d.ts +15 -0
  281. package/dist/schema/slots.js +179 -0
  282. package/dist/schema/to-json-schema.d.ts +34 -0
  283. package/dist/schema/to-json-schema.js +94 -0
  284. package/dist/schema/valibot.d.ts +4 -0
  285. package/dist/schema/valibot.js +153 -0
  286. package/dist/schema/yup.d.ts +3 -0
  287. package/dist/schema/yup.js +57 -0
  288. package/dist/schema/zod.d.ts +6 -0
  289. package/dist/schema/zod.js +192 -0
  290. package/dist/security/crypto.d.ts +7 -0
  291. package/dist/security/crypto.js +30 -0
  292. package/dist/streaming/producer-stream.d.ts +45 -0
  293. package/dist/streaming/producer-stream.js +251 -0
  294. package/dist/telemetry/fields.d.ts +43 -0
  295. package/dist/telemetry/fields.js +64 -0
  296. package/dist/telemetry/log-format.d.ts +7 -0
  297. package/dist/telemetry/log-format.js +43 -0
  298. package/dist/telemetry/logger.d.ts +44 -0
  299. package/dist/telemetry/logger.js +122 -0
  300. package/dist/telemetry/otel-subpath.d.ts +7 -0
  301. package/dist/telemetry/otel-subpath.js +5 -0
  302. package/dist/telemetry/otel.d.ts +50 -57
  303. package/dist/telemetry/otel.js +54 -130
  304. package/dist/telemetry/request-log.d.ts +22 -0
  305. package/dist/telemetry/request-log.js +83 -0
  306. package/dist/telemetry/request-trace.d.ts +123 -0
  307. package/dist/telemetry/request-trace.js +199 -0
  308. package/dist/telemetry/span-lifecycle.d.ts +11 -0
  309. package/dist/telemetry/span-lifecycle.js +114 -0
  310. package/dist/telemetry/traceparent.d.ts +40 -0
  311. package/dist/telemetry/traceparent.js +73 -0
  312. package/dist/testing/testing.d.ts +42 -0
  313. package/dist/testing/testing.js +101 -0
  314. package/dist/validation/content-type.d.ts +21 -0
  315. package/dist/validation/content-type.js +42 -0
  316. package/dist/validation/standard-schema.d.ts +41 -0
  317. package/dist/validation/standard-schema.js +5 -0
  318. package/dist/validation/validate-input.d.ts +45 -0
  319. package/dist/validation/validate-input.js +174 -0
  320. package/dist/validation/validate-output.d.ts +34 -0
  321. package/dist/validation/validate-output.js +107 -0
  322. package/dist/ws/bun.d.ts +30 -25
  323. package/dist/ws/bun.js +42 -46
  324. package/dist/ws/cloudflare.d.ts +6 -75
  325. package/dist/ws/cloudflare.js +37 -104
  326. package/dist/ws/contract.d.ts +74 -0
  327. package/dist/ws/contract.js +83 -0
  328. package/dist/ws/node.d.ts +12 -21
  329. package/dist/ws/node.js +103 -151
  330. package/dist/ws/origin.d.ts +23 -0
  331. package/dist/ws/origin.js +48 -0
  332. package/dist/ws/route.d.ts +14 -0
  333. package/dist/ws/route.js +5 -0
  334. package/dist/ws/session.d.ts +15 -6
  335. package/dist/ws/session.js +22 -23
  336. package/dist/ws/shared.d.ts +23 -33
  337. package/dist/ws/shared.js +53 -39
  338. package/package.json +169 -251
  339. package/dist/accepts.d.ts +0 -12
  340. package/dist/accepts.d.ts.map +0 -1
  341. package/dist/accepts.js +0 -126
  342. package/dist/accepts.js.map +0 -1
  343. package/dist/body-kind.d.ts +0 -26
  344. package/dist/body-kind.d.ts.map +0 -1
  345. package/dist/body-kind.js +0 -70
  346. package/dist/body-kind.js.map +0 -1
  347. package/dist/body-limit.d.ts +0 -26
  348. package/dist/body-limit.d.ts.map +0 -1
  349. package/dist/body-limit.js +0 -126
  350. package/dist/body-limit.js.map +0 -1
  351. package/dist/build/index.d.ts.map +0 -1
  352. package/dist/build/index.js.map +0 -1
  353. package/dist/cli-args.d.ts +0 -33
  354. package/dist/cli-args.d.ts.map +0 -1
  355. package/dist/cli-args.js +0 -102
  356. package/dist/cli-args.js.map +0 -1
  357. package/dist/cli-go/auth.go +0 -26
  358. package/dist/cli-go/config.go +0 -192
  359. package/dist/cli-go/errors.go +0 -75
  360. package/dist/cli-go/multipart.go +0 -79
  361. package/dist/cli-go/output.go +0 -163
  362. package/dist/cli-go/root.go +0 -30
  363. package/dist/cli-go/stream.go +0 -88
  364. package/dist/cli-go/version.go +0 -5
  365. package/dist/cli.d.ts +0 -3
  366. package/dist/cli.d.ts.map +0 -1
  367. package/dist/cli.js +0 -209
  368. package/dist/cli.js.map +0 -1
  369. package/dist/client/defaults.d.ts +0 -12
  370. package/dist/client/defaults.d.ts.map +0 -1
  371. package/dist/client/defaults.js +0 -48
  372. package/dist/client/defaults.js.map +0 -1
  373. package/dist/client/error.d.ts +0 -49
  374. package/dist/client/error.d.ts.map +0 -1
  375. package/dist/client/error.js +0 -71
  376. package/dist/client/error.js.map +0 -1
  377. package/dist/client/http.d.ts +0 -155
  378. package/dist/client/http.d.ts.map +0 -1
  379. package/dist/client/http.js +0 -571
  380. package/dist/client/http.js.map +0 -1
  381. package/dist/client/index.d.ts +0 -23
  382. package/dist/client/index.d.ts.map +0 -1
  383. package/dist/client/index.js +0 -95
  384. package/dist/client/index.js.map +0 -1
  385. package/dist/client/path.d.ts +0 -26
  386. package/dist/client/path.d.ts.map +0 -1
  387. package/dist/client/path.js +0 -163
  388. package/dist/client/path.js.map +0 -1
  389. package/dist/client/redirect-policy.d.ts +0 -12
  390. package/dist/client/redirect-policy.d.ts.map +0 -1
  391. package/dist/client/redirect-policy.js +0 -20
  392. package/dist/client/redirect-policy.js.map +0 -1
  393. package/dist/client/sdk.d.ts +0 -70
  394. package/dist/client/sdk.d.ts.map +0 -1
  395. package/dist/client/sdk.js +0 -292
  396. package/dist/client/sdk.js.map +0 -1
  397. package/dist/client/sse.d.ts +0 -23
  398. package/dist/client/sse.d.ts.map +0 -1
  399. package/dist/client/sse.js +0 -129
  400. package/dist/client/sse.js.map +0 -1
  401. package/dist/client/types.d.ts +0 -124
  402. package/dist/client/types.d.ts.map +0 -1
  403. package/dist/client/types.js +0 -2
  404. package/dist/client/types.js.map +0 -1
  405. package/dist/client/ws.d.ts +0 -22
  406. package/dist/client/ws.d.ts.map +0 -1
  407. package/dist/client/ws.js +0 -112
  408. package/dist/client/ws.js.map +0 -1
  409. package/dist/client-go/errors.go +0 -236
  410. package/dist/client-go/export.go +0 -44
  411. package/dist/client-go/invalidation.go +0 -371
  412. package/dist/client-go/nullable.go +0 -62
  413. package/dist/client-go/realtime.go +0 -354
  414. package/dist/client-go/result.go +0 -20
  415. package/dist/client-go/runtime.go +0 -975
  416. package/dist/client-go/sse.go +0 -159
  417. package/dist/client-go/transport.go +0 -495
  418. package/dist/client-go/ws.go +0 -128
  419. package/dist/client-info.d.ts +0 -36
  420. package/dist/client-info.d.ts.map +0 -1
  421. package/dist/client-info.js +0 -53
  422. package/dist/client-info.js.map +0 -1
  423. package/dist/client-mcp/README.md +0 -10
  424. package/dist/client-mcp/server.ts +0 -221
  425. package/dist/client-mcp/types.ts +0 -19
  426. package/dist/client-python/_errors.py +0 -115
  427. package/dist/client-python/_invalidation.py +0 -494
  428. package/dist/client-python/_realtime.py +0 -179
  429. package/dist/client-python/_runtime.py +0 -860
  430. package/dist/client-python/_sse.py +0 -155
  431. package/dist/client-python/_transport.py +0 -366
  432. package/dist/client-python/_ws.py +0 -159
  433. package/dist/client-python/py.typed +0 -0
  434. package/dist/client-rust/errors.rs +0 -220
  435. package/dist/client-rust/invalidation.rs +0 -412
  436. package/dist/client-rust/invalidation_sync.rs +0 -93
  437. package/dist/client-rust/nullable.rs +0 -17
  438. package/dist/client-rust/realtime.rs +0 -702
  439. package/dist/client-rust/result.rs +0 -22
  440. package/dist/client-rust/runtime.rs +0 -980
  441. package/dist/client-rust/runtime_sync.rs +0 -484
  442. package/dist/client-rust/sse.rs +0 -188
  443. package/dist/client-rust/ws.rs +0 -167
  444. package/dist/codegen-go-cli.d.ts +0 -22
  445. package/dist/codegen-go-cli.d.ts.map +0 -1
  446. package/dist/codegen-go-cli.js +0 -964
  447. package/dist/codegen-go-cli.js.map +0 -1
  448. package/dist/codegen-go.d.ts +0 -41
  449. package/dist/codegen-go.d.ts.map +0 -1
  450. package/dist/codegen-go.js +0 -872
  451. package/dist/codegen-go.js.map +0 -1
  452. package/dist/codegen-hash.d.ts +0 -3
  453. package/dist/codegen-hash.d.ts.map +0 -1
  454. package/dist/codegen-hash.js +0 -9
  455. package/dist/codegen-hash.js.map +0 -1
  456. package/dist/codegen-ir.d.ts +0 -190
  457. package/dist/codegen-ir.d.ts.map +0 -1
  458. package/dist/codegen-ir.js +0 -661
  459. package/dist/codegen-ir.js.map +0 -1
  460. package/dist/codegen-lang.d.ts +0 -65
  461. package/dist/codegen-lang.d.ts.map +0 -1
  462. package/dist/codegen-lang.js +0 -526
  463. package/dist/codegen-lang.js.map +0 -1
  464. package/dist/codegen-load.d.ts +0 -31
  465. package/dist/codegen-load.d.ts.map +0 -1
  466. package/dist/codegen-load.js +0 -138
  467. package/dist/codegen-load.js.map +0 -1
  468. package/dist/codegen-loaders.d.ts +0 -12
  469. package/dist/codegen-loaders.d.ts.map +0 -1
  470. package/dist/codegen-loaders.js +0 -55
  471. package/dist/codegen-loaders.js.map +0 -1
  472. package/dist/codegen-mcp.d.ts +0 -13
  473. package/dist/codegen-mcp.d.ts.map +0 -1
  474. package/dist/codegen-mcp.js +0 -368
  475. package/dist/codegen-mcp.js.map +0 -1
  476. package/dist/codegen-python.d.ts +0 -33
  477. package/dist/codegen-python.d.ts.map +0 -1
  478. package/dist/codegen-python.js +0 -828
  479. package/dist/codegen-python.js.map +0 -1
  480. package/dist/codegen-route-tree-intern.d.ts +0 -40
  481. package/dist/codegen-route-tree-intern.d.ts.map +0 -1
  482. package/dist/codegen-route-tree-intern.js +0 -221
  483. package/dist/codegen-route-tree-intern.js.map +0 -1
  484. package/dist/codegen-rust.d.ts +0 -18
  485. package/dist/codegen-rust.d.ts.map +0 -1
  486. package/dist/codegen-rust.js +0 -1293
  487. package/dist/codegen-rust.js.map +0 -1
  488. package/dist/codegen-sanitize.d.ts +0 -3
  489. package/dist/codegen-sanitize.d.ts.map +0 -1
  490. package/dist/codegen-sanitize.js +0 -56
  491. package/dist/codegen-sanitize.js.map +0 -1
  492. package/dist/codegen-schema-naming.d.ts +0 -27
  493. package/dist/codegen-schema-naming.d.ts.map +0 -1
  494. package/dist/codegen-schema-naming.js +0 -150
  495. package/dist/codegen-schema-naming.js.map +0 -1
  496. package/dist/codegen-sdk-model.d.ts +0 -71
  497. package/dist/codegen-sdk-model.d.ts.map +0 -1
  498. package/dist/codegen-sdk-model.js +0 -179
  499. package/dist/codegen-sdk-model.js.map +0 -1
  500. package/dist/codegen.d.ts +0 -187
  501. package/dist/codegen.d.ts.map +0 -1
  502. package/dist/codegen.js +0 -4619
  503. package/dist/codegen.js.map +0 -1
  504. package/dist/context.d.ts +0 -86
  505. package/dist/context.d.ts.map +0 -1
  506. package/dist/context.js +0 -242
  507. package/dist/context.js.map +0 -1
  508. package/dist/cookie-sign.d.ts +0 -17
  509. package/dist/cookie-sign.d.ts.map +0 -1
  510. package/dist/cookie-sign.js +0 -104
  511. package/dist/cookie-sign.js.map +0 -1
  512. package/dist/cookie.d.ts +0 -24
  513. package/dist/cookie.d.ts.map +0 -1
  514. package/dist/cookie.js +0 -138
  515. package/dist/cookie.js.map +0 -1
  516. package/dist/cors.d.ts +0 -14
  517. package/dist/cors.d.ts.map +0 -1
  518. package/dist/cors.js +0 -87
  519. package/dist/cors.js.map +0 -1
  520. package/dist/crypto.d.ts +0 -7
  521. package/dist/crypto.d.ts.map +0 -1
  522. package/dist/crypto.js +0 -38
  523. package/dist/crypto.js.map +0 -1
  524. package/dist/csrf.d.ts +0 -28
  525. package/dist/csrf.d.ts.map +0 -1
  526. package/dist/csrf.js +0 -79
  527. package/dist/csrf.js.map +0 -1
  528. package/dist/curl-logger.d.ts +0 -44
  529. package/dist/curl-logger.d.ts.map +0 -1
  530. package/dist/curl-logger.js +0 -199
  531. package/dist/curl-logger.js.map +0 -1
  532. package/dist/detect-runtime.d.ts +0 -16
  533. package/dist/detect-runtime.d.ts.map +0 -1
  534. package/dist/detect-runtime.js +0 -13
  535. package/dist/detect-runtime.js.map +0 -1
  536. package/dist/dict.d.ts +0 -11
  537. package/dist/dict.d.ts.map +0 -1
  538. package/dist/dict.js +0 -13
  539. package/dist/dict.js.map +0 -1
  540. package/dist/error.d.ts +0 -21
  541. package/dist/error.d.ts.map +0 -1
  542. package/dist/error.js +0 -44
  543. package/dist/error.js.map +0 -1
  544. package/dist/errors.d.ts +0 -40
  545. package/dist/errors.d.ts.map +0 -1
  546. package/dist/errors.js +0 -39
  547. package/dist/errors.js.map +0 -1
  548. package/dist/etag.d.ts +0 -11
  549. package/dist/etag.d.ts.map +0 -1
  550. package/dist/etag.js +0 -82
  551. package/dist/etag.js.map +0 -1
  552. package/dist/feature-detect.d.ts +0 -25
  553. package/dist/feature-detect.d.ts.map +0 -1
  554. package/dist/feature-detect.js +0 -144
  555. package/dist/feature-detect.js.map +0 -1
  556. package/dist/feature-load.d.ts +0 -3
  557. package/dist/feature-load.d.ts.map +0 -1
  558. package/dist/feature-load.js +0 -36
  559. package/dist/feature-load.js.map +0 -1
  560. package/dist/feature-slots.d.ts +0 -44
  561. package/dist/feature-slots.d.ts.map +0 -1
  562. package/dist/feature-slots.js +0 -48
  563. package/dist/feature-slots.js.map +0 -1
  564. package/dist/fetch-request.d.ts +0 -10
  565. package/dist/fetch-request.d.ts.map +0 -1
  566. package/dist/fetch-request.js +0 -13
  567. package/dist/fetch-request.js.map +0 -1
  568. package/dist/gen-process.d.ts +0 -15
  569. package/dist/gen-process.d.ts.map +0 -1
  570. package/dist/gen-process.js +0 -43
  571. package/dist/gen-process.js.map +0 -1
  572. package/dist/gen-write.d.ts +0 -19
  573. package/dist/gen-write.d.ts.map +0 -1
  574. package/dist/gen-write.js +0 -120
  575. package/dist/gen-write.js.map +0 -1
  576. package/dist/glob.d.ts +0 -21
  577. package/dist/glob.d.ts.map +0 -1
  578. package/dist/glob.js +0 -115
  579. package/dist/glob.js.map +0 -1
  580. package/dist/go-type-emitter.d.ts +0 -47
  581. package/dist/go-type-emitter.d.ts.map +0 -1
  582. package/dist/go-type-emitter.js +0 -594
  583. package/dist/go-type-emitter.js.map +0 -1
  584. package/dist/honey-response.d.ts +0 -82
  585. package/dist/honey-response.d.ts.map +0 -1
  586. package/dist/honey-response.js +0 -338
  587. package/dist/honey-response.js.map +0 -1
  588. package/dist/i18n-slot.d.ts +0 -15
  589. package/dist/i18n-slot.d.ts.map +0 -1
  590. package/dist/i18n-slot.js +0 -14
  591. package/dist/i18n-slot.js.map +0 -1
  592. package/dist/i18n.d.ts +0 -29
  593. package/dist/i18n.d.ts.map +0 -1
  594. package/dist/i18n.js +0 -250
  595. package/dist/i18n.js.map +0 -1
  596. package/dist/index.d.ts.map +0 -1
  597. package/dist/index.js.map +0 -1
  598. package/dist/init.d.ts +0 -5
  599. package/dist/init.d.ts.map +0 -1
  600. package/dist/init.js +0 -140
  601. package/dist/init.js.map +0 -1
  602. package/dist/input.d.ts +0 -6
  603. package/dist/input.d.ts.map +0 -1
  604. package/dist/input.js +0 -4
  605. package/dist/input.js.map +0 -1
  606. package/dist/invalidate-check.d.ts +0 -61
  607. package/dist/invalidate-check.d.ts.map +0 -1
  608. package/dist/invalidate-check.js +0 -163
  609. package/dist/invalidate-check.js.map +0 -1
  610. package/dist/invoke-user.d.ts +0 -35
  611. package/dist/invoke-user.d.ts.map +0 -1
  612. package/dist/invoke-user.js +0 -73
  613. package/dist/invoke-user.js.map +0 -1
  614. package/dist/ip-restrict.d.ts +0 -24
  615. package/dist/ip-restrict.d.ts.map +0 -1
  616. package/dist/ip-restrict.js +0 -60
  617. package/dist/ip-restrict.js.map +0 -1
  618. package/dist/ip.d.ts +0 -39
  619. package/dist/ip.d.ts.map +0 -1
  620. package/dist/ip.js +0 -209
  621. package/dist/ip.js.map +0 -1
  622. package/dist/logger.d.ts +0 -45
  623. package/dist/logger.d.ts.map +0 -1
  624. package/dist/logger.js +0 -113
  625. package/dist/logger.js.map +0 -1
  626. package/dist/media-type.d.ts +0 -30
  627. package/dist/media-type.d.ts.map +0 -1
  628. package/dist/media-type.js +0 -97
  629. package/dist/media-type.js.map +0 -1
  630. package/dist/meta-spec-merge.d.ts +0 -32
  631. package/dist/meta-spec-merge.d.ts.map +0 -1
  632. package/dist/meta-spec-merge.js +0 -68
  633. package/dist/meta-spec-merge.js.map +0 -1
  634. package/dist/meta-spec.d.ts +0 -94
  635. package/dist/meta-spec.d.ts.map +0 -1
  636. package/dist/meta-spec.js +0 -535
  637. package/dist/meta-spec.js.map +0 -1
  638. package/dist/middleware.d.ts +0 -77
  639. package/dist/middleware.d.ts.map +0 -1
  640. package/dist/middleware.js +0 -253
  641. package/dist/middleware.js.map +0 -1
  642. package/dist/node-request.d.ts +0 -104
  643. package/dist/node-request.d.ts.map +0 -1
  644. package/dist/node-request.js +0 -407
  645. package/dist/node-request.js.map +0 -1
  646. package/dist/node.d.ts +0 -30
  647. package/dist/node.d.ts.map +0 -1
  648. package/dist/node.js +0 -396
  649. package/dist/node.js.map +0 -1
  650. package/dist/openapi/collect.d.ts.map +0 -1
  651. package/dist/openapi/collect.js.map +0 -1
  652. package/dist/openapi/docs-page.d.ts.map +0 -1
  653. package/dist/openapi/docs-page.js.map +0 -1
  654. package/dist/openapi/document.d.ts.map +0 -1
  655. package/dist/openapi/document.js.map +0 -1
  656. package/dist/openapi/json-schema-slot.d.ts +0 -12
  657. package/dist/openapi/json-schema-slot.d.ts.map +0 -1
  658. package/dist/openapi/json-schema-slot.js +0 -38
  659. package/dist/openapi/json-schema-slot.js.map +0 -1
  660. package/dist/openapi/register.d.ts.map +0 -1
  661. package/dist/openapi/register.js.map +0 -1
  662. package/dist/openapi/scalar.d.ts.map +0 -1
  663. package/dist/openapi/scalar.js.map +0 -1
  664. package/dist/openapi/serve.d.ts.map +0 -1
  665. package/dist/openapi/serve.js.map +0 -1
  666. package/dist/openapi/spec-factory.d.ts +0 -65
  667. package/dist/openapi/spec-factory.d.ts.map +0 -1
  668. package/dist/openapi/spec-factory.js +0 -52
  669. package/dist/openapi/spec-factory.js.map +0 -1
  670. package/dist/openapi/spec.d.ts +0 -29
  671. package/dist/openapi/spec.d.ts.map +0 -1
  672. package/dist/openapi/spec.js +0 -50
  673. package/dist/openapi/spec.js.map +0 -1
  674. package/dist/openapi/swagger.d.ts.map +0 -1
  675. package/dist/openapi/swagger.js.map +0 -1
  676. package/dist/pattern.d.ts +0 -71
  677. package/dist/pattern.d.ts.map +0 -1
  678. package/dist/pattern.js +0 -239
  679. package/dist/pattern.js.map +0 -1
  680. package/dist/peer.d.ts +0 -17
  681. package/dist/peer.d.ts.map +0 -1
  682. package/dist/peer.js +0 -50
  683. package/dist/peer.js.map +0 -1
  684. package/dist/plugin.d.ts +0 -228
  685. package/dist/plugin.d.ts.map +0 -1
  686. package/dist/plugin.js +0 -666
  687. package/dist/plugin.js.map +0 -1
  688. package/dist/powered-by.d.ts +0 -7
  689. package/dist/powered-by.d.ts.map +0 -1
  690. package/dist/powered-by.js +0 -11
  691. package/dist/powered-by.js.map +0 -1
  692. package/dist/pretty-json.d.ts +0 -10
  693. package/dist/pretty-json.d.ts.map +0 -1
  694. package/dist/pretty-json.js +0 -47
  695. package/dist/pretty-json.js.map +0 -1
  696. package/dist/producer-stream.d.ts +0 -47
  697. package/dist/producer-stream.d.ts.map +0 -1
  698. package/dist/producer-stream.js +0 -267
  699. package/dist/producer-stream.js.map +0 -1
  700. package/dist/proxy.d.ts +0 -90
  701. package/dist/proxy.d.ts.map +0 -1
  702. package/dist/proxy.js +0 -274
  703. package/dist/proxy.js.map +0 -1
  704. package/dist/python-type-emitter.d.ts +0 -24
  705. package/dist/python-type-emitter.d.ts.map +0 -1
  706. package/dist/python-type-emitter.js +0 -157
  707. package/dist/python-type-emitter.js.map +0 -1
  708. package/dist/realtime/bus.d.ts.map +0 -1
  709. package/dist/realtime/bus.js.map +0 -1
  710. package/dist/realtime/register.d.ts +0 -3
  711. package/dist/realtime/register.d.ts.map +0 -1
  712. package/dist/realtime/register.js +0 -10
  713. package/dist/realtime/register.js.map +0 -1
  714. package/dist/realtime/route.d.ts.map +0 -1
  715. package/dist/realtime/route.js.map +0 -1
  716. package/dist/realtime/server.d.ts.map +0 -1
  717. package/dist/realtime/server.js.map +0 -1
  718. package/dist/request-id.d.ts +0 -19
  719. package/dist/request-id.d.ts.map +0 -1
  720. package/dist/request-id.js +0 -16
  721. package/dist/request-id.js.map +0 -1
  722. package/dist/request-limits.d.ts +0 -3
  723. package/dist/request-limits.d.ts.map +0 -1
  724. package/dist/request-limits.js +0 -3
  725. package/dist/request-limits.js.map +0 -1
  726. package/dist/request-path.d.ts +0 -33
  727. package/dist/request-path.d.ts.map +0 -1
  728. package/dist/request-path.js +0 -178
  729. package/dist/request-path.js.map +0 -1
  730. package/dist/request-to-curl.d.ts +0 -15
  731. package/dist/request-to-curl.d.ts.map +0 -1
  732. package/dist/request-to-curl.js +0 -48
  733. package/dist/request-to-curl.js.map +0 -1
  734. package/dist/response.d.ts +0 -86
  735. package/dist/response.d.ts.map +0 -1
  736. package/dist/response.js +0 -313
  737. package/dist/response.js.map +0 -1
  738. package/dist/rust-type-emitter.d.ts +0 -44
  739. package/dist/rust-type-emitter.d.ts.map +0 -1
  740. package/dist/rust-type-emitter.js +0 -463
  741. package/dist/rust-type-emitter.js.map +0 -1
  742. package/dist/secure-headers.d.ts +0 -16
  743. package/dist/secure-headers.d.ts.map +0 -1
  744. package/dist/secure-headers.js +0 -53
  745. package/dist/secure-headers.js.map +0 -1
  746. package/dist/serve-register.d.ts +0 -6
  747. package/dist/serve-register.d.ts.map +0 -1
  748. package/dist/serve-register.js +0 -9
  749. package/dist/serve-register.js.map +0 -1
  750. package/dist/serve-slot.d.ts +0 -9
  751. package/dist/serve-slot.d.ts.map +0 -1
  752. package/dist/serve-slot.js +0 -52
  753. package/dist/serve-slot.js.map +0 -1
  754. package/dist/serve.d.ts +0 -38
  755. package/dist/serve.d.ts.map +0 -1
  756. package/dist/serve.js +0 -157
  757. package/dist/serve.js.map +0 -1
  758. package/dist/server-timing.d.ts +0 -9
  759. package/dist/server-timing.d.ts.map +0 -1
  760. package/dist/server-timing.js +0 -51
  761. package/dist/server-timing.js.map +0 -1
  762. package/dist/static.d.ts +0 -21
  763. package/dist/static.d.ts.map +0 -1
  764. package/dist/static.js +0 -102
  765. package/dist/static.js.map +0 -1
  766. package/dist/telemetry/otel.d.ts.map +0 -1
  767. package/dist/telemetry/otel.js.map +0 -1
  768. package/dist/testing.d.ts +0 -36
  769. package/dist/testing.d.ts.map +0 -1
  770. package/dist/testing.js +0 -124
  771. package/dist/testing.js.map +0 -1
  772. package/dist/timeout.d.ts +0 -13
  773. package/dist/timeout.d.ts.map +0 -1
  774. package/dist/timeout.js +0 -36
  775. package/dist/timeout.js.map +0 -1
  776. package/dist/tree.d.ts +0 -193
  777. package/dist/tree.d.ts.map +0 -1
  778. package/dist/tree.js +0 -437
  779. package/dist/tree.js.map +0 -1
  780. package/dist/trust.d.ts +0 -21
  781. package/dist/trust.d.ts.map +0 -1
  782. package/dist/trust.js +0 -100
  783. package/dist/trust.js.map +0 -1
  784. package/dist/ts-type-emitter.d.ts +0 -8
  785. package/dist/ts-type-emitter.d.ts.map +0 -1
  786. package/dist/ts-type-emitter.js +0 -150
  787. package/dist/ts-type-emitter.js.map +0 -1
  788. package/dist/type-emitter.d.ts +0 -36
  789. package/dist/type-emitter.d.ts.map +0 -1
  790. package/dist/type-emitter.js +0 -729
  791. package/dist/type-emitter.js.map +0 -1
  792. package/dist/type-extractor.d.ts +0 -43
  793. package/dist/type-extractor.d.ts.map +0 -1
  794. package/dist/type-extractor.js +0 -819
  795. package/dist/type-extractor.js.map +0 -1
  796. package/dist/types.d.ts +0 -467
  797. package/dist/types.d.ts.map +0 -1
  798. package/dist/types.js +0 -96
  799. package/dist/types.js.map +0 -1
  800. package/dist/validation.d.ts +0 -31
  801. package/dist/validation.d.ts.map +0 -1
  802. package/dist/validation.js +0 -335
  803. package/dist/validation.js.map +0 -1
  804. package/dist/with-headers.d.ts +0 -15
  805. package/dist/with-headers.d.ts.map +0 -1
  806. package/dist/with-headers.js +0 -45
  807. package/dist/with-headers.js.map +0 -1
  808. package/dist/ws/bun.d.ts.map +0 -1
  809. package/dist/ws/bun.js.map +0 -1
  810. package/dist/ws/cloudflare.d.ts.map +0 -1
  811. package/dist/ws/cloudflare.js.map +0 -1
  812. package/dist/ws/deno.d.ts +0 -13
  813. package/dist/ws/deno.d.ts.map +0 -1
  814. package/dist/ws/deno.js +0 -133
  815. package/dist/ws/deno.js.map +0 -1
  816. package/dist/ws/node.d.ts.map +0 -1
  817. package/dist/ws/node.js.map +0 -1
  818. package/dist/ws/session.d.ts.map +0 -1
  819. package/dist/ws/session.js.map +0 -1
  820. package/dist/ws/shared.d.ts.map +0 -1
  821. package/dist/ws/shared.js.map +0 -1
  822. package/dist/ws-origin.d.ts +0 -20
  823. package/dist/ws-origin.d.ts.map +0 -1
  824. package/dist/ws-origin.js +0 -41
  825. package/dist/ws-origin.js.map +0 -1
  826. package/dist/yaml.d.ts +0 -18
  827. package/dist/yaml.d.ts.map +0 -1
  828. package/dist/yaml.js +0 -101
  829. package/dist/yaml.js.map +0 -1
  830. package/docs/api-ref/go.md +0 -399
  831. package/docs/api-ref/python.md +0 -399
  832. package/docs/api-ref/rust.md +0 -399
  833. package/docs/api-ref/typescript.md +0 -399
  834. package/docs/invalidate-spec.md +0 -333
  835. package/docs/meta-spec.md +0 -555
  836. package/docs/packaging.md +0 -104
  837. package/docs/regression-matrix/README.md +0 -32
  838. package/docs/regression-matrix/review.md +0 -44
  839. package/docs/regression-matrix/ws1-3.md +0 -97
  840. package/docs/regression-matrix/ws4-8.md +0 -107
  841. package/docs/regression-matrix/ws9-12.md +0 -266
  842. package/docs/sdk.md +0 -798
  843. package/src/accepts.ts +0 -136
  844. package/src/body-kind.ts +0 -67
  845. package/src/body-limit.ts +0 -152
  846. package/src/build/index.ts +0 -217
  847. package/src/cli-args.ts +0 -123
  848. package/src/cli-go/auth.go +0 -26
  849. package/src/cli-go/config.go +0 -192
  850. package/src/cli-go/errors.go +0 -75
  851. package/src/cli-go/multipart.go +0 -79
  852. package/src/cli-go/output.go +0 -163
  853. package/src/cli-go/root.go +0 -30
  854. package/src/cli-go/stream.go +0 -88
  855. package/src/cli-go/version.go +0 -5
  856. package/src/cli.ts +0 -209
  857. package/src/client/defaults.ts +0 -47
  858. package/src/client/error.ts +0 -82
  859. package/src/client/http.ts +0 -737
  860. package/src/client/index.ts +0 -157
  861. package/src/client/path.ts +0 -169
  862. package/src/client/redirect-policy.ts +0 -19
  863. package/src/client/sdk.ts +0 -351
  864. package/src/client/sse.ts +0 -128
  865. package/src/client/types.ts +0 -206
  866. package/src/client/ws.ts +0 -149
  867. package/src/client-go/errors.go +0 -236
  868. package/src/client-go/export.go +0 -44
  869. package/src/client-go/invalidation.go +0 -371
  870. package/src/client-go/nullable.go +0 -62
  871. package/src/client-go/realtime.go +0 -354
  872. package/src/client-go/result.go +0 -20
  873. package/src/client-go/runtime.go +0 -975
  874. package/src/client-go/sse.go +0 -159
  875. package/src/client-go/transport.go +0 -495
  876. package/src/client-go/ws.go +0 -128
  877. package/src/client-info.ts +0 -79
  878. package/src/client-mcp/README.md +0 -10
  879. package/src/client-mcp/server.ts +0 -221
  880. package/src/client-mcp/types.ts +0 -19
  881. package/src/client-python/_errors.py +0 -115
  882. package/src/client-python/_invalidation.py +0 -494
  883. package/src/client-python/_realtime.py +0 -179
  884. package/src/client-python/_runtime.py +0 -860
  885. package/src/client-python/_sse.py +0 -155
  886. package/src/client-python/_transport.py +0 -366
  887. package/src/client-python/_ws.py +0 -159
  888. package/src/client-python/py.typed +0 -0
  889. package/src/client-rust/errors.rs +0 -220
  890. package/src/client-rust/invalidation.rs +0 -412
  891. package/src/client-rust/invalidation_sync.rs +0 -93
  892. package/src/client-rust/nullable.rs +0 -17
  893. package/src/client-rust/realtime.rs +0 -702
  894. package/src/client-rust/result.rs +0 -22
  895. package/src/client-rust/runtime.rs +0 -980
  896. package/src/client-rust/runtime_sync.rs +0 -484
  897. package/src/client-rust/sse.rs +0 -188
  898. package/src/client-rust/ws.rs +0 -167
  899. package/src/codegen-go-cli.ts +0 -1066
  900. package/src/codegen-go.ts +0 -970
  901. package/src/codegen-hash.ts +0 -8
  902. package/src/codegen-ir.ts +0 -812
  903. package/src/codegen-lang.ts +0 -517
  904. package/src/codegen-load.ts +0 -150
  905. package/src/codegen-loaders.ts +0 -50
  906. package/src/codegen-mcp.ts +0 -445
  907. package/src/codegen-python.ts +0 -916
  908. package/src/codegen-route-tree-intern.ts +0 -198
  909. package/src/codegen-rust.ts +0 -1402
  910. package/src/codegen-sanitize.ts +0 -57
  911. package/src/codegen-schema-naming.ts +0 -165
  912. package/src/codegen-sdk-model.ts +0 -228
  913. package/src/codegen.ts +0 -5089
  914. package/src/context.ts +0 -325
  915. package/src/cookie-sign.ts +0 -119
  916. package/src/cookie.ts +0 -143
  917. package/src/cors.ts +0 -95
  918. package/src/crypto.ts +0 -38
  919. package/src/csrf.ts +0 -86
  920. package/src/curl-logger.ts +0 -258
  921. package/src/detect-runtime.ts +0 -17
  922. package/src/dict.ts +0 -12
  923. package/src/error.ts +0 -55
  924. package/src/errors.ts +0 -85
  925. package/src/etag.ts +0 -97
  926. package/src/feature-detect.ts +0 -147
  927. package/src/feature-load.ts +0 -23
  928. package/src/feature-slots.ts +0 -70
  929. package/src/fetch-request.ts +0 -13
  930. package/src/gen-process.ts +0 -42
  931. package/src/gen-write.ts +0 -127
  932. package/src/glob.ts +0 -109
  933. package/src/go-type-emitter.ts +0 -660
  934. package/src/honey-response.ts +0 -379
  935. package/src/i18n-slot.ts +0 -30
  936. package/src/i18n.ts +0 -300
  937. package/src/index.ts +0 -3829
  938. package/src/init.ts +0 -161
  939. package/src/input.ts +0 -8
  940. package/src/invalidate-check.ts +0 -205
  941. package/src/invoke-user.ts +0 -95
  942. package/src/ip-restrict.ts +0 -79
  943. package/src/ip.ts +0 -194
  944. package/src/logger.ts +0 -178
  945. package/src/media-type.ts +0 -104
  946. package/src/meta-spec-merge.ts +0 -80
  947. package/src/meta-spec.ts +0 -718
  948. package/src/middleware.ts +0 -331
  949. package/src/node-request.ts +0 -431
  950. package/src/node.ts +0 -454
  951. package/src/openapi/collect.ts +0 -50
  952. package/src/openapi/docs-page.ts +0 -89
  953. package/src/openapi/document.ts +0 -893
  954. package/src/openapi/json-schema-slot.ts +0 -53
  955. package/src/openapi/register.ts +0 -23
  956. package/src/openapi/scalar.ts +0 -34
  957. package/src/openapi/serve.ts +0 -39
  958. package/src/openapi/spec-factory.ts +0 -100
  959. package/src/openapi/spec.ts +0 -74
  960. package/src/openapi/swagger.ts +0 -35
  961. package/src/pattern.ts +0 -245
  962. package/src/peer.ts +0 -53
  963. package/src/plugin.ts +0 -864
  964. package/src/powered-by.ts +0 -18
  965. package/src/pretty-json.ts +0 -56
  966. package/src/producer-stream.ts +0 -296
  967. package/src/proxy.ts +0 -370
  968. package/src/python-type-emitter.ts +0 -181
  969. package/src/realtime/bus.ts +0 -140
  970. package/src/realtime/register.ts +0 -13
  971. package/src/realtime/route.ts +0 -153
  972. package/src/realtime/server.ts +0 -298
  973. package/src/request-id.ts +0 -32
  974. package/src/request-limits.ts +0 -2
  975. package/src/request-path.ts +0 -165
  976. package/src/request-to-curl.ts +0 -52
  977. package/src/response.ts +0 -411
  978. package/src/rust-type-emitter.ts +0 -548
  979. package/src/secure-headers.ts +0 -74
  980. package/src/serve-register.ts +0 -12
  981. package/src/serve-slot.ts +0 -58
  982. package/src/serve.ts +0 -220
  983. package/src/server-timing.ts +0 -71
  984. package/src/static.ts +0 -112
  985. package/src/telemetry/otel.ts +0 -156
  986. package/src/testing.ts +0 -167
  987. package/src/timeout.ts +0 -45
  988. package/src/tree.ts +0 -554
  989. package/src/trust.ts +0 -117
  990. package/src/ts-type-emitter.ts +0 -168
  991. package/src/type-emitter.ts +0 -760
  992. package/src/type-extractor.ts +0 -855
  993. package/src/types.ts +0 -756
  994. package/src/validation.ts +0 -413
  995. package/src/with-headers.ts +0 -45
  996. package/src/ws/bun.ts +0 -120
  997. package/src/ws/cloudflare.ts +0 -192
  998. package/src/ws/deno.ts +0 -188
  999. package/src/ws/node.ts +0 -240
  1000. package/src/ws/session.ts +0 -73
  1001. package/src/ws/shared.ts +0 -140
  1002. package/src/ws-origin.ts +0 -53
  1003. package/src/yaml.ts +0 -103
@@ -1,819 +0,0 @@
1
- import { existsSync, readFileSync } from "node:fs";
2
- import { dirname, join, relative, resolve, sep } from "node:path";
3
- import { canonical, expandOptional, joinPatterns, parsePattern } from "./pattern.js";
4
- import { quoteKey } from "./type-emitter.js";
5
- /**
6
- * The tsconfig that governs the entry: the nearest one walking up, but never past the
7
- * project root (the nearest directory with a package.json) — a stray tsconfig in a parent
8
- * directory or the home folder is not this project's.
9
- */
10
- function findTsConfig(fromPath) {
11
- let dir = dirname(resolve(fromPath));
12
- let prev = "";
13
- while (dir !== prev) {
14
- const p = resolve(dir, "tsconfig.json");
15
- if (existsSync(p))
16
- return p;
17
- if (existsSync(resolve(dir, "package.json")))
18
- return undefined;
19
- prev = dir;
20
- dir = dirname(dir);
21
- }
22
- return undefined;
23
- }
24
- /* ts-morph bundles a different TS version — structurally identical at runtime */
25
- function bridge(value) {
26
- return value;
27
- }
28
- /**
29
- * Load the entry and find the app export: `export const app = …`, any other exported
30
- * declaration of that name, or `export default honey()` for `exportName: "default"`.
31
- */
32
- async function loadEntry(options) {
33
- const { Project, ts: tsLib } = await import("ts-morph");
34
- const tsConfigFilePath = options.tsconfigPath ?? findTsConfig(options.entryPath);
35
- const project = new Project({ skipAddingFilesFromTsConfig: true, tsConfigFilePath });
36
- project.addSourceFilesAtPaths(options.entryPath);
37
- project.resolveSourceFileDependencies();
38
- const sourceFile = project.getSourceFileOrThrow(options.entryPath);
39
- const declarations = sourceFile.getExportedDeclarations().get(options.exportName);
40
- const decl = declarations?.[0] ?? sourceFile.getVariableDeclaration(options.exportName);
41
- if (!decl) {
42
- throw new Error(`Export "${options.exportName}" not found in ${options.entryPath}`);
43
- }
44
- const checker = bridge(project.getTypeChecker().compilerObject);
45
- const node = bridge(decl.compilerNode);
46
- const compiler = bridge(tsLib);
47
- /* `export default <expr>` declares an ExportAssignment; its type is the expression's */
48
- const target = compiler.isExportAssignment(node) ? node.expression : node;
49
- const appType = checker.getTypeAtLocation(target);
50
- return { appType, checker, compiler, node: target, project, sourceFile };
51
- }
52
- /**
53
- * Uses ts-morph to extract the middleware context type from a Honey app export.
54
- * Returns inline type strings so the gen file has zero imports from user code.
55
- */
56
- export async function extractBaseCtx(options) {
57
- const { appType, checker, compiler, node } = await loadEntry(options);
58
- const ser = new Serializer(checker, node, compiler);
59
- const typeOfProp = (name) => {
60
- const sym = appType.getProperty(name);
61
- return sym ? checker.getTypeOfSymbolAtLocation(sym, node) : null;
62
- };
63
- /* extract $env */
64
- const envT = typeOfProp("$env");
65
- const envType = envT ? ser.serialize(envT) : "Record<string, unknown>";
66
- /* extract $ctx and isolate middleware additions */
67
- const ctxType = typeOfProp("$ctx");
68
- if (!ctxType) {
69
- throw new Error(`Export "${options.exportName}" has no $ctx — not a Honey instance`);
70
- }
71
- const middlewareType = propsType(extractMiddlewareProps(ctxType, ser));
72
- /* extract $taps — typed tap payloads declared via .taps<T>() */
73
- let tapsType = null;
74
- const tapsT = typeOfProp("$taps");
75
- if (tapsT) {
76
- const tapsStr = ser.serialize(tapsT);
77
- if (tapsStr !== "{}" && tapsStr !== "Record<string, unknown>")
78
- tapsType = tapsStr;
79
- }
80
- const sanitize = (s) => sanitizeImportPaths(s, options.outputDir);
81
- return {
82
- envType: sanitize(envType),
83
- middlewareType: middlewareType ? sanitize(middlewareType) : null,
84
- tapsType: tapsType ? sanitize(tapsType) : null,
85
- };
86
- }
87
- /* properties that live on HoneyContext — everything else is middleware-added */
88
- const HONEY_CTX_PROPS = new Set([
89
- "background",
90
- "cookies",
91
- "env",
92
- "errors",
93
- "executionCtx",
94
- "headers",
95
- "meta",
96
- "params",
97
- "path",
98
- "req",
99
- "res",
100
- "routePattern",
101
- "search",
102
- "searchAll",
103
- "tap",
104
- ]);
105
- function propsType(props) {
106
- if (props.length === 0)
107
- return null;
108
- return `{ ${props.map((p) => `${quoteKey(p.name)}${p.opt ? "?" : ""}: ${p.type}`).join("; ")} }`;
109
- }
110
- /** Is a property name something a type literal can spell and a consumer can see? */
111
- function isPublicName(name) {
112
- /* `#secret` private fields surface as `__#123@#secret` — never part of a type */
113
- return !name.startsWith("#") && !name.startsWith("__#");
114
- }
115
- function extractMiddlewareProps(ctxType, ser) {
116
- const { checker, compiler, node } = ser;
117
- const mwProps = ctxType.getProperties().filter((p) => {
118
- const name = p.getName();
119
- if (HONEY_CTX_PROPS.has(name))
120
- return false;
121
- /* skip internal/private properties (underscore-prefixed) */
122
- if (name.startsWith("_"))
123
- return false;
124
- return isPublicName(name);
125
- });
126
- return mwProps.map((p) => {
127
- const t = checker.getTypeOfSymbolAtLocation(p, p.valueDeclaration ?? node);
128
- const opt = (p.flags & compiler.SymbolFlags.Optional) !== 0;
129
- /* 1. try declaration-site TypeReference (explicit annotation on property or variable) */
130
- let typeStr;
131
- const mwDecl = p.valueDeclaration ?? p.declarations?.[0];
132
- typeStr = ser.refFromDeclaration(mwDecl);
133
- /* 1b. shorthand property — trace to the underlying variable's type annotation */
134
- if (!typeStr && mwDecl && compiler.isShorthandPropertyAssignment(mwDecl)) {
135
- const varSym = checker.getShorthandAssignmentValueSymbol(mwDecl);
136
- if (varSym) {
137
- const varDecl = varSym.valueDeclaration ?? varSym.declarations?.[0];
138
- typeStr = ser.refFromDeclaration(varDecl);
139
- /* 1c. destructured binding (e.g. const { shardDb } = openShardSession(...))
140
- * — trace through the function return type to find the original type annotation */
141
- if (!typeStr && varDecl && compiler.isBindingElement(varDecl)) {
142
- let parent = varDecl.parent;
143
- while (parent && !compiler.isVariableDeclaration(parent))
144
- parent = parent.parent;
145
- if (parent && compiler.isVariableDeclaration(parent)) {
146
- const initializer = parent.initializer;
147
- if (initializer) {
148
- const initType = checker.getTypeAtLocation(initializer);
149
- const retProp = initType.getProperty(p.getName());
150
- if (retProp?.valueDeclaration && compiler.isShorthandPropertyAssignment(retProp.valueDeclaration)) {
151
- const innerSym = checker.getShorthandAssignmentValueSymbol(retProp.valueDeclaration);
152
- if (innerSym) {
153
- const innerDecl = innerSym.valueDeclaration ?? innerSym.declarations?.[0];
154
- typeStr = ser.refFromDeclaration(innerDecl);
155
- }
156
- }
157
- }
158
- }
159
- }
160
- }
161
- }
162
- /* 2. a named type as an import() reference; 3. structural */
163
- typeStr ??= ser.asRef(t) ?? ser.serialize(t);
164
- return { name: p.getName(), opt, type: typeStr };
165
- });
166
- }
167
- /** Check if a symbol is exported from its source file */
168
- function isExportedFromFile(sym, sf, checker) {
169
- /* .d.ts module types are always accessible */
170
- if (sf.isDeclarationFile)
171
- return true;
172
- const moduleSym = checker.getSymbolAtLocation(sf);
173
- if (!moduleSym)
174
- return false;
175
- const exports = checker.getExportsOfModule(moduleSym);
176
- return exports.some((e) => e.getName() === sym.getName());
177
- }
178
- /** Lib types every program has in scope; their names are written as is, never imported. */
179
- function isLibFile(fileName) {
180
- return /(?:^|[\\/])lib\.[\w.-]*\.d\.ts$/.test(fileName) || /[\\/]typescript[\\/]lib[\\/]/.test(fileName);
181
- }
182
- /**
183
- * TypeScript types → type source text.
184
- *
185
- * Named types become `import("…").Name<Args>` references when the declaring module exports
186
- * them; everything else is written structurally. The structural writer is precise about the
187
- * things a reader relies on: optional and rest parameters, generic signatures, tuple rest and
188
- * optional elements, literal types (quoted), boolean literals, quoted keys, and precedence
189
- * (`(() => void)[]`, `(A | B) & C`). A type it is still expanding when it meets itself again
190
- * is written as `unknown` there, never expanded without end.
191
- */
192
- class Serializer {
193
- checker;
194
- compiler;
195
- node;
196
- #active = new Set();
197
- /* type parameters of the signatures being written: inside them a parameter keeps its name */
198
- #bound = new Set();
199
- constructor(checker, node, compiler) {
200
- this.checker = checker;
201
- this.node = node;
202
- this.compiler = compiler;
203
- }
204
- /** An `import()` reference with type arguments for an annotation like `x: Foo<Bar>`. */
205
- refFromDeclaration(decl) {
206
- const { checker, compiler } = this;
207
- if (!decl)
208
- return undefined;
209
- const typeRef = decl.type;
210
- if (!typeRef || !compiler.isTypeReferenceNode(typeRef))
211
- return undefined;
212
- let refSym = checker.getSymbolAtLocation(typeRef.typeName);
213
- while (refSym && refSym.flags & compiler.SymbolFlags.Alias)
214
- refSym = checker.getAliasedSymbol(refSym);
215
- if (!refSym?.declarations?.length)
216
- return undefined;
217
- const srcFile = refSym.declarations[0].getSourceFile();
218
- if (isLibFile(srcFile.fileName))
219
- return undefined;
220
- if (!isExportedFromFile(refSym, srcFile, checker))
221
- return undefined;
222
- const args = typeRef.typeArguments?.map((a) => {
223
- const t = checker.getTypeFromTypeNode(a);
224
- return this.asRef(t) ?? this.serialize(t);
225
- });
226
- const argText = args && args.length > 0 ? `<${args.join(", ")}>` : "";
227
- return `import("${srcFile.fileName}").${refSym.getName()}${argText}`;
228
- }
229
- /**
230
- * `import("path").TypeName<Args>` for a named type whose module exports it, else null.
231
- * Globals (Promise, Map, …) are left to `serialize`.
232
- */
233
- asRef(type, depth = 0) {
234
- const { checker, compiler } = this;
235
- if (depth > 6)
236
- return null;
237
- /* union with never members (from intersection narrowing) — simplify first */
238
- if (type.isUnion()) {
239
- const nonNever = type.types.filter((t) => !(t.flags & compiler.TypeFlags.Never));
240
- if (nonNever.length === 1)
241
- return this.asRef(nonNever[0], depth);
242
- }
243
- const sym = type.aliasSymbol ?? type.getSymbol();
244
- if (!sym)
245
- return null;
246
- const name = sym.getName();
247
- if (!name || name.startsWith("__") || name === "Object")
248
- return null;
249
- const decls = sym.declarations;
250
- if (!decls?.length)
251
- return null;
252
- const sf = decls[0].getSourceFile();
253
- if (isLibFile(sf.fileName))
254
- return null;
255
- const named = (sym.flags &
256
- (compiler.SymbolFlags.TypeAlias |
257
- compiler.SymbolFlags.Interface |
258
- compiler.SymbolFlags.Class |
259
- compiler.SymbolFlags.Enum)) !==
260
- 0;
261
- /* only reference .d.ts symbols or explicitly declared named types from .ts files */
262
- if (!sf.isDeclarationFile && !named)
263
- return null;
264
- const typeArgs = type.aliasSymbol ? type.aliasTypeArguments : type.typeArguments;
265
- /* a class or interface reference carries its `this` type as a trailing argument */
266
- const declared = sym.declarations?.[0];
267
- const paramCount = declared && "typeParameters" in declared
268
- ? (declared.typeParameters?.length ?? 0)
269
- : (typeArgs?.length ?? 0);
270
- const args = (typeArgs ?? []).slice(0, paramCount);
271
- const withArgs = (ref) => args.length > 0
272
- ? `${ref}<${args.map((arg) => this.asRef(arg, depth + 1) ?? this.serialize(arg)).join(", ")}>`
273
- : ref;
274
- /* a global type (an ambient script such as wrangler's worker-configuration.d.ts, or
275
- * `declare global`) is in scope wherever the app compiles: write its name. Expanding it
276
- * loses overloads and generics, and the copy is not assignable back to the original. */
277
- if (named) {
278
- const globalName = this.#globalName(sym, decls[0]);
279
- if (globalName !== null)
280
- return withArgs(globalName);
281
- }
282
- /* any other ambient script declaration has no import() path */
283
- if (sf.isDeclarationFile && !sf.externalModuleIndicator) {
284
- return null;
285
- }
286
- /* skip non-exported symbols — import() on them resolves to `any` */
287
- if (!isExportedFromFile(sym, sf, checker))
288
- return null;
289
- return withArgs(`import("${sf.fileName}").${name}`);
290
- }
291
- /** The name a global declaration is reachable by (`Cloudflare.Env`), or null if it is module-scoped. */
292
- #globalName(sym, decl) {
293
- const { compiler } = this;
294
- let global = false;
295
- for (let n = decl.parent; n; n = n.parent) {
296
- if (compiler.isModuleDeclaration(n) && n.flags & compiler.NodeFlags.GlobalAugmentation) {
297
- global = true;
298
- break;
299
- }
300
- if (compiler.isSourceFile(n)) {
301
- global = !n.externalModuleIndicator;
302
- break;
303
- }
304
- }
305
- if (!global)
306
- return null;
307
- /* a `declare global` member is qualified as `global.Name`; in scope it is `Name` */
308
- const name = this.checker.getFullyQualifiedName(sym).replace(/^global\./, "");
309
- return /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*$/.test(name) ? name : null;
310
- }
311
- serialize(type) {
312
- if (this.#active.has(type))
313
- return "unknown";
314
- this.#active.add(type);
315
- try {
316
- return this.#serialize(type);
317
- }
318
- finally {
319
- this.#active.delete(type);
320
- }
321
- }
322
- #serialize(type) {
323
- const { checker, compiler, node } = this;
324
- const F = compiler.TypeFlags;
325
- const next = (t) => this.serialize(t);
326
- /* an enum is nominal: keep its name when it can be referenced */
327
- const enumSym = type.getSymbol();
328
- if (enumSym && enumSym.flags & compiler.SymbolFlags.Enum) {
329
- const ref = this.asRef(type);
330
- if (ref)
331
- return ref;
332
- }
333
- /* primitives */
334
- if (type.flags & F.String)
335
- return "string";
336
- if (type.flags & F.Number)
337
- return "number";
338
- if (type.flags & F.Boolean)
339
- return "boolean";
340
- if (type.flags & F.BigInt)
341
- return "bigint";
342
- if (type.flags & F.ESSymbol)
343
- return "symbol";
344
- if (type.flags & F.UniqueESSymbol)
345
- return "symbol";
346
- if (type.flags & F.Void)
347
- return "void";
348
- if (type.flags & F.Undefined)
349
- return "undefined";
350
- if (type.flags & F.Null)
351
- return "null";
352
- if (type.flags & F.Never)
353
- return "never";
354
- if (type.flags & F.Unknown)
355
- return "unknown";
356
- if (type.flags & F.Any)
357
- return "unknown";
358
- if (type.flags & F.NonPrimitive)
359
- return "object";
360
- /* literals */
361
- if (type.isStringLiteral())
362
- return JSON.stringify(type.value);
363
- if (type.isNumberLiteral())
364
- return `${type.value}`;
365
- if (type.flags & F.BigIntLiteral) {
366
- const v = type.value;
367
- return `${v.negative ? "-" : ""}${v.base10Value}n`;
368
- }
369
- if (type.flags & F.BooleanLiteral)
370
- return checker.typeToString(type);
371
- if (type.flags & F.TemplateLiteral)
372
- return "string";
373
- /* a type parameter: by name inside the signature that declares it, else its constraint or unknown */
374
- if (type.flags & F.TypeParameter) {
375
- if (type.symbol && this.#bound.has(type.symbol))
376
- return type.symbol.getName();
377
- const constraint = checker.getBaseConstraintOfType(type);
378
- return constraint && constraint !== type ? next(constraint) : "unknown";
379
- }
380
- /* union */
381
- if (type.isUnion())
382
- return unionText(type.types.map(next));
383
- /* intersection */
384
- if (type.isIntersection())
385
- return intersectionText(type.types.map(next));
386
- /* array */
387
- if (checker.isArrayType(type)) {
388
- const args = checker.getTypeArguments(type);
389
- const readonlyArray = type.getSymbol()?.getName() === "ReadonlyArray";
390
- const el = args.length > 0 ? arrayText(next(args[0])) : "unknown[]";
391
- return readonlyArray ? `readonly ${el}` : el;
392
- }
393
- /* tuple — rest and optional elements kept */
394
- if (checker.isTupleType(type)) {
395
- const ref = type;
396
- const args = checker.getTypeArguments(ref);
397
- const target = ref.target;
398
- const parts = args.map((arg, i) => {
399
- const flags = target.elementFlags?.[i] ?? compiler.ElementFlags.Required;
400
- if (flags & compiler.ElementFlags.Rest)
401
- return `...${arrayText(next(arg))}`;
402
- if (flags & compiler.ElementFlags.Variadic)
403
- return `...${next(arg)}`;
404
- if (flags & compiler.ElementFlags.Optional)
405
- return `${next(arg)}?`;
406
- return next(arg);
407
- });
408
- return `${target.readonly ? "readonly " : ""}[${parts.join(", ")}]`;
409
- }
410
- /* function (pure callable, no data properties) */
411
- const sigs = type.getCallSignatures();
412
- if (sigs.length > 0 && type.getProperties().length === 0) {
413
- const parts = sigs.map((sig) => this.#signature(sig));
414
- return parts.length === 1 ? parts[0] : parts.map((p) => `(${p})`).join(" & ");
415
- }
416
- /* well-known globals — keep name, serialize type args */
417
- const sym = type.getSymbol();
418
- if (sym) {
419
- const name = sym.getName();
420
- const decl = sym.declarations?.[0];
421
- if (decl && isLibFile(decl.getSourceFile().fileName) && name !== "Object" && !name.startsWith("__")) {
422
- const args = type.typeArguments ?? [];
423
- const declaredParams = decl.typeParameters?.length ?? args.length;
424
- const kept = args.slice(0, declaredParams);
425
- return kept.length > 0 ? `${name}<${kept.map(next).join(", ")}>` : name;
426
- }
427
- /* named types — prefer import() reference over structural expansion */
428
- if (name && !name.startsWith("__") && name !== "Object") {
429
- const ref = this.asRef(type);
430
- if (ref)
431
- return ref;
432
- }
433
- }
434
- const aliasRef = type.aliasSymbol ? this.asRef(type) : null;
435
- if (aliasRef)
436
- return aliasRef;
437
- /* Record<string, V> — index signature only */
438
- const stringIdx = type.getStringIndexType();
439
- if (stringIdx && type.getProperties().length === 0) {
440
- return `Record<string, ${next(stringIdx)}>`;
441
- }
442
- /* object — expand to structural form */
443
- const props = type.getProperties().filter((p) => isPublicName(p.getName()));
444
- const entries = [];
445
- for (const p of props) {
446
- const decls = p.getDeclarations();
447
- if (decls?.length) {
448
- const flags = compiler.getCombinedModifierFlags(decls[0]);
449
- if (flags & (compiler.ModifierFlags.Private | compiler.ModifierFlags.Protected))
450
- continue;
451
- }
452
- const pt = checker.getTypeOfSymbolAtLocation(p, decls?.[0] ?? node);
453
- const opt = (p.flags & compiler.SymbolFlags.Optional) !== 0;
454
- const ro = decls?.some((d) => (compiler.getCombinedModifierFlags(d) & compiler.ModifierFlags.Readonly) !== 0) ?? false;
455
- entries.push(`${ro ? "readonly " : ""}${quoteKey(p.getName())}${opt ? "?" : ""}: ${next(pt)}`);
456
- }
457
- if (stringIdx)
458
- entries.push(`[key: string]: ${next(stringIdx)}`);
459
- for (const sig of sigs)
460
- entries.push(this.#signature(sig, true));
461
- if (entries.length > 0)
462
- return `{ ${entries.join("; ")} }`;
463
- if (props.length === 0)
464
- return "{}";
465
- return "unknown";
466
- }
467
- /** `<T extends X>(a: A, b?: B, ...rest: C[]) => R`, or the call-signature member form */
468
- #signature(sig, member = false) {
469
- const typeParams = sig.getTypeParameters() ?? [];
470
- const added = typeParams.map((t) => t.symbol).filter((s) => s !== undefined && !this.#bound.has(s));
471
- for (const s of added)
472
- this.#bound.add(s);
473
- try {
474
- return this.#signatureText(sig, typeParams, member);
475
- }
476
- finally {
477
- for (const s of added)
478
- this.#bound.delete(s);
479
- }
480
- }
481
- #signatureText(sig, typeParams, member) {
482
- const { checker, compiler, node } = this;
483
- const tp = typeParams.length > 0
484
- ? `<${typeParams
485
- .map((t) => {
486
- const c = t.getConstraint();
487
- return `${t.symbol.getName()}${c ? ` extends ${this.#typeParamText(c)}` : ""}`;
488
- })
489
- .join(", ")}>`
490
- : "";
491
- const params = sig.getParameters().map((p) => {
492
- const pt = checker.getTypeOfSymbolAtLocation(p, p.valueDeclaration ?? node);
493
- const decl = p.valueDeclaration;
494
- const param = decl && compiler.isParameter(decl) ? decl : undefined;
495
- const isRest = param?.dotDotDotToken !== undefined;
496
- const optional = !isRest && param !== undefined && checker.isOptionalParameter(param);
497
- /* an optional parameter's type carries `| undefined`; `?` already says so */
498
- const text = optional ? this.#typeParamText(checker.getNonNullableType(pt)) : this.#typeParamText(pt);
499
- return `${isRest ? "..." : ""}${p.getName()}${optional ? "?" : ""}: ${text}`;
500
- });
501
- const ret = this.#typeParamText(checker.getReturnTypeOfSignature(sig));
502
- return member ? `${tp}(${params.join(", ")}): ${ret}` : `${tp}(${params.join(", ")}) => ${ret}`;
503
- }
504
- /** A type inside a signature: a bare type parameter stays by name, bound by the signature. */
505
- #typeParamText(t) {
506
- if (t.flags & this.compiler.TypeFlags.TypeParameter)
507
- return t.symbol.getName();
508
- return this.asRef(t) ?? this.serialize(t);
509
- }
510
- }
511
- /**
512
- * Does `type` contain `token` outside every bracket and string? Used to parenthesize only
513
- * where precedence needs it.
514
- */
515
- function hasTopLevel(type, token) {
516
- let depth = 0;
517
- let quote = null;
518
- for (let i = 0; i < type.length; i++) {
519
- const c = type[i];
520
- if (quote !== null) {
521
- if (c === "\\")
522
- i++;
523
- else if (c === quote)
524
- quote = null;
525
- continue;
526
- }
527
- if (c === '"' || c === "'" || c === "`")
528
- quote = c;
529
- else if (c === "(" || c === "{" || c === "[" || c === "<")
530
- depth++;
531
- else if (c === ")" || c === "}" || c === "]" || (c === ">" && type[i - 1] !== "="))
532
- depth--;
533
- else if (depth === 0 && type.startsWith(token, i))
534
- return true;
535
- }
536
- return false;
537
- }
538
- function arrayText(el) {
539
- return hasTopLevel(el, "|") || hasTopLevel(el, "&") || hasTopLevel(el, "=>") || el.startsWith("readonly ")
540
- ? `(${el})[]`
541
- : `${el}[]`;
542
- }
543
- function unionText(parts) {
544
- return [...new Set(parts)].map((p) => (hasTopLevel(p, "=>") ? `(${p})` : p)).join(" | ");
545
- }
546
- function intersectionText(parts) {
547
- return parts.map((p) => (hasTopLevel(p, "|") || hasTopLevel(p, "=>") ? `(${p})` : p)).join(" & ");
548
- }
549
- const packageCache = new Map();
550
- function nearestPackage(fromFile) {
551
- let dir = dirname(fromFile);
552
- const visited = [];
553
- let found = null;
554
- let prev = "";
555
- while (dir !== prev) {
556
- const cached = packageCache.get(dir);
557
- if (cached !== undefined) {
558
- found = cached;
559
- break;
560
- }
561
- visited.push(dir);
562
- const file = join(dir, "package.json");
563
- if (existsSync(file)) {
564
- try {
565
- const json = JSON.parse(readFileSync(file, "utf8"));
566
- /* a package.json without a name (a "type": "module" marker) is not a package boundary */
567
- if (typeof json.name === "string") {
568
- found = { dir, json };
569
- break;
570
- }
571
- }
572
- catch {
573
- /* unreadable — keep walking */
574
- }
575
- }
576
- prev = dir;
577
- dir = dirname(dir);
578
- }
579
- for (const d of visited)
580
- packageCache.set(d, found);
581
- return found;
582
- }
583
- /** Every file an `exports` value can point at, with the subpath that names it. */
584
- function exportTargets(exports) {
585
- const out = [];
586
- const collect = (subpath, value) => {
587
- if (typeof value === "string")
588
- out.push({ subpath, target: value });
589
- else if (Array.isArray(value))
590
- for (const v of value)
591
- collect(subpath, v);
592
- else if (value !== null && typeof value === "object") {
593
- for (const v of Object.values(value))
594
- collect(subpath, v);
595
- }
596
- };
597
- if (typeof exports === "string" || Array.isArray(exports))
598
- collect(".", exports);
599
- else if (exports !== null && typeof exports === "object") {
600
- const entries = Object.entries(exports);
601
- if (entries.length > 0 && entries.every(([k]) => !k.startsWith(".")))
602
- collect(".", exports);
603
- else
604
- for (const [k, v] of entries)
605
- collect(k, v);
606
- }
607
- return out;
608
- }
609
- function stripTypeExtension(path) {
610
- return path
611
- .replace(/\.d\.[mc]?ts$/, "")
612
- .replace(/\.[mc]?tsx?$/, "")
613
- .replace(/\.[mc]?js$/, "");
614
- }
615
- /** `@types/foo` types the `foo` package; `@types/scope__name` types `@scope/name`. */
616
- function typedPackageName(name) {
617
- if (!name.startsWith("@types/"))
618
- return name;
619
- const bare = name.slice("@types/".length);
620
- return bare.includes("__") ? `@${bare.replace("__", "/")}` : bare;
621
- }
622
- /**
623
- * The specifier a generated file should use to import `filePath`.
624
- *
625
- * A file of another package is named through that package — its `exports` subpath when one
626
- * points at the file (any condition: `types`, `default`, or a source condition), its `types`
627
- * entry, or (no `exports` map) its path without extension; an `@types` package by the package it
628
- * types. A file of the output's own package is a relative path. Lib files never get here.
629
- */
630
- function moduleSpecifier(filePath, outputDir) {
631
- const pkg = nearestPackage(filePath);
632
- const ownPkg = outputDir ? nearestPackage(join(outputDir, "_")) : null;
633
- const relativeSpecifier = () => {
634
- if (!outputDir)
635
- return filePath;
636
- let rel = relative(outputDir, filePath).split(sep).join("/");
637
- if (!rel.startsWith("."))
638
- rel = `./${rel}`;
639
- return rel;
640
- };
641
- if (!pkg || (ownPkg && pkg.dir === ownPkg.dir))
642
- return relativeSpecifier();
643
- const name = typedPackageName(String(pkg.json.name));
644
- const rel = `./${relative(pkg.dir, filePath).split(sep).join("/")}`;
645
- if (pkg.json.exports !== undefined) {
646
- const match = exportTargets(pkg.json.exports).find((e) => e.target === rel || stripTypeExtension(e.target) === stripTypeExtension(rel));
647
- if (match)
648
- return match.subpath === "." ? name : `${name}/${match.subpath.replace(/^\.\//, "")}`;
649
- /* the package does not export this file — a path into it would not resolve */
650
- return relativeSpecifier();
651
- }
652
- const typesEntry = pkg.json.types ?? pkg.json.typings;
653
- if (typeof typesEntry === "string" &&
654
- stripTypeExtension(`./${typesEntry.replace(/^\.\//, "")}`) === stripTypeExtension(rel)) {
655
- return name;
656
- }
657
- const sub = stripTypeExtension(rel.slice(2)).replace(/\/index$/, "");
658
- return sub === "index" || sub === "" ? name : `${name}/${sub}`;
659
- }
660
- /**
661
- * Rewrite absolute `import("…")` paths into resolvable module specifiers, and drop the
662
- * `import()` around lib types (`Date`, `Promise`), which are global.
663
- */
664
- function sanitizeImportPaths(str, outputDir) {
665
- return str.replace(/import\("([^"]+)"\)\./g, (_match, filePath) => {
666
- if (isLibFile(filePath))
667
- return "";
668
- return `import("${moduleSpecifier(filePath, outputDir)}").`;
669
- });
670
- }
671
- const HTTP_METHODS = new Set(["all", "delete", "get", "head", "options", "patch", "post", "put"]);
672
- /**
673
- * Extracts base ctx and per-route middleware additions from sub-chains.
674
- *
675
- * Every source file of the program is scanned for HTTP method calls (`.get()`, `.post()`, …)
676
- * on a Honey instance. A route is keyed by its full path — the receiver's `$basePath` type
677
- * joined with the literal path, exactly as the router registers it — so `v1.get("/items")`
678
- * and `pub.get("/items")` never share an entry. A receiver whose base path is not a literal
679
- * type cannot be keyed and is skipped: a route without an entry gets the base ctx, never
680
- * another route's.
681
- */
682
- export async function extractChainTypes(options) {
683
- const { appType, checker, compiler, node: baseNode, project } = await loadEntry(options);
684
- const ser = new Serializer(checker, baseNode, compiler);
685
- function getCtxType(tsType, locationNode) {
686
- const sym = tsType.getProperty("$ctx");
687
- if (!sym)
688
- return null;
689
- return checker.getTypeOfSymbolAtLocation(sym, locationNode ?? sym.valueDeclaration ?? baseNode);
690
- }
691
- function basePathOf(tsType, locationNode) {
692
- const sym = tsType.getProperty("$basePath");
693
- if (!sym)
694
- return null;
695
- const t = checker.getTypeOfSymbolAtLocation(sym, locationNode);
696
- return t.isStringLiteral() ? t.value : null;
697
- }
698
- /* extract base ctx */
699
- let envType = "Record<string, unknown>";
700
- const envSym = appType.getProperty("$env");
701
- if (envSym)
702
- envType = ser.serialize(checker.getTypeOfSymbolAtLocation(envSym, baseNode));
703
- const baseCtxType = getCtxType(appType, baseNode);
704
- if (!baseCtxType) {
705
- throw new Error(`Export "${options.exportName}" has no $ctx — not a Honey instance`);
706
- }
707
- const baseMwProps = extractMiddlewareProps(baseCtxType, ser);
708
- const baseMiddlewareType = propsType(baseMwProps);
709
- /* build name→type map for reusing base type references in route middleware */
710
- const basePropTypeByName = new Map();
711
- for (const p of baseMwProps)
712
- basePropTypeByName.set(p.name, p.type);
713
- /* collect base middleware property names for diffing */
714
- const baseMwPropNames = new Set();
715
- for (const p of baseCtxType.getProperties()) {
716
- const name = p.getName();
717
- if (!HONEY_CTX_PROPS.has(name) && !name.startsWith("_"))
718
- baseMwPropNames.add(name);
719
- }
720
- const sanitize = (s) => sanitizeImportPaths(s, options.outputDir);
721
- const routeMiddleware = Object.create(null);
722
- const routeMiddlewareProps = Object.create(null);
723
- function visitNode(node) {
724
- if (compiler.isCallExpression(node) && compiler.isPropertyAccessExpression(node.expression)) {
725
- const methodName = node.expression.name.text;
726
- const pathArg = node.arguments[0];
727
- if (HTTP_METHODS.has(methodName) && pathArg && compiler.isStringLiteralLike(pathArg)) {
728
- const receiverExpr = node.expression.expression;
729
- const receiverType = checker.getTypeAtLocation(receiverExpr);
730
- const ctxType = getCtxType(receiverType, receiverExpr);
731
- const basePath = ctxType ? basePathOf(receiverType, receiverExpr) : null;
732
- if (ctxType && basePath !== null) {
733
- for (const variant of fullPaths(basePath, pathArg.text))
734
- recordRoute(`${methodName} ${variant}`, ctxType);
735
- }
736
- }
737
- }
738
- compiler.forEachChild(node, visitNode);
739
- }
740
- /** The paths the router serves for this registration — an optional last param yields two. */
741
- function fullPaths(basePath, path) {
742
- try {
743
- return expandOptional(parsePattern(joinPatterns(basePath, path))).map((segments) => canonical(segments));
744
- }
745
- catch {
746
- /* a pattern the router would refuse registers nothing */
747
- return [];
748
- }
749
- }
750
- function recordRoute(key, ctxType) {
751
- /* extract extra middleware props by iterating intersection MEMBERS individually.
752
- * This preserves source-level declarations (e.g. ShorthandPropertyAssignment)
753
- * that get lost when extracting from the flattened intersection. */
754
- const extraEntries = [];
755
- const dupeNames = new Set();
756
- const members = ctxType.isIntersection() ? ctxType.types : [ctxType];
757
- for (const member of members) {
758
- for (const rp of extractMiddlewareProps(member, ser)) {
759
- if (baseMwPropNames.has(rp.name))
760
- continue;
761
- if (extraEntries.some((e) => e.name === rp.name)) {
762
- dupeNames.add(rp.name);
763
- continue;
764
- }
765
- extraEntries.push(rp);
766
- }
767
- }
768
- /* a property in several intersection members (e.g. auth narrowed by a later middleware)
769
- * is read from the flattened intersection, so TypeScript computes the intersected type */
770
- for (const dupeName of dupeNames) {
771
- const sym = ctxType.getProperty(dupeName);
772
- if (!sym)
773
- continue;
774
- const t = checker.getTypeOfSymbolAtLocation(sym, sym.valueDeclaration ?? baseNode);
775
- const typeStr = ser.asRef(t) ?? ser.serialize(t);
776
- const idx = extraEntries.findIndex((e) => e.name === dupeName);
777
- if (idx !== -1)
778
- extraEntries[idx] = { ...extraEntries[idx], type: typeStr };
779
- }
780
- if (extraEntries.length === 0)
781
- return;
782
- /* reuse compact base type references when the route has the same property
783
- * (e.g. shardDb: ShardDb from base → reuse import ref instead of structural expansion) */
784
- const entries = extraEntries.map((e) => {
785
- const baseRef = basePropTypeByName.get(e.name);
786
- return baseRef && baseRef.length < e.type.length ? { ...e, type: baseRef } : e;
787
- });
788
- routeMiddleware[key] = sanitize(propsType(entries) ?? "{}");
789
- routeMiddlewareProps[key] = entries.map((e) => ({ name: e.name, opt: e.opt, type: sanitize(e.type) }));
790
- }
791
- /* every source file of the program, not only the entry: routes are often registered in
792
- modules the entry imports */
793
- for (const sf of project.getSourceFiles()) {
794
- const compilerSf = bridge(sf.compilerNode);
795
- if (compilerSf.isDeclarationFile)
796
- continue;
797
- if (/[\\/]node_modules[\\/]/.test(compilerSf.fileName))
798
- continue;
799
- visitNode(compilerSf);
800
- }
801
- /* extract $taps */
802
- let tapsType = null;
803
- const tapsSym = appType.getProperty("$taps");
804
- if (tapsSym) {
805
- const tapsStr = ser.serialize(checker.getTypeOfSymbolAtLocation(tapsSym, baseNode));
806
- if (tapsStr !== "{}" && tapsStr !== "Record<string, unknown>")
807
- tapsType = tapsStr;
808
- }
809
- return {
810
- base: {
811
- envType: sanitize(envType),
812
- middlewareType: baseMiddlewareType ? sanitize(baseMiddlewareType) : null,
813
- tapsType: tapsType ? sanitize(tapsType) : null,
814
- },
815
- routeMiddleware: { ...routeMiddleware },
816
- routeMiddlewareProps: { ...routeMiddlewareProps },
817
- };
818
- }
819
- //# sourceMappingURL=type-extractor.js.map