chkit 0.1.2-beta.7 → 0.2.0-beta.12

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 (322) hide show
  1. package/README.md +69 -56
  2. package/dist/bin/chkit.js +82 -31
  3. package/dist/bin/chkit.js.map +1 -1
  4. package/dist/commands/check/output.js +1 -1
  5. package/dist/commands/check/output.js.map +1 -1
  6. package/dist/commands/drift/command.d.ts.map +1 -1
  7. package/dist/commands/drift/command.js +9 -0
  8. package/dist/commands/drift/command.js.map +1 -1
  9. package/dist/commands/drift/compare.d.ts +52 -4
  10. package/dist/commands/drift/compare.d.ts.map +1 -1
  11. package/dist/commands/drift/compare.js +258 -49
  12. package/dist/commands/drift/compare.js.map +1 -1
  13. package/dist/commands/drift/payload.d.ts +1 -0
  14. package/dist/commands/drift/payload.d.ts.map +1 -1
  15. package/dist/commands/drift/payload.js +59 -10
  16. package/dist/commands/drift/payload.js.map +1 -1
  17. package/dist/commands/generate/command.d.ts.map +1 -1
  18. package/dist/commands/generate/command.js +73 -33
  19. package/dist/commands/generate/command.js.map +1 -1
  20. package/dist/commands/generate/cutover.d.ts +56 -0
  21. package/dist/commands/generate/cutover.d.ts.map +1 -0
  22. package/dist/commands/generate/cutover.js +138 -0
  23. package/dist/commands/generate/cutover.js.map +1 -0
  24. package/dist/commands/generate/output.d.ts +3 -2
  25. package/dist/commands/generate/output.d.ts.map +1 -1
  26. package/dist/commands/generate/output.js +17 -2
  27. package/dist/commands/generate/output.js.map +1 -1
  28. package/dist/commands/generate/plan-pipeline.d.ts.map +1 -1
  29. package/dist/commands/generate/plan-pipeline.js +35 -36
  30. package/dist/commands/generate/plan-pipeline.js.map +1 -1
  31. package/dist/commands/init.d.ts +2 -0
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +21 -4
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/migrate/abandon.d.ts +39 -0
  36. package/dist/commands/migrate/abandon.d.ts.map +1 -0
  37. package/dist/commands/migrate/abandon.js +76 -0
  38. package/dist/commands/migrate/abandon.js.map +1 -0
  39. package/dist/commands/migrate/apply.d.ts +10 -1
  40. package/dist/commands/migrate/apply.d.ts.map +1 -1
  41. package/dist/commands/migrate/apply.js +108 -10
  42. package/dist/commands/migrate/apply.js.map +1 -1
  43. package/dist/commands/migrate/async-apply.d.ts +11 -3
  44. package/dist/commands/migrate/async-apply.d.ts.map +1 -1
  45. package/dist/commands/migrate/async-apply.js +113 -27
  46. package/dist/commands/migrate/async-apply.js.map +1 -1
  47. package/dist/commands/migrate/command.d.ts +46 -1
  48. package/dist/commands/migrate/command.d.ts.map +1 -1
  49. package/dist/commands/migrate/command.js +159 -35
  50. package/dist/commands/migrate/command.js.map +1 -1
  51. package/dist/commands/migrate/empty.d.ts +8 -0
  52. package/dist/commands/migrate/empty.d.ts.map +1 -0
  53. package/dist/commands/migrate/empty.js +17 -0
  54. package/dist/commands/migrate/empty.js.map +1 -0
  55. package/dist/commands/migrate/errors.d.ts +22 -0
  56. package/dist/commands/migrate/errors.d.ts.map +1 -0
  57. package/dist/commands/migrate/errors.js +31 -0
  58. package/dist/commands/migrate/errors.js.map +1 -0
  59. package/dist/commands/migrate/output.d.ts +31 -0
  60. package/dist/commands/migrate/output.d.ts.map +1 -1
  61. package/dist/commands/migrate/output.js +120 -9
  62. package/dist/commands/migrate/output.js.map +1 -1
  63. package/dist/commands/migrate/prompts.d.ts +1 -0
  64. package/dist/commands/migrate/prompts.d.ts.map +1 -1
  65. package/dist/commands/migrate/prompts.js +3 -0
  66. package/dist/commands/migrate/prompts.js.map +1 -1
  67. package/dist/commands/migrate/recovery.d.ts +90 -0
  68. package/dist/commands/migrate/recovery.d.ts.map +1 -0
  69. package/dist/commands/migrate/recovery.js +163 -0
  70. package/dist/commands/migrate/recovery.js.map +1 -0
  71. package/dist/commands/migrate/retry.d.ts +37 -0
  72. package/dist/commands/migrate/retry.d.ts.map +1 -0
  73. package/dist/commands/migrate/retry.js +46 -0
  74. package/dist/commands/migrate/retry.js.map +1 -0
  75. package/dist/commands/migrate/settings.d.ts +8 -0
  76. package/dist/commands/migrate/settings.d.ts.map +1 -0
  77. package/dist/commands/migrate/settings.js +40 -0
  78. package/dist/commands/migrate/settings.js.map +1 -0
  79. package/dist/commands/plugin.d.ts.map +1 -1
  80. package/dist/commands/plugin.js +28 -4
  81. package/dist/commands/plugin.js.map +1 -1
  82. package/dist/commands/query.d.ts.map +1 -1
  83. package/dist/commands/query.js +11 -15
  84. package/dist/commands/query.js.map +1 -1
  85. package/dist/commands/registry.d.ts +2 -0
  86. package/dist/commands/registry.d.ts.map +1 -0
  87. package/dist/commands/registry.js +228 -0
  88. package/dist/commands/registry.js.map +1 -0
  89. package/dist/commands/snapshot/command.d.ts +3 -0
  90. package/dist/commands/snapshot/command.d.ts.map +1 -0
  91. package/dist/commands/snapshot/command.js +32 -0
  92. package/dist/commands/snapshot/command.js.map +1 -0
  93. package/dist/commands/snapshot/output.d.ts +24 -0
  94. package/dist/commands/snapshot/output.d.ts.map +1 -0
  95. package/dist/commands/snapshot/output.js +86 -0
  96. package/dist/commands/snapshot/output.js.map +1 -0
  97. package/dist/commands/snapshot/rebuild.d.ts +19 -0
  98. package/dist/commands/snapshot/rebuild.d.ts.map +1 -0
  99. package/dist/commands/snapshot/rebuild.js +94 -0
  100. package/dist/commands/snapshot/rebuild.js.map +1 -0
  101. package/dist/internal-plugins/core/plugin.d.ts.map +1 -1
  102. package/dist/internal-plugins/core/plugin.js +2 -0
  103. package/dist/internal-plugins/core/plugin.js.map +1 -1
  104. package/dist/registry/build.d.ts +17 -0
  105. package/dist/registry/build.d.ts.map +1 -0
  106. package/dist/registry/build.js +94 -0
  107. package/dist/registry/build.js.map +1 -0
  108. package/dist/registry/dependencies.d.ts +19 -0
  109. package/dist/registry/dependencies.d.ts.map +1 -0
  110. package/dist/registry/dependencies.js +105 -0
  111. package/dist/registry/dependencies.js.map +1 -0
  112. package/dist/registry/files.d.ts +4 -0
  113. package/dist/registry/files.d.ts.map +1 -0
  114. package/dist/registry/files.js +33 -0
  115. package/dist/registry/files.js.map +1 -0
  116. package/dist/registry/install.d.ts +55 -0
  117. package/dist/registry/install.d.ts.map +1 -0
  118. package/dist/registry/install.js +175 -0
  119. package/dist/registry/install.js.map +1 -0
  120. package/dist/registry/model.d.ts +172 -0
  121. package/dist/registry/model.d.ts.map +1 -0
  122. package/dist/registry/model.js +161 -0
  123. package/dist/registry/model.js.map +1 -0
  124. package/dist/registry/project-config.d.ts +18 -0
  125. package/dist/registry/project-config.d.ts.map +1 -0
  126. package/dist/registry/project-config.js +337 -0
  127. package/dist/registry/project-config.js.map +1 -0
  128. package/dist/registry/resolve.d.ts +7 -0
  129. package/dist/registry/resolve.d.ts.map +1 -0
  130. package/dist/registry/resolve.js +136 -0
  131. package/dist/registry/resolve.js.map +1 -0
  132. package/dist/runtime/argv.d.ts +3 -0
  133. package/dist/runtime/argv.d.ts.map +1 -0
  134. package/dist/runtime/argv.js +29 -0
  135. package/dist/runtime/argv.js.map +1 -0
  136. package/dist/runtime/command-dispatch.d.ts +2 -1
  137. package/dist/runtime/command-dispatch.d.ts.map +1 -1
  138. package/dist/runtime/command-dispatch.js +15 -7
  139. package/dist/runtime/command-dispatch.js.map +1 -1
  140. package/dist/runtime/config-merge.d.ts.map +1 -1
  141. package/dist/runtime/config-merge.js +2 -1
  142. package/dist/runtime/config-merge.js.map +1 -1
  143. package/dist/runtime/config.d.ts.map +1 -1
  144. package/dist/runtime/config.js +2 -1
  145. package/dist/runtime/config.js.map +1 -1
  146. package/dist/runtime/global-flags.d.ts +4 -0
  147. package/dist/runtime/global-flags.d.ts.map +1 -1
  148. package/dist/runtime/global-flags.js +1 -0
  149. package/dist/runtime/global-flags.js.map +1 -1
  150. package/dist/runtime/help.d.ts +1 -1
  151. package/dist/runtime/help.d.ts.map +1 -1
  152. package/dist/runtime/help.js +13 -4
  153. package/dist/runtime/help.js.map +1 -1
  154. package/dist/runtime/journal-store.d.ts.map +1 -1
  155. package/dist/runtime/journal-store.js +178 -42
  156. package/dist/runtime/journal-store.js.map +1 -1
  157. package/dist/runtime/json-output.d.ts +15 -1
  158. package/dist/runtime/json-output.d.ts.map +1 -1
  159. package/dist/runtime/json-output.js +43 -2
  160. package/dist/runtime/json-output.js.map +1 -1
  161. package/dist/runtime/migration-store.d.ts +1 -1
  162. package/dist/runtime/migration-store.d.ts.map +1 -1
  163. package/dist/runtime/migration-store.js +17 -16
  164. package/dist/runtime/migration-store.js.map +1 -1
  165. package/dist/runtime/plugin-runtime/executor-debug.d.ts.map +1 -1
  166. package/dist/runtime/plugin-runtime/executor-debug.js +10 -8
  167. package/dist/runtime/plugin-runtime/executor-debug.js.map +1 -1
  168. package/dist/runtime/plugin-runtime/loader.js +1 -1
  169. package/dist/runtime/plugin-runtime/loader.js.map +1 -1
  170. package/dist/runtime/safety-markers.d.ts +4 -2
  171. package/dist/runtime/safety-markers.d.ts.map +1 -1
  172. package/dist/runtime/safety-markers.js +4 -2
  173. package/dist/runtime/safety-markers.js.map +1 -1
  174. package/dist/runtime/schema-loader.d.ts +20 -1
  175. package/dist/runtime/schema-loader.d.ts.map +1 -1
  176. package/dist/runtime/schema-loader.js +26 -0
  177. package/dist/runtime/schema-loader.js.map +1 -1
  178. package/dist/runtime/snapshot-document.d.ts +33 -0
  179. package/dist/runtime/snapshot-document.d.ts.map +1 -0
  180. package/dist/runtime/snapshot-document.js +65 -0
  181. package/dist/runtime/snapshot-document.js.map +1 -0
  182. package/package.json +20 -7
  183. package/dist/bin/clickhouse-resource.d.ts +0 -4
  184. package/dist/bin/clickhouse-resource.d.ts.map +0 -1
  185. package/dist/bin/clickhouse-resource.js +0 -11
  186. package/dist/bin/clickhouse-resource.js.map +0 -1
  187. package/dist/bin/command-dispatch.d.ts +0 -13
  188. package/dist/bin/command-dispatch.d.ts.map +0 -1
  189. package/dist/bin/command-dispatch.js +0 -186
  190. package/dist/bin/command-dispatch.js.map +0 -1
  191. package/dist/bin/command-registry.d.ts +0 -34
  192. package/dist/bin/command-registry.d.ts.map +0 -1
  193. package/dist/bin/command-registry.js +0 -87
  194. package/dist/bin/command-registry.js.map +0 -1
  195. package/dist/bin/commands/check.d.ts +0 -3
  196. package/dist/bin/commands/check.d.ts.map +0 -1
  197. package/dist/bin/commands/check.js +0 -181
  198. package/dist/bin/commands/check.js.map +0 -1
  199. package/dist/bin/commands/codegen.d.ts +0 -2
  200. package/dist/bin/commands/codegen.d.ts.map +0 -1
  201. package/dist/bin/commands/codegen.js +0 -25
  202. package/dist/bin/commands/codegen.js.map +0 -1
  203. package/dist/bin/commands/drift.d.ts +0 -27
  204. package/dist/bin/commands/drift.d.ts.map +0 -1
  205. package/dist/bin/commands/drift.js +0 -220
  206. package/dist/bin/commands/drift.js.map +0 -1
  207. package/dist/bin/commands/generate/output.d.ts +0 -8
  208. package/dist/bin/commands/generate/output.d.ts.map +0 -1
  209. package/dist/bin/commands/generate/output.js +0 -58
  210. package/dist/bin/commands/generate/output.js.map +0 -1
  211. package/dist/bin/commands/generate/plan-pipeline.d.ts +0 -7
  212. package/dist/bin/commands/generate/plan-pipeline.d.ts.map +0 -1
  213. package/dist/bin/commands/generate/plan-pipeline.js +0 -143
  214. package/dist/bin/commands/generate/plan-pipeline.js.map +0 -1
  215. package/dist/bin/commands/generate/rename-mappings.d.ts +0 -29
  216. package/dist/bin/commands/generate/rename-mappings.d.ts.map +0 -1
  217. package/dist/bin/commands/generate/rename-mappings.js +0 -195
  218. package/dist/bin/commands/generate/rename-mappings.js.map +0 -1
  219. package/dist/bin/commands/generate.d.ts +0 -3
  220. package/dist/bin/commands/generate.d.ts.map +0 -1
  221. package/dist/bin/commands/generate.js +0 -158
  222. package/dist/bin/commands/generate.js.map +0 -1
  223. package/dist/bin/commands/init.d.ts +0 -2
  224. package/dist/bin/commands/init.d.ts.map +0 -1
  225. package/dist/bin/commands/init.js +0 -12
  226. package/dist/bin/commands/init.js.map +0 -1
  227. package/dist/bin/commands/migrate.d.ts +0 -3
  228. package/dist/bin/commands/migrate.d.ts.map +0 -1
  229. package/dist/bin/commands/migrate.js +0 -288
  230. package/dist/bin/commands/migrate.js.map +0 -1
  231. package/dist/bin/commands/plugin-like.d.ts +0 -38
  232. package/dist/bin/commands/plugin-like.d.ts.map +0 -1
  233. package/dist/bin/commands/plugin-like.js +0 -101
  234. package/dist/bin/commands/plugin-like.js.map +0 -1
  235. package/dist/bin/commands/plugin.d.ts +0 -3
  236. package/dist/bin/commands/plugin.d.ts.map +0 -1
  237. package/dist/bin/commands/plugin.js +0 -148
  238. package/dist/bin/commands/plugin.js.map +0 -1
  239. package/dist/bin/commands/pull.d.ts +0 -2
  240. package/dist/bin/commands/pull.d.ts.map +0 -1
  241. package/dist/bin/commands/pull.js +0 -25
  242. package/dist/bin/commands/pull.js.map +0 -1
  243. package/dist/bin/commands/status.d.ts +0 -3
  244. package/dist/bin/commands/status.d.ts.map +0 -1
  245. package/dist/bin/commands/status.js +0 -63
  246. package/dist/bin/commands/status.js.map +0 -1
  247. package/dist/bin/commands/typegen.d.ts +0 -2
  248. package/dist/bin/commands/typegen.d.ts.map +0 -1
  249. package/dist/bin/commands/typegen.js +0 -25
  250. package/dist/bin/commands/typegen.js.map +0 -1
  251. package/dist/bin/config.d.ts +0 -13
  252. package/dist/bin/config.d.ts.map +0 -1
  253. package/dist/bin/config.js +0 -48
  254. package/dist/bin/config.js.map +0 -1
  255. package/dist/bin/debug.d.ts +0 -3
  256. package/dist/bin/debug.d.ts.map +0 -1
  257. package/dist/bin/debug.js +0 -14
  258. package/dist/bin/debug.js.map +0 -1
  259. package/dist/bin/global-flags.d.ts +0 -16
  260. package/dist/bin/global-flags.d.ts.map +0 -1
  261. package/dist/bin/global-flags.js +0 -7
  262. package/dist/bin/global-flags.js.map +0 -1
  263. package/dist/bin/help.d.ts +0 -5
  264. package/dist/bin/help.d.ts.map +0 -1
  265. package/dist/bin/help.js +0 -84
  266. package/dist/bin/help.js.map +0 -1
  267. package/dist/bin/internal-plugins/index.d.ts +0 -3
  268. package/dist/bin/internal-plugins/index.d.ts.map +0 -1
  269. package/dist/bin/internal-plugins/index.js +0 -5
  270. package/dist/bin/internal-plugins/index.js.map +0 -1
  271. package/dist/bin/internal-plugins/skill-hint.d.ts +0 -31
  272. package/dist/bin/internal-plugins/skill-hint.d.ts.map +0 -1
  273. package/dist/bin/internal-plugins/skill-hint.js +0 -172
  274. package/dist/bin/internal-plugins/skill-hint.js.map +0 -1
  275. package/dist/bin/journal-store.d.ts +0 -10
  276. package/dist/bin/journal-store.d.ts.map +0 -1
  277. package/dist/bin/journal-store.js +0 -137
  278. package/dist/bin/journal-store.js.map +0 -1
  279. package/dist/bin/json-output.d.ts +0 -5
  280. package/dist/bin/json-output.d.ts.map +0 -1
  281. package/dist/bin/json-output.js +0 -21
  282. package/dist/bin/json-output.js.map +0 -1
  283. package/dist/bin/lib.d.ts +0 -5
  284. package/dist/bin/lib.d.ts.map +0 -1
  285. package/dist/bin/lib.js +0 -5
  286. package/dist/bin/lib.js.map +0 -1
  287. package/dist/bin/logging.d.ts +0 -3
  288. package/dist/bin/logging.d.ts.map +0 -1
  289. package/dist/bin/logging.js +0 -31
  290. package/dist/bin/logging.js.map +0 -1
  291. package/dist/bin/migration-store.d.ts +0 -22
  292. package/dist/bin/migration-store.d.ts.map +0 -1
  293. package/dist/bin/migration-store.js +0 -60
  294. package/dist/bin/migration-store.js.map +0 -1
  295. package/dist/bin/plugin-runtime.d.ts +0 -45
  296. package/dist/bin/plugin-runtime.d.ts.map +0 -1
  297. package/dist/bin/plugin-runtime.js +0 -513
  298. package/dist/bin/plugin-runtime.js.map +0 -1
  299. package/dist/bin/safety-markers.d.ts +0 -23
  300. package/dist/bin/safety-markers.d.ts.map +0 -1
  301. package/dist/bin/safety-markers.js +0 -85
  302. package/dist/bin/safety-markers.js.map +0 -1
  303. package/dist/bin/schema-loader.d.ts +0 -3
  304. package/dist/bin/schema-loader.d.ts.map +0 -1
  305. package/dist/bin/schema-loader.js +0 -11
  306. package/dist/bin/schema-loader.js.map +0 -1
  307. package/dist/bin/table-scope.d.ts +0 -38
  308. package/dist/bin/table-scope.d.ts.map +0 -1
  309. package/dist/bin/table-scope.js +0 -167
  310. package/dist/bin/table-scope.js.map +0 -1
  311. package/dist/bin/version.d.ts +0 -2
  312. package/dist/bin/version.d.ts.map +0 -1
  313. package/dist/bin/version.js +0 -5
  314. package/dist/bin/version.js.map +0 -1
  315. package/dist/drift-diff.d.ts +0 -8
  316. package/dist/drift-diff.d.ts.map +0 -1
  317. package/dist/drift-diff.js +0 -46
  318. package/dist/drift-diff.js.map +0 -1
  319. package/dist/drift.d.ts +0 -66
  320. package/dist/drift.d.ts.map +0 -1
  321. package/dist/drift.js +0 -220
  322. package/dist/drift.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/registry/install.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGxD,OAAO,EAAmC,KAAK,YAAY,EAAE,MAAM,YAAY,CAAA;AAY/E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3D,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,cAAc,EAAE,cAAc,CAAA;IAC9B,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,OAAO,CAAA;IACzB,eAAe,EAAE,OAAO,CAAA;CACzB;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAC/F,GAAG,OAAO,CAAC,WAAW,CAAC,CA4EvB;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,GAAE;IAC/D,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACpE,GAAG,OAAO,CAAC,IAAI,CAAC,CAerB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW;;cA9G1B,MAAM;iBAAW,MAAM;gBAAU,MAAM;;;;;;;;;;;;;EAyH1D"}
@@ -0,0 +1,175 @@
1
+ import { mkdir, mkdtemp, readFile, rename, rm, writeFile } from 'node:fs/promises';
2
+ import { dirname, relative, resolve } from 'node:path';
3
+ import { z } from 'zod';
4
+ import { installDependencies, planDependencies } from './dependencies.js';
5
+ import { assertProjectPath, readOptional } from './files.js';
6
+ import { hashContent, isSafeRelativePath } from './model.js';
7
+ import { planProjectConfig } from './project-config.js';
8
+ const lockSchema = z.object({
9
+ formatVersion: z.literal(1),
10
+ items: z.record(z.string(), z.object({
11
+ version: z.string(), origin: z.string(), artifactHash: z.string(), root: z.string(), dependenciesInstalled: z.boolean(),
12
+ withTests: z.boolean().optional(),
13
+ files: z.record(z.string(), z.string()),
14
+ }).strict()),
15
+ }).strict();
16
+ export async function planInstallation(input) {
17
+ const cwd = resolve(input.cwd);
18
+ const meta = input.item.meta.chkit;
19
+ const root = input.path ?? meta.root;
20
+ if (!isSafeRelativePath(root))
21
+ throw new Error('--path must be a normalized project-relative directory');
22
+ const lockPath = resolve(cwd, '.chkit/registry-lock.json');
23
+ await assertProjectPath(cwd, lockPath);
24
+ const lockText = await readOptional(lockPath);
25
+ const lock = lockText === undefined ? { formatVersion: 1, items: {} } : lockSchema.parse(JSON.parse(lockText));
26
+ const previous = lock.items[input.item.name];
27
+ // Opting in later adds tests; a plain retry preserves the installed selection.
28
+ const withTests = input.withTests === true || previous?.withTests === true;
29
+ const artifactHash = hashContent(JSON.stringify(input.item));
30
+ if (previous && (previous.version !== meta.version || previous.artifactHash !== artifactHash || previous.root !== root || previous.origin !== input.origin)) {
31
+ throw new Error(`${input.item.name} is already installed from ${previous.origin} at ${previous.version}. Automatic replacement is not supported; review changes manually.`);
32
+ }
33
+ const files = [];
34
+ const hashes = {};
35
+ const selectedFiles = input.item.files.filter((file) => withTests || file.role !== 'test');
36
+ for (const file of selectedFiles) {
37
+ const target = `${root}/${file.target.slice(meta.root.length + 1)}`;
38
+ const path = resolve(cwd, target);
39
+ await assertProjectPath(cwd, path);
40
+ const original = await readOptional(path);
41
+ const content = file.content;
42
+ if (content === undefined)
43
+ throw new Error(`Template has no built content for ${target}`);
44
+ if (previous?.files[target] !== undefined && (original === undefined || hashContent(original) !== previous.files[target])) {
45
+ throw new Error(`Local template file was ${original === undefined ? 'deleted' : 'modified'}: ${target}. It will not be restored or overwritten.`);
46
+ }
47
+ if (original !== undefined && original !== content)
48
+ throw new Error(`File already exists with different content: ${target}`);
49
+ if (original === undefined)
50
+ files.push({ path, content });
51
+ hashes[target] = hashContent(content);
52
+ }
53
+ const configPath = resolve(cwd, input.configPath ?? 'clickhouse.config.ts');
54
+ await assertProjectPath(cwd, configPath);
55
+ await assertProjectPath(cwd, resolve(cwd, 'package.json'));
56
+ const config = await planProjectConfig({
57
+ cwd, configPath, providerEntry: resolve(cwd, root, meta.entry), exportNames: meta.exports,
58
+ providerFiles: selectedFiles.map((file) => resolve(cwd, root, file.target.slice(meta.root.length + 1))),
59
+ });
60
+ for (const file of config.files) {
61
+ await assertProjectPath(cwd, file.path);
62
+ const original = await readOptional(file.path);
63
+ if (original !== file.content)
64
+ files.push({ ...file, original });
65
+ }
66
+ const dependencyPlan = await planDependencies({ cwd, item: input.item, cliVersion: input.cliVersion, packageManager: input.packageManager, withTests });
67
+ if (dependencyPlan.content !== dependencyPlan.original)
68
+ files.push({ path: dependencyPlan.path, content: dependencyPlan.content, original: dependencyPlan.original });
69
+ const envPath = resolve(cwd, '.env.example');
70
+ await assertProjectPath(cwd, envPath);
71
+ const envOriginal = await readOptional(envPath);
72
+ const existingEnv = new Set([...(envOriginal ?? '').matchAll(/^\s*(?:export\s+)?([A-Z_][A-Z0-9_]*)\s*=/gm)].map((match) => match[1]));
73
+ const placeholders = { CLICKHOUSE_URL: 'http://localhost:8123', CLICKHOUSE_USER: 'default', CLICKHOUSE_PASSWORD: '', CLICKHOUSE_DB: 'default', ...meta.env };
74
+ const missing = Object.entries(placeholders).filter(([name]) => !existingEnv.has(name));
75
+ if (missing.length > 0) {
76
+ const prefix = envOriginal === undefined || envOriginal.endsWith('\n') ? envOriginal ?? '' : `${envOriginal}\n`;
77
+ files.push({ path: envPath, original: envOriginal, content: `${prefix}${missing.map(([name, value]) => `${name}=${JSON.stringify(value)}`).join('\n')}\n` });
78
+ }
79
+ const installRequired = !previous?.dependenciesInstalled || dependencyPlan.dependencies.length > 0 || !dependencyPlan.installed;
80
+ if (!previous || previous.withTests !== withTests || (previous.dependenciesInstalled && installRequired)) {
81
+ const nextLock = { formatVersion: 1, items: { ...lock.items, [input.item.name]: { version: meta.version, origin: input.origin, artifactHash, root, files: hashes, withTests, dependenciesInstalled: previous?.dependenciesInstalled === true && !installRequired } } };
82
+ files.push({ path: lockPath, original: lockText, content: `${JSON.stringify(nextLock, null, 2)}\n` });
83
+ }
84
+ const unique = new Set();
85
+ for (const file of files) {
86
+ if (unique.has(file.path))
87
+ throw new Error(`Conflicting installation writes: ${file.path}`);
88
+ unique.add(file.path);
89
+ }
90
+ return {
91
+ cwd,
92
+ template: { name: input.item.name, version: meta.version, origin: input.origin },
93
+ files, dependencies: dependencyPlan.dependencies, packageManager: dependencyPlan.packageManager,
94
+ noInstall: input.noInstall ?? false, alreadyInstalled: previous !== undefined && files.length === 0 && !installRequired,
95
+ installRequired, withTests,
96
+ };
97
+ }
98
+ export async function applyInstallation(plan, deps = {}) {
99
+ for (const file of plan.files) {
100
+ await assertProjectPath(plan.cwd, file.path);
101
+ if (await readOptional(file.path) !== file.original)
102
+ throw new Error(`File changed since planning: ${file.path}`);
103
+ }
104
+ if (plan.files.length > 0)
105
+ await applyFiles(plan);
106
+ if (!plan.noInstall && plan.installRequired) {
107
+ try {
108
+ await (deps.install ?? installDependencies)(plan.cwd, plan.packageManager);
109
+ }
110
+ catch (error) {
111
+ const reason = error instanceof Error ? error.message : String(error);
112
+ throw new Error(`${reason}\nTemplate files are written, but dependency setup is incomplete. Retry chkit add or run ${plan.packageManager} install in ${plan.cwd}.`, { cause: error });
113
+ }
114
+ await markDependenciesInstalled(plan);
115
+ }
116
+ }
117
+ export function describePlan(plan) {
118
+ return {
119
+ template: plan.template,
120
+ files: plan.files.map((file) => ({ path: relative(plan.cwd, file.path), action: file.original === undefined ? 'create' : 'update', content: file.content })),
121
+ dependencies: plan.dependencies,
122
+ packageManager: plan.packageManager,
123
+ noInstall: plan.noInstall,
124
+ withTests: plan.withTests,
125
+ alreadyInstalled: plan.alreadyInstalled,
126
+ installRequired: plan.installRequired,
127
+ };
128
+ }
129
+ async function markDependenciesInstalled(plan) {
130
+ const path = resolve(plan.cwd, '.chkit/registry-lock.json');
131
+ await assertProjectPath(plan.cwd, path);
132
+ const content = await readFile(path, 'utf8');
133
+ const lock = lockSchema.parse(JSON.parse(content));
134
+ const item = lock.items[plan.template.name];
135
+ if (!item || item.version !== plan.template.version || item.origin !== plan.template.origin || (item.withTests ?? false) !== plan.withTests) {
136
+ throw new Error('Registry lock changed during dependency installation. Review it before retrying.');
137
+ }
138
+ const updated = { ...lock, items: { ...lock.items, [plan.template.name]: { ...item, dependenciesInstalled: true } } };
139
+ await writeFile(path, `${JSON.stringify(updated, null, 2)}\n`);
140
+ }
141
+ async function applyFiles(plan) {
142
+ const stageRoot = resolve(plan.cwd, '.chkit');
143
+ await assertProjectPath(plan.cwd, stageRoot);
144
+ await mkdir(stageRoot, { recursive: true });
145
+ const stage = await mkdtemp(resolve(stageRoot, 'registry-stage-'));
146
+ const applied = [];
147
+ try {
148
+ for (const [index, file] of plan.files.entries())
149
+ await writeFile(resolve(stage, String(index)), file.content, { flag: 'wx' });
150
+ for (const [index, file] of plan.files.entries()) {
151
+ await assertProjectPath(plan.cwd, file.path);
152
+ if (await readOptional(file.path) !== file.original)
153
+ throw new Error(`File changed during installation: ${file.path}`);
154
+ await mkdir(dirname(file.path), { recursive: true });
155
+ await rename(resolve(stage, String(index)), file.path);
156
+ applied.push(file);
157
+ }
158
+ }
159
+ catch (error) {
160
+ for (const file of applied.reverse()) {
161
+ // Preserve a concurrent edit instead of rolling it back over the user's work.
162
+ if (await readOptional(file.path) !== file.content)
163
+ continue;
164
+ if (file.original === undefined)
165
+ await rm(file.path);
166
+ else
167
+ await writeFile(file.path, file.original);
168
+ }
169
+ throw error;
170
+ }
171
+ finally {
172
+ await rm(stage, { recursive: true, force: true });
173
+ }
174
+ }
175
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/registry/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ import { z } from 'zod';
2
+ export declare const ITEM_SCHEMA_URL = "https://ui.shadcn.com/schema/registry-item.json";
3
+ export declare const CATALOG_SCHEMA_URL = "https://ui.shadcn.com/schema/registry.json";
4
+ export declare const DEFAULT_REGISTRY = "github:obsessiondb/chkit";
5
+ export declare const MAX_ARTIFACT_BYTES: number;
6
+ declare const registryItemSchema: z.ZodObject<{
7
+ $schema: z.ZodOptional<z.ZodLiteral<"https://ui.shadcn.com/schema/registry-item.json">>;
8
+ name: z.ZodString;
9
+ type: z.ZodLiteral<"registry:item">;
10
+ title: z.ZodString;
11
+ description: z.ZodString;
12
+ dependencies: z.ZodArray<z.ZodString>;
13
+ devDependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
14
+ registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
15
+ files: z.ZodArray<z.ZodObject<{
16
+ path: z.ZodString;
17
+ type: z.ZodLiteral<"registry:file">;
18
+ target: z.ZodString;
19
+ role: z.ZodOptional<z.ZodLiteral<"test">>;
20
+ content: z.ZodOptional<z.ZodString>;
21
+ }, z.core.$strict>>;
22
+ meta: z.ZodObject<{
23
+ chkit: z.ZodObject<{
24
+ formatVersion: z.ZodLiteral<1>;
25
+ version: z.ZodString;
26
+ changelog: z.ZodOptional<z.ZodArray<z.ZodObject<{
27
+ version: z.ZodString;
28
+ changes: z.ZodArray<z.ZodString>;
29
+ }, z.core.$strict>>>;
30
+ language: z.ZodLiteral<"typescript">;
31
+ license: z.ZodString;
32
+ documentation: z.ZodOptional<z.ZodURL>;
33
+ logo: z.ZodOptional<z.ZodURL>;
34
+ authentication: z.ZodOptional<z.ZodObject<{
35
+ method: z.ZodString;
36
+ env: z.ZodArray<z.ZodString>;
37
+ setup: z.ZodArray<z.ZodString>;
38
+ documentation: z.ZodURL;
39
+ }, z.core.$strict>>;
40
+ chkit: z.ZodString;
41
+ ingest: z.ZodString;
42
+ clickhouse: z.ZodString;
43
+ root: z.ZodString;
44
+ entry: z.ZodString;
45
+ exports: z.ZodArray<z.ZodString>;
46
+ resources: z.ZodArray<z.ZodObject<{
47
+ name: z.ZodString;
48
+ title: z.ZodOptional<z.ZodString>;
49
+ table: z.ZodOptional<z.ZodString>;
50
+ description: z.ZodString;
51
+ scopes: z.ZodArray<z.ZodString>;
52
+ strategy: z.ZodEnum<{
53
+ timestamp: "timestamp";
54
+ cursor: "cursor";
55
+ full: "full";
56
+ }>;
57
+ endpoints: z.ZodOptional<z.ZodArray<z.ZodObject<{
58
+ method: z.ZodEnum<{
59
+ POST: "POST";
60
+ GET: "GET";
61
+ }>;
62
+ path: z.ZodString;
63
+ documentation: z.ZodURL;
64
+ }, z.core.$strict>>>;
65
+ }, z.core.$strict>>;
66
+ views: z.ZodOptional<z.ZodArray<z.ZodObject<{
67
+ name: z.ZodString;
68
+ source: z.ZodString;
69
+ description: z.ZodString;
70
+ }, z.core.$strict>>>;
71
+ sync: z.ZodOptional<z.ZodObject<{
72
+ description: z.ZodString;
73
+ schedule: z.ZodString;
74
+ deletions: z.ZodString;
75
+ }, z.core.$strict>>;
76
+ env: z.ZodRecord<z.ZodString, z.ZodString>;
77
+ fileHashes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
78
+ }, z.core.$strict>;
79
+ }, z.core.$strict>;
80
+ }, z.core.$strict>;
81
+ declare const registryCatalogSchema: z.ZodObject<{
82
+ $schema: z.ZodOptional<z.ZodLiteral<"https://ui.shadcn.com/schema/registry.json">>;
83
+ name: z.ZodString;
84
+ homepage: z.ZodURL;
85
+ items: z.ZodArray<z.ZodObject<{
86
+ $schema: z.ZodOptional<z.ZodLiteral<"https://ui.shadcn.com/schema/registry-item.json">>;
87
+ name: z.ZodString;
88
+ type: z.ZodLiteral<"registry:item">;
89
+ title: z.ZodString;
90
+ description: z.ZodString;
91
+ dependencies: z.ZodArray<z.ZodString>;
92
+ devDependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
93
+ registryDependencies: z.ZodOptional<z.ZodArray<z.ZodString>>;
94
+ files: z.ZodArray<z.ZodObject<{
95
+ path: z.ZodString;
96
+ type: z.ZodLiteral<"registry:file">;
97
+ target: z.ZodString;
98
+ role: z.ZodOptional<z.ZodLiteral<"test">>;
99
+ content: z.ZodOptional<z.ZodString>;
100
+ }, z.core.$strict>>;
101
+ meta: z.ZodObject<{
102
+ chkit: z.ZodObject<{
103
+ formatVersion: z.ZodLiteral<1>;
104
+ version: z.ZodString;
105
+ changelog: z.ZodOptional<z.ZodArray<z.ZodObject<{
106
+ version: z.ZodString;
107
+ changes: z.ZodArray<z.ZodString>;
108
+ }, z.core.$strict>>>;
109
+ language: z.ZodLiteral<"typescript">;
110
+ license: z.ZodString;
111
+ documentation: z.ZodOptional<z.ZodURL>;
112
+ logo: z.ZodOptional<z.ZodURL>;
113
+ authentication: z.ZodOptional<z.ZodObject<{
114
+ method: z.ZodString;
115
+ env: z.ZodArray<z.ZodString>;
116
+ setup: z.ZodArray<z.ZodString>;
117
+ documentation: z.ZodURL;
118
+ }, z.core.$strict>>;
119
+ chkit: z.ZodString;
120
+ ingest: z.ZodString;
121
+ clickhouse: z.ZodString;
122
+ root: z.ZodString;
123
+ entry: z.ZodString;
124
+ exports: z.ZodArray<z.ZodString>;
125
+ resources: z.ZodArray<z.ZodObject<{
126
+ name: z.ZodString;
127
+ title: z.ZodOptional<z.ZodString>;
128
+ table: z.ZodOptional<z.ZodString>;
129
+ description: z.ZodString;
130
+ scopes: z.ZodArray<z.ZodString>;
131
+ strategy: z.ZodEnum<{
132
+ timestamp: "timestamp";
133
+ cursor: "cursor";
134
+ full: "full";
135
+ }>;
136
+ endpoints: z.ZodOptional<z.ZodArray<z.ZodObject<{
137
+ method: z.ZodEnum<{
138
+ POST: "POST";
139
+ GET: "GET";
140
+ }>;
141
+ path: z.ZodString;
142
+ documentation: z.ZodURL;
143
+ }, z.core.$strict>>>;
144
+ }, z.core.$strict>>;
145
+ views: z.ZodOptional<z.ZodArray<z.ZodObject<{
146
+ name: z.ZodString;
147
+ source: z.ZodString;
148
+ description: z.ZodString;
149
+ }, z.core.$strict>>>;
150
+ sync: z.ZodOptional<z.ZodObject<{
151
+ description: z.ZodString;
152
+ schedule: z.ZodString;
153
+ deletions: z.ZodString;
154
+ }, z.core.$strict>>;
155
+ env: z.ZodRecord<z.ZodString, z.ZodString>;
156
+ fileHashes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
157
+ }, z.core.$strict>;
158
+ }, z.core.$strict>;
159
+ }, z.core.$strict>>;
160
+ }, z.core.$strict>;
161
+ export type RegistryItem = z.infer<typeof registryItemSchema>;
162
+ export type RegistryCatalog = z.infer<typeof registryCatalogSchema>;
163
+ export declare function parseRegistryItem(value: unknown, built?: boolean): RegistryItem;
164
+ export declare function parseRegistryCatalog(value: unknown): RegistryCatalog;
165
+ export declare function hashContent(content: string): string;
166
+ export declare function isSafeRelativePath(value: string): boolean;
167
+ export declare function requireDependency(value: string): {
168
+ name: string;
169
+ range: string;
170
+ };
171
+ export {};
172
+ //# sourceMappingURL=model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/registry/model.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,eAAO,MAAM,eAAe,oDAAoD,CAAA;AAChF,eAAO,MAAM,kBAAkB,+CAA+C,CAAA;AAC9E,eAAO,MAAM,gBAAgB,6BAA6B,CAAA;AAC1D,eAAO,MAAM,kBAAkB,QAAkB,CAAA;AAuDjD,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAiBb,CAAA;AAEX,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAKhB,CAAA;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAC7D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAEnE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,UAAO,GAAG,YAAY,CAkC5E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CASpE;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGzD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAIhF"}
@@ -0,0 +1,161 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { posix } from 'node:path';
3
+ import { compare, valid, validRange } from 'semver';
4
+ import { z } from 'zod';
5
+ export const ITEM_SCHEMA_URL = 'https://ui.shadcn.com/schema/registry-item.json';
6
+ export const CATALOG_SCHEMA_URL = 'https://ui.shadcn.com/schema/registry.json';
7
+ export const DEFAULT_REGISTRY = 'github:obsessiondb/chkit';
8
+ export const MAX_ARTIFACT_BYTES = 8 * 1024 * 1024;
9
+ const relativePath = z.string().min(1).refine(isSafeRelativePath, 'Expected a normalized project-relative path');
10
+ const version = z.string().refine((value) => valid(value) === value, 'Expected a semantic version');
11
+ const versionRange = z.string().min(1).refine((value) => validRange(value) !== null, 'Expected a semantic version range');
12
+ const identifier = z.string().regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/);
13
+ const dependency = z.string().refine((value) => parseDependency(value) !== undefined, 'Expected package@semver-range');
14
+ const webUrl = z.url({ protocol: /^https?$/ });
15
+ const metadataSchema = z.object({
16
+ formatVersion: z.literal(1),
17
+ version,
18
+ changelog: z.array(z.object({
19
+ version,
20
+ changes: z.array(z.string().refine((value) => value.trim().length > 0, 'Expected a non-empty change')).min(1),
21
+ }).strict()).min(1).optional(),
22
+ language: z.literal('typescript'),
23
+ license: z.string().min(1),
24
+ documentation: webUrl.optional(),
25
+ logo: webUrl.optional(),
26
+ authentication: z.object({
27
+ method: z.string().min(1),
28
+ env: z.array(z.string().regex(/^[A-Z_][A-Z0-9_]*$/)).min(1),
29
+ setup: z.array(z.string().min(1)).min(1),
30
+ documentation: webUrl,
31
+ }).strict().optional(),
32
+ chkit: versionRange,
33
+ ingest: versionRange,
34
+ clickhouse: versionRange,
35
+ root: relativePath,
36
+ entry: relativePath,
37
+ exports: z.array(identifier).min(1),
38
+ resources: z.array(z.object({
39
+ name: z.string().min(1),
40
+ title: z.string().min(1).optional(),
41
+ table: z.string().min(1).optional(),
42
+ description: z.string().min(1),
43
+ scopes: z.array(z.string()),
44
+ strategy: z.enum(['full', 'timestamp', 'cursor']),
45
+ endpoints: z.array(z.object({
46
+ method: z.enum(['GET', 'POST']),
47
+ path: z.string().startsWith('/'),
48
+ documentation: webUrl,
49
+ }).strict()).optional(),
50
+ }).strict()).min(1),
51
+ views: z.array(z.object({
52
+ name: z.string().min(1), source: z.string().min(1), description: z.string().min(1),
53
+ }).strict()).optional(),
54
+ sync: z.object({
55
+ description: z.string().min(1), schedule: z.string().min(1), deletions: z.string().min(1),
56
+ }).strict().optional(),
57
+ env: z.record(z.string().regex(/^[A-Z_][A-Z0-9_]*$/), z.string().refine((value) => !/[\r\n\0]/.test(value))),
58
+ fileHashes: z.record(relativePath, z.string().regex(/^[a-f0-9]{64}$/)).optional(),
59
+ }).strict();
60
+ const registryItemSchema = z.object({
61
+ $schema: z.literal(ITEM_SCHEMA_URL).optional(),
62
+ name: z.string().regex(/^[a-z][a-z0-9-]*$/).refine((value) => value !== 'registry', 'Item name registry is reserved for the catalog'),
63
+ type: z.literal('registry:item'),
64
+ title: z.string().min(1),
65
+ description: z.string().min(1),
66
+ dependencies: z.array(dependency).min(1),
67
+ devDependencies: z.array(dependency).optional(),
68
+ registryDependencies: z.array(z.string()).max(0, 'Registry dependencies are not supported in format version 1').optional(),
69
+ files: z.array(z.object({
70
+ path: relativePath,
71
+ type: z.literal('registry:file'),
72
+ target: relativePath,
73
+ role: z.literal('test').optional(),
74
+ content: z.string().optional(),
75
+ }).strict()).min(1).max(200),
76
+ meta: z.object({ chkit: metadataSchema }).strict(),
77
+ }).strict();
78
+ const registryCatalogSchema = z.object({
79
+ $schema: z.literal(CATALOG_SCHEMA_URL).optional(),
80
+ name: z.string().min(1),
81
+ homepage: z.url(),
82
+ items: z.array(registryItemSchema),
83
+ }).strict();
84
+ export function parseRegistryItem(value, built = true) {
85
+ const item = registryItemSchema.parse(value);
86
+ const meta = item.meta.chkit;
87
+ if (meta.changelog) {
88
+ if (meta.changelog[0]?.version !== meta.version)
89
+ throw new Error('Changelog must start with the current version');
90
+ for (let index = 1; index < meta.changelog.length; index++) {
91
+ const previous = meta.changelog[index - 1];
92
+ const entry = meta.changelog[index];
93
+ if (previous && entry && compare(previous.version, entry.version) <= 0) {
94
+ throw new Error('Changelog versions must be unique and newest first');
95
+ }
96
+ }
97
+ }
98
+ const targets = new Set();
99
+ for (const file of item.files) {
100
+ if (!file.target.startsWith(`${meta.root}/`))
101
+ throw new Error(`File target ${file.target} must be inside ${meta.root}/`);
102
+ if (targets.has(file.target))
103
+ throw new Error(`Duplicate registry target: ${file.target}`);
104
+ targets.add(file.target);
105
+ if (built && file.content === undefined)
106
+ throw new Error(`Missing built content for ${file.target}. Run chkit registry build first.`);
107
+ if (built && meta.fileHashes?.[file.target] !== hashContent(file.content ?? '')) {
108
+ throw new Error(`Registry content hash does not match: ${file.target}`);
109
+ }
110
+ }
111
+ if (!targets.has(posix.join(meta.root, meta.entry)))
112
+ throw new Error(`Entry ${meta.entry} is not included in the item`);
113
+ if (item.files.find((file) => file.target === posix.join(meta.root, meta.entry))?.role === 'test')
114
+ throw new Error('Registry entry cannot be a test file');
115
+ if (new Set(meta.exports).size !== meta.exports.length)
116
+ throw new Error('Duplicate registry export names');
117
+ const names = item.dependencies.map((spec) => requireDependency(spec).name);
118
+ if (new Set(names).size !== names.length)
119
+ throw new Error('Duplicate package dependencies');
120
+ const allNames = [...names, ...(item.devDependencies ?? []).map((spec) => requireDependency(spec).name)];
121
+ if (new Set(allNames).size !== allNames.length)
122
+ throw new Error('Duplicate package dependencies across dependencies and devDependencies');
123
+ for (const required of ['@chkit/core', '@chkit/plugin-ingest']) {
124
+ if (!names.includes(required))
125
+ throw new Error(`Registry item must declare ${required} as a dependency`);
126
+ }
127
+ return item;
128
+ }
129
+ export function parseRegistryCatalog(value) {
130
+ const catalog = registryCatalogSchema.parse(value);
131
+ const seen = new Set();
132
+ for (const item of catalog.items) {
133
+ parseRegistryItem(item, false);
134
+ if (seen.has(item.name))
135
+ throw new Error(`Duplicate registry item: ${item.name}`);
136
+ seen.add(item.name);
137
+ }
138
+ return catalog;
139
+ }
140
+ export function hashContent(content) {
141
+ return createHash('sha256').update(content).digest('hex');
142
+ }
143
+ export function isSafeRelativePath(value) {
144
+ return value.length > 0 && !/[\\:]/.test(value) && ![...value].some((character) => character.charCodeAt(0) < 32) && !value.startsWith('/') &&
145
+ !value.startsWith('~') && value.split('/').every((part) => part !== '' && part !== '.' && part !== '..' && part !== '.git' && part !== 'node_modules');
146
+ }
147
+ export function requireDependency(value) {
148
+ const parsed = parseDependency(value);
149
+ if (!parsed)
150
+ throw new Error(`Unsupported dependency ${value}; use package@semver-range`);
151
+ return parsed;
152
+ }
153
+ function parseDependency(value) {
154
+ const match = /^(@[a-z0-9._-]+\/[a-z0-9._-]+|[a-z0-9][a-z0-9._-]*)@(.+)$/.exec(value);
155
+ const name = match?.[1];
156
+ const range = match?.[2];
157
+ if (!name || !range || !validRange(range))
158
+ return undefined;
159
+ return { name, range };
160
+ }
161
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/registry/model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ interface ProjectConfigInput {
2
+ cwd: string;
3
+ configPath?: string;
4
+ providerEntry: string;
5
+ providerFiles?: readonly string[];
6
+ exportNames: readonly string[];
7
+ }
8
+ interface PlannedFile {
9
+ path: string;
10
+ content: string;
11
+ }
12
+ /** Plan source edits without importing project code or writing any files. */
13
+ export declare function planProjectConfig(input: ProjectConfigInput): Promise<{
14
+ files: PlannedFile[];
15
+ configPath: string;
16
+ }>;
17
+ export {};
18
+ //# sourceMappingURL=project-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/registry/project-config.ts"],"names":[],"mappings":"AAQA,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAA;CAC/B;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB;AAQD,6EAA6E;AAC7E,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAC1E,KAAK,EAAE,WAAW,EAAE,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAC,CAiED"}