@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,31 @@
1
+ import type { Dirent } from "node:fs";
2
+ /**
3
+ * Filesystem surface for CLI use cases — inject in tests. Implementations live in infra.
4
+ */
5
+ export type CliFs = {
6
+ existsSync: (path: string) => boolean;
7
+ /**
8
+ * Resolve symlinks when possible; fall back to normalizing `inputPath` to an absolute path.
9
+ */
10
+ canonicalPathSync: (inputPath: string) => string;
11
+ statSync: (path: string) => {
12
+ isDirectory: () => boolean;
13
+ isFile: () => boolean;
14
+ };
15
+ readFileSync: (path: string, encoding: BufferEncoding) => string;
16
+ writeFileSync: (path: string, data: string, encoding: BufferEncoding) => void;
17
+ readdirSync: (path: string) => string[];
18
+ readFile: (path: string, encoding: BufferEncoding) => Promise<string>;
19
+ writeFile: (path: string, data: string, encoding: BufferEncoding) => Promise<void>;
20
+ readdir: (path: string, options?: {
21
+ recursive?: boolean;
22
+ withFileTypes?: boolean;
23
+ }) => Promise<string[] | Dirent[]>;
24
+ rename: (oldPath: string, newPath: string) => Promise<void>;
25
+ unlink: (path: string) => Promise<void>;
26
+ };
27
+ export type CliLogger = {
28
+ out: (line: string) => void;
29
+ err: (line: string) => void;
30
+ };
31
+ //# sourceMappingURL=cli-io.port.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-io.port.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/application/ports/cli-io.port.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC;;OAEG;IACH,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IACjD,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,WAAW,EAAE,MAAM,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,OAAO,CAAA;KAAE,CAAC;IAClF,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,MAAM,CAAC;IACjE,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC;IAC9E,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACxC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,OAAO,EAAE,CACP,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,KACvD,OAAO,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IAClC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ import { type AppError } from "#lib/core/domain/errors.domain";
3
+ import { type Result } from "#lib/core/domain/result.model";
4
+ /**
5
+ * Validates `input` with `schema`, returning {@link AppError} with code `VALIDATION_ERROR` on failure.
6
+ */
7
+ export declare function parseWithSchema<T>(schema: z.ZodType<T>, input: unknown): Result<T, AppError>;
8
+ //# sourceMappingURL=schema-parse.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-parse.util.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/application/schema-parse.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAWrE;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAM5F"}
@@ -0,0 +1,20 @@
1
+ import { appError } from "#lib/core/domain/errors.domain";
2
+ import { err, ok } from "#lib/core/domain/result.model";
3
+ function formatZodIssues(issues) {
4
+ return issues
5
+ .map((issue) => {
6
+ const path = issue.path.length > 0 ? `${issue.path.join(".")}: ` : "";
7
+ return `${path}${issue.message}`;
8
+ })
9
+ .join("; ");
10
+ }
11
+ /**
12
+ * Validates `input` with `schema`, returning {@link AppError} with code `VALIDATION_ERROR` on failure.
13
+ */
14
+ export function parseWithSchema(schema, input) {
15
+ const parsed = schema.safeParse(input);
16
+ if (!parsed.success) {
17
+ return err(appError("VALIDATION_ERROR", formatZodIssues(parsed.error.issues)));
18
+ }
19
+ return ok(parsed.data);
20
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Stable, user-facing text for values caught as `unknown`.
3
+ * Avoids `String(unknown)` / `[object Object]` and satisfies strict `no-base-to-string`.
4
+ */
5
+ export declare function messageFromCaughtUnknown(value: unknown): string;
6
+ //# sourceMappingURL=caught-unknown-message.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caught-unknown-message.util.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/application/utils/caught-unknown-message.util.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CA4B/D"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Stable, user-facing text for values caught as `unknown`.
3
+ * Avoids `String(unknown)` / `[object Object]` and satisfies strict `no-base-to-string`.
4
+ */
5
+ export function messageFromCaughtUnknown(value) {
6
+ if (value instanceof Error) {
7
+ return value.message;
8
+ }
9
+ if (typeof value === "string") {
10
+ return value;
11
+ }
12
+ if (typeof value === "number" || typeof value === "bigint" || typeof value === "boolean") {
13
+ return String(value);
14
+ }
15
+ if (typeof value === "symbol") {
16
+ return String(value);
17
+ }
18
+ if (value === null) {
19
+ return "null";
20
+ }
21
+ if (value === undefined) {
22
+ return "undefined";
23
+ }
24
+ try {
25
+ const serialized = JSON.stringify(value);
26
+ if (typeof serialized === "string") {
27
+ return serialized;
28
+ }
29
+ }
30
+ catch {
31
+ // Circular structure, BigInt in tree, etc.
32
+ }
33
+ return "[unserializable non-Error value]";
34
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * When true, infrastructure failures may log full stack traces (e.g. in {@link consumeCliAppError}).
3
+ */
4
+ export declare function isVerboseInfraDiagnostics(): boolean;
5
+ //# sourceMappingURL=verbose-diagnostics.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verbose-diagnostics.util.d.ts","sourceRoot":"","sources":["../../../../../src/lib/core/application/utils/verbose-diagnostics.util.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAGnD"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * When true, infrastructure failures may log full stack traces (e.g. in {@link consumeCliAppError}).
3
+ */
4
+ export function isVerboseInfraDiagnostics() {
5
+ const raw = process.env.CODEFAST_VERBOSE;
6
+ return raw === "1" || raw === "true";
7
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Cross-context application errors for Result-based use cases (CLI orchestration).
3
+ */
4
+ export type AppErrorCode = "NOT_FOUND" | "VALIDATION_ERROR" | "INFRA_FAILURE";
5
+ export type AppError = {
6
+ readonly code: AppErrorCode;
7
+ readonly message: string;
8
+ readonly cause?: unknown;
9
+ };
10
+ export declare function appError(code: AppErrorCode, message: string, cause?: unknown): AppError;
11
+ //# sourceMappingURL=errors.domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.domain.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/domain/errors.domain.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,kBAAkB,GAAG,eAAe,CAAC;AAE9E,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAKvF"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Cross-context application errors for Result-based use cases (CLI orchestration).
3
+ */
4
+ export function appError(code, message, cause) {
5
+ if (cause === undefined) {
6
+ return { code, message };
7
+ }
8
+ return { code, message, cause };
9
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Lightweight functional Result type for use-case boundaries.
3
+ */
4
+ export type Ok<T> = {
5
+ readonly ok: true;
6
+ readonly value: T;
7
+ };
8
+ export type Err<E> = {
9
+ readonly ok: false;
10
+ readonly error: E;
11
+ };
12
+ export type Result<T, E> = Ok<T> | Err<E>;
13
+ export declare function ok<T>(value: T): Ok<T>;
14
+ export declare function err<E>(error: E): Err<E>;
15
+ export declare function isOk<T, E>(result: Result<T, E>): result is Ok<T>;
16
+ export declare function isErr<T, E>(result: Result<T, E>): result is Err<E>;
17
+ //# sourceMappingURL=result.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.model.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/domain/result.model.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,EAAE,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE7D,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE/D,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAE1C,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAErC;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAEvC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAEhE;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAElE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Lightweight functional Result type for use-case boundaries.
3
+ */
4
+ export function ok(value) {
5
+ return { ok: true, value };
6
+ }
7
+ export function err(error) {
8
+ return { ok: false, error };
9
+ }
10
+ export function isOk(result) {
11
+ return result.ok === true;
12
+ }
13
+ export function isErr(result) {
14
+ return result.ok === false;
15
+ }
@@ -0,0 +1,58 @@
1
+ import type { AppError } from "#lib/core/domain/errors.domain";
2
+ import type { Result } from "#lib/core/domain/result.model";
3
+ import type { CliFs, CliLogger } from "#lib/core/application/ports/cli-io.port";
4
+ import type { AnalyzeDirectoryDeps } from "#lib/arrange/application/use-cases/analyze-directory.use-case";
5
+ import type { ArrangeAnalyzeDirectoryRequest } from "#lib/arrange/application/requests/analyze-directory.request";
6
+ import type { ArrangeSyncRunRequest } from "#lib/arrange/application/requests/arrange-sync.request";
7
+ import type { ArrangeSuggestGroupsRequest } from "#lib/arrange/application/requests/suggest-groups.request";
8
+ import type { ArrangeSyncDeps } from "#lib/arrange/application/use-cases/run-arrange-sync.use-case";
9
+ import { type ArrangeSuggestGroupsOutput } from "#lib/arrange/application/use-cases/suggest-cn-groups.use-case";
10
+ import type { AnalyzeReport } from "#lib/arrange/domain/types.domain";
11
+ import type { ArrangeTargetWorkspaceAndConfig } from "#lib/arrange/presentation/arrange-prelude.presenter";
12
+ import type { MirrorSyncRunDeps } from "#lib/mirror/application/use-cases/run-mirror-sync.use-case";
13
+ import type { MirrorSyncRunRequest } from "#lib/mirror/application/requests/mirror-sync.request";
14
+ import type { MirrorSyncCommandPrelude } from "#lib/mirror/presentation/mirror-prelude.presenter";
15
+ import type { TagSyncExecutionInput, TagSyncRunDeps } from "#lib/tag/application/use-cases/run-tag-sync.use-case";
16
+ import type { TagSyncResult } from "#lib/tag/domain/types.domain";
17
+ import type { TagCommandPrelude } from "#lib/tag/presentation/tag-prelude.presenter";
18
+ import { createTagProgressListener } from "#lib/tag/presentation/tag-sync.presenter";
19
+ /**
20
+ * Composition root: wires default infra adapters and exposes thin use-case facades.
21
+ */
22
+ export type CliContainer = {
23
+ readonly fs: CliFs;
24
+ readonly logger: CliLogger;
25
+ readonly arrange: {
26
+ readonly deps: AnalyzeDirectoryDeps & ArrangeSyncDeps;
27
+ prepareTargetWorkspaceAndConfig(args: {
28
+ readonly currentWorkingDirectory: string;
29
+ readonly rawTarget: string | undefined;
30
+ }): Promise<Result<ArrangeTargetWorkspaceAndConfig, AppError>>;
31
+ analyzeDirectory(request: ArrangeAnalyzeDirectoryRequest): Result<AnalyzeReport, AppError>;
32
+ runArrangeSync(request: ArrangeSyncRunRequest): Promise<Result<number, AppError>>;
33
+ suggestCnGroups(request: ArrangeSuggestGroupsRequest): ArrangeSuggestGroupsOutput;
34
+ presentAnalyzeReport(resolvedTargetPath: string, report: AnalyzeReport): void;
35
+ };
36
+ readonly mirror: {
37
+ readonly deps: MirrorSyncRunDeps;
38
+ prepareMirrorSync(args: {
39
+ readonly currentWorkingDirectory: string;
40
+ readonly packageArg: string | undefined;
41
+ readonly globalCliRaw: unknown;
42
+ }): Promise<Result<MirrorSyncCommandPrelude, AppError>>;
43
+ runMirrorSync(request: MirrorSyncRunRequest): Promise<Result<number, AppError>>;
44
+ };
45
+ readonly tag: {
46
+ readonly deps: TagSyncRunDeps;
47
+ prepareTagSync(args: {
48
+ readonly currentWorkingDirectory: string;
49
+ readonly rawTarget: string | undefined;
50
+ readonly globalCliRaw: unknown;
51
+ }): Promise<Result<TagCommandPrelude, AppError>>;
52
+ runTagSync(input: TagSyncExecutionInput): Promise<Result<TagSyncResult, AppError>>;
53
+ createProgressListener(emitLine: (line: string) => void): ReturnType<typeof createTagProgressListener>;
54
+ presentSyncCliResult(result: TagSyncResult, rootDir: string): number;
55
+ };
56
+ };
57
+ export declare function createCliContainer(): CliContainer;
58
+ //# sourceMappingURL=container.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.adapter.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/infra/container.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { withCliPortTelemetry, isCliTelemetryEnabled, } from "#lib/core/infra/logging-decorator.adapter";
2
+ import { analyzeDirectory } from "#lib/arrange/application/use-cases/analyze-directory.use-case";
3
+ import { runArrangeSync } from "#lib/arrange/application/use-cases/run-arrange-sync.use-case";
4
+ import { suggestCnGroupsForCli, } from "#lib/arrange/application/use-cases/suggest-cn-groups.use-case";
5
+ import { prepareArrangeTargetWorkspaceAndConfig } from "#lib/arrange/presentation/arrange-prelude.presenter";
6
+ import { presentAnalyzeCliReport } from "#lib/arrange/presentation/present-analyze-cli.presenter";
7
+ import { DomainSourceParserAdapter } from "#lib/arrange/infra/domain-source-parser.adapter";
8
+ import { FileWalkerAdapter } from "#lib/arrange/infra/file-walker.adapter";
9
+ import { createNodeCliFs, createNodeCliLogger } from "#lib/infra/node-io.adapter";
10
+ import { runMirrorSync } from "#lib/mirror/application/use-cases/run-mirror-sync.use-case";
11
+ import { prepareMirrorSync } from "#lib/mirror/presentation/mirror-prelude.presenter";
12
+ import { FileSystemServiceAdapter } from "#lib/mirror/infra/file-system-service.adapter";
13
+ import { mirrorSyncReporterAdapter } from "#lib/mirror/infra/mirror-sync-reporter.adapter";
14
+ import { PackageRepositoryAdapter } from "#lib/mirror/infra/package-repository.adapter";
15
+ import { WorkspaceServiceAdapter } from "#lib/mirror/infra/workspace-service.adapter";
16
+ import { runTagSync } from "#lib/tag/application/use-cases/run-tag-sync.use-case";
17
+ import { prepareTagSync } from "#lib/tag/presentation/tag-prelude.presenter";
18
+ import { createTagProgressListener, presentTagSyncCliResult, } from "#lib/tag/presentation/tag-sync.presenter";
19
+ import { tagTargetResolverAdapter } from "#lib/tag/infra/tag-target-resolver.adapter";
20
+ import { tagTypeScriptTreeWalkAdapter } from "#lib/tag/infra/typescript-tree-walk.adapter";
21
+ function maybeTelemetry(portName, implementation, logger) {
22
+ if (!isCliTelemetryEnabled()) {
23
+ return implementation;
24
+ }
25
+ return withCliPortTelemetry({ portName, implementation, logger });
26
+ }
27
+ export function createCliContainer() {
28
+ const logger = createNodeCliLogger();
29
+ const rawFs = createNodeCliFs();
30
+ const fs = maybeTelemetry("CliFs", rawFs, logger);
31
+ const fileWalker = maybeTelemetry("FileWalkerPort", new FileWalkerAdapter(logger), logger);
32
+ const domainSourceParser = maybeTelemetry("DomainSourceParserPort", new DomainSourceParserAdapter(logger), logger);
33
+ const arrangeDeps = {
34
+ fs,
35
+ logger,
36
+ fileWalker,
37
+ domainSourceParser,
38
+ };
39
+ const mirrorDeps = {
40
+ fs,
41
+ logger,
42
+ workspaceService: maybeTelemetry("WorkspaceServicePort", new WorkspaceServiceAdapter(), logger),
43
+ packageRepository: maybeTelemetry("PackageRepositoryPort", new PackageRepositoryAdapter(), logger),
44
+ fileSystemService: maybeTelemetry("FileSystemServicePort", new FileSystemServiceAdapter(), logger),
45
+ mirrorReporter: maybeTelemetry("MirrorSyncReporterPort", mirrorSyncReporterAdapter, logger),
46
+ };
47
+ const rawTagResolver = tagTargetResolverAdapter;
48
+ const targetResolver = maybeTelemetry("TagTargetResolverPort", rawTagResolver, logger);
49
+ const tagDeps = {
50
+ fs,
51
+ targetResolver,
52
+ typeScriptTreeWalk: maybeTelemetry("TypeScriptTreeWalkPort", tagTypeScriptTreeWalkAdapter, logger),
53
+ };
54
+ let cli;
55
+ cli = {
56
+ fs,
57
+ logger,
58
+ arrange: {
59
+ deps: arrangeDeps,
60
+ prepareTargetWorkspaceAndConfig: (args) => prepareArrangeTargetWorkspaceAndConfig(cli, args),
61
+ analyzeDirectory: (request) => analyzeDirectory(request, arrangeDeps),
62
+ runArrangeSync: (request) => runArrangeSync(request, arrangeDeps),
63
+ suggestCnGroups: (request) => suggestCnGroupsForCli(request),
64
+ presentAnalyzeReport: (resolvedTargetPath, report) => presentAnalyzeCliReport(logger, resolvedTargetPath, report),
65
+ },
66
+ mirror: {
67
+ deps: mirrorDeps,
68
+ prepareMirrorSync: (args) => prepareMirrorSync(cli, args),
69
+ runMirrorSync: (request) => runMirrorSync(request, mirrorDeps),
70
+ },
71
+ tag: {
72
+ deps: tagDeps,
73
+ prepareTagSync: (args) => prepareTagSync(cli, args),
74
+ runTagSync: (input) => runTagSync(input, tagDeps),
75
+ createProgressListener: (emitLine) => createTagProgressListener(emitLine),
76
+ presentSyncCliResult: (result, rootDir) => presentTagSyncCliResult(logger, result, rootDir),
77
+ },
78
+ };
79
+ return cli;
80
+ }
@@ -0,0 +1,12 @@
1
+ import type { CliLogger } from "#lib/core/application/ports/cli-io.port";
2
+ /**
3
+ * Wraps a port implementation (object of functions) to log call timing and summarized arguments via `logger`.
4
+ * Does not modify application or domain code — wire only from the composition root.
5
+ */
6
+ export declare function withCliPortTelemetry<T extends object>(args: {
7
+ readonly portName: string;
8
+ readonly implementation: T;
9
+ readonly logger: CliLogger;
10
+ }): T;
11
+ export declare function isCliTelemetryEnabled(): boolean;
12
+ //# sourceMappingURL=logging-decorator.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logging-decorator.adapter.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/infra/logging-decorator.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkCzE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,SAAS,MAAM,EAAE,IAAI,EAAE;IAC3D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B,GAAG,CAAC,CA+CJ;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAG/C"}
@@ -0,0 +1,75 @@
1
+ function summarizeTelemetryArg(value, maxLen = 160) {
2
+ if (typeof value === "string") {
3
+ return value.length > maxLen ? `${value.slice(0, maxLen)}…(${value.length} chars)` : value;
4
+ }
5
+ if (value === null || value === undefined) {
6
+ return String(value);
7
+ }
8
+ if (typeof value === "number" || typeof value === "boolean") {
9
+ return String(value);
10
+ }
11
+ if (typeof value === "object") {
12
+ try {
13
+ const json = JSON.stringify(value);
14
+ if (typeof json === "string") {
15
+ return json.length > maxLen ? `${json.slice(0, maxLen)}…` : json;
16
+ }
17
+ }
18
+ catch {
19
+ return "[object]";
20
+ }
21
+ }
22
+ return "[value]";
23
+ }
24
+ function isPromiseLike(value) {
25
+ return (value !== null &&
26
+ typeof value === "object" &&
27
+ "then" in value &&
28
+ typeof value.then === "function");
29
+ }
30
+ /**
31
+ * Wraps a port implementation (object of functions) to log call timing and summarized arguments via `logger`.
32
+ * Does not modify application or domain code — wire only from the composition root.
33
+ */
34
+ export function withCliPortTelemetry(args) {
35
+ const { portName, implementation, logger } = args;
36
+ return new Proxy(implementation, {
37
+ get(target, propertyKey, receiver) {
38
+ if (typeof propertyKey === "symbol") {
39
+ return Reflect.get(target, propertyKey, receiver);
40
+ }
41
+ const propertyName = String(propertyKey);
42
+ const value = Reflect.get(target, propertyKey, receiver);
43
+ if (typeof value !== "function") {
44
+ return value;
45
+ }
46
+ return (...callArgs) => {
47
+ const argSummary = callArgs.map((arg) => summarizeTelemetryArg(arg)).join(", ");
48
+ logger.out(`[telemetry:${portName}.${propertyName}] ← (${argSummary})`);
49
+ const startedAt = performance.now();
50
+ try {
51
+ const result = value.apply(target, callArgs);
52
+ if (isPromiseLike(result)) {
53
+ return result.then((resolved) => {
54
+ logger.out(`[telemetry:${portName}.${propertyName}] → ok ${(performance.now() - startedAt).toFixed(2)}ms`);
55
+ return resolved;
56
+ }, (rejection) => {
57
+ logger.out(`[telemetry:${portName}.${propertyName}] → err ${(performance.now() - startedAt).toFixed(2)}ms`);
58
+ throw rejection;
59
+ });
60
+ }
61
+ logger.out(`[telemetry:${portName}.${propertyName}] → ${(performance.now() - startedAt).toFixed(2)}ms`);
62
+ return result;
63
+ }
64
+ catch (caughtSyncError) {
65
+ logger.out(`[telemetry:${portName}.${propertyName}] → err ${(performance.now() - startedAt).toFixed(2)}ms`);
66
+ throw caughtSyncError;
67
+ }
68
+ };
69
+ },
70
+ });
71
+ }
72
+ export function isCliTelemetryEnabled() {
73
+ const raw = process.env.ENABLE_TELEMETRY;
74
+ return raw === "1" || raw === "true";
75
+ }
@@ -0,0 +1,33 @@
1
+ import type { AppError } from "#lib/core/domain/errors.domain";
2
+ import type { Result } from "#lib/core/domain/result.model";
3
+ import type { CliLogger } from "#lib/core/application/ports/cli-io.port";
4
+ /**
5
+ * Maps {@link AppError} codes to `process.exitCode` for CLI commands.
6
+ */
7
+ export declare function exitCodeForAppError(error: AppError): number;
8
+ /**
9
+ * When `outcome` is {@link Err}, logs via {@link formatAppError}, sets `process.exitCode`, returns `false`.
10
+ * When `Ok`, optionally logs `successMessage` to stdout and returns `true`.
11
+ */
12
+ export declare function consumeCliAppError<T>(logger: CliLogger, outcome: Result<T, AppError>, options?: {
13
+ readonly successMessage?: string;
14
+ }): outcome is {
15
+ readonly ok: true;
16
+ readonly value: T;
17
+ };
18
+ /**
19
+ * Awaits a use case and applies the same handling as {@link consumeCliAppError}.
20
+ */
21
+ export declare function consumeCliAppErrorAsync<T>(logger: CliLogger, outcomePromise: Promise<Result<T, AppError>>, options?: {
22
+ readonly successMessage?: string;
23
+ }): Promise<Result<T, AppError>>;
24
+ /**
25
+ * Completes CLI handling: errors are logged and `process.exitCode` is set; success runs `onSuccess`
26
+ * and assigns `process.exitCode` from its return value (default `0`).
27
+ */
28
+ export declare function runCliResult<T>(logger: CliLogger, outcome: Result<T, AppError>, onSuccess: (value: T) => number | void): void;
29
+ /**
30
+ * Async variant of {@link runCliResult}.
31
+ */
32
+ export declare function runCliResultAsync<T>(logger: CliLogger, outcomePromise: Promise<Result<T, AppError>>, onSuccess: (value: T) => number | void | Promise<number | void>): Promise<void>;
33
+ //# sourceMappingURL=cli-executor.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-executor.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/presentation/cli-executor.presenter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAY3D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC5B,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,IAAI;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAkBrD;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAC7C,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAC5C,OAAO,CAAC,EAAE;IAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAI9B;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,EAC5B,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,GACrC,IAAI,CAMN;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,EAC5C,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAC9D,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -0,0 +1,73 @@
1
+ import process from "node:process";
2
+ import { formatAppError } from "#lib/core/presentation/format-app-error.presenter";
3
+ import { isVerboseInfraDiagnostics } from "#lib/core/application/utils/verbose-diagnostics.util";
4
+ function assertExhaustiveAppErrorCode(code) {
5
+ return code;
6
+ }
7
+ /**
8
+ * Maps {@link AppError} codes to `process.exitCode` for CLI commands.
9
+ */
10
+ export function exitCodeForAppError(error) {
11
+ const { code } = error;
12
+ switch (code) {
13
+ case "NOT_FOUND":
14
+ return 1;
15
+ case "VALIDATION_ERROR":
16
+ return 1;
17
+ case "INFRA_FAILURE":
18
+ return 1;
19
+ default:
20
+ return assertExhaustiveAppErrorCode(code);
21
+ }
22
+ }
23
+ /**
24
+ * When `outcome` is {@link Err}, logs via {@link formatAppError}, sets `process.exitCode`, returns `false`.
25
+ * When `Ok`, optionally logs `successMessage` to stdout and returns `true`.
26
+ */
27
+ export function consumeCliAppError(logger, outcome, options) {
28
+ if (!outcome.ok) {
29
+ logger.err(formatAppError(outcome.error));
30
+ if (isVerboseInfraDiagnostics() &&
31
+ outcome.error.code === "INFRA_FAILURE" &&
32
+ outcome.error.cause instanceof Error &&
33
+ outcome.error.cause.stack !== undefined) {
34
+ logger.err(outcome.error.cause.stack);
35
+ }
36
+ process.exitCode = exitCodeForAppError(outcome.error);
37
+ return false;
38
+ }
39
+ if (options?.successMessage !== undefined) {
40
+ logger.out(options.successMessage);
41
+ }
42
+ return true;
43
+ }
44
+ /**
45
+ * Awaits a use case and applies the same handling as {@link consumeCliAppError}.
46
+ */
47
+ export async function consumeCliAppErrorAsync(logger, outcomePromise, options) {
48
+ const outcome = await outcomePromise;
49
+ consumeCliAppError(logger, outcome, options);
50
+ return outcome;
51
+ }
52
+ /**
53
+ * Completes CLI handling: errors are logged and `process.exitCode` is set; success runs `onSuccess`
54
+ * and assigns `process.exitCode` from its return value (default `0`).
55
+ */
56
+ export function runCliResult(logger, outcome, onSuccess) {
57
+ if (!consumeCliAppError(logger, outcome)) {
58
+ return;
59
+ }
60
+ const exit = onSuccess(outcome.value);
61
+ process.exitCode = exit === undefined ? 0 : exit;
62
+ }
63
+ /**
64
+ * Async variant of {@link runCliResult}.
65
+ */
66
+ export async function runCliResultAsync(logger, outcomePromise, onSuccess) {
67
+ const outcome = await outcomePromise;
68
+ if (!consumeCliAppError(logger, outcome)) {
69
+ return;
70
+ }
71
+ const exit = await onSuccess(outcome.value);
72
+ process.exitCode = exit === undefined ? 0 : exit;
73
+ }
@@ -0,0 +1,6 @@
1
+ import type { AppError } from "#lib/core/domain/errors.domain";
2
+ /**
3
+ * Stable, user-facing line for CLI output. Exhaustive over every `AppError["code"]`.
4
+ */
5
+ export declare function formatAppError(error: AppError): string;
6
+ //# sourceMappingURL=format-app-error.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-app-error.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/presentation/format-app-error.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAM/D;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAYtD"}
@@ -0,0 +1,19 @@
1
+ function assertExhaustiveAppErrorCode(code) {
2
+ return `Unhandled error code: ${String(code)}`;
3
+ }
4
+ /**
5
+ * Stable, user-facing line for CLI output. Exhaustive over every `AppError["code"]`.
6
+ */
7
+ export function formatAppError(error) {
8
+ const { code, message } = error;
9
+ switch (code) {
10
+ case "NOT_FOUND":
11
+ return `[NOT_FOUND] ${message}`;
12
+ case "VALIDATION_ERROR":
13
+ return `[VALIDATION_ERROR] ${message}`;
14
+ case "INFRA_FAILURE":
15
+ return `[INFRA_FAILURE] ${message}`;
16
+ default:
17
+ return assertExhaustiveAppErrorCode(code);
18
+ }
19
+ }
@@ -0,0 +1,9 @@
1
+ import { z } from "zod";
2
+ import type { AppError } from "#lib/core/domain/errors.domain";
3
+ import type { Result } from "#lib/core/domain/result.model";
4
+ export declare const GlobalCliOptionsSchema: z.ZodObject<{
5
+ color: z.ZodOptional<z.ZodBoolean>;
6
+ }, z.core.$strip>;
7
+ export type GlobalCliOptions = z.infer<typeof GlobalCliOptionsSchema>;
8
+ export declare function parseGlobalCliOptions(raw: unknown): Result<GlobalCliOptions, AppError>;
9
+ //# sourceMappingURL=global-cli-options.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-cli-options.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/presentation/global-cli-options.presenter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE5D,eAAO,MAAM,sBAAsB;;iBAEjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAEtF"}
@@ -0,0 +1,8 @@
1
+ import { z } from "zod";
2
+ import { parseWithSchema } from "#lib/core/application/schema-parse.util";
3
+ export const GlobalCliOptionsSchema = z.object({
4
+ color: z.boolean().optional(),
5
+ });
6
+ export function parseGlobalCliOptions(raw) {
7
+ return parseWithSchema(GlobalCliOptionsSchema, raw);
8
+ }
@@ -0,0 +1,8 @@
1
+ import { type AppError } from "#lib/core/domain/errors.domain";
2
+ import { type Result } from "#lib/core/domain/result.model";
3
+ import type { CliContainer } from "#lib/core/infra/container.adapter";
4
+ import type { CodefastConfig } from "#lib/config/domain/schema.domain";
5
+ export declare function tryLoadCodefastConfig(cli: CliContainer, rootDir: string): Promise<Result<{
6
+ config: CodefastConfig;
7
+ }, AppError>>;
8
+ //# sourceMappingURL=load-codefast-config.presenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-codefast-config.presenter.d.ts","sourceRoot":"","sources":["../../../../src/lib/core/presentation/load-codefast-config.presenter.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAIvE,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,YAAY,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,EAAE,QAAQ,CAAC,CAAC,CAQvD"}