@codefast/cli 0.3.13-canary.1 → 0.3.13-canary.2

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 (324) hide show
  1. package/dist/bin.d.ts +3 -0
  2. package/dist/bin.d.ts.map +1 -0
  3. package/dist/{bin.mjs → bin.js} +1 -4
  4. package/dist/commands/arrange.d.ts +3 -0
  5. package/dist/commands/arrange.d.ts.map +1 -0
  6. package/dist/commands/arrange.js +129 -0
  7. package/dist/commands/mirror.d.ts +4 -0
  8. package/dist/commands/mirror.d.ts.map +1 -0
  9. package/dist/commands/mirror.js +75 -0
  10. package/dist/commands/tag.d.ts +3 -0
  11. package/dist/commands/tag.d.ts.map +1 -0
  12. package/dist/commands/tag.js +41 -0
  13. package/dist/lib/arrange/application/analyze.d.ts +17 -0
  14. package/dist/lib/arrange/application/analyze.d.ts.map +1 -0
  15. package/dist/lib/arrange/application/analyze.js +24 -0
  16. package/dist/lib/arrange/application/group-file-preview.d.ts +17 -0
  17. package/dist/lib/arrange/application/group-file-preview.d.ts.map +1 -0
  18. package/dist/lib/arrange/application/group-file-preview.js +46 -0
  19. package/dist/lib/arrange/application/group-file.d.ts +5 -0
  20. package/dist/lib/arrange/application/group-file.d.ts.map +1 -0
  21. package/dist/lib/arrange/application/group-file.js +40 -0
  22. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +5 -0
  23. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +1 -0
  24. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +5 -0
  25. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +1 -0
  26. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +6 -0
  27. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +1 -0
  28. package/dist/lib/arrange/application/requests/analyze-directory.request.js +4 -0
  29. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +18 -0
  30. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +1 -0
  31. package/dist/lib/arrange/application/requests/arrange-sync.request.js +15 -0
  32. package/dist/lib/arrange/application/run-target.d.ts +19 -0
  33. package/dist/lib/arrange/application/run-target.d.ts.map +1 -0
  34. package/dist/lib/arrange/application/run-target.js +85 -0
  35. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +12 -0
  36. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +1 -0
  37. package/dist/lib/arrange/domain/arrange-analyze.service.js +116 -0
  38. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +53 -0
  39. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +1 -0
  40. package/dist/lib/arrange/domain/arrange-grouping.service.js +106 -0
  41. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts +28 -0
  42. package/dist/lib/arrange/domain/ast/ast-helpers.d.ts.map +1 -0
  43. package/dist/lib/arrange/domain/ast/ast-helpers.js +130 -0
  44. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +179 -0
  45. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +1 -0
  46. package/dist/lib/arrange/domain/ast/ast-node.model.js +210 -0
  47. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts +7 -0
  48. package/dist/lib/arrange/domain/ast/collectors-cn.d.ts.map +1 -0
  49. package/dist/lib/arrange/domain/ast/collectors-cn.js +70 -0
  50. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts +4 -0
  51. package/dist/lib/arrange/domain/ast/collectors-jsx.d.ts.map +1 -0
  52. package/dist/lib/arrange/domain/ast/collectors-jsx.js +21 -0
  53. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts +13 -0
  54. package/dist/lib/arrange/domain/ast/collectors-tv.d.ts.map +1 -0
  55. package/dist/lib/arrange/domain/ast/collectors-tv.js +302 -0
  56. package/dist/lib/arrange/domain/ast/targets.d.ts +8 -0
  57. package/dist/lib/arrange/domain/ast/targets.d.ts.map +1 -0
  58. package/dist/lib/arrange/domain/ast/targets.js +147 -0
  59. package/dist/lib/arrange/domain/constants.d.ts +68 -0
  60. package/dist/lib/arrange/domain/constants.d.ts.map +1 -0
  61. package/dist/lib/arrange/domain/constants.js +180 -0
  62. package/dist/lib/arrange/domain/errors.d.ts +14 -0
  63. package/dist/lib/arrange/domain/errors.d.ts.map +1 -0
  64. package/dist/lib/arrange/domain/errors.js +16 -0
  65. package/dist/lib/arrange/domain/grouping.d.ts +41 -0
  66. package/dist/lib/arrange/domain/grouping.d.ts.map +1 -0
  67. package/dist/lib/arrange/domain/grouping.js +307 -0
  68. package/dist/lib/arrange/domain/imports.d.ts +7 -0
  69. package/dist/lib/arrange/domain/imports.d.ts.map +1 -0
  70. package/dist/lib/arrange/domain/imports.js +80 -0
  71. package/dist/lib/arrange/domain/source-text-formatters.d.ts +16 -0
  72. package/dist/lib/arrange/domain/source-text-formatters.d.ts.map +1 -0
  73. package/dist/lib/arrange/domain/source-text-formatters.js +55 -0
  74. package/dist/lib/arrange/domain/tokenizer.d.ts +45 -0
  75. package/dist/lib/arrange/domain/tokenizer.d.ts.map +1 -0
  76. package/dist/lib/arrange/domain/tokenizer.js +466 -0
  77. package/dist/lib/arrange/domain/types.d.ts +112 -0
  78. package/dist/lib/arrange/domain/types.d.ts.map +1 -0
  79. package/dist/lib/arrange/domain/types.js +7 -0
  80. package/dist/lib/arrange/index.d.ts +45 -0
  81. package/dist/lib/arrange/index.d.ts.map +1 -0
  82. package/dist/lib/arrange/index.js +41 -0
  83. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts +14 -0
  84. package/dist/lib/arrange/infra/arrange-sync-cli-options.d.ts.map +1 -0
  85. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +11 -0
  86. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +1 -0
  87. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +19 -0
  88. package/dist/lib/arrange/infra/ensure-cn-import.d.ts +3 -0
  89. package/dist/lib/arrange/infra/ensure-cn-import.d.ts.map +1 -0
  90. package/dist/lib/arrange/infra/ensure-cn-import.js +6 -0
  91. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +8 -0
  92. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +1 -0
  93. package/dist/lib/arrange/infra/file-walker.adapter.js +17 -0
  94. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts +8 -0
  95. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.d.ts.map +1 -0
  96. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.js +25 -0
  97. package/dist/lib/arrange/infra/ts-ast-translator.d.ts +10 -0
  98. package/dist/lib/arrange/infra/ts-ast-translator.d.ts.map +1 -0
  99. package/dist/lib/arrange/infra/ts-ast-translator.js +363 -0
  100. package/dist/lib/arrange/presentation/formatters.d.ts +3 -0
  101. package/dist/lib/arrange/presentation/formatters.d.ts.map +1 -0
  102. package/dist/lib/arrange/presentation/formatters.js +2 -0
  103. package/dist/lib/arrange/presentation/report.d.ts +4 -0
  104. package/dist/lib/arrange/presentation/report.d.ts.map +1 -0
  105. package/dist/lib/arrange/presentation/report.js +37 -0
  106. package/dist/lib/config/domain/schema.d.ts +50 -0
  107. package/dist/lib/config/domain/schema.d.ts.map +1 -0
  108. package/dist/lib/config/domain/schema.js +43 -0
  109. package/dist/lib/config/index.d.ts +4 -0
  110. package/dist/lib/config/index.d.ts.map +1 -0
  111. package/dist/lib/config/index.js +2 -0
  112. package/dist/lib/config/infra/loader.d.ts +11 -0
  113. package/dist/lib/config/infra/loader.d.ts.map +1 -0
  114. package/dist/lib/config/infra/loader.js +90 -0
  115. package/dist/lib/core/application/architecture-boundaries.d.ts +19 -0
  116. package/dist/lib/core/application/architecture-boundaries.d.ts.map +1 -0
  117. package/dist/lib/core/application/architecture-boundaries.js +263 -0
  118. package/dist/lib/core/application/ports/cli-io.port.d.ts +27 -0
  119. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +1 -0
  120. package/dist/lib/core/application/schema-parse.d.ts +8 -0
  121. package/dist/lib/core/application/schema-parse.d.ts.map +1 -0
  122. package/dist/lib/core/application/schema-parse.js +20 -0
  123. package/dist/lib/core/application/utils/caught-unknown-message.d.ts +6 -0
  124. package/dist/lib/core/application/utils/caught-unknown-message.d.ts.map +1 -0
  125. package/dist/lib/core/application/utils/caught-unknown-message.js +34 -0
  126. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts +5 -0
  127. package/dist/lib/core/application/utils/verbose-diagnostics.d.ts.map +1 -0
  128. package/dist/lib/core/application/utils/verbose-diagnostics.js +7 -0
  129. package/dist/lib/core/domain/errors.d.ts +11 -0
  130. package/dist/lib/core/domain/errors.d.ts.map +1 -0
  131. package/dist/lib/core/domain/errors.js +9 -0
  132. package/dist/lib/core/domain/result.d.ts +15 -0
  133. package/dist/lib/core/domain/result.d.ts.map +1 -0
  134. package/dist/lib/core/domain/result.js +9 -0
  135. package/dist/lib/core/infra/container.d.ts +34 -0
  136. package/dist/lib/core/infra/container.d.ts.map +1 -0
  137. package/dist/lib/core/infra/container.js +65 -0
  138. package/dist/lib/core/infra/logging-decorator.d.ts +12 -0
  139. package/dist/lib/core/infra/logging-decorator.d.ts.map +1 -0
  140. package/dist/lib/core/infra/logging-decorator.js +75 -0
  141. package/dist/lib/core/presentation/cli-executor.d.ts +33 -0
  142. package/dist/lib/core/presentation/cli-executor.d.ts.map +1 -0
  143. package/dist/lib/core/presentation/cli-executor.js +73 -0
  144. package/dist/lib/core/presentation/create-command-handler.d.ts +20 -0
  145. package/dist/lib/core/presentation/create-command-handler.d.ts.map +1 -0
  146. package/dist/lib/core/presentation/create-command-handler.js +70 -0
  147. package/dist/lib/core/presentation/format-app-error.d.ts +6 -0
  148. package/dist/lib/core/presentation/format-app-error.d.ts.map +1 -0
  149. package/dist/lib/core/presentation/format-app-error.js +19 -0
  150. package/dist/lib/infra/caught-unknown-message.d.ts +2 -0
  151. package/dist/lib/infra/caught-unknown-message.d.ts.map +1 -0
  152. package/dist/lib/infra/caught-unknown-message.js +1 -0
  153. package/dist/lib/infra/config-reporter.d.ts +4 -0
  154. package/dist/lib/infra/config-reporter.d.ts.map +1 -0
  155. package/dist/lib/infra/config-reporter.js +9 -0
  156. package/dist/lib/infra/fs-contract.d.ts +2 -0
  157. package/dist/lib/infra/fs-contract.d.ts.map +1 -0
  158. package/dist/lib/infra/fs-contract.js +1 -0
  159. package/dist/lib/infra/node-io.d.ts +4 -0
  160. package/dist/lib/infra/node-io.d.ts.map +1 -0
  161. package/dist/lib/infra/node-io.js +27 -0
  162. package/dist/lib/infra/workspace/repo-root.d.ts +7 -0
  163. package/dist/lib/infra/workspace/repo-root.d.ts.map +1 -0
  164. package/dist/lib/infra/workspace/repo-root.js +23 -0
  165. package/dist/lib/mirror/application/engine.d.ts +10 -0
  166. package/dist/lib/mirror/application/engine.d.ts.map +1 -0
  167. package/dist/lib/mirror/application/engine.js +271 -0
  168. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +6 -0
  169. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +1 -0
  170. package/dist/lib/mirror/application/ports/file-system-service.port.js +1 -0
  171. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +27 -0
  172. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +1 -0
  173. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.js +1 -0
  174. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +16 -0
  175. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +1 -0
  176. package/dist/lib/mirror/application/ports/package-repository.port.js +1 -0
  177. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +7 -0
  178. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +1 -0
  179. package/dist/lib/mirror/application/ports/workspace-service.port.js +1 -0
  180. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +10 -0
  181. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +1 -0
  182. package/dist/lib/mirror/application/requests/mirror-sync.request.js +8 -0
  183. package/dist/lib/mirror/application/sync.d.ts +19 -0
  184. package/dist/lib/mirror/application/sync.d.ts.map +1 -0
  185. package/dist/lib/mirror/application/sync.js +168 -0
  186. package/dist/lib/mirror/domain/constants.d.ts +6 -0
  187. package/dist/lib/mirror/domain/constants.d.ts.map +1 -0
  188. package/dist/lib/mirror/domain/constants.js +5 -0
  189. package/dist/lib/mirror/domain/errors.d.ts +10 -0
  190. package/dist/lib/mirror/domain/errors.d.ts.map +1 -0
  191. package/dist/lib/mirror/domain/errors.js +12 -0
  192. package/dist/lib/mirror/domain/types.d.ts +65 -0
  193. package/dist/lib/mirror/domain/types.d.ts.map +1 -0
  194. package/dist/lib/mirror/domain/types.js +1 -0
  195. package/dist/lib/mirror/index.d.ts +6 -0
  196. package/dist/lib/mirror/index.d.ts.map +1 -0
  197. package/dist/lib/mirror/index.js +1 -0
  198. package/dist/lib/mirror/infra/dirent-list.d.ts +9 -0
  199. package/dist/lib/mirror/infra/dirent-list.d.ts.map +1 -0
  200. package/dist/lib/mirror/infra/dirent-list.js +13 -0
  201. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +7 -0
  202. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +1 -0
  203. package/dist/lib/mirror/infra/file-system-service.adapter.js +47 -0
  204. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts +14 -0
  205. package/dist/lib/mirror/infra/mirror-sync-cli-options.d.ts.map +1 -0
  206. package/dist/lib/mirror/infra/mirror-sync-cli-options.js +1 -0
  207. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +3 -0
  208. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +1 -0
  209. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +13 -0
  210. package/dist/lib/mirror/infra/package-filter.d.ts +8 -0
  211. package/dist/lib/mirror/infra/package-filter.d.ts.map +1 -0
  212. package/dist/lib/mirror/infra/package-filter.js +33 -0
  213. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +17 -0
  214. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +1 -0
  215. package/dist/lib/mirror/infra/package-repository.adapter.js +17 -0
  216. package/dist/lib/mirror/infra/path-normalizer.d.ts +2 -0
  217. package/dist/lib/mirror/infra/path-normalizer.d.ts.map +1 -0
  218. package/dist/lib/mirror/infra/path-normalizer.js +4 -0
  219. package/dist/lib/mirror/infra/update-pkg.d.ts +19 -0
  220. package/dist/lib/mirror/infra/update-pkg.d.ts.map +1 -0
  221. package/dist/lib/mirror/infra/update-pkg.js +156 -0
  222. package/dist/lib/mirror/infra/workspace-packages.d.ts +26 -0
  223. package/dist/lib/mirror/infra/workspace-packages.d.ts.map +1 -0
  224. package/dist/lib/mirror/infra/workspace-packages.js +170 -0
  225. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +8 -0
  226. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +1 -0
  227. package/dist/lib/mirror/infra/workspace-service.adapter.js +10 -0
  228. package/dist/lib/mirror/presentation/reporter.d.ts +25 -0
  229. package/dist/lib/mirror/presentation/reporter.d.ts.map +1 -0
  230. package/dist/lib/mirror/presentation/reporter.js +140 -0
  231. package/dist/lib/shared/source-code/domain/text-edit.d.ts +14 -0
  232. package/dist/lib/shared/source-code/domain/text-edit.d.ts.map +1 -0
  233. package/dist/lib/shared/source-code/domain/text-edit.js +30 -0
  234. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts +4 -0
  235. package/dist/lib/shared/source-code/infra/tsx-file-walk.d.ts.map +1 -0
  236. package/dist/lib/shared/source-code/infra/tsx-file-walk.js +37 -0
  237. package/dist/lib/tag/application/engine.d.ts +23 -0
  238. package/dist/lib/tag/application/engine.d.ts.map +1 -0
  239. package/dist/lib/tag/application/engine.js +357 -0
  240. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +6 -0
  241. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +1 -0
  242. package/dist/lib/tag/application/ports/target-resolver.port.js +1 -0
  243. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +6 -0
  244. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +1 -0
  245. package/dist/lib/tag/application/ports/typescript-tree-walk.port.js +1 -0
  246. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +10 -0
  247. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +1 -0
  248. package/dist/lib/tag/application/requests/tag-sync.request.js +8 -0
  249. package/dist/lib/tag/domain/types.d.ts +56 -0
  250. package/dist/lib/tag/domain/types.d.ts.map +1 -0
  251. package/dist/lib/tag/domain/types.js +1 -0
  252. package/dist/lib/tag/index.d.ts +14 -0
  253. package/dist/lib/tag/index.d.ts.map +1 -0
  254. package/dist/lib/tag/index.js +10 -0
  255. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts +14 -0
  256. package/dist/lib/tag/infra/tag-sync-cli-options.d.ts.map +1 -0
  257. package/dist/lib/tag/infra/tag-sync-cli-options.js +1 -0
  258. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +3 -0
  259. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +1 -0
  260. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +4 -0
  261. package/dist/lib/tag/infra/target-resolver.d.ts +4 -0
  262. package/dist/lib/tag/infra/target-resolver.d.ts.map +1 -0
  263. package/dist/lib/tag/infra/target-resolver.js +200 -0
  264. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +3 -0
  265. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +1 -0
  266. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +4 -0
  267. package/dist/lib/tag/presentation/colors.d.ts +8 -0
  268. package/dist/lib/tag/presentation/colors.d.ts.map +1 -0
  269. package/dist/lib/tag/presentation/colors.js +9 -0
  270. package/dist/lib/tag/presentation/tag-presenter.d.ts +20 -0
  271. package/dist/lib/tag/presentation/tag-presenter.d.ts.map +1 -0
  272. package/dist/lib/tag/presentation/tag-presenter.js +92 -0
  273. package/dist/program.d.ts +4 -0
  274. package/dist/program.d.ts.map +1 -0
  275. package/dist/program.js +40 -0
  276. package/package.json +8 -5
  277. package/dist/commands/arrange.mjs +0 -107
  278. package/dist/commands/mirror.mjs +0 -66
  279. package/dist/commands/tag.mjs +0 -58
  280. package/dist/lib/arrange/application/analyze.mjs +0 -92
  281. package/dist/lib/arrange/application/group-file.mjs +0 -113
  282. package/dist/lib/arrange/application/run-target.mjs +0 -65
  283. package/dist/lib/arrange/domain/ast/ast-helpers.mjs +0 -115
  284. package/dist/lib/arrange/domain/ast/collectors-cn.mjs +0 -61
  285. package/dist/lib/arrange/domain/ast/collectors-jsx.mjs +0 -20
  286. package/dist/lib/arrange/domain/ast/collectors-tv.mjs +0 -170
  287. package/dist/lib/arrange/domain/ast/targets.mjs +0 -106
  288. package/dist/lib/arrange/domain/constants.mjs +0 -169
  289. package/dist/lib/arrange/domain/errors.mjs +0 -19
  290. package/dist/lib/arrange/domain/grouping.mjs +0 -235
  291. package/dist/lib/arrange/domain/imports.mjs +0 -54
  292. package/dist/lib/arrange/domain/tokenizer.mjs +0 -216
  293. package/dist/lib/arrange/index.mjs +0 -15
  294. package/dist/lib/arrange/infra/walk.mjs +0 -33
  295. package/dist/lib/arrange/presentation/formatters.mjs +0 -52
  296. package/dist/lib/arrange/presentation/report.mjs +0 -24
  297. package/dist/lib/config/domain/schema.mjs +0 -25
  298. package/dist/lib/config/index.mjs +0 -3
  299. package/dist/lib/config/infra/loader.mjs +0 -78
  300. package/dist/lib/infra/caught-unknown-message.mjs +0 -20
  301. package/dist/lib/infra/config-reporter.mjs +0 -10
  302. package/dist/lib/infra/node-io.mjs +0 -30
  303. package/dist/lib/infra/workspace/repo-root.mjs +0 -22
  304. package/dist/lib/mirror/application/engine.mjs +0 -248
  305. package/dist/lib/mirror/application/sync.mjs +0 -162
  306. package/dist/lib/mirror/domain/constants.mjs +0 -12
  307. package/dist/lib/mirror/domain/errors.mjs +0 -15
  308. package/dist/lib/mirror/index.mjs +0 -2
  309. package/dist/lib/mirror/infra/dirent-list.mjs +0 -14
  310. package/dist/lib/mirror/infra/package-filter.mjs +0 -26
  311. package/dist/lib/mirror/infra/path-normalizer.mjs +0 -7
  312. package/dist/lib/mirror/infra/update-pkg.mjs +0 -105
  313. package/dist/lib/mirror/infra/workspace-packages.mjs +0 -159
  314. package/dist/lib/mirror/presentation/reporter.mjs +0 -111
  315. package/dist/lib/tag/application/engine.mjs +0 -287
  316. package/dist/lib/tag/index.mjs +0 -4
  317. package/dist/lib/tag/infra/target-resolver.mjs +0 -170
  318. package/dist/lib/tag/presentation/colors.mjs +0 -12
  319. package/dist/lib/tag/presentation/tag-presenter.mjs +0 -63
  320. package/dist/program.mjs +0 -34
  321. /package/dist/lib/arrange/{domain/types.mjs → application/ports/domain-source-parser.port.js} +0 -0
  322. /package/dist/lib/{infra/fs-contract.mjs → arrange/application/ports/file-walker.port.js} +0 -0
  323. /package/dist/lib/{mirror/domain/types.mjs → arrange/infra/arrange-sync-cli-options.js} +0 -0
  324. /package/dist/lib/{tag/domain/types.mjs → core/application/ports/cli-io.port.js} +0 -0
package/dist/bin.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
@@ -1,8 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { runCli } from "./program.mjs";
3
2
  import process from "node:process";
4
- //#region src/bin.ts
3
+ import { runCli } from "#program";
5
4
  const code = await runCli(process.argv);
6
5
  process.exit(code);
7
- //#endregion
8
- export {};
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerArrangeCommand(program: Command): void;
3
+ //# sourceMappingURL=arrange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"arrange.d.ts","sourceRoot":"","sources":["../../src/commands/arrange.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkI7D"}
@@ -0,0 +1,129 @@
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
+ }
@@ -0,0 +1,4 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,75 @@
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
+ }
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerTagCommand(program: Command): void;
3
+ //# sourceMappingURL=tag.d.ts.map
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,41 @@
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
+ }
@@ -0,0 +1,17 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,24 @@
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
+ }
@@ -0,0 +1,17 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,46 @@
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
+ }
@@ -0,0 +1,5 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,40 @@
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
+ }
@@ -0,0 +1,5 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,5 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,6 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,4 @@
1
+ import { z } from "zod";
2
+ export const ArrangeAnalyzeDirectoryRequestSchema = z.object({
3
+ analyzeRootPath: z.string().min(1, "analyzeRootPath is required"),
4
+ });
@@ -0,0 +1,18 @@
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
@@ -0,0 +1 @@
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"}
@@ -0,0 +1,15 @@
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
+ });
@@ -0,0 +1,19 @@
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
@@ -0,0 +1 @@
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"}