@codefast/cli 0.3.13-canary.2 → 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 (426) hide show
  1. package/README.md +30 -4
  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 -129
  154. package/dist/commands/mirror.d.ts +0 -4
  155. package/dist/commands/mirror.d.ts.map +0 -1
  156. package/dist/commands/mirror.js +0 -75
  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 -41
  160. package/dist/lib/arrange/application/analyze.d.ts +0 -17
  161. package/dist/lib/arrange/application/analyze.d.ts.map +0 -1
  162. package/dist/lib/arrange/application/analyze.js +0 -24
  163. package/dist/lib/arrange/application/group-file-preview.d.ts +0 -17
  164. package/dist/lib/arrange/application/group-file-preview.d.ts.map +0 -1
  165. package/dist/lib/arrange/application/group-file-preview.js +0 -46
  166. package/dist/lib/arrange/application/group-file.d.ts +0 -5
  167. package/dist/lib/arrange/application/group-file.d.ts.map +0 -1
  168. package/dist/lib/arrange/application/group-file.js +0 -40
  169. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +0 -5
  170. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +0 -1
  171. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +0 -5
  172. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +0 -1
  173. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +0 -6
  174. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +0 -1
  175. package/dist/lib/arrange/application/requests/analyze-directory.request.js +0 -4
  176. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +0 -18
  177. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +0 -1
  178. package/dist/lib/arrange/application/requests/arrange-sync.request.js +0 -15
  179. package/dist/lib/arrange/application/run-target.d.ts +0 -19
  180. package/dist/lib/arrange/application/run-target.d.ts.map +0 -1
  181. package/dist/lib/arrange/application/run-target.js +0 -85
  182. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +0 -12
  183. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +0 -1
  184. package/dist/lib/arrange/domain/arrange-analyze.service.js +0 -116
  185. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +0 -53
  186. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +0 -1
  187. package/dist/lib/arrange/domain/arrange-grouping.service.js +0 -106
  188. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts +0 -28
  189. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts.map +0 -1
  190. package/dist/lib/arrange/domain/ast/ast-helpers.js +0 -130
  191. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +0 -179
  192. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +0 -1
  193. package/dist/lib/arrange/domain/ast/ast-node.model.js +0 -210
  194. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts +0 -7
  195. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts.map +0 -1
  196. package/dist/lib/arrange/domain/ast/collectors-cn.js +0 -70
  197. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts +0 -4
  198. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts.map +0 -1
  199. package/dist/lib/arrange/domain/ast/collectors-jsx.js +0 -21
  200. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts +0 -13
  201. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts.map +0 -1
  202. package/dist/lib/arrange/domain/ast/collectors-tv.js +0 -302
  203. package/dist/lib/arrange/domain/ast/targets.d.ts +0 -8
  204. package/dist/lib/arrange/domain/ast/targets.d.ts.map +0 -1
  205. package/dist/lib/arrange/domain/ast/targets.js +0 -147
  206. package/dist/lib/arrange/domain/constants.d.ts +0 -68
  207. package/dist/lib/arrange/domain/constants.d.ts.map +0 -1
  208. package/dist/lib/arrange/domain/constants.js +0 -180
  209. package/dist/lib/arrange/domain/errors.d.ts +0 -14
  210. package/dist/lib/arrange/domain/errors.d.ts.map +0 -1
  211. package/dist/lib/arrange/domain/errors.js +0 -16
  212. package/dist/lib/arrange/domain/grouping.d.ts +0 -41
  213. package/dist/lib/arrange/domain/grouping.d.ts.map +0 -1
  214. package/dist/lib/arrange/domain/grouping.js +0 -307
  215. package/dist/lib/arrange/domain/imports.d.ts +0 -7
  216. package/dist/lib/arrange/domain/imports.d.ts.map +0 -1
  217. package/dist/lib/arrange/domain/imports.js +0 -80
  218. package/dist/lib/arrange/domain/source-text-formatters.d.ts +0 -16
  219. package/dist/lib/arrange/domain/source-text-formatters.d.ts.map +0 -1
  220. package/dist/lib/arrange/domain/source-text-formatters.js +0 -55
  221. package/dist/lib/arrange/domain/tokenizer.d.ts +0 -45
  222. package/dist/lib/arrange/domain/tokenizer.d.ts.map +0 -1
  223. package/dist/lib/arrange/domain/tokenizer.js +0 -466
  224. package/dist/lib/arrange/domain/types.d.ts +0 -112
  225. package/dist/lib/arrange/domain/types.d.ts.map +0 -1
  226. package/dist/lib/arrange/domain/types.js +0 -7
  227. package/dist/lib/arrange/index.d.ts +0 -45
  228. package/dist/lib/arrange/index.d.ts.map +0 -1
  229. package/dist/lib/arrange/index.js +0 -41
  230. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts +0 -14
  231. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts.map +0 -1
  232. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +0 -11
  233. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +0 -1
  234. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +0 -19
  235. package/dist/lib/arrange/infra/ensure-cn-import.d.ts +0 -3
  236. package/dist/lib/arrange/infra/ensure-cn-import.d.ts.map +0 -1
  237. package/dist/lib/arrange/infra/ensure-cn-import.js +0 -6
  238. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +0 -8
  239. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +0 -1
  240. package/dist/lib/arrange/infra/file-walker.adapter.js +0 -17
  241. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts +0 -8
  242. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts.map +0 -1
  243. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.js +0 -25
  244. package/dist/lib/arrange/infra/ts-ast-translator.d.ts +0 -10
  245. package/dist/lib/arrange/infra/ts-ast-translator.d.ts.map +0 -1
  246. package/dist/lib/arrange/infra/ts-ast-translator.js +0 -363
  247. package/dist/lib/arrange/presentation/formatters.d.ts +0 -3
  248. package/dist/lib/arrange/presentation/formatters.d.ts.map +0 -1
  249. package/dist/lib/arrange/presentation/formatters.js +0 -2
  250. package/dist/lib/arrange/presentation/report.d.ts +0 -4
  251. package/dist/lib/arrange/presentation/report.d.ts.map +0 -1
  252. package/dist/lib/arrange/presentation/report.js +0 -37
  253. package/dist/lib/config/domain/schema.d.ts +0 -50
  254. package/dist/lib/config/domain/schema.d.ts.map +0 -1
  255. package/dist/lib/config/domain/schema.js +0 -43
  256. package/dist/lib/config/index.d.ts +0 -4
  257. package/dist/lib/config/index.d.ts.map +0 -1
  258. package/dist/lib/config/index.js +0 -2
  259. package/dist/lib/config/infra/loader.d.ts +0 -11
  260. package/dist/lib/config/infra/loader.d.ts.map +0 -1
  261. package/dist/lib/config/infra/loader.js +0 -90
  262. package/dist/lib/core/application/architecture-boundaries.d.ts +0 -19
  263. package/dist/lib/core/application/architecture-boundaries.d.ts.map +0 -1
  264. package/dist/lib/core/application/architecture-boundaries.js +0 -263
  265. package/dist/lib/core/application/ports/cli-io.port.d.ts +0 -27
  266. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +0 -1
  267. package/dist/lib/core/application/schema-parse.d.ts +0 -8
  268. package/dist/lib/core/application/schema-parse.d.ts.map +0 -1
  269. package/dist/lib/core/application/schema-parse.js +0 -20
  270. package/dist/lib/core/application/utils/caught-unknown-message.d.ts +0 -6
  271. package/dist/lib/core/application/utils/caught-unknown-message.d.ts.map +0 -1
  272. package/dist/lib/core/application/utils/caught-unknown-message.js +0 -34
  273. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts +0 -5
  274. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts.map +0 -1
  275. package/dist/lib/core/application/utils/verbose-diagnostics.js +0 -7
  276. package/dist/lib/core/domain/errors.d.ts +0 -11
  277. package/dist/lib/core/domain/errors.d.ts.map +0 -1
  278. package/dist/lib/core/domain/errors.js +0 -9
  279. package/dist/lib/core/domain/result.d.ts +0 -15
  280. package/dist/lib/core/domain/result.d.ts.map +0 -1
  281. package/dist/lib/core/domain/result.js +0 -9
  282. package/dist/lib/core/infra/container.d.ts +0 -34
  283. package/dist/lib/core/infra/container.d.ts.map +0 -1
  284. package/dist/lib/core/infra/container.js +0 -65
  285. package/dist/lib/core/infra/logging-decorator.d.ts +0 -12
  286. package/dist/lib/core/infra/logging-decorator.d.ts.map +0 -1
  287. package/dist/lib/core/infra/logging-decorator.js +0 -75
  288. package/dist/lib/core/presentation/cli-executor.d.ts +0 -33
  289. package/dist/lib/core/presentation/cli-executor.d.ts.map +0 -1
  290. package/dist/lib/core/presentation/cli-executor.js +0 -73
  291. package/dist/lib/core/presentation/create-command-handler.d.ts +0 -20
  292. package/dist/lib/core/presentation/create-command-handler.d.ts.map +0 -1
  293. package/dist/lib/core/presentation/create-command-handler.js +0 -70
  294. package/dist/lib/core/presentation/format-app-error.d.ts +0 -6
  295. package/dist/lib/core/presentation/format-app-error.d.ts.map +0 -1
  296. package/dist/lib/core/presentation/format-app-error.js +0 -19
  297. package/dist/lib/infra/caught-unknown-message.d.ts +0 -2
  298. package/dist/lib/infra/caught-unknown-message.d.ts.map +0 -1
  299. package/dist/lib/infra/caught-unknown-message.js +0 -1
  300. package/dist/lib/infra/config-reporter.d.ts +0 -4
  301. package/dist/lib/infra/config-reporter.d.ts.map +0 -1
  302. package/dist/lib/infra/config-reporter.js +0 -9
  303. package/dist/lib/infra/fs-contract.d.ts +0 -2
  304. package/dist/lib/infra/fs-contract.d.ts.map +0 -1
  305. package/dist/lib/infra/node-io.d.ts +0 -4
  306. package/dist/lib/infra/node-io.d.ts.map +0 -1
  307. package/dist/lib/infra/node-io.js +0 -27
  308. package/dist/lib/infra/workspace/repo-root.d.ts +0 -7
  309. package/dist/lib/infra/workspace/repo-root.d.ts.map +0 -1
  310. package/dist/lib/infra/workspace/repo-root.js +0 -23
  311. package/dist/lib/mirror/application/engine.d.ts +0 -10
  312. package/dist/lib/mirror/application/engine.d.ts.map +0 -1
  313. package/dist/lib/mirror/application/engine.js +0 -271
  314. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +0 -6
  315. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +0 -1
  316. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +0 -27
  317. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +0 -1
  318. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +0 -16
  319. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +0 -1
  320. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +0 -7
  321. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +0 -1
  322. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +0 -10
  323. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +0 -1
  324. package/dist/lib/mirror/application/requests/mirror-sync.request.js +0 -8
  325. package/dist/lib/mirror/application/sync.d.ts +0 -19
  326. package/dist/lib/mirror/application/sync.d.ts.map +0 -1
  327. package/dist/lib/mirror/application/sync.js +0 -168
  328. package/dist/lib/mirror/domain/constants.d.ts +0 -6
  329. package/dist/lib/mirror/domain/constants.d.ts.map +0 -1
  330. package/dist/lib/mirror/domain/constants.js +0 -5
  331. package/dist/lib/mirror/domain/errors.d.ts +0 -10
  332. package/dist/lib/mirror/domain/errors.d.ts.map +0 -1
  333. package/dist/lib/mirror/domain/errors.js +0 -12
  334. package/dist/lib/mirror/domain/types.d.ts +0 -65
  335. package/dist/lib/mirror/domain/types.d.ts.map +0 -1
  336. package/dist/lib/mirror/index.d.ts +0 -6
  337. package/dist/lib/mirror/index.d.ts.map +0 -1
  338. package/dist/lib/mirror/index.js +0 -1
  339. package/dist/lib/mirror/infra/dirent-list.d.ts +0 -9
  340. package/dist/lib/mirror/infra/dirent-list.d.ts.map +0 -1
  341. package/dist/lib/mirror/infra/dirent-list.js +0 -13
  342. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +0 -7
  343. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +0 -1
  344. package/dist/lib/mirror/infra/file-system-service.adapter.js +0 -47
  345. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts +0 -14
  346. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts.map +0 -1
  347. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +0 -3
  348. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +0 -1
  349. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +0 -13
  350. package/dist/lib/mirror/infra/package-filter.d.ts +0 -8
  351. package/dist/lib/mirror/infra/package-filter.d.ts.map +0 -1
  352. package/dist/lib/mirror/infra/package-filter.js +0 -33
  353. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +0 -17
  354. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +0 -1
  355. package/dist/lib/mirror/infra/package-repository.adapter.js +0 -17
  356. package/dist/lib/mirror/infra/path-normalizer.d.ts +0 -2
  357. package/dist/lib/mirror/infra/path-normalizer.d.ts.map +0 -1
  358. package/dist/lib/mirror/infra/path-normalizer.js +0 -4
  359. package/dist/lib/mirror/infra/update-pkg.d.ts +0 -19
  360. package/dist/lib/mirror/infra/update-pkg.d.ts.map +0 -1
  361. package/dist/lib/mirror/infra/update-pkg.js +0 -156
  362. package/dist/lib/mirror/infra/workspace-packages.d.ts +0 -26
  363. package/dist/lib/mirror/infra/workspace-packages.d.ts.map +0 -1
  364. package/dist/lib/mirror/infra/workspace-packages.js +0 -170
  365. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +0 -8
  366. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +0 -1
  367. package/dist/lib/mirror/infra/workspace-service.adapter.js +0 -10
  368. package/dist/lib/mirror/presentation/reporter.d.ts +0 -25
  369. package/dist/lib/mirror/presentation/reporter.d.ts.map +0 -1
  370. package/dist/lib/mirror/presentation/reporter.js +0 -140
  371. package/dist/lib/shared/source-code/domain/text-edit.d.ts +0 -14
  372. package/dist/lib/shared/source-code/domain/text-edit.d.ts.map +0 -1
  373. package/dist/lib/shared/source-code/domain/text-edit.js +0 -30
  374. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts +0 -4
  375. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts.map +0 -1
  376. package/dist/lib/shared/source-code/infra/tsx-file-walk.js +0 -37
  377. package/dist/lib/tag/application/engine.d.ts +0 -23
  378. package/dist/lib/tag/application/engine.d.ts.map +0 -1
  379. package/dist/lib/tag/application/engine.js +0 -357
  380. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +0 -6
  381. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +0 -1
  382. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +0 -6
  383. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +0 -1
  384. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +0 -10
  385. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +0 -1
  386. package/dist/lib/tag/application/requests/tag-sync.request.js +0 -8
  387. package/dist/lib/tag/domain/types.d.ts +0 -56
  388. package/dist/lib/tag/domain/types.d.ts.map +0 -1
  389. package/dist/lib/tag/index.d.ts +0 -14
  390. package/dist/lib/tag/index.d.ts.map +0 -1
  391. package/dist/lib/tag/index.js +0 -10
  392. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts +0 -14
  393. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts.map +0 -1
  394. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +0 -3
  395. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +0 -1
  396. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +0 -4
  397. package/dist/lib/tag/infra/target-resolver.d.ts +0 -4
  398. package/dist/lib/tag/infra/target-resolver.d.ts.map +0 -1
  399. package/dist/lib/tag/infra/target-resolver.js +0 -200
  400. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +0 -3
  401. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +0 -1
  402. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +0 -4
  403. package/dist/lib/tag/presentation/colors.d.ts +0 -8
  404. package/dist/lib/tag/presentation/colors.d.ts.map +0 -1
  405. package/dist/lib/tag/presentation/colors.js +0 -9
  406. package/dist/lib/tag/presentation/tag-presenter.d.ts +0 -20
  407. package/dist/lib/tag/presentation/tag-presenter.d.ts.map +0 -1
  408. package/dist/lib/tag/presentation/tag-presenter.js +0 -92
  409. package/dist/program.d.ts +0 -4
  410. package/dist/program.d.ts.map +0 -1
  411. package/dist/program.js +0 -40
  412. /package/dist/lib/arrange/application/ports/{domain-source-parser.port.js → domain-source-parser.port.mjs} +0 -0
  413. /package/dist/lib/arrange/application/ports/{file-walker.port.js → file-walker.port.mjs} +0 -0
  414. /package/dist/lib/arrange/{infra/arrange-sync-cli-options.js → application/ports/group-file-preview.port.mjs} +0 -0
  415. /package/dist/lib/{core/application/ports/cli-io.port.js → arrange/application/requests/analyze-directory.request.mjs} +0 -0
  416. /package/dist/lib/{infra/fs-contract.js → arrange/application/requests/arrange-sync.request.mjs} +0 -0
  417. /package/dist/lib/{mirror/application/ports/file-system-service.port.js → arrange/application/requests/suggest-groups.request.mjs} +0 -0
  418. /package/dist/lib/{mirror/application/ports/mirror-sync-reporter.port.js → arrange/contracts/models.mjs} +0 -0
  419. /package/dist/lib/{mirror/application/ports/package-repository.port.js → arrange/contracts/presentation.contract.mjs} +0 -0
  420. /package/dist/lib/{mirror/application/ports/workspace-service.port.js → arrange/contracts/services.contract.mjs} +0 -0
  421. /package/dist/lib/{mirror/domain/types.js → arrange/contracts/use-cases.contract.mjs} +0 -0
  422. /package/dist/lib/{mirror/infra/mirror-sync-cli-options.js → arrange/domain/types.domain.mjs} +0 -0
  423. /package/dist/lib/{tag/application/ports/target-resolver.port.js → arrange/infra/arrange-sync-cli-options.adapter.mjs} +0 -0
  424. /package/dist/lib/{tag/application/ports/typescript-tree-walk.port.js → config/application/ports/config-loader.port.mjs} +0 -0
  425. /package/dist/lib/{tag/domain/types.js → config/domain/schema.domain.mjs} +0 -0
  426. /package/dist/lib/{tag/infra/tag-sync-cli-options.js → core/application/ports/cli-io.port.mjs} +0 -0
@@ -1,129 +0,0 @@
1
- import path from "node:path";
2
- import process from "node:process";
3
- import { Option } from "commander";
4
- import { ArrangeAnalyzeDirectoryRequestSchema } from "#lib/arrange/application/requests/analyze-directory.request";
5
- import { ArrangeSyncRunRequestSchema } from "#lib/arrange/application/requests/arrange-sync.request";
6
- import { DEFAULT_ARRANGE_TARGET } from "#lib/arrange/domain/constants";
7
- import { suggestCnGroups, summarizeGroupBucketLabels } from "#lib/arrange/domain/grouping";
8
- import { formatArray, formatCnCall } from "#lib/arrange/domain/source-text-formatters";
9
- import { printAnalyzeReport } from "#lib/arrange/presentation/report";
10
- import { consumeCliAppError } from "#lib/core/presentation/cli-executor";
11
- import { assertPathExistsOrExit, createCliContext, parseWithCliSchema, resolveWorkspaceRoot, runAsyncExitCodeUseCaseAfterParse, runSyncUseCaseAfterParse, tryLoadCodefastConfig, } from "#lib/core/presentation/create-command-handler";
12
- function withClassNameOption() {
13
- return new Option("--with-classname, --with-class-name", "Append className as final cn() argument").default(false);
14
- }
15
- function defaultTargetPath() {
16
- return path.resolve(process.cwd(), DEFAULT_ARRANGE_TARGET);
17
- }
18
- export function registerArrangeCommand(program) {
19
- const arrange = program
20
- .command("arrange")
21
- .description("Analyze and regroup Tailwind classes in cn() / tv() calls (Tailwind v4)");
22
- arrange
23
- .command("analyze")
24
- .description("Report long strings, nested cn in tv(), and related findings")
25
- .argument("[target]", "Directory or file (default: packages/ui/src/components)")
26
- .action(async (target) => {
27
- const cli = createCliContext();
28
- const resolved = target ? path.resolve(target) : defaultTargetPath();
29
- if (!assertPathExistsOrExit(resolved, cli)) {
30
- return;
31
- }
32
- const rootOutcome = resolveWorkspaceRoot(cli);
33
- if (!consumeCliAppError(cli.logger, rootOutcome)) {
34
- return;
35
- }
36
- const rootDir = rootOutcome.value;
37
- const loadedOutcome = await tryLoadCodefastConfig(cli, rootDir);
38
- if (!consumeCliAppError(cli.logger, loadedOutcome)) {
39
- return;
40
- }
41
- const parsed = parseWithCliSchema(ArrangeAnalyzeDirectoryRequestSchema, {
42
- analyzeRootPath: resolved,
43
- });
44
- runSyncUseCaseAfterParse(cli, parsed, (input) => cli.arrange.analyzeDirectory(input), (report) => printAnalyzeReport(resolved, report, cli.logger));
45
- });
46
- arrange
47
- .command("preview")
48
- .description("Dry-run: print suggested replacements without writing files")
49
- .argument("[target]", "Directory or file (default: packages/ui/src/components)")
50
- .addOption(withClassNameOption())
51
- .option("--cn-import <spec>", "Override module specifier when adding cn import")
52
- .action(async (target, opts) => {
53
- const cli = createCliContext();
54
- const resolved = target ? path.resolve(target) : defaultTargetPath();
55
- if (!assertPathExistsOrExit(resolved, cli)) {
56
- return;
57
- }
58
- const rootOutcome = resolveWorkspaceRoot(cli);
59
- if (!consumeCliAppError(cli.logger, rootOutcome)) {
60
- return;
61
- }
62
- const rootDir = rootOutcome.value;
63
- const loadedOutcome = await tryLoadCodefastConfig(cli, rootDir);
64
- if (!consumeCliAppError(cli.logger, loadedOutcome)) {
65
- return;
66
- }
67
- const parsed = parseWithCliSchema(ArrangeSyncRunRequestSchema, {
68
- rootDir,
69
- targetPath: resolved,
70
- write: false,
71
- withClassName: opts.withClassName,
72
- cnImport: opts.cnImport,
73
- config: loadedOutcome.value.config.arrange ?? {},
74
- });
75
- await runAsyncExitCodeUseCaseAfterParse(cli, parsed, (input) => cli.arrange.runArrangeSync(input));
76
- });
77
- arrange
78
- .command("apply")
79
- .description("Apply grouping and cn-in-tv unwrap edits to files")
80
- .argument("[target]", "Directory or file (default: packages/ui/src/components)")
81
- .addOption(withClassNameOption())
82
- .option("--cn-import <spec>", "Override module specifier when adding cn import")
83
- .action(async (target, opts) => {
84
- const cli = createCliContext();
85
- const resolved = target ? path.resolve(target) : defaultTargetPath();
86
- if (!assertPathExistsOrExit(resolved, cli)) {
87
- return;
88
- }
89
- const rootOutcome = resolveWorkspaceRoot(cli);
90
- if (!consumeCliAppError(cli.logger, rootOutcome)) {
91
- return;
92
- }
93
- const rootDir = rootOutcome.value;
94
- const loadedOutcome = await tryLoadCodefastConfig(cli, rootDir);
95
- if (!consumeCliAppError(cli.logger, loadedOutcome)) {
96
- return;
97
- }
98
- const parsed = parseWithCliSchema(ArrangeSyncRunRequestSchema, {
99
- rootDir,
100
- targetPath: resolved,
101
- write: true,
102
- withClassName: opts.withClassName,
103
- cnImport: opts.cnImport,
104
- config: loadedOutcome.value.config.arrange ?? {},
105
- });
106
- await runAsyncExitCodeUseCaseAfterParse(cli, parsed, (input) => cli.arrange.runArrangeSync(input));
107
- });
108
- arrange
109
- .command("group")
110
- .description("Try grouping on a pasted class string (stdout: cn(...) or tv array with --tv)")
111
- .argument("[tokens...]", "Class tokens (quote a single string if it contains spaces)")
112
- .option("--tv", "Emit tv()-style array instead of cn() call", false)
113
- .addOption(withClassNameOption())
114
- .action((tokens, opts) => {
115
- const cli = createCliContext();
116
- const inlineClasses = tokens.join(" ").trim();
117
- if (!inlineClasses) {
118
- cli.logger.err('Pass a class string. Example: codefast arrange group "flex gap-2 text-sm rounded-md"\n');
119
- process.exitCode = 1;
120
- return;
121
- }
122
- const groups = suggestCnGroups(inlineClasses);
123
- const result = opts.tv
124
- ? formatArray(groups)
125
- : formatCnCall(groups, { trailingClassName: !!opts.withClassName });
126
- cli.logger.out(result);
127
- cli.logger.out(`// Buckets: ${JSON.stringify(summarizeGroupBucketLabels(groups))}`);
128
- });
129
- }
@@ -1,4 +0,0 @@
1
- import { Command } from "commander";
2
- export declare function packageArgToRelative(rootDir: string, arg: string | undefined): string | undefined;
3
- export declare function registerMirrorCommand(program: Command): void;
4
- //# sourceMappingURL=mirror.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mirror.d.ts","sourceRoot":"","sources":["../../src/commands/mirror.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAmBjG;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4C5D"}
@@ -1,75 +0,0 @@
1
- import { realpathSync } from "node:fs";
2
- import path from "node:path";
3
- import process from "node:process";
4
- import { messageFromCaughtUnknown } from "#lib/core/application/utils/caught-unknown-message";
5
- import { consumeCliAppError } from "#lib/core/presentation/cli-executor";
6
- import { createCliContext, parseWithCliSchema, resolveWorkspaceRoot, runAsyncExitCodeUseCaseAfterParse, tryLoadCodefastConfig, } from "#lib/core/presentation/create-command-handler";
7
- import { MirrorSyncRunRequestSchema } from "#lib/mirror/application/requests/mirror-sync.request";
8
- function tryRealpath(entryPath) {
9
- try {
10
- return realpathSync.native(entryPath);
11
- }
12
- catch {
13
- return path.resolve(entryPath);
14
- }
15
- }
16
- function normalizePath(relPath) {
17
- return relPath.split(path.sep).join("/").replace(/\\/g, "/");
18
- }
19
- export function packageArgToRelative(rootDir, arg) {
20
- if (!arg) {
21
- return undefined;
22
- }
23
- const rootReal = tryRealpath(path.resolve(rootDir));
24
- const cwdReal = tryRealpath(process.cwd());
25
- const resolved = path.isAbsolute(arg) ? path.resolve(arg) : path.resolve(cwdReal, arg);
26
- const targetReal = tryRealpath(resolved);
27
- const rel = path.relative(rootReal, targetReal);
28
- const normalized = normalizePath(rel);
29
- if (normalized.startsWith("..") ||
30
- path.isAbsolute(normalized) ||
31
- normalized === "" ||
32
- normalized === ".") {
33
- throw new Error(`Package path must be a subdirectory under monorepo root: ${rootDir}`);
34
- }
35
- return normalized;
36
- }
37
- export function registerMirrorCommand(program) {
38
- const mirror = program
39
- .command("mirror")
40
- .description("Keep package manifests aligned with what you ship");
41
- mirror
42
- .command("sync")
43
- .description("Write package.json exports from dist/ for workspace packages")
44
- .argument("[package]", "Optional package path relative to repo root (e.g. packages/ui)")
45
- .option("-v, --verbose", "Print extra diagnostics", false)
46
- .action(async function (pkg, options) {
47
- const globals = this.optsWithGlobals();
48
- const cli = createCliContext();
49
- const rootOutcome = resolveWorkspaceRoot(cli);
50
- if (!consumeCliAppError(cli.logger, rootOutcome)) {
51
- return;
52
- }
53
- const rootDir = rootOutcome.value;
54
- let packageFilter;
55
- try {
56
- packageFilter = packageArgToRelative(rootDir, pkg);
57
- }
58
- catch (caughtPathError) {
59
- this.error(messageFromCaughtUnknown(caughtPathError));
60
- return;
61
- }
62
- const loadedOutcome = await tryLoadCodefastConfig(cli, rootDir);
63
- if (!consumeCliAppError(cli.logger, loadedOutcome)) {
64
- return;
65
- }
66
- const parsed = parseWithCliSchema(MirrorSyncRunRequestSchema, {
67
- rootDir,
68
- config: loadedOutcome.value.config.mirror ?? {},
69
- verbose: options.verbose,
70
- noColor: globals.color === false,
71
- packageFilter,
72
- });
73
- await runAsyncExitCodeUseCaseAfterParse(cli, parsed, (input) => cli.mirror.runMirrorSync(input));
74
- });
75
- }
@@ -1,3 +0,0 @@
1
- import { Command } from "commander";
2
- export declare function registerTagCommand(program: Command): void;
3
- //# sourceMappingURL=tag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../src/commands/tag.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAqCzD"}
@@ -1,41 +0,0 @@
1
- import path from "node:path";
2
- import process from "node:process";
3
- import { consumeCliAppError } from "#lib/core/presentation/cli-executor";
4
- import { createCliContext, parseWithCliSchema, resolveTagWorkspaceRoot, tryLoadCodefastConfig, } from "#lib/core/presentation/create-command-handler";
5
- import { TagSyncRunRequestSchema } from "#lib/tag/application/requests/tag-sync.request";
6
- import { createTagProgressListener, presentTagSyncCliResult, } from "#lib/tag/presentation/tag-presenter";
7
- export function registerTagCommand(program) {
8
- program
9
- .command("tag")
10
- .alias("annotate")
11
- .description("Add @since <version> JSDoc tags to exported declarations")
12
- .argument("[target]", "Directory or file to annotate (default: auto-discover workspace packages)")
13
- .option("--dry-run", "Show summary without writing files", false)
14
- .action(async (target, options) => {
15
- const cli = createCliContext();
16
- const rootDir = resolveTagWorkspaceRoot(cli);
17
- const loadedOutcome = await tryLoadCodefastConfig(cli, rootDir);
18
- if (!consumeCliAppError(cli.logger, loadedOutcome)) {
19
- return;
20
- }
21
- const tagConfig = loadedOutcome.value.config.tag ?? {};
22
- const parsed = parseWithCliSchema(TagSyncRunRequestSchema, {
23
- rootDir,
24
- write: !options.dryRun,
25
- targetPath: target ? path.resolve(target) : undefined,
26
- skipPackages: tagConfig.skipPackages,
27
- config: tagConfig,
28
- });
29
- if (!consumeCliAppError(cli.logger, parsed)) {
30
- return;
31
- }
32
- const tagOutcome = await cli.tag.runTagSync({
33
- ...parsed.value,
34
- listener: createTagProgressListener((line) => cli.logger.out(line)),
35
- });
36
- if (!consumeCliAppError(cli.logger, tagOutcome)) {
37
- return;
38
- }
39
- process.exitCode = presentTagSyncCliResult(cli.logger, tagOutcome.value, rootDir);
40
- });
41
- }
@@ -1,17 +0,0 @@
1
- import { type AppError } from "#lib/core/domain/errors";
2
- import { type Result } from "#lib/core/domain/result";
3
- import type { CliFs } from "#lib/core/application/ports/cli-io.port";
4
- import type { DomainSourceParserPort } from "#lib/arrange/application/ports/domain-source-parser.port";
5
- import type { ArrangeAnalyzeDirectoryRequest } from "#lib/arrange/application/requests/analyze-directory.request";
6
- import type { FileWalkerPort } from "#lib/arrange/application/ports/file-walker.port";
7
- import type { AnalyzeReport } from "#lib/arrange/domain/types";
8
- export type AnalyzeDirectoryDeps = {
9
- readonly fs: CliFs;
10
- readonly fileWalker: FileWalkerPort;
11
- readonly domainSourceParser: DomainSourceParserPort;
12
- };
13
- /**
14
- * Orchestrates filesystem + parse ports, delegates analysis rules to the domain service.
15
- */
16
- export declare function analyzeDirectory(request: ArrangeAnalyzeDirectoryRequest, deps: AnalyzeDirectoryDeps): Result<AnalyzeReport, AppError>;
17
- //# sourceMappingURL=analyze.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../../src/lib/arrange/application/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AAErE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AACvG,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAClH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAM/D,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;CACrD,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,8BAA8B,EACvC,IAAI,EAAE,oBAAoB,GACzB,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAiBjC"}
@@ -1,24 +0,0 @@
1
- import { appError } from "#lib/core/domain/errors";
2
- import { err, ok } from "#lib/core/domain/result";
3
- import { messageFromCaughtUnknown } from "#lib/core/application/utils/caught-unknown-message";
4
- import { accumulateAnalyzeReportForSourceFile, createEmptyAnalyzeReport, } from "#lib/arrange/domain/arrange-analyze.service";
5
- /**
6
- * Orchestrates filesystem + parse ports, delegates analysis rules to the domain service.
7
- */
8
- export function analyzeDirectory(request, deps) {
9
- const report = createEmptyAnalyzeReport();
10
- try {
11
- const files = deps.fs.statSync(request.analyzeRootPath).isDirectory()
12
- ? deps.fileWalker.walkTypeScriptFiles(request.analyzeRootPath, deps.fs)
13
- : [request.analyzeRootPath];
14
- for (const filePath of files) {
15
- const sourceText = deps.fs.readFileSync(filePath, "utf8");
16
- const domainSf = deps.domainSourceParser.parseDomainSourceFile(filePath, sourceText);
17
- accumulateAnalyzeReportForSourceFile(report, domainSf, sourceText, filePath);
18
- }
19
- return ok(report);
20
- }
21
- catch (caughtError) {
22
- return err(appError("INFRA_FAILURE", messageFromCaughtUnknown(caughtError), caughtError));
23
- }
24
- }
@@ -1,17 +0,0 @@
1
- import type { CliLogger } from "#lib/core/application/ports/cli-io.port";
2
- import type { GroupFileUnwrapPlan, GroupFileWorkPlan } from "#lib/arrange/domain/arrange-grouping.service";
3
- import type { DomainCallExpression, DomainSourceFile } from "#lib/arrange/domain/ast/ast-node.model";
4
- import type { PlannedGroupEdit } from "#lib/arrange/domain/types";
5
- export declare function printGroupFilePreview(logger: CliLogger, args: {
6
- filePath: string;
7
- reportTotal: number;
8
- cnInTvNoReplacement: number;
9
- cnInTvCalls: readonly DomainCallExpression[];
10
- unwrapReplacementByCall: ReadonlyMap<DomainCallExpression, string>;
11
- sourceText: string;
12
- domainSf: DomainSourceFile;
13
- unwrapEdits: readonly GroupFileUnwrapPlan[];
14
- plannedGroupEdits: readonly PlannedGroupEdit[];
15
- }): void;
16
- export declare function printGroupFilePreviewFromWork(logger: CliLogger, work: GroupFileWorkPlan): void;
17
- //# sourceMappingURL=group-file-preview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"group-file-preview.d.ts","sourceRoot":"","sources":["../../../../src/lib/arrange/application/group-file-preview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,8CAA8C,CAAC;AAEtD,OAAO,KAAK,EACV,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE;IACJ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC7C,uBAAuB,EAAE,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACnE,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC5C,iBAAiB,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAChD,GACA,IAAI,CA6CN;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAY9F"}
@@ -1,46 +0,0 @@
1
- import { lineOf } from "#lib/arrange/domain/ast/ast-helpers";
2
- export function printGroupFilePreview(logger, args) {
3
- const { out } = logger;
4
- const { filePath, reportTotal, cnInTvNoReplacement, cnInTvCalls, unwrapReplacementByCall, sourceText, domainSf, unwrapEdits, plannedGroupEdits, } = args;
5
- let header = `\n── ${filePath} (${reportTotal} site(s)`;
6
- if (cnInTvNoReplacement > 0) {
7
- header += `; plus ${cnInTvNoReplacement} cn() inside tv left unchanged (0 args)`;
8
- }
9
- header += `) ──`;
10
- out(header);
11
- for (const call of cnInTvCalls) {
12
- const replacement = unwrapReplacementByCall.get(call);
13
- if (replacement === undefined) {
14
- out(` Line ${lineOf(domainSf, call)} [tv \u2283 cn]: cn(...) has no arguments — skipped`);
15
- continue;
16
- }
17
- const start = call.pos;
18
- const end = call.end;
19
- if (sourceText.slice(start, end) === replacement) {
20
- continue;
21
- }
22
- out(` Line ${lineOf(domainSf, call)} [tv \u2283 cn \u2192 string/array]:`);
23
- out(` ${replacement.split("\n").join("\n ")}`);
24
- }
25
- if (unwrapEdits.length > 0 && plannedGroupEdits.length > 0) {
26
- out(" ([cn] / [tv] / [JSX className] lines below reflect content after unwrap of cn inside tv.)");
27
- }
28
- for (const plan of plannedGroupEdits) {
29
- out(` Line ${lineOf(plan.lineSf, plan.reportNode)} [${plan.label}]:`);
30
- out(` ${plan.replacement.split("\n").join("\n ")}`);
31
- out(` // Buckets: ${JSON.stringify(plan.bucketSummary)}`);
32
- }
33
- }
34
- export function printGroupFilePreviewFromWork(logger, work) {
35
- printGroupFilePreview(logger, {
36
- filePath: work.filePath,
37
- reportTotal: work.reportTotal,
38
- cnInTvNoReplacement: work.cnInTvNoReplacement,
39
- cnInTvCalls: work.cnInTvCalls,
40
- unwrapReplacementByCall: work.unwrapReplacementByCall,
41
- sourceText: work.sourceText,
42
- domainSf: work.domainSfForLineNumbers,
43
- unwrapEdits: work.unwrapEdits,
44
- plannedGroupEdits: work.plannedGroupEdits,
45
- });
46
- }
@@ -1,5 +0,0 @@
1
- import type { CliFs, CliLogger } from "#lib/core/application/ports/cli-io.port";
2
- import type { DomainSourceParserPort } from "#lib/arrange/application/ports/domain-source-parser.port";
3
- import type { ArrangeGroupFileOptions, GroupFileResult } from "#lib/arrange/domain/types";
4
- export declare function groupFile(filePath: string, options: ArrangeGroupFileOptions, fs: CliFs, logger: CliLogger, domainSourceParser: DomainSourceParserPort): GroupFileResult;
5
- //# sourceMappingURL=group-file.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"group-file.d.ts","sourceRoot":"","sources":["../../../../src/lib/arrange/application/group-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AACvG,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAc1F,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,EAChC,EAAE,EAAE,KAAK,EACT,MAAM,EAAE,SAAS,EACjB,kBAAkB,EAAE,sBAAsB,GACzC,eAAe,CAgDjB"}
@@ -1,40 +0,0 @@
1
- import { buildGroupFileUnwrapState, countPersistedGroupFileEdits, groupFileDryRunNoEdits, groupFileEditsTouchJsxCn, groupFilePreviewTotals, groupFileWorkHasNothingToReport, mergeGroupFileBodyText, tryBuildGroupFileWorkPlan, } from "#lib/arrange/domain/arrange-grouping.service";
2
- import { ensureCnImport } from "#lib/arrange/domain/imports";
3
- import { printGroupFilePreviewFromWork } from "#lib/arrange/application/group-file-preview";
4
- export function groupFile(filePath, options, fs, logger, domainSourceParser) {
5
- const sourceText = fs.readFileSync(filePath, "utf8");
6
- const domainSfInitial = domainSourceParser.parseDomainSourceFile(filePath, sourceText);
7
- const unwrap = buildGroupFileUnwrapState(domainSfInitial, sourceText);
8
- const domainSfGrouped = domainSourceParser.parseDomainSourceFile(filePath, unwrap.textAfterUnwrap);
9
- const work = tryBuildGroupFileWorkPlan({
10
- filePath,
11
- sourceText,
12
- domainSfInitial,
13
- domainSfGrouped,
14
- withClassName: options.withClassName,
15
- unwrap,
16
- });
17
- if (work === null) {
18
- return groupFileDryRunNoEdits(filePath);
19
- }
20
- if (!options.write) {
21
- if (groupFileWorkHasNothingToReport(work)) {
22
- return groupFileDryRunNoEdits(filePath);
23
- }
24
- printGroupFilePreviewFromWork(logger, work);
25
- return groupFilePreviewTotals(work);
26
- }
27
- const persistedEditCount = countPersistedGroupFileEdits(work);
28
- let newText = mergeGroupFileBodyText(work);
29
- if (persistedEditCount > 0) {
30
- if (groupFileEditsTouchJsxCn(work)) {
31
- newText = ensureCnImport(domainSourceParser.parseDomainSourceFile(filePath, newText), options.cnImport);
32
- }
33
- fs.writeFileSync(filePath, newText, "utf8");
34
- }
35
- return {
36
- filePath,
37
- totalFound: persistedEditCount + work.cnInTvNoReplacement,
38
- changed: persistedEditCount,
39
- };
40
- }
@@ -1,5 +0,0 @@
1
- import type { DomainSourceFile } from "#lib/arrange/domain/ast/ast-node.model";
2
- export interface DomainSourceParserPort {
3
- parseDomainSourceFile(filePath: string, sourceText: string): DomainSourceFile;
4
- }
5
- //# sourceMappingURL=domain-source-parser.port.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"domain-source-parser.port.d.ts","sourceRoot":"","sources":["../../../../../src/lib/arrange/application/ports/domain-source-parser.port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE/E,MAAM,WAAW,sBAAsB;IACrC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAAC;CAC/E"}
@@ -1,5 +0,0 @@
1
- import type { CliFs } from "#lib/core/application/ports/cli-io.port";
2
- export interface FileWalkerPort {
3
- walkTypeScriptFiles(rootDirectoryPath: string, fs: CliFs): string[];
4
- }
5
- //# sourceMappingURL=file-walker.port.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-walker.port.d.ts","sourceRoot":"","sources":["../../../../../src/lib/arrange/application/ports/file-walker.port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AAErE,MAAM,WAAW,cAAc;IAC7B,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;CACrE"}
@@ -1,6 +0,0 @@
1
- import { z } from "zod";
2
- export declare const ArrangeAnalyzeDirectoryRequestSchema: z.ZodObject<{
3
- analyzeRootPath: z.ZodString;
4
- }, z.core.$strip>;
5
- export type ArrangeAnalyzeDirectoryRequest = z.infer<typeof ArrangeAnalyzeDirectoryRequestSchema>;
6
- //# sourceMappingURL=analyze-directory.request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analyze-directory.request.d.ts","sourceRoot":"","sources":["../../../../../src/lib/arrange/application/requests/analyze-directory.request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,oCAAoC;;iBAE/C,CAAC;AAEH,MAAM,MAAM,8BAA8B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oCAAoC,CAAC,CAAC"}
@@ -1,4 +0,0 @@
1
- import { z } from "zod";
2
- export const ArrangeAnalyzeDirectoryRequestSchema = z.object({
3
- analyzeRootPath: z.string().min(1, "analyzeRootPath is required"),
4
- });
@@ -1,18 +0,0 @@
1
- import { z } from "zod";
2
- export declare const ArrangeSyncRunRequestSchema: z.ZodObject<{
3
- rootDir: z.ZodString;
4
- targetPath: z.ZodString;
5
- write: z.ZodBoolean;
6
- withClassName: z.ZodOptional<z.ZodBoolean>;
7
- cnImport: z.ZodOptional<z.ZodString>;
8
- config: z.ZodOptional<z.ZodUnknown>;
9
- }, z.core.$strip>;
10
- export type ArrangeSyncRunRequest = z.infer<typeof ArrangeSyncRunRequestSchema>;
11
- export declare const ArrangeRunTargetRequestSchema: z.ZodObject<{
12
- targetPath: z.ZodString;
13
- write: z.ZodBoolean;
14
- withClassName: z.ZodOptional<z.ZodBoolean>;
15
- cnImport: z.ZodOptional<z.ZodString>;
16
- }, z.core.$strip>;
17
- export type ArrangeRunTargetRequest = z.infer<typeof ArrangeRunTargetRequestSchema>;
18
- //# sourceMappingURL=arrange-sync.request.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"arrange-sync.request.d.ts","sourceRoot":"","sources":["../../../../../src/lib/arrange/application/requests/arrange-sync.request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,2BAA2B;;;;;;;iBAOtC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,6BAA6B;;;;;iBAKxC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC"}
@@ -1,15 +0,0 @@
1
- import { z } from "zod";
2
- export const ArrangeSyncRunRequestSchema = z.object({
3
- rootDir: z.string().min(1),
4
- targetPath: z.string().min(1),
5
- write: z.boolean(),
6
- withClassName: z.boolean().optional(),
7
- cnImport: z.string().optional(),
8
- config: z.unknown().optional(),
9
- });
10
- export const ArrangeRunTargetRequestSchema = z.object({
11
- targetPath: z.string().min(1),
12
- write: z.boolean(),
13
- withClassName: z.boolean().optional(),
14
- cnImport: z.string().optional(),
15
- });
@@ -1,19 +0,0 @@
1
- import { type AppError } from "#lib/core/domain/errors";
2
- import { type Result } from "#lib/core/domain/result";
3
- import type { CliFs, CliLogger } from "#lib/core/application/ports/cli-io.port";
4
- import type { DomainSourceParserPort } from "#lib/arrange/application/ports/domain-source-parser.port";
5
- import type { FileWalkerPort } from "#lib/arrange/application/ports/file-walker.port";
6
- import type { ArrangeRunTargetRequest, ArrangeSyncRunRequest } from "#lib/arrange/application/requests/arrange-sync.request";
7
- import type { ArrangeRunResult } from "#lib/arrange/domain/types";
8
- export type ArrangeSyncDeps = {
9
- readonly fs: CliFs;
10
- readonly logger: CliLogger;
11
- readonly fileWalker: FileWalkerPort;
12
- readonly domainSourceParser: DomainSourceParserPort;
13
- };
14
- export declare function runOnTarget(request: ArrangeRunTargetRequest, deps: ArrangeSyncDeps): Result<ArrangeRunResult, AppError>;
15
- /**
16
- * Preview/apply orchestration: resolves target path, runs grouping pipeline, optional hook.
17
- */
18
- export declare function runArrangeSync(request: ArrangeSyncRunRequest, deps: ArrangeSyncDeps): Promise<Result<number, AppError>>;
19
- //# sourceMappingURL=run-target.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-target.d.ts","sourceRoot":"","sources":["../../../../src/lib/arrange/application/run-target.ts"],"names":[],"mappings":"AAEA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGhF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AACvG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EACV,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,wDAAwD,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,sBAAsB,CAAC;CACrD,CAAC;AAEF,wBAAgB,WAAW,CACzB,OAAO,EAAE,uBAAuB,EAChC,IAAI,EAAE,eAAe,GACpB,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAsDpC;AAiBD;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CA+BnC"}
@@ -1,85 +0,0 @@
1
- import path from "node:path";
2
- import { appError } from "#lib/core/domain/errors";
3
- import { err, ok } from "#lib/core/domain/result";
4
- import { messageFromCaughtUnknown } from "#lib/core/application/utils/caught-unknown-message";
5
- import { groupFile } from "#lib/arrange/application/group-file";
6
- export function runOnTarget(request, deps) {
7
- const { out } = deps.logger;
8
- const { fs, fileWalker, domainSourceParser } = deps;
9
- if (!fs.existsSync(request.targetPath)) {
10
- return err(appError("NOT_FOUND", `Not found: ${request.targetPath}`));
11
- }
12
- const filePaths = fs.statSync(request.targetPath).isDirectory()
13
- ? fileWalker.walkTypeScriptFiles(request.targetPath, fs)
14
- : [request.targetPath];
15
- const modifiedFiles = [];
16
- let totalFound = 0;
17
- let totalChanged = 0;
18
- const groupOptions = {
19
- write: request.write,
20
- withClassName: !!request.withClassName,
21
- cnImport: request.cnImport,
22
- };
23
- for (const filePath of filePaths) {
24
- const result = groupFile(filePath, groupOptions, fs, deps.logger, domainSourceParser);
25
- totalFound += result.totalFound;
26
- totalChanged += result.changed;
27
- if (result.changed > 0) {
28
- modifiedFiles.push(result.filePath);
29
- }
30
- }
31
- out(`\nTotal: ${filePaths.length} file(s), ${totalFound} site(s) (cn/tv/JSX className) to review.`);
32
- if (request.write) {
33
- out(`Applied: ${totalChanged} site(s) updated.`);
34
- }
35
- else {
36
- out(`(Run "apply" to write changes, or "pnpm cli:arrange-apply" / "pnpm exec codefast arrange apply")`);
37
- }
38
- const showCascadeHint = request.write ? totalChanged > 0 : totalFound > 0;
39
- if (showCascadeHint) {
40
- out("Note: class order may change across concern groups — smoke-test the UI if you rely on cascade order.");
41
- }
42
- return ok({
43
- filePaths,
44
- modifiedFiles,
45
- totalFound,
46
- totalChanged,
47
- });
48
- }
49
- async function runArrangeOnAfterWriteHook(logger, hook, modifiedFiles) {
50
- if (!hook || modifiedFiles.length === 0) {
51
- return;
52
- }
53
- try {
54
- await hook({ files: modifiedFiles });
55
- }
56
- catch (caughtHookError) {
57
- logger.err(`[arrange] onAfterWrite hook failed: ${messageFromCaughtUnknown(caughtHookError)}`);
58
- }
59
- }
60
- /**
61
- * Preview/apply orchestration: resolves target path, runs grouping pipeline, optional hook.
62
- */
63
- export async function runArrangeSync(request, deps) {
64
- void request.rootDir;
65
- const resolvedTarget = path.resolve(request.targetPath);
66
- const runTargetRequest = {
67
- targetPath: resolvedTarget,
68
- write: request.write,
69
- withClassName: request.withClassName,
70
- cnImport: request.cnImport,
71
- };
72
- const runOutcome = runOnTarget(runTargetRequest, deps);
73
- if (!runOutcome.ok) {
74
- if (runOutcome.error.code === "NOT_FOUND") {
75
- deps.logger.err(runOutcome.error.message);
76
- }
77
- return runOutcome;
78
- }
79
- const result = runOutcome.value;
80
- if (request.write && result.modifiedFiles.length > 0) {
81
- const arrangeConfig = request.config;
82
- await runArrangeOnAfterWriteHook(deps.logger, arrangeConfig?.onAfterWrite, result.modifiedFiles);
83
- }
84
- return ok(0);
85
- }
@@ -1,12 +0,0 @@
1
- /**
2
- * Rich domain: Tailwind/cn/tv analysis rules (counts, long literals, nested cn in tv).
3
- * Pure orchestration of domain collectors and invariants — no I/O.
4
- */
5
- import type { AnalyzeReport } from "#lib/arrange/domain/types";
6
- import { type DomainSourceFile } from "#lib/arrange/domain/ast/ast-node.model";
7
- export declare function createEmptyAnalyzeReport(): AnalyzeReport;
8
- /**
9
- * Accumulates findings for one parsed source file into `report` (mutates report).
10
- */
11
- export declare function accumulateAnalyzeReportForSourceFile(report: AnalyzeReport, domainSf: DomainSourceFile, sourceText: string, filePath: string): void;
12
- //# sourceMappingURL=arrange-analyze.service.d.ts.map