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

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 (364) hide show
  1. package/README.md +1 -1
  2. package/dist/bin.d.ts +3 -0
  3. package/dist/bin.d.ts.map +1 -0
  4. package/dist/{bin.mjs → bin.js} +1 -4
  5. package/dist/commands/arrange.d.ts +3 -0
  6. package/dist/commands/arrange.d.ts.map +1 -0
  7. package/dist/commands/arrange.js +108 -0
  8. package/dist/commands/mirror.d.ts +3 -0
  9. package/dist/commands/mirror.d.ts.map +1 -0
  10. package/dist/commands/mirror.js +36 -0
  11. package/dist/commands/tag.d.ts +3 -0
  12. package/dist/commands/tag.d.ts.map +1 -0
  13. package/dist/commands/tag.js +44 -0
  14. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +5 -0
  15. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +1 -0
  16. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +5 -0
  17. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +1 -0
  18. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +6 -0
  19. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +1 -0
  20. package/dist/lib/arrange/application/requests/analyze-directory.request.js +4 -0
  21. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +18 -0
  22. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +1 -0
  23. package/dist/lib/arrange/application/requests/arrange-sync.request.js +15 -0
  24. package/dist/lib/arrange/application/requests/suggest-groups.request.d.ts +8 -0
  25. package/dist/lib/arrange/application/requests/suggest-groups.request.d.ts.map +1 -0
  26. package/dist/lib/arrange/application/requests/suggest-groups.request.js +8 -0
  27. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.d.ts +17 -0
  28. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.d.ts.map +1 -0
  29. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.js +24 -0
  30. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.d.ts +17 -0
  31. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.d.ts.map +1 -0
  32. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.js +46 -0
  33. package/dist/lib/arrange/application/use-cases/group-file.use-case.d.ts +5 -0
  34. package/dist/lib/arrange/application/use-cases/group-file.use-case.d.ts.map +1 -0
  35. package/dist/lib/arrange/application/use-cases/group-file.use-case.js +40 -0
  36. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.d.ts +19 -0
  37. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.d.ts.map +1 -0
  38. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.js +85 -0
  39. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.d.ts +7 -0
  40. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.d.ts.map +1 -0
  41. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.js +10 -0
  42. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +12 -0
  43. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +1 -0
  44. package/dist/lib/arrange/domain/arrange-analyze.service.js +116 -0
  45. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +53 -0
  46. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +1 -0
  47. package/dist/lib/arrange/domain/arrange-grouping.service.js +106 -0
  48. package/dist/lib/arrange/domain/ast/ast-helpers.helper.d.ts +28 -0
  49. package/dist/lib/arrange/domain/ast/ast-helpers.helper.d.ts.map +1 -0
  50. package/dist/lib/arrange/domain/ast/ast-helpers.helper.js +130 -0
  51. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +179 -0
  52. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +1 -0
  53. package/dist/lib/arrange/domain/ast/ast-node.model.js +210 -0
  54. package/dist/lib/arrange/domain/ast/collectors-cn.collector.d.ts +7 -0
  55. package/dist/lib/arrange/domain/ast/collectors-cn.collector.d.ts.map +1 -0
  56. package/dist/lib/arrange/domain/ast/collectors-cn.collector.js +70 -0
  57. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.d.ts +4 -0
  58. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.d.ts.map +1 -0
  59. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.js +21 -0
  60. package/dist/lib/arrange/domain/ast/collectors-tv.collector.d.ts +13 -0
  61. package/dist/lib/arrange/domain/ast/collectors-tv.collector.d.ts.map +1 -0
  62. package/dist/lib/arrange/domain/ast/collectors-tv.collector.js +302 -0
  63. package/dist/lib/arrange/domain/ast/targets.model.d.ts +8 -0
  64. package/dist/lib/arrange/domain/ast/targets.model.d.ts.map +1 -0
  65. package/dist/lib/arrange/domain/ast/targets.model.js +147 -0
  66. package/dist/lib/arrange/domain/constants.domain.d.ts +70 -0
  67. package/dist/lib/arrange/domain/constants.domain.d.ts.map +1 -0
  68. package/dist/lib/arrange/domain/constants.domain.js +182 -0
  69. package/dist/lib/arrange/domain/errors.domain.d.ts +14 -0
  70. package/dist/lib/arrange/domain/errors.domain.d.ts.map +1 -0
  71. package/dist/lib/arrange/domain/errors.domain.js +16 -0
  72. package/dist/lib/arrange/domain/grouping.domain.d.ts +41 -0
  73. package/dist/lib/arrange/domain/grouping.domain.d.ts.map +1 -0
  74. package/dist/lib/arrange/domain/grouping.domain.js +371 -0
  75. package/dist/lib/arrange/domain/imports.domain.d.ts +7 -0
  76. package/dist/lib/arrange/domain/imports.domain.d.ts.map +1 -0
  77. package/dist/lib/arrange/domain/imports.domain.js +80 -0
  78. package/dist/lib/arrange/domain/source-text-formatters.formatter.d.ts +16 -0
  79. package/dist/lib/arrange/domain/source-text-formatters.formatter.d.ts.map +1 -0
  80. package/dist/lib/arrange/domain/source-text-formatters.formatter.js +55 -0
  81. package/dist/lib/arrange/domain/tokenizer.util.d.ts +45 -0
  82. package/dist/lib/arrange/domain/tokenizer.util.d.ts.map +1 -0
  83. package/dist/lib/arrange/domain/tokenizer.util.js +469 -0
  84. package/dist/lib/arrange/domain/types.domain.d.ts +115 -0
  85. package/dist/lib/arrange/domain/types.domain.d.ts.map +1 -0
  86. package/dist/lib/arrange/domain/types.domain.js +10 -0
  87. package/dist/lib/arrange/index.d.ts +45 -0
  88. package/dist/lib/arrange/index.d.ts.map +1 -0
  89. package/dist/lib/arrange/index.js +41 -0
  90. package/dist/lib/arrange/infra/arrange-sync-cli-options.adapter.d.ts +14 -0
  91. package/dist/lib/arrange/infra/arrange-sync-cli-options.adapter.d.ts.map +1 -0
  92. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +11 -0
  93. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +1 -0
  94. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +19 -0
  95. package/dist/lib/arrange/infra/ensure-cn-import.adapter.d.ts +3 -0
  96. package/dist/lib/arrange/infra/ensure-cn-import.adapter.d.ts.map +1 -0
  97. package/dist/lib/arrange/infra/ensure-cn-import.adapter.js +6 -0
  98. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +8 -0
  99. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +1 -0
  100. package/dist/lib/arrange/infra/file-walker.adapter.js +17 -0
  101. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.d.ts +8 -0
  102. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.d.ts.map +1 -0
  103. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.js +25 -0
  104. package/dist/lib/arrange/infra/ts-ast-translator.adapter.d.ts +10 -0
  105. package/dist/lib/arrange/infra/ts-ast-translator.adapter.d.ts.map +1 -0
  106. package/dist/lib/arrange/infra/ts-ast-translator.adapter.js +363 -0
  107. package/dist/lib/arrange/presentation/arrange-prelude.presenter.d.ts +14 -0
  108. package/dist/lib/arrange/presentation/arrange-prelude.presenter.d.ts.map +1 -0
  109. package/dist/lib/arrange/presentation/arrange-prelude.presenter.js +24 -0
  110. package/dist/lib/arrange/presentation/formatters.presenter.d.ts +3 -0
  111. package/dist/lib/arrange/presentation/formatters.presenter.d.ts.map +1 -0
  112. package/dist/lib/arrange/presentation/formatters.presenter.js +2 -0
  113. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.d.ts +4 -0
  114. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.d.ts.map +1 -0
  115. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.js +4 -0
  116. package/dist/lib/arrange/presentation/report.presenter.d.ts +4 -0
  117. package/dist/lib/arrange/presentation/report.presenter.d.ts.map +1 -0
  118. package/dist/lib/arrange/presentation/report.presenter.js +37 -0
  119. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.d.ts +2 -0
  120. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.d.ts.map +1 -0
  121. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.js +7 -0
  122. package/dist/lib/config/domain/schema.domain.d.ts +50 -0
  123. package/dist/lib/config/domain/schema.domain.d.ts.map +1 -0
  124. package/dist/lib/config/domain/schema.domain.js +43 -0
  125. package/dist/lib/config/index.d.ts +4 -0
  126. package/dist/lib/config/index.d.ts.map +1 -0
  127. package/dist/lib/config/index.js +2 -0
  128. package/dist/lib/config/infra/loader.adapter.d.ts +11 -0
  129. package/dist/lib/config/infra/loader.adapter.d.ts.map +1 -0
  130. package/dist/lib/config/infra/loader.adapter.js +90 -0
  131. package/dist/lib/core/application/architecture-boundaries.policy.d.ts +19 -0
  132. package/dist/lib/core/application/architecture-boundaries.policy.d.ts.map +1 -0
  133. package/dist/lib/core/application/architecture-boundaries.policy.js +370 -0
  134. package/dist/lib/core/application/ports/cli-io.port.d.ts +31 -0
  135. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +1 -0
  136. package/dist/lib/core/application/schema-parse.util.d.ts +8 -0
  137. package/dist/lib/core/application/schema-parse.util.d.ts.map +1 -0
  138. package/dist/lib/core/application/schema-parse.util.js +20 -0
  139. package/dist/lib/core/application/utils/caught-unknown-message.util.d.ts +6 -0
  140. package/dist/lib/core/application/utils/caught-unknown-message.util.d.ts.map +1 -0
  141. package/dist/lib/core/application/utils/caught-unknown-message.util.js +34 -0
  142. package/dist/lib/core/application/utils/verbose-diagnostics.util.d.ts +5 -0
  143. package/dist/lib/core/application/utils/verbose-diagnostics.util.d.ts.map +1 -0
  144. package/dist/lib/core/application/utils/verbose-diagnostics.util.js +7 -0
  145. package/dist/lib/core/domain/errors.domain.d.ts +11 -0
  146. package/dist/lib/core/domain/errors.domain.d.ts.map +1 -0
  147. package/dist/lib/core/domain/errors.domain.js +9 -0
  148. package/dist/lib/core/domain/result.model.d.ts +17 -0
  149. package/dist/lib/core/domain/result.model.d.ts.map +1 -0
  150. package/dist/lib/core/domain/result.model.js +15 -0
  151. package/dist/lib/core/infra/container.adapter.d.ts +58 -0
  152. package/dist/lib/core/infra/container.adapter.d.ts.map +1 -0
  153. package/dist/lib/core/infra/container.adapter.js +80 -0
  154. package/dist/lib/core/infra/logging-decorator.adapter.d.ts +12 -0
  155. package/dist/lib/core/infra/logging-decorator.adapter.d.ts.map +1 -0
  156. package/dist/lib/core/infra/logging-decorator.adapter.js +75 -0
  157. package/dist/lib/core/presentation/cli-executor.presenter.d.ts +33 -0
  158. package/dist/lib/core/presentation/cli-executor.presenter.d.ts.map +1 -0
  159. package/dist/lib/core/presentation/cli-executor.presenter.js +73 -0
  160. package/dist/lib/core/presentation/format-app-error.presenter.d.ts +6 -0
  161. package/dist/lib/core/presentation/format-app-error.presenter.d.ts.map +1 -0
  162. package/dist/lib/core/presentation/format-app-error.presenter.js +19 -0
  163. package/dist/lib/core/presentation/global-cli-options.presenter.d.ts +9 -0
  164. package/dist/lib/core/presentation/global-cli-options.presenter.d.ts.map +1 -0
  165. package/dist/lib/core/presentation/global-cli-options.presenter.js +8 -0
  166. package/dist/lib/core/presentation/load-codefast-config.presenter.d.ts +8 -0
  167. package/dist/lib/core/presentation/load-codefast-config.presenter.d.ts.map +1 -0
  168. package/dist/lib/core/presentation/load-codefast-config.presenter.js +15 -0
  169. package/dist/lib/core/presentation/parse-cli-schema.presenter.d.ts +5 -0
  170. package/dist/lib/core/presentation/parse-cli-schema.presenter.d.ts.map +1 -0
  171. package/dist/lib/core/presentation/parse-cli-schema.presenter.js +4 -0
  172. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.d.ts +6 -0
  173. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.d.ts.map +1 -0
  174. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.js +17 -0
  175. package/dist/lib/core/presentation/workspace-root-strict.presenter.d.ts +5 -0
  176. package/dist/lib/core/presentation/workspace-root-strict.presenter.d.ts.map +1 -0
  177. package/dist/lib/core/presentation/workspace-root-strict.presenter.js +12 -0
  178. package/dist/lib/infra/config-reporter.adapter.d.ts +4 -0
  179. package/dist/lib/infra/config-reporter.adapter.d.ts.map +1 -0
  180. package/dist/lib/infra/config-reporter.adapter.js +9 -0
  181. package/dist/lib/infra/fs-contract.port.d.ts +2 -0
  182. package/dist/lib/infra/fs-contract.port.d.ts.map +1 -0
  183. package/dist/lib/infra/fs-contract.port.js +1 -0
  184. package/dist/lib/infra/node-io.adapter.d.ts +4 -0
  185. package/dist/lib/infra/node-io.adapter.d.ts.map +1 -0
  186. package/dist/lib/infra/node-io.adapter.js +37 -0
  187. package/dist/lib/infra/workspace/repo-root.adapter.d.ts +7 -0
  188. package/dist/lib/infra/workspace/repo-root.adapter.d.ts.map +1 -0
  189. package/dist/lib/infra/workspace/repo-root.adapter.js +23 -0
  190. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +6 -0
  191. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +1 -0
  192. package/dist/lib/mirror/application/ports/file-system-service.port.js +1 -0
  193. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +27 -0
  194. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +1 -0
  195. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.js +1 -0
  196. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +16 -0
  197. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +1 -0
  198. package/dist/lib/mirror/application/ports/package-repository.port.js +1 -0
  199. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +7 -0
  200. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +1 -0
  201. package/dist/lib/mirror/application/ports/workspace-service.port.js +1 -0
  202. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +10 -0
  203. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +1 -0
  204. package/dist/lib/mirror/application/requests/mirror-sync.request.js +8 -0
  205. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.d.ts +10 -0
  206. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.d.ts.map +1 -0
  207. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.js +271 -0
  208. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.d.ts +19 -0
  209. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.d.ts.map +1 -0
  210. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.js +168 -0
  211. package/dist/lib/mirror/domain/constants.domain.d.ts +6 -0
  212. package/dist/lib/mirror/domain/constants.domain.d.ts.map +1 -0
  213. package/dist/lib/mirror/domain/constants.domain.js +5 -0
  214. package/dist/lib/mirror/domain/errors.domain.d.ts +10 -0
  215. package/dist/lib/mirror/domain/errors.domain.d.ts.map +1 -0
  216. package/dist/lib/mirror/domain/errors.domain.js +12 -0
  217. package/dist/lib/mirror/domain/types.domain.d.ts +65 -0
  218. package/dist/lib/mirror/domain/types.domain.d.ts.map +1 -0
  219. package/dist/lib/mirror/domain/types.domain.js +1 -0
  220. package/dist/lib/mirror/index.d.ts +6 -0
  221. package/dist/lib/mirror/index.d.ts.map +1 -0
  222. package/dist/lib/mirror/index.js +1 -0
  223. package/dist/lib/mirror/infra/dirent-list.adapter.d.ts +9 -0
  224. package/dist/lib/mirror/infra/dirent-list.adapter.d.ts.map +1 -0
  225. package/dist/lib/mirror/infra/dirent-list.adapter.js +13 -0
  226. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +7 -0
  227. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +1 -0
  228. package/dist/lib/mirror/infra/file-system-service.adapter.js +47 -0
  229. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.d.ts +14 -0
  230. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.d.ts.map +1 -0
  231. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.js +1 -0
  232. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +3 -0
  233. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +1 -0
  234. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +13 -0
  235. package/dist/lib/mirror/infra/package-filter.adapter.d.ts +8 -0
  236. package/dist/lib/mirror/infra/package-filter.adapter.d.ts.map +1 -0
  237. package/dist/lib/mirror/infra/package-filter.adapter.js +33 -0
  238. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +17 -0
  239. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +1 -0
  240. package/dist/lib/mirror/infra/package-repository.adapter.js +17 -0
  241. package/dist/lib/mirror/infra/path-normalizer.adapter.d.ts +2 -0
  242. package/dist/lib/mirror/infra/path-normalizer.adapter.d.ts.map +1 -0
  243. package/dist/lib/mirror/infra/path-normalizer.adapter.js +4 -0
  244. package/dist/lib/mirror/infra/update-pkg.adapter.d.ts +19 -0
  245. package/dist/lib/mirror/infra/update-pkg.adapter.d.ts.map +1 -0
  246. package/dist/lib/mirror/infra/update-pkg.adapter.js +156 -0
  247. package/dist/lib/mirror/infra/workspace-packages.adapter.d.ts +26 -0
  248. package/dist/lib/mirror/infra/workspace-packages.adapter.d.ts.map +1 -0
  249. package/dist/lib/mirror/infra/workspace-packages.adapter.js +170 -0
  250. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +8 -0
  251. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +1 -0
  252. package/dist/lib/mirror/infra/workspace-service.adapter.js +10 -0
  253. package/dist/lib/mirror/presentation/mirror-prelude.presenter.d.ts +17 -0
  254. package/dist/lib/mirror/presentation/mirror-prelude.presenter.d.ts.map +1 -0
  255. package/dist/lib/mirror/presentation/mirror-prelude.presenter.js +35 -0
  256. package/dist/lib/mirror/presentation/reporter.presenter.d.ts +25 -0
  257. package/dist/lib/mirror/presentation/reporter.presenter.d.ts.map +1 -0
  258. package/dist/lib/mirror/presentation/reporter.presenter.js +140 -0
  259. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.d.ts +11 -0
  260. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.d.ts.map +1 -0
  261. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.js +27 -0
  262. package/dist/lib/shared/source-code/domain/text-edit.model.d.ts +14 -0
  263. package/dist/lib/shared/source-code/domain/text-edit.model.d.ts.map +1 -0
  264. package/dist/lib/shared/source-code/domain/text-edit.model.js +30 -0
  265. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.d.ts +4 -0
  266. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.d.ts.map +1 -0
  267. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.js +37 -0
  268. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +6 -0
  269. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +1 -0
  270. package/dist/lib/tag/application/ports/target-resolver.port.js +1 -0
  271. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +6 -0
  272. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +1 -0
  273. package/dist/lib/tag/application/ports/typescript-tree-walk.port.js +1 -0
  274. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +10 -0
  275. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +1 -0
  276. package/dist/lib/tag/application/requests/tag-sync.request.js +8 -0
  277. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.d.ts +23 -0
  278. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.d.ts.map +1 -0
  279. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.js +357 -0
  280. package/dist/lib/tag/domain/types.domain.d.ts +56 -0
  281. package/dist/lib/tag/domain/types.domain.d.ts.map +1 -0
  282. package/dist/lib/tag/domain/types.domain.js +1 -0
  283. package/dist/lib/tag/index.d.ts +14 -0
  284. package/dist/lib/tag/index.d.ts.map +1 -0
  285. package/dist/lib/tag/index.js +10 -0
  286. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.d.ts +14 -0
  287. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.d.ts.map +1 -0
  288. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.js +1 -0
  289. package/dist/lib/tag/infra/tag-target-candidates.adapter.d.ts +4 -0
  290. package/dist/lib/tag/infra/tag-target-candidates.adapter.d.ts.map +1 -0
  291. package/dist/lib/tag/infra/tag-target-candidates.adapter.js +200 -0
  292. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +3 -0
  293. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +1 -0
  294. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +4 -0
  295. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +3 -0
  296. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +1 -0
  297. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +4 -0
  298. package/dist/lib/tag/presentation/colors.presenter.d.ts +8 -0
  299. package/dist/lib/tag/presentation/colors.presenter.d.ts.map +1 -0
  300. package/dist/lib/tag/presentation/colors.presenter.js +9 -0
  301. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.d.ts +8 -0
  302. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.d.ts.map +1 -0
  303. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.js +10 -0
  304. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.d.ts +8 -0
  305. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.d.ts.map +1 -0
  306. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.js +10 -0
  307. package/dist/lib/tag/presentation/tag-prelude.presenter.d.ts +15 -0
  308. package/dist/lib/tag/presentation/tag-prelude.presenter.d.ts.map +1 -0
  309. package/dist/lib/tag/presentation/tag-prelude.presenter.js +31 -0
  310. package/dist/lib/tag/presentation/tag-sync.presenter.d.ts +20 -0
  311. package/dist/lib/tag/presentation/tag-sync.presenter.d.ts.map +1 -0
  312. package/dist/lib/tag/presentation/tag-sync.presenter.js +92 -0
  313. package/dist/program.d.ts +4 -0
  314. package/dist/program.d.ts.map +1 -0
  315. package/dist/program.js +40 -0
  316. package/package.json +8 -5
  317. package/dist/commands/arrange.mjs +0 -107
  318. package/dist/commands/mirror.mjs +0 -66
  319. package/dist/commands/tag.mjs +0 -58
  320. package/dist/lib/arrange/application/analyze.mjs +0 -92
  321. package/dist/lib/arrange/application/group-file.mjs +0 -113
  322. package/dist/lib/arrange/application/run-target.mjs +0 -65
  323. package/dist/lib/arrange/domain/ast/ast-helpers.mjs +0 -115
  324. package/dist/lib/arrange/domain/ast/collectors-cn.mjs +0 -61
  325. package/dist/lib/arrange/domain/ast/collectors-jsx.mjs +0 -20
  326. package/dist/lib/arrange/domain/ast/collectors-tv.mjs +0 -170
  327. package/dist/lib/arrange/domain/ast/targets.mjs +0 -106
  328. package/dist/lib/arrange/domain/constants.mjs +0 -169
  329. package/dist/lib/arrange/domain/errors.mjs +0 -19
  330. package/dist/lib/arrange/domain/grouping.mjs +0 -235
  331. package/dist/lib/arrange/domain/imports.mjs +0 -54
  332. package/dist/lib/arrange/domain/tokenizer.mjs +0 -216
  333. package/dist/lib/arrange/index.mjs +0 -15
  334. package/dist/lib/arrange/infra/walk.mjs +0 -33
  335. package/dist/lib/arrange/presentation/formatters.mjs +0 -52
  336. package/dist/lib/arrange/presentation/report.mjs +0 -24
  337. package/dist/lib/config/domain/schema.mjs +0 -25
  338. package/dist/lib/config/index.mjs +0 -3
  339. package/dist/lib/config/infra/loader.mjs +0 -78
  340. package/dist/lib/infra/caught-unknown-message.mjs +0 -20
  341. package/dist/lib/infra/config-reporter.mjs +0 -10
  342. package/dist/lib/infra/node-io.mjs +0 -30
  343. package/dist/lib/infra/workspace/repo-root.mjs +0 -22
  344. package/dist/lib/mirror/application/engine.mjs +0 -248
  345. package/dist/lib/mirror/application/sync.mjs +0 -162
  346. package/dist/lib/mirror/domain/constants.mjs +0 -12
  347. package/dist/lib/mirror/domain/errors.mjs +0 -15
  348. package/dist/lib/mirror/index.mjs +0 -2
  349. package/dist/lib/mirror/infra/dirent-list.mjs +0 -14
  350. package/dist/lib/mirror/infra/package-filter.mjs +0 -26
  351. package/dist/lib/mirror/infra/path-normalizer.mjs +0 -7
  352. package/dist/lib/mirror/infra/update-pkg.mjs +0 -105
  353. package/dist/lib/mirror/infra/workspace-packages.mjs +0 -159
  354. package/dist/lib/mirror/presentation/reporter.mjs +0 -111
  355. package/dist/lib/tag/application/engine.mjs +0 -287
  356. package/dist/lib/tag/index.mjs +0 -4
  357. package/dist/lib/tag/infra/target-resolver.mjs +0 -170
  358. package/dist/lib/tag/presentation/colors.mjs +0 -12
  359. package/dist/lib/tag/presentation/tag-presenter.mjs +0 -63
  360. package/dist/program.mjs +0 -34
  361. /package/dist/lib/arrange/{domain/types.mjs → application/ports/domain-source-parser.port.js} +0 -0
  362. /package/dist/lib/{infra/fs-contract.mjs → arrange/application/ports/file-walker.port.js} +0 -0
  363. /package/dist/lib/{mirror/domain/types.mjs → arrange/infra/arrange-sync-cli-options.adapter.js} +0 -0
  364. /package/dist/lib/{tag/domain/types.mjs → core/application/ports/cli-io.port.js} +0 -0
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { CliFs } from "#lib/infra/fs-contract.port";
2
+ import type { TagTargetCandidate } from "#lib/tag/domain/types.domain";
3
+ export declare function resolveTagTargetCandidates(rootDir: string, explicitTarget: string | undefined, fs: CliFs): Promise<TagTargetCandidate[]>;
4
+ //# sourceMappingURL=tag-target-candidates.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-target-candidates.adapter.d.ts","sourceRoot":"","sources":["../../../../src/lib/tag/infra/tag-target-candidates.adapter.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AA2MvE,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,EAAE,EAAE,KAAK,GACR,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAkC/B"}
@@ -0,0 +1,200 @@
1
+ import { globSync } from "node:fs";
2
+ import path from "node:path";
3
+ import picomatch from "picomatch";
4
+ import { parse as parseYaml } from "yaml";
5
+ import { z } from "zod";
6
+ import { messageFromCaughtUnknown } from "#lib/core/application/utils/caught-unknown-message.util";
7
+ const PNPM_WORKSPACE_FILE = "pnpm-workspace.yaml";
8
+ const PACKAGE_JSON_FILE = "package.json";
9
+ const DEFAULT_WORKSPACE_PACKAGE_PATTERNS = ["packages/*"];
10
+ const PnpmWorkspaceSchema = z
11
+ .object({
12
+ packages: z.array(z.string()).optional(),
13
+ })
14
+ .passthrough();
15
+ const PackageNameSchema = z
16
+ .object({
17
+ name: z.string().min(1).optional(),
18
+ })
19
+ .passthrough();
20
+ function toPosix(filePath) {
21
+ return filePath.split(path.sep).join("/");
22
+ }
23
+ function workspacePatternToPackageJsonGlob(pattern) {
24
+ const normalizedPattern = toPosix(pattern.trim()).replace(/\/+$/, "");
25
+ if (!normalizedPattern) {
26
+ return `**/${PACKAGE_JSON_FILE}`;
27
+ }
28
+ return `${normalizedPattern}/${PACKAGE_JSON_FILE}`;
29
+ }
30
+ function splitWorkspacePackagePatterns(rawPatterns) {
31
+ const include = [];
32
+ const exclude = [];
33
+ for (const rawPattern of rawPatterns) {
34
+ const trimmedPattern = rawPattern.trim();
35
+ if (!trimmedPattern) {
36
+ continue;
37
+ }
38
+ if (trimmedPattern.startsWith("!")) {
39
+ exclude.push(trimmedPattern.slice(1).trim());
40
+ continue;
41
+ }
42
+ include.push(trimmedPattern);
43
+ }
44
+ return { include, exclude };
45
+ }
46
+ async function readWorkspacePackagePatterns(rootDir, fs) {
47
+ const workspaceYamlPath = path.join(rootDir, PNPM_WORKSPACE_FILE);
48
+ if (!fs.existsSync(workspaceYamlPath)) {
49
+ return {
50
+ patterns: [...DEFAULT_WORKSPACE_PACKAGE_PATTERNS],
51
+ hasWorkspaceFile: false,
52
+ declaredEmptyPackages: false,
53
+ };
54
+ }
55
+ let workspaceYamlRaw = "";
56
+ try {
57
+ workspaceYamlRaw = await fs.readFile(workspaceYamlPath, "utf8");
58
+ }
59
+ catch (caughtReadError) {
60
+ throw new Error(`Failed to read ${PNPM_WORKSPACE_FILE}: ${messageFromCaughtUnknown(caughtReadError)}`);
61
+ }
62
+ let parsedWorkspaceDoc;
63
+ try {
64
+ parsedWorkspaceDoc = parseYaml(workspaceYamlRaw);
65
+ }
66
+ catch (caughtParseError) {
67
+ throw new Error(`Failed to parse ${PNPM_WORKSPACE_FILE}: ${messageFromCaughtUnknown(caughtParseError)}`);
68
+ }
69
+ const parsedWorkspaceResult = PnpmWorkspaceSchema.safeParse(parsedWorkspaceDoc);
70
+ if (!parsedWorkspaceResult.success) {
71
+ const issuePath = parsedWorkspaceResult.error.issues[0]?.path.join(".") ?? "<root>";
72
+ const issueMessage = parsedWorkspaceResult.error.issues[0]?.message ?? "Invalid value";
73
+ throw new Error(`Invalid ${PNPM_WORKSPACE_FILE} schema at "${issuePath}": ${issueMessage}`);
74
+ }
75
+ const hasPackagesKey = typeof parsedWorkspaceDoc === "object" &&
76
+ parsedWorkspaceDoc !== null &&
77
+ Object.prototype.hasOwnProperty.call(parsedWorkspaceDoc, "packages");
78
+ const workspacePackages = parsedWorkspaceResult.data.packages;
79
+ if (!workspacePackages) {
80
+ return {
81
+ patterns: [...DEFAULT_WORKSPACE_PACKAGE_PATTERNS],
82
+ hasWorkspaceFile: true,
83
+ declaredEmptyPackages: false,
84
+ };
85
+ }
86
+ if (workspacePackages.length === 0 && hasPackagesKey) {
87
+ return { patterns: [], hasWorkspaceFile: true, declaredEmptyPackages: true };
88
+ }
89
+ return {
90
+ patterns: workspacePackages,
91
+ hasWorkspaceFile: true,
92
+ declaredEmptyPackages: false,
93
+ };
94
+ }
95
+ async function discoverWorkspacePackageDirs(rootDir, fs) {
96
+ const workspacePackages = await readWorkspacePackagePatterns(rootDir, fs);
97
+ const { include, exclude } = splitWorkspacePackagePatterns(workspacePackages.patterns);
98
+ const includePatterns = include.length > 0 ? include : [...DEFAULT_WORKSPACE_PACKAGE_PATTERNS];
99
+ const foundPackageDirs = new Set();
100
+ const globOptions = {
101
+ cwd: rootDir,
102
+ posix: true,
103
+ ...(path.sep === "\\" ? { windowsPathsNoEscape: true } : {}),
104
+ };
105
+ for (const pattern of includePatterns) {
106
+ const packageJsonGlob = workspacePatternToPackageJsonGlob(pattern);
107
+ const matches = globSync(packageJsonGlob, globOptions);
108
+ for (const matchedPath of matches) {
109
+ if (!matchedPath.endsWith(`/${PACKAGE_JSON_FILE}`)) {
110
+ continue;
111
+ }
112
+ const packageRelDir = matchedPath.slice(0, -`/${PACKAGE_JSON_FILE}`.length);
113
+ if (!packageRelDir) {
114
+ continue;
115
+ }
116
+ foundPackageDirs.add(path.resolve(rootDir, packageRelDir));
117
+ }
118
+ }
119
+ if (exclude.length === 0) {
120
+ return {
121
+ packageDirs: [...foundPackageDirs].sort((leftDir, rightDir) => leftDir.localeCompare(rightDir)),
122
+ hasWorkspaceFile: workspacePackages.hasWorkspaceFile,
123
+ declaredEmptyPackages: workspacePackages.declaredEmptyPackages,
124
+ };
125
+ }
126
+ const excludeMatchers = exclude.map((excludePattern) => picomatch(excludePattern, { dot: true }));
127
+ const discoveredDirs = [...foundPackageDirs].filter((packageDir) => {
128
+ const relativePackagePath = toPosix(path.relative(rootDir, packageDir));
129
+ return !excludeMatchers.some((excludeMatcher) => excludeMatcher(relativePackagePath));
130
+ });
131
+ discoveredDirs.sort((leftDir, rightDir) => leftDir.localeCompare(rightDir));
132
+ return {
133
+ packageDirs: discoveredDirs,
134
+ hasWorkspaceFile: workspacePackages.hasWorkspaceFile,
135
+ declaredEmptyPackages: workspacePackages.declaredEmptyPackages,
136
+ };
137
+ }
138
+ function readPackageName(packageDir, fs) {
139
+ const packageJsonPath = path.join(packageDir, PACKAGE_JSON_FILE);
140
+ if (!fs.existsSync(packageJsonPath)) {
141
+ return null;
142
+ }
143
+ try {
144
+ const rawPackageJson = fs.readFileSync(packageJsonPath, "utf8");
145
+ const parsedPackageJson = JSON.parse(rawPackageJson);
146
+ const parsedPackageName = PackageNameSchema.safeParse(parsedPackageJson);
147
+ if (!parsedPackageName.success) {
148
+ return null;
149
+ }
150
+ return parsedPackageName.data.name ?? null;
151
+ }
152
+ catch {
153
+ return null;
154
+ }
155
+ }
156
+ function toRootRelativePath(rootDir, absolutePath) {
157
+ const relativePath = path.relative(rootDir, absolutePath);
158
+ return relativePath ? toPosix(relativePath) : ".";
159
+ }
160
+ function toPackageTargetCandidate(rootDir, packageDir, fs) {
161
+ const packageName = readPackageName(packageDir, fs);
162
+ return {
163
+ candidatePath: packageDir,
164
+ rootRelativeCandidatePath: toRootRelativePath(rootDir, packageDir),
165
+ source: "workspace-package",
166
+ packageDir,
167
+ packageName,
168
+ };
169
+ }
170
+ export async function resolveTagTargetCandidates(rootDir, explicitTarget, fs) {
171
+ if (explicitTarget) {
172
+ const resolvedExplicitTarget = path.resolve(explicitTarget);
173
+ return [
174
+ {
175
+ candidatePath: resolvedExplicitTarget,
176
+ rootRelativeCandidatePath: toRootRelativePath(rootDir, resolvedExplicitTarget),
177
+ source: "explicit-target",
178
+ packageDir: null,
179
+ packageName: null,
180
+ },
181
+ ];
182
+ }
183
+ const workspaceDiscovery = await discoverWorkspacePackageDirs(rootDir, fs);
184
+ if (workspaceDiscovery.packageDirs.length === 0) {
185
+ if (workspaceDiscovery.hasWorkspaceFile) {
186
+ return [];
187
+ }
188
+ const repoSourceDir = path.join(rootDir, "src");
189
+ return [
190
+ {
191
+ candidatePath: repoSourceDir,
192
+ rootRelativeCandidatePath: toRootRelativePath(rootDir, repoSourceDir),
193
+ source: "repo-src-fallback",
194
+ packageDir: null,
195
+ packageName: null,
196
+ },
197
+ ];
198
+ }
199
+ return workspaceDiscovery.packageDirs.map((packageDir) => toPackageTargetCandidate(rootDir, packageDir, fs));
200
+ }
@@ -0,0 +1,3 @@
1
+ import type { TagTargetResolverPort } from "#lib/tag/application/ports/target-resolver.port";
2
+ export declare const tagTargetResolverAdapter: TagTargetResolverPort;
3
+ //# sourceMappingURL=tag-target-resolver.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-target-resolver.adapter.d.ts","sourceRoot":"","sources":["../../../../src/lib/tag/infra/tag-target-resolver.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AAG7F,eAAO,MAAM,wBAAwB,EAAE,qBAEtC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { resolveTagTargetCandidates } from "#lib/tag/infra/tag-target-candidates.adapter";
2
+ export const tagTargetResolverAdapter = {
3
+ resolveTagTargetCandidates,
4
+ };
@@ -0,0 +1,3 @@
1
+ import type { TypeScriptTreeWalkPort } from "#lib/tag/application/ports/typescript-tree-walk.port";
2
+ export declare const tagTypeScriptTreeWalkAdapter: TypeScriptTreeWalkPort;
3
+ //# sourceMappingURL=typescript-tree-walk.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript-tree-walk.adapter.d.ts","sourceRoot":"","sources":["../../../../src/lib/tag/infra/typescript-tree-walk.adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AAEnG,eAAO,MAAM,4BAA4B,EAAE,sBAE1C,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { walkTsxFiles } from "#lib/shared/source-code/infra/tsx-file-walk.adapter";
2
+ export const tagTypeScriptTreeWalkAdapter = {
3
+ walkTsxFiles,
4
+ };
@@ -0,0 +1,8 @@
1
+ export declare const TAG_COLORS: {
2
+ readonly RESET: "\u001B[0m";
3
+ readonly RED: "\u001B[31m";
4
+ readonly GREEN: "\u001B[32m";
5
+ readonly YELLOW: "\u001B[33m";
6
+ };
7
+ export declare function withTagColor(line: string, colorCode: string): string;
8
+ //# sourceMappingURL=colors.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/tag/presentation/colors.presenter.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;aACrB,KAAK,EAAE,WAAS;aAChB,GAAG,EAAE,YAAU;aACf,KAAK,EAAE,YAAU;aACjB,MAAM,EAAE,YAAU;CACV,CAAC;AAEX,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpE"}
@@ -0,0 +1,9 @@
1
+ export const TAG_COLORS = {
2
+ RESET: "\x1b[0m",
3
+ RED: "\x1b[31m",
4
+ GREEN: "\x1b[32m",
5
+ YELLOW: "\x1b[33m",
6
+ };
7
+ export function withTagColor(line, colorCode) {
8
+ return `${colorCode}${line}${TAG_COLORS.RESET}`;
9
+ }
@@ -0,0 +1,8 @@
1
+ import type { CliFs } from "#lib/core/application/ports/cli-io.port";
2
+ export type ResolveTagCliTargetPathInput = {
3
+ readonly fs: CliFs;
4
+ readonly currentWorkingDirectory: string;
5
+ readonly rawTarget: string | undefined;
6
+ };
7
+ export declare function resolveTagCliTargetPath(input: ResolveTagCliTargetPathInput): string | undefined;
8
+ //# sourceMappingURL=resolve-tag-cli-target.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-tag-cli-target.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/tag/presentation/resolve-tag-cli-target.presenter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AAErE,MAAM,MAAM,4BAA4B,GAAG;IACzC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;CACxC,CAAC;AAEF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,GAAG,MAAM,GAAG,SAAS,CAQ/F"}
@@ -0,0 +1,10 @@
1
+ import path from "node:path";
2
+ export function resolveTagCliTargetPath(input) {
3
+ if (input.rawTarget === undefined) {
4
+ return undefined;
5
+ }
6
+ const candidate = path.isAbsolute(input.rawTarget)
7
+ ? path.resolve(input.rawTarget)
8
+ : path.resolve(input.currentWorkingDirectory, input.rawTarget);
9
+ return input.fs.canonicalPathSync(candidate);
10
+ }
@@ -0,0 +1,8 @@
1
+ import type { CliLogger } from "#lib/core/application/ports/cli-io.port";
2
+ export type ResolveTagWorkspaceRootPathInput = {
3
+ readonly resolveStrictRepoRoot: () => string;
4
+ readonly logger: CliLogger;
5
+ readonly currentWorkingDirectory: string;
6
+ };
7
+ export declare function resolveTagWorkspaceRootPath(input: ResolveTagWorkspaceRootPathInput): string;
8
+ //# sourceMappingURL=resolve-tag-workspace-root.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-tag-workspace-root.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/tag/presentation/resolve-tag-workspace-root.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,MAAM,MAAM,gCAAgC,GAAG;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,MAAM,MAAM,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;CAC1C,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,gCAAgC,GAAG,MAAM,CAS3F"}
@@ -0,0 +1,10 @@
1
+ import { messageFromCaughtUnknown } from "#lib/core/application/utils/caught-unknown-message.util";
2
+ export function resolveTagWorkspaceRootPath(input) {
3
+ try {
4
+ return input.resolveStrictRepoRoot();
5
+ }
6
+ catch (caughtRepoRootError) {
7
+ input.logger.out(`[tag] workspace root auto-detection failed (${messageFromCaughtUnknown(caughtRepoRootError)}), using cwd=${input.currentWorkingDirectory}`);
8
+ return input.currentWorkingDirectory;
9
+ }
10
+ }
@@ -0,0 +1,15 @@
1
+ import type { CodefastConfig } from "#lib/config/domain/schema.domain";
2
+ import type { AppError } from "#lib/core/domain/errors.domain";
3
+ import { type Result } from "#lib/core/domain/result.model";
4
+ import type { CliContainer } from "#lib/core/infra/container.adapter";
5
+ export type TagCommandPrelude = {
6
+ readonly rootDir: string;
7
+ readonly config: CodefastConfig;
8
+ readonly resolvedTargetPath: string | undefined;
9
+ };
10
+ export declare function prepareTagSync(cli: CliContainer, args: {
11
+ readonly currentWorkingDirectory: string;
12
+ readonly rawTarget: string | undefined;
13
+ readonly globalCliRaw: unknown;
14
+ }): Promise<Result<TagCommandPrelude, AppError>>;
15
+ //# sourceMappingURL=tag-prelude.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-prelude.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/tag/presentation/tag-prelude.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAOtE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAChC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,SAAS,CAAC;CACjD,CAAC;AAEF,wBAAsB,cAAc,CAClC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE;IACJ,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;CAChC,GACA,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,CAwB9C"}
@@ -0,0 +1,31 @@
1
+ import { ok } from "#lib/core/domain/result.model";
2
+ import { tryLoadCodefastConfig } from "#lib/core/presentation/load-codefast-config.presenter";
3
+ import { parseGlobalCliOptions } from "#lib/core/presentation/global-cli-options.presenter";
4
+ import { findRepoRoot } from "#lib/infra/workspace/repo-root.adapter";
5
+ import { resolveTagCliTargetPath } from "#lib/tag/presentation/resolve-tag-cli-target.presenter";
6
+ import { resolveTagWorkspaceRootPath } from "#lib/tag/presentation/resolve-tag-workspace-root.presenter";
7
+ export async function prepareTagSync(cli, args) {
8
+ const globalsOutcome = parseGlobalCliOptions(args.globalCliRaw);
9
+ if (!globalsOutcome.ok) {
10
+ return globalsOutcome;
11
+ }
12
+ const rootDir = resolveTagWorkspaceRootPath({
13
+ resolveStrictRepoRoot: () => findRepoRoot(cli.fs),
14
+ logger: cli.logger,
15
+ currentWorkingDirectory: args.currentWorkingDirectory,
16
+ });
17
+ const loadedOutcome = await tryLoadCodefastConfig(cli, rootDir);
18
+ if (!loadedOutcome.ok) {
19
+ return loadedOutcome;
20
+ }
21
+ const resolvedTargetPath = resolveTagCliTargetPath({
22
+ fs: cli.fs,
23
+ currentWorkingDirectory: args.currentWorkingDirectory,
24
+ rawTarget: args.rawTarget,
25
+ });
26
+ return ok({
27
+ rootDir,
28
+ config: loadedOutcome.value.config,
29
+ resolvedTargetPath,
30
+ });
31
+ }
@@ -0,0 +1,20 @@
1
+ import type { CliLogger } from "#lib/core/application/ports/cli-io.port";
2
+ import type { TagProgressListener, TagResolvedTarget, TagSyncResult, TagTargetExecutionResult } from "#lib/tag/domain/types.domain";
3
+ export type TagProgressEvent = {
4
+ type: "target-started";
5
+ target: TagResolvedTarget;
6
+ } | {
7
+ type: "target-completed";
8
+ target: TagResolvedTarget;
9
+ result: TagTargetExecutionResult;
10
+ };
11
+ export declare function formatProgress(event: TagProgressEvent): string;
12
+ export declare function formatTargetTable(targets: TagResolvedTarget[], rootDir: string): string;
13
+ export declare function formatWarningsAndErrors(result: TagSyncResult): string | null;
14
+ export declare function formatSummary(result: TagSyncResult): string;
15
+ /**
16
+ * Prints tag sync output and returns a process exit code (0 success, 1 when empty targets or hook/run errors).
17
+ */
18
+ export declare function presentTagSyncCliResult(logger: CliLogger, tagResult: TagSyncResult, rootDir: string): number;
19
+ export declare function createTagProgressListener(onProgressLine: (line: string) => void): TagProgressListener;
20
+ //# sourceMappingURL=tag-sync.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tag-sync.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/tag/presentation/tag-sync.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACzB,MAAM,8BAA8B,CAAC;AAGtC,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,iBAAiB,CAAC;IAAC,MAAM,EAAE,wBAAwB,CAAA;CAAE,CAAC;AAmB9F,wBAAgB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAM9D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyBvF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAU5E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAqB3D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,MAAM,GACd,MAAM,CAiBR;AAED,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GACrC,mBAAmB,CASrB"}
@@ -0,0 +1,92 @@
1
+ import { TAG_COLORS, withTagColor } from "#lib/tag/presentation/colors.presenter";
2
+ function targetDisplayName(target) {
3
+ return target.packageName ?? target.rootRelativeTargetPath;
4
+ }
5
+ function warningsAndErrorsFromResult(result) {
6
+ const entries = [];
7
+ for (const targetResult of result.targetResults) {
8
+ if (targetResult.runError) {
9
+ entries.push(targetResult.runError);
10
+ }
11
+ }
12
+ if (result.hookError) {
13
+ entries.push(result.hookError);
14
+ }
15
+ return entries;
16
+ }
17
+ export function formatProgress(event) {
18
+ if (event.type === "target-started") {
19
+ return `[tag] Processing ${targetDisplayName(event.target)}...`;
20
+ }
21
+ const changedFiles = event.result.result?.filesChanged ?? 0;
22
+ return `[tag] Done ${targetDisplayName(event.target)} (${changedFiles} changes)`;
23
+ }
24
+ export function formatTargetTable(targets, rootDir) {
25
+ const packageColumnWidth = Math.max("package".length, ...targets.map((target) => (target.packageName ?? "-").length));
26
+ const pathColumnWidth = Math.max("path".length, ...targets.map((target) => target.rootRelativeTargetPath.length));
27
+ const lines = [];
28
+ lines.push(`[tag] Root: ${rootDir}`);
29
+ lines.push(`[tag] Resolved targets: ${targets.length}`);
30
+ lines.push("[tag] Targets:");
31
+ lines.push(` ${"package".padEnd(packageColumnWidth)} ${"path".padEnd(pathColumnWidth)} source`);
32
+ lines.push(` ${"-".repeat(packageColumnWidth)} ${"-".repeat(pathColumnWidth)} ${"-".repeat("source".length)}`);
33
+ for (const target of targets) {
34
+ lines.push(` ${(target.packageName ?? "-").padEnd(packageColumnWidth)} ${target.rootRelativeTargetPath.padEnd(pathColumnWidth)} ${target.source}`);
35
+ }
36
+ return lines.join("\n");
37
+ }
38
+ export function formatWarningsAndErrors(result) {
39
+ const entries = warningsAndErrorsFromResult(result);
40
+ if (entries.length === 0) {
41
+ return null;
42
+ }
43
+ const lines = [withTagColor("⚠️ Warnings & Errors", TAG_COLORS.YELLOW)];
44
+ for (const entry of entries) {
45
+ lines.push(withTagColor(`- ${entry}`, TAG_COLORS.RED));
46
+ }
47
+ return lines.join("\n");
48
+ }
49
+ export function formatSummary(result) {
50
+ const isDryRun = result.mode === "dry-run";
51
+ const summaryPrefix = isDryRun ? "[tag:dry-run]" : "[tag]";
52
+ const versionSuffix = result.versionSummary === "mixed" && result.distinctVersions.length > 0
53
+ ? ` [${result.distinctVersions.join(", ")}]`
54
+ : "";
55
+ const hasError = result.targetResults.some((targetResult) => targetResult.runError !== null) ||
56
+ result.hookError !== null;
57
+ const summaryColor = hasError ? TAG_COLORS.RED : isDryRun ? TAG_COLORS.YELLOW : TAG_COLORS.GREEN;
58
+ const lines = [
59
+ withTagColor(`${summaryPrefix} version=${result.versionSummary}${versionSuffix} files=${result.filesChanged}/${result.filesScanned} declarations=${result.taggedDeclarations}`, summaryColor),
60
+ ];
61
+ if (result.skippedPackages.length > 0) {
62
+ lines.push(`[tag] Skipped: ${result.skippedPackages.length} package(s)`);
63
+ }
64
+ return lines.join("\n");
65
+ }
66
+ /**
67
+ * Prints tag sync output and returns a process exit code (0 success, 1 when empty targets or hook/run errors).
68
+ */
69
+ export function presentTagSyncCliResult(logger, tagResult, rootDir) {
70
+ logger.out(formatTargetTable(tagResult.selectedTargets, rootDir));
71
+ if (tagResult.selectedTargets.length === 0) {
72
+ logger.err("No packages found in workspace. Check your pnpm-workspace.yaml or provide an explicit target path.");
73
+ return 1;
74
+ }
75
+ const warningsAndErrorsSection = formatWarningsAndErrors(tagResult);
76
+ if (warningsAndErrorsSection) {
77
+ logger.err(warningsAndErrorsSection);
78
+ }
79
+ logger.out(formatSummary(tagResult));
80
+ const hasRunErrors = tagResult.targetResults.some((targetResult) => targetResult.runError !== null);
81
+ return hasRunErrors || tagResult.hookError ? 1 : 0;
82
+ }
83
+ export function createTagProgressListener(onProgressLine) {
84
+ return {
85
+ onTargetStarted: (target) => {
86
+ onProgressLine(formatProgress({ type: "target-started", target }));
87
+ },
88
+ onTargetCompleted: (target, result) => {
89
+ onProgressLine(formatProgress({ type: "target-completed", target, result }));
90
+ },
91
+ };
92
+ }
@@ -0,0 +1,4 @@
1
+ import { Command } from "commander";
2
+ export declare function createProgram(): Command;
3
+ export declare function runCli(argv: string[]): Promise<number>;
4
+ //# sourceMappingURL=program.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,wBAAgB,aAAa,IAAI,OAAO,CAevC;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAK5D"}
@@ -0,0 +1,40 @@
1
+ import { readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import process from "node:process";
4
+ import { fileURLToPath } from "node:url";
5
+ import { Command } from "commander";
6
+ import { registerArrangeCommand } from "#commands/arrange";
7
+ import { registerMirrorCommand } from "#commands/mirror";
8
+ import { registerTagCommand } from "#commands/tag";
9
+ function readVersion() {
10
+ try {
11
+ const dir = path.dirname(fileURLToPath(import.meta.url));
12
+ const pkgPath = path.join(dir, "..", "package.json");
13
+ const raw = readFileSync(pkgPath, "utf-8");
14
+ const pkgVersion = JSON.parse(raw).version;
15
+ return typeof pkgVersion === "string" && pkgVersion.length > 0 ? pkgVersion : "unknown";
16
+ }
17
+ catch {
18
+ return "unknown";
19
+ }
20
+ }
21
+ export function createProgram() {
22
+ const program = new Command();
23
+ program
24
+ .name("codefast")
25
+ .description("Codefast monorepo developer CLI")
26
+ .version(readVersion())
27
+ .option("--no-color", "Disable ANSI color output")
28
+ .configureHelp({ sortSubcommands: true })
29
+ .showHelpAfterError("(use --help for usage)");
30
+ registerMirrorCommand(program);
31
+ registerArrangeCommand(program);
32
+ registerTagCommand(program);
33
+ return program;
34
+ }
35
+ export async function runCli(argv) {
36
+ const program = createProgram();
37
+ await program.parseAsync(argv, { from: "node" });
38
+ const code = process.exitCode ?? 0;
39
+ return typeof code === "number" ? code : Number(code) || 0;
40
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codefast/cli",
3
- "version": "0.3.13-canary.1",
3
+ "version": "0.3.13-canary.3",
4
4
  "description": "Developer CLI for the Codefast monorepo (mirror, arrange)",
5
5
  "keywords": [
6
6
  "cli",
@@ -22,7 +22,7 @@
22
22
  "directory": "packages/cli"
23
23
  },
24
24
  "bin": {
25
- "codefast": "./dist/bin.mjs"
25
+ "codefast": "./dist/bin.js"
26
26
  },
27
27
  "files": [
28
28
  "dist",
@@ -33,6 +33,9 @@
33
33
  "type": "module",
34
34
  "imports": {
35
35
  "#*": [
36
+ "./dist/*.js",
37
+ "./dist/*/index.js",
38
+ "./dist/*",
36
39
  "./src/*",
37
40
  "./src/*.ts",
38
41
  "./src/*.tsx",
@@ -59,17 +62,17 @@
59
62
  "@types/picomatch": "^4.0.3",
60
63
  "@typescript/native-preview": "7.0.0-dev.20260411.1",
61
64
  "jest": "^30.3.0",
62
- "tsdown": "^0.21.8",
63
- "@codefast/typescript-config": "0.3.13-canary.1"
65
+ "@codefast/typescript-config": "0.3.13-canary.3"
64
66
  },
65
67
  "engines": {
66
68
  "node": ">=22.0.0"
67
69
  },
68
70
  "scripts": {
69
- "build": "tsdown",
71
+ "build": "rm -rf dist && tsgo -p tsconfig.build.json",
70
72
  "check-types": "tsgo --noEmit",
71
73
  "clean": "rm -rf dist",
72
74
  "test": "jest",
75
+ "check-architecture": "jest src/__tests__/architecture.test.ts",
73
76
  "test:coverage": "jest --coverage",
74
77
  "test:coverage:ci": "jest --coverage --ci",
75
78
  "test:watch": "jest --watch"