@lovrozagar/honey 0.6.5 → 0.7.0

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 (674) hide show
  1. package/README.md +514 -192
  2. package/bin/honey.js +25 -0
  3. package/dist/accepts.d.ts +7 -1
  4. package/dist/accepts.d.ts.map +1 -1
  5. package/dist/accepts.js +126 -0
  6. package/dist/accepts.js.map +1 -0
  7. package/dist/body-kind.d.ts +26 -0
  8. package/dist/body-kind.d.ts.map +1 -0
  9. package/dist/body-kind.js +70 -0
  10. package/dist/body-kind.js.map +1 -0
  11. package/dist/body-limit.d.ts +5 -1
  12. package/dist/body-limit.d.ts.map +1 -1
  13. package/dist/body-limit.js +126 -0
  14. package/dist/body-limit.js.map +1 -0
  15. package/dist/build/index.d.ts +19 -3
  16. package/dist/build/index.d.ts.map +1 -1
  17. package/dist/build/index.js +173 -0
  18. package/dist/build/index.js.map +1 -0
  19. package/dist/cli-args.d.ts +33 -0
  20. package/dist/cli-args.d.ts.map +1 -0
  21. package/dist/cli-args.js +102 -0
  22. package/dist/cli-args.js.map +1 -0
  23. package/dist/cli-go/auth.go +26 -0
  24. package/dist/cli-go/config.go +192 -0
  25. package/dist/cli-go/errors.go +75 -0
  26. package/dist/cli-go/multipart.go +79 -0
  27. package/dist/cli-go/output.go +163 -0
  28. package/dist/cli-go/root.go +30 -0
  29. package/dist/cli-go/stream.go +88 -0
  30. package/dist/cli-go/version.go +5 -0
  31. package/dist/cli.d.ts +1 -1
  32. package/dist/cli.js +209 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/client/defaults.js +48 -0
  35. package/dist/client/defaults.js.map +1 -0
  36. package/dist/client/error.d.ts +35 -0
  37. package/dist/client/error.d.ts.map +1 -1
  38. package/dist/client/error.js +71 -0
  39. package/dist/client/error.js.map +1 -0
  40. package/dist/client/http.d.ts +67 -8
  41. package/dist/client/http.d.ts.map +1 -1
  42. package/dist/client/http.js +571 -0
  43. package/dist/client/http.js.map +1 -0
  44. package/dist/client/index.d.ts +3 -2
  45. package/dist/client/index.d.ts.map +1 -1
  46. package/dist/client/index.js +95 -0
  47. package/dist/client/index.js.map +1 -0
  48. package/dist/client/path.d.ts +26 -0
  49. package/dist/client/path.d.ts.map +1 -0
  50. package/dist/client/path.js +163 -0
  51. package/dist/client/path.js.map +1 -0
  52. package/dist/client/redirect-policy.d.ts +12 -0
  53. package/dist/client/redirect-policy.d.ts.map +1 -0
  54. package/dist/client/redirect-policy.js +20 -0
  55. package/dist/client/redirect-policy.js.map +1 -0
  56. package/dist/client/sdk.d.ts +36 -0
  57. package/dist/client/sdk.d.ts.map +1 -1
  58. package/dist/client/sdk.js +292 -0
  59. package/dist/client/sdk.js.map +1 -0
  60. package/dist/client/sse.d.ts +13 -0
  61. package/dist/client/sse.d.ts.map +1 -1
  62. package/dist/client/sse.js +129 -0
  63. package/dist/client/sse.js.map +1 -0
  64. package/dist/client/types.js +2 -0
  65. package/dist/client/types.js.map +1 -0
  66. package/dist/client/ws.d.ts +9 -2
  67. package/dist/client/ws.d.ts.map +1 -1
  68. package/dist/client/ws.js +112 -0
  69. package/dist/client/ws.js.map +1 -0
  70. package/dist/client-go/errors.go +236 -0
  71. package/dist/client-go/export.go +44 -0
  72. package/dist/client-go/invalidation.go +371 -0
  73. package/dist/client-go/nullable.go +62 -0
  74. package/dist/client-go/realtime.go +354 -0
  75. package/dist/client-go/result.go +20 -0
  76. package/dist/client-go/runtime.go +975 -0
  77. package/dist/client-go/sse.go +159 -0
  78. package/dist/client-go/transport.go +495 -0
  79. package/dist/client-go/ws.go +128 -0
  80. package/dist/client-info.d.ts +36 -0
  81. package/dist/client-info.d.ts.map +1 -0
  82. package/dist/client-info.js +53 -0
  83. package/dist/client-info.js.map +1 -0
  84. package/dist/client-mcp/README.md +10 -0
  85. package/dist/client-mcp/server.ts +221 -0
  86. package/dist/client-mcp/types.ts +19 -0
  87. package/dist/client-python/_errors.py +115 -0
  88. package/dist/client-python/_invalidation.py +494 -0
  89. package/dist/client-python/_realtime.py +179 -0
  90. package/dist/client-python/_runtime.py +860 -0
  91. package/dist/client-python/_sse.py +155 -0
  92. package/dist/client-python/_transport.py +366 -0
  93. package/dist/client-python/_ws.py +159 -0
  94. package/dist/client-python/py.typed +0 -0
  95. package/dist/client-rust/errors.rs +220 -0
  96. package/dist/client-rust/invalidation.rs +412 -0
  97. package/dist/client-rust/invalidation_sync.rs +93 -0
  98. package/dist/client-rust/nullable.rs +17 -0
  99. package/dist/client-rust/realtime.rs +702 -0
  100. package/dist/client-rust/result.rs +22 -0
  101. package/dist/client-rust/runtime.rs +980 -0
  102. package/dist/client-rust/runtime_sync.rs +484 -0
  103. package/dist/client-rust/sse.rs +188 -0
  104. package/dist/client-rust/ws.rs +167 -0
  105. package/dist/codegen-go-cli.d.ts.map +1 -1
  106. package/dist/codegen-go-cli.js +964 -0
  107. package/dist/codegen-go-cli.js.map +1 -0
  108. package/dist/codegen-go.d.ts +15 -3
  109. package/dist/codegen-go.d.ts.map +1 -1
  110. package/dist/codegen-go.js +872 -0
  111. package/dist/codegen-go.js.map +1 -0
  112. package/dist/codegen-hash.js +9 -0
  113. package/dist/codegen-hash.js.map +1 -0
  114. package/dist/codegen-ir.d.ts +69 -2
  115. package/dist/codegen-ir.d.ts.map +1 -1
  116. package/dist/codegen-ir.js +661 -0
  117. package/dist/codegen-ir.js.map +1 -0
  118. package/dist/codegen-lang.d.ts +65 -0
  119. package/dist/codegen-lang.d.ts.map +1 -0
  120. package/dist/codegen-lang.js +526 -0
  121. package/dist/codegen-lang.js.map +1 -0
  122. package/dist/codegen-load.d.ts +31 -0
  123. package/dist/codegen-load.d.ts.map +1 -0
  124. package/dist/codegen-load.js +138 -0
  125. package/dist/codegen-load.js.map +1 -0
  126. package/dist/codegen-loaders.js +55 -0
  127. package/dist/codegen-loaders.js.map +1 -0
  128. package/dist/codegen-mcp.d.ts.map +1 -1
  129. package/dist/codegen-mcp.js +368 -0
  130. package/dist/codegen-mcp.js.map +1 -0
  131. package/dist/codegen-python.d.ts +13 -1
  132. package/dist/codegen-python.d.ts.map +1 -1
  133. package/dist/codegen-python.js +828 -0
  134. package/dist/codegen-python.js.map +1 -0
  135. package/dist/codegen-route-tree-intern.d.ts +15 -5
  136. package/dist/codegen-route-tree-intern.d.ts.map +1 -1
  137. package/dist/codegen-route-tree-intern.js +221 -0
  138. package/dist/codegen-route-tree-intern.js.map +1 -0
  139. package/dist/codegen-rust.d.ts.map +1 -1
  140. package/dist/codegen-rust.js +1293 -0
  141. package/dist/codegen-rust.js.map +1 -0
  142. package/dist/codegen-sanitize.d.ts.map +1 -1
  143. package/dist/codegen-sanitize.js +56 -0
  144. package/dist/codegen-sanitize.js.map +1 -0
  145. package/dist/codegen-schema-naming.d.ts +5 -0
  146. package/dist/codegen-schema-naming.d.ts.map +1 -1
  147. package/dist/codegen-schema-naming.js +150 -0
  148. package/dist/codegen-schema-naming.js.map +1 -0
  149. package/dist/codegen-sdk-model.d.ts +71 -0
  150. package/dist/codegen-sdk-model.d.ts.map +1 -0
  151. package/dist/codegen-sdk-model.js +179 -0
  152. package/dist/codegen-sdk-model.js.map +1 -0
  153. package/dist/codegen.d.ts +41 -23
  154. package/dist/codegen.d.ts.map +1 -1
  155. package/dist/codegen.js +4610 -0
  156. package/dist/codegen.js.map +1 -0
  157. package/dist/context.d.ts +36 -6
  158. package/dist/context.d.ts.map +1 -1
  159. package/dist/context.js +242 -0
  160. package/dist/context.js.map +1 -0
  161. package/dist/cookie-sign.d.ts +16 -2
  162. package/dist/cookie-sign.d.ts.map +1 -1
  163. package/dist/cookie-sign.js +104 -0
  164. package/dist/cookie-sign.js.map +1 -0
  165. package/dist/cookie.d.ts +12 -0
  166. package/dist/cookie.d.ts.map +1 -1
  167. package/dist/cookie.js +138 -0
  168. package/dist/cookie.js.map +1 -0
  169. package/dist/cors.d.ts +1 -0
  170. package/dist/cors.d.ts.map +1 -1
  171. package/dist/cors.js +87 -0
  172. package/dist/cors.js.map +1 -0
  173. package/dist/crypto.d.ts +6 -1
  174. package/dist/crypto.d.ts.map +1 -1
  175. package/dist/crypto.js +38 -0
  176. package/dist/crypto.js.map +1 -0
  177. package/dist/csrf.d.ts +19 -0
  178. package/dist/csrf.d.ts.map +1 -1
  179. package/dist/csrf.js +79 -0
  180. package/dist/csrf.js.map +1 -0
  181. package/dist/curl-logger.d.ts +14 -3
  182. package/dist/curl-logger.d.ts.map +1 -1
  183. package/dist/curl-logger.js +199 -0
  184. package/dist/curl-logger.js.map +1 -0
  185. package/dist/detect-runtime.js +13 -0
  186. package/dist/detect-runtime.js.map +1 -0
  187. package/dist/dict.d.ts +11 -0
  188. package/dist/dict.d.ts.map +1 -0
  189. package/dist/dict.js +13 -0
  190. package/dist/dict.js.map +1 -0
  191. package/dist/error.d.ts.map +1 -1
  192. package/dist/error.js +44 -0
  193. package/dist/error.js.map +1 -0
  194. package/dist/errors.js +39 -0
  195. package/dist/errors.js.map +1 -0
  196. package/dist/etag.d.ts +2 -0
  197. package/dist/etag.d.ts.map +1 -1
  198. package/dist/etag.js +82 -0
  199. package/dist/etag.js.map +1 -0
  200. package/dist/feature-detect.d.ts +25 -0
  201. package/dist/feature-detect.d.ts.map +1 -0
  202. package/dist/feature-detect.js +144 -0
  203. package/dist/feature-detect.js.map +1 -0
  204. package/dist/feature-load.js +36 -0
  205. package/dist/feature-load.js.map +1 -0
  206. package/dist/feature-slots.d.ts +44 -0
  207. package/dist/feature-slots.d.ts.map +1 -0
  208. package/dist/feature-slots.js +48 -0
  209. package/dist/feature-slots.js.map +1 -0
  210. package/dist/fetch-request.d.ts +10 -0
  211. package/dist/fetch-request.d.ts.map +1 -0
  212. package/dist/fetch-request.js +13 -0
  213. package/dist/fetch-request.js.map +1 -0
  214. package/dist/gen-process.d.ts +15 -0
  215. package/dist/gen-process.d.ts.map +1 -0
  216. package/dist/gen-process.js +43 -0
  217. package/dist/gen-process.js.map +1 -0
  218. package/dist/gen-write.d.ts +19 -0
  219. package/dist/gen-write.d.ts.map +1 -0
  220. package/dist/gen-write.js +120 -0
  221. package/dist/gen-write.js.map +1 -0
  222. package/dist/glob.d.ts +21 -0
  223. package/dist/glob.d.ts.map +1 -0
  224. package/dist/glob.js +115 -0
  225. package/dist/glob.js.map +1 -0
  226. package/dist/go-type-emitter.d.ts +18 -4
  227. package/dist/go-type-emitter.d.ts.map +1 -1
  228. package/dist/go-type-emitter.js +594 -0
  229. package/dist/go-type-emitter.js.map +1 -0
  230. package/dist/honey-response.d.ts.map +1 -1
  231. package/dist/honey-response.js +338 -0
  232. package/dist/honey-response.js.map +1 -0
  233. package/dist/i18n-slot.d.ts +8 -0
  234. package/dist/i18n-slot.d.ts.map +1 -1
  235. package/dist/i18n-slot.js +14 -0
  236. package/dist/i18n-slot.js.map +1 -0
  237. package/dist/i18n.d.ts +3 -0
  238. package/dist/i18n.d.ts.map +1 -1
  239. package/dist/i18n.js +250 -0
  240. package/dist/i18n.js.map +1 -0
  241. package/dist/index.d.ts +410 -149
  242. package/dist/index.d.ts.map +1 -1
  243. package/dist/index.js +2324 -0
  244. package/dist/index.js.map +1 -0
  245. package/dist/init.d.ts +3 -5
  246. package/dist/init.d.ts.map +1 -1
  247. package/dist/init.js +140 -0
  248. package/dist/init.js.map +1 -0
  249. package/dist/input.js +4 -0
  250. package/dist/input.js.map +1 -0
  251. package/dist/invalidate-check.d.ts +11 -0
  252. package/dist/invalidate-check.d.ts.map +1 -1
  253. package/dist/invalidate-check.js +163 -0
  254. package/dist/invalidate-check.js.map +1 -0
  255. package/dist/invoke-user.d.ts +35 -0
  256. package/dist/invoke-user.d.ts.map +1 -0
  257. package/dist/invoke-user.js +73 -0
  258. package/dist/invoke-user.js.map +1 -0
  259. package/dist/ip-restrict.d.ts +13 -1
  260. package/dist/ip-restrict.d.ts.map +1 -1
  261. package/dist/ip-restrict.js +60 -0
  262. package/dist/ip-restrict.js.map +1 -0
  263. package/dist/ip.d.ts +39 -0
  264. package/dist/ip.d.ts.map +1 -0
  265. package/dist/ip.js +209 -0
  266. package/dist/ip.js.map +1 -0
  267. package/dist/logger.d.ts.map +1 -1
  268. package/dist/logger.js +113 -0
  269. package/dist/logger.js.map +1 -0
  270. package/dist/media-type.d.ts +30 -0
  271. package/dist/media-type.d.ts.map +1 -0
  272. package/dist/media-type.js +97 -0
  273. package/dist/media-type.js.map +1 -0
  274. package/dist/meta-spec-merge.d.ts +32 -0
  275. package/dist/meta-spec-merge.d.ts.map +1 -0
  276. package/dist/meta-spec-merge.js +68 -0
  277. package/dist/meta-spec-merge.js.map +1 -0
  278. package/dist/meta-spec.d.ts +16 -3
  279. package/dist/meta-spec.d.ts.map +1 -1
  280. package/dist/meta-spec.js +535 -0
  281. package/dist/meta-spec.js.map +1 -0
  282. package/dist/middleware.d.ts +23 -6
  283. package/dist/middleware.d.ts.map +1 -1
  284. package/dist/middleware.js +253 -0
  285. package/dist/middleware.js.map +1 -0
  286. package/dist/node-request.d.ts +57 -12
  287. package/dist/node-request.d.ts.map +1 -1
  288. package/dist/node-request.js +407 -0
  289. package/dist/node-request.js.map +1 -0
  290. package/dist/node.d.ts +20 -3
  291. package/dist/node.d.ts.map +1 -1
  292. package/dist/node.js +396 -0
  293. package/dist/node.js.map +1 -0
  294. package/dist/openapi/collect.d.ts +6 -3
  295. package/dist/openapi/collect.d.ts.map +1 -1
  296. package/dist/openapi/collect.js +30 -0
  297. package/dist/openapi/collect.js.map +1 -0
  298. package/dist/openapi/docs-page.d.ts +42 -0
  299. package/dist/openapi/docs-page.d.ts.map +1 -0
  300. package/dist/openapi/docs-page.js +80 -0
  301. package/dist/openapi/docs-page.js.map +1 -0
  302. package/dist/openapi/document.d.ts +4 -0
  303. package/dist/openapi/document.d.ts.map +1 -1
  304. package/dist/openapi/document.js +785 -0
  305. package/dist/openapi/document.js.map +1 -0
  306. package/dist/openapi/json-schema-slot.d.ts +7 -0
  307. package/dist/openapi/json-schema-slot.d.ts.map +1 -1
  308. package/dist/openapi/json-schema-slot.js +38 -0
  309. package/dist/openapi/json-schema-slot.js.map +1 -0
  310. package/dist/openapi/register.d.ts.map +1 -1
  311. package/dist/openapi/register.js +20 -0
  312. package/dist/openapi/register.js.map +1 -0
  313. package/dist/openapi/scalar.d.ts +3 -1
  314. package/dist/openapi/scalar.d.ts.map +1 -1
  315. package/dist/openapi/scalar.js +21 -0
  316. package/dist/openapi/scalar.js.map +1 -0
  317. package/dist/openapi/serve.d.ts +9 -0
  318. package/dist/openapi/serve.d.ts.map +1 -0
  319. package/dist/openapi/serve.js +36 -0
  320. package/dist/openapi/serve.js.map +1 -0
  321. package/dist/openapi/spec-factory.d.ts +30 -1
  322. package/dist/openapi/spec-factory.d.ts.map +1 -1
  323. package/dist/openapi/spec-factory.js +52 -0
  324. package/dist/openapi/spec-factory.js.map +1 -0
  325. package/dist/openapi/spec.d.ts +14 -5
  326. package/dist/openapi/spec.d.ts.map +1 -1
  327. package/dist/openapi/spec.js +50 -0
  328. package/dist/openapi/spec.js.map +1 -0
  329. package/dist/openapi/swagger.d.ts +3 -1
  330. package/dist/openapi/swagger.d.ts.map +1 -1
  331. package/dist/openapi/swagger.js +22 -0
  332. package/dist/openapi/swagger.js.map +1 -0
  333. package/dist/pattern.d.ts +71 -0
  334. package/dist/pattern.d.ts.map +1 -0
  335. package/dist/pattern.js +239 -0
  336. package/dist/pattern.js.map +1 -0
  337. package/dist/peer.d.ts +17 -0
  338. package/dist/peer.d.ts.map +1 -0
  339. package/dist/peer.js +50 -0
  340. package/dist/peer.js.map +1 -0
  341. package/dist/plugin.d.ts +67 -16
  342. package/dist/plugin.d.ts.map +1 -1
  343. package/dist/plugin.js +649 -0
  344. package/dist/plugin.js.map +1 -0
  345. package/dist/powered-by.d.ts.map +1 -1
  346. package/dist/powered-by.js +11 -0
  347. package/dist/powered-by.js.map +1 -0
  348. package/dist/pretty-json.d.ts.map +1 -1
  349. package/dist/pretty-json.js +47 -0
  350. package/dist/pretty-json.js.map +1 -0
  351. package/dist/producer-stream.d.ts +47 -0
  352. package/dist/producer-stream.d.ts.map +1 -0
  353. package/dist/producer-stream.js +267 -0
  354. package/dist/producer-stream.js.map +1 -0
  355. package/dist/proxy.d.ts +47 -8
  356. package/dist/proxy.d.ts.map +1 -1
  357. package/dist/proxy.js +274 -0
  358. package/dist/proxy.js.map +1 -0
  359. package/dist/python-type-emitter.d.ts +14 -1
  360. package/dist/python-type-emitter.d.ts.map +1 -1
  361. package/dist/python-type-emitter.js +157 -0
  362. package/dist/python-type-emitter.js.map +1 -0
  363. package/dist/realtime/bus.d.ts +17 -1
  364. package/dist/realtime/bus.d.ts.map +1 -1
  365. package/dist/realtime/bus.js +112 -0
  366. package/dist/realtime/bus.js.map +1 -0
  367. package/dist/realtime/register.d.ts +3 -0
  368. package/dist/realtime/register.d.ts.map +1 -0
  369. package/dist/realtime/register.js +10 -0
  370. package/dist/realtime/register.js.map +1 -0
  371. package/dist/realtime/route.d.ts +65 -26
  372. package/dist/realtime/route.d.ts.map +1 -1
  373. package/dist/realtime/route.js +72 -0
  374. package/dist/realtime/route.js.map +1 -0
  375. package/dist/realtime/server.d.ts +43 -0
  376. package/dist/realtime/server.d.ts.map +1 -0
  377. package/dist/realtime/server.js +255 -0
  378. package/dist/realtime/server.js.map +1 -0
  379. package/dist/request-id.d.ts +7 -0
  380. package/dist/request-id.d.ts.map +1 -1
  381. package/dist/request-id.js +16 -0
  382. package/dist/request-id.js.map +1 -0
  383. package/dist/request-limits.d.ts +3 -0
  384. package/dist/request-limits.d.ts.map +1 -0
  385. package/dist/request-limits.js +3 -0
  386. package/dist/request-limits.js.map +1 -0
  387. package/dist/request-path.d.ts +33 -0
  388. package/dist/request-path.d.ts.map +1 -0
  389. package/dist/request-path.js +178 -0
  390. package/dist/request-path.js.map +1 -0
  391. package/dist/request-to-curl.d.ts +7 -1
  392. package/dist/request-to-curl.d.ts.map +1 -1
  393. package/dist/request-to-curl.js +48 -0
  394. package/dist/request-to-curl.js.map +1 -0
  395. package/dist/response.d.ts +25 -2
  396. package/dist/response.d.ts.map +1 -1
  397. package/dist/response.js +313 -0
  398. package/dist/response.js.map +1 -0
  399. package/dist/rust-type-emitter.d.ts +14 -2
  400. package/dist/rust-type-emitter.d.ts.map +1 -1
  401. package/dist/rust-type-emitter.js +463 -0
  402. package/dist/rust-type-emitter.js.map +1 -0
  403. package/dist/secure-headers.d.ts.map +1 -1
  404. package/dist/secure-headers.js +53 -0
  405. package/dist/secure-headers.js.map +1 -0
  406. package/dist/serve-register.d.ts +4 -0
  407. package/dist/serve-register.d.ts.map +1 -1
  408. package/dist/serve-register.js +9 -0
  409. package/dist/serve-register.js.map +1 -0
  410. package/dist/serve-slot.d.ts +3 -0
  411. package/dist/serve-slot.d.ts.map +1 -1
  412. package/dist/serve-slot.js +52 -0
  413. package/dist/serve-slot.js.map +1 -0
  414. package/dist/serve.d.ts +18 -1
  415. package/dist/serve.d.ts.map +1 -1
  416. package/dist/serve.js +157 -0
  417. package/dist/serve.js.map +1 -0
  418. package/dist/server-timing.d.ts.map +1 -1
  419. package/dist/server-timing.js +51 -0
  420. package/dist/server-timing.js.map +1 -0
  421. package/dist/static.d.ts +9 -0
  422. package/dist/static.d.ts.map +1 -1
  423. package/dist/static.js +102 -0
  424. package/dist/static.js.map +1 -0
  425. package/dist/telemetry/otel.d.ts +2 -0
  426. package/dist/telemetry/otel.d.ts.map +1 -1
  427. package/dist/telemetry/otel.js +135 -0
  428. package/dist/telemetry/otel.js.map +1 -0
  429. package/dist/testing.d.ts +12 -0
  430. package/dist/testing.d.ts.map +1 -1
  431. package/dist/testing.js +124 -0
  432. package/dist/testing.js.map +1 -0
  433. package/dist/timeout.d.ts +6 -0
  434. package/dist/timeout.d.ts.map +1 -1
  435. package/dist/timeout.js +36 -0
  436. package/dist/timeout.js.map +1 -0
  437. package/dist/tree.d.ts +133 -36
  438. package/dist/tree.d.ts.map +1 -1
  439. package/dist/tree.js +437 -0
  440. package/dist/tree.js.map +1 -0
  441. package/dist/trust.d.ts +21 -0
  442. package/dist/trust.d.ts.map +1 -0
  443. package/dist/trust.js +100 -0
  444. package/dist/trust.js.map +1 -0
  445. package/dist/ts-type-emitter.d.ts.map +1 -1
  446. package/dist/ts-type-emitter.js +150 -0
  447. package/dist/ts-type-emitter.js.map +1 -0
  448. package/dist/type-emitter.d.ts +16 -2
  449. package/dist/type-emitter.d.ts.map +1 -1
  450. package/dist/type-emitter.js +729 -0
  451. package/dist/type-emitter.js.map +1 -0
  452. package/dist/type-extractor.d.ts +8 -4
  453. package/dist/type-extractor.d.ts.map +1 -1
  454. package/dist/type-extractor.js +776 -0
  455. package/dist/type-extractor.js.map +1 -0
  456. package/dist/types.d.ts +7 -0
  457. package/dist/types.d.ts.map +1 -1
  458. package/dist/types.js +96 -0
  459. package/dist/types.js.map +1 -0
  460. package/dist/validation.d.ts +14 -2
  461. package/dist/validation.d.ts.map +1 -1
  462. package/dist/validation.js +335 -0
  463. package/dist/validation.js.map +1 -0
  464. package/dist/with-headers.d.ts +15 -0
  465. package/dist/with-headers.d.ts.map +1 -0
  466. package/dist/with-headers.js +45 -0
  467. package/dist/with-headers.js.map +1 -0
  468. package/dist/ws/bun.d.ts +11 -5
  469. package/dist/ws/bun.d.ts.map +1 -1
  470. package/dist/ws/bun.js +82 -0
  471. package/dist/ws/bun.js.map +1 -0
  472. package/dist/ws/cloudflare.d.ts +25 -3
  473. package/dist/ws/cloudflare.d.ts.map +1 -1
  474. package/dist/ws/cloudflare.js +117 -0
  475. package/dist/ws/cloudflare.js.map +1 -0
  476. package/dist/ws/deno.d.ts +4 -4
  477. package/dist/ws/deno.d.ts.map +1 -1
  478. package/dist/ws/deno.js +133 -0
  479. package/dist/ws/deno.js.map +1 -0
  480. package/dist/ws/node.d.ts +20 -3
  481. package/dist/ws/node.d.ts.map +1 -1
  482. package/dist/ws/node.js +173 -0
  483. package/dist/ws/node.js.map +1 -0
  484. package/dist/ws/session.d.ts +11 -0
  485. package/dist/ws/session.d.ts.map +1 -0
  486. package/dist/ws/session.js +60 -0
  487. package/dist/ws/session.js.map +1 -0
  488. package/dist/ws/shared.d.ts +65 -0
  489. package/dist/ws/shared.d.ts.map +1 -0
  490. package/dist/ws/shared.js +103 -0
  491. package/dist/ws/shared.js.map +1 -0
  492. package/dist/ws-origin.d.ts +20 -0
  493. package/dist/ws-origin.d.ts.map +1 -0
  494. package/dist/ws-origin.js +41 -0
  495. package/dist/ws-origin.js.map +1 -0
  496. package/dist/yaml.d.ts +15 -1
  497. package/dist/yaml.d.ts.map +1 -1
  498. package/dist/yaml.js +101 -0
  499. package/dist/yaml.js.map +1 -0
  500. package/docs/invalidate-spec.md +13 -1
  501. package/docs/meta-spec.md +36 -12
  502. package/docs/packaging.md +43 -24
  503. package/docs/regression-matrix/README.md +32 -0
  504. package/docs/regression-matrix/review.md +44 -0
  505. package/docs/regression-matrix/ws1-3.md +97 -0
  506. package/docs/regression-matrix/ws4-8.md +107 -0
  507. package/docs/regression-matrix/ws9-12.md +266 -0
  508. package/docs/sdk.md +102 -52
  509. package/package.json +183 -52
  510. package/src/accepts.ts +91 -33
  511. package/src/body-kind.ts +67 -0
  512. package/src/body-limit.ts +102 -87
  513. package/src/build/index.ts +104 -54
  514. package/src/cli-args.ts +123 -0
  515. package/src/cli-go/auth.go +12 -1
  516. package/src/cli-go/config.go +29 -2
  517. package/src/cli-go/errors.go +28 -10
  518. package/src/cli-go/multipart.go +51 -27
  519. package/src/cli-go/output.go +58 -4
  520. package/src/cli-go/root.go +1 -1
  521. package/src/cli-go/version.go +2 -2
  522. package/src/cli.ts +154 -148
  523. package/src/client/error.ts +56 -1
  524. package/src/client/http.ts +479 -256
  525. package/src/client/index.ts +55 -17
  526. package/src/client/path.ts +169 -0
  527. package/src/client/redirect-policy.ts +19 -0
  528. package/src/client/sdk.ts +180 -101
  529. package/src/client/sse.ts +92 -66
  530. package/src/client/ws.ts +67 -31
  531. package/src/client-go/errors.go +41 -12
  532. package/src/client-go/export.go +44 -0
  533. package/src/client-go/invalidation.go +52 -54
  534. package/src/client-go/nullable.go +62 -0
  535. package/src/client-go/realtime.go +147 -110
  536. package/src/client-go/runtime.go +646 -88
  537. package/src/client-go/sse.go +104 -94
  538. package/src/client-go/transport.go +67 -27
  539. package/src/client-go/ws.go +49 -25
  540. package/src/client-info.ts +79 -0
  541. package/src/client-mcp/server.ts +133 -3
  542. package/src/client-python/_invalidation.py +207 -291
  543. package/src/client-python/_realtime.py +63 -40
  544. package/src/client-python/_runtime.py +501 -119
  545. package/src/client-python/_sse.py +130 -74
  546. package/src/client-python/_transport.py +37 -9
  547. package/src/client-python/_ws.py +50 -22
  548. package/src/client-rust/errors.rs +21 -1
  549. package/src/client-rust/invalidation.rs +202 -231
  550. package/src/client-rust/invalidation_sync.rs +16 -229
  551. package/src/client-rust/nullable.rs +17 -0
  552. package/src/client-rust/realtime.rs +217 -217
  553. package/src/client-rust/runtime.rs +602 -177
  554. package/src/client-rust/runtime_sync.rs +169 -145
  555. package/src/client-rust/sse.rs +142 -121
  556. package/src/client-rust/ws.rs +61 -37
  557. package/src/codegen-go-cli.ts +607 -728
  558. package/src/codegen-go.ts +710 -770
  559. package/src/codegen-ir.ts +381 -75
  560. package/src/codegen-lang.ts +517 -0
  561. package/src/codegen-load.ts +150 -0
  562. package/src/codegen-mcp.ts +207 -108
  563. package/src/codegen-python.ts +684 -816
  564. package/src/codegen-route-tree-intern.ts +51 -25
  565. package/src/codegen-rust.ts +946 -1240
  566. package/src/codegen-sanitize.ts +0 -4
  567. package/src/codegen-schema-naming.ts +19 -6
  568. package/src/codegen-sdk-model.ts +228 -0
  569. package/src/codegen.ts +1488 -1140
  570. package/src/context.ts +130 -11
  571. package/src/cookie-sign.ts +85 -16
  572. package/src/cookie.ts +66 -11
  573. package/src/cors.ts +55 -54
  574. package/src/crypto.ts +27 -5
  575. package/src/csrf.ts +57 -25
  576. package/src/curl-logger.ts +155 -114
  577. package/src/dict.ts +12 -0
  578. package/src/error.ts +4 -2
  579. package/src/etag.ts +58 -34
  580. package/src/feature-detect.ts +147 -0
  581. package/src/feature-slots.ts +70 -0
  582. package/src/fetch-request.ts +13 -0
  583. package/src/gen-process.ts +42 -0
  584. package/src/gen-write.ts +127 -0
  585. package/src/glob.ts +109 -0
  586. package/src/go-type-emitter.ts +406 -155
  587. package/src/honey-response.ts +36 -9
  588. package/src/i18n-slot.ts +10 -0
  589. package/src/i18n.ts +98 -23
  590. package/src/index.ts +1893 -1761
  591. package/src/init.ts +40 -28
  592. package/src/invalidate-check.ts +42 -4
  593. package/src/invoke-user.ts +95 -0
  594. package/src/ip-restrict.ts +47 -161
  595. package/src/ip.ts +194 -0
  596. package/src/logger.ts +65 -36
  597. package/src/media-type.ts +104 -0
  598. package/src/meta-spec-merge.ts +80 -0
  599. package/src/meta-spec.ts +0 -0
  600. package/src/middleware.ts +112 -12
  601. package/src/node-request.ts +242 -52
  602. package/src/node.ts +318 -75
  603. package/src/openapi/collect.ts +19 -44
  604. package/src/openapi/docs-page.ts +89 -0
  605. package/src/openapi/document.ts +503 -224
  606. package/src/openapi/json-schema-slot.ts +40 -0
  607. package/src/openapi/register.ts +7 -2
  608. package/src/openapi/scalar.ts +11 -10
  609. package/src/openapi/serve.ts +39 -0
  610. package/src/openapi/spec-factory.ts +50 -1
  611. package/src/openapi/spec.ts +53 -30
  612. package/src/openapi/swagger.ts +12 -11
  613. package/src/pattern.ts +245 -0
  614. package/src/peer.ts +53 -0
  615. package/src/plugin.ts +270 -185
  616. package/src/powered-by.ts +2 -2
  617. package/src/pretty-json.ts +25 -9
  618. package/src/producer-stream.ts +296 -0
  619. package/src/proxy.ts +271 -55
  620. package/src/python-type-emitter.ts +68 -56
  621. package/src/realtime/bus.ts +56 -9
  622. package/src/realtime/register.ts +13 -0
  623. package/src/realtime/route.ts +129 -80
  624. package/src/realtime/server.ts +298 -0
  625. package/src/request-id.ts +13 -3
  626. package/src/request-limits.ts +2 -0
  627. package/src/request-path.ts +165 -0
  628. package/src/request-to-curl.ts +28 -7
  629. package/src/response.ts +143 -103
  630. package/src/rust-type-emitter.ts +265 -170
  631. package/src/secure-headers.ts +8 -4
  632. package/src/serve-register.ts +4 -0
  633. package/src/serve-slot.ts +38 -0
  634. package/src/serve.ts +113 -25
  635. package/src/server-timing.ts +11 -7
  636. package/src/static.ts +85 -32
  637. package/src/telemetry/otel.ts +29 -7
  638. package/src/testing.ts +76 -14
  639. package/src/timeout.ts +15 -7
  640. package/src/tree.ts +405 -333
  641. package/src/trust.ts +117 -0
  642. package/src/ts-type-emitter.ts +18 -12
  643. package/src/type-emitter.ts +227 -89
  644. package/src/type-extractor.ts +562 -424
  645. package/src/types.ts +8 -0
  646. package/src/validation.ts +221 -96
  647. package/src/with-headers.ts +45 -0
  648. package/src/ws/bun.ts +53 -15
  649. package/src/ws/cloudflare.ts +81 -19
  650. package/src/ws/deno.ts +124 -36
  651. package/src/ws/node.ts +173 -79
  652. package/src/ws/session.ts +73 -0
  653. package/src/ws/shared.ts +140 -0
  654. package/src/ws-origin.ts +53 -0
  655. package/src/yaml.ts +45 -22
  656. package/dist/client-mcp/server.d.ts +0 -10
  657. package/dist/client-mcp/server.d.ts.map +0 -1
  658. package/dist/client-mcp/types.d.ts +0 -16
  659. package/dist/client-mcp/types.d.ts.map +0 -1
  660. package/dist/cloudflare/realtime.d.ts +0 -30
  661. package/dist/cloudflare/realtime.d.ts.map +0 -1
  662. package/dist/realtime/buffer.d.ts +0 -18
  663. package/dist/realtime/buffer.d.ts.map +0 -1
  664. package/dist/realtime/longpoll.d.ts +0 -23
  665. package/dist/realtime/longpoll.d.ts.map +0 -1
  666. package/dist/realtime/protocol.d.ts +0 -50
  667. package/dist/realtime/protocol.d.ts.map +0 -1
  668. package/dist/realtime/runtime.d.ts +0 -74
  669. package/dist/realtime/runtime.d.ts.map +0 -1
  670. package/src/cloudflare/realtime.ts +0 -234
  671. package/src/realtime/buffer.ts +0 -101
  672. package/src/realtime/longpoll.ts +0 -148
  673. package/src/realtime/protocol.ts +0 -128
  674. package/src/realtime/runtime.ts +0 -427
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-lang.js","sourceRoot":"","sources":["../src/codegen-lang.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { HoneyVitePluginConfig } from "./plugin.ts";
2
+ export type ModuleLoader = (path: string) => Promise<Record<string, unknown>>;
3
+ /** True when this module runs from `src/*.ts` rather than the compiled `dist/*.js`. */
4
+ export declare const runningFromSource: boolean;
5
+ /**
6
+ * Creates a loader for one generation. Each path is evaluated at most once per loader, so the app
7
+ * is not executed twice. `fresh` drops jiti's module cache between loaders — needed when the
8
+ * process outlives one generation (the Vite plugin without a config file). A process that runs a
9
+ * single generation (the CLI) keeps the cache so shared modules load once.
10
+ *
11
+ * While a module evaluates, `app.serve()` resolves without binding a port.
12
+ */
13
+ export declare function createModuleLoader(options: {
14
+ fresh: boolean;
15
+ from: string;
16
+ }): Promise<ModuleLoader>;
17
+ export declare const VITE_CONFIG_FILES: string[];
18
+ export declare function findViteConfig(cwd: string): string | undefined;
19
+ export type ViteConfigEnv = {
20
+ command: "build" | "serve";
21
+ mode: string;
22
+ };
23
+ /**
24
+ * Every `honey()` plugin config in a Vite config file, in plugin order. Function-form configs are
25
+ * called with `env`; nested and promised plugin arrays are flattened like Vite does. The config is
26
+ * read off the plugin object, so it works across module instances and runtimes.
27
+ */
28
+ export declare function loadHoneyPluginConfigs(configPath: string, load: ModuleLoader, env: ViteConfigEnv): Promise<HoneyVitePluginConfig[]>;
29
+ /** The config a `honey()` plugin object carries, or undefined for any other plugin. */
30
+ export declare function honeyConfigOf(plugin: unknown): HoneyVitePluginConfig | undefined;
31
+ //# sourceMappingURL=codegen-load.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-load.d.ts","sourceRoot":"","sources":["../src/codegen-load.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGxD,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAI7E,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,SAAkC,CAAA;AAEhE;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAkBzG;AA4CD,eAAO,MAAM,iBAAiB,UAO7B,CAAA;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAM9D;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAExE;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC3C,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,YAAY,EAClB,GAAG,EAAE,aAAa,GAChB,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAmBlC;AAED,uFAAuF;AACvF,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,qBAAqB,GAAG,SAAS,CAIhF"}
@@ -0,0 +1,138 @@
1
+ /** Loads user modules (Vite config, app, merge tree) for codegen. Not a package export. */
2
+ import { existsSync, readFileSync } from "node:fs";
3
+ import { dirname, join, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { isCodegenProcess, setCodegenProcess } from "./serve-slot.js";
6
+ const isBun = typeof globalThis.Bun !== "undefined";
7
+ /** True when this module runs from `src/*.ts` rather than the compiled `dist/*.js`. */
8
+ export const runningFromSource = import.meta.url.endsWith(".ts");
9
+ /**
10
+ * Creates a loader for one generation. Each path is evaluated at most once per loader, so the app
11
+ * is not executed twice. `fresh` drops jiti's module cache between loaders — needed when the
12
+ * process outlives one generation (the Vite plugin without a config file). A process that runs a
13
+ * single generation (the CLI) keeps the cache so shared modules load once.
14
+ *
15
+ * While a module evaluates, `app.serve()` resolves without binding a port.
16
+ */
17
+ export async function createModuleLoader(options) {
18
+ const { createJiti } = await import("jiti");
19
+ const jiti = createJiti(options.from, {
20
+ alias: sourceAliases(),
21
+ fsCache: false,
22
+ interopDefault: true,
23
+ moduleCache: !options.fresh,
24
+ });
25
+ const loaded = new Map();
26
+ return (path) => {
27
+ const abs = resolve(path);
28
+ let mod = loaded.get(abs);
29
+ if (!mod) {
30
+ mod = withCodegenFlag(() => jiti.import(abs));
31
+ loaded.set(abs, mod);
32
+ }
33
+ return mod;
34
+ };
35
+ }
36
+ let evaluating = 0;
37
+ let flagWasSet = false;
38
+ /* overlapping loads share one flag; a flag the caller set for the whole process stays set */
39
+ async function withCodegenFlag(run) {
40
+ if (evaluating++ === 0) {
41
+ flagWasSet = isCodegenProcess();
42
+ setCodegenProcess(true);
43
+ }
44
+ try {
45
+ return await run();
46
+ }
47
+ finally {
48
+ if (--evaluating === 0 && !flagWasSet)
49
+ setCodegenProcess(false);
50
+ }
51
+ }
52
+ /**
53
+ * When honey runs from source under Node (inside this repository), the app's imports of the
54
+ * package must reach the same source, not a `dist/` that may be missing or stale. Bun resolves the
55
+ * `bun` export condition to source on its own; a compiled install needs no alias.
56
+ */
57
+ function sourceAliases() {
58
+ if (!runningFromSource || isBun)
59
+ return undefined;
60
+ const pkgRoot = resolve(dirname(fileURLToPath(import.meta.url)), "..");
61
+ const pkgPath = join(pkgRoot, "package.json");
62
+ if (!existsSync(pkgPath))
63
+ return undefined;
64
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
65
+ if (!pkg.name || !pkg.exports)
66
+ return undefined;
67
+ const aliases = {};
68
+ for (const [subpath, target] of Object.entries(pkg.exports)) {
69
+ const source = target["honey-source"];
70
+ if (!source)
71
+ continue;
72
+ aliases[pkg.name + subpath.slice(1)] = join(pkgRoot, source);
73
+ }
74
+ return aliases;
75
+ }
76
+ /* ---- Vite config ---- */
77
+ export const VITE_CONFIG_FILES = [
78
+ "vite.config.ts",
79
+ "vite.config.mts",
80
+ "vite.config.cts",
81
+ "vite.config.js",
82
+ "vite.config.mjs",
83
+ "vite.config.cjs",
84
+ ];
85
+ export function findViteConfig(cwd) {
86
+ for (const name of VITE_CONFIG_FILES) {
87
+ const path = join(cwd, name);
88
+ if (existsSync(path))
89
+ return path;
90
+ }
91
+ return undefined;
92
+ }
93
+ /**
94
+ * Every `honey()` plugin config in a Vite config file, in plugin order. Function-form configs are
95
+ * called with `env`; nested and promised plugin arrays are flattened like Vite does. The config is
96
+ * read off the plugin object, so it works across module instances and runtimes.
97
+ */
98
+ export async function loadHoneyPluginConfigs(configPath, load, env) {
99
+ const mod = await load(configPath);
100
+ let config = "default" in mod ? mod.default : mod;
101
+ if (typeof config === "function") {
102
+ config = await config({
103
+ command: env.command,
104
+ isPreview: false,
105
+ isSsrBuild: false,
106
+ mode: env.mode,
107
+ });
108
+ }
109
+ config = await config;
110
+ const plugins = await flattenPlugins(config?.plugins);
111
+ const found = [];
112
+ for (const plugin of plugins) {
113
+ const honeyConfig = honeyConfigOf(plugin);
114
+ if (honeyConfig)
115
+ found.push(honeyConfig);
116
+ }
117
+ return found;
118
+ }
119
+ /** The config a `honey()` plugin object carries, or undefined for any other plugin. */
120
+ export function honeyConfigOf(plugin) {
121
+ if (plugin === null || typeof plugin !== "object")
122
+ return undefined;
123
+ const p = plugin;
124
+ return p.name === "honey" ? p.api?.honeyConfig : undefined;
125
+ }
126
+ async function flattenPlugins(value) {
127
+ const resolved = await value;
128
+ if (!resolved)
129
+ return [];
130
+ if (Array.isArray(resolved)) {
131
+ const out = [];
132
+ for (const item of resolved)
133
+ out.push(...(await flattenPlugins(item)));
134
+ return out;
135
+ }
136
+ return [resolved];
137
+ }
138
+ //# sourceMappingURL=codegen-load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-load.js","sourceRoot":"","sources":["../src/codegen-load.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /** Dynamic Zod/Effect JSON Schema loaders. Not a package export — tests may import this file. */
2
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
3
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
4
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
5
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
6
+ });
7
+ }
8
+ return path;
9
+ };
10
+ export let toJSONSchemaFn;
11
+ let toJSONSchemaLoaded = false;
12
+ export async function loadToJSONSchema() {
13
+ if (toJSONSchemaLoaded)
14
+ return toJSONSchemaFn;
15
+ toJSONSchemaLoaded = true;
16
+ try {
17
+ /* opaque specifier — a plain `const id = "zod"` is constant-folded by rollup/esbuild,
18
+ which pulls the whole optional dependency into webworker-target bundles */
19
+ const zod = await import(__rewriteRelativeImportExtension(["z", "od"].join("")));
20
+ if (typeof zod.toJSONSchema === "function") {
21
+ toJSONSchemaFn = zod.toJSONSchema;
22
+ }
23
+ }
24
+ catch {
25
+ /* zod not available */
26
+ }
27
+ return toJSONSchemaFn;
28
+ }
29
+ export let effectJsonSchemaFn;
30
+ let effectLoaded = false;
31
+ export async function loadEffectJsonSchema() {
32
+ if (effectLoaded)
33
+ return effectJsonSchemaFn;
34
+ effectLoaded = true;
35
+ try {
36
+ const effect = await import(__rewriteRelativeImportExtension(["eff", "ect"].join("")));
37
+ if (effect.JSONSchema && typeof effect.JSONSchema.make === "function") {
38
+ effectJsonSchemaFn = effect.JSONSchema.make;
39
+ }
40
+ }
41
+ catch {
42
+ /* effect not available */
43
+ }
44
+ return effectJsonSchemaFn;
45
+ }
46
+ export async function prepareCodegen() {
47
+ await Promise.all([loadToJSONSchema(), loadEffectJsonSchema()]);
48
+ }
49
+ export function resetCodegenJsonSchemaLoadersForTests() {
50
+ toJSONSchemaFn = undefined;
51
+ toJSONSchemaLoaded = true;
52
+ effectJsonSchemaFn = undefined;
53
+ effectLoaded = true;
54
+ }
55
+ //# sourceMappingURL=codegen-loaders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codegen-loaders.js","sourceRoot":"","sources":["../src/codegen-loaders.ts"],"names":[],"mappings":"AAAA,iGAAiG;;;;;;;;;AAEjG,MAAM,CAAC,IAAI,cAA8F,CAAA;AACzG,IAAI,kBAAkB,GAAG,KAAK,CAAA;AAE9B,MAAM,CAAC,KAAK,UAAU,gBAAgB;IAGrC,IAAI,kBAAkB;QAAE,OAAO,cAAc,CAAA;IAC7C,kBAAkB,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC;QACJ;qFAC6E;QAC7E,MAAM,GAAG,GAAG,MAAM,MAAM,kCAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC,CAAA;QAC9C,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YAC5C,cAAc,GAAG,GAAG,CAAC,YAAgF,CAAA;QACtG,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,uBAAuB;IACxB,CAAC;IACD,OAAO,cAAc,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,IAAI,kBAA8D,CAAA;AACzE,IAAI,YAAY,GAAG,KAAK,CAAA;AAExB,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACzC,IAAI,YAAY;QAAE,OAAO,kBAAkB,CAAA;IAC3C,YAAY,GAAG,IAAI,CAAA;IACnB,IAAI,CAAC;QACJ,MAAM,MAAM,GAAG,MAAM,MAAM,kCAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAC,CAAA;QACpD,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvE,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC,IAAoC,CAAA;QAC5E,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,0BAA0B;IAC3B,CAAC;IACD,OAAO,kBAAkB,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IACnC,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,qCAAqC;IACpD,cAAc,GAAG,SAAS,CAAA;IAC1B,kBAAkB,GAAG,IAAI,CAAA;IACzB,kBAAkB,GAAG,SAAS,CAAA;IAC9B,YAAY,GAAG,IAAI,CAAA;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"codegen-mcp.d.ts","sourceRoot":"","sources":["../src/codegen-mcp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGpD,KAAK,UAAU,GAAG;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,SAAS,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B,CAAA;AA6SD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,GAAG,SAAS,CA2BxF"}
1
+ {"version":3,"file":"codegen-mcp.d.ts","sourceRoot":"","sources":["../src/codegen-mcp.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAKpD,KAAK,UAAU,GAAG;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,SAAS,GAAG;IAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAC7B,CAAA;AA6YD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,UAAU,GAAG,SAAS,CAwBxF"}
@@ -0,0 +1,368 @@
1
+ /* MCP server code generator.
2
+ *
3
+ * Which operations become tools, their ids, their place in the TypeScript SDK and their parameter
4
+ * set come from the IR the TypeScript SDK is built from, so a tool always calls a method that
5
+ * exists. Only the JSON Schema of each parameter and JSON body is copied from the document,
6
+ * verbatim and with refs inlined: a tool's input contract is JSON Schema, and the IR keeps less
7
+ * than JSON Schema says (lengths, patterns, formats), which tool validation needs. */
8
+ import { readFileSync } from "node:fs";
9
+ import { sdkMemberPaths } from "./codegen.js";
10
+ import { bodiesOf, toIR } from "./codegen-ir.js";
11
+ import { isJsonMedia } from "./codegen-sdk-model.js";
12
+ const TEMPLATE_FILE_NAMES = ["server.ts", "types.ts"];
13
+ const TEMPLATE_CACHE = new Map();
14
+ function loadMCPRuntimeTemplates() {
15
+ if (TEMPLATE_CACHE.size > 0)
16
+ return TEMPLATE_CACHE;
17
+ for (const name of TEMPLATE_FILE_NAMES) {
18
+ const url = new URL(`./client-mcp/${name}`, import.meta.url);
19
+ TEMPLATE_CACHE.set(name, readFileSync(url, "utf8"));
20
+ }
21
+ return TEMPLATE_CACHE;
22
+ }
23
+ function envVarNames(projectName) {
24
+ const upper = projectName.toUpperCase();
25
+ return { apiKey: `${upper}_API_KEY`, baseUrl: `${upper}_BASE_URL` };
26
+ }
27
+ function toSnakeCase(id) {
28
+ /* camelCase + dots -> snake_case. "createUser" -> "create_user",
29
+ * "docs.extract" -> "docs_extract", "docs.listAll" -> "docs_list_all". */
30
+ return id
31
+ .replace(/\./g, "_")
32
+ .replace(/([a-z0-9])([A-Z])/g, "$1_$2")
33
+ .replace(/([A-Z])([A-Z][a-z])/g, "$1_$2")
34
+ .toLowerCase();
35
+ }
36
+ /** Follow a `$ref` chain to a concrete schema. A chain that loops back on itself is an error. */
37
+ /** MCP tool names: `^[a-zA-Z0-9_-]{1,64}$`. */
38
+ const MAX_TOOL_NAME = 64;
39
+ function sanitizeToolName(name) {
40
+ return (name
41
+ .replace(/[^A-Za-z0-9_-]+/g, "_")
42
+ .replace(/_+/g, "_")
43
+ .replace(/^_|_$/g, "") || "tool");
44
+ }
45
+ /** Deterministic, sanitized, unique tool names; a collision is an error naming both operations. */
46
+ function assignToolNames(ops, projectName) {
47
+ const byName = new Map();
48
+ for (const op of ops) {
49
+ let name = sanitizeToolName(`${projectName}_${toSnakeCase(op.operationId)}`);
50
+ if (name.length > MAX_TOOL_NAME) {
51
+ let hash = 0;
52
+ for (let i = 0; i < op.operationId.length; i++)
53
+ hash = (Math.imul(hash, 31) + op.operationId.charCodeAt(i)) >>> 0;
54
+ const suffix = `_${hash.toString(36)}`;
55
+ name = `${name.slice(0, MAX_TOOL_NAME - suffix.length)}${suffix}`;
56
+ }
57
+ const other = byName.get(name);
58
+ if (other !== undefined) {
59
+ throw new Error(`MCP codegen: operations ${JSON.stringify(other)} and ${JSON.stringify(op.operationId)} both map to tool ${JSON.stringify(name)}`);
60
+ }
61
+ byName.set(name, op.operationId);
62
+ op.toolName = name;
63
+ }
64
+ }
65
+ function resolveSchema(spec, schema) {
66
+ let cur = schema;
67
+ const chain = new Set();
68
+ while (cur && typeof cur.$ref === "string") {
69
+ const ref = cur.$ref;
70
+ if (chain.has(ref))
71
+ throw new Error(`MCP codegen: $ref cycle with no schema in between: ${[...chain, ref].join(" -> ")}`);
72
+ chain.add(ref);
73
+ if (!ref.startsWith("#/"))
74
+ return undefined;
75
+ let next = spec;
76
+ for (const raw of ref.slice(2).split("/")) {
77
+ const part = raw.replace(/~1/g, "/").replace(/~0/g, "~");
78
+ if (next === null || typeof next !== "object" || !Object.hasOwn(next, part))
79
+ return undefined;
80
+ next = next[part];
81
+ }
82
+ cur = next;
83
+ }
84
+ return cur;
85
+ }
86
+ /* Inlining expands each $ref; a schema graph with many shared refs can grow exponentially,
87
+ so the output size is bounded and the generator fails loudly instead of hanging. */
88
+ const MAX_INLINED_NODES = 50_000;
89
+ function charge(state, nodes) {
90
+ state.nodes += nodes;
91
+ if (state.nodes > MAX_INLINED_NODES) {
92
+ throw new Error(`MCP codegen: inlined tool schema exceeds ${MAX_INLINED_NODES} nodes (deeply shared $refs)`);
93
+ }
94
+ }
95
+ function deepResolveSchema(spec, schema, seen = new Set(), state = { memo: new Map(), nodes: 0 }) {
96
+ if (!schema)
97
+ return { cut: false, schema: undefined };
98
+ if (typeof schema.$ref === "string") {
99
+ const ref = schema.$ref;
100
+ /* a self-referential schema becomes an open object at the point it recurs */
101
+ if (seen.has(ref)) {
102
+ charge(state, 1);
103
+ return { cut: true, schema: { type: "object" } };
104
+ }
105
+ /* a memoized expansion is emitted again in full, so it costs its full size again */
106
+ const memo = state.memo.get(ref);
107
+ if (memo) {
108
+ charge(state, memo.nodes);
109
+ return { cut: false, schema: memo.schema };
110
+ }
111
+ const next = new Set(seen);
112
+ next.add(ref);
113
+ const before = state.nodes;
114
+ const result = deepResolveSchema(spec, resolveSchema(spec, schema), next, state);
115
+ if (!result.cut)
116
+ state.memo.set(ref, { nodes: state.nodes - before, schema: result.schema });
117
+ return result;
118
+ }
119
+ charge(state, 1);
120
+ let cut = false;
121
+ const out = {};
122
+ for (const [k, v] of Object.entries(schema)) {
123
+ if (v === null || v === undefined) {
124
+ out[k] = v;
125
+ }
126
+ else if (Array.isArray(v)) {
127
+ out[k] = v.map((item) => {
128
+ if (item === null || typeof item !== "object")
129
+ return item;
130
+ const r = deepResolveSchema(spec, item, seen, state);
131
+ cut ||= r.cut;
132
+ return r.schema;
133
+ });
134
+ }
135
+ else if (typeof v === "object") {
136
+ const r = deepResolveSchema(spec, v, seen, state);
137
+ cut ||= r.cut;
138
+ out[k] = r.schema;
139
+ }
140
+ else {
141
+ out[k] = v;
142
+ }
143
+ }
144
+ return { cut, schema: out };
145
+ }
146
+ function inline(spec, schema) {
147
+ return deepResolveSchema(spec, schema).schema;
148
+ }
149
+ /** Declared parameters of an operation: its own, then the path item's it does not override. */
150
+ function declaredParameters(op, pathItem, spec) {
151
+ const own = (op.parameters ?? []).map((p) => resolveSchema(spec, p) ?? {});
152
+ const shared = (pathItem.parameters ?? []).map((p) => resolveSchema(spec, p) ?? {});
153
+ const out = [...own];
154
+ for (const p of shared)
155
+ if (!out.some((d) => d.name === p.name && d.in === p.in))
156
+ out.push(p);
157
+ return out;
158
+ }
159
+ function collectMCPOps(spec) {
160
+ /* the ids, tree and member names the TypeScript SDK derives; its schemas are not needed here */
161
+ const ir = toIR(spec, { deriveOperationIds: true, duplicateOperationIds: "throw" });
162
+ const members = sdkMemberPaths(ir);
163
+ const specRec = spec;
164
+ const ops = [];
165
+ for (const irOp of ir.operations) {
166
+ const ext = irOp.extensions;
167
+ if (ext.mcp !== true)
168
+ continue;
169
+ /* skip websocket / realtime / SSE operations — MCP is request/response only */
170
+ if (ext.websocket || ext.realtime || ext.sse)
171
+ continue;
172
+ const pathItem = (spec.paths?.[irOp.path] ?? {});
173
+ const op = (pathItem[irOp.method.toLowerCase()] ?? {});
174
+ const requestBody = resolveSchema(specRec, op.requestBody);
175
+ const content = requestBody?.content;
176
+ /* the JSON body the SDK's `json` input sends: the first JSON media type, as the SDK picks it */
177
+ const jsonBody = bodiesOf(irOp).find((b) => b.kind === "raw" && isJsonMedia(b.contentType));
178
+ ops.push({
179
+ bodyRequired: jsonBody?.required === true,
180
+ bodySchema: jsonBody ? content?.[jsonBody.contentType]?.schema : undefined,
181
+ description: irOp.description,
182
+ method: irOp.method,
183
+ operationId: irOp.id,
184
+ parameters: declaredParameters(op, pathItem, specRec),
185
+ path: irOp.path,
186
+ pathSegments: members.get(irOp.id) ?? irOp.id.split("."),
187
+ summary: irOp.summary,
188
+ toolName: "",
189
+ });
190
+ }
191
+ return ops;
192
+ }
193
+ const FORBIDDEN_HEADER_ARGS = new Set(["authorization", "cookie", "proxy-authorization"]);
194
+ function emptyParamGroup() {
195
+ return { props: {}, required: [] };
196
+ }
197
+ function assignGroup(properties, required, key, group) {
198
+ if (Object.keys(group.props).length === 0)
199
+ return;
200
+ const out = { properties: group.props, type: "object" };
201
+ if (group.required.length > 0) {
202
+ out.required = group.required;
203
+ required.push(key);
204
+ }
205
+ properties[key] = out;
206
+ }
207
+ function buildToolInputSchema(op, spec) {
208
+ const properties = {};
209
+ const required = [];
210
+ const specRec = spec;
211
+ const path = emptyParamGroup();
212
+ const query = emptyParamGroup();
213
+ const header = emptyParamGroup();
214
+ const groupByLoc = { header, path, query };
215
+ for (const raw of op.parameters) {
216
+ const p = resolveSchema(specRec, raw) ?? {};
217
+ const name = p.name;
218
+ const inLoc = p.in;
219
+ const group = Object.hasOwn(groupByLoc, inLoc) ? groupByLoc[inLoc] : undefined;
220
+ if (!group || typeof name !== "string")
221
+ continue;
222
+ /* credentials come from the server's config, never from tool arguments */
223
+ if (inLoc === "header" && FORBIDDEN_HEADER_ARGS.has(name.toLowerCase()))
224
+ continue;
225
+ group.props[name] = inline(specRec, (p.schema ?? {})) ?? {};
226
+ if (p.required === true)
227
+ group.required.push(name);
228
+ }
229
+ assignGroup(properties, required, "params", path);
230
+ assignGroup(properties, required, "search", query);
231
+ assignGroup(properties, required, "headers", header);
232
+ if (op.bodySchema) {
233
+ properties.json = inline(specRec, op.bodySchema) ?? { type: "object" };
234
+ if (op.bodyRequired)
235
+ required.push("json");
236
+ }
237
+ const schema = { properties, type: "object" };
238
+ if (required.length > 0)
239
+ schema.required = required;
240
+ return schema;
241
+ }
242
+ /** Keys a tool may forward to the SDK, per argument group; everything else is dropped. */
243
+ function allowedArgs(inputSchema) {
244
+ const out = {};
245
+ const props = inputSchema.properties;
246
+ for (const group of ["params", "search", "headers"]) {
247
+ const g = props[group];
248
+ if (g)
249
+ out[group] = Object.keys(g.properties ?? {}).sort();
250
+ }
251
+ if (props.json)
252
+ out.json = true;
253
+ return out;
254
+ }
255
+ /** Text safe inside a block comment. */
256
+ function commentText(text) {
257
+ return text.replace(/\*\//g, "*\\/").replace(/[\r\n]+/g, " ");
258
+ }
259
+ function buildToolsGen(ops, spec, projectName) {
260
+ const l = [];
261
+ l.push(`/* Generated by honey codegen-mcp.ts — do not edit by hand. */`);
262
+ l.push(``);
263
+ l.push(`import { callTool, type AllowedArgs } from "./_runtime"`);
264
+ l.push(`import type { Tool } from "./types"`);
265
+ l.push(``);
266
+ l.push(`export function buildTools(sdk: Record<string, unknown>): Tool[] {`);
267
+ /* callTool validates the arguments against inputSchema, forwards only declared keys, and
268
+ walks the SDK by operationId segments: ["checkout", "sessions", "create"]. */
269
+ l.push(`\tconst tool = (name: string, description: string | undefined, inputSchema: Record<string, unknown>, segments: string[], allowed: AllowedArgs): Tool => ({`);
270
+ l.push(`\t\tdescription,`);
271
+ l.push(`\t\thandler: (args) => callTool(sdk, segments, args, inputSchema, allowed),`);
272
+ l.push(`\t\tinputSchema,`);
273
+ l.push(`\t\tname,`);
274
+ l.push(`\t})`);
275
+ l.push(`\treturn [`);
276
+ for (const op of ops) {
277
+ const desc = op.description ?? op.summary ?? "";
278
+ const inputSchema = buildToolInputSchema(op, spec);
279
+ l.push(`\t\ttool(`);
280
+ l.push(`\t\t\t${JSON.stringify(op.toolName)},`);
281
+ l.push(`\t\t\t${desc.length > 0 ? JSON.stringify(desc) : "undefined"},`);
282
+ l.push(`\t\t\t${JSON.stringify(inputSchema)},`);
283
+ l.push(`\t\t\t${JSON.stringify(op.pathSegments)},`);
284
+ l.push(`\t\t\t${JSON.stringify(allowedArgs(inputSchema))},`);
285
+ l.push(`\t\t),`);
286
+ }
287
+ l.push(`\t]`);
288
+ l.push(`}`);
289
+ l.push(``);
290
+ /* project name embedded for tool-naming contract visibility — consumed by tests */
291
+ l.push(`/* project: ${commentText(projectName)} */`);
292
+ l.push(``);
293
+ return l.join("\n");
294
+ }
295
+ function buildServerEntry(projectName, sdkPackageName, sdkClassName, serverName, version) {
296
+ const { apiKey: envVar, baseUrl: baseUrlEnvVar } = envVarNames(projectName);
297
+ const l = [];
298
+ l.push(`/* Generated by honey codegen-mcp.ts — do not edit by hand. */`);
299
+ l.push(``);
300
+ l.push(`import { ${sdkClassName} } from ${JSON.stringify(sdkPackageName)}`);
301
+ l.push(`import { createMCPServer } from "./_runtime"`);
302
+ l.push(`import { buildTools } from "./tools.gen"`);
303
+ l.push(``);
304
+ l.push(`const apiKey = process.env[${JSON.stringify(envVar)}] ?? ""`);
305
+ /* No guessed default: the API key must never be sent to a host nobody configured. */
306
+ l.push(`const baseURL = process.env[${JSON.stringify(baseUrlEnvVar)}] ?? ""`);
307
+ l.push(`if (baseURL.length === 0) {`);
308
+ l.push(`\tprocess.stderr.write(${JSON.stringify(`${baseUrlEnvVar} is required (the API base URL, e.g. https://api.example.com)\n`)})`);
309
+ l.push(`\tprocess.exit(1)`);
310
+ l.push(`}`);
311
+ l.push(``);
312
+ l.push(`const sdk = new ${sdkClassName}({`);
313
+ l.push(`\tbaseURL,`);
314
+ l.push(`\theaders: apiKey.length > 0 ? { Authorization: \`Bearer \${apiKey}\` } : {},`);
315
+ l.push(`\tthrowOnError: true,`);
316
+ l.push(`})`);
317
+ l.push(``);
318
+ l.push(`const tools = buildTools(sdk as unknown as Record<string, unknown>)`);
319
+ l.push(``);
320
+ l.push(`await createMCPServer({`);
321
+ l.push(`\tsdk,`);
322
+ l.push(`\tserverInfo: { name: ${JSON.stringify(serverName)}, version: ${JSON.stringify(version)} },`);
323
+ l.push(`\ttools,`);
324
+ l.push(`})`);
325
+ l.push(``);
326
+ return l.join("\n");
327
+ }
328
+ function buildTsconfig() {
329
+ return JSON.stringify({
330
+ compilerOptions: {
331
+ allowImportingTsExtensions: false,
332
+ declaration: true,
333
+ esModuleInterop: true,
334
+ module: "ESNext",
335
+ moduleResolution: "bundler",
336
+ noEmit: false,
337
+ outDir: "./dist",
338
+ rootDir: "./src",
339
+ skipLibCheck: true,
340
+ strict: true,
341
+ target: "ES2022",
342
+ types: ["node"],
343
+ },
344
+ include: ["src/**/*"],
345
+ }, null, 2);
346
+ }
347
+ export function generateMCPServer(spec, options) {
348
+ const { projectName, sdkClassName, sdkPackageName } = options;
349
+ const version = options.version ?? "0.1.0";
350
+ const ops = collectMCPOps(spec);
351
+ if (ops.length === 0) {
352
+ throw new Error("No operations marked x-mcp: true; nothing to emit");
353
+ }
354
+ assignToolNames(ops, projectName);
355
+ const info = spec.info ?? {};
356
+ const serverName = info.title ?? `@${projectName}/mcp-server`;
357
+ const templates = loadMCPRuntimeTemplates();
358
+ return {
359
+ files: {
360
+ "src/_runtime.ts": templates.get("server.ts") ?? "",
361
+ "src/server.ts": buildServerEntry(projectName, sdkPackageName, sdkClassName, serverName, version),
362
+ "src/tools.gen.ts": buildToolsGen(ops, spec, projectName),
363
+ "src/types.ts": templates.get("types.ts") ?? "",
364
+ "tsconfig.json": buildTsconfig(),
365
+ },
366
+ };
367
+ }
368
+ //# sourceMappingURL=codegen-mcp.js.map