@lovrozagar/honey 0.6.8 → 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 +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 +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 +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 +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":"feature-detect.js","sourceRoot":"","sources":["../src/feature-detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import { getI18nRuntime } from "./i18n-slot.js";
10
+ import { getOpenApiRuntime } from "./openapi/spec-factory.js";
11
+ import { getServeRuntime } from "./serve-slot.js";
12
+ function isReady(name) {
13
+ try {
14
+ if (name === "i18n")
15
+ getI18nRuntime();
16
+ else if (name === "openapi")
17
+ getOpenApiRuntime();
18
+ else
19
+ getServeRuntime();
20
+ return true;
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ /** Opaque so bun/esbuild do not follow unused feature entries into a fetch-only bundle. */
27
+ export async function loadHoneyFeature(name) {
28
+ if (isReady(name))
29
+ return;
30
+ const mod = (await import(__rewriteRelativeImportExtension(["@lovrozagar/honey", name].join("/"))));
31
+ const enable = { i18n: "enableI18n", openapi: "enableOpenApi", serve: "enableServe" }[name];
32
+ const fn = mod[enable];
33
+ if (typeof fn === "function")
34
+ fn();
35
+ }
36
+ //# sourceMappingURL=feature-load.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-load.js","sourceRoot":"","sources":["../src/feature-load.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEjD,SAAS,OAAO,CAAC,IAAkC;IAClD,IAAI,CAAC;QACJ,IAAI,IAAI,KAAK,MAAM;YAAE,cAAc,EAAE,CAAA;aAChC,IAAI,IAAI,KAAK,SAAS;YAAE,iBAAiB,EAAE,CAAA;;YAC3C,eAAe,EAAE,CAAA;QACtB,OAAO,IAAI,CAAA;IACZ,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,KAAK,CAAA;IACb,CAAC;AACF,CAAC;AAED,2FAA2F;AAC3F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAkC;IACxE,IAAI,OAAO,CAAC,IAAI,CAAC;QAAE,OAAM;IACzB,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,kCAAC,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAC,CAA4B,CAAA;IAC5F,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,IAAI,CAAC,CAAA;IAC3F,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAA;IACtB,IAAI,OAAO,EAAE,KAAK,UAAU;QAAE,EAAE,EAAE,CAAA;AACnC,CAAC"}
@@ -0,0 +1,44 @@
1
+ import type { createProxyHandler } from "./proxy.ts";
2
+ import type { createBus } from "./realtime/bus.ts";
3
+ import type { resolveRealtimeConfig } from "./realtime/route.ts";
4
+ import type { createRealtimePublisher, createRealtimeSession } from "./realtime/server.ts";
5
+ import type { compileTrust } from "./trust.ts";
6
+ import type { originAllowed } from "./ws-origin.ts";
7
+ import type { createWsSession } from "./ws/session.ts";
8
+ /**
9
+ * Runtime features a builder method needs but most apps never call. The core imports none of
10
+ * them, so a bundle of an app that does not use them leaves them out; each feature's entry
11
+ * registers itself when imported. A builder method that finds its feature missing throws at
12
+ * registration, naming the import.
13
+ */
14
+ export type FeatureSlots = {
15
+ proxy: {
16
+ createProxyHandler: typeof createProxyHandler;
17
+ };
18
+ realtime: {
19
+ createBus: typeof createBus;
20
+ createRealtimePublisher: typeof createRealtimePublisher;
21
+ createRealtimeSession: typeof createRealtimeSession;
22
+ resolveRealtimeConfig: typeof resolveRealtimeConfig;
23
+ };
24
+ trust: {
25
+ compileTrust: typeof compileTrust;
26
+ };
27
+ ws: {
28
+ createWsSession: typeof createWsSession;
29
+ originAllowed: typeof originAllowed;
30
+ };
31
+ };
32
+ export type FeatureName = keyof FeatureSlots;
33
+ export declare function registerFeature<K extends FeatureName>(name: K, impl: FeatureSlots[K]): void;
34
+ /** Tests only: forget a registered feature. */
35
+ export declare function resetFeature(name: FeatureName): void;
36
+ /** The registered feature, or a throw that names the import `caller` needs. */
37
+ export declare function requireFeature<K extends FeatureName>(name: K, caller: string): FeatureSlots[K];
38
+ /**
39
+ * The registered feature, importing its entry first when nothing registered it yet. Works where
40
+ * modules load at run time (Node, Bun, Deno from `node_modules`); a bundle cannot follow the
41
+ * opaque specifier, so there the entry must be imported (honey's WebSocket adapters do).
42
+ */
43
+ export declare function loadFeature<K extends FeatureName>(name: K, caller: string): Promise<FeatureSlots[K]>;
44
+ //# sourceMappingURL=feature-slots.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-slots.d.ts","sourceRoot":"","sources":["../src/feature-slots.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE;QAAE,kBAAkB,EAAE,OAAO,kBAAkB,CAAA;KAAE,CAAA;IACxD,QAAQ,EAAE;QACT,SAAS,EAAE,OAAO,SAAS,CAAA;QAC3B,uBAAuB,EAAE,OAAO,uBAAuB,CAAA;QACvD,qBAAqB,EAAE,OAAO,qBAAqB,CAAA;QACnD,qBAAqB,EAAE,OAAO,qBAAqB,CAAA;KACnD,CAAA;IACD,KAAK,EAAE;QAAE,YAAY,EAAE,OAAO,YAAY,CAAA;KAAE,CAAA;IAC5C,EAAE,EAAE;QAAE,eAAe,EAAE,OAAO,eAAe,CAAC;QAAC,aAAa,EAAE,OAAO,aAAa,CAAA;KAAE,CAAA;CACpF,CAAA;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,YAAY,CAAA;AAW5C,wBAAgB,eAAe,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAE3F;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAEpD;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAM9F;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAS1G"}
@@ -0,0 +1,48 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ const ENTRY = {
10
+ proxy: "@lovrozagar/honey/proxy",
11
+ realtime: "@lovrozagar/honey/realtime",
12
+ trust: "@lovrozagar/honey/trust",
13
+ ws: "@lovrozagar/honey/ws/session",
14
+ };
15
+ const slots = {};
16
+ export function registerFeature(name, impl) {
17
+ slots[name] = impl;
18
+ }
19
+ /** Tests only: forget a registered feature. */
20
+ export function resetFeature(name) {
21
+ delete slots[name];
22
+ }
23
+ /** The registered feature, or a throw that names the import `caller` needs. */
24
+ export function requireFeature(name, caller) {
25
+ const impl = slots[name];
26
+ if (impl === undefined) {
27
+ throw new Error(`honey: ${caller} requires \`import "${ENTRY[name]}"\` in the app entry.`);
28
+ }
29
+ return impl;
30
+ }
31
+ /**
32
+ * The registered feature, importing its entry first when nothing registered it yet. Works where
33
+ * modules load at run time (Node, Bun, Deno from `node_modules`); a bundle cannot follow the
34
+ * opaque specifier, so there the entry must be imported (honey's WebSocket adapters do).
35
+ */
36
+ export async function loadFeature(name, caller) {
37
+ const impl = slots[name];
38
+ if (impl !== undefined)
39
+ return impl;
40
+ try {
41
+ await import(__rewriteRelativeImportExtension(/* @vite-ignore */ ENTRY[name]));
42
+ }
43
+ catch {
44
+ /* reported below, naming the import */
45
+ }
46
+ return requireFeature(name, caller);
47
+ }
48
+ //# sourceMappingURL=feature-slots.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-slots.js","sourceRoot":"","sources":["../src/feature-slots.ts"],"names":[],"mappings":";;;;;;;;AA4BA,MAAM,KAAK,GAAgC;IAC1C,KAAK,EAAE,yBAAyB;IAChC,QAAQ,EAAE,4BAA4B;IACtC,KAAK,EAAE,yBAAyB;IAChC,EAAE,EAAE,8BAA8B;CAClC,CAAA;AAED,MAAM,KAAK,GAA6C,EAAE,CAAA;AAE1D,MAAM,UAAU,eAAe,CAAwB,IAAO,EAAE,IAAqB;IACpF,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;AACnB,CAAC;AAED,+CAA+C;AAC/C,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;AACnB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAwB,IAAO,EAAE,MAAc;IAC5E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,uBAAuB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;IAC3F,CAAC;IACD,OAAO,IAAuB,CAAA;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAwB,IAAO,EAAE,MAAc;IAC/E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IACxB,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAuB,CAAA;IACtD,IAAI,CAAC;QACJ,MAAM,MAAM,kCAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAC,CAAA;IAC7C,CAAC;IAAC,MAAM,CAAC;QACR,uCAAuC;IACxC,CAAC;IACD,OAAO,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;AACpC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /** A Request-shaped object (Honey's Node shim) that can hand over the real Fetch `Request` behind it. */
2
+ export declare const TO_FETCH_REQUEST: unique symbol;
3
+ /**
4
+ * The Fetch `Request` for `req`. On Bun, Deno and Workers that is `req` itself. On Node, `ctx.req`
5
+ * is a lighter view of the incoming message, so `new Request(ctx.req)`, `fetch(ctx.req)` and
6
+ * `ctx.req instanceof Request` need this first; it builds the real Request once, and it then owns
7
+ * the body (read the body through either, not both).
8
+ */
9
+ export declare function toFetchRequest(req: Request): Request;
10
+ //# sourceMappingURL=fetch-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-request.d.ts","sourceRoot":"","sources":["../src/fetch-request.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,eAAO,MAAM,gBAAgB,eAAqC,CAAA;AAElE;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAGpD"}
@@ -0,0 +1,13 @@
1
+ /** A Request-shaped object (Honey's Node shim) that can hand over the real Fetch `Request` behind it. */
2
+ export const TO_FETCH_REQUEST = Symbol.for("honey.toFetchRequest");
3
+ /**
4
+ * The Fetch `Request` for `req`. On Bun, Deno and Workers that is `req` itself. On Node, `ctx.req`
5
+ * is a lighter view of the incoming message, so `new Request(ctx.req)`, `fetch(ctx.req)` and
6
+ * `ctx.req instanceof Request` need this first; it builds the real Request once, and it then owns
7
+ * the body (read the body through either, not both).
8
+ */
9
+ export function toFetchRequest(req) {
10
+ const own = req[TO_FETCH_REQUEST];
11
+ return typeof own === "function" ? own.call(req) : req;
12
+ }
13
+ //# sourceMappingURL=fetch-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-request.js","sourceRoot":"","sources":["../src/fetch-request.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;AAElE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IAC1C,MAAM,GAAG,GAAI,GAAyD,CAAC,gBAAgB,CAAC,CAAA;IACxF,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA;AACvD,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * argv that starts this package's CLI on the current runtime. Bun and a compiled install run the
3
+ * CLI directly. Source under Node (this repository's tests) goes through jiti's loader, with the
4
+ * `honey-source` condition so the app resolves the package to the same source.
5
+ */
6
+ export declare function cliInvocation(): string[];
7
+ /**
8
+ * Runs `honey <args>` in `cwd` and resolves when it exits 0. Each run gets a fresh module graph,
9
+ * so edits to any file the app imports are seen, and app side effects die with the child.
10
+ */
11
+ export declare function runCli(args: string[], options: {
12
+ cwd: string;
13
+ env?: Record<string, string>;
14
+ }): Promise<void>;
15
+ //# sourceMappingURL=gen-process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen-process.d.ts","sourceRoot":"","sources":["../src/gen-process.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAQxC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAc5G"}
@@ -0,0 +1,43 @@
1
+ /** Runs `honey generate` in a child process. Not a package export. */
2
+ import { spawn } from "node:child_process";
3
+ import { createRequire } from "node:module";
4
+ import { dirname, extname, join } from "node:path";
5
+ import { fileURLToPath, pathToFileURL } from "node:url";
6
+ const isBun = typeof globalThis.Bun !== "undefined";
7
+ /**
8
+ * argv that starts this package's CLI on the current runtime. Bun and a compiled install run the
9
+ * CLI directly. Source under Node (this repository's tests) goes through jiti's loader, with the
10
+ * `honey-source` condition so the app resolves the package to the same source.
11
+ */
12
+ export function cliInvocation() {
13
+ const self = fileURLToPath(import.meta.url);
14
+ const ext = extname(self);
15
+ const cli = join(dirname(self), `cli${ext}`);
16
+ if (ext !== ".ts" || isBun)
17
+ return [process.execPath, cli];
18
+ const jitiDir = dirname(createRequire(import.meta.url).resolve("jiti/package.json"));
19
+ const register = pathToFileURL(join(jitiDir, "lib", "jiti-register.mjs")).href;
20
+ return [process.execPath, "--conditions=honey-source", "--import", register, cli];
21
+ }
22
+ /**
23
+ * Runs `honey <args>` in `cwd` and resolves when it exits 0. Each run gets a fresh module graph,
24
+ * so edits to any file the app imports are seen, and app side effects die with the child.
25
+ */
26
+ export function runCli(args, options) {
27
+ const [cmd, ...pre] = cliInvocation();
28
+ return new Promise((resolvePromise, reject) => {
29
+ const child = spawn(cmd, [...pre, ...args], {
30
+ cwd: options.cwd,
31
+ env: { ...process.env, ...options.env },
32
+ stdio: ["ignore", "inherit", "inherit"],
33
+ });
34
+ child.on("error", reject);
35
+ child.on("exit", (code, signal) => {
36
+ if (code === 0)
37
+ resolvePromise();
38
+ else
39
+ reject(new Error(`honey ${args[0] ?? ""} failed (${signal ?? `exit ${code}`})`));
40
+ });
41
+ });
42
+ }
43
+ //# sourceMappingURL=gen-process.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen-process.js","sourceRoot":"","sources":["../src/gen-process.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAEvD,MAAM,KAAK,GAAG,OAAQ,UAAgC,CAAC,GAAG,KAAK,WAAW,CAAA;AAE1E;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC5B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAA;IAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAA;IAC5C,IAAI,GAAG,KAAK,KAAK,IAAI,KAAK;QAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACpF,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9E,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,2BAA2B,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAA;AAClF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,IAAc,EAAE,OAAsD;IAC5F,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,aAAa,EAA2B,CAAA;IAC9D,OAAO,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE;YAC3C,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;YACvC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;SACvC,CAAC,CAAA;QACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QACzB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACjC,IAAI,IAAI,KAAK,CAAC;gBAAE,cAAc,EAAE,CAAA;;gBAC3B,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,MAAM,IAAI,QAAQ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QACtF,CAAC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,19 @@
1
+ /** Lists what one generator run wrote into an output directory, so the next run can delete leftovers. */
2
+ export declare const OUTPUT_MANIFEST = ".honey-generated.json";
3
+ /**
4
+ * Writes `content` unless the file already holds exactly that. The write goes to a temp file in
5
+ * the same directory and is renamed over the target, so a crash never leaves a truncated file.
6
+ * Returns true when the file was written.
7
+ */
8
+ export declare function writeFileIfChanged(filePath: string, content: string): boolean;
9
+ /** Source file with a `@generated` header. Compares the full content, not only the header checksum. */
10
+ export declare function writeGenFile(filePath: string, body: string, generator: string): boolean;
11
+ export declare function writeGenJsonFile(filePath: string, data: unknown, generator: string): boolean;
12
+ export declare function writeGenYamlFile(filePath: string, data: unknown, generator: string): boolean;
13
+ /**
14
+ * Writes a generated directory (an SDK port, the Go CLI) and deletes the files the previous run
15
+ * wrote that this run no longer produces. Only files listed in the previous manifest are ever
16
+ * deleted, so hand-written files next to generated ones survive. Paths must stay inside `outDir`.
17
+ */
18
+ export declare function writeOutputDir(outDir: string, files: Record<string, string>): void;
19
+ //# sourceMappingURL=gen-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen-write.d.ts","sourceRoot":"","sources":["../src/gen-write.ts"],"names":[],"mappings":"AAKA,yGAAyG;AACzG,eAAO,MAAM,eAAe,0BAA0B,CAAA;AAEtD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAkB7E;AAMD,uGAAuG;AACvG,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CASvF;AAQD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5F;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAkBlF"}
@@ -0,0 +1,120 @@
1
+ import { createHash, randomBytes } from "node:crypto";
2
+ import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmdirSync, rmSync, writeFileSync } from "node:fs";
3
+ import { dirname, extname, isAbsolute, join, relative, resolve, sep } from "node:path";
4
+ import { toYaml } from "./yaml.js";
5
+ /** Lists what one generator run wrote into an output directory, so the next run can delete leftovers. */
6
+ export const OUTPUT_MANIFEST = ".honey-generated.json";
7
+ /**
8
+ * Writes `content` unless the file already holds exactly that. The write goes to a temp file in
9
+ * the same directory and is renamed over the target, so a crash never leaves a truncated file.
10
+ * Returns true when the file was written.
11
+ */
12
+ export function writeFileIfChanged(filePath, content) {
13
+ if (existsSync(filePath)) {
14
+ try {
15
+ if (readFileSync(filePath, "utf-8") === content)
16
+ return false;
17
+ }
18
+ catch {
19
+ /* unreadable — overwrite */
20
+ }
21
+ }
22
+ mkdirSync(dirname(filePath), { recursive: true });
23
+ const tmp = `${filePath}.${randomBytes(6).toString("hex")}.tmp`;
24
+ writeFileSync(tmp, content, "utf-8");
25
+ try {
26
+ renameSync(tmp, filePath);
27
+ }
28
+ catch (err) {
29
+ rmSync(tmp, { force: true });
30
+ throw err;
31
+ }
32
+ return true;
33
+ }
34
+ function checksum(text) {
35
+ return createHash("sha256").update(text).digest("hex").slice(0, 12);
36
+ }
37
+ /** Source file with a `@generated` header. Compares the full content, not only the header checksum. */
38
+ export function writeGenFile(filePath, body, generator) {
39
+ const normalized = body.replace(/\n*$/, "\n");
40
+ const ext = filePath.endsWith(".d.ts") ? ".d.ts" : extname(filePath);
41
+ const hash = checksum(normalized);
42
+ const header = ext === ".sql"
43
+ ? `-- @generated by ${generator} — do not edit. checksum: ${hash}`
44
+ : `/* @generated by ${generator} — do not edit. checksum: ${hash} */`;
45
+ return writeFileIfChanged(filePath, `${header}\n${normalized}`);
46
+ }
47
+ /** `x-generated` marker: an extension key, so the document stays valid OpenAPI. */
48
+ function withMarker(data, generator) {
49
+ const hash = checksum(JSON.stringify(data, null, 2));
50
+ return { "x-generated": `${generator} checksum:${hash}`, ...data };
51
+ }
52
+ export function writeGenJsonFile(filePath, data, generator) {
53
+ return writeFileIfChanged(filePath, `${JSON.stringify(withMarker(data, generator), null, 2)}\n`);
54
+ }
55
+ export function writeGenYamlFile(filePath, data, generator) {
56
+ return writeFileIfChanged(filePath, toYaml(withMarker(data, generator)));
57
+ }
58
+ /**
59
+ * Writes a generated directory (an SDK port, the Go CLI) and deletes the files the previous run
60
+ * wrote that this run no longer produces. Only files listed in the previous manifest are ever
61
+ * deleted, so hand-written files next to generated ones survive. Paths must stay inside `outDir`.
62
+ */
63
+ export function writeOutputDir(outDir, files) {
64
+ const root = resolve(outDir);
65
+ const written = new Set();
66
+ for (const [rel, content] of Object.entries(files)) {
67
+ const abs = resolveInside(root, rel);
68
+ writeFileIfChanged(abs, content);
69
+ written.add(toPosix(relative(root, abs)));
70
+ }
71
+ for (const stale of readOutputManifest(root)) {
72
+ if (written.has(stale))
73
+ continue;
74
+ const abs = resolveInside(root, stale);
75
+ rmSync(abs, { force: true });
76
+ removeEmptyParents(dirname(abs), root);
77
+ }
78
+ const manifest = `${JSON.stringify({ files: [...written].sort(compareCodeUnits) }, null, 2)}\n`;
79
+ writeFileIfChanged(join(root, OUTPUT_MANIFEST), manifest);
80
+ }
81
+ function readOutputManifest(root) {
82
+ const path = join(root, OUTPUT_MANIFEST);
83
+ if (!existsSync(path))
84
+ return [];
85
+ try {
86
+ const parsed = JSON.parse(readFileSync(path, "utf-8"));
87
+ return Array.isArray(parsed.files) ? parsed.files.filter((f) => typeof f === "string") : [];
88
+ }
89
+ catch {
90
+ return [];
91
+ }
92
+ }
93
+ function resolveInside(root, rel) {
94
+ const abs = resolve(root, rel);
95
+ if (isAbsolute(rel) || (abs !== root && !abs.startsWith(root + sep))) {
96
+ throw new Error(`generated file path escapes its output directory: ${rel}`);
97
+ }
98
+ if (abs === root)
99
+ throw new Error(`generated file path is the output directory itself: ${rel}`);
100
+ return abs;
101
+ }
102
+ function removeEmptyParents(dir, root) {
103
+ let current = dir;
104
+ while (current !== root && current.startsWith(root + sep)) {
105
+ /* a directory the user already deleted counts as removed; keep walking up */
106
+ if (existsSync(current)) {
107
+ if (readdirSync(current).length > 0)
108
+ return;
109
+ rmdirSync(current);
110
+ }
111
+ current = dirname(current);
112
+ }
113
+ }
114
+ function toPosix(p) {
115
+ return p.split(sep).join("/");
116
+ }
117
+ function compareCodeUnits(a, b) {
118
+ return a < b ? -1 : a > b ? 1 : 0;
119
+ }
120
+ //# sourceMappingURL=gen-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gen-write.js","sourceRoot":"","sources":["../src/gen-write.ts"],"names":[],"mappings":"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"}
package/dist/glob.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Glob → RegExp for `watch` patterns, matched against a path relative to the project root.
3
+ * Supports `**` (any number of segments), `*` and `?` (within a segment), `{a,b}` alternation and
4
+ * `[...]` classes (`[!...]` negates). A pattern is anchored at the root, so `src/**` never matches
5
+ * `node_modules/x/src/a.ts`.
6
+ */
7
+ export declare function globToRegExp(pattern: string): RegExp;
8
+ /**
9
+ * A matcher for `patterns`, compiled once: true when `file` (absolute, or relative to `root`)
10
+ * matches any pattern. Files outside `root` never match.
11
+ */
12
+ export declare function compileGlobs(patterns: readonly string[]): (file: string, root: string) => boolean;
13
+ /** True when `file` (absolute, or relative to `root`) matches any pattern. Files outside `root` never match. */
14
+ export declare function matchesGlob(file: string, patterns: readonly string[], root: string): boolean;
15
+ /**
16
+ * Paths a watch never regenerates for: generated files (`_gen/` and the `_gen` directory itself,
17
+ * `*.gen.*`), dependencies, and the `<file>.<hex>.tmp` files an atomic write renames into place. Shared by `honey generate --watch`
18
+ * and the Vite plugin.
19
+ */
20
+ export declare const WATCH_IGNORE_RE: RegExp;
21
+ //# sourceMappingURL=glob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../src/glob.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAcpD;AA+DD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAOjG;AAED,gHAAgH;AAChH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAE5F;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,QAAyF,CAAA"}
package/dist/glob.js ADDED
@@ -0,0 +1,115 @@
1
+ import { isAbsolute, relative } from "node:path";
2
+ /**
3
+ * Glob → RegExp for `watch` patterns, matched against a path relative to the project root.
4
+ * Supports `**` (any number of segments), `*` and `?` (within a segment), `{a,b}` alternation and
5
+ * `[...]` classes (`[!...]` negates). A pattern is anchored at the root, so `src/**` never matches
6
+ * `node_modules/x/src/a.ts`.
7
+ */
8
+ export function globToRegExp(pattern) {
9
+ const normalized = pattern.replaceAll("\\", "/").replace(/^(\.\/)+/, "");
10
+ const segments = normalized.split("/");
11
+ let re = "^";
12
+ segments.forEach((segment, i) => {
13
+ const last = i === segments.length - 1;
14
+ if (segment === "**") {
15
+ re += last ? ".*" : "(?:[^/]*/)*";
16
+ return;
17
+ }
18
+ re += segmentToRegExp(segment);
19
+ if (!last)
20
+ re += "/";
21
+ });
22
+ return new RegExp(`${re}$`);
23
+ }
24
+ function segmentToRegExp(segment) {
25
+ let out = "";
26
+ for (let i = 0; i < segment.length; i++) {
27
+ const ch = segment[i];
28
+ if (ch === "*") {
29
+ /* a stray `**` inside a segment means the same as `*` */
30
+ while (segment[i + 1] === "*")
31
+ i++;
32
+ out += "[^/]*";
33
+ }
34
+ else if (ch === "?") {
35
+ out += "[^/]";
36
+ }
37
+ else if (ch === "[") {
38
+ const close = segment.indexOf("]", i + 2);
39
+ if (close === -1) {
40
+ out += "\\[";
41
+ continue;
42
+ }
43
+ let body = segment.slice(i + 1, close);
44
+ if (body.startsWith("!"))
45
+ body = `^${body.slice(1)}`;
46
+ out += `[${body.replaceAll("\\", "\\\\").replaceAll("/", "")}]`;
47
+ i = close;
48
+ }
49
+ else if (ch === "{") {
50
+ const close = matchingBrace(segment, i);
51
+ if (close === -1) {
52
+ out += "\\{";
53
+ continue;
54
+ }
55
+ const alternatives = splitTopLevel(segment.slice(i + 1, close));
56
+ out += `(?:${alternatives.map(segmentToRegExp).join("|")})`;
57
+ i = close;
58
+ }
59
+ else {
60
+ out += ch.replace(/[.+^${}()|[\]\\]/g, "\\$&");
61
+ }
62
+ }
63
+ return out;
64
+ }
65
+ function matchingBrace(s, open) {
66
+ let depth = 0;
67
+ for (let i = open; i < s.length; i++) {
68
+ if (s[i] === "{")
69
+ depth++;
70
+ else if (s[i] === "}" && --depth === 0)
71
+ return i;
72
+ }
73
+ return -1;
74
+ }
75
+ function splitTopLevel(body) {
76
+ const parts = [];
77
+ let depth = 0;
78
+ let start = 0;
79
+ for (let i = 0; i < body.length; i++) {
80
+ if (body[i] === "{")
81
+ depth++;
82
+ else if (body[i] === "}")
83
+ depth--;
84
+ else if (body[i] === "," && depth === 0) {
85
+ parts.push(body.slice(start, i));
86
+ start = i + 1;
87
+ }
88
+ }
89
+ parts.push(body.slice(start));
90
+ return parts;
91
+ }
92
+ /**
93
+ * A matcher for `patterns`, compiled once: true when `file` (absolute, or relative to `root`)
94
+ * matches any pattern. Files outside `root` never match.
95
+ */
96
+ export function compileGlobs(patterns) {
97
+ const regexps = patterns.map(globToRegExp);
98
+ return (file, root) => {
99
+ const rel = (isAbsolute(file) ? relative(root, file) : file).replaceAll("\\", "/");
100
+ if (rel === "" || rel.startsWith("../") || rel === ".." || isAbsolute(rel))
101
+ return false;
102
+ return regexps.some((re) => re.test(rel));
103
+ };
104
+ }
105
+ /** True when `file` (absolute, or relative to `root`) matches any pattern. Files outside `root` never match. */
106
+ export function matchesGlob(file, patterns, root) {
107
+ return compileGlobs(patterns)(file, root);
108
+ }
109
+ /**
110
+ * Paths a watch never regenerates for: generated files (`_gen/` and the `_gen` directory itself,
111
+ * `*.gen.*`), dependencies, and the `<file>.<hex>.tmp` files an atomic write renames into place. Shared by `honey generate --watch`
112
+ * and the Vite plugin.
113
+ */
114
+ export const WATCH_IGNORE_RE = /(^|[/\\])_gen([/\\]|$)|\.gen\.(tsx?|json|ya?ml|d\.ts)$|[/\\]node_modules[/\\]|\.tmp$/;
115
+ //# sourceMappingURL=glob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"glob.js","sourceRoot":"","sources":["../src/glob.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { IRSchema } from "./codegen-ir.ts";
2
- export declare const GO_KEYWORDS: Set<string>;
3
- /** Converts a string to PascalCase from kebab-case, snake_case, dotted, or camelCase. */
2
+ import { GO_KEYWORDS } from "./codegen-lang.ts";
3
+ export { GO_KEYWORDS };
4
+ /** Exported Go identifier from kebab-case, snake_case, dotted, camelCase or arbitrary text. */
4
5
  export declare function goPascal(name: string): string;
5
6
  /**
6
7
  * Returns a safe Go identifier. PascalCase makes all exported identifiers safe
@@ -8,13 +9,26 @@ export declare function goPascal(name: string): string;
8
9
  * For unexported uses the keyword check adds `_` suffix.
9
10
  */
10
11
  export declare function goIdent(name: string, exported?: boolean): string;
11
- export declare function goTag(jsonKey: string, omitempty: boolean): string;
12
+ export declare function goTag(jsonKey: string, omit: boolean | "omitzero"): string;
13
+ /** Package-level naming shared by every type the SDK emits. */
14
+ export type GoTypeNames = {
15
+ /** Go type name for a component schema. */
16
+ ref: (schemaName: string) => string;
17
+ /** Unique package-level name for a hoisted declaration; the same key always gets the same name. */
18
+ hoist: (key: string, base: string) => string;
19
+ /** Unique package-level name for a constant. */
20
+ claimConst: (base: string) => string;
21
+ /** Component schemas that reach themselves by value; references to them become pointers. */
22
+ cyclic: Set<string>;
23
+ resolve: (schema: IRSchema) => IRSchema;
24
+ };
12
25
  export type RenderUseCtx = {
13
26
  parentName: string;
14
27
  fieldName: string;
15
28
  decls: Map<string, string>;
16
29
  circularRefs?: Set<string>;
17
30
  depth?: number;
31
+ names?: GoTypeNames;
18
32
  };
19
33
  export declare function isNullable(schema: Record<string, unknown>): boolean;
20
34
  export declare function isStringEnum(schema: Record<string, unknown>): boolean;
@@ -27,7 +41,7 @@ export declare function irRenderUse(ir: IRSchema, ctx: RenderUseCtx, depth?: num
27
41
  * `raw` 4th arg is for the const-with-declared-type branch only: IR `const` kind
28
42
  * strips the type field; `raw.type` provides the override.
29
43
  */
30
- export declare function irRenderTopLevel(name: string, ir: IRSchema, decls: Map<string, string>, raw?: Record<string, unknown>): string;
44
+ export declare function irRenderTopLevel(name: string, ir: IRSchema, decls: Map<string, string>, raw?: Record<string, unknown>, names?: GoTypeNames): string;
31
45
  export declare function renderUse(schema: Record<string, unknown> | undefined, ctx: RenderUseCtx): string;
32
46
  export declare function renderTopLevel(name: string, schema: Record<string, unknown>, decls: Map<string, string>): string;
33
47
  //# sourceMappingURL=go-type-emitter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"go-type-emitter.d.ts","sourceRoot":"","sources":["../src/go-type-emitter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE/C,eAAO,MAAM,WAAW,aA0BtB,CAAA;AAEF,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,MAAM,CAM7D;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAEjE;AAED,MAAM,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOnE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOrE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOlE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAEvE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3E;AA+CD,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,SAAI,GAAG,MAAM,CA4F9E;AA0BD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,MAAM,CAmIR;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAEhG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAEhH"}
1
+ {"version":3,"file":"go-type-emitter.d.ts","sourceRoot":"","sources":["../src/go-type-emitter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAW,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EACN,WAAW,EAOX,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,WAAW,EAAE,CAAA;AAEtB,+FAA+F;AAC/F,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,UAAO,GAAG,MAAM,CAM7D;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAEzE;AAoBD,+DAA+D;AAC/D,MAAM,MAAM,WAAW,GAAG;IACzB,2CAA2C;IAC3C,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAA;IACnC,mGAAmG;IACnG,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IAC5C,gDAAgD;IAChD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACpC,4FAA4F;IAC5F,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,KAAK,QAAQ,CAAA;CACvC,CAAA;AAUD,MAAM,MAAM,YAAY,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC1B,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,WAAW,CAAA;CACnB,CAAA;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOnE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOrE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAOlE;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAEvE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3E;AAoED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,SAAI,GAAG,MAAM,CA6G9E;AA0LD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC/B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,QAAQ,EACZ,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,CAAC,EAAE,WAAW,GACjB,MAAM,CAgKR;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAAE,GAAG,EAAE,YAAY,GAAG,MAAM,CAEhG;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAEhH"}