@lovrozagar/honey 0.6.8 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +408 -148
  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 +819 -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 +1887 -1756
  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 +253 -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 +603 -423
  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,79 @@
1
+ // Code generated by honey. DO NOT EDIT.
2
+ package cli
3
+
4
+ import (
5
+ "fmt"
6
+ "io"
7
+ "mime/multipart"
8
+ "os"
9
+ "path/filepath"
10
+ "sort"
11
+ )
12
+
13
+ // BuildMultipart streams a multipart/form-data body: files are read as the
14
+ // request is sent, not buffered in memory.
15
+ //
16
+ // fields are written as plain form fields; files are keyed by form-field-name →
17
+ // file path. Every file is opened up front so a bad path fails before sending.
18
+ //
19
+ // Returns the body reader, the Content-Type header value (including boundary),
20
+ // and any error.
21
+ func BuildMultipart(fields map[string]string, files map[string]string) (io.Reader, string, error) {
22
+ fieldNames := sortedNames(fields)
23
+ fileNames := sortedNames(files)
24
+
25
+ opened := make(map[string]*os.File, len(files))
26
+ for _, name := range fileNames {
27
+ path := files[name]
28
+ if path == "" {
29
+ closeAll(opened)
30
+ return nil, "", fmt.Errorf("missing file path for field %q", name)
31
+ }
32
+ f, err := os.Open(path)
33
+ if err != nil {
34
+ closeAll(opened)
35
+ return nil, "", Usage(fmt.Errorf("open file %s: %w", path, err))
36
+ }
37
+ opened[name] = f
38
+ }
39
+
40
+ pr, pw := io.Pipe()
41
+ writer := multipart.NewWriter(pw)
42
+ go func() {
43
+ defer closeAll(opened)
44
+ for _, name := range fieldNames {
45
+ if err := writer.WriteField(name, fields[name]); err != nil {
46
+ pw.CloseWithError(fmt.Errorf("write field %q: %w", name, err))
47
+ return
48
+ }
49
+ }
50
+ for _, name := range fileNames {
51
+ part, err := writer.CreateFormFile(name, filepath.Base(files[name]))
52
+ if err != nil {
53
+ pw.CloseWithError(fmt.Errorf("create form file %q: %w", name, err))
54
+ return
55
+ }
56
+ if _, err := io.Copy(part, opened[name]); err != nil {
57
+ pw.CloseWithError(fmt.Errorf("copy file %s: %w", files[name], err))
58
+ return
59
+ }
60
+ }
61
+ pw.CloseWithError(writer.Close())
62
+ }()
63
+ return pr, writer.FormDataContentType(), nil
64
+ }
65
+
66
+ func sortedNames(m map[string]string) []string {
67
+ names := make([]string, 0, len(m))
68
+ for k := range m {
69
+ names = append(names, k)
70
+ }
71
+ sort.Strings(names)
72
+ return names
73
+ }
74
+
75
+ func closeAll(files map[string]*os.File) {
76
+ for _, f := range files {
77
+ f.Close()
78
+ }
79
+ }
@@ -0,0 +1,163 @@
1
+ // Code generated by honey. DO NOT EDIT.
2
+ package cli
3
+
4
+ import (
5
+ "bytes"
6
+ "encoding/json"
7
+ "fmt"
8
+ "io"
9
+ "sort"
10
+ "strings"
11
+ "text/tabwriter"
12
+ "unicode"
13
+
14
+ "sigs.k8s.io/yaml"
15
+ )
16
+
17
+ // DecodeJSON decodes a response body keeping numbers exact (json.Number), so a
18
+ // 64-bit id is printed as sent instead of as a rounded float.
19
+ func DecodeJSON(body []byte) (any, error) {
20
+ if len(body) == 0 {
21
+ return nil, nil
22
+ }
23
+ dec := json.NewDecoder(bytes.NewReader(body))
24
+ dec.UseNumber()
25
+ var out any
26
+ if err := dec.Decode(&out); err != nil {
27
+ return nil, err
28
+ }
29
+ return out, nil
30
+ }
31
+
32
+ // Sanitize drops control characters (ESC, CR, tabs, …) so server-controlled
33
+ // text cannot drive the terminal or break table layout.
34
+ func Sanitize(s string) string {
35
+ return strings.Map(func(r rune) rune {
36
+ if r == '\n' {
37
+ return ' '
38
+ }
39
+ if unicode.IsControl(r) {
40
+ return -1
41
+ }
42
+ return r
43
+ }, s)
44
+ }
45
+
46
+ func cell(v any) string {
47
+ switch t := v.(type) {
48
+ case nil:
49
+ return ""
50
+ case string:
51
+ return Sanitize(t)
52
+ case json.Number:
53
+ return t.String()
54
+ case map[string]any, []any:
55
+ enc, err := json.Marshal(t)
56
+ if err != nil {
57
+ return Sanitize(fmt.Sprint(t))
58
+ }
59
+ return Sanitize(string(enc))
60
+ default:
61
+ return Sanitize(fmt.Sprint(t))
62
+ }
63
+ }
64
+
65
+ // Emit writes data to w in the requested mode.
66
+ //
67
+ // Supported modes: json (pretty, 2-space indent), ndjson, yaml, table.
68
+ // Unknown modes return an error that ExitFor maps to exit code 4.
69
+ func Emit(data any, mode string, w io.Writer) error {
70
+ if data == nil {
71
+ return nil
72
+ }
73
+ switch mode {
74
+ case "", "json":
75
+ enc, err := json.MarshalIndent(data, "", " ")
76
+ if err != nil {
77
+ return err
78
+ }
79
+ _, err = fmt.Fprintln(w, string(enc))
80
+ return err
81
+ case "ndjson":
82
+ enc, err := json.Marshal(data)
83
+ if err != nil {
84
+ return err
85
+ }
86
+ _, err = fmt.Fprintln(w, string(enc))
87
+ return err
88
+ case "yaml":
89
+ enc, err := yaml.Marshal(data)
90
+ if err != nil {
91
+ return err
92
+ }
93
+ _, err = w.Write(enc)
94
+ return err
95
+ case "table":
96
+ return printTable(data, w)
97
+ default:
98
+ return fmt.Errorf("unknown output mode %q: valid modes are json, ndjson, yaml, table", mode)
99
+ }
100
+ }
101
+
102
+ // printTable renders data as an aligned table when possible, or falls back to raw print.
103
+ func printTable(data any, w io.Writer) error {
104
+ switch v := data.(type) {
105
+ case []any:
106
+ if len(v) == 0 {
107
+ return nil
108
+ }
109
+ rows := make([]map[string]any, 0, len(v))
110
+ for _, row := range v {
111
+ if m, ok := row.(map[string]any); ok {
112
+ rows = append(rows, m)
113
+ } else {
114
+ fmt.Fprintln(w, row)
115
+ return nil
116
+ }
117
+ }
118
+ keys := collectKeys(rows)
119
+ tw := tabwriter.NewWriter(w, 0, 0, 2, ' ', 0)
120
+ header := make([]string, len(keys))
121
+ for i, k := range keys {
122
+ header[i] = Sanitize(k)
123
+ }
124
+ fmt.Fprintln(tw, strings.Join(header, "\t"))
125
+ for _, row := range rows {
126
+ cols := make([]string, len(keys))
127
+ for i, k := range keys {
128
+ cols[i] = cell(row[k])
129
+ }
130
+ fmt.Fprintln(tw, strings.Join(cols, "\t"))
131
+ }
132
+ return tw.Flush()
133
+ case map[string]any:
134
+ keys := make([]string, 0, len(v))
135
+ for k := range v {
136
+ keys = append(keys, k)
137
+ }
138
+ sort.Strings(keys)
139
+ tw := tabwriter.NewWriter(w, 0, 0, 2, ' ', 0)
140
+ for _, k := range keys {
141
+ fmt.Fprintf(tw, "%s\t%s\n", Sanitize(k), cell(v[k]))
142
+ }
143
+ return tw.Flush()
144
+ default:
145
+ _, err := fmt.Fprintln(w, cell(data))
146
+ return err
147
+ }
148
+ }
149
+
150
+ func collectKeys(rows []map[string]any) []string {
151
+ seen := map[string]bool{}
152
+ keys := []string{}
153
+ for _, row := range rows {
154
+ for k := range row {
155
+ if !seen[k] {
156
+ seen[k] = true
157
+ keys = append(keys, k)
158
+ }
159
+ }
160
+ }
161
+ sort.Strings(keys)
162
+ return keys
163
+ }
@@ -0,0 +1,30 @@
1
+ // Code generated by honey. DO NOT EDIT.
2
+ package cli
3
+
4
+ import (
5
+ "github.com/spf13/cobra"
6
+ )
7
+
8
+ // NewRoot constructs a cobra root command with the standard persistent flags.
9
+ //
10
+ // Flags (all persistent, inherited by subcommands):
11
+ //
12
+ // --api-key API key (overrides env + config file)
13
+ // --base-url Override API base URL
14
+ // --output Output mode: json|ndjson|yaml|table (default json)
15
+ // --verbose Print request metadata to stderr
16
+ // --config Path to config file
17
+ // --timeout Go duration string, e.g. "30s"
18
+ func NewRoot(binaryName, version string) *cobra.Command {
19
+ root := &cobra.Command{
20
+ Use: binaryName,
21
+ Version: version,
22
+ }
23
+ root.PersistentFlags().String("api-key", "", "API key (overrides env + config file; visible to other local users in the process list, prefer the env var)")
24
+ root.PersistentFlags().String("base-url", "", "Override API base URL")
25
+ root.PersistentFlags().String("output", "json", "Output mode: json|ndjson|yaml|table")
26
+ root.PersistentFlags().Bool("verbose", false, "Print request metadata to stderr")
27
+ root.PersistentFlags().String("config", "", "Path to config file")
28
+ root.PersistentFlags().String("timeout", "30s", "Request timeout (Go duration)")
29
+ return root
30
+ }
@@ -0,0 +1,88 @@
1
+ // Code generated by honey. DO NOT EDIT.
2
+ package cli
3
+
4
+ import (
5
+ "encoding/json"
6
+ "fmt"
7
+ "io"
8
+ "iter"
9
+ "os"
10
+
11
+ "sigs.k8s.io/yaml"
12
+ )
13
+
14
+ // SSEEvent is the concrete SSE event type consumed by StreamSSE. The CLI's
15
+ // generated cmd/*.go files wrap the SDK's iterator into a Seq2[SSEEvent, error]
16
+ // before passing it in, so this runtime stays SDK-agnostic. Go generics do not
17
+ // support struct-field access through a type parameter, so this is a plain
18
+ // concrete struct rather than a constrained generic.
19
+ type SSEEvent struct {
20
+ Data string
21
+ Event string
22
+ ID string
23
+ Retry int
24
+ }
25
+
26
+ // streamEvent is the on-wire shape that gets emitted for each SSE event.
27
+ type streamEvent struct {
28
+ Event string `json:"event,omitempty"`
29
+ ID string `json:"id,omitempty"`
30
+ Data json.RawMessage `json:"data"`
31
+ Retry int `json:"retry,omitempty"`
32
+ }
33
+
34
+ // StreamSSE consumes an iter.Seq2 of SSE events and writes them to w.
35
+ //
36
+ // --output modes:
37
+ //
38
+ // ndjson (default for streams) → one JSON object per line.
39
+ // yaml → YAML documents separated by "---\n".
40
+ // table → falls back to ndjson; prints a warning to os.Stderr.
41
+ // json → treated as ndjson (no way to represent a live stream as one object).
42
+ func StreamSSE(it iter.Seq2[SSEEvent, error], w io.Writer, mode string) error {
43
+ if mode == "table" {
44
+ fmt.Fprintln(os.Stderr, "warning: --output=table is not supported for streaming endpoints; falling back to ndjson")
45
+ mode = "ndjson"
46
+ }
47
+ for ev, err := range it {
48
+ if err != nil {
49
+ return err
50
+ }
51
+ out := streamEvent{
52
+ Event: ev.Event,
53
+ ID: ev.ID,
54
+ Retry: ev.Retry,
55
+ }
56
+ if ev.Data == "" {
57
+ out.Data = json.RawMessage("null")
58
+ } else if json.Valid([]byte(ev.Data)) {
59
+ out.Data = json.RawMessage(ev.Data)
60
+ } else {
61
+ enc, _ := json.Marshal(ev.Data)
62
+ out.Data = enc
63
+ }
64
+
65
+ switch mode {
66
+ case "yaml":
67
+ enc, err := yaml.Marshal(out)
68
+ if err != nil {
69
+ return err
70
+ }
71
+ if _, err := w.Write(enc); err != nil {
72
+ return err
73
+ }
74
+ if _, err := fmt.Fprint(w, "---\n"); err != nil {
75
+ return err
76
+ }
77
+ default:
78
+ enc, err := json.Marshal(out)
79
+ if err != nil {
80
+ return err
81
+ }
82
+ if _, err := fmt.Fprintln(w, string(enc)); err != nil {
83
+ return err
84
+ }
85
+ }
86
+ }
87
+ return nil
88
+ }
@@ -0,0 +1,5 @@
1
+ // Code generated by honey. DO NOT EDIT.
2
+ package cli
3
+
4
+ // Version is set at build time: go build -ldflags "-X <module>/internal/cli.Version=1.2.3".
5
+ var Version = "dev"
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- #!/usr/bin/env bun
1
+ #!/usr/bin/env node
2
2
  export {};
3
3
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js ADDED
@@ -0,0 +1,209 @@
1
+ #!/usr/bin/env node
2
+ import { existsSync, statSync, watch } from "node:fs";
3
+ import { dirname, resolve } from "node:path";
4
+ import { createModuleLoader, findViteConfig, loadHoneyPluginConfigs } from "./codegen-load.js";
5
+ import { runCli } from "./gen-process.js";
6
+ import { parseGenerateArgs, parseInitFlags, USAGE, UsageError } from "./cli-args.js";
7
+ import { runInit } from "./init.js";
8
+ import { generateAndWrite, generatedOutputs, isGeneratedOutput, resolveHoneyConfig } from "./plugin.js";
9
+ import { WATCH_IGNORE_RE } from "./glob.js";
10
+ import { setCodegenProcess } from "./serve-slot.js";
11
+ function applyCodegenFlags(target, flags) {
12
+ if (!target.codegen)
13
+ target.codegen = {};
14
+ const cg = target.codegen;
15
+ if (flags.mergeTree)
16
+ cg.mergeTree = flags.mergeTree;
17
+ if (flags.manifest)
18
+ cg.manifest = true;
19
+ if (flags.sdk)
20
+ cg.sdk = true;
21
+ if (flags.tree)
22
+ cg.tree = true;
23
+ if (flags.types)
24
+ cg.types = true;
25
+ const cliOverride = buildCliConfigFromFlags(flags);
26
+ if (cliOverride)
27
+ cg.cli = cliOverride;
28
+ }
29
+ function buildCliConfigFromFlags(flags) {
30
+ if (!flags.cli && !flags.cliOut && !flags.cliBinaryName)
31
+ return undefined;
32
+ if (!flags.cliOut || !flags.cliBinaryName) {
33
+ throw new UsageError("--cli requires --cli-out and --cli-binary-name");
34
+ }
35
+ return {
36
+ binaryName: flags.cliBinaryName,
37
+ configName: flags.cliConfigName,
38
+ defaultBaseURL: flags.cliDefaultBaseUrl,
39
+ envPrefix: flags.cliEnvPrefix,
40
+ modulePath: flags.cliModulePath,
41
+ out: flags.cliOut,
42
+ sdkModulePath: flags.cliSdkModulePath,
43
+ };
44
+ }
45
+ /** Picks one honey() config: `--plugin` by index, else the only one, else the one whose app is `--app`. */
46
+ function selectPluginConfig(configs, flags, configPath) {
47
+ if (flags.plugin !== undefined) {
48
+ const picked = configs[flags.plugin];
49
+ if (!picked) {
50
+ throw new UsageError(`--plugin ${flags.plugin}: ${configPath} has ${configs.length} honey() plugin(s)`);
51
+ }
52
+ return picked;
53
+ }
54
+ if (configs.length <= 1)
55
+ return configs[0];
56
+ const byApp = flags.app ? configs.filter((c) => c.app && resolve(c.app) === resolve(flags.app)) : [];
57
+ if (byApp.length === 1)
58
+ return byApp[0];
59
+ const apps = configs.map((c, i) => ` ${i}: ${c.app ?? "(no app)"}`).join("\n");
60
+ throw new UsageError(`${configPath} has ${configs.length} honey() plugins; pick one with --plugin <n>:\n${apps}`);
61
+ }
62
+ async function resolveConfig(cwd, flags, load) {
63
+ const configPath = flags.config ? resolve(cwd, flags.config) : findViteConfig(cwd);
64
+ if (flags.config && !existsSync(configPath)) {
65
+ throw new UsageError(`config file not found: ${flags.config}`);
66
+ }
67
+ let raw;
68
+ if (configPath) {
69
+ const command = process.env.HONEY_VITE_COMMAND === "serve" ? "serve" : "build";
70
+ const mode = process.env.HONEY_VITE_MODE ?? (command === "serve" ? "development" : "production");
71
+ const configs = await loadHoneyPluginConfigs(configPath, load, { command, mode });
72
+ if (configs.length === 0 && (flags.config || flags.plugin !== undefined || !flags.app)) {
73
+ throw new UsageError(`no honey() plugin found in ${configPath}; add honey() to it or pass --app`);
74
+ }
75
+ const picked = selectPluginConfig(configs, flags, configPath);
76
+ if (picked)
77
+ raw = { ...picked, codegen: { ...picked.codegen } };
78
+ }
79
+ if (raw) {
80
+ if (flags.app)
81
+ raw.app = flags.app;
82
+ }
83
+ else if (flags.app) {
84
+ raw = { app: flags.app };
85
+ }
86
+ else {
87
+ throw new UsageError("No config found. Provide a vite.config.ts with honey() or use --app.");
88
+ }
89
+ applyCodegenFlags(raw, flags);
90
+ return resolveHoneyConfig(raw);
91
+ }
92
+ /** One generation in this process, then exit: whatever the app left running must not keep it alive. */
93
+ async function generateOnce(cwd, flags) {
94
+ setCodegenProcess(true);
95
+ const load = await createModuleLoader({ fresh: false, from: resolve(cwd, "index.ts") });
96
+ const resolved = await resolveConfig(cwd, flags, load);
97
+ try {
98
+ await generateAndWrite(resolved, cwd, { load });
99
+ }
100
+ catch (err) {
101
+ console.error("honey: generation failed", err);
102
+ process.exit(1);
103
+ }
104
+ console.log("honey: generated");
105
+ process.exit(0);
106
+ }
107
+ /** Watch mode: every generation runs in a fresh child process, so edits to any imported file are seen. */
108
+ async function watchAndGenerate(cwd, flags, args) {
109
+ setCodegenProcess(true);
110
+ const load = await createModuleLoader({ fresh: true, from: resolve(cwd, "index.ts") });
111
+ const resolved = await resolveConfig(cwd, flags, load);
112
+ if (!resolved.app)
113
+ throw new UsageError("--watch requires --app or a honey() config with app");
114
+ setCodegenProcess(false);
115
+ const childArgs = ["generate", ...args.filter((a) => a !== "--watch" && a !== "--watch=true")];
116
+ const outputs = generatedOutputs(resolved, cwd);
117
+ /* a generation creating the directory an output lives in is not an edit */
118
+ const outputParents = new Set(outputs.files.map((file) => dirname(file)));
119
+ let running = false;
120
+ let pending = false;
121
+ const generate = async () => {
122
+ if (running) {
123
+ pending = true;
124
+ return;
125
+ }
126
+ running = true;
127
+ try {
128
+ await runCli(childArgs, { cwd });
129
+ }
130
+ catch {
131
+ /* the child already printed why */
132
+ }
133
+ finally {
134
+ running = false;
135
+ }
136
+ if (pending) {
137
+ pending = false;
138
+ await generate();
139
+ }
140
+ };
141
+ let debounce;
142
+ const schedule = () => {
143
+ clearTimeout(debounce);
144
+ debounce = setTimeout(() => void generate(), 100);
145
+ };
146
+ /* Arm the watcher and read the poll baseline before saying so and before the first generation:
147
+ * an edit made after "watching" or while the first generation runs queues a rerun instead of
148
+ * landing in the gap before the watcher exists. */
149
+ const appAbs = resolve(cwd, resolved.app);
150
+ const srcDir = dirname(appAbs);
151
+ watch(srcDir, { recursive: true }, (_event, filename) => {
152
+ if (!filename)
153
+ return;
154
+ const abs = resolve(srcDir, String(filename));
155
+ if (WATCH_IGNORE_RE.test(abs) || isGeneratedOutput(abs, outputs) || outputParents.has(abs))
156
+ return;
157
+ schedule();
158
+ });
159
+ /* recursive fs.watch misses replace-by-rename saves on some platforms; poll the entry too */
160
+ let lastMtime = mtimeOf(appAbs);
161
+ setInterval(() => {
162
+ const mtime = mtimeOf(appAbs);
163
+ if (mtime === lastMtime)
164
+ return;
165
+ lastMtime = mtime;
166
+ schedule();
167
+ }, 250);
168
+ console.log(`honey: watching ${srcDir}`);
169
+ await generate();
170
+ }
171
+ function mtimeOf(path) {
172
+ return existsSync(path) ? statSync(path).mtimeMs : 0;
173
+ }
174
+ async function main() {
175
+ const args = process.argv.slice(2);
176
+ const command = args[0];
177
+ if (command === "-h" || command === "--help") {
178
+ console.log(USAGE);
179
+ return;
180
+ }
181
+ if (command === "init") {
182
+ runInit(process.cwd(), parseInitFlags(args.slice(1)));
183
+ return;
184
+ }
185
+ if (command !== "generate") {
186
+ throw new UsageError(command ? `unknown command: ${command}` : "missing command");
187
+ }
188
+ const rest = args.slice(1);
189
+ const flags = parseGenerateArgs(rest);
190
+ if (flags.help) {
191
+ console.log(USAGE);
192
+ return;
193
+ }
194
+ const cwd = process.cwd();
195
+ if (flags.watch)
196
+ await watchAndGenerate(cwd, flags, rest);
197
+ else
198
+ await generateOnce(cwd, flags);
199
+ }
200
+ main().catch((err) => {
201
+ if (err instanceof UsageError) {
202
+ console.error(`honey: ${err.message}\n\n${USAGE}`);
203
+ }
204
+ else {
205
+ console.error(err);
206
+ }
207
+ process.exit(1);
208
+ });
209
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /** Absolute client bases: http(s) and ws(s). Case-insensitive per WHATWG. */
2
+ const ABSOLUTE_CLIENT_URL = /^(?:https?|wss?):\/\//i;
3
+ export function invalidBaseURLError(baseURL) {
4
+ return new Error(`Invalid baseURL ${JSON.stringify(baseURL)}: expected an absolute http(s): or ws(s): URL. Path-only values such as "/api" resolve against location.origin in browsers.`);
5
+ }
6
+ /**
7
+ * Honor `config.fetch` as-is. If omitted, bind the environment fetch so storing
8
+ * it on a client field does not throw `Illegal invocation` in browsers.
9
+ */
10
+ export function bindDefaultFetch(custom) {
11
+ if (custom)
12
+ return custom;
13
+ const nativeFetch = globalThis.fetch;
14
+ return typeof nativeFetch === "function" ? nativeFetch.bind(globalThis) : nativeFetch;
15
+ }
16
+ function currentLocationOrigin() {
17
+ let origin;
18
+ try {
19
+ origin = globalThis.location?.origin;
20
+ }
21
+ catch {
22
+ return undefined;
23
+ }
24
+ if (typeof origin !== "string" || origin === "" || origin === "null")
25
+ return undefined;
26
+ if (!ABSOLUTE_CLIENT_URL.test(origin))
27
+ return undefined;
28
+ return origin;
29
+ }
30
+ /**
31
+ * Parse `baseURL`. Absolute `http(s):` / `ws(s):` URLs are unchanged. Path-only
32
+ * values such as `/api` resolve against `location.origin` when present.
33
+ */
34
+ export function parseClientBaseURL(baseURL) {
35
+ if (ABSOLUTE_CLIENT_URL.test(baseURL))
36
+ return new URL(baseURL);
37
+ const origin = currentLocationOrigin();
38
+ if (origin !== undefined) {
39
+ try {
40
+ return new URL(baseURL, origin);
41
+ }
42
+ catch {
43
+ throw invalidBaseURLError(baseURL);
44
+ }
45
+ }
46
+ throw invalidBaseURLError(baseURL);
47
+ }
48
+ //# sourceMappingURL=defaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/client/defaults.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,mBAAmB,GAAG,wBAAwB,CAAA;AAEpD,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAClD,OAAO,IAAI,KAAK,CACf,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6HAA6H,CACvK,CAAA;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACrD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAA;IACpC,OAAO,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,WAA4B,CAAA;AACxG,CAAC;AAED,SAAS,qBAAqB;IAC7B,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACJ,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAA;IACjB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAA;IACtF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IACvD,OAAO,MAAM,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IACjD,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9D,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAA;IACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC;IACF,CAAC;IACD,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC"}