@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,379 +0,0 @@
1
- /** NodeRequest sets this so HoneyRes can skip `new Response()` on Node. */
2
- export const NODE_OUTBOUND = Symbol.for("honey.nodeOut")
3
-
4
- const HONEY_RESPONSE = Symbol.for("honey.response")
5
-
6
- export function isNodeOutbound(req: Request): boolean {
7
- return (req as unknown as Record<symbol, unknown>)[NODE_OUTBOUND] === true
8
- }
9
-
10
- export function isHoneyResponse(value: unknown): value is HoneyResponse {
11
- return typeof value === "object" && value !== null && HONEY_RESPONSE in value
12
- }
13
-
14
- /**
15
- * Headers view over a plain map. `get`/`has` stay on the record.
16
- * A real `Headers` is built only if something iterates or mutates.
17
- */
18
- export class HoneyOutHeaders {
19
- #map: Record<string, string | string[]>
20
- #native: Headers | null = null
21
-
22
- constructor(map: Record<string, string | string[]>) {
23
- this.#map = map
24
- }
25
-
26
- append(name: string, value: string): void {
27
- this.#ensureNative().append(name, value)
28
- }
29
-
30
- delete(name: string): void {
31
- this.#ensureNative().delete(name)
32
- }
33
-
34
- get(name: string): string | null {
35
- if (this.#native) return this.#native.get(name)
36
- const key = name.toLowerCase()
37
- /* own keys only: `get("constructor")` must not return Object */
38
- if (!Object.hasOwn(this.#map, key)) return null
39
- const raw = this.#map[key]
40
- if (raw === undefined) return null
41
- return Array.isArray(raw) ? raw.join(", ") : raw
42
- }
43
-
44
- getSetCookie(): string[] {
45
- if (this.#native) return this.#native.getSetCookie()
46
- const raw = Object.hasOwn(this.#map, "set-cookie") ? this.#map["set-cookie"] : undefined
47
- if (raw === undefined) return []
48
- return Array.isArray(raw) ? raw : [raw]
49
- }
50
-
51
- has(name: string): boolean {
52
- if (this.#native) return this.#native.has(name)
53
- const key = name.toLowerCase()
54
- return Object.hasOwn(this.#map, key) && this.#map[key] !== undefined
55
- }
56
-
57
- set(name: string, value: string): void {
58
- this.#ensureNative().set(name, value)
59
- }
60
-
61
- forEach(callback: (value: string, key: string, parent: Headers) => void, thisArg?: unknown): void {
62
- this.#ensureNative().forEach(callback, thisArg)
63
- }
64
-
65
- keys(): IterableIterator<string> {
66
- return this.#ensureNative().keys()
67
- }
68
-
69
- values(): IterableIterator<string> {
70
- return this.#ensureNative().values()
71
- }
72
-
73
- entries(): IterableIterator<[string, string]> {
74
- return this.#ensureNative().entries()
75
- }
76
-
77
- [Symbol.iterator](): IterableIterator<[string, string]> {
78
- if (this.#native) return this.#native[Symbol.iterator]()
79
- return iterateRecord(this.#map)
80
- }
81
-
82
- get [Symbol.toStringTag](): string {
83
- return "Headers"
84
- }
85
-
86
- toRecord(): Record<string, string | string[]> {
87
- if (!this.#native) return this.#map
88
- const out: Record<string, string | string[]> = {}
89
- this.#native.forEach((value, key) => {
90
- if (key === "set-cookie") return
91
- out[key] = value
92
- })
93
- const cookies = this.#native.getSetCookie()
94
- if (cookies.length > 0) out["set-cookie"] = cookies
95
- return out
96
- }
97
-
98
- #ensureNative(): Headers {
99
- if (this.#native) return this.#native
100
- const headers = new Headers()
101
- for (const [name, value] of iterateRecord(this.#map)) {
102
- headers.append(name, value)
103
- }
104
- this.#native = headers
105
- return headers
106
- }
107
- }
108
-
109
- function* iterateRecord(map: Record<string, string | string[]>): IterableIterator<[string, string]> {
110
- for (const key in map) {
111
- const value = map[key]
112
- if (Array.isArray(value)) {
113
- for (const item of value) yield [key, item]
114
- } else if (value !== undefined) {
115
- yield [key, value]
116
- }
117
- }
118
- }
119
-
120
- /**
121
- * Response-shaped bag for Node. Avoids `new Response()` until something
122
- * needs a real Fetch body stream (cors/etag wrap, clone).
123
- */
124
- export class HoneyResponse {
125
- readonly [HONEY_RESPONSE] = true
126
- readonly ok: boolean
127
- readonly redirected = false
128
- readonly status: number
129
- readonly statusText: string
130
- readonly type = "default" as ResponseType
131
- readonly url = ""
132
-
133
- #headerMap: Record<string, string | string[]>
134
- #headers: HoneyOutHeaders | null = null
135
- #raw: string | Uint8Array | null
136
- #stream: ReadableStream<Uint8Array> | null | undefined
137
- #bodyUsed = false
138
-
139
- constructor(init: {
140
- headers: Record<string, string | string[]>
141
- raw?: string | Uint8Array | null
142
- status: number
143
- statusText?: string
144
- stream?: ReadableStream<Uint8Array> | null
145
- }) {
146
- this.status = init.status
147
- this.statusText = init.statusText ?? ""
148
- this.ok = init.status >= 200 && init.status < 300
149
- this.#headerMap = init.headers
150
- this.#raw = init.raw === undefined ? null : init.raw
151
- this.#stream = init.stream
152
- }
153
-
154
- get headers(): HoneyOutHeaders {
155
- if (!this.#headers) this.#headers = new HoneyOutHeaders(this.#headerMap)
156
- return this.#headers
157
- }
158
-
159
- get body(): ReadableStream<Uint8Array> | null {
160
- if (this.#stream !== undefined) return this.#stream
161
- if (this.#raw === null) {
162
- this.#stream = null
163
- return null
164
- }
165
- const raw = this.#raw
166
- this.#stream = new ReadableStream({
167
- start(controller) {
168
- controller.enqueue(typeof raw === "string" ? new TextEncoder().encode(raw) : raw)
169
- controller.close()
170
- },
171
- })
172
- return this.#stream
173
- }
174
-
175
- get bodyUsed(): boolean {
176
- return this.#bodyUsed
177
- }
178
-
179
- /** Plain header map for `res.writeHead`. */
180
- get plainHeaders(): Record<string, string | string[]> {
181
- return this.#headers ? this.#headers.toRecord() : this.#headerMap
182
- }
183
-
184
- /** Known-size body for `res.end`. */
185
- get rawBody(): string | Uint8Array | null {
186
- return this.#raw
187
- }
188
-
189
- /** A body is read once, as with Fetch: a second read throws instead of returning nothing. */
190
- #consume(): void {
191
- if (this.#bodyUsed || (this.#stream?.locked ?? false)) {
192
- throw new TypeError("Body has already been used")
193
- }
194
- this.#bodyUsed = true
195
- }
196
-
197
- async arrayBuffer(): Promise<ArrayBuffer> {
198
- this.#consume()
199
- if (this.#raw === null) {
200
- if (this.#stream) return streamToArrayBuffer(this.#stream)
201
- return new ArrayBuffer(0)
202
- }
203
- if (typeof this.#raw === "string") {
204
- const bytes = new TextEncoder().encode(this.#raw)
205
- return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength) as ArrayBuffer
206
- }
207
- return this.#raw.buffer.slice(this.#raw.byteOffset, this.#raw.byteOffset + this.#raw.byteLength) as ArrayBuffer
208
- }
209
-
210
- async blob(): Promise<Blob> {
211
- const buf = await this.arrayBuffer()
212
- return new Blob([buf], { type: this.headers.get("content-type") ?? "" })
213
- }
214
-
215
- async bytes(): Promise<Uint8Array> {
216
- const buf = await this.arrayBuffer()
217
- return new Uint8Array(buf)
218
- }
219
-
220
- clone(): Response {
221
- if (this.#bodyUsed) throw new TypeError("Body has already been used")
222
- let stream = this.#stream
223
- if (stream !== undefined && stream !== null) {
224
- /* tee, keep one branch: the original stays readable */
225
- const [mine, theirs] = stream.tee()
226
- this.#stream = mine
227
- stream = theirs
228
- }
229
- return new HoneyResponse({
230
- headers: { ...this.plainHeaders },
231
- raw: this.#raw,
232
- status: this.status,
233
- statusText: this.statusText,
234
- stream,
235
- }) as unknown as Response
236
- }
237
-
238
- async formData(): Promise<FormData> {
239
- const body = this.body
240
- this.#consume()
241
- return new Response(body, {
242
- headers: this.plainHeaders as HeadersInit,
243
- status: this.status,
244
- }).formData()
245
- }
246
-
247
- async json(): Promise<unknown> {
248
- const text = await this.text()
249
- return text.length === 0 ? null : JSON.parse(text)
250
- }
251
-
252
- async text(): Promise<string> {
253
- this.#consume()
254
- if (this.#raw === null) {
255
- if (this.#stream) return new TextDecoder().decode(await streamToArrayBuffer(this.#stream))
256
- return ""
257
- }
258
- return typeof this.#raw === "string" ? this.#raw : new TextDecoder().decode(this.#raw)
259
- }
260
-
261
- /** Copy this bag with new headers/status/body — keeps the Node `res.end` path. */
262
- derive(init: {
263
- headers?: Record<string, string | string[]> | Headers | HoneyOutHeaders
264
- raw?: string | Uint8Array | null
265
- status?: number
266
- stream?: ReadableStream<Uint8Array> | null
267
- }): HoneyResponse {
268
- return new HoneyResponse({
269
- headers: init.headers === undefined ? { ...this.plainHeaders } : headersInitToRecord(init.headers),
270
- raw: init.raw === undefined ? this.#raw : init.raw,
271
- status: init.status ?? this.status,
272
- statusText: this.statusText,
273
- stream: init.stream === undefined ? this.#stream : init.stream,
274
- })
275
- }
276
- }
277
-
278
- export function createHoneyResponse(init: {
279
- headers: Record<string, string | string[]>
280
- raw?: string | Uint8Array | null
281
- status: number
282
- stream?: ReadableStream<Uint8Array> | null
283
- }): Response {
284
- return new HoneyResponse(init) as unknown as Response
285
- }
286
-
287
- /** Rebuild a response without dropping a HoneyResponse back to `new Response()`. */
288
- export function replaceResponse(
289
- response: Response,
290
- init: {
291
- body?: BodyInit | null
292
- headers?: Headers | HoneyOutHeaders | Record<string, string | string[]>
293
- status?: number
294
- },
295
- ): Response {
296
- /* an upgrade response belongs to the runtime: rebuilding it throws (RangeError) or breaks the socket */
297
- if (response.status === 101) return response
298
- if (isHoneyResponse(response)) {
299
- if (init.body === undefined) {
300
- return response.derive({ headers: init.headers, status: init.status }) as unknown as Response
301
- }
302
- if (typeof init.body === "string" || init.body instanceof Uint8Array) {
303
- return response.derive({
304
- headers: init.headers,
305
- raw: init.body,
306
- status: init.status,
307
- stream: null,
308
- }) as unknown as Response
309
- }
310
- if (init.body instanceof ArrayBuffer) {
311
- return response.derive({
312
- headers: init.headers,
313
- raw: new Uint8Array(init.body),
314
- status: init.status,
315
- stream: null,
316
- }) as unknown as Response
317
- }
318
- if (init.body === null) {
319
- return response.derive({
320
- headers: init.headers,
321
- raw: null,
322
- status: init.status,
323
- stream: null,
324
- }) as unknown as Response
325
- }
326
- }
327
- const status = init.status ?? response.status
328
- return new Response(init.body !== undefined ? init.body : response.body, {
329
- /* left out, the headers carry over: a status change must not drop them */
330
- headers: headersToInit(init.headers ?? response.headers),
331
- status,
332
- statusText: status === response.status ? response.statusText : undefined,
333
- })
334
- }
335
-
336
- function headersToInit(headers: Headers | HoneyOutHeaders | Record<string, string | string[]>): HeadersInit {
337
- if (headers instanceof HoneyOutHeaders) return headers.toRecord() as HeadersInit
338
- if (headers instanceof Headers) return headers
339
- return headers as HeadersInit
340
- }
341
-
342
- function headersInitToRecord(
343
- headers: Record<string, string | string[]> | Headers | HoneyOutHeaders,
344
- ): Record<string, string | string[]> {
345
- if (headers instanceof HoneyOutHeaders) return headers.toRecord()
346
- if (!(headers instanceof Headers) && !("forEach" in headers)) {
347
- return { ...headers }
348
- }
349
- const out: Record<string, string | string[]> = {}
350
- const h = headers as Headers
351
- h.forEach((value, key) => {
352
- if (key === "set-cookie") return
353
- out[key] = value
354
- })
355
- if (typeof h.getSetCookie === "function") {
356
- const cookies = h.getSetCookie()
357
- if (cookies.length > 0) out["set-cookie"] = cookies
358
- }
359
- return out
360
- }
361
-
362
- async function streamToArrayBuffer(stream: ReadableStream<Uint8Array>): Promise<ArrayBuffer> {
363
- const reader = stream.getReader()
364
- const chunks: Uint8Array[] = []
365
- let total = 0
366
- while (true) {
367
- const { done, value } = await reader.read()
368
- if (done) break
369
- chunks.push(value)
370
- total += value.byteLength
371
- }
372
- const out = new Uint8Array(total)
373
- let offset = 0
374
- for (const chunk of chunks) {
375
- out.set(chunk, offset)
376
- offset += chunk.byteLength
377
- }
378
- return out.buffer
379
- }
package/src/i18n-slot.ts DELETED
@@ -1,30 +0,0 @@
1
- import type { HoneyError } from "./error.ts"
2
-
3
- /** The translations `errorI18n()` holds, keyed by locale. */
4
- export type ErrorTranslations = {
5
- errors?: Record<string, Record<string, string>>
6
- fieldNames?: Record<string, Record<string, string>>
7
- }
8
-
9
- export type I18nRuntime = {
10
- interpolate: (template: string, vars: Record<string, unknown>, locale?: string) => string
11
- /** `error` in `locale`, or `error` itself when nothing translates */
12
- translateError: (error: HoneyError, translations: ErrorTranslations, locale: string) => HoneyError
13
- }
14
-
15
- const MISSING = 'Honey.errorI18n() requires `import "@lovrozagar/honey/i18n"` in the app entry.'
16
-
17
- let runtime: I18nRuntime | undefined
18
-
19
- export function registerI18nRuntime(next: I18nRuntime): void {
20
- runtime = next
21
- }
22
-
23
- export function resetI18nRuntime(): void {
24
- runtime = undefined
25
- }
26
-
27
- export function getI18nRuntime(): I18nRuntime {
28
- if (!runtime) throw new Error(MISSING)
29
- return runtime
30
- }
package/src/i18n.ts DELETED
@@ -1,300 +0,0 @@
1
- import { dict } from "./dict.ts"
2
- import { HoneyError } from "./error.ts"
3
- import { registerI18nRuntime, type ErrorTranslations } from "./i18n-slot.ts"
4
- import type { FieldError } from "./types.ts"
5
-
6
- /**
7
- * Extracts {varName} patterns from ICU MessageFormat string literals at the type level.
8
- * "cause" is excluded (reserved by HoneyError).
9
- * Returns {} when no variables found — makes `vars` optional at call site.
10
- */
11
- export type ExtractICUVars<T extends string> = T extends `${string}{${infer Var}}${infer Rest}`
12
- ? Var extends "cause"
13
- ? ExtractICUVars<Rest>
14
- : { [K in Var | keyof ExtractICUVars<Rest>]: string | number }
15
- : {}
16
-
17
- type TranslationMap = Record<string, string>
18
-
19
- export type TranslationSource = (() => Promise<TranslationMap> | TranslationMap) | TranslationMap
20
-
21
- export class TranslationRegistry {
22
- private cache = new Map<string, TranslationMap>()
23
- private sources: Record<string, TranslationSource>
24
-
25
- constructor(sources: Record<string, TranslationSource>) {
26
- this.sources = sources
27
- }
28
-
29
- async get(locale: string): Promise<TranslationMap | undefined> {
30
- if (this.cache.has(locale)) {
31
- return this.cache.get(locale)
32
- }
33
-
34
- const source = Object.hasOwn(this.sources, locale) ? this.sources[locale] : undefined
35
- if (source === undefined) {
36
- return undefined
37
- }
38
-
39
- const map = typeof source === "function" ? await source() : source
40
- this.cache.set(locale, map)
41
- return map
42
- }
43
- }
44
-
45
- /* ---- ICU MessageFormat parser ---- */
46
-
47
- const pluralRulesCache = new Map<string, Intl.PluralRules>()
48
-
49
- /** CLDR plural category for `n` in `locale` ("one", "few", "many", ...); English rules when the locale is unknown. */
50
- function getPluralCategory(n: number, locale?: string): Intl.LDMLPluralRule {
51
- const cacheKey = locale ?? "en"
52
- let rules = pluralRulesCache.get(cacheKey)
53
- if (rules === undefined) {
54
- try {
55
- rules = new Intl.PluralRules(cacheKey)
56
- } catch {
57
- rules = new Intl.PluralRules("en")
58
- }
59
- if (pluralRulesCache.size < 256) pluralRulesCache.set(cacheKey, rules)
60
- }
61
- return rules.select(n)
62
- }
63
-
64
- /** Own-property lookup: message branches and variables are keyed by data, so `constructor` must not hit the prototype. */
65
- function own<T>(record: Record<string, T>, key: string): T | undefined {
66
- return Object.hasOwn(record, key) ? record[key] : undefined
67
- }
68
-
69
- function formatNumber(n: number, locale?: string): string {
70
- try {
71
- return new Intl.NumberFormat(locale).format(n)
72
- } catch {
73
- return String(n)
74
- }
75
- }
76
-
77
- type ParsedBlock = { branches: Record<string, string>; type: "plural" | "select"; varName: string }
78
- type ParsedNumber = { type: "number"; varName: string }
79
- type ParsedSimple = { type: "simple"; varName: string }
80
- type ParsedToken = ParsedBlock | ParsedNumber | ParsedSimple | string
81
-
82
- function findMatchingBrace(str: string, start: number): number {
83
- let depth = 0
84
- for (let i = start; i < str.length; i++) {
85
- if (str[i] === "{") depth++
86
- else if (str[i] === "}") {
87
- depth--
88
- if (depth === 0) return i
89
- }
90
- }
91
- return -1
92
- }
93
-
94
- function parseBranches(content: string): Record<string, string> {
95
- const branches: Record<string, string> = Object.create(null) as Record<string, string>
96
- let i = 0
97
- while (i < content.length) {
98
- while (i < content.length && /\s/.test(content[i] ?? "")) i++
99
- if (i >= content.length) break
100
-
101
- let category = ""
102
- while (i < content.length && content[i] !== "{" && !/\s/.test(content[i] ?? "")) {
103
- category += content[i]
104
- i++
105
- }
106
- if (!category) break
107
-
108
- while (i < content.length && /\s/.test(content[i] ?? "")) i++
109
- if (i >= content.length || content[i] !== "{") break
110
-
111
- const end = findMatchingBrace(content, i)
112
- if (end === -1) break
113
-
114
- branches[category] = content.slice(i + 1, end)
115
- i = end + 1
116
- }
117
- return branches
118
- }
119
-
120
- function tokenize(message: string): ParsedToken[] {
121
- const tokens: ParsedToken[] = []
122
- let i = 0
123
-
124
- while (i < message.length) {
125
- const braceIdx = message.indexOf("{", i)
126
- if (braceIdx === -1) {
127
- tokens.push(message.slice(i))
128
- break
129
- }
130
-
131
- if (braceIdx > i) {
132
- tokens.push(message.slice(i, braceIdx))
133
- }
134
-
135
- const endBrace = findMatchingBrace(message, braceIdx)
136
- if (endBrace === -1) {
137
- tokens.push(message.slice(braceIdx))
138
- break
139
- }
140
-
141
- const inner = message.slice(braceIdx + 1, endBrace)
142
- const commaIdx = inner.indexOf(",")
143
-
144
- if (commaIdx === -1) {
145
- tokens.push({ type: "simple", varName: inner.trim() })
146
- } else {
147
- const varName = inner.slice(0, commaIdx).trim()
148
- const rest = inner.slice(commaIdx + 1).trim()
149
- const secondComma = rest.indexOf(",")
150
-
151
- if (secondComma === -1) {
152
- const formatType = rest.trim()
153
- if (formatType === "number") {
154
- tokens.push({ type: "number", varName })
155
- } else {
156
- tokens.push({ type: "simple", varName })
157
- }
158
- } else {
159
- const formatType = rest.slice(0, secondComma).trim()
160
- const branchContent = rest.slice(secondComma + 1).trim()
161
- const branches = parseBranches(branchContent)
162
-
163
- if (formatType === "plural" || formatType === "select") {
164
- tokens.push({ branches, type: formatType, varName })
165
- } else {
166
- tokens.push({ type: "simple", varName })
167
- }
168
- }
169
- }
170
-
171
- i = endBrace + 1
172
- }
173
-
174
- return tokens
175
- }
176
-
177
- function resolveToken(token: ParsedToken, values: Record<string, unknown>, locale?: string): string {
178
- if (typeof token === "string") return token
179
-
180
- if (token.type === "simple") {
181
- const val = own(values, token.varName)
182
- return val !== undefined && val !== null ? String(val) : `{${token.varName}}`
183
- }
184
-
185
- if (token.type === "number") {
186
- const val = own(values, token.varName)
187
- if (val === undefined || val === null) return `{${token.varName}}`
188
- return formatNumber(Number(val), locale)
189
- }
190
-
191
- /* plural or select */
192
- const val = own(values, token.varName)
193
-
194
- if (token.type === "plural") {
195
- const num = Number(val ?? 0)
196
- const exactKey = `=${num}`
197
- const category = getPluralCategory(num, locale)
198
- const template =
199
- own(token.branches, exactKey) ?? own(token.branches, category) ?? own(token.branches, "other") ?? ""
200
- /* ICU formats `#` for the locale; without one, keep the plain digits (host locale would make output vary). */
201
- const resolved = template.replace(/#/g, locale === undefined ? String(num) : formatNumber(num, locale))
202
- return interpolate(resolved, values, locale)
203
- }
204
-
205
- /* select */
206
- const strVal = val !== undefined && val !== null ? String(val) : ""
207
- const template = own(token.branches, strVal) ?? own(token.branches, "other") ?? ""
208
- return interpolate(template, values, locale)
209
- }
210
-
211
- /**
212
- * ICU MessageFormat interpolation.
213
- * Supports: {var}, {var, plural, one{...} other{...}}, {var, select, ...}, {var, number}
214
- */
215
- export function interpolate(template: string, vars: Record<string, unknown>, locale?: string): string {
216
- if (!template) return template
217
- const tokens = tokenize(template)
218
- return tokens.map((t) => resolveToken(t, vars, locale)).join("")
219
- }
220
-
221
- export async function resolveTranslation(
222
- registry: TranslationRegistry,
223
- locale: string,
224
- key: string,
225
- vars: Record<string, string | number>,
226
- ): Promise<string> {
227
- const map = await registry.get(locale)
228
- if (map === undefined) return key
229
- const template = own(map, key)
230
- if (template === undefined) return key
231
- return interpolate(template, vars, locale)
232
- }
233
-
234
- export async function resolveFieldName(
235
- registry: TranslationRegistry,
236
- locale: string,
237
- fieldPath: string,
238
- ): Promise<string> {
239
- const map = await registry.get(locale)
240
- if (map === undefined) return fieldPath
241
- return own(map, fieldPath) ?? fieldPath
242
- }
243
-
244
- /* the locale can come from request data: own keys only */
245
- function ownValue<T>(obj: Record<string, T> | undefined, key: string): T | undefined {
246
- return obj !== undefined && Object.hasOwn(obj, key) ? obj[key] : undefined
247
- }
248
-
249
- /** A copy of `error` with a translated message and field paths; same key, status, data and cause. */
250
- function translatedError(
251
- error: HoneyError,
252
- message: string | undefined,
253
- fields: Record<string, FieldError[]> | undefined,
254
- ): HoneyError {
255
- const copy = new HoneyError({
256
- cause: error.cause,
257
- data: error.data,
258
- errorKey: error.errorKey,
259
- fields: fields ?? error.fields,
260
- headers: error.headers,
261
- status: error.statusKey,
262
- vars: error.vars,
263
- })
264
- copy.message = message ?? error.message
265
- if (error.stack !== undefined) copy.stack = error.stack
266
- return copy
267
- }
268
-
269
- export function translateError(error: HoneyError, translations: ErrorTranslations, locale: string): HoneyError {
270
- const messages = ownValue(translations.errors, locale)
271
- const template = messages ? ownValue(messages, error.errorKey) : undefined
272
- const message = template ? interpolate(template, error.vars ?? {}, locale) : undefined
273
-
274
- const fieldTranslations = ownValue(translations.fieldNames, locale)
275
- let fields: Record<string, FieldError[]> | undefined
276
- if (fieldTranslations && Object.keys(error.fields).length > 0) {
277
- fields = dict<FieldError[]>()
278
- for (const name of Object.keys(error.fields)) {
279
- fields[name] = error.fields[name].map((fe) => {
280
- let candidate = fe.path
281
- while (candidate) {
282
- const translated = ownValue(fieldTranslations, candidate)
283
- if (translated) return { ...fe, path: translated }
284
- const dotIdx = candidate.indexOf(".")
285
- if (dotIdx === -1) break
286
- candidate = candidate.slice(dotIdx + 1)
287
- }
288
- return fe
289
- })
290
- }
291
- }
292
- if (message === undefined && fields === undefined) return error
293
- return translatedError(error, message, fields)
294
- }
295
-
296
- export function enableI18n(): void {
297
- registerI18nRuntime({ interpolate, translateError })
298
- }
299
-
300
- enableI18n()