@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,13 +0,0 @@
1
- /**
2
- * `import "@lovrozagar/honey/realtime"` makes `app.realtime()` available. The core never
3
- * imports the realtime server, so an app without realtime routes does not bundle it.
4
- */
5
- import { registerFeature } from "../feature-slots.ts"
6
- import { createBus } from "./bus.ts"
7
- import { resolveRealtimeConfig } from "./route.ts"
8
- import { createRealtimePublisher, createRealtimeSession } from "./server.ts"
9
-
10
- registerFeature("realtime", { createBus, createRealtimePublisher, createRealtimeSession, resolveRealtimeConfig })
11
-
12
- export type { ConnContext, RealtimeLimits, RealtimeRouteOpts } from "./route.ts"
13
- export type { RealtimePublisher } from "./server.ts"
@@ -1,153 +0,0 @@
1
- import { validateOriginPolicy, type WSOriginPolicy } from "../ws-origin.ts"
2
-
3
- /**
4
- * One realtime connection as the route handler sees it. Only the WebSocket transport ships.
5
- * Every frame, in both directions, is one JSON text (see the README's realtime wire format).
6
- */
7
- export type ConnContext = {
8
- readonly id: string
9
- /** What the route's `identify(ctx)` returned, else `null`. */
10
- readonly userId: string | null
11
- readonly transport: "ws"
12
- /** `true` once the connection closed (or `close()` was called). `join` and `send` are then no-ops. */
13
- readonly closed: boolean
14
- readonly state: Record<string, unknown>
15
- /** Subscribe to `topic` in this route's namespace. Throws past `limits.maxTopics`. */
16
- join(topic: string): void
17
- leave(topic: string): void
18
- /** Send one JSON frame to this connection. Throws when `payload` is not JSON-serializable. */
19
- send(payload: unknown): void
20
- /** Send one JSON frame to every connection on `topic` in this route's namespace (this one included). */
21
- publish(topic: string, payload: unknown): void
22
- /** Close with code 1000. A reason longer than 123 UTF-8 bytes is truncated. */
23
- close(reason?: string): void
24
- on(event: "message", handler: (payload: unknown) => void | Promise<void>): void
25
- on(event: "close", handler: (reason: string) => void | Promise<void>): void
26
- }
27
-
28
- export type RealtimeLimits = {
29
- /** Topics one connection may join. Default 128. */
30
- maxTopics?: number
31
- /** Largest inbound text frame in UTF-8 bytes; larger frames close the connection with 1009. Default 1 MiB. */
32
- maxFrameBytes?: number
33
- /**
34
- * Inbound frames waiting for a handler (a slow async `message` handler, or none attached yet).
35
- * Past this the connection closes with 1008. Default 64.
36
- */
37
- maxPendingFrames?: number
38
- /**
39
- * Outbound bytes the runtime may hold for a client that is not reading, where the runtime reports
40
- * it (`bufferedAmount`). Past this `slowConsumer` applies. Default 4 MiB.
41
- */
42
- maxBufferedBytes?: number
43
- /** `"close"` (default) closes a slow consumer with 1013; `"drop"` drops frames until it catches up. */
44
- slowConsumer?: "close" | "drop"
45
- }
46
-
47
- /** `C` is the request context of the handle `realtime()` is called on. */
48
- export type RealtimeRouteOpts<C = unknown> = {
49
- use?: Array<(ctx: unknown, next: () => Promise<Response>) => Promise<Response>>
50
- /**
51
- * Topic namespace. Connections only see topics of their own namespace. Defaults to the route's
52
- * full path pattern, so two realtime routes never share topics unless they name the same namespace.
53
- */
54
- namespace?: string
55
- /** Runs after the route's middleware, before the upgrade. Its result becomes `conn.userId`; a throw rejects the upgrade. */
56
- identify?: (ctx: C) => string | null | undefined | Promise<string | null | undefined>
57
- /** Receives every error thrown by `handler` and the `message`/`close` handlers. Defaults to the app logger. */
58
- onError?: (error: unknown, conn: ConnContext) => void | Promise<void>
59
- limits?: RealtimeLimits
60
- /**
61
- * Browser origins allowed to connect: `"*"`, a list (`https://app.example.com`), or a
62
- * predicate. Same-origin always passes. Unset, a cross-origin upgrade that carries `Cookie`
63
- * or `Authorization` gets 403.
64
- */
65
- allowedOrigins?: WSOriginPolicy
66
- handler: (c: C, conn: ConnContext) => void | Promise<void>
67
- }
68
-
69
- /** A realtime route after validation, with every default applied. */
70
- export type RealtimeConfig = {
71
- allowedOrigins: WSOriginPolicy | null
72
- handler: RealtimeRouteOpts["handler"]
73
- identify: NonNullable<RealtimeRouteOpts["identify"]> | null
74
- limits: Required<RealtimeLimits>
75
- namespace: string
76
- /** false when `namespace` is the default (the route's path), which follows the route when mounted */
77
- namespaceExplicit: boolean
78
- onError: NonNullable<RealtimeRouteOpts["onError"]> | null
79
- path: string
80
- }
81
-
82
- const DEFAULT_LIMITS: Required<RealtimeLimits> = {
83
- maxBufferedBytes: 4 * 1024 * 1024,
84
- maxFrameBytes: 1024 * 1024,
85
- maxPendingFrames: 64,
86
- maxTopics: 128,
87
- slowConsumer: "close",
88
- }
89
-
90
- function positiveInt(name: string, value: unknown, fallback: number): number {
91
- if (value === undefined) return fallback
92
- if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1) {
93
- throw new TypeError(`realtime limits.${name} must be a positive integer, got ${String(value)}`)
94
- }
95
- return value
96
- }
97
-
98
- /** Validate `app.realtime()` options. Options the shipped bus does not implement are rejected, not ignored. */
99
- export function resolveRealtimeConfig<C>(path: string, routeOpts: RealtimeRouteOpts<C>): RealtimeConfig {
100
- const opts = routeOpts as unknown as RealtimeRouteOpts
101
- if (typeof opts?.handler !== "function") {
102
- throw new TypeError(`app.realtime("${path}"): handler must be a function`)
103
- }
104
- const legacy = opts as { reconnectBuffer?: unknown; transports?: unknown }
105
- if (legacy.reconnectBuffer !== undefined) {
106
- throw new TypeError(
107
- `app.realtime("${path}"): reconnectBuffer is not supported. Realtime ships the WebSocket transport without resume; remove the option.`,
108
- )
109
- }
110
- if (legacy.transports !== undefined) {
111
- throw new TypeError(`app.realtime("${path}"): only the WebSocket transport ships; remove transports.`)
112
- }
113
- if (opts.namespace !== undefined && (typeof opts.namespace !== "string" || opts.namespace === "")) {
114
- throw new TypeError(`app.realtime("${path}"): namespace must be a non-empty string`)
115
- }
116
- const l = opts.limits ?? {}
117
- if (l.slowConsumer !== undefined && l.slowConsumer !== "close" && l.slowConsumer !== "drop") {
118
- throw new TypeError(`realtime limits.slowConsumer must be "close" or "drop"`)
119
- }
120
- return {
121
- allowedOrigins: opts.allowedOrigins === undefined ? null : validateOriginPolicy(opts.allowedOrigins),
122
- handler: opts.handler,
123
- identify: opts.identify ?? null,
124
- limits: {
125
- maxBufferedBytes: positiveInt("maxBufferedBytes", l.maxBufferedBytes, DEFAULT_LIMITS.maxBufferedBytes),
126
- maxFrameBytes: positiveInt("maxFrameBytes", l.maxFrameBytes, DEFAULT_LIMITS.maxFrameBytes),
127
- maxPendingFrames: positiveInt("maxPendingFrames", l.maxPendingFrames, DEFAULT_LIMITS.maxPendingFrames),
128
- maxTopics: positiveInt("maxTopics", l.maxTopics, DEFAULT_LIMITS.maxTopics),
129
- slowConsumer: l.slowConsumer ?? DEFAULT_LIMITS.slowConsumer,
130
- },
131
- namespace: opts.namespace ?? path,
132
- namespaceExplicit: opts.namespace !== undefined,
133
- onError: opts.onError ?? null,
134
- path,
135
- }
136
- }
137
-
138
- const encoder = new TextEncoder()
139
-
140
- /** Cut `reason` to at most `max` UTF-8 bytes without splitting a code point. */
141
- export function truncateUtf8(reason: string, max: number): string {
142
- if (reason.length * 3 <= max) return reason
143
- if (encoder.encode(reason).byteLength <= max) return reason
144
- let bytes = 0
145
- let out = ""
146
- for (const ch of reason) {
147
- const n = encoder.encode(ch).byteLength
148
- if (bytes + n > max) break
149
- bytes += n
150
- out += ch
151
- }
152
- return out
153
- }
@@ -1,298 +0,0 @@
1
- import { invokeUser } from "../invoke-user.ts"
2
- import type { WSContext, WSHandler } from "../ws/cloudflare.ts"
3
- import { encodeRealtimeFrame } from "./bus.ts"
4
- import type { RealtimeBus } from "./bus.ts"
5
- import {
6
- bufferedAmountOf,
7
- CLOSE_INTERNAL,
8
- CLOSE_NORMAL,
9
- CLOSE_POLICY,
10
- CLOSE_TOO_BIG,
11
- CLOSE_TRY_AGAIN,
12
- exceedsPayload,
13
- MAX_CLOSE_REASON,
14
- } from "../ws/shared.ts"
15
- import { truncateUtf8 } from "./route.ts"
16
- import type { ConnContext, RealtimeConfig } from "./route.ts"
17
-
18
- type Logger = {
19
- error?: (obj: Record<string, unknown>, msg?: string) => void
20
- warn?: (obj: Record<string, unknown>, msg?: string) => void
21
- }
22
-
23
- /** `ctx.realtime` — publish into a realtime namespace from any request. */
24
- export type RealtimePublisher = {
25
- /**
26
- * Publish to `topic` in the app's only realtime namespace. Throws when the app has several
27
- * namespaces; use `namespace(name).publish()` then.
28
- */
29
- publish(topic: string, data: unknown): void
30
- /** The publisher for one namespace (a route's `namespace` option, or its full path pattern). */
31
- namespace(name: string): { publish(topic: string, data: unknown): void }
32
- }
33
-
34
- const SEP = "\u0000"
35
-
36
- /** The bus key of `topic` in namespace `ns`. Namespaces never see each other's topics. */
37
- export function topicKey(ns: string, topic: string): string {
38
- return ns + SEP + topic
39
- }
40
-
41
- export function createRealtimePublisher(bus: RealtimeBus, namespaces: () => Iterable<string>): RealtimePublisher {
42
- const forNs = (ns: string) => ({
43
- publish(topic: string, data: unknown) {
44
- bus.publish(topicKey(ns, String(topic)), data)
45
- },
46
- })
47
- return {
48
- namespace(name: string) {
49
- return forNs(String(name))
50
- },
51
- publish(topic: string, data: unknown) {
52
- const all = new Set(namespaces())
53
- if (all.size !== 1) {
54
- throw new Error(
55
- all.size === 0
56
- ? "ctx.realtime.publish: the app has no realtime routes"
57
- : `ctx.realtime.publish: the app has ${all.size} realtime namespaces (${[...all].join(", ")}); use ctx.realtime.namespace(name).publish(topic, data)`,
58
- )
59
- }
60
- forNs(all.values().next().value as string).publish(topic, data)
61
- },
62
- }
63
- }
64
-
65
- export type RealtimeSession = {
66
- /** The handler to pass to the runtime's WebSocket adapter. */
67
- handler: WSHandler<unknown>
68
- /** Attach the socket and start the connection (idempotent). Adapters that return an open socket from `upgrade()` call this right away; others get it from `onOpen`. */
69
- attach(ws: WSContext<unknown>): void
70
- }
71
-
72
- /**
73
- * One realtime connection: binds the socket to the bus and runs the route's callbacks on one ordered
74
- * queue — `handler`, then each inbound frame, then `close` — each awaited. Every callback is
75
- * contained: a throw or rejection goes to the route's `onError` (or the app logger) and never escapes
76
- * into the runtime, so it can neither crash the process nor poison the queue.
77
- */
78
- export function createRealtimeSession(opts: {
79
- bus: RealtimeBus
80
- config: RealtimeConfig
81
- ctx: unknown
82
- log: Logger | undefined
83
- userId: string | null
84
- }): RealtimeSession {
85
- const { bus, config, ctx, log, userId } = opts
86
- const { limits, namespace } = config
87
- const connId = crypto.randomUUID()
88
- const state: Record<string, unknown> = {}
89
-
90
- let socket: WSContext<unknown> | null = null
91
- let closed = false
92
- let tornDown = false
93
- let closeRan = false
94
- let onMessageFn: ((payload: unknown) => void | Promise<void>) | null = null
95
- let onCloseFn: ((reason: string) => void | Promise<void>) | null = null
96
-
97
- /* ordered queue: open → messages → close. Every inbound frame waits in `inbox` in arrival
98
- * order, including frames that beat the open or the `message` handler; a drain task delivers
99
- * them, so a frame never overtakes one that arrived before it. */
100
- let queue: Promise<void> = Promise.resolve()
101
- const inbox: unknown[] = []
102
-
103
- /* the same containment as WebSocket callbacks: onError gets the error, an onError that
104
- * throws is logged and never invoked again for its own error, nothing reaches the runtime */
105
- const invoke = (phase: string, fn: () => void | Promise<void>): Promise<boolean> =>
106
- invokeUser(fn, {
107
- fields: { connId, namespace, route: config.path },
108
- log,
109
- onError: config.onError ? (err) => config.onError?.(err, conn) : null,
110
- phase,
111
- })
112
-
113
- const enqueue = (task: () => Promise<unknown>) => {
114
- queue = queue.then(task).then(
115
- () => undefined,
116
- () => undefined,
117
- )
118
- }
119
-
120
- /** Drop the connection from the bus. Runs exactly once, before any user close handler. */
121
- const teardown = () => {
122
- if (tornDown) return
123
- tornDown = true
124
- closed = true
125
- bus.unsubscribeAll(connId)
126
- bus.removeHandler(connId)
127
- }
128
-
129
- const closeSocket = (code: number, reason: string) => {
130
- const ws = socket
131
- teardown()
132
- if (ws === null) return
133
- try {
134
- ws.close(code, truncateUtf8(reason, MAX_CLOSE_REASON))
135
- } catch (e) {
136
- log?.warn?.({ connId, err: e }, "realtime close failed")
137
- }
138
- }
139
-
140
- const sendFrame = (frame: string) => {
141
- const ws = socket
142
- if (closed || ws === null) return
143
- if (bufferedAmountOf(ws.raw) > limits.maxBufferedBytes) {
144
- if (limits.slowConsumer === "drop") return
145
- closeSocket(CLOSE_TRY_AGAIN, "slow consumer")
146
- return
147
- }
148
- try {
149
- ws.send(frame)
150
- } catch (e) {
151
- /* the socket went away between the readyState check and the write */
152
- log?.warn?.({ connId, err: e }, "realtime send failed")
153
- }
154
- }
155
-
156
- /* frames that arrived before the close still run; the close handler is queued after them.
157
- * Without a handler the frames stay in the inbox until one is attached, or are dropped on close. */
158
- const drain = async (): Promise<void> => {
159
- while (inbox.length > 0) {
160
- const fn = onMessageFn
161
- if (fn === null) {
162
- if (closed) inbox.length = 0
163
- return
164
- }
165
- const payload = inbox.shift()
166
- await invoke("message", () => fn(payload))
167
- }
168
- }
169
-
170
- const accept = (payload: unknown) => {
171
- if (inbox.length >= limits.maxPendingFrames) {
172
- closeSocket(CLOSE_POLICY, "too many pending frames")
173
- return
174
- }
175
- inbox.push(payload)
176
- enqueue(drain)
177
- }
178
-
179
- const conn = Object.create(null) as ConnContext
180
- Object.defineProperties(conn, {
181
- close: {
182
- enumerable: true,
183
- value(reason?: string) {
184
- if (closed) return
185
- closeSocket(CLOSE_NORMAL, reason === undefined ? "" : String(reason))
186
- },
187
- },
188
- closed: { enumerable: true, get: () => closed },
189
- id: { enumerable: true, value: connId },
190
- join: {
191
- enumerable: true,
192
- value(topic: string) {
193
- if (closed) return
194
- const key = topicKey(namespace, String(topic))
195
- if (bus.topicCount(connId) >= limits.maxTopics && !bus.isSubscribed(connId, key)) {
196
- throw new RangeError(`realtime: a connection may join at most ${limits.maxTopics} topics`)
197
- }
198
- bus.subscribe(connId, key)
199
- },
200
- },
201
- leave: {
202
- enumerable: true,
203
- value(topic: string) {
204
- if (closed) return
205
- bus.unsubscribe(connId, topicKey(namespace, String(topic)))
206
- },
207
- },
208
- on: {
209
- enumerable: true,
210
- value(event: "message" | "close", fn: (arg: never) => void | Promise<void>) {
211
- if (typeof fn !== "function") throw new TypeError("conn.on: handler must be a function")
212
- if (event === "message") {
213
- onMessageFn = fn as (payload: unknown) => void | Promise<void>
214
- /* frames that waited for a handler run next, in arrival order */
215
- if (inbox.length > 0) enqueue(drain)
216
- } else if (event === "close") {
217
- onCloseFn = fn as (reason: string) => void | Promise<void>
218
- } else {
219
- throw new TypeError(`conn.on: unknown event "${String(event)}"`)
220
- }
221
- },
222
- },
223
- /* publishing after close is allowed: a close handler announcing a departure is the common case */
224
- publish: {
225
- enumerable: true,
226
- value(topic: string, payload: unknown) {
227
- bus.publish(topicKey(namespace, String(topic)), payload)
228
- },
229
- },
230
- send: {
231
- enumerable: true,
232
- value(payload: unknown) {
233
- const frame = encodeRealtimeFrame(payload)
234
- sendFrame(frame)
235
- },
236
- },
237
- state: { enumerable: true, get: () => state },
238
- transport: { enumerable: true, value: "ws" },
239
- userId: { enumerable: true, value: userId },
240
- })
241
-
242
- const attach = (ws: WSContext<unknown>) => {
243
- if (socket !== null || tornDown) return
244
- socket = ws
245
- bus.onMessage(connId, sendFrame)
246
- enqueue(async () => {
247
- const ok = await invoke("handler", () => config.handler(ctx, conn))
248
- if (!ok) closeSocket(CLOSE_INTERNAL, "internal error")
249
- })
250
- }
251
-
252
- const onSocketClose = (reason: string) => {
253
- teardown()
254
- if (closeRan) return
255
- closeRan = true
256
- enqueue(() => {
257
- const fn = onCloseFn
258
- return fn === null ? Promise.resolve() : invoke("close", () => fn(reason))
259
- })
260
- }
261
-
262
- const handler: WSHandler<unknown> = {
263
- onClose: (_ctx, _ws, _code, reason) => {
264
- onSocketClose(reason || "normal")
265
- },
266
- onError: (_ctx, _ws, error) => {
267
- log?.warn?.({ connId, err: error }, "realtime socket error")
268
- },
269
- onMessage: (_ctx, _ws, data) => {
270
- if (closed) return
271
- /* the wire format is JSON text; binary frames are not part of it */
272
- if (typeof data !== "string") return
273
- if (exceedsPayload(data, limits.maxFrameBytes)) {
274
- closeSocket(CLOSE_TOO_BIG, "frame too large")
275
- return
276
- }
277
- let payload: unknown
278
- try {
279
- payload = JSON.parse(data)
280
- } catch {
281
- /* not JSON: not a frame of this protocol */
282
- return
283
- }
284
- if (socket === null) {
285
- /* a frame before open (runtime quirk): it waits in the inbox, ahead of later frames */
286
- if (inbox.length >= limits.maxPendingFrames) return
287
- inbox.push(payload)
288
- return
289
- }
290
- accept(payload)
291
- },
292
- onOpen: (_ctx, ws) => {
293
- attach(ws)
294
- },
295
- }
296
-
297
- return { attach, handler }
298
- }
package/src/request-id.ts DELETED
@@ -1,32 +0,0 @@
1
- import { namedMiddleware } from "./middleware.ts"
2
- import type { MiddlewareFn } from "./middleware.ts"
3
- import { withHeaders } from "./with-headers.ts"
4
-
5
- type RequestIdOptions = {
6
- generator?: () => string
7
- header?: string
8
- /**
9
- * Decides whether an inbound id is reused. Default: 1–128 characters of
10
- * `A-Z a-z 0-9 . _ : + / = -` (UUIDs, ULIDs, base64, W3C trace ids).
11
- * Anything else is replaced with a generated id, so a client cannot put
12
- * arbitrary text into logs or response headers.
13
- */
14
- validate?: (id: string) => boolean
15
- }
16
-
17
- const SAFE_ID_RE = /^[\w.:+/=-]{1,128}$/
18
-
19
- export function requestId(options?: RequestIdOptions): MiddlewareFn<{ req: Request }, { requestId: string }> {
20
- const headerName = options?.header ?? "x-request-id"
21
- const generate = options?.generator ?? (() => crypto.randomUUID())
22
- const validate = options?.validate ?? ((id: string) => SAFE_ID_RE.test(id))
23
-
24
- const mw: MiddlewareFn<{ req: Request }, { requestId: string }> = async (ctx, next) => {
25
- const existing = ctx.req.headers.get(headerName)
26
- const id = existing !== null && validate(existing) ? existing : generate()
27
- const response = await next({ requestId: id })
28
- return withHeaders(response, (headers) => headers.set(headerName, id))
29
- }
30
-
31
- return namedMiddleware("requestId", mw)
32
- }
@@ -1,2 +0,0 @@
1
- /** Bun's default request body cap; honey's Node adapter applies the same one. */
2
- export const DEFAULT_MAX_REQUEST_BODY = 128 * 1024 * 1024
@@ -1,165 +0,0 @@
1
- const PLAIN = 0
2
- /** a character the slow path rewrites: a backslash, or one `encodeSegment` percent-encodes */
3
- const SLOW = 1
4
- const PERCENT = 2
5
- const SLASH = 3
6
-
7
- const CHAR_CLASS = new Uint8Array(128)
8
- for (let c = 0; c < 128; c++) {
9
- if (c <= 0x20 || c === 0x7f || c === 92 || needsEncoding(c)) CHAR_CLASS[c] = SLOW
10
- }
11
- CHAR_CLASS[37] = PERCENT
12
- CHAR_CLASS[47] = SLASH
13
-
14
- /**
15
- * The request path the router, scopes, `ctx.path`, `proxy()` and `staticFiles()` all see.
16
- *
17
- * Policy, applied the same way on every runtime:
18
- * - empty segments collapse: `//admin///users` is `/admin/users`
19
- * - dot segments resolve: `.` is dropped and `..` removes the segment before it, never past
20
- * the root; `%2e` counts as a dot, as it does for WHATWG URL parsing
21
- * - a trailing slash is kept (the router and `trailingSlash()` decide what it means)
22
- * - a backslash is a `/`, and characters a URL path cannot hold raw (space, controls, `"`, `<`,
23
- * `>`, `` ` ``, `{`, `}`, non-ASCII) are percent-encoded as UTF-8 — what WHATWG URL parsing
24
- * does, so a runtime that hands the app the raw target (Deno) and one that parses it first
25
- * (Bun, Node) route the same bytes the same way
26
- * - an encoded `/` or `\` (`%2F`, `%5C`) is rejected unless `encodedSlashes` is `"allow"`: a
27
- * segment that decodes to a path separator means one thing to this router and another to
28
- * whatever the path is forwarded to (a proxy upstream, a file system). Allowed, it stays
29
- * encoded in the path and decodes into a param value.
30
- * - everything else stays percent-encoded; params are decoded when they are extracted
31
- *
32
- * Returns `null` for a rejected path; the app answers 400.
33
- */
34
- export function normalizePath(raw: string, encodedSlashes: "allow" | "reject" = "reject"): string | null {
35
- const rejectEncoded = encodedSlashes === "reject"
36
- let canonical = raw.charCodeAt(0) === 47
37
- const len = raw.length
38
- for (let i = 0; i < len; i++) {
39
- const c = raw.charCodeAt(i)
40
- const k = c < 128 ? CHAR_CLASS[c] : SLOW
41
- if (k === PLAIN) continue
42
- if (k === SLOW) {
43
- canonical = false
44
- } else if (k === PERCENT) {
45
- const hi = raw.charCodeAt(i + 1)
46
- const lo = raw.charCodeAt(i + 2) | 0x20
47
- if (hi === 50 /* 2 */) {
48
- if (lo === 102 /* f */ && rejectEncoded) return null
49
- if (lo === 101 /* e */) canonical = false
50
- } else if (hi === 53 /* 5 */ && lo === 99 /* c */ && rejectEncoded) {
51
- return null
52
- }
53
- } else {
54
- const n = raw.charCodeAt(i + 1)
55
- if (n === 47 || n === 46 /* . */) canonical = false
56
- }
57
- }
58
- if (canonical) return raw
59
-
60
- const out: string[] = []
61
- const segments = raw.replaceAll("\\", "/").split("/")
62
- let trailing = false
63
- for (let i = 0; i < segments.length; i++) {
64
- const seg = segments[i]
65
- const last = i === segments.length - 1
66
- if (seg === "") {
67
- if (last && i > 0) trailing = true
68
- continue
69
- }
70
- const dots = dotSegment(seg)
71
- if (dots === 0) {
72
- out.push(encodeSegment(seg))
73
- continue
74
- }
75
- if (dots === 2) out.pop()
76
- /* `/a/b/..` is `/a/`, like URL resolution */
77
- if (last) trailing = true
78
- }
79
- if (out.length === 0) return "/"
80
- const path = `/${out.join("/")}`
81
- return trailing ? `${path}/` : path
82
- }
83
-
84
- /**
85
- * The WHATWG path percent-encode set, plus every non-ASCII code unit. `^` joined the set in
86
- * 2023; Node and Bun encode it, Deno's parser does not yet, so it is encoded here to keep
87
- * `ctx.path` the same on all three.
88
- */
89
- function needsEncoding(c: number): boolean {
90
- return (
91
- c <= 0x20 ||
92
- c >= 0x7f ||
93
- c === 34 /* " */ ||
94
- c === 60 /* < */ ||
95
- c === 62 /* > */ ||
96
- c === 94 /* ^ */ ||
97
- c === 96 /* ` */ ||
98
- c === 123 /* { */ ||
99
- c === 125 /* } */
100
- )
101
- }
102
-
103
- /**
104
- * One path segment as a normalized request path holds it: characters a URL path cannot hold
105
- * raw become UTF-8 percent escapes, everything else (existing escapes included) is kept.
106
- * Route patterns encode their static segments with this too, so `app.get("/é")` matches the
107
- * `/%C3%A9` every runtime hands the app.
108
- */
109
- export function encodeSegment(seg: string): string {
110
- let needs = false
111
- for (let i = 0; i < seg.length; i++) {
112
- if (needsEncoding(seg.charCodeAt(i))) {
113
- needs = true
114
- break
115
- }
116
- }
117
- if (!needs) return seg
118
- let out = ""
119
- for (const ch of seg) {
120
- const c = ch.charCodeAt(0)
121
- if (ch.length === 1 && !needsEncoding(c)) {
122
- out += ch
123
- continue
124
- }
125
- try {
126
- out += encodeURIComponent(ch)
127
- } catch {
128
- /* a lone surrogate: U+FFFD, as URL parsing encodes it */
129
- out += "%EF%BF%BD"
130
- }
131
- }
132
- return out
133
- }
134
-
135
- /** 1 for `.`, 2 for `..` (either may be written `%2e`), 0 for anything else. */
136
- function dotSegment(seg: string): 0 | 1 | 2 {
137
- if (seg.length > 6) return 0
138
- const s = seg.toLowerCase().replaceAll("%2e", ".")
139
- if (s === ".") return 1
140
- if (s === "..") return 2
141
- return 0
142
- }
143
-
144
- /** The path of a request URL without `new URL()`: everything from the first `/` after the authority, up to `?` or `#`. */
145
- export function pathOfUrl(rawUrl: string): string {
146
- const protoEnd = rawUrl.indexOf("//")
147
- const pathStart = protoEnd === -1 ? 0 : rawUrl.indexOf("/", protoEnd + 2)
148
- if (pathStart === -1) return "/"
149
- for (let i = pathStart; i < rawUrl.length; i++) {
150
- const c = rawUrl.charCodeAt(i)
151
- if (c === 63 /* ? */ || c === 35 /* # */) return rawUrl.substring(pathStart, i)
152
- }
153
- return rawUrl.substring(pathStart)
154
- }
155
-
156
- /** `?query` of a request URL (with the `?`), or `""`. Never includes a fragment. */
157
- export function searchOfUrl(rawUrl: string): string {
158
- const protoEnd = rawUrl.indexOf("//")
159
- const pathStart = protoEnd === -1 ? 0 : rawUrl.indexOf("/", protoEnd + 2)
160
- if (pathStart === -1) return ""
161
- const q = rawUrl.indexOf("?", pathStart)
162
- if (q === -1) return ""
163
- const hash = rawUrl.indexOf("#", q)
164
- return hash === -1 ? rawUrl.substring(q) : rawUrl.substring(q, hash)
165
- }