@lovrozagar/honey 0.7.3 → 1.0.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1005) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +930 -1664
  3. package/bin/honey.js +87 -27
  4. package/dist/adapters/bun/serve.d.ts +18 -0
  5. package/dist/adapters/bun/serve.js +89 -0
  6. package/dist/adapters/fetch-request.d.ts +20 -0
  7. package/dist/adapters/fetch-request.js +29 -0
  8. package/dist/adapters/node/headers.d.ts +27 -0
  9. package/dist/adapters/node/headers.js +86 -0
  10. package/dist/adapters/node/request.d.ts +16 -0
  11. package/dist/adapters/node/request.js +214 -0
  12. package/dist/adapters/node/response.d.ts +11 -0
  13. package/dist/adapters/node/response.js +126 -0
  14. package/dist/adapters/node/serve.d.ts +39 -0
  15. package/dist/adapters/node/serve.js +205 -0
  16. package/dist/adapters/node/url.d.ts +13 -0
  17. package/dist/adapters/node/url.js +87 -0
  18. package/dist/adapters/serve.d.ts +36 -0
  19. package/dist/adapters/serve.js +52 -0
  20. package/dist/build/artifacts.d.ts +34 -0
  21. package/dist/build/artifacts.js +123 -0
  22. package/dist/build/cli-args.d.ts +30 -0
  23. package/dist/build/cli-args.js +97 -0
  24. package/dist/build/cli.d.ts +11 -0
  25. package/dist/build/cli.js +150 -0
  26. package/dist/build/config.d.ts +102 -0
  27. package/dist/build/config.js +89 -0
  28. package/dist/build/generate.d.ts +19 -0
  29. package/dist/build/generate.js +80 -0
  30. package/dist/build/glob.d.ts +8 -0
  31. package/dist/build/glob.js +97 -0
  32. package/dist/build/index.d.ts +3 -58
  33. package/dist/build/index.js +3 -173
  34. package/dist/build/init.d.ts +3 -0
  35. package/dist/build/init.js +131 -0
  36. package/dist/build/loaders.d.ts +33 -0
  37. package/dist/build/loaders.js +105 -0
  38. package/dist/build/plugin.d.ts +52 -0
  39. package/dist/build/plugin.js +146 -0
  40. package/dist/build/source.d.ts +21 -0
  41. package/dist/build/source.js +100 -0
  42. package/dist/build/targets.d.ts +59 -0
  43. package/dist/build/targets.js +107 -0
  44. package/dist/context/context.d.ts +111 -0
  45. package/dist/context/context.js +213 -0
  46. package/dist/context/cookie-sign.d.ts +38 -0
  47. package/dist/context/cookie-sign.js +113 -0
  48. package/dist/context/cookie.d.ts +28 -0
  49. package/dist/context/cookie.js +142 -0
  50. package/dist/context/peer.d.ts +34 -0
  51. package/dist/context/peer.js +190 -0
  52. package/dist/errors/error.d.ts +60 -0
  53. package/dist/errors/error.js +84 -0
  54. package/dist/errors/errors.d.ts +45 -0
  55. package/dist/errors/errors.js +31 -0
  56. package/dist/errors/on-error.d.ts +10 -0
  57. package/dist/errors/on-error.js +204 -0
  58. package/dist/errors/problem-json.d.ts +14 -0
  59. package/dist/errors/problem-json.js +58 -0
  60. package/dist/errors/projector.d.ts +50 -0
  61. package/dist/errors/projector.js +107 -0
  62. package/dist/i18n/error-i18n.d.ts +26 -0
  63. package/dist/i18n/error-i18n.js +77 -0
  64. package/dist/i18n/i18n.d.ts +21 -0
  65. package/dist/i18n/i18n.js +40 -0
  66. package/dist/i18n/icu.d.ts +29 -0
  67. package/dist/i18n/icu.js +170 -0
  68. package/dist/i18n/index.d.ts +4 -0
  69. package/dist/i18n/index.js +3 -0
  70. package/dist/index.d.ts +30 -746
  71. package/dist/index.js +12 -2364
  72. package/dist/input/accepts.d.ts +5 -0
  73. package/dist/input/accepts.js +105 -0
  74. package/dist/input/binary.d.ts +20 -0
  75. package/dist/input/binary.js +40 -0
  76. package/dist/input/body-kind.d.ts +15 -0
  77. package/dist/input/body-kind.js +47 -0
  78. package/dist/input/body-limit.d.ts +21 -0
  79. package/dist/input/body-limit.js +99 -0
  80. package/dist/input/cookies.d.ts +7 -0
  81. package/dist/input/cookies.js +8 -0
  82. package/dist/input/form.d.ts +10 -0
  83. package/dist/input/form.js +24 -0
  84. package/dist/input/headers.d.ts +7 -0
  85. package/dist/input/headers.js +8 -0
  86. package/dist/input/input.d.ts +91 -0
  87. package/dist/input/input.js +88 -0
  88. package/dist/input/json.d.ts +10 -0
  89. package/dist/input/json.js +22 -0
  90. package/dist/input/params.d.ts +7 -0
  91. package/dist/input/params.js +8 -0
  92. package/dist/input/query.d.ts +10 -0
  93. package/dist/input/query.js +17 -0
  94. package/dist/mcp/mount.d.ts +116 -0
  95. package/dist/mcp/mount.js +45 -0
  96. package/dist/mcp/oauth.d.ts +14 -0
  97. package/dist/mcp/oauth.js +88 -0
  98. package/dist/mcp/uploads.d.ts +36 -0
  99. package/dist/mcp/uploads.js +171 -0
  100. package/dist/mcp/url-files.d.ts +32 -0
  101. package/dist/mcp/url-files.js +75 -0
  102. package/dist/meta/meta-spec-apply.d.ts +25 -0
  103. package/dist/meta/meta-spec-apply.js +83 -0
  104. package/dist/meta/meta-spec-merge.d.ts +103 -0
  105. package/dist/meta/meta-spec-merge.js +50 -0
  106. package/dist/meta/meta-spec-validate.d.ts +61 -0
  107. package/dist/meta/meta-spec-validate.js +166 -0
  108. package/dist/meta/meta-spec.d.ts +49 -0
  109. package/dist/meta/meta-spec.js +197 -0
  110. package/dist/middleware/compress.d.ts +15 -0
  111. package/dist/middleware/compress.js +93 -0
  112. package/dist/middleware/cors.d.ts +18 -0
  113. package/dist/middleware/cors.js +80 -0
  114. package/dist/middleware/csrf.d.ts +11 -0
  115. package/dist/middleware/csrf.js +65 -0
  116. package/dist/middleware/ip-restrict.d.ts +10 -0
  117. package/dist/middleware/ip-restrict.js +82 -0
  118. package/dist/middleware/middleware.d.ts +53 -0
  119. package/dist/middleware/middleware.js +112 -0
  120. package/dist/middleware/powered-by.d.ts +6 -0
  121. package/dist/middleware/powered-by.js +13 -0
  122. package/dist/middleware/rate-limit.d.ts +40 -0
  123. package/dist/middleware/rate-limit.js +90 -0
  124. package/dist/middleware/request-id.d.ts +25 -0
  125. package/dist/middleware/request-id.js +30 -0
  126. package/dist/middleware/secure-headers.d.ts +18 -0
  127. package/dist/middleware/secure-headers.js +36 -0
  128. package/dist/middleware/server-timing.d.ts +8 -0
  129. package/dist/middleware/server-timing.js +52 -0
  130. package/dist/middleware/timeout.d.ts +6 -0
  131. package/dist/middleware/timeout.js +29 -0
  132. package/dist/observability/curl-logger.d.ts +46 -0
  133. package/dist/observability/curl-logger.js +175 -0
  134. package/dist/observability/request-to-curl.d.ts +17 -0
  135. package/dist/observability/request-to-curl.js +47 -0
  136. package/dist/openapi/collect.d.ts +56 -18
  137. package/dist/openapi/collect.js +109 -23
  138. package/dist/openapi/components.d.ts +9 -0
  139. package/dist/openapi/components.js +90 -0
  140. package/dist/openapi/docs-page.d.ts +20 -18
  141. package/dist/openapi/docs-page.js +28 -46
  142. package/dist/openapi/document.d.ts +33 -26
  143. package/dist/openapi/document.js +21 -780
  144. package/dist/openapi/extract-schemas.d.ts +11 -0
  145. package/dist/openapi/extract-schemas.js +31 -0
  146. package/dist/openapi/generate.d.ts +47 -0
  147. package/dist/openapi/generate.js +180 -0
  148. package/dist/openapi/manifest.d.ts +41 -0
  149. package/dist/openapi/manifest.js +49 -0
  150. package/dist/openapi/output-keys.d.ts +6 -0
  151. package/dist/openapi/output-keys.js +24 -0
  152. package/dist/openapi/paths.d.ts +35 -0
  153. package/dist/openapi/paths.js +175 -0
  154. package/dist/openapi/register.d.ts +14 -3
  155. package/dist/openapi/register.js +13 -20
  156. package/dist/openapi/responses.d.ts +44 -0
  157. package/dist/openapi/responses.js +159 -0
  158. package/dist/openapi/scalar.d.ts +4 -14
  159. package/dist/openapi/scalar.js +5 -7
  160. package/dist/openapi/security.d.ts +4 -0
  161. package/dist/openapi/security.js +25 -0
  162. package/dist/openapi/serve.d.ts +25 -9
  163. package/dist/openapi/serve.js +108 -29
  164. package/dist/openapi/servers.d.ts +19 -0
  165. package/dist/openapi/servers.js +72 -0
  166. package/dist/openapi/swagger.d.ts +4 -14
  167. package/dist/openapi/swagger.js +5 -7
  168. package/dist/openapi/tags.d.ts +20 -0
  169. package/dist/openapi/tags.js +20 -0
  170. package/dist/openapi/webhooks.d.ts +19 -0
  171. package/dist/openapi/webhooks.js +70 -0
  172. package/dist/openapi/yaml.d.ts +8 -0
  173. package/dist/openapi/yaml.js +74 -0
  174. package/dist/proxy/headers.d.ts +30 -0
  175. package/dist/proxy/headers.js +86 -0
  176. package/dist/proxy/proxy.d.ts +39 -0
  177. package/dist/proxy/proxy.js +103 -0
  178. package/dist/proxy/upstream.d.ts +30 -0
  179. package/dist/proxy/upstream.js +116 -0
  180. package/dist/realtime/bus.d.ts +10 -13
  181. package/dist/realtime/bus.js +48 -93
  182. package/dist/realtime/invoke-user.d.ts +36 -0
  183. package/dist/realtime/invoke-user.js +103 -0
  184. package/dist/realtime/realtime.d.ts +7 -0
  185. package/dist/realtime/realtime.js +40 -0
  186. package/dist/realtime/route.d.ts +33 -27
  187. package/dist/realtime/route.js +27 -43
  188. package/dist/realtime/server.d.ts +24 -28
  189. package/dist/realtime/server.js +202 -225
  190. package/dist/response/binary.d.ts +18 -0
  191. package/dist/response/binary.js +10 -0
  192. package/dist/response/builder.d.ts +73 -0
  193. package/dist/response/builder.js +214 -0
  194. package/dist/response/cache-control.d.ts +30 -0
  195. package/dist/response/cache-control.js +74 -0
  196. package/dist/response/etag.d.ts +15 -0
  197. package/dist/response/etag.js +83 -0
  198. package/dist/response/media-type.d.ts +28 -0
  199. package/dist/response/media-type.js +97 -0
  200. package/dist/response/out-headers.d.ts +31 -0
  201. package/dist/response/out-headers.js +130 -0
  202. package/dist/response/pretty-json.d.ts +10 -0
  203. package/dist/response/pretty-json.js +44 -0
  204. package/dist/response/range.d.ts +19 -0
  205. package/dist/response/range.js +98 -0
  206. package/dist/response/response-headers.d.ts +11 -0
  207. package/dist/response/response-headers.js +21 -0
  208. package/dist/response/response.d.ts +69 -0
  209. package/dist/response/response.js +208 -0
  210. package/dist/response/sse.d.ts +41 -0
  211. package/dist/response/sse.js +73 -0
  212. package/dist/response/static.d.ts +20 -0
  213. package/dist/response/static.js +181 -0
  214. package/dist/response/status.d.ts +5 -0
  215. package/dist/response/status.js +68 -0
  216. package/dist/response/with-headers.d.ts +11 -0
  217. package/dist/response/with-headers.js +47 -0
  218. package/dist/routing/app-types.d.ts +175 -0
  219. package/dist/routing/app-types.js +1 -0
  220. package/dist/routing/app.d.ts +76 -0
  221. package/dist/routing/app.js +137 -0
  222. package/dist/routing/codegen-types.d.ts +17 -0
  223. package/dist/routing/codegen-types.js +1 -0
  224. package/dist/routing/delegate.d.ts +9 -0
  225. package/dist/routing/delegate.js +75 -0
  226. package/dist/routing/dispatch.d.ts +22 -0
  227. package/dist/routing/dispatch.js +255 -0
  228. package/dist/routing/finalize.d.ts +47 -0
  229. package/dist/routing/finalize.js +169 -0
  230. package/dist/routing/gateway-tree.d.ts +19 -0
  231. package/dist/routing/gateway-tree.js +74 -0
  232. package/dist/routing/invalidate-check.d.ts +58 -0
  233. package/dist/routing/invalidate-check.js +124 -0
  234. package/dist/routing/match.d.ts +22 -0
  235. package/dist/routing/match.js +108 -0
  236. package/dist/routing/meta-types.d.ts +34 -0
  237. package/dist/routing/meta-types.js +5 -0
  238. package/dist/routing/middleware-chain.d.ts +16 -0
  239. package/dist/routing/middleware-chain.js +41 -0
  240. package/dist/routing/output-types.d.ts +91 -0
  241. package/dist/routing/output-types.js +1 -0
  242. package/dist/routing/pattern.d.ts +55 -0
  243. package/dist/routing/pattern.js +219 -0
  244. package/dist/routing/record.d.ts +18 -0
  245. package/dist/routing/record.js +4 -0
  246. package/dist/routing/register.d.ts +135 -0
  247. package/dist/routing/register.js +155 -0
  248. package/dist/routing/request-path.d.ts +30 -0
  249. package/dist/routing/request-path.js +173 -0
  250. package/dist/routing/route-builder.d.ts +160 -0
  251. package/dist/routing/route-builder.js +86 -0
  252. package/dist/routing/route-tree.d.ts +18 -0
  253. package/dist/routing/route-tree.js +91 -0
  254. package/dist/routing/settings-chain.d.ts +75 -0
  255. package/dist/routing/settings-chain.js +137 -0
  256. package/dist/routing/settings.d.ts +90 -0
  257. package/dist/routing/settings.js +44 -0
  258. package/dist/routing/tap.d.ts +31 -0
  259. package/dist/routing/tap.js +77 -0
  260. package/dist/routing/tree-merge.d.ts +7 -0
  261. package/dist/routing/tree-merge.js +77 -0
  262. package/dist/routing/tree.d.ts +85 -0
  263. package/dist/routing/tree.js +196 -0
  264. package/dist/routing/types.d.ts +20 -0
  265. package/dist/routing/types.js +1 -0
  266. package/dist/routing/ws-builder.d.ts +62 -0
  267. package/dist/routing/ws-builder.js +109 -0
  268. package/dist/runtime/detect-runtime.d.ts +16 -0
  269. package/dist/runtime/detect-runtime.js +11 -0
  270. package/dist/runtime/optional-peer.d.ts +10 -0
  271. package/dist/runtime/optional-peer.js +19 -0
  272. package/dist/schema/arktype.d.ts +7 -0
  273. package/dist/schema/arktype.js +13 -0
  274. package/dist/schema/canonicalize.d.ts +8 -0
  275. package/dist/schema/canonicalize.js +19 -0
  276. package/dist/schema/effect.d.ts +7 -0
  277. package/dist/schema/effect.js +4 -0
  278. package/dist/schema/naming.d.ts +31 -0
  279. package/dist/schema/naming.js +116 -0
  280. package/dist/schema/sanitize-spec.d.ts +15 -0
  281. package/dist/schema/sanitize-spec.js +43 -0
  282. package/dist/schema/slots.d.ts +15 -0
  283. package/dist/schema/slots.js +179 -0
  284. package/dist/schema/to-json-schema.d.ts +34 -0
  285. package/dist/schema/to-json-schema.js +94 -0
  286. package/dist/schema/valibot.d.ts +4 -0
  287. package/dist/schema/valibot.js +153 -0
  288. package/dist/schema/yup.d.ts +3 -0
  289. package/dist/schema/yup.js +57 -0
  290. package/dist/schema/zod.d.ts +6 -0
  291. package/dist/schema/zod.js +192 -0
  292. package/dist/security/crypto.d.ts +7 -0
  293. package/dist/security/crypto.js +30 -0
  294. package/dist/streaming/producer-stream.d.ts +45 -0
  295. package/dist/streaming/producer-stream.js +251 -0
  296. package/dist/telemetry/fields.d.ts +43 -0
  297. package/dist/telemetry/fields.js +64 -0
  298. package/dist/telemetry/log-format.d.ts +7 -0
  299. package/dist/telemetry/log-format.js +43 -0
  300. package/dist/telemetry/logger.d.ts +44 -0
  301. package/dist/telemetry/logger.js +136 -0
  302. package/dist/telemetry/otel-subpath.d.ts +7 -0
  303. package/dist/telemetry/otel-subpath.js +5 -0
  304. package/dist/telemetry/otel.d.ts +50 -57
  305. package/dist/telemetry/otel.js +54 -130
  306. package/dist/telemetry/request-log.d.ts +22 -0
  307. package/dist/telemetry/request-log.js +83 -0
  308. package/dist/telemetry/request-trace.d.ts +123 -0
  309. package/dist/telemetry/request-trace.js +199 -0
  310. package/dist/telemetry/span-lifecycle.d.ts +11 -0
  311. package/dist/telemetry/span-lifecycle.js +114 -0
  312. package/dist/telemetry/traceparent.d.ts +40 -0
  313. package/dist/telemetry/traceparent.js +73 -0
  314. package/dist/testing/testing.d.ts +42 -0
  315. package/dist/testing/testing.js +101 -0
  316. package/dist/validation/content-type.d.ts +21 -0
  317. package/dist/validation/content-type.js +42 -0
  318. package/dist/validation/standard-schema.d.ts +41 -0
  319. package/dist/validation/standard-schema.js +5 -0
  320. package/dist/validation/validate-input.d.ts +45 -0
  321. package/dist/validation/validate-input.js +174 -0
  322. package/dist/validation/validate-output.d.ts +34 -0
  323. package/dist/validation/validate-output.js +107 -0
  324. package/dist/ws/bun.d.ts +30 -25
  325. package/dist/ws/bun.js +42 -46
  326. package/dist/ws/cloudflare.d.ts +6 -75
  327. package/dist/ws/cloudflare.js +37 -104
  328. package/dist/ws/contract.d.ts +74 -0
  329. package/dist/ws/contract.js +83 -0
  330. package/dist/ws/node.d.ts +12 -21
  331. package/dist/ws/node.js +103 -151
  332. package/dist/ws/origin.d.ts +23 -0
  333. package/dist/ws/origin.js +48 -0
  334. package/dist/ws/route.d.ts +14 -0
  335. package/dist/ws/route.js +5 -0
  336. package/dist/ws/session.d.ts +15 -6
  337. package/dist/ws/session.js +22 -23
  338. package/dist/ws/shared.d.ts +23 -33
  339. package/dist/ws/shared.js +53 -39
  340. package/package.json +169 -251
  341. package/dist/accepts.d.ts +0 -12
  342. package/dist/accepts.d.ts.map +0 -1
  343. package/dist/accepts.js +0 -126
  344. package/dist/accepts.js.map +0 -1
  345. package/dist/body-kind.d.ts +0 -26
  346. package/dist/body-kind.d.ts.map +0 -1
  347. package/dist/body-kind.js +0 -70
  348. package/dist/body-kind.js.map +0 -1
  349. package/dist/body-limit.d.ts +0 -26
  350. package/dist/body-limit.d.ts.map +0 -1
  351. package/dist/body-limit.js +0 -126
  352. package/dist/body-limit.js.map +0 -1
  353. package/dist/build/index.d.ts.map +0 -1
  354. package/dist/build/index.js.map +0 -1
  355. package/dist/cli-args.d.ts +0 -33
  356. package/dist/cli-args.d.ts.map +0 -1
  357. package/dist/cli-args.js +0 -102
  358. package/dist/cli-args.js.map +0 -1
  359. package/dist/cli-go/auth.go +0 -26
  360. package/dist/cli-go/config.go +0 -192
  361. package/dist/cli-go/errors.go +0 -75
  362. package/dist/cli-go/multipart.go +0 -79
  363. package/dist/cli-go/output.go +0 -163
  364. package/dist/cli-go/root.go +0 -30
  365. package/dist/cli-go/stream.go +0 -88
  366. package/dist/cli-go/version.go +0 -5
  367. package/dist/cli.d.ts +0 -3
  368. package/dist/cli.d.ts.map +0 -1
  369. package/dist/cli.js +0 -209
  370. package/dist/cli.js.map +0 -1
  371. package/dist/client/defaults.d.ts +0 -12
  372. package/dist/client/defaults.d.ts.map +0 -1
  373. package/dist/client/defaults.js +0 -48
  374. package/dist/client/defaults.js.map +0 -1
  375. package/dist/client/error.d.ts +0 -49
  376. package/dist/client/error.d.ts.map +0 -1
  377. package/dist/client/error.js +0 -71
  378. package/dist/client/error.js.map +0 -1
  379. package/dist/client/http.d.ts +0 -155
  380. package/dist/client/http.d.ts.map +0 -1
  381. package/dist/client/http.js +0 -571
  382. package/dist/client/http.js.map +0 -1
  383. package/dist/client/index.d.ts +0 -23
  384. package/dist/client/index.d.ts.map +0 -1
  385. package/dist/client/index.js +0 -95
  386. package/dist/client/index.js.map +0 -1
  387. package/dist/client/path.d.ts +0 -26
  388. package/dist/client/path.d.ts.map +0 -1
  389. package/dist/client/path.js +0 -163
  390. package/dist/client/path.js.map +0 -1
  391. package/dist/client/redirect-policy.d.ts +0 -12
  392. package/dist/client/redirect-policy.d.ts.map +0 -1
  393. package/dist/client/redirect-policy.js +0 -20
  394. package/dist/client/redirect-policy.js.map +0 -1
  395. package/dist/client/sdk.d.ts +0 -70
  396. package/dist/client/sdk.d.ts.map +0 -1
  397. package/dist/client/sdk.js +0 -292
  398. package/dist/client/sdk.js.map +0 -1
  399. package/dist/client/sse.d.ts +0 -23
  400. package/dist/client/sse.d.ts.map +0 -1
  401. package/dist/client/sse.js +0 -129
  402. package/dist/client/sse.js.map +0 -1
  403. package/dist/client/types.d.ts +0 -124
  404. package/dist/client/types.d.ts.map +0 -1
  405. package/dist/client/types.js +0 -2
  406. package/dist/client/types.js.map +0 -1
  407. package/dist/client/ws.d.ts +0 -22
  408. package/dist/client/ws.d.ts.map +0 -1
  409. package/dist/client/ws.js +0 -112
  410. package/dist/client/ws.js.map +0 -1
  411. package/dist/client-go/errors.go +0 -236
  412. package/dist/client-go/export.go +0 -44
  413. package/dist/client-go/invalidation.go +0 -371
  414. package/dist/client-go/nullable.go +0 -62
  415. package/dist/client-go/realtime.go +0 -354
  416. package/dist/client-go/result.go +0 -20
  417. package/dist/client-go/runtime.go +0 -975
  418. package/dist/client-go/sse.go +0 -159
  419. package/dist/client-go/transport.go +0 -495
  420. package/dist/client-go/ws.go +0 -128
  421. package/dist/client-info.d.ts +0 -36
  422. package/dist/client-info.d.ts.map +0 -1
  423. package/dist/client-info.js +0 -53
  424. package/dist/client-info.js.map +0 -1
  425. package/dist/client-mcp/README.md +0 -10
  426. package/dist/client-mcp/server.ts +0 -221
  427. package/dist/client-mcp/types.ts +0 -19
  428. package/dist/client-python/_errors.py +0 -115
  429. package/dist/client-python/_invalidation.py +0 -494
  430. package/dist/client-python/_realtime.py +0 -179
  431. package/dist/client-python/_runtime.py +0 -860
  432. package/dist/client-python/_sse.py +0 -155
  433. package/dist/client-python/_transport.py +0 -366
  434. package/dist/client-python/_ws.py +0 -159
  435. package/dist/client-python/py.typed +0 -0
  436. package/dist/client-rust/errors.rs +0 -220
  437. package/dist/client-rust/invalidation.rs +0 -412
  438. package/dist/client-rust/invalidation_sync.rs +0 -93
  439. package/dist/client-rust/nullable.rs +0 -17
  440. package/dist/client-rust/realtime.rs +0 -702
  441. package/dist/client-rust/result.rs +0 -22
  442. package/dist/client-rust/runtime.rs +0 -980
  443. package/dist/client-rust/runtime_sync.rs +0 -484
  444. package/dist/client-rust/sse.rs +0 -188
  445. package/dist/client-rust/ws.rs +0 -167
  446. package/dist/codegen-go-cli.d.ts +0 -22
  447. package/dist/codegen-go-cli.d.ts.map +0 -1
  448. package/dist/codegen-go-cli.js +0 -964
  449. package/dist/codegen-go-cli.js.map +0 -1
  450. package/dist/codegen-go.d.ts +0 -41
  451. package/dist/codegen-go.d.ts.map +0 -1
  452. package/dist/codegen-go.js +0 -872
  453. package/dist/codegen-go.js.map +0 -1
  454. package/dist/codegen-hash.d.ts +0 -3
  455. package/dist/codegen-hash.d.ts.map +0 -1
  456. package/dist/codegen-hash.js +0 -9
  457. package/dist/codegen-hash.js.map +0 -1
  458. package/dist/codegen-ir.d.ts +0 -190
  459. package/dist/codegen-ir.d.ts.map +0 -1
  460. package/dist/codegen-ir.js +0 -661
  461. package/dist/codegen-ir.js.map +0 -1
  462. package/dist/codegen-lang.d.ts +0 -65
  463. package/dist/codegen-lang.d.ts.map +0 -1
  464. package/dist/codegen-lang.js +0 -526
  465. package/dist/codegen-lang.js.map +0 -1
  466. package/dist/codegen-load.d.ts +0 -31
  467. package/dist/codegen-load.d.ts.map +0 -1
  468. package/dist/codegen-load.js +0 -138
  469. package/dist/codegen-load.js.map +0 -1
  470. package/dist/codegen-loaders.d.ts +0 -12
  471. package/dist/codegen-loaders.d.ts.map +0 -1
  472. package/dist/codegen-loaders.js +0 -55
  473. package/dist/codegen-loaders.js.map +0 -1
  474. package/dist/codegen-mcp.d.ts +0 -13
  475. package/dist/codegen-mcp.d.ts.map +0 -1
  476. package/dist/codegen-mcp.js +0 -368
  477. package/dist/codegen-mcp.js.map +0 -1
  478. package/dist/codegen-python.d.ts +0 -33
  479. package/dist/codegen-python.d.ts.map +0 -1
  480. package/dist/codegen-python.js +0 -828
  481. package/dist/codegen-python.js.map +0 -1
  482. package/dist/codegen-route-tree-intern.d.ts +0 -40
  483. package/dist/codegen-route-tree-intern.d.ts.map +0 -1
  484. package/dist/codegen-route-tree-intern.js +0 -221
  485. package/dist/codegen-route-tree-intern.js.map +0 -1
  486. package/dist/codegen-rust.d.ts +0 -18
  487. package/dist/codegen-rust.d.ts.map +0 -1
  488. package/dist/codegen-rust.js +0 -1293
  489. package/dist/codegen-rust.js.map +0 -1
  490. package/dist/codegen-sanitize.d.ts +0 -3
  491. package/dist/codegen-sanitize.d.ts.map +0 -1
  492. package/dist/codegen-sanitize.js +0 -56
  493. package/dist/codegen-sanitize.js.map +0 -1
  494. package/dist/codegen-schema-naming.d.ts +0 -27
  495. package/dist/codegen-schema-naming.d.ts.map +0 -1
  496. package/dist/codegen-schema-naming.js +0 -150
  497. package/dist/codegen-schema-naming.js.map +0 -1
  498. package/dist/codegen-sdk-model.d.ts +0 -71
  499. package/dist/codegen-sdk-model.d.ts.map +0 -1
  500. package/dist/codegen-sdk-model.js +0 -179
  501. package/dist/codegen-sdk-model.js.map +0 -1
  502. package/dist/codegen.d.ts +0 -187
  503. package/dist/codegen.d.ts.map +0 -1
  504. package/dist/codegen.js +0 -4619
  505. package/dist/codegen.js.map +0 -1
  506. package/dist/context.d.ts +0 -86
  507. package/dist/context.d.ts.map +0 -1
  508. package/dist/context.js +0 -242
  509. package/dist/context.js.map +0 -1
  510. package/dist/cookie-sign.d.ts +0 -17
  511. package/dist/cookie-sign.d.ts.map +0 -1
  512. package/dist/cookie-sign.js +0 -104
  513. package/dist/cookie-sign.js.map +0 -1
  514. package/dist/cookie.d.ts +0 -24
  515. package/dist/cookie.d.ts.map +0 -1
  516. package/dist/cookie.js +0 -138
  517. package/dist/cookie.js.map +0 -1
  518. package/dist/cors.d.ts +0 -14
  519. package/dist/cors.d.ts.map +0 -1
  520. package/dist/cors.js +0 -87
  521. package/dist/cors.js.map +0 -1
  522. package/dist/crypto.d.ts +0 -7
  523. package/dist/crypto.d.ts.map +0 -1
  524. package/dist/crypto.js +0 -38
  525. package/dist/crypto.js.map +0 -1
  526. package/dist/csrf.d.ts +0 -28
  527. package/dist/csrf.d.ts.map +0 -1
  528. package/dist/csrf.js +0 -79
  529. package/dist/csrf.js.map +0 -1
  530. package/dist/curl-logger.d.ts +0 -44
  531. package/dist/curl-logger.d.ts.map +0 -1
  532. package/dist/curl-logger.js +0 -199
  533. package/dist/curl-logger.js.map +0 -1
  534. package/dist/detect-runtime.d.ts +0 -16
  535. package/dist/detect-runtime.d.ts.map +0 -1
  536. package/dist/detect-runtime.js +0 -13
  537. package/dist/detect-runtime.js.map +0 -1
  538. package/dist/dict.d.ts +0 -11
  539. package/dist/dict.d.ts.map +0 -1
  540. package/dist/dict.js +0 -13
  541. package/dist/dict.js.map +0 -1
  542. package/dist/error.d.ts +0 -21
  543. package/dist/error.d.ts.map +0 -1
  544. package/dist/error.js +0 -44
  545. package/dist/error.js.map +0 -1
  546. package/dist/errors.d.ts +0 -40
  547. package/dist/errors.d.ts.map +0 -1
  548. package/dist/errors.js +0 -39
  549. package/dist/errors.js.map +0 -1
  550. package/dist/etag.d.ts +0 -11
  551. package/dist/etag.d.ts.map +0 -1
  552. package/dist/etag.js +0 -82
  553. package/dist/etag.js.map +0 -1
  554. package/dist/feature-detect.d.ts +0 -25
  555. package/dist/feature-detect.d.ts.map +0 -1
  556. package/dist/feature-detect.js +0 -144
  557. package/dist/feature-detect.js.map +0 -1
  558. package/dist/feature-load.d.ts +0 -3
  559. package/dist/feature-load.d.ts.map +0 -1
  560. package/dist/feature-load.js +0 -36
  561. package/dist/feature-load.js.map +0 -1
  562. package/dist/feature-slots.d.ts +0 -44
  563. package/dist/feature-slots.d.ts.map +0 -1
  564. package/dist/feature-slots.js +0 -48
  565. package/dist/feature-slots.js.map +0 -1
  566. package/dist/fetch-request.d.ts +0 -10
  567. package/dist/fetch-request.d.ts.map +0 -1
  568. package/dist/fetch-request.js +0 -13
  569. package/dist/fetch-request.js.map +0 -1
  570. package/dist/gen-process.d.ts +0 -15
  571. package/dist/gen-process.d.ts.map +0 -1
  572. package/dist/gen-process.js +0 -43
  573. package/dist/gen-process.js.map +0 -1
  574. package/dist/gen-write.d.ts +0 -19
  575. package/dist/gen-write.d.ts.map +0 -1
  576. package/dist/gen-write.js +0 -120
  577. package/dist/gen-write.js.map +0 -1
  578. package/dist/glob.d.ts +0 -21
  579. package/dist/glob.d.ts.map +0 -1
  580. package/dist/glob.js +0 -115
  581. package/dist/glob.js.map +0 -1
  582. package/dist/go-type-emitter.d.ts +0 -47
  583. package/dist/go-type-emitter.d.ts.map +0 -1
  584. package/dist/go-type-emitter.js +0 -594
  585. package/dist/go-type-emitter.js.map +0 -1
  586. package/dist/honey-response.d.ts +0 -82
  587. package/dist/honey-response.d.ts.map +0 -1
  588. package/dist/honey-response.js +0 -338
  589. package/dist/honey-response.js.map +0 -1
  590. package/dist/i18n-slot.d.ts +0 -15
  591. package/dist/i18n-slot.d.ts.map +0 -1
  592. package/dist/i18n-slot.js +0 -14
  593. package/dist/i18n-slot.js.map +0 -1
  594. package/dist/i18n.d.ts +0 -29
  595. package/dist/i18n.d.ts.map +0 -1
  596. package/dist/i18n.js +0 -250
  597. package/dist/i18n.js.map +0 -1
  598. package/dist/index.d.ts.map +0 -1
  599. package/dist/index.js.map +0 -1
  600. package/dist/init.d.ts +0 -5
  601. package/dist/init.d.ts.map +0 -1
  602. package/dist/init.js +0 -140
  603. package/dist/init.js.map +0 -1
  604. package/dist/input.d.ts +0 -6
  605. package/dist/input.d.ts.map +0 -1
  606. package/dist/input.js +0 -4
  607. package/dist/input.js.map +0 -1
  608. package/dist/invalidate-check.d.ts +0 -61
  609. package/dist/invalidate-check.d.ts.map +0 -1
  610. package/dist/invalidate-check.js +0 -163
  611. package/dist/invalidate-check.js.map +0 -1
  612. package/dist/invoke-user.d.ts +0 -35
  613. package/dist/invoke-user.d.ts.map +0 -1
  614. package/dist/invoke-user.js +0 -73
  615. package/dist/invoke-user.js.map +0 -1
  616. package/dist/ip-restrict.d.ts +0 -24
  617. package/dist/ip-restrict.d.ts.map +0 -1
  618. package/dist/ip-restrict.js +0 -60
  619. package/dist/ip-restrict.js.map +0 -1
  620. package/dist/ip.d.ts +0 -39
  621. package/dist/ip.d.ts.map +0 -1
  622. package/dist/ip.js +0 -209
  623. package/dist/ip.js.map +0 -1
  624. package/dist/logger.d.ts +0 -45
  625. package/dist/logger.d.ts.map +0 -1
  626. package/dist/logger.js +0 -113
  627. package/dist/logger.js.map +0 -1
  628. package/dist/media-type.d.ts +0 -30
  629. package/dist/media-type.d.ts.map +0 -1
  630. package/dist/media-type.js +0 -97
  631. package/dist/media-type.js.map +0 -1
  632. package/dist/meta-spec-merge.d.ts +0 -32
  633. package/dist/meta-spec-merge.d.ts.map +0 -1
  634. package/dist/meta-spec-merge.js +0 -68
  635. package/dist/meta-spec-merge.js.map +0 -1
  636. package/dist/meta-spec.d.ts +0 -94
  637. package/dist/meta-spec.d.ts.map +0 -1
  638. package/dist/meta-spec.js +0 -535
  639. package/dist/meta-spec.js.map +0 -1
  640. package/dist/middleware.d.ts +0 -77
  641. package/dist/middleware.d.ts.map +0 -1
  642. package/dist/middleware.js +0 -253
  643. package/dist/middleware.js.map +0 -1
  644. package/dist/node-request.d.ts +0 -104
  645. package/dist/node-request.d.ts.map +0 -1
  646. package/dist/node-request.js +0 -407
  647. package/dist/node-request.js.map +0 -1
  648. package/dist/node.d.ts +0 -30
  649. package/dist/node.d.ts.map +0 -1
  650. package/dist/node.js +0 -396
  651. package/dist/node.js.map +0 -1
  652. package/dist/openapi/collect.d.ts.map +0 -1
  653. package/dist/openapi/collect.js.map +0 -1
  654. package/dist/openapi/docs-page.d.ts.map +0 -1
  655. package/dist/openapi/docs-page.js.map +0 -1
  656. package/dist/openapi/document.d.ts.map +0 -1
  657. package/dist/openapi/document.js.map +0 -1
  658. package/dist/openapi/json-schema-slot.d.ts +0 -12
  659. package/dist/openapi/json-schema-slot.d.ts.map +0 -1
  660. package/dist/openapi/json-schema-slot.js +0 -38
  661. package/dist/openapi/json-schema-slot.js.map +0 -1
  662. package/dist/openapi/register.d.ts.map +0 -1
  663. package/dist/openapi/register.js.map +0 -1
  664. package/dist/openapi/scalar.d.ts.map +0 -1
  665. package/dist/openapi/scalar.js.map +0 -1
  666. package/dist/openapi/serve.d.ts.map +0 -1
  667. package/dist/openapi/serve.js.map +0 -1
  668. package/dist/openapi/spec-factory.d.ts +0 -65
  669. package/dist/openapi/spec-factory.d.ts.map +0 -1
  670. package/dist/openapi/spec-factory.js +0 -52
  671. package/dist/openapi/spec-factory.js.map +0 -1
  672. package/dist/openapi/spec.d.ts +0 -29
  673. package/dist/openapi/spec.d.ts.map +0 -1
  674. package/dist/openapi/spec.js +0 -50
  675. package/dist/openapi/spec.js.map +0 -1
  676. package/dist/openapi/swagger.d.ts.map +0 -1
  677. package/dist/openapi/swagger.js.map +0 -1
  678. package/dist/pattern.d.ts +0 -71
  679. package/dist/pattern.d.ts.map +0 -1
  680. package/dist/pattern.js +0 -239
  681. package/dist/pattern.js.map +0 -1
  682. package/dist/peer.d.ts +0 -17
  683. package/dist/peer.d.ts.map +0 -1
  684. package/dist/peer.js +0 -50
  685. package/dist/peer.js.map +0 -1
  686. package/dist/plugin.d.ts +0 -228
  687. package/dist/plugin.d.ts.map +0 -1
  688. package/dist/plugin.js +0 -666
  689. package/dist/plugin.js.map +0 -1
  690. package/dist/powered-by.d.ts +0 -7
  691. package/dist/powered-by.d.ts.map +0 -1
  692. package/dist/powered-by.js +0 -11
  693. package/dist/powered-by.js.map +0 -1
  694. package/dist/pretty-json.d.ts +0 -10
  695. package/dist/pretty-json.d.ts.map +0 -1
  696. package/dist/pretty-json.js +0 -47
  697. package/dist/pretty-json.js.map +0 -1
  698. package/dist/producer-stream.d.ts +0 -47
  699. package/dist/producer-stream.d.ts.map +0 -1
  700. package/dist/producer-stream.js +0 -267
  701. package/dist/producer-stream.js.map +0 -1
  702. package/dist/proxy.d.ts +0 -90
  703. package/dist/proxy.d.ts.map +0 -1
  704. package/dist/proxy.js +0 -274
  705. package/dist/proxy.js.map +0 -1
  706. package/dist/python-type-emitter.d.ts +0 -24
  707. package/dist/python-type-emitter.d.ts.map +0 -1
  708. package/dist/python-type-emitter.js +0 -157
  709. package/dist/python-type-emitter.js.map +0 -1
  710. package/dist/realtime/bus.d.ts.map +0 -1
  711. package/dist/realtime/bus.js.map +0 -1
  712. package/dist/realtime/register.d.ts +0 -3
  713. package/dist/realtime/register.d.ts.map +0 -1
  714. package/dist/realtime/register.js +0 -10
  715. package/dist/realtime/register.js.map +0 -1
  716. package/dist/realtime/route.d.ts.map +0 -1
  717. package/dist/realtime/route.js.map +0 -1
  718. package/dist/realtime/server.d.ts.map +0 -1
  719. package/dist/realtime/server.js.map +0 -1
  720. package/dist/request-id.d.ts +0 -19
  721. package/dist/request-id.d.ts.map +0 -1
  722. package/dist/request-id.js +0 -16
  723. package/dist/request-id.js.map +0 -1
  724. package/dist/request-limits.d.ts +0 -3
  725. package/dist/request-limits.d.ts.map +0 -1
  726. package/dist/request-limits.js +0 -3
  727. package/dist/request-limits.js.map +0 -1
  728. package/dist/request-path.d.ts +0 -33
  729. package/dist/request-path.d.ts.map +0 -1
  730. package/dist/request-path.js +0 -178
  731. package/dist/request-path.js.map +0 -1
  732. package/dist/request-to-curl.d.ts +0 -15
  733. package/dist/request-to-curl.d.ts.map +0 -1
  734. package/dist/request-to-curl.js +0 -48
  735. package/dist/request-to-curl.js.map +0 -1
  736. package/dist/response.d.ts +0 -86
  737. package/dist/response.d.ts.map +0 -1
  738. package/dist/response.js +0 -313
  739. package/dist/response.js.map +0 -1
  740. package/dist/rust-type-emitter.d.ts +0 -44
  741. package/dist/rust-type-emitter.d.ts.map +0 -1
  742. package/dist/rust-type-emitter.js +0 -463
  743. package/dist/rust-type-emitter.js.map +0 -1
  744. package/dist/secure-headers.d.ts +0 -16
  745. package/dist/secure-headers.d.ts.map +0 -1
  746. package/dist/secure-headers.js +0 -53
  747. package/dist/secure-headers.js.map +0 -1
  748. package/dist/serve-register.d.ts +0 -6
  749. package/dist/serve-register.d.ts.map +0 -1
  750. package/dist/serve-register.js +0 -9
  751. package/dist/serve-register.js.map +0 -1
  752. package/dist/serve-slot.d.ts +0 -9
  753. package/dist/serve-slot.d.ts.map +0 -1
  754. package/dist/serve-slot.js +0 -52
  755. package/dist/serve-slot.js.map +0 -1
  756. package/dist/serve.d.ts +0 -38
  757. package/dist/serve.d.ts.map +0 -1
  758. package/dist/serve.js +0 -157
  759. package/dist/serve.js.map +0 -1
  760. package/dist/server-timing.d.ts +0 -9
  761. package/dist/server-timing.d.ts.map +0 -1
  762. package/dist/server-timing.js +0 -51
  763. package/dist/server-timing.js.map +0 -1
  764. package/dist/static.d.ts +0 -21
  765. package/dist/static.d.ts.map +0 -1
  766. package/dist/static.js +0 -102
  767. package/dist/static.js.map +0 -1
  768. package/dist/telemetry/otel.d.ts.map +0 -1
  769. package/dist/telemetry/otel.js.map +0 -1
  770. package/dist/testing.d.ts +0 -36
  771. package/dist/testing.d.ts.map +0 -1
  772. package/dist/testing.js +0 -124
  773. package/dist/testing.js.map +0 -1
  774. package/dist/timeout.d.ts +0 -13
  775. package/dist/timeout.d.ts.map +0 -1
  776. package/dist/timeout.js +0 -36
  777. package/dist/timeout.js.map +0 -1
  778. package/dist/tree.d.ts +0 -197
  779. package/dist/tree.d.ts.map +0 -1
  780. package/dist/tree.js +0 -437
  781. package/dist/tree.js.map +0 -1
  782. package/dist/trust.d.ts +0 -21
  783. package/dist/trust.d.ts.map +0 -1
  784. package/dist/trust.js +0 -100
  785. package/dist/trust.js.map +0 -1
  786. package/dist/ts-type-emitter.d.ts +0 -8
  787. package/dist/ts-type-emitter.d.ts.map +0 -1
  788. package/dist/ts-type-emitter.js +0 -150
  789. package/dist/ts-type-emitter.js.map +0 -1
  790. package/dist/type-emitter.d.ts +0 -36
  791. package/dist/type-emitter.d.ts.map +0 -1
  792. package/dist/type-emitter.js +0 -729
  793. package/dist/type-emitter.js.map +0 -1
  794. package/dist/type-extractor.d.ts +0 -43
  795. package/dist/type-extractor.d.ts.map +0 -1
  796. package/dist/type-extractor.js +0 -819
  797. package/dist/type-extractor.js.map +0 -1
  798. package/dist/types.d.ts +0 -467
  799. package/dist/types.d.ts.map +0 -1
  800. package/dist/types.js +0 -96
  801. package/dist/types.js.map +0 -1
  802. package/dist/validation.d.ts +0 -31
  803. package/dist/validation.d.ts.map +0 -1
  804. package/dist/validation.js +0 -335
  805. package/dist/validation.js.map +0 -1
  806. package/dist/with-headers.d.ts +0 -15
  807. package/dist/with-headers.d.ts.map +0 -1
  808. package/dist/with-headers.js +0 -45
  809. package/dist/with-headers.js.map +0 -1
  810. package/dist/ws/bun.d.ts.map +0 -1
  811. package/dist/ws/bun.js.map +0 -1
  812. package/dist/ws/cloudflare.d.ts.map +0 -1
  813. package/dist/ws/cloudflare.js.map +0 -1
  814. package/dist/ws/deno.d.ts +0 -13
  815. package/dist/ws/deno.d.ts.map +0 -1
  816. package/dist/ws/deno.js +0 -133
  817. package/dist/ws/deno.js.map +0 -1
  818. package/dist/ws/node.d.ts.map +0 -1
  819. package/dist/ws/node.js.map +0 -1
  820. package/dist/ws/session.d.ts.map +0 -1
  821. package/dist/ws/session.js.map +0 -1
  822. package/dist/ws/shared.d.ts.map +0 -1
  823. package/dist/ws/shared.js.map +0 -1
  824. package/dist/ws-origin.d.ts +0 -20
  825. package/dist/ws-origin.d.ts.map +0 -1
  826. package/dist/ws-origin.js +0 -41
  827. package/dist/ws-origin.js.map +0 -1
  828. package/dist/yaml.d.ts +0 -18
  829. package/dist/yaml.d.ts.map +0 -1
  830. package/dist/yaml.js +0 -101
  831. package/dist/yaml.js.map +0 -1
  832. package/docs/api-ref/go.md +0 -399
  833. package/docs/api-ref/python.md +0 -399
  834. package/docs/api-ref/rust.md +0 -399
  835. package/docs/api-ref/typescript.md +0 -399
  836. package/docs/invalidate-spec.md +0 -333
  837. package/docs/meta-spec.md +0 -555
  838. package/docs/packaging.md +0 -104
  839. package/docs/regression-matrix/README.md +0 -32
  840. package/docs/regression-matrix/review.md +0 -44
  841. package/docs/regression-matrix/ws1-3.md +0 -97
  842. package/docs/regression-matrix/ws4-8.md +0 -107
  843. package/docs/regression-matrix/ws9-12.md +0 -266
  844. package/docs/sdk.md +0 -798
  845. package/src/accepts.ts +0 -136
  846. package/src/body-kind.ts +0 -67
  847. package/src/body-limit.ts +0 -152
  848. package/src/build/index.ts +0 -217
  849. package/src/cli-args.ts +0 -123
  850. package/src/cli-go/auth.go +0 -26
  851. package/src/cli-go/config.go +0 -192
  852. package/src/cli-go/errors.go +0 -75
  853. package/src/cli-go/multipart.go +0 -79
  854. package/src/cli-go/output.go +0 -163
  855. package/src/cli-go/root.go +0 -30
  856. package/src/cli-go/stream.go +0 -88
  857. package/src/cli-go/version.go +0 -5
  858. package/src/cli.ts +0 -209
  859. package/src/client/defaults.ts +0 -47
  860. package/src/client/error.ts +0 -82
  861. package/src/client/http.ts +0 -737
  862. package/src/client/index.ts +0 -157
  863. package/src/client/path.ts +0 -169
  864. package/src/client/redirect-policy.ts +0 -19
  865. package/src/client/sdk.ts +0 -351
  866. package/src/client/sse.ts +0 -128
  867. package/src/client/types.ts +0 -206
  868. package/src/client/ws.ts +0 -149
  869. package/src/client-go/errors.go +0 -236
  870. package/src/client-go/export.go +0 -44
  871. package/src/client-go/invalidation.go +0 -371
  872. package/src/client-go/nullable.go +0 -62
  873. package/src/client-go/realtime.go +0 -354
  874. package/src/client-go/result.go +0 -20
  875. package/src/client-go/runtime.go +0 -975
  876. package/src/client-go/sse.go +0 -159
  877. package/src/client-go/transport.go +0 -495
  878. package/src/client-go/ws.go +0 -128
  879. package/src/client-info.ts +0 -79
  880. package/src/client-mcp/README.md +0 -10
  881. package/src/client-mcp/server.ts +0 -221
  882. package/src/client-mcp/types.ts +0 -19
  883. package/src/client-python/_errors.py +0 -115
  884. package/src/client-python/_invalidation.py +0 -494
  885. package/src/client-python/_realtime.py +0 -179
  886. package/src/client-python/_runtime.py +0 -860
  887. package/src/client-python/_sse.py +0 -155
  888. package/src/client-python/_transport.py +0 -366
  889. package/src/client-python/_ws.py +0 -159
  890. package/src/client-python/py.typed +0 -0
  891. package/src/client-rust/errors.rs +0 -220
  892. package/src/client-rust/invalidation.rs +0 -412
  893. package/src/client-rust/invalidation_sync.rs +0 -93
  894. package/src/client-rust/nullable.rs +0 -17
  895. package/src/client-rust/realtime.rs +0 -702
  896. package/src/client-rust/result.rs +0 -22
  897. package/src/client-rust/runtime.rs +0 -980
  898. package/src/client-rust/runtime_sync.rs +0 -484
  899. package/src/client-rust/sse.rs +0 -188
  900. package/src/client-rust/ws.rs +0 -167
  901. package/src/codegen-go-cli.ts +0 -1066
  902. package/src/codegen-go.ts +0 -970
  903. package/src/codegen-hash.ts +0 -8
  904. package/src/codegen-ir.ts +0 -812
  905. package/src/codegen-lang.ts +0 -517
  906. package/src/codegen-load.ts +0 -150
  907. package/src/codegen-loaders.ts +0 -50
  908. package/src/codegen-mcp.ts +0 -445
  909. package/src/codegen-python.ts +0 -916
  910. package/src/codegen-route-tree-intern.ts +0 -198
  911. package/src/codegen-rust.ts +0 -1402
  912. package/src/codegen-sanitize.ts +0 -57
  913. package/src/codegen-schema-naming.ts +0 -165
  914. package/src/codegen-sdk-model.ts +0 -228
  915. package/src/codegen.ts +0 -5089
  916. package/src/context.ts +0 -325
  917. package/src/cookie-sign.ts +0 -119
  918. package/src/cookie.ts +0 -143
  919. package/src/cors.ts +0 -95
  920. package/src/crypto.ts +0 -38
  921. package/src/csrf.ts +0 -86
  922. package/src/curl-logger.ts +0 -258
  923. package/src/detect-runtime.ts +0 -17
  924. package/src/dict.ts +0 -12
  925. package/src/error.ts +0 -55
  926. package/src/errors.ts +0 -85
  927. package/src/etag.ts +0 -97
  928. package/src/feature-detect.ts +0 -147
  929. package/src/feature-load.ts +0 -23
  930. package/src/feature-slots.ts +0 -70
  931. package/src/fetch-request.ts +0 -13
  932. package/src/gen-process.ts +0 -42
  933. package/src/gen-write.ts +0 -127
  934. package/src/glob.ts +0 -109
  935. package/src/go-type-emitter.ts +0 -660
  936. package/src/honey-response.ts +0 -379
  937. package/src/i18n-slot.ts +0 -30
  938. package/src/i18n.ts +0 -300
  939. package/src/index.ts +0 -3829
  940. package/src/init.ts +0 -161
  941. package/src/input.ts +0 -8
  942. package/src/invalidate-check.ts +0 -205
  943. package/src/invoke-user.ts +0 -95
  944. package/src/ip-restrict.ts +0 -79
  945. package/src/ip.ts +0 -194
  946. package/src/logger.ts +0 -178
  947. package/src/media-type.ts +0 -104
  948. package/src/meta-spec-merge.ts +0 -80
  949. package/src/meta-spec.ts +0 -718
  950. package/src/middleware.ts +0 -331
  951. package/src/node-request.ts +0 -431
  952. package/src/node.ts +0 -454
  953. package/src/openapi/collect.ts +0 -50
  954. package/src/openapi/docs-page.ts +0 -89
  955. package/src/openapi/document.ts +0 -902
  956. package/src/openapi/json-schema-slot.ts +0 -53
  957. package/src/openapi/register.ts +0 -23
  958. package/src/openapi/scalar.ts +0 -34
  959. package/src/openapi/serve.ts +0 -39
  960. package/src/openapi/spec-factory.ts +0 -100
  961. package/src/openapi/spec.ts +0 -74
  962. package/src/openapi/swagger.ts +0 -35
  963. package/src/pattern.ts +0 -245
  964. package/src/peer.ts +0 -53
  965. package/src/plugin.ts +0 -864
  966. package/src/powered-by.ts +0 -18
  967. package/src/pretty-json.ts +0 -56
  968. package/src/producer-stream.ts +0 -296
  969. package/src/proxy.ts +0 -370
  970. package/src/python-type-emitter.ts +0 -181
  971. package/src/realtime/bus.ts +0 -140
  972. package/src/realtime/register.ts +0 -13
  973. package/src/realtime/route.ts +0 -153
  974. package/src/realtime/server.ts +0 -298
  975. package/src/request-id.ts +0 -32
  976. package/src/request-limits.ts +0 -2
  977. package/src/request-path.ts +0 -165
  978. package/src/request-to-curl.ts +0 -52
  979. package/src/response.ts +0 -411
  980. package/src/rust-type-emitter.ts +0 -548
  981. package/src/secure-headers.ts +0 -74
  982. package/src/serve-register.ts +0 -12
  983. package/src/serve-slot.ts +0 -58
  984. package/src/serve.ts +0 -220
  985. package/src/server-timing.ts +0 -71
  986. package/src/static.ts +0 -112
  987. package/src/telemetry/otel.ts +0 -156
  988. package/src/testing.ts +0 -167
  989. package/src/timeout.ts +0 -45
  990. package/src/tree.ts +0 -558
  991. package/src/trust.ts +0 -117
  992. package/src/ts-type-emitter.ts +0 -168
  993. package/src/type-emitter.ts +0 -760
  994. package/src/type-extractor.ts +0 -855
  995. package/src/types.ts +0 -756
  996. package/src/validation.ts +0 -413
  997. package/src/with-headers.ts +0 -45
  998. package/src/ws/bun.ts +0 -120
  999. package/src/ws/cloudflare.ts +0 -192
  1000. package/src/ws/deno.ts +0 -188
  1001. package/src/ws/node.ts +0 -240
  1002. package/src/ws/session.ts +0 -73
  1003. package/src/ws/shared.ts +0 -140
  1004. package/src/ws-origin.ts +0 -53
  1005. package/src/yaml.ts +0 -103
@@ -1,192 +0,0 @@
1
- import "./session.ts"
2
- import { invokeUser } from "../invoke-user.ts"
3
- import { truncateUtf8 } from "../realtime/route.ts"
4
- import type { WSReadyState } from "../types.ts"
5
- import {
6
- bufferedAmountOf,
7
- CLOSE_TOO_BIG,
8
- CLOSE_TRY_AGAIN,
9
- exceedsPayload,
10
- MAX_CLOSE_REASON,
11
- type ResolvedWSOptions,
12
- resolveWSOptions,
13
- selectProtocol,
14
- sendableCloseCode,
15
- type WSAdapterOptions,
16
- } from "./shared.ts"
17
-
18
- export type { WSAdapterOptions } from "./shared.ts"
19
-
20
- export const WS_SEND_BUFFER_MAX = 32
21
-
22
- export type WSContext<T = unknown> = {
23
- /** Outbound bytes the runtime holds unsent, when it reports them (0 otherwise). Adapters' sockets have it; a hand-written stub may not. */
24
- readonly bufferedAmount?: number
25
- /** Close the connection. A reason longer than 123 UTF-8 bytes is cut to fit. */
26
- close(code?: number, reason?: string): void
27
- raw: T
28
- readyState: WSReadyState
29
- /**
30
- * Send a message; objects are sent as JSON. While the socket is still opening, up to 32
31
- * messages wait for it; after it closed they are dropped. Over the adapter's backpressure
32
- * limit the adapter's policy applies (close with 1013, or drop).
33
- */
34
- send(data: ArrayBuffer | Uint8Array | object | string): void
35
- }
36
-
37
- export type WSHandler<TCtx = unknown> = {
38
- onClose?(ctx: TCtx, ws: WSContext, code: number, reason: string): Promise<void> | void
39
- onError?(ctx: TCtx, ws: WSContext, error: unknown): Promise<void> | void
40
- onMessage?(ctx: TCtx, ws: WSContext, data: ArrayBuffer | string): Promise<void> | void
41
- onOpen?(ctx: TCtx, ws: WSContext): Promise<void> | void
42
- onReconnect?(ctx: TCtx, ws: WSContext, token: string): Promise<void> | void
43
- }
44
-
45
- export type WSPreUpgrade = {
46
- response: Response
47
- socket: WSContext
48
- /** Run `fn` now if the socket is already open, otherwise on the next open. */
49
- whenOpen(fn: () => void): void
50
- }
51
-
52
- export type WSAdapter = {
53
- upgrade(
54
- req: Request,
55
- env: unknown,
56
- handler: WSHandler<unknown>,
57
- ): Promise<{ response: Response; socket: WSContext }> | { response: Response; socket: WSContext }
58
- /**
59
- * Deno requires `Deno.upgradeWebSocket` in the same turn as the serve
60
- * callback. When present, Honey calls this synchronously from `fetch`
61
- * and returns `response` before any middleware Promise.
62
- */
63
- preUpgrade?(req: Request): WSPreUpgrade | undefined
64
- /** Close every open connection (graceful shutdown). */
65
- closeAll?(code: number, reason: string): void
66
- /** The adapter's resolved options. */
67
- readonly options?: ResolvedWSOptions
68
- }
69
-
70
- export type RawSocket = {
71
- close(code?: number, reason?: string): void
72
- readyState: number
73
- send(data: ArrayBuffer | Uint8Array | string): void
74
- }
75
-
76
- export class WSContextImpl<T extends RawSocket = RawSocket> implements WSContext<T> {
77
- raw: T
78
- private sendBuffer: Array<ArrayBuffer | Uint8Array | string> = []
79
- private readonly limits: Pick<ResolvedWSOptions, "backpressureLimit" | "backpressurePolicy"> | null
80
-
81
- constructor(raw: T, opts?: Pick<ResolvedWSOptions, "backpressureLimit" | "backpressurePolicy">) {
82
- this.raw = raw
83
- this.limits = opts ?? null
84
- const target = raw as T & { addEventListener?(type: string, listener: () => void): void }
85
- if (raw.readyState !== 1 && typeof target.addEventListener === "function") {
86
- target.addEventListener("open", () => this.flush())
87
- }
88
- }
89
-
90
- get bufferedAmount(): number {
91
- return bufferedAmountOf(this.raw)
92
- }
93
-
94
- get readyState(): WSReadyState {
95
- return this.raw.readyState as WSReadyState
96
- }
97
-
98
- /** Send what was queued while the socket was opening (adapters without an `open` event call this). */
99
- flush(): void {
100
- const queued = this.sendBuffer
101
- this.sendBuffer = []
102
- for (const msg of queued) this.send(msg)
103
- }
104
-
105
- close(code?: number, reason?: string): void {
106
- this.sendBuffer = []
107
- this.raw.close(code, reason === undefined ? undefined : truncateUtf8(reason, MAX_CLOSE_REASON))
108
- }
109
-
110
- send(data: ArrayBuffer | Uint8Array | object | string): void {
111
- const payload =
112
- typeof data === "string" || data instanceof ArrayBuffer || data instanceof Uint8Array
113
- ? data
114
- : JSON.stringify(data)
115
- const state = this.raw.readyState
116
- if (state === 1) {
117
- const limits = this.limits
118
- if (limits !== null && limits.backpressureLimit > 0 && this.bufferedAmount > limits.backpressureLimit) {
119
- if (limits.backpressurePolicy === "close") this.close(CLOSE_TRY_AGAIN, "slow consumer")
120
- return
121
- }
122
- this.raw.send(payload)
123
- return
124
- }
125
- /* closing or closed: nothing will ever send it */
126
- if (state !== 0) return
127
- if (this.sendBuffer.length >= WS_SEND_BUFFER_MAX) this.sendBuffer.shift()
128
- this.sendBuffer.push(payload)
129
- }
130
- }
131
-
132
- /** Call an adapter event on the handler; whatever it throws is logged, never thrown into the runtime. */
133
- export function fireHandler(phase: string, fn: () => unknown): void {
134
- void invokeUser(fn, { phase: `websocket ${phase}` })
135
- }
136
-
137
- /**
138
- * Cloudflare Workers WebSocket adapter.
139
- * Uses WebSocketPair + server.accept() + addEventListener. `idleTimeout` is not enforced:
140
- * Workers has no ping API and evicts idle sockets itself.
141
- */
142
- export function cfWebSocket(opts?: WSAdapterOptions): WSAdapter {
143
- const options = resolveWSOptions(opts)
144
- return {
145
- options,
146
- upgrade(req: Request, _env: unknown, handler: WSHandler<unknown>) {
147
- type CFWebSocket = RawSocket & { accept(): void }
148
- const Ctor = (globalThis as Record<string, unknown>)["WebSocketPair"] as new () => [CFWebSocket, CFWebSocket]
149
- const [client, server] = new Ctor()
150
- server.accept()
151
- const socket = new WSContextImpl(server, options)
152
-
153
- const raw = server as unknown as EventTarget & RawSocket
154
- if ("addEventListener" in raw) {
155
- raw.addEventListener("message", (evt: Event) => {
156
- const data = (evt as MessageEvent).data as ArrayBuffer | string
157
- if (exceedsPayload(data, options.maxPayload)) {
158
- socket.close(CLOSE_TOO_BIG, "message too big")
159
- return
160
- }
161
- fireHandler("message", () => handler.onMessage?.(undefined, socket, data))
162
- })
163
- raw.addEventListener("close", (evt: Event) => {
164
- const closeEvt = evt as CloseEvent
165
- fireHandler("close", () => handler.onClose?.(undefined, socket, closeEvt.code, closeEvt.reason))
166
- /* echo the close frame so the client's handshake completes; 1005 and 1006 are never sent */
167
- try {
168
- server.close(sendableCloseCode(closeEvt.code), closeEvt.reason)
169
- } catch {
170
- /* already closed */
171
- }
172
- })
173
- raw.addEventListener("error", (evt: Event) => {
174
- fireHandler("error", () => handler.onError?.(undefined, socket, evt))
175
- })
176
- }
177
- fireHandler("open", () => handler.onOpen?.(undefined, socket))
178
-
179
- const headers: Record<string, string> = { upgrade: "websocket" }
180
- const protocol = selectProtocol(req, options)
181
- if (protocol !== null) headers["sec-websocket-protocol"] = protocol
182
- return {
183
- response: new Response(null, {
184
- headers,
185
- status: 101,
186
- webSocket: client,
187
- } as unknown as ResponseInit),
188
- socket,
189
- }
190
- },
191
- }
192
- }
package/src/ws/deno.ts DELETED
@@ -1,188 +0,0 @@
1
- export {
2
- type RawSocket,
3
- type WSAdapter,
4
- type WSAdapterOptions,
5
- type WSContext,
6
- type WSPreUpgrade,
7
- WSContextImpl,
8
- type WSHandler,
9
- } from "./cloudflare.ts"
10
-
11
- import type { WSAdapter, WSHandler, WSPreUpgrade } from "./cloudflare.ts"
12
- import { fireHandler, WSContextImpl } from "./cloudflare.ts"
13
- import {
14
- CLOSE_POLICY,
15
- CLOSE_TOO_BIG,
16
- exceedsPayload,
17
- type ResolvedWSOptions,
18
- resolveWSOptions,
19
- selectProtocol,
20
- type WSAdapterOptions,
21
- } from "./shared.ts"
22
-
23
- type DenoUpgradeOptions = { idleTimeout?: number; protocol?: string }
24
-
25
- type DenoNs = {
26
- Deno: {
27
- upgradeWebSocket(
28
- req: Request,
29
- opts?: DenoUpgradeOptions,
30
- ): {
31
- response: Response
32
- socket: DenoSocket
33
- }
34
- }
35
- }
36
-
37
- type DenoRawSocket = {
38
- binaryType: string
39
- bufferedAmount: number
40
- close(code?: number, reason?: string): void
41
- readyState: number
42
- send(data: ArrayBuffer | Uint8Array | string): void
43
- }
44
-
45
- type DenoSocket = {
46
- addEventListener(type: string, listener: (...args: never[]) => void): void
47
- } & DenoRawSocket
48
-
49
- /** Events that arrive before the route's handler is bound (the `preUpgrade` path). */
50
- const EARLY_EVENTS_MAX = 64
51
-
52
- type DenoEvent =
53
- | { data: ArrayBuffer | string; type: "message" }
54
- | { code: number; reason: string; type: "close" }
55
- | { error: unknown; type: "error" }
56
- | { type: "open" }
57
-
58
- /**
59
- * Listen on a Deno socket right away and deliver events to a handler bound later. Until then up
60
- * to 64 events wait (frames the client sends between the 101 and the end of the middleware
61
- * chain); more close the connection with 1008.
62
- */
63
- function listen(raw: DenoSocket, socket: WSContextImpl<DenoRawSocket>, options: ResolvedWSOptions) {
64
- let handler: WSHandler<unknown> | null = null
65
- let early: DenoEvent[] | null = []
66
-
67
- const deliver = (evt: DenoEvent, h: WSHandler<unknown>): void => {
68
- switch (evt.type) {
69
- case "open":
70
- fireHandler("open", () => h.onOpen?.(undefined, socket))
71
- return
72
- case "message":
73
- fireHandler("message", () => h.onMessage?.(undefined, socket, evt.data))
74
- return
75
- case "close":
76
- fireHandler("close", () => h.onClose?.(undefined, socket, evt.code, evt.reason))
77
- return
78
- case "error":
79
- fireHandler("error", () => h.onError?.(undefined, socket, evt.error))
80
- }
81
- }
82
-
83
- const push = (evt: DenoEvent): void => {
84
- if (handler !== null) {
85
- deliver(evt, handler)
86
- return
87
- }
88
- if (early === null) return
89
- if (early.length >= EARLY_EVENTS_MAX && evt.type === "message") {
90
- early = null
91
- socket.close(CLOSE_POLICY, "too many messages before the handler was ready")
92
- return
93
- }
94
- early.push(evt)
95
- }
96
-
97
- raw.addEventListener("open", () => push({ type: "open" }))
98
- raw.addEventListener("message", (evt: { data: ArrayBuffer | string }) => {
99
- if (exceedsPayload(evt.data, options.maxPayload)) {
100
- socket.close(CLOSE_TOO_BIG, "message too big")
101
- return
102
- }
103
- push({ data: evt.data, type: "message" })
104
- })
105
- raw.addEventListener("close", (evt: { code: number; reason: string }) =>
106
- push({ code: evt.code, reason: evt.reason, type: "close" }),
107
- )
108
- raw.addEventListener("error", (evt: unknown) => push({ error: evt, type: "error" }))
109
-
110
- return {
111
- bind(h: WSHandler<unknown>): void {
112
- handler = h
113
- const queued = early ?? []
114
- early = null
115
- for (const evt of queued) deliver(evt, h)
116
- },
117
- }
118
- }
119
-
120
- /**
121
- * Deno WebSocket adapter.
122
- * Uses Deno.upgradeWebSocket() and addEventListener for event binding.
123
- * Deno pings idle sockets itself (`idleTimeout`, whole seconds); there is no `keepalive` option.
124
- *
125
- * `preUpgrade` calls `Deno.upgradeWebSocket` in the same turn as the serve
126
- * callback (Deno rejects upgrades performed after the first await).
127
- */
128
- export function denoWebSocket(opts?: WSAdapterOptions): WSAdapter {
129
- const options = resolveWSOptions(opts)
130
- const pending = new WeakMap<Request, { bind(h: WSHandler<unknown>): void; pre: WSPreUpgrade }>()
131
- const open = new Set<WSContextImpl<DenoRawSocket>>()
132
-
133
- const start = (req: Request) => {
134
- const denoNs = globalThis as unknown as DenoNs
135
- const protocol = selectProtocol(req, options)
136
- const upgradeOpts: DenoUpgradeOptions = {}
137
- if (protocol !== null) upgradeOpts.protocol = protocol
138
- if (options.idleTimeout > 0) upgradeOpts.idleTimeout = Math.max(Math.ceil(options.idleTimeout / 1000), 1)
139
- const { response, socket: rawSocket } = denoNs.Deno.upgradeWebSocket(req, upgradeOpts)
140
- /* binary frames arrive as ArrayBuffer, as on every other runtime (Deno's default is Blob) */
141
- rawSocket.binaryType = "arraybuffer"
142
- const socket = new WSContextImpl(rawSocket as DenoRawSocket, options)
143
- open.add(socket)
144
- rawSocket.addEventListener("close", () => open.delete(socket))
145
- const listener = listen(rawSocket, socket, options)
146
- return { listener, rawSocket, response, socket }
147
- }
148
-
149
- return {
150
- closeAll(code: number, reason: string) {
151
- for (const socket of open) {
152
- try {
153
- socket.close(code, reason)
154
- } catch {
155
- /* already closing */
156
- }
157
- }
158
- },
159
- options,
160
- preUpgrade(req: Request): WSPreUpgrade {
161
- const { listener, rawSocket, response, socket } = start(req)
162
- const pre: WSPreUpgrade = {
163
- response,
164
- socket,
165
- whenOpen(fn: () => void) {
166
- if (rawSocket.readyState === 1) {
167
- fn()
168
- return
169
- }
170
- rawSocket.addEventListener("open", () => fn())
171
- },
172
- }
173
- pending.set(req, { bind: listener.bind, pre })
174
- return pre
175
- },
176
- upgrade(req: Request, _env: unknown, handler: WSHandler<unknown>) {
177
- const held = pending.get(req)
178
- if (held) {
179
- pending.delete(req)
180
- held.bind(handler)
181
- return held.pre
182
- }
183
- const { listener, response, socket } = start(req)
184
- listener.bind(handler)
185
- return { response, socket }
186
- },
187
- }
188
- }
package/src/ws/node.ts DELETED
@@ -1,240 +0,0 @@
1
- export {
2
- type RawSocket,
3
- type WSAdapter,
4
- type WSAdapterOptions,
5
- type WSContext,
6
- WSContextImpl,
7
- type WSHandler,
8
- } from "./cloudflare.ts"
9
-
10
- import type { WSAdapter, WSHandler } from "./cloudflare.ts"
11
- import { fireHandler, WSContextImpl } from "./cloudflare.ts"
12
- import {
13
- type ResolvedWSOptions,
14
- resolveWSOptions,
15
- selectProtocol,
16
- toArrayBuffer,
17
- type WSAdapterOptions,
18
- } from "./shared.ts"
19
-
20
- type WebSocketServerOptions = {
21
- handleProtocols?: (protocols: Set<string>, req: unknown) => string | false
22
- maxPayload: number
23
- noServer: true
24
- perMessageDeflate: boolean
25
- }
26
-
27
- type WsModule = {
28
- WebSocketServer: new (opts: WebSocketServerOptions) => WssInstance
29
- }
30
-
31
- type NodeWS = {
32
- binaryType: string
33
- bufferedAmount: number
34
- close(code?: number, reason?: string): void
35
- on(event: "close", cb: (code: number, reason: Buffer) => void): void
36
- on(event: "error", cb: (err: unknown) => void): void
37
- on(event: "message", cb: (data: ArrayBuffer | Buffer | Buffer[], isBinary: boolean) => void): void
38
- on(event: "pong" | "ping", cb: () => void): void
39
- ping(): void
40
- readyState: number
41
- send(data: ArrayBuffer | Buffer | Uint8Array | string): void
42
- terminate(): void
43
- }
44
-
45
- /**
46
- * What the Node adapter (`serve()`) puts on `env.__nodeUpgrade`. `upgraded` turns true once the
47
- * 101 is written: from then on the socket belongs to `ws`, and the adapter must not write to it.
48
- */
49
- export type NodeUpgradeData = {
50
- head: Buffer
51
- req: unknown
52
- socket: unknown
53
- upgraded: boolean
54
- }
55
-
56
- type WssInstance = {
57
- handleUpgrade(req: unknown, socket: unknown, head: unknown, cb: (ws: NodeWS) => void): void
58
- }
59
-
60
- type KeepaliveConfig = {
61
- interval: number
62
- timeout: number
63
- }
64
-
65
- export type NodeWebSocketOptions = WSAdapterOptions & {
66
- /** Ping every `interval` ms; a pong missing after `timeout` ms terminates the connection. */
67
- keepalive?: KeepaliveConfig
68
- }
69
-
70
- const WS_MISSING =
71
- 'WebSocket routes on Node need the "ws" package, which is an optional peer dependency of honey. Install it: npm install ws'
72
-
73
- /**
74
- * Node.js WebSocket adapter, on the `ws` package (an optional peer dependency). It reads
75
- * `env.__nodeUpgrade`, which honey's `serve()` puts there for an upgrade request.
76
- */
77
- export function nodeWebSocket(opts?: NodeWebSocketOptions): WSAdapter {
78
- const options: ResolvedWSOptions = resolveWSOptions(opts)
79
- const keepalive = opts?.keepalive
80
- if (keepalive !== undefined && !(keepalive.interval > 0 && keepalive.timeout > 0)) {
81
- throw new TypeError("nodeWebSocket: keepalive.interval and keepalive.timeout must be positive")
82
- }
83
- let wss: WssInstance | null = null
84
- let wssReady: Promise<WssInstance> | null = null
85
- const open = new Set<NodeWS>()
86
- /* the Request being upgraded, for the protocol callback (ws hands it the IncomingMessage) */
87
- let upgrading: Request | null = null
88
-
89
- const ensureWss = (): Promise<WssInstance> => {
90
- if (wss) return Promise.resolve(wss)
91
- if (!wssReady) {
92
- wssReady = import("ws").then(
93
- (mod) => {
94
- const wsModule = mod as unknown as WsModule
95
- wss = new wsModule.WebSocketServer({
96
- handleProtocols: (protocols) => {
97
- if (protocols.size === 0 || upgrading === null) return false
98
- return selectProtocol(upgrading, options) ?? false
99
- },
100
- maxPayload: options.maxPayload,
101
- noServer: true,
102
- perMessageDeflate: false,
103
- })
104
- return wss
105
- },
106
- (err: unknown) => {
107
- /* not cached: installing ws later works without a restart */
108
- wssReady = null
109
- throw new Error(WS_MISSING, { cause: err })
110
- },
111
- )
112
- }
113
- return wssReady
114
- }
115
-
116
- const watch = (ws: NodeWS): void => {
117
- let pingTimer: ReturnType<typeof setInterval> | undefined
118
- let pongTimeout: ReturnType<typeof setTimeout> | undefined
119
- let idleTimer: ReturnType<typeof setInterval> | undefined
120
- let lastSeen = Date.now()
121
- const seen = (): void => {
122
- lastSeen = Date.now()
123
- }
124
-
125
- ws.on("pong", () => {
126
- seen()
127
- if (pongTimeout !== undefined) {
128
- clearTimeout(pongTimeout)
129
- pongTimeout = undefined
130
- }
131
- })
132
- ws.on("ping", seen)
133
-
134
- if (keepalive) {
135
- pingTimer = setInterval(() => {
136
- if (ws.readyState !== 1) return
137
- /* one pong outstanding at a time: a slow pong must not stack timers */
138
- if (pongTimeout !== undefined) return
139
- ws.ping()
140
- pongTimeout = setTimeout(() => ws.terminate(), keepalive.timeout)
141
- }, keepalive.interval)
142
- }
143
-
144
- const idle = options.idleTimeout
145
- if (idle > 0) {
146
- const tick = Math.max(Math.floor(idle / 2), 1)
147
- idleTimer = setInterval(() => {
148
- if (ws.readyState !== 1) return
149
- const quiet = Date.now() - lastSeen
150
- if (quiet >= idle) ws.terminate()
151
- else if (quiet >= tick) ws.ping()
152
- }, tick)
153
- }
154
-
155
- const stop = (): void => {
156
- if (pingTimer !== undefined) clearInterval(pingTimer)
157
- if (pongTimeout !== undefined) clearTimeout(pongTimeout)
158
- if (idleTimer !== undefined) clearInterval(idleTimer)
159
- pingTimer = pongTimeout = idleTimer = undefined
160
- }
161
- ws.on("close", stop)
162
- ws.on("error", stop)
163
- }
164
-
165
- return {
166
- closeAll(code: number, reason: string) {
167
- for (const ws of open) {
168
- try {
169
- ws.close(code, reason)
170
- } catch {
171
- ws.terminate()
172
- }
173
- }
174
- },
175
- options,
176
- async upgrade(req: Request, env: unknown, handler: WSHandler<unknown>) {
177
- const server = await ensureWss()
178
- const upgrade = (env as Record<string, unknown>).__nodeUpgrade as NodeUpgradeData | undefined
179
- if (upgrade === undefined) {
180
- throw new Error("nodeWebSocket: no upgrade socket; serve the app with honey's serve() on Node")
181
- }
182
-
183
- return new Promise((resolve, reject) => {
184
- /* ws answers a malformed handshake itself and never calls back: fail instead of hanging */
185
- const sock = upgrade.socket as { once?(event: "close", cb: () => void): void }
186
- sock.once?.("close", () => {
187
- if (!upgrade.upgraded) reject(new Error("WebSocket handshake failed"))
188
- })
189
- upgrading = req
190
- try {
191
- server.handleUpgrade(upgrade.req, upgrade.socket, upgrade.head, (ws: NodeWS) => {
192
- upgrade.upgraded = true
193
- ws.binaryType = "arraybuffer"
194
- open.add(ws)
195
- const socket = new WSContextImpl(ws, options)
196
-
197
- ws.on("message", (data: ArrayBuffer | Buffer | Buffer[], isBinary: boolean) => {
198
- let payload: ArrayBuffer | string
199
- if (!isBinary) {
200
- /* text frame: a string, as on every other runtime */
201
- payload = Buffer.isBuffer(data)
202
- ? data.toString("utf-8")
203
- : data instanceof ArrayBuffer
204
- ? Buffer.from(data).toString("utf-8")
205
- : Buffer.concat(data).toString("utf-8")
206
- } else if (data instanceof ArrayBuffer) {
207
- payload = data
208
- } else {
209
- payload = toArrayBuffer(Array.isArray(data) ? Buffer.concat(data) : data)
210
- }
211
- fireHandler("message", () => handler.onMessage?.(undefined, socket, payload))
212
- })
213
- watch(ws)
214
-
215
- ws.on("close", (code: number, reason: Buffer) => {
216
- open.delete(ws)
217
- fireHandler("close", () => handler.onClose?.(undefined, socket, code, reason.toString()))
218
- })
219
-
220
- ws.on("error", (err: unknown) => {
221
- fireHandler("error", () => handler.onError?.(undefined, socket, err))
222
- })
223
-
224
- fireHandler("open", () => handler.onOpen?.(undefined, socket))
225
-
226
- /* Node's Response rejects status 101 (Fetch spec: 200-599 only).
227
- Create a valid Response and override status for the sentinel check. */
228
- const resp = new Response(null)
229
- Object.defineProperty(resp, "status", { value: 101 })
230
- resolve({ response: resp, socket })
231
- })
232
- } catch (err) {
233
- reject(err)
234
- } finally {
235
- upgrading = null
236
- }
237
- })
238
- },
239
- }
240
- }
package/src/ws/session.ts DELETED
@@ -1,73 +0,0 @@
1
- /**
2
- * The server side of one websocket route connection: the user's callbacks run on one ordered
3
- * queue (open, then messages, then close), each contained, with a cap on waiting messages.
4
- * Every honey adapter imports this module, which registers it, so the core never bundles it
5
- * for an app without websockets.
6
- */
7
- import { registerFeature } from "../feature-slots.ts"
8
- import { createEventQueue, invokeUser, type InvokeLogger } from "../invoke-user.ts"
9
- import { originAllowed } from "../ws-origin.ts"
10
- import type { WSContext, WSHandler } from "./cloudflare.ts"
11
-
12
- /** Messages one websocket connection may have waiting for its handler; more close it with 1008. */
13
- const WS_PENDING_MAX = 1024
14
-
15
- /** `callbacks` are the route's own; each receives the route's request context `ctx` first. */
16
- export function createWsSession(opts: {
17
- callbacks: WSHandler<unknown>
18
- ctx: unknown
19
- log: InvokeLogger | null
20
- reconnectToken: string | null
21
- route: string
22
- }): WSHandler<unknown> {
23
- const { callbacks, ctx, log, reconnectToken, route } = opts
24
- const { onClose, onError, onMessage, onOpen, onReconnect } = callbacks
25
- const queue = createEventQueue()
26
- let pending = 0
27
-
28
- const run = (phase: string, ws: WSContext, fn: () => unknown): Promise<unknown> =>
29
- invokeUser(fn, {
30
- fields: { route },
31
- log,
32
- onError: onError ? (err) => onError(ctx, ws, err) : null,
33
- phase: `websocket ${phase}`,
34
- })
35
-
36
- return {
37
- onClose: (_ctx, ws, code, reason) => {
38
- if (onClose) void queue.push(() => run("close", ws, () => onClose(ctx, ws, code, reason)))
39
- },
40
- /* a transport error: tell onError once; if onError throws, that is logged */
41
- onError: (_ctx, ws, error) => {
42
- void queue.push(() =>
43
- invokeUser(() => (onError ? onError(ctx, ws, error) : Promise.reject(error)), {
44
- fields: { route },
45
- log,
46
- phase: "websocket error",
47
- }),
48
- )
49
- },
50
- onMessage: (_ctx, ws, data) => {
51
- if (!onMessage) return
52
- if (pending >= WS_PENDING_MAX) {
53
- ws.close(1008, "too many pending messages")
54
- return
55
- }
56
- pending++
57
- void queue.push(() =>
58
- run("message", ws, () => onMessage(ctx, ws, data)).finally(() => {
59
- pending--
60
- }),
61
- )
62
- },
63
- onOpen: (_ctx, ws) => {
64
- if (reconnectToken && onReconnect) {
65
- void queue.push(() => run("open", ws, () => onReconnect(ctx, ws, reconnectToken)))
66
- } else if (onOpen) {
67
- void queue.push(() => run("open", ws, () => onOpen(ctx, ws)))
68
- }
69
- },
70
- }
71
- }
72
-
73
- registerFeature("ws", { createWsSession, originAllowed })