@codefast/cli 0.3.13-canary.3 → 0.3.13-canary.4

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 (465) hide show
  1. package/README.md +29 -3
  2. package/dist/{bin.js → bin.mjs} +4 -1
  3. package/dist/commands/arrange.mjs +325 -0
  4. package/dist/commands/mirror.mjs +267 -0
  5. package/dist/commands/tag.mjs +283 -0
  6. package/dist/lib/arrange/application/arrange-analyze-json.format.mjs +10 -0
  7. package/dist/lib/arrange/application/arrange-group-json.format.mjs +11 -0
  8. package/dist/lib/arrange/application/arrange-sync-cli-result.mjs +7 -0
  9. package/dist/lib/arrange/application/arrange-sync-json.format.mjs +12 -0
  10. package/dist/lib/arrange/application/services/arrange-file-processor.service.mjs +242 -0
  11. package/dist/lib/arrange/application/services/arrange-target-scanner.service.mjs +237 -0
  12. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.mjs +258 -0
  13. package/dist/lib/arrange/application/use-cases/group-file.use-case.mjs +35 -0
  14. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.mjs +283 -0
  15. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.mjs +233 -0
  16. package/dist/lib/arrange/arrange.feature.module.mjs +19 -0
  17. package/dist/lib/arrange/arrange.module.mjs +27 -0
  18. package/dist/lib/arrange/arrange.presentation.module.mjs +13 -0
  19. package/dist/lib/arrange/contracts/tokens.mjs +14 -0
  20. package/dist/lib/arrange/domain/arrange-analyze.service.mjs +95 -0
  21. package/dist/lib/arrange/domain/arrange-grouping.service.mjs +100 -0
  22. package/dist/lib/arrange/domain/ast/ast-helpers.helper.mjs +89 -0
  23. package/dist/lib/arrange/domain/ast/ast-node.model.mjs +181 -0
  24. package/dist/lib/arrange/domain/ast/collectors-cn.collector.mjs +52 -0
  25. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.mjs +20 -0
  26. package/dist/lib/arrange/domain/ast/collectors-tv.collector.mjs +174 -0
  27. package/dist/lib/arrange/domain/ast/targets.model.mjs +110 -0
  28. package/dist/lib/arrange/domain/constants.domain.mjs +154 -0
  29. package/dist/lib/arrange/domain/errors.domain.mjs +18 -0
  30. package/dist/lib/arrange/domain/grouping.domain.mjs +306 -0
  31. package/dist/lib/arrange/domain/imports.domain.mjs +55 -0
  32. package/dist/lib/arrange/domain/source-text-formatters.formatter.mjs +54 -0
  33. package/dist/lib/arrange/domain/tokenizer.util.mjs +209 -0
  34. package/dist/lib/arrange/infra/domain-source-parser.adapter.mjs +240 -0
  35. package/dist/lib/arrange/infra/ensure-cn-import.adapter.mjs +8 -0
  36. package/dist/lib/arrange/infra/file-walker.adapter.mjs +239 -0
  37. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.mjs +18 -0
  38. package/dist/lib/arrange/infra/ts-ast-translator.adapter.mjs +355 -0
  39. package/dist/lib/arrange/presentation/arrange-cli-schema.presenter.mjs +29 -0
  40. package/dist/lib/arrange/presentation/arrange-sync.presenter.mjs +12 -0
  41. package/dist/lib/arrange/presentation/formatters.presenter.mjs +2 -0
  42. package/dist/lib/arrange/presentation/group-file-preview.presenter.mjs +275 -0
  43. package/dist/lib/arrange/presentation/prepare-arrange.orchestrator.mjs +258 -0
  44. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.mjs +7 -0
  45. package/dist/lib/arrange/presentation/present-analyze-report.presenter.mjs +233 -0
  46. package/dist/lib/arrange/presentation/report.presenter.mjs +24 -0
  47. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.mjs +21 -0
  48. package/dist/lib/config/application/use-cases/load-config.use-case.mjs +17 -0
  49. package/dist/lib/config/contracts/tokens.mjs +5 -0
  50. package/dist/lib/config/infra/config-schema.adapter.mjs +25 -0
  51. package/dist/lib/config/infra/loader.adapter.mjs +84 -0
  52. package/dist/lib/core/application/architecture-boundaries.policy.mjs +311 -0
  53. package/dist/lib/core/application/ports/path.port.mjs +1 -0
  54. package/dist/lib/core/application/schema-parse.util.mjs +17 -0
  55. package/dist/lib/core/application/utils/caught-unknown-message.util.mjs +19 -0
  56. package/dist/lib/core/application/utils/verbose-diagnostics.util.mjs +9 -0
  57. package/dist/lib/core/contracts/presentation.contract.mjs +1 -0
  58. package/dist/lib/core/contracts/tokens.mjs +5 -0
  59. package/dist/lib/core/core.module.mjs +9 -0
  60. package/dist/lib/core/domain/cli-exit-codes.domain.mjs +11 -0
  61. package/dist/lib/core/domain/errors.domain.mjs +16 -0
  62. package/dist/lib/core/domain/result.model.mjs +23 -0
  63. package/dist/lib/core/infra/composition-root.mjs +21 -0
  64. package/dist/lib/core/infra/infra.module.mjs +23 -0
  65. package/dist/lib/core/infra/logging-decorator.adapter.mjs +62 -0
  66. package/dist/lib/core/infra/path.adapter.mjs +13 -0
  67. package/dist/lib/core/operational/contracts/tokens.mjs +7 -0
  68. package/dist/lib/core/presentation/cli-executor.presenter.mjs +57 -0
  69. package/dist/lib/core/presentation/command.interface.mjs +1 -0
  70. package/dist/lib/core/presentation/format-app-error.presenter.mjs +17 -0
  71. package/dist/lib/core/presentation/global-cli-options.presenter.mjs +9 -0
  72. package/dist/lib/core/presentation/load-codefast-config.presenter.mjs +18 -0
  73. package/dist/lib/core/presentation/parse-cli-schema.presenter.mjs +7 -0
  74. package/dist/lib/core/presentation/presentation.module.mjs +11 -0
  75. package/dist/lib/core/presentation/try-load-codefast-config.presenter.mjs +245 -0
  76. package/dist/lib/infra/config-reporter.adapter.mjs +9 -0
  77. package/dist/lib/infra/fs-contract.port.mjs +1 -0
  78. package/dist/lib/infra/node-io.adapter.mjs +266 -0
  79. package/dist/lib/infra/workspace/repo-root.adapter.mjs +21 -0
  80. package/dist/lib/kernel/di/command.token.mjs +5 -0
  81. package/dist/lib/mirror/application/mirror-sync-json.format.mjs +12 -0
  82. package/dist/lib/mirror/application/ports/file-system-service.port.mjs +1 -0
  83. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.mjs +1 -0
  84. package/dist/lib/mirror/application/ports/package-repository.port.mjs +1 -0
  85. package/dist/lib/mirror/application/ports/sync-workspace-package.port.mjs +1 -0
  86. package/dist/lib/mirror/application/ports/workspace-service.port.mjs +1 -0
  87. package/dist/lib/mirror/application/requests/mirror-sync.request.mjs +1 -0
  88. package/dist/lib/mirror/application/services/sync-workspace-package.service.mjs +351 -0
  89. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.mjs +219 -0
  90. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.mjs +302 -0
  91. package/dist/lib/mirror/contracts/models.mjs +1 -0
  92. package/dist/lib/mirror/contracts/presentation.contract.mjs +1 -0
  93. package/dist/lib/mirror/contracts/tokens.mjs +11 -0
  94. package/dist/lib/mirror/contracts/use-cases.contract.mjs +1 -0
  95. package/dist/lib/mirror/domain/constants.domain.mjs +16 -0
  96. package/dist/lib/mirror/domain/errors.domain.mjs +15 -0
  97. package/dist/lib/mirror/domain/types.domain.mjs +1 -0
  98. package/dist/lib/mirror/infra/dirent-list.adapter.mjs +13 -0
  99. package/dist/lib/mirror/infra/file-system-service.adapter.mjs +256 -0
  100. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.mjs +1 -0
  101. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.mjs +236 -0
  102. package/dist/lib/mirror/infra/package-filter.adapter.mjs +25 -0
  103. package/dist/lib/mirror/infra/package-repository.adapter.mjs +235 -0
  104. package/dist/lib/mirror/infra/path-normalizer.adapter.mjs +7 -0
  105. package/dist/lib/mirror/infra/update-pkg.adapter.mjs +102 -0
  106. package/dist/lib/mirror/infra/workspace-packages.adapter.mjs +154 -0
  107. package/dist/lib/mirror/infra/workspace-service.adapter.mjs +232 -0
  108. package/dist/lib/mirror/mirror.feature.module.mjs +19 -0
  109. package/dist/lib/mirror/mirror.module.mjs +23 -0
  110. package/dist/lib/mirror/mirror.presentation.module.mjs +11 -0
  111. package/dist/lib/mirror/presentation/mirror-cli-schema.presenter.mjs +12 -0
  112. package/dist/lib/mirror/presentation/prepare-mirror.orchestrator.mjs +263 -0
  113. package/dist/lib/mirror/presentation/reporter.presenter.mjs +111 -0
  114. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.mjs +20 -0
  115. package/dist/lib/shared/source-code/domain/text-edit.model.mjs +28 -0
  116. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.mjs +33 -0
  117. package/dist/lib/tag/application/ports/tag-since-writer.port.mjs +1 -0
  118. package/dist/lib/tag/application/ports/tag-version-resolver.port.mjs +1 -0
  119. package/dist/lib/tag/application/ports/target-resolver.port.mjs +1 -0
  120. package/dist/lib/tag/application/ports/typescript-tree-walk.port.mjs +1 -0
  121. package/dist/lib/tag/application/requests/tag-sync.request.mjs +1 -0
  122. package/dist/lib/tag/application/tag-sync-cli-result.mjs +11 -0
  123. package/dist/lib/tag/application/tag-sync-json.format.mjs +14 -0
  124. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.mjs +398 -0
  125. package/dist/lib/tag/contracts/models.mjs +1 -0
  126. package/dist/lib/tag/contracts/presentation.contract.mjs +1 -0
  127. package/dist/lib/tag/contracts/tokens.mjs +12 -0
  128. package/dist/lib/tag/contracts/use-cases.contract.mjs +1 -0
  129. package/dist/lib/tag/domain/types.domain.mjs +1 -0
  130. package/dist/lib/tag/infra/tag-since-writer.adapter.mjs +343 -0
  131. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.mjs +1 -0
  132. package/dist/lib/tag/infra/tag-target-candidates.adapter.mjs +170 -0
  133. package/dist/lib/tag/infra/tag-target-resolver.adapter.mjs +226 -0
  134. package/dist/lib/tag/infra/tag-version-resolver.adapter.mjs +247 -0
  135. package/dist/lib/tag/infra/typescript-tree-walk.adapter.mjs +226 -0
  136. package/dist/lib/tag/presentation/colors.presenter.mjs +12 -0
  137. package/dist/lib/tag/presentation/create-tag-progress-listener.presenter.mjs +228 -0
  138. package/dist/lib/tag/presentation/prepare-tag.orchestrator.mjs +264 -0
  139. package/dist/lib/tag/presentation/present-tag-sync-result.presenter.mjs +233 -0
  140. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.mjs +9 -0
  141. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.mjs +12 -0
  142. package/dist/lib/tag/presentation/tag-cli-schema.presenter.mjs +12 -0
  143. package/dist/lib/tag/presentation/tag-sync.presenter.mjs +78 -0
  144. package/dist/lib/tag/tag.feature.module.mjs +19 -0
  145. package/dist/lib/tag/tag.module.mjs +21 -0
  146. package/dist/lib/tag/tag.presentation.module.mjs +15 -0
  147. package/dist/program.mjs +39 -0
  148. package/package.json +16 -19
  149. package/dist/bin.d.ts +0 -3
  150. package/dist/bin.d.ts.map +0 -1
  151. package/dist/commands/arrange.d.ts +0 -3
  152. package/dist/commands/arrange.d.ts.map +0 -1
  153. package/dist/commands/arrange.js +0 -108
  154. package/dist/commands/mirror.d.ts +0 -3
  155. package/dist/commands/mirror.d.ts.map +0 -1
  156. package/dist/commands/mirror.js +0 -36
  157. package/dist/commands/tag.d.ts +0 -3
  158. package/dist/commands/tag.d.ts.map +0 -1
  159. package/dist/commands/tag.js +0 -44
  160. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +0 -5
  161. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +0 -1
  162. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +0 -5
  163. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +0 -1
  164. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +0 -6
  165. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +0 -1
  166. package/dist/lib/arrange/application/requests/analyze-directory.request.js +0 -4
  167. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +0 -18
  168. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +0 -1
  169. package/dist/lib/arrange/application/requests/arrange-sync.request.js +0 -15
  170. package/dist/lib/arrange/application/requests/suggest-groups.request.d.ts +0 -8
  171. package/dist/lib/arrange/application/requests/suggest-groups.request.d.ts.map +0 -1
  172. package/dist/lib/arrange/application/requests/suggest-groups.request.js +0 -8
  173. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.d.ts +0 -17
  174. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.d.ts.map +0 -1
  175. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.js +0 -24
  176. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.d.ts +0 -17
  177. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.d.ts.map +0 -1
  178. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.js +0 -46
  179. package/dist/lib/arrange/application/use-cases/group-file.use-case.d.ts +0 -5
  180. package/dist/lib/arrange/application/use-cases/group-file.use-case.d.ts.map +0 -1
  181. package/dist/lib/arrange/application/use-cases/group-file.use-case.js +0 -40
  182. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.d.ts +0 -19
  183. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.d.ts.map +0 -1
  184. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.js +0 -85
  185. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.d.ts +0 -7
  186. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.d.ts.map +0 -1
  187. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.js +0 -10
  188. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +0 -12
  189. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +0 -1
  190. package/dist/lib/arrange/domain/arrange-analyze.service.js +0 -116
  191. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +0 -53
  192. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +0 -1
  193. package/dist/lib/arrange/domain/arrange-grouping.service.js +0 -106
  194. package/dist/lib/arrange/domain/ast/ast-helpers.helper.d.ts +0 -28
  195. package/dist/lib/arrange/domain/ast/ast-helpers.helper.d.ts.map +0 -1
  196. package/dist/lib/arrange/domain/ast/ast-helpers.helper.js +0 -130
  197. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +0 -179
  198. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +0 -1
  199. package/dist/lib/arrange/domain/ast/ast-node.model.js +0 -210
  200. package/dist/lib/arrange/domain/ast/collectors-cn.collector.d.ts +0 -7
  201. package/dist/lib/arrange/domain/ast/collectors-cn.collector.d.ts.map +0 -1
  202. package/dist/lib/arrange/domain/ast/collectors-cn.collector.js +0 -70
  203. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.d.ts +0 -4
  204. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.d.ts.map +0 -1
  205. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.js +0 -21
  206. package/dist/lib/arrange/domain/ast/collectors-tv.collector.d.ts +0 -13
  207. package/dist/lib/arrange/domain/ast/collectors-tv.collector.d.ts.map +0 -1
  208. package/dist/lib/arrange/domain/ast/collectors-tv.collector.js +0 -302
  209. package/dist/lib/arrange/domain/ast/targets.model.d.ts +0 -8
  210. package/dist/lib/arrange/domain/ast/targets.model.d.ts.map +0 -1
  211. package/dist/lib/arrange/domain/ast/targets.model.js +0 -147
  212. package/dist/lib/arrange/domain/constants.domain.d.ts +0 -70
  213. package/dist/lib/arrange/domain/constants.domain.d.ts.map +0 -1
  214. package/dist/lib/arrange/domain/constants.domain.js +0 -182
  215. package/dist/lib/arrange/domain/errors.domain.d.ts +0 -14
  216. package/dist/lib/arrange/domain/errors.domain.d.ts.map +0 -1
  217. package/dist/lib/arrange/domain/errors.domain.js +0 -16
  218. package/dist/lib/arrange/domain/grouping.domain.d.ts +0 -41
  219. package/dist/lib/arrange/domain/grouping.domain.d.ts.map +0 -1
  220. package/dist/lib/arrange/domain/grouping.domain.js +0 -371
  221. package/dist/lib/arrange/domain/imports.domain.d.ts +0 -7
  222. package/dist/lib/arrange/domain/imports.domain.d.ts.map +0 -1
  223. package/dist/lib/arrange/domain/imports.domain.js +0 -80
  224. package/dist/lib/arrange/domain/source-text-formatters.formatter.d.ts +0 -16
  225. package/dist/lib/arrange/domain/source-text-formatters.formatter.d.ts.map +0 -1
  226. package/dist/lib/arrange/domain/source-text-formatters.formatter.js +0 -55
  227. package/dist/lib/arrange/domain/tokenizer.util.d.ts +0 -45
  228. package/dist/lib/arrange/domain/tokenizer.util.d.ts.map +0 -1
  229. package/dist/lib/arrange/domain/tokenizer.util.js +0 -469
  230. package/dist/lib/arrange/domain/types.domain.d.ts +0 -115
  231. package/dist/lib/arrange/domain/types.domain.d.ts.map +0 -1
  232. package/dist/lib/arrange/domain/types.domain.js +0 -10
  233. package/dist/lib/arrange/index.d.ts +0 -45
  234. package/dist/lib/arrange/index.d.ts.map +0 -1
  235. package/dist/lib/arrange/index.js +0 -41
  236. package/dist/lib/arrange/infra/arrange-sync-cli-options.adapter.d.ts +0 -14
  237. package/dist/lib/arrange/infra/arrange-sync-cli-options.adapter.d.ts.map +0 -1
  238. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +0 -11
  239. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +0 -1
  240. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +0 -19
  241. package/dist/lib/arrange/infra/ensure-cn-import.adapter.d.ts +0 -3
  242. package/dist/lib/arrange/infra/ensure-cn-import.adapter.d.ts.map +0 -1
  243. package/dist/lib/arrange/infra/ensure-cn-import.adapter.js +0 -6
  244. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +0 -8
  245. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +0 -1
  246. package/dist/lib/arrange/infra/file-walker.adapter.js +0 -17
  247. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.d.ts +0 -8
  248. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.d.ts.map +0 -1
  249. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.js +0 -25
  250. package/dist/lib/arrange/infra/ts-ast-translator.adapter.d.ts +0 -10
  251. package/dist/lib/arrange/infra/ts-ast-translator.adapter.d.ts.map +0 -1
  252. package/dist/lib/arrange/infra/ts-ast-translator.adapter.js +0 -363
  253. package/dist/lib/arrange/presentation/arrange-prelude.presenter.d.ts +0 -14
  254. package/dist/lib/arrange/presentation/arrange-prelude.presenter.d.ts.map +0 -1
  255. package/dist/lib/arrange/presentation/arrange-prelude.presenter.js +0 -24
  256. package/dist/lib/arrange/presentation/formatters.presenter.d.ts +0 -3
  257. package/dist/lib/arrange/presentation/formatters.presenter.d.ts.map +0 -1
  258. package/dist/lib/arrange/presentation/formatters.presenter.js +0 -2
  259. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.d.ts +0 -4
  260. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.d.ts.map +0 -1
  261. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.js +0 -4
  262. package/dist/lib/arrange/presentation/report.presenter.d.ts +0 -4
  263. package/dist/lib/arrange/presentation/report.presenter.d.ts.map +0 -1
  264. package/dist/lib/arrange/presentation/report.presenter.js +0 -37
  265. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.d.ts +0 -2
  266. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.d.ts.map +0 -1
  267. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.js +0 -7
  268. package/dist/lib/config/domain/schema.domain.d.ts +0 -50
  269. package/dist/lib/config/domain/schema.domain.d.ts.map +0 -1
  270. package/dist/lib/config/domain/schema.domain.js +0 -43
  271. package/dist/lib/config/index.d.ts +0 -4
  272. package/dist/lib/config/index.d.ts.map +0 -1
  273. package/dist/lib/config/index.js +0 -2
  274. package/dist/lib/config/infra/loader.adapter.d.ts +0 -11
  275. package/dist/lib/config/infra/loader.adapter.d.ts.map +0 -1
  276. package/dist/lib/config/infra/loader.adapter.js +0 -90
  277. package/dist/lib/core/application/architecture-boundaries.policy.d.ts +0 -19
  278. package/dist/lib/core/application/architecture-boundaries.policy.d.ts.map +0 -1
  279. package/dist/lib/core/application/architecture-boundaries.policy.js +0 -370
  280. package/dist/lib/core/application/ports/cli-io.port.d.ts +0 -31
  281. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +0 -1
  282. package/dist/lib/core/application/schema-parse.util.d.ts +0 -8
  283. package/dist/lib/core/application/schema-parse.util.d.ts.map +0 -1
  284. package/dist/lib/core/application/schema-parse.util.js +0 -20
  285. package/dist/lib/core/application/utils/caught-unknown-message.util.d.ts +0 -6
  286. package/dist/lib/core/application/utils/caught-unknown-message.util.d.ts.map +0 -1
  287. package/dist/lib/core/application/utils/caught-unknown-message.util.js +0 -34
  288. package/dist/lib/core/application/utils/verbose-diagnostics.util.d.ts +0 -5
  289. package/dist/lib/core/application/utils/verbose-diagnostics.util.d.ts.map +0 -1
  290. package/dist/lib/core/application/utils/verbose-diagnostics.util.js +0 -7
  291. package/dist/lib/core/domain/errors.domain.d.ts +0 -11
  292. package/dist/lib/core/domain/errors.domain.d.ts.map +0 -1
  293. package/dist/lib/core/domain/errors.domain.js +0 -9
  294. package/dist/lib/core/domain/result.model.d.ts +0 -17
  295. package/dist/lib/core/domain/result.model.d.ts.map +0 -1
  296. package/dist/lib/core/domain/result.model.js +0 -15
  297. package/dist/lib/core/infra/container.adapter.d.ts +0 -58
  298. package/dist/lib/core/infra/container.adapter.d.ts.map +0 -1
  299. package/dist/lib/core/infra/container.adapter.js +0 -80
  300. package/dist/lib/core/infra/logging-decorator.adapter.d.ts +0 -12
  301. package/dist/lib/core/infra/logging-decorator.adapter.d.ts.map +0 -1
  302. package/dist/lib/core/infra/logging-decorator.adapter.js +0 -75
  303. package/dist/lib/core/presentation/cli-executor.presenter.d.ts +0 -33
  304. package/dist/lib/core/presentation/cli-executor.presenter.d.ts.map +0 -1
  305. package/dist/lib/core/presentation/cli-executor.presenter.js +0 -73
  306. package/dist/lib/core/presentation/format-app-error.presenter.d.ts +0 -6
  307. package/dist/lib/core/presentation/format-app-error.presenter.d.ts.map +0 -1
  308. package/dist/lib/core/presentation/format-app-error.presenter.js +0 -19
  309. package/dist/lib/core/presentation/global-cli-options.presenter.d.ts +0 -9
  310. package/dist/lib/core/presentation/global-cli-options.presenter.d.ts.map +0 -1
  311. package/dist/lib/core/presentation/global-cli-options.presenter.js +0 -8
  312. package/dist/lib/core/presentation/load-codefast-config.presenter.d.ts +0 -8
  313. package/dist/lib/core/presentation/load-codefast-config.presenter.d.ts.map +0 -1
  314. package/dist/lib/core/presentation/load-codefast-config.presenter.js +0 -15
  315. package/dist/lib/core/presentation/parse-cli-schema.presenter.d.ts +0 -5
  316. package/dist/lib/core/presentation/parse-cli-schema.presenter.d.ts.map +0 -1
  317. package/dist/lib/core/presentation/parse-cli-schema.presenter.js +0 -4
  318. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.d.ts +0 -6
  319. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.d.ts.map +0 -1
  320. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.js +0 -17
  321. package/dist/lib/core/presentation/workspace-root-strict.presenter.d.ts +0 -5
  322. package/dist/lib/core/presentation/workspace-root-strict.presenter.d.ts.map +0 -1
  323. package/dist/lib/core/presentation/workspace-root-strict.presenter.js +0 -12
  324. package/dist/lib/infra/config-reporter.adapter.d.ts +0 -4
  325. package/dist/lib/infra/config-reporter.adapter.d.ts.map +0 -1
  326. package/dist/lib/infra/config-reporter.adapter.js +0 -9
  327. package/dist/lib/infra/fs-contract.port.d.ts +0 -2
  328. package/dist/lib/infra/fs-contract.port.d.ts.map +0 -1
  329. package/dist/lib/infra/node-io.adapter.d.ts +0 -4
  330. package/dist/lib/infra/node-io.adapter.d.ts.map +0 -1
  331. package/dist/lib/infra/node-io.adapter.js +0 -37
  332. package/dist/lib/infra/workspace/repo-root.adapter.d.ts +0 -7
  333. package/dist/lib/infra/workspace/repo-root.adapter.d.ts.map +0 -1
  334. package/dist/lib/infra/workspace/repo-root.adapter.js +0 -23
  335. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +0 -6
  336. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +0 -1
  337. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +0 -27
  338. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +0 -1
  339. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +0 -16
  340. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +0 -1
  341. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +0 -7
  342. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +0 -1
  343. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +0 -10
  344. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +0 -1
  345. package/dist/lib/mirror/application/requests/mirror-sync.request.js +0 -8
  346. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.d.ts +0 -10
  347. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.d.ts.map +0 -1
  348. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.js +0 -271
  349. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.d.ts +0 -19
  350. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.d.ts.map +0 -1
  351. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.js +0 -168
  352. package/dist/lib/mirror/domain/constants.domain.d.ts +0 -6
  353. package/dist/lib/mirror/domain/constants.domain.d.ts.map +0 -1
  354. package/dist/lib/mirror/domain/constants.domain.js +0 -5
  355. package/dist/lib/mirror/domain/errors.domain.d.ts +0 -10
  356. package/dist/lib/mirror/domain/errors.domain.d.ts.map +0 -1
  357. package/dist/lib/mirror/domain/errors.domain.js +0 -12
  358. package/dist/lib/mirror/domain/types.domain.d.ts +0 -65
  359. package/dist/lib/mirror/domain/types.domain.d.ts.map +0 -1
  360. package/dist/lib/mirror/index.d.ts +0 -6
  361. package/dist/lib/mirror/index.d.ts.map +0 -1
  362. package/dist/lib/mirror/index.js +0 -1
  363. package/dist/lib/mirror/infra/dirent-list.adapter.d.ts +0 -9
  364. package/dist/lib/mirror/infra/dirent-list.adapter.d.ts.map +0 -1
  365. package/dist/lib/mirror/infra/dirent-list.adapter.js +0 -13
  366. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +0 -7
  367. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +0 -1
  368. package/dist/lib/mirror/infra/file-system-service.adapter.js +0 -47
  369. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.d.ts +0 -14
  370. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.d.ts.map +0 -1
  371. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +0 -3
  372. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +0 -1
  373. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +0 -13
  374. package/dist/lib/mirror/infra/package-filter.adapter.d.ts +0 -8
  375. package/dist/lib/mirror/infra/package-filter.adapter.d.ts.map +0 -1
  376. package/dist/lib/mirror/infra/package-filter.adapter.js +0 -33
  377. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +0 -17
  378. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +0 -1
  379. package/dist/lib/mirror/infra/package-repository.adapter.js +0 -17
  380. package/dist/lib/mirror/infra/path-normalizer.adapter.d.ts +0 -2
  381. package/dist/lib/mirror/infra/path-normalizer.adapter.d.ts.map +0 -1
  382. package/dist/lib/mirror/infra/path-normalizer.adapter.js +0 -4
  383. package/dist/lib/mirror/infra/update-pkg.adapter.d.ts +0 -19
  384. package/dist/lib/mirror/infra/update-pkg.adapter.d.ts.map +0 -1
  385. package/dist/lib/mirror/infra/update-pkg.adapter.js +0 -156
  386. package/dist/lib/mirror/infra/workspace-packages.adapter.d.ts +0 -26
  387. package/dist/lib/mirror/infra/workspace-packages.adapter.d.ts.map +0 -1
  388. package/dist/lib/mirror/infra/workspace-packages.adapter.js +0 -170
  389. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +0 -8
  390. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +0 -1
  391. package/dist/lib/mirror/infra/workspace-service.adapter.js +0 -10
  392. package/dist/lib/mirror/presentation/mirror-prelude.presenter.d.ts +0 -17
  393. package/dist/lib/mirror/presentation/mirror-prelude.presenter.d.ts.map +0 -1
  394. package/dist/lib/mirror/presentation/mirror-prelude.presenter.js +0 -35
  395. package/dist/lib/mirror/presentation/reporter.presenter.d.ts +0 -25
  396. package/dist/lib/mirror/presentation/reporter.presenter.d.ts.map +0 -1
  397. package/dist/lib/mirror/presentation/reporter.presenter.js +0 -140
  398. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.d.ts +0 -11
  399. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.d.ts.map +0 -1
  400. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.js +0 -27
  401. package/dist/lib/shared/source-code/domain/text-edit.model.d.ts +0 -14
  402. package/dist/lib/shared/source-code/domain/text-edit.model.d.ts.map +0 -1
  403. package/dist/lib/shared/source-code/domain/text-edit.model.js +0 -30
  404. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.d.ts +0 -4
  405. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.d.ts.map +0 -1
  406. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.js +0 -37
  407. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +0 -6
  408. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +0 -1
  409. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +0 -6
  410. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +0 -1
  411. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +0 -10
  412. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +0 -1
  413. package/dist/lib/tag/application/requests/tag-sync.request.js +0 -8
  414. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.d.ts +0 -23
  415. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.d.ts.map +0 -1
  416. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.js +0 -357
  417. package/dist/lib/tag/domain/types.domain.d.ts +0 -56
  418. package/dist/lib/tag/domain/types.domain.d.ts.map +0 -1
  419. package/dist/lib/tag/index.d.ts +0 -14
  420. package/dist/lib/tag/index.d.ts.map +0 -1
  421. package/dist/lib/tag/index.js +0 -10
  422. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.d.ts +0 -14
  423. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.d.ts.map +0 -1
  424. package/dist/lib/tag/infra/tag-target-candidates.adapter.d.ts +0 -4
  425. package/dist/lib/tag/infra/tag-target-candidates.adapter.d.ts.map +0 -1
  426. package/dist/lib/tag/infra/tag-target-candidates.adapter.js +0 -200
  427. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +0 -3
  428. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +0 -1
  429. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +0 -4
  430. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +0 -3
  431. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +0 -1
  432. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +0 -4
  433. package/dist/lib/tag/presentation/colors.presenter.d.ts +0 -8
  434. package/dist/lib/tag/presentation/colors.presenter.d.ts.map +0 -1
  435. package/dist/lib/tag/presentation/colors.presenter.js +0 -9
  436. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.d.ts +0 -8
  437. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.d.ts.map +0 -1
  438. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.js +0 -10
  439. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.d.ts +0 -8
  440. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.d.ts.map +0 -1
  441. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.js +0 -10
  442. package/dist/lib/tag/presentation/tag-prelude.presenter.d.ts +0 -15
  443. package/dist/lib/tag/presentation/tag-prelude.presenter.d.ts.map +0 -1
  444. package/dist/lib/tag/presentation/tag-prelude.presenter.js +0 -31
  445. package/dist/lib/tag/presentation/tag-sync.presenter.d.ts +0 -20
  446. package/dist/lib/tag/presentation/tag-sync.presenter.d.ts.map +0 -1
  447. package/dist/lib/tag/presentation/tag-sync.presenter.js +0 -92
  448. package/dist/program.d.ts +0 -4
  449. package/dist/program.d.ts.map +0 -1
  450. package/dist/program.js +0 -40
  451. /package/dist/lib/arrange/application/ports/{domain-source-parser.port.js → domain-source-parser.port.mjs} +0 -0
  452. /package/dist/lib/arrange/application/ports/{file-walker.port.js → file-walker.port.mjs} +0 -0
  453. /package/dist/lib/arrange/{infra/arrange-sync-cli-options.adapter.js → application/ports/group-file-preview.port.mjs} +0 -0
  454. /package/dist/lib/{core/application/ports/cli-io.port.js → arrange/application/requests/analyze-directory.request.mjs} +0 -0
  455. /package/dist/lib/{infra/fs-contract.port.js → arrange/application/requests/arrange-sync.request.mjs} +0 -0
  456. /package/dist/lib/{mirror/application/ports/file-system-service.port.js → arrange/application/requests/suggest-groups.request.mjs} +0 -0
  457. /package/dist/lib/{mirror/application/ports/mirror-sync-reporter.port.js → arrange/contracts/models.mjs} +0 -0
  458. /package/dist/lib/{mirror/application/ports/package-repository.port.js → arrange/contracts/presentation.contract.mjs} +0 -0
  459. /package/dist/lib/{mirror/application/ports/workspace-service.port.js → arrange/contracts/services.contract.mjs} +0 -0
  460. /package/dist/lib/{mirror/domain/types.domain.js → arrange/contracts/use-cases.contract.mjs} +0 -0
  461. /package/dist/lib/{mirror/infra/mirror-sync-cli-options.adapter.js → arrange/domain/types.domain.mjs} +0 -0
  462. /package/dist/lib/{tag/application/ports/target-resolver.port.js → arrange/infra/arrange-sync-cli-options.adapter.mjs} +0 -0
  463. /package/dist/lib/{tag/application/ports/typescript-tree-walk.port.js → config/application/ports/config-loader.port.mjs} +0 -0
  464. /package/dist/lib/{tag/domain/types.domain.js → config/domain/schema.domain.mjs} +0 -0
  465. /package/dist/lib/{tag/infra/tag-sync-cli-options.adapter.js → core/application/ports/cli-io.port.mjs} +0 -0
package/README.md CHANGED
@@ -30,6 +30,18 @@ flowchart LR
30
30
 
31
31
  ---
32
32
 
33
+ ## Exit codes
34
+
35
+ | Code | Meaning |
36
+ | ---- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
37
+ | `0` | Success. |
38
+ | `1` | General failure (missing paths, infrastructure errors, partial failures such as `mirror sync` with package errors, or hook / run errors for `tag` / `arrange`). |
39
+ | `2` | Invalid invocation or input (Zod / schema validation for CLI requests). |
40
+
41
+ Human-readable errors and diagnostics go to **stderr**; primary command output goes to **stdout**.
42
+
43
+ ---
44
+
33
45
  ## Installation
34
46
 
35
47
  ```bash
@@ -91,6 +103,16 @@ Groups a single class string without touching the filesystem. Useful for checkin
91
103
  codefast arrange group "relative flex items-center h-10 w-full rounded-md bg-primary text-white hover:bg-primary/90"
92
104
  ```
93
105
 
106
+ ### `--json` (machine-readable output)
107
+
108
+ Use **`--json`** on any `arrange` subcommand to print **one JSON object** on stdout (human tables / colors are suppressed):
109
+
110
+ | Subcommand | Payload highlights |
111
+ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
112
+ | `analyze` | `schemaVersion`, `analyzeRootPath`, full `report` (same data as the human report). |
113
+ | `preview` / `apply` | `schemaVersion`, `write`, `ok` (false if `onAfterWrite` hook failed), full `result` (`filePaths`, `modifiedFiles`, `totalFound`, …). |
114
+ | `group` | `schemaVersion`, `primaryLine`, `bucketsCommentLine`. |
115
+
94
116
  ---
95
117
 
96
118
  ## `mirror sync`
@@ -101,8 +123,11 @@ Scans built `dist/` trees and regenerates the `exports` field in each `package.j
101
123
  codefast mirror sync # all packages in the workspace
102
124
  codefast mirror sync packages/ui # a single package path
103
125
  codefast mirror sync -v # verbose output
126
+ codefast mirror sync --json # one JSON object on stdout (for scripts / CI)
104
127
  ```
105
128
 
129
+ `--json` prints a single line of JSON with `schemaVersion`, `ok`, `elapsedSeconds`, and `stats` (same counters as the human summary). Human progress and styling are suppressed; use normal mode for interactive runs.
130
+
106
131
  > **Note:** Packages must be built first so `dist/` exists. Run your build step before `mirror sync`.
107
132
 
108
133
  ### Configuration
@@ -155,12 +180,12 @@ export default {
155
180
  tag: {
156
181
  onAfterWrite: ({ files }) => {
157
182
  console.log(`Formatting ${files.length} files with Oxc...`);
158
- execSync(`npx oxc format ${files.join(" ")}`, { stdio: "inherit" });
183
+ execSync(`oxfmt ${files.join(" ")}`, { stdio: "inherit" });
159
184
  },
160
185
  },
161
186
  arrange: {
162
187
  onAfterWrite: ({ files }) => {
163
- execSync(`npx oxc format ${files.join(" ")}`, { stdio: "inherit" });
188
+ execSync(`oxfmt ${files.join(" ")}`, { stdio: "inherit" });
164
189
  },
165
190
  },
166
191
  };
@@ -171,7 +196,7 @@ Hook contract:
171
196
  - `tag.onAfterWrite?.({ files })` runs after `codefast tag` writes files.
172
197
  - `arrange.onAfterWrite?.({ files })` runs after `codefast arrange apply` writes files.
173
198
  - Hooks support both sync and async functions (`void | Promise<void>`).
174
- - Hook errors are logged but do not crash the CLI process.
199
+ - Hook failures are reported on stderr; `tag` and `arrange apply` exit with code `1` when a hook fails (see [Exit codes](#exit-codes)).
175
200
 
176
201
  ---
177
202
 
@@ -183,6 +208,7 @@ Scans `.ts` / `.tsx` source files and annotates exported declarations with `@sin
183
208
  codefast tag # annotate exports in ./src
184
209
  codefast tag packages/ui/src # annotate a custom target
185
210
  codefast annotate --dry-run # preview only, do not write files
211
+ codefast tag --json # one JSON object on stdout (for scripts / CI)
186
212
  ```
187
213
 
188
214
  What it updates:
@@ -1,5 +1,8 @@
1
1
  #!/usr/bin/env node
2
+ import { runCli } from "./program.mjs";
2
3
  import process from "node:process";
3
- import { runCli } from "#program";
4
+ //#region src/bin.ts
4
5
  const code = await runCli(process.argv);
5
6
  process.exit(code);
7
+ //#endregion
8
+ export {};
@@ -0,0 +1,325 @@
1
+ import { formatArrangeAnalyzeJsonOutput } from "../lib/arrange/application/arrange-analyze-json.format.mjs";
2
+ import { formatArrangeGroupJsonOutput } from "../lib/arrange/application/arrange-group-json.format.mjs";
3
+ import { exitCodeForArrangeSyncResult } from "../lib/arrange/application/arrange-sync-cli-result.mjs";
4
+ import { formatArrangeSyncJsonOutput } from "../lib/arrange/application/arrange-sync-json.format.mjs";
5
+ import { AnalyzeDirectoryUseCaseToken, PrepareArrangeOrchestratorToken, PresentAnalyzeReportPresenterToken, RunArrangeSyncUseCaseToken, SuggestCnGroupsUseCaseToken } from "../lib/arrange/contracts/tokens.mjs";
6
+ import { arrangeAnalyzeDirectoryRequestSchema, arrangeSuggestGroupsRequestSchema, arrangeSyncRunRequestSchema } from "../lib/arrange/presentation/arrange-cli-schema.presenter.mjs";
7
+ import { presentArrangeSyncResult } from "../lib/arrange/presentation/arrange-sync.presenter.mjs";
8
+ import { CliLoggerToken } from "../lib/core/operational/contracts/tokens.mjs";
9
+ import { parseWithCliSchema } from "../lib/core/presentation/parse-cli-schema.presenter.mjs";
10
+ import { consumeCliAppError } from "../lib/core/presentation/cli-executor.presenter.mjs";
11
+ import process from "node:process";
12
+ import { Option } from "commander";
13
+ import { inject, injectable } from "@codefast/di";
14
+ //#region src/commands/arrange.ts
15
+ function toPrimitive(input, hint) {
16
+ if (typeof input !== "object" || input === null) return input;
17
+ var prim = input[Symbol.toPrimitive];
18
+ if (prim !== void 0) {
19
+ var res = prim.call(input, hint || "default");
20
+ if (typeof res !== "object") return res;
21
+ throw new TypeError("@@toPrimitive must return a primitive value.");
22
+ }
23
+ return (hint === "string" ? String : Number)(input);
24
+ }
25
+ function toPropertyKey(arg) {
26
+ var key = toPrimitive(arg, "string");
27
+ return typeof key === "symbol" ? key : String(key);
28
+ }
29
+ function checkInRHS(value) {
30
+ if (Object(value) !== value) throw TypeError("right-hand side of 'in' should be an object, got " + (value !== null ? typeof value : "null"));
31
+ return value;
32
+ }
33
+ function setFunctionName(fn, name, prefix) {
34
+ if (typeof name === "symbol") {
35
+ name = name.description;
36
+ name = name ? "[" + name + "]" : "";
37
+ }
38
+ try {
39
+ Object.defineProperty(fn, "name", {
40
+ configurable: true,
41
+ value: prefix ? prefix + " " + name : name
42
+ });
43
+ } catch (_) {}
44
+ return fn;
45
+ }
46
+ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis, instanceBrand, parentClass) {
47
+ var symbolMetadata = Symbol.metadata || Symbol.for("Symbol.metadata");
48
+ var defineProperty = Object.defineProperty;
49
+ var create = Object.create;
50
+ var metadata;
51
+ var existingNonFields = [create(null), create(null)];
52
+ var hasClassDecs = classDecs.length;
53
+ var _;
54
+ function createRunInitializers(initializers, useStaticThis, hasValue) {
55
+ return function(thisArg, value) {
56
+ if (useStaticThis) {
57
+ value = thisArg;
58
+ thisArg = targetClass;
59
+ }
60
+ for (var i = 0; i < initializers.length; i++) value = initializers[i].apply(thisArg, hasValue ? [value] : []);
61
+ return hasValue ? value : thisArg;
62
+ };
63
+ }
64
+ function assertCallable(fn, hint1, hint2, throwUndefined) {
65
+ if (typeof fn !== "function") {
66
+ if (throwUndefined || fn !== void 0) throw new TypeError(hint1 + " must " + (hint2 || "be") + " a function" + (throwUndefined ? "" : " or undefined"));
67
+ }
68
+ return fn;
69
+ }
70
+ function applyDec(Class, decInfo, decoratorsHaveThis, name, kind, initializers, ret, isStatic, isPrivate, isField, hasPrivateBrand) {
71
+ function assertInstanceIfPrivate(target) {
72
+ if (!hasPrivateBrand(target)) throw new TypeError("Attempted to access private element on non-instance");
73
+ }
74
+ var decs = [].concat(decInfo[0]);
75
+ var decVal = decInfo[3];
76
+ var isClass = !ret;
77
+ var isAccessor = kind === 1;
78
+ var isGetter = kind === 3;
79
+ var isSetter = kind === 4;
80
+ var isMethod = kind === 2;
81
+ function bindPropCall(name, useStaticThis, before) {
82
+ return function(_this, value) {
83
+ if (useStaticThis) {
84
+ value = _this;
85
+ _this = Class;
86
+ }
87
+ if (before) before(_this);
88
+ return desc[name].call(_this, value);
89
+ };
90
+ }
91
+ var desc1 = {};
92
+ var init = [];
93
+ var key = isGetter ? "get" : isSetter || isAccessor ? "set" : "value";
94
+ if (!isClass) {
95
+ if (isPrivate) {
96
+ if (isField || isAccessor) desc1 = {
97
+ get: setFunctionName(function() {
98
+ return decVal(this);
99
+ }, name, "get"),
100
+ set: function(value) {
101
+ decInfo[4](this, value);
102
+ }
103
+ };
104
+ else desc1[key] = decVal;
105
+ if (!isField) setFunctionName(desc1[key], name, isMethod ? "" : key);
106
+ } else if (!isField) desc1 = Object.getOwnPropertyDescriptor(Class, name);
107
+ if (!isField && !isPrivate) {
108
+ _ = existingNonFields[+isStatic][name];
109
+ if (_ && (_ ^ kind) !== 7) throw new Error("Decorating two elements with the same name (" + desc1[key].name + ") is not supported yet");
110
+ existingNonFields[+isStatic][name] = kind < 3 ? 1 : kind;
111
+ }
112
+ }
113
+ var newValue = Class;
114
+ for (var i = decs.length - 1; i >= 0; i -= decoratorsHaveThis ? 2 : 1) {
115
+ var dec = assertCallable(decs[i], "A decorator", "be", true);
116
+ var decThis = decoratorsHaveThis ? decs[i - 1] : void 0;
117
+ var decoratorFinishedRef = {};
118
+ var ctx = {
119
+ kind: [
120
+ "field",
121
+ "accessor",
122
+ "method",
123
+ "getter",
124
+ "setter",
125
+ "class"
126
+ ][kind],
127
+ name,
128
+ metadata,
129
+ addInitializer: (function(decoratorFinishedRef, initializer) {
130
+ if (decoratorFinishedRef.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
131
+ assertCallable(initializer, "An initializer", "be", true);
132
+ initializers.push(initializer);
133
+ }).bind(null, decoratorFinishedRef)
134
+ };
135
+ if (isClass) {
136
+ _ = dec.call(decThis, newValue, ctx);
137
+ decoratorFinishedRef.v = 1;
138
+ if (assertCallable(_, "class decorators", "return")) newValue = _;
139
+ continue;
140
+ }
141
+ ctx.static = isStatic;
142
+ ctx.private = isPrivate;
143
+ _ = ctx.access = { has: isPrivate ? hasPrivateBrand.bind() : function(target) {
144
+ return name in target;
145
+ } };
146
+ if (!isSetter) _.get = isPrivate ? isMethod ? function(_this) {
147
+ assertInstanceIfPrivate(_this);
148
+ return desc1.value;
149
+ } : bindPropCall("get", 0, assertInstanceIfPrivate) : function(target) {
150
+ return target[name];
151
+ };
152
+ if (!isMethod && !isGetter) _.set = isPrivate ? bindPropCall("set", 0, assertInstanceIfPrivate) : function(target, value) {
153
+ target[name] = value;
154
+ };
155
+ newValue = dec.call(decThis, isAccessor ? {
156
+ get: desc1.get,
157
+ set: desc1.set
158
+ } : desc1[key], ctx);
159
+ decoratorFinishedRef.v = 1;
160
+ if (isAccessor) {
161
+ if (typeof newValue === "object" && newValue) {
162
+ if (_ = assertCallable(newValue.get, "accessor.get")) desc1.get = _;
163
+ if (_ = assertCallable(newValue.set, "accessor.set")) desc1.set = _;
164
+ if (_ = assertCallable(newValue.init, "accessor.init")) init.unshift(_);
165
+ } else if (newValue !== void 0) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
166
+ } else if (assertCallable(newValue, (isField ? "field" : "method") + " decorators", "return")) if (isField) init.unshift(newValue);
167
+ else desc1[key] = newValue;
168
+ }
169
+ if (kind < 2) ret.push(createRunInitializers(init, isStatic, 1), createRunInitializers(initializers, isStatic, 0));
170
+ if (!isField && !isClass) if (isPrivate) if (isAccessor) ret.splice(-1, 0, bindPropCall("get", isStatic), bindPropCall("set", isStatic));
171
+ else ret.push(isMethod ? desc1[key] : assertCallable.call.bind(desc1[key]));
172
+ else defineProperty(Class, name, desc1);
173
+ return newValue;
174
+ }
175
+ function applyMemberDecs() {
176
+ var ret = [];
177
+ var protoInitializers;
178
+ var staticInitializers;
179
+ var pushInitializers = function(initializers) {
180
+ if (initializers) ret.push(createRunInitializers(initializers));
181
+ };
182
+ var applyMemberDecsOfKind = function(isStatic, isField) {
183
+ for (var i = 0; i < memberDecs.length; i++) {
184
+ var decInfo = memberDecs[i];
185
+ var kind = decInfo[1];
186
+ var kindOnly = kind & 7;
187
+ if ((kind & 8) == isStatic && !kindOnly == isField) {
188
+ var name = decInfo[2];
189
+ var isPrivate = !!decInfo[3];
190
+ var decoratorsHaveThis = kind & 16;
191
+ applyDec(isStatic ? targetClass : targetClass.prototype, decInfo, decoratorsHaveThis, isPrivate ? "#" + name : toPropertyKey(name), kindOnly, kindOnly < 2 ? [] : isStatic ? staticInitializers = staticInitializers || [] : protoInitializers = protoInitializers || [], ret, !!isStatic, isPrivate, isField, isStatic && isPrivate ? function(_) {
192
+ return checkInRHS(_) === targetClass;
193
+ } : instanceBrand);
194
+ }
195
+ }
196
+ };
197
+ applyMemberDecsOfKind(8, 0);
198
+ applyMemberDecsOfKind(0, 0);
199
+ applyMemberDecsOfKind(8, 1);
200
+ applyMemberDecsOfKind(0, 1);
201
+ pushInitializers(protoInitializers);
202
+ pushInitializers(staticInitializers);
203
+ return ret;
204
+ }
205
+ function defineMetadata(Class) {
206
+ return defineProperty(Class, symbolMetadata, {
207
+ configurable: true,
208
+ enumerable: true,
209
+ value: metadata
210
+ });
211
+ }
212
+ if (parentClass !== void 0) metadata = parentClass[symbolMetadata];
213
+ metadata = create(metadata == null ? null : metadata);
214
+ _ = applyMemberDecs();
215
+ if (!hasClassDecs) defineMetadata(targetClass);
216
+ return {
217
+ e: _,
218
+ get c() {
219
+ var initializers = [];
220
+ return hasClassDecs && [defineMetadata(targetClass = applyDec(targetClass, [classDecs], classDecsHaveThis, targetClass.name, 5, initializers)), createRunInitializers(initializers, 1)];
221
+ }
222
+ };
223
+ }
224
+ let _dec, _initClass;
225
+ function withClassNameOption() {
226
+ return new Option("--with-classname, --with-class-name", "Append className as final cn() argument").default(false);
227
+ }
228
+ _dec = injectable([
229
+ inject(CliLoggerToken),
230
+ inject(PrepareArrangeOrchestratorToken),
231
+ inject(AnalyzeDirectoryUseCaseToken),
232
+ inject(RunArrangeSyncUseCaseToken),
233
+ inject(SuggestCnGroupsUseCaseToken),
234
+ inject(PresentAnalyzeReportPresenterToken)
235
+ ]);
236
+ let _ArrangeCommand;
237
+ (class {
238
+ logger;
239
+ prepareTargetWorkspaceAndConfig;
240
+ analyzeDirectory;
241
+ runArrangeSync;
242
+ suggestCnGroups;
243
+ presentAnalyzeReport;
244
+ static {
245
+ ({c: [_ArrangeCommand, _initClass]} = _apply_decs_2311(this, [_dec], []));
246
+ }
247
+ constructor(logger, prepareTargetWorkspaceAndConfig, analyzeDirectory, runArrangeSync, suggestCnGroups, presentAnalyzeReport) {
248
+ this.logger = logger;
249
+ this.prepareTargetWorkspaceAndConfig = prepareTargetWorkspaceAndConfig;
250
+ this.analyzeDirectory = analyzeDirectory;
251
+ this.runArrangeSync = runArrangeSync;
252
+ this.suggestCnGroups = suggestCnGroups;
253
+ this.presentAnalyzeReport = presentAnalyzeReport;
254
+ }
255
+ name = "arrange";
256
+ description = "Analyze and regroup Tailwind classes in cn() / tv() calls (Tailwind v4)";
257
+ register(program) {
258
+ const arrange = program.command(this.name).description(this.description);
259
+ arrange.command("analyze").description("Report long strings, nested cn in tv(), and related findings").argument("[target]", "Directory or file (default: nearest package directory from cwd)").option("--json", "Print one JSON object on stdout instead of a human report", false).action((target, options) => this.executeAnalyze(target, options));
260
+ arrange.command("preview").description("Dry-run: print suggested replacements without writing files").argument("[target]", "Directory or file (default: nearest package directory from cwd)").addOption(withClassNameOption()).option("--cn-import <spec>", "Override module specifier when adding cn import").option("--json", "Print one JSON object on stdout (suppresses human progress)", false).action((target, opts) => this.executePreviewOrApply(false, target, opts));
261
+ arrange.command("apply").description("Apply grouping and cn-in-tv unwrap edits to files").argument("[target]", "Directory or file (default: nearest package directory from cwd)").addOption(withClassNameOption()).option("--cn-import <spec>", "Override module specifier when adding cn import").option("--json", "Print one JSON object on stdout (suppresses human progress)", false).action((target, opts) => this.executePreviewOrApply(true, target, opts));
262
+ arrange.command("group").description("Try grouping on a pasted class string (stdout: cn(...) or tv array with --tv)").argument("[tokens...]", "Class tokens (quote a single string if it contains spaces)").option("--tv", "Emit tv()-style array instead of cn() call", false).addOption(withClassNameOption()).option("--json", "Print one JSON object on stdout instead of plain lines", false).action((tokens, opts) => this.executeGroup(tokens, opts));
263
+ }
264
+ async executeAnalyze(target, options) {
265
+ const prelude = await this.prepareTargetWorkspaceAndConfig.execute({
266
+ currentWorkingDirectory: process.cwd(),
267
+ rawTarget: target
268
+ });
269
+ if (!consumeCliAppError(this.logger, prelude)) return;
270
+ const { resolvedTarget } = prelude.value;
271
+ const parsed = parseWithCliSchema(arrangeAnalyzeDirectoryRequestSchema, {
272
+ analyzeRootPath: resolvedTarget,
273
+ json: options?.json
274
+ });
275
+ if (!consumeCliAppError(this.logger, parsed)) return;
276
+ const outcome = this.analyzeDirectory.execute(parsed.value);
277
+ if (!consumeCliAppError(this.logger, outcome)) return;
278
+ if (parsed.value.json) this.logger.out(formatArrangeAnalyzeJsonOutput(resolvedTarget, outcome.value));
279
+ else this.presentAnalyzeReport.present(resolvedTarget, outcome.value);
280
+ }
281
+ async executePreviewOrApply(write, target, opts) {
282
+ const prelude = await this.prepareTargetWorkspaceAndConfig.execute({
283
+ currentWorkingDirectory: process.cwd(),
284
+ rawTarget: target
285
+ });
286
+ if (!consumeCliAppError(this.logger, prelude)) return;
287
+ const { resolvedTarget, rootDir, config } = prelude.value;
288
+ const parsed = parseWithCliSchema(arrangeSyncRunRequestSchema, {
289
+ rootDir,
290
+ targetPath: resolvedTarget,
291
+ write,
292
+ json: opts.json,
293
+ withClassName: opts.withClassName,
294
+ cnImport: opts.cnImport,
295
+ config: config.arrange ?? {}
296
+ });
297
+ if (!consumeCliAppError(this.logger, parsed)) return;
298
+ const outcome = await this.runArrangeSync.execute(parsed.value);
299
+ if (!consumeCliAppError(this.logger, outcome)) return;
300
+ if (parsed.value.json) {
301
+ this.logger.out(formatArrangeSyncJsonOutput(outcome.value, write));
302
+ process.exitCode = exitCodeForArrangeSyncResult(outcome.value);
303
+ } else process.exitCode = presentArrangeSyncResult(this.logger, outcome.value, write);
304
+ }
305
+ async executeGroup(tokens, opts) {
306
+ const parsed = parseWithCliSchema(arrangeSuggestGroupsRequestSchema, {
307
+ inlineClasses: tokens.join(" ").trim(),
308
+ emitTvStyleArray: !!opts.tv,
309
+ trailingClassName: !!opts.withClassName,
310
+ json: opts.json
311
+ });
312
+ if (!consumeCliAppError(this.logger, parsed)) return;
313
+ const output = this.suggestCnGroups.execute(parsed.value);
314
+ if (parsed.value.json) this.logger.out(formatArrangeGroupJsonOutput(output));
315
+ else {
316
+ this.logger.out(output.primaryLine);
317
+ this.logger.out(output.bucketsCommentLine);
318
+ }
319
+ }
320
+ static {
321
+ _initClass();
322
+ }
323
+ });
324
+ //#endregion
325
+ export { _ArrangeCommand as ArrangeCommand };
@@ -0,0 +1,267 @@
1
+ import "../lib/core/domain/cli-exit-codes.domain.mjs";
2
+ import { CliLoggerToken } from "../lib/core/operational/contracts/tokens.mjs";
3
+ import { parseWithCliSchema } from "../lib/core/presentation/parse-cli-schema.presenter.mjs";
4
+ import { consumeCliAppError, runCliResultAsync } from "../lib/core/presentation/cli-executor.presenter.mjs";
5
+ import { PrepareMirrorOrchestratorToken, RunMirrorSyncUseCaseToken } from "../lib/mirror/contracts/tokens.mjs";
6
+ import { mirrorSyncRunRequestSchema } from "../lib/mirror/presentation/mirror-cli-schema.presenter.mjs";
7
+ import process from "node:process";
8
+ import { inject, injectable } from "@codefast/di";
9
+ //#region src/commands/mirror.ts
10
+ function toPrimitive(input, hint) {
11
+ if (typeof input !== "object" || input === null) return input;
12
+ var prim = input[Symbol.toPrimitive];
13
+ if (prim !== void 0) {
14
+ var res = prim.call(input, hint || "default");
15
+ if (typeof res !== "object") return res;
16
+ throw new TypeError("@@toPrimitive must return a primitive value.");
17
+ }
18
+ return (hint === "string" ? String : Number)(input);
19
+ }
20
+ function toPropertyKey(arg) {
21
+ var key = toPrimitive(arg, "string");
22
+ return typeof key === "symbol" ? key : String(key);
23
+ }
24
+ function checkInRHS(value) {
25
+ if (Object(value) !== value) throw TypeError("right-hand side of 'in' should be an object, got " + (value !== null ? typeof value : "null"));
26
+ return value;
27
+ }
28
+ function setFunctionName(fn, name, prefix) {
29
+ if (typeof name === "symbol") {
30
+ name = name.description;
31
+ name = name ? "[" + name + "]" : "";
32
+ }
33
+ try {
34
+ Object.defineProperty(fn, "name", {
35
+ configurable: true,
36
+ value: prefix ? prefix + " " + name : name
37
+ });
38
+ } catch (_) {}
39
+ return fn;
40
+ }
41
+ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis, instanceBrand, parentClass) {
42
+ var symbolMetadata = Symbol.metadata || Symbol.for("Symbol.metadata");
43
+ var defineProperty = Object.defineProperty;
44
+ var create = Object.create;
45
+ var metadata;
46
+ var existingNonFields = [create(null), create(null)];
47
+ var hasClassDecs = classDecs.length;
48
+ var _;
49
+ function createRunInitializers(initializers, useStaticThis, hasValue) {
50
+ return function(thisArg, value) {
51
+ if (useStaticThis) {
52
+ value = thisArg;
53
+ thisArg = targetClass;
54
+ }
55
+ for (var i = 0; i < initializers.length; i++) value = initializers[i].apply(thisArg, hasValue ? [value] : []);
56
+ return hasValue ? value : thisArg;
57
+ };
58
+ }
59
+ function assertCallable(fn, hint1, hint2, throwUndefined) {
60
+ if (typeof fn !== "function") {
61
+ if (throwUndefined || fn !== void 0) throw new TypeError(hint1 + " must " + (hint2 || "be") + " a function" + (throwUndefined ? "" : " or undefined"));
62
+ }
63
+ return fn;
64
+ }
65
+ function applyDec(Class, decInfo, decoratorsHaveThis, name, kind, initializers, ret, isStatic, isPrivate, isField, hasPrivateBrand) {
66
+ function assertInstanceIfPrivate(target) {
67
+ if (!hasPrivateBrand(target)) throw new TypeError("Attempted to access private element on non-instance");
68
+ }
69
+ var decs = [].concat(decInfo[0]);
70
+ var decVal = decInfo[3];
71
+ var isClass = !ret;
72
+ var isAccessor = kind === 1;
73
+ var isGetter = kind === 3;
74
+ var isSetter = kind === 4;
75
+ var isMethod = kind === 2;
76
+ function bindPropCall(name, useStaticThis, before) {
77
+ return function(_this, value) {
78
+ if (useStaticThis) {
79
+ value = _this;
80
+ _this = Class;
81
+ }
82
+ if (before) before(_this);
83
+ return desc[name].call(_this, value);
84
+ };
85
+ }
86
+ var desc1 = {};
87
+ var init = [];
88
+ var key = isGetter ? "get" : isSetter || isAccessor ? "set" : "value";
89
+ if (!isClass) {
90
+ if (isPrivate) {
91
+ if (isField || isAccessor) desc1 = {
92
+ get: setFunctionName(function() {
93
+ return decVal(this);
94
+ }, name, "get"),
95
+ set: function(value) {
96
+ decInfo[4](this, value);
97
+ }
98
+ };
99
+ else desc1[key] = decVal;
100
+ if (!isField) setFunctionName(desc1[key], name, isMethod ? "" : key);
101
+ } else if (!isField) desc1 = Object.getOwnPropertyDescriptor(Class, name);
102
+ if (!isField && !isPrivate) {
103
+ _ = existingNonFields[+isStatic][name];
104
+ if (_ && (_ ^ kind) !== 7) throw new Error("Decorating two elements with the same name (" + desc1[key].name + ") is not supported yet");
105
+ existingNonFields[+isStatic][name] = kind < 3 ? 1 : kind;
106
+ }
107
+ }
108
+ var newValue = Class;
109
+ for (var i = decs.length - 1; i >= 0; i -= decoratorsHaveThis ? 2 : 1) {
110
+ var dec = assertCallable(decs[i], "A decorator", "be", true);
111
+ var decThis = decoratorsHaveThis ? decs[i - 1] : void 0;
112
+ var decoratorFinishedRef = {};
113
+ var ctx = {
114
+ kind: [
115
+ "field",
116
+ "accessor",
117
+ "method",
118
+ "getter",
119
+ "setter",
120
+ "class"
121
+ ][kind],
122
+ name,
123
+ metadata,
124
+ addInitializer: (function(decoratorFinishedRef, initializer) {
125
+ if (decoratorFinishedRef.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
126
+ assertCallable(initializer, "An initializer", "be", true);
127
+ initializers.push(initializer);
128
+ }).bind(null, decoratorFinishedRef)
129
+ };
130
+ if (isClass) {
131
+ _ = dec.call(decThis, newValue, ctx);
132
+ decoratorFinishedRef.v = 1;
133
+ if (assertCallable(_, "class decorators", "return")) newValue = _;
134
+ continue;
135
+ }
136
+ ctx.static = isStatic;
137
+ ctx.private = isPrivate;
138
+ _ = ctx.access = { has: isPrivate ? hasPrivateBrand.bind() : function(target) {
139
+ return name in target;
140
+ } };
141
+ if (!isSetter) _.get = isPrivate ? isMethod ? function(_this) {
142
+ assertInstanceIfPrivate(_this);
143
+ return desc1.value;
144
+ } : bindPropCall("get", 0, assertInstanceIfPrivate) : function(target) {
145
+ return target[name];
146
+ };
147
+ if (!isMethod && !isGetter) _.set = isPrivate ? bindPropCall("set", 0, assertInstanceIfPrivate) : function(target, value) {
148
+ target[name] = value;
149
+ };
150
+ newValue = dec.call(decThis, isAccessor ? {
151
+ get: desc1.get,
152
+ set: desc1.set
153
+ } : desc1[key], ctx);
154
+ decoratorFinishedRef.v = 1;
155
+ if (isAccessor) {
156
+ if (typeof newValue === "object" && newValue) {
157
+ if (_ = assertCallable(newValue.get, "accessor.get")) desc1.get = _;
158
+ if (_ = assertCallable(newValue.set, "accessor.set")) desc1.set = _;
159
+ if (_ = assertCallable(newValue.init, "accessor.init")) init.unshift(_);
160
+ } else if (newValue !== void 0) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
161
+ } else if (assertCallable(newValue, (isField ? "field" : "method") + " decorators", "return")) if (isField) init.unshift(newValue);
162
+ else desc1[key] = newValue;
163
+ }
164
+ if (kind < 2) ret.push(createRunInitializers(init, isStatic, 1), createRunInitializers(initializers, isStatic, 0));
165
+ if (!isField && !isClass) if (isPrivate) if (isAccessor) ret.splice(-1, 0, bindPropCall("get", isStatic), bindPropCall("set", isStatic));
166
+ else ret.push(isMethod ? desc1[key] : assertCallable.call.bind(desc1[key]));
167
+ else defineProperty(Class, name, desc1);
168
+ return newValue;
169
+ }
170
+ function applyMemberDecs() {
171
+ var ret = [];
172
+ var protoInitializers;
173
+ var staticInitializers;
174
+ var pushInitializers = function(initializers) {
175
+ if (initializers) ret.push(createRunInitializers(initializers));
176
+ };
177
+ var applyMemberDecsOfKind = function(isStatic, isField) {
178
+ for (var i = 0; i < memberDecs.length; i++) {
179
+ var decInfo = memberDecs[i];
180
+ var kind = decInfo[1];
181
+ var kindOnly = kind & 7;
182
+ if ((kind & 8) == isStatic && !kindOnly == isField) {
183
+ var name = decInfo[2];
184
+ var isPrivate = !!decInfo[3];
185
+ var decoratorsHaveThis = kind & 16;
186
+ applyDec(isStatic ? targetClass : targetClass.prototype, decInfo, decoratorsHaveThis, isPrivate ? "#" + name : toPropertyKey(name), kindOnly, kindOnly < 2 ? [] : isStatic ? staticInitializers = staticInitializers || [] : protoInitializers = protoInitializers || [], ret, !!isStatic, isPrivate, isField, isStatic && isPrivate ? function(_) {
187
+ return checkInRHS(_) === targetClass;
188
+ } : instanceBrand);
189
+ }
190
+ }
191
+ };
192
+ applyMemberDecsOfKind(8, 0);
193
+ applyMemberDecsOfKind(0, 0);
194
+ applyMemberDecsOfKind(8, 1);
195
+ applyMemberDecsOfKind(0, 1);
196
+ pushInitializers(protoInitializers);
197
+ pushInitializers(staticInitializers);
198
+ return ret;
199
+ }
200
+ function defineMetadata(Class) {
201
+ return defineProperty(Class, symbolMetadata, {
202
+ configurable: true,
203
+ enumerable: true,
204
+ value: metadata
205
+ });
206
+ }
207
+ if (parentClass !== void 0) metadata = parentClass[symbolMetadata];
208
+ metadata = create(metadata == null ? null : metadata);
209
+ _ = applyMemberDecs();
210
+ if (!hasClassDecs) defineMetadata(targetClass);
211
+ return {
212
+ e: _,
213
+ get c() {
214
+ var initializers = [];
215
+ return hasClassDecs && [defineMetadata(targetClass = applyDec(targetClass, [classDecs], classDecsHaveThis, targetClass.name, 5, initializers)), createRunInitializers(initializers, 1)];
216
+ }
217
+ };
218
+ }
219
+ let _dec, _initClass;
220
+ _dec = injectable([
221
+ inject(CliLoggerToken),
222
+ inject(PrepareMirrorOrchestratorToken),
223
+ inject(RunMirrorSyncUseCaseToken)
224
+ ]);
225
+ let _MirrorCommand;
226
+ (class {
227
+ logger;
228
+ prepareMirrorSync;
229
+ runMirrorSync;
230
+ static {
231
+ ({c: [_MirrorCommand, _initClass]} = _apply_decs_2311(this, [_dec], []));
232
+ }
233
+ constructor(logger, prepareMirrorSync, runMirrorSync) {
234
+ this.logger = logger;
235
+ this.prepareMirrorSync = prepareMirrorSync;
236
+ this.runMirrorSync = runMirrorSync;
237
+ }
238
+ name = "mirror";
239
+ description = "Keep package manifests aligned with what you ship";
240
+ register(program) {
241
+ program.command(this.name).description(this.description).command("sync").description("Write package.json exports from dist/ for workspace packages").argument("[package]", "Optional package path relative to repo root (e.g. packages/ui)").option("-v, --verbose", "Print extra diagnostics", false).option("--json", "Print one JSON summary on stdout (suppresses human progress)", false).action(this.execute.bind(this));
242
+ }
243
+ async execute(pkg, options, command) {
244
+ const prelude = await this.prepareMirrorSync.execute({
245
+ currentWorkingDirectory: process.cwd(),
246
+ packageArg: pkg,
247
+ globalCliRaw: command.optsWithGlobals()
248
+ });
249
+ if (!consumeCliAppError(this.logger, prelude)) return;
250
+ const { rootDir, config, packageFilter, globals } = prelude.value;
251
+ const parsed = parseWithCliSchema(mirrorSyncRunRequestSchema, {
252
+ rootDir,
253
+ config: config.mirror ?? {},
254
+ verbose: options.verbose,
255
+ json: options.json,
256
+ noColor: globals.color === false,
257
+ packageFilter
258
+ });
259
+ if (!consumeCliAppError(this.logger, parsed)) return;
260
+ await runCliResultAsync(this.logger, this.runMirrorSync.execute(parsed.value), (stats) => stats.packagesErrored > 0 ? 1 : 0);
261
+ }
262
+ static {
263
+ _initClass();
264
+ }
265
+ });
266
+ //#endregion
267
+ export { _MirrorCommand as MirrorCommand };