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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/README.md +29 -3
  2. package/dist/{bin.js → bin.mjs} +4 -1
  3. package/dist/commands/arrange.mjs +325 -0
  4. package/dist/commands/mirror.mjs +267 -0
  5. package/dist/commands/tag.mjs +283 -0
  6. package/dist/lib/arrange/application/arrange-analyze-json.format.mjs +10 -0
  7. package/dist/lib/arrange/application/arrange-group-json.format.mjs +11 -0
  8. package/dist/lib/arrange/application/arrange-sync-cli-result.mjs +7 -0
  9. package/dist/lib/arrange/application/arrange-sync-json.format.mjs +12 -0
  10. package/dist/lib/arrange/application/services/arrange-file-processor.service.mjs +242 -0
  11. package/dist/lib/arrange/application/services/arrange-target-scanner.service.mjs +237 -0
  12. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.mjs +258 -0
  13. package/dist/lib/arrange/application/use-cases/group-file.use-case.mjs +35 -0
  14. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.mjs +283 -0
  15. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.mjs +233 -0
  16. package/dist/lib/arrange/arrange.feature.module.mjs +19 -0
  17. package/dist/lib/arrange/arrange.module.mjs +27 -0
  18. package/dist/lib/arrange/arrange.presentation.module.mjs +13 -0
  19. package/dist/lib/arrange/contracts/tokens.mjs +14 -0
  20. package/dist/lib/arrange/domain/arrange-analyze.service.mjs +95 -0
  21. package/dist/lib/arrange/domain/arrange-grouping.service.mjs +100 -0
  22. package/dist/lib/arrange/domain/ast/ast-helpers.helper.mjs +89 -0
  23. package/dist/lib/arrange/domain/ast/ast-node.model.mjs +181 -0
  24. package/dist/lib/arrange/domain/ast/collectors-cn.collector.mjs +52 -0
  25. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.mjs +20 -0
  26. package/dist/lib/arrange/domain/ast/collectors-tv.collector.mjs +174 -0
  27. package/dist/lib/arrange/domain/ast/targets.model.mjs +110 -0
  28. package/dist/lib/arrange/domain/constants.domain.mjs +154 -0
  29. package/dist/lib/arrange/domain/errors.domain.mjs +18 -0
  30. package/dist/lib/arrange/domain/grouping.domain.mjs +306 -0
  31. package/dist/lib/arrange/domain/imports.domain.mjs +55 -0
  32. package/dist/lib/arrange/domain/source-text-formatters.formatter.mjs +54 -0
  33. package/dist/lib/arrange/domain/tokenizer.util.mjs +209 -0
  34. package/dist/lib/arrange/infra/domain-source-parser.adapter.mjs +240 -0
  35. package/dist/lib/arrange/infra/ensure-cn-import.adapter.mjs +8 -0
  36. package/dist/lib/arrange/infra/file-walker.adapter.mjs +239 -0
  37. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.mjs +18 -0
  38. package/dist/lib/arrange/infra/ts-ast-translator.adapter.mjs +355 -0
  39. package/dist/lib/arrange/presentation/arrange-cli-schema.presenter.mjs +29 -0
  40. package/dist/lib/arrange/presentation/arrange-sync.presenter.mjs +12 -0
  41. package/dist/lib/arrange/presentation/formatters.presenter.mjs +2 -0
  42. package/dist/lib/arrange/presentation/group-file-preview.presenter.mjs +275 -0
  43. package/dist/lib/arrange/presentation/prepare-arrange.orchestrator.mjs +258 -0
  44. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.mjs +7 -0
  45. package/dist/lib/arrange/presentation/present-analyze-report.presenter.mjs +233 -0
  46. package/dist/lib/arrange/presentation/report.presenter.mjs +24 -0
  47. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.mjs +21 -0
  48. package/dist/lib/config/application/use-cases/load-config.use-case.mjs +17 -0
  49. package/dist/lib/config/contracts/tokens.mjs +5 -0
  50. package/dist/lib/config/infra/config-schema.adapter.mjs +25 -0
  51. package/dist/lib/config/infra/loader.adapter.mjs +84 -0
  52. package/dist/lib/core/application/architecture-boundaries.policy.mjs +311 -0
  53. package/dist/lib/core/application/ports/path.port.mjs +1 -0
  54. package/dist/lib/core/application/schema-parse.util.mjs +17 -0
  55. package/dist/lib/core/application/utils/caught-unknown-message.util.mjs +19 -0
  56. package/dist/lib/core/application/utils/verbose-diagnostics.util.mjs +9 -0
  57. package/dist/lib/core/contracts/presentation.contract.mjs +1 -0
  58. package/dist/lib/core/contracts/tokens.mjs +5 -0
  59. package/dist/lib/core/core.module.mjs +9 -0
  60. package/dist/lib/core/domain/cli-exit-codes.domain.mjs +11 -0
  61. package/dist/lib/core/domain/errors.domain.mjs +16 -0
  62. package/dist/lib/core/domain/result.model.mjs +23 -0
  63. package/dist/lib/core/infra/composition-root.mjs +21 -0
  64. package/dist/lib/core/infra/infra.module.mjs +23 -0
  65. package/dist/lib/core/infra/logging-decorator.adapter.mjs +62 -0
  66. package/dist/lib/core/infra/path.adapter.mjs +13 -0
  67. package/dist/lib/core/operational/contracts/tokens.mjs +7 -0
  68. package/dist/lib/core/presentation/cli-executor.presenter.mjs +57 -0
  69. package/dist/lib/core/presentation/command.interface.mjs +1 -0
  70. package/dist/lib/core/presentation/format-app-error.presenter.mjs +17 -0
  71. package/dist/lib/core/presentation/global-cli-options.presenter.mjs +9 -0
  72. package/dist/lib/core/presentation/load-codefast-config.presenter.mjs +18 -0
  73. package/dist/lib/core/presentation/parse-cli-schema.presenter.mjs +7 -0
  74. package/dist/lib/core/presentation/presentation.module.mjs +11 -0
  75. package/dist/lib/core/presentation/try-load-codefast-config.presenter.mjs +245 -0
  76. package/dist/lib/infra/config-reporter.adapter.mjs +9 -0
  77. package/dist/lib/infra/fs-contract.port.mjs +1 -0
  78. package/dist/lib/infra/node-io.adapter.mjs +266 -0
  79. package/dist/lib/infra/workspace/repo-root.adapter.mjs +21 -0
  80. package/dist/lib/kernel/di/command.token.mjs +5 -0
  81. package/dist/lib/mirror/application/mirror-sync-json.format.mjs +12 -0
  82. package/dist/lib/mirror/application/ports/file-system-service.port.mjs +1 -0
  83. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.mjs +1 -0
  84. package/dist/lib/mirror/application/ports/package-repository.port.mjs +1 -0
  85. package/dist/lib/mirror/application/ports/sync-workspace-package.port.mjs +1 -0
  86. package/dist/lib/mirror/application/ports/workspace-service.port.mjs +1 -0
  87. package/dist/lib/mirror/application/requests/mirror-sync.request.mjs +1 -0
  88. package/dist/lib/mirror/application/services/sync-workspace-package.service.mjs +351 -0
  89. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.mjs +219 -0
  90. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.mjs +302 -0
  91. package/dist/lib/mirror/contracts/models.mjs +1 -0
  92. package/dist/lib/mirror/contracts/presentation.contract.mjs +1 -0
  93. package/dist/lib/mirror/contracts/tokens.mjs +11 -0
  94. package/dist/lib/mirror/contracts/use-cases.contract.mjs +1 -0
  95. package/dist/lib/mirror/domain/constants.domain.mjs +16 -0
  96. package/dist/lib/mirror/domain/errors.domain.mjs +15 -0
  97. package/dist/lib/mirror/domain/types.domain.mjs +1 -0
  98. package/dist/lib/mirror/infra/dirent-list.adapter.mjs +13 -0
  99. package/dist/lib/mirror/infra/file-system-service.adapter.mjs +256 -0
  100. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.mjs +1 -0
  101. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.mjs +236 -0
  102. package/dist/lib/mirror/infra/package-filter.adapter.mjs +25 -0
  103. package/dist/lib/mirror/infra/package-repository.adapter.mjs +235 -0
  104. package/dist/lib/mirror/infra/path-normalizer.adapter.mjs +7 -0
  105. package/dist/lib/mirror/infra/update-pkg.adapter.mjs +102 -0
  106. package/dist/lib/mirror/infra/workspace-packages.adapter.mjs +154 -0
  107. package/dist/lib/mirror/infra/workspace-service.adapter.mjs +232 -0
  108. package/dist/lib/mirror/mirror.feature.module.mjs +19 -0
  109. package/dist/lib/mirror/mirror.module.mjs +23 -0
  110. package/dist/lib/mirror/mirror.presentation.module.mjs +11 -0
  111. package/dist/lib/mirror/presentation/mirror-cli-schema.presenter.mjs +12 -0
  112. package/dist/lib/mirror/presentation/prepare-mirror.orchestrator.mjs +263 -0
  113. package/dist/lib/mirror/presentation/reporter.presenter.mjs +111 -0
  114. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.mjs +20 -0
  115. package/dist/lib/shared/source-code/domain/text-edit.model.mjs +28 -0
  116. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.mjs +33 -0
  117. package/dist/lib/tag/application/ports/tag-since-writer.port.mjs +1 -0
  118. package/dist/lib/tag/application/ports/tag-version-resolver.port.mjs +1 -0
  119. package/dist/lib/tag/application/ports/target-resolver.port.mjs +1 -0
  120. package/dist/lib/tag/application/ports/typescript-tree-walk.port.mjs +1 -0
  121. package/dist/lib/tag/application/requests/tag-sync.request.mjs +1 -0
  122. package/dist/lib/tag/application/tag-sync-cli-result.mjs +11 -0
  123. package/dist/lib/tag/application/tag-sync-json.format.mjs +14 -0
  124. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.mjs +398 -0
  125. package/dist/lib/tag/contracts/models.mjs +1 -0
  126. package/dist/lib/tag/contracts/presentation.contract.mjs +1 -0
  127. package/dist/lib/tag/contracts/tokens.mjs +12 -0
  128. package/dist/lib/tag/contracts/use-cases.contract.mjs +1 -0
  129. package/dist/lib/tag/domain/types.domain.mjs +1 -0
  130. package/dist/lib/tag/infra/tag-since-writer.adapter.mjs +343 -0
  131. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.mjs +1 -0
  132. package/dist/lib/tag/infra/tag-target-candidates.adapter.mjs +170 -0
  133. package/dist/lib/tag/infra/tag-target-resolver.adapter.mjs +226 -0
  134. package/dist/lib/tag/infra/tag-version-resolver.adapter.mjs +247 -0
  135. package/dist/lib/tag/infra/typescript-tree-walk.adapter.mjs +226 -0
  136. package/dist/lib/tag/presentation/colors.presenter.mjs +12 -0
  137. package/dist/lib/tag/presentation/create-tag-progress-listener.presenter.mjs +228 -0
  138. package/dist/lib/tag/presentation/prepare-tag.orchestrator.mjs +264 -0
  139. package/dist/lib/tag/presentation/present-tag-sync-result.presenter.mjs +233 -0
  140. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.mjs +9 -0
  141. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.mjs +12 -0
  142. package/dist/lib/tag/presentation/tag-cli-schema.presenter.mjs +12 -0
  143. package/dist/lib/tag/presentation/tag-sync.presenter.mjs +78 -0
  144. package/dist/lib/tag/tag.feature.module.mjs +19 -0
  145. package/dist/lib/tag/tag.module.mjs +21 -0
  146. package/dist/lib/tag/tag.presentation.module.mjs +15 -0
  147. package/dist/program.mjs +39 -0
  148. package/package.json +16 -19
  149. package/dist/bin.d.ts +0 -3
  150. package/dist/bin.d.ts.map +0 -1
  151. package/dist/commands/arrange.d.ts +0 -3
  152. package/dist/commands/arrange.d.ts.map +0 -1
  153. package/dist/commands/arrange.js +0 -108
  154. package/dist/commands/mirror.d.ts +0 -3
  155. package/dist/commands/mirror.d.ts.map +0 -1
  156. package/dist/commands/mirror.js +0 -36
  157. package/dist/commands/tag.d.ts +0 -3
  158. package/dist/commands/tag.d.ts.map +0 -1
  159. package/dist/commands/tag.js +0 -44
  160. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts +0 -5
  161. package/dist/lib/arrange/application/ports/domain-source-parser.port.d.ts.map +0 -1
  162. package/dist/lib/arrange/application/ports/file-walker.port.d.ts +0 -5
  163. package/dist/lib/arrange/application/ports/file-walker.port.d.ts.map +0 -1
  164. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts +0 -6
  165. package/dist/lib/arrange/application/requests/analyze-directory.request.d.ts.map +0 -1
  166. package/dist/lib/arrange/application/requests/analyze-directory.request.js +0 -4
  167. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts +0 -18
  168. package/dist/lib/arrange/application/requests/arrange-sync.request.d.ts.map +0 -1
  169. package/dist/lib/arrange/application/requests/arrange-sync.request.js +0 -15
  170. package/dist/lib/arrange/application/requests/suggest-groups.request.d.ts +0 -8
  171. package/dist/lib/arrange/application/requests/suggest-groups.request.d.ts.map +0 -1
  172. package/dist/lib/arrange/application/requests/suggest-groups.request.js +0 -8
  173. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.d.ts +0 -17
  174. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.d.ts.map +0 -1
  175. package/dist/lib/arrange/application/use-cases/analyze-directory.use-case.js +0 -24
  176. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.d.ts +0 -17
  177. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.d.ts.map +0 -1
  178. package/dist/lib/arrange/application/use-cases/group-file-preview.use-case.js +0 -46
  179. package/dist/lib/arrange/application/use-cases/group-file.use-case.d.ts +0 -5
  180. package/dist/lib/arrange/application/use-cases/group-file.use-case.d.ts.map +0 -1
  181. package/dist/lib/arrange/application/use-cases/group-file.use-case.js +0 -40
  182. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.d.ts +0 -19
  183. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.d.ts.map +0 -1
  184. package/dist/lib/arrange/application/use-cases/run-arrange-sync.use-case.js +0 -85
  185. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.d.ts +0 -7
  186. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.d.ts.map +0 -1
  187. package/dist/lib/arrange/application/use-cases/suggest-cn-groups.use-case.js +0 -10
  188. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts +0 -12
  189. package/dist/lib/arrange/domain/arrange-analyze.service.d.ts.map +0 -1
  190. package/dist/lib/arrange/domain/arrange-analyze.service.js +0 -116
  191. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts +0 -53
  192. package/dist/lib/arrange/domain/arrange-grouping.service.d.ts.map +0 -1
  193. package/dist/lib/arrange/domain/arrange-grouping.service.js +0 -106
  194. package/dist/lib/arrange/domain/ast/ast-helpers.helper.d.ts +0 -28
  195. package/dist/lib/arrange/domain/ast/ast-helpers.helper.d.ts.map +0 -1
  196. package/dist/lib/arrange/domain/ast/ast-helpers.helper.js +0 -130
  197. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts +0 -179
  198. package/dist/lib/arrange/domain/ast/ast-node.model.d.ts.map +0 -1
  199. package/dist/lib/arrange/domain/ast/ast-node.model.js +0 -210
  200. package/dist/lib/arrange/domain/ast/collectors-cn.collector.d.ts +0 -7
  201. package/dist/lib/arrange/domain/ast/collectors-cn.collector.d.ts.map +0 -1
  202. package/dist/lib/arrange/domain/ast/collectors-cn.collector.js +0 -70
  203. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.d.ts +0 -4
  204. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.d.ts.map +0 -1
  205. package/dist/lib/arrange/domain/ast/collectors-jsx.collector.js +0 -21
  206. package/dist/lib/arrange/domain/ast/collectors-tv.collector.d.ts +0 -13
  207. package/dist/lib/arrange/domain/ast/collectors-tv.collector.d.ts.map +0 -1
  208. package/dist/lib/arrange/domain/ast/collectors-tv.collector.js +0 -302
  209. package/dist/lib/arrange/domain/ast/targets.model.d.ts +0 -8
  210. package/dist/lib/arrange/domain/ast/targets.model.d.ts.map +0 -1
  211. package/dist/lib/arrange/domain/ast/targets.model.js +0 -147
  212. package/dist/lib/arrange/domain/constants.domain.d.ts +0 -70
  213. package/dist/lib/arrange/domain/constants.domain.d.ts.map +0 -1
  214. package/dist/lib/arrange/domain/constants.domain.js +0 -182
  215. package/dist/lib/arrange/domain/errors.domain.d.ts +0 -14
  216. package/dist/lib/arrange/domain/errors.domain.d.ts.map +0 -1
  217. package/dist/lib/arrange/domain/errors.domain.js +0 -16
  218. package/dist/lib/arrange/domain/grouping.domain.d.ts +0 -41
  219. package/dist/lib/arrange/domain/grouping.domain.d.ts.map +0 -1
  220. package/dist/lib/arrange/domain/grouping.domain.js +0 -371
  221. package/dist/lib/arrange/domain/imports.domain.d.ts +0 -7
  222. package/dist/lib/arrange/domain/imports.domain.d.ts.map +0 -1
  223. package/dist/lib/arrange/domain/imports.domain.js +0 -80
  224. package/dist/lib/arrange/domain/source-text-formatters.formatter.d.ts +0 -16
  225. package/dist/lib/arrange/domain/source-text-formatters.formatter.d.ts.map +0 -1
  226. package/dist/lib/arrange/domain/source-text-formatters.formatter.js +0 -55
  227. package/dist/lib/arrange/domain/tokenizer.util.d.ts +0 -45
  228. package/dist/lib/arrange/domain/tokenizer.util.d.ts.map +0 -1
  229. package/dist/lib/arrange/domain/tokenizer.util.js +0 -469
  230. package/dist/lib/arrange/domain/types.domain.d.ts +0 -115
  231. package/dist/lib/arrange/domain/types.domain.d.ts.map +0 -1
  232. package/dist/lib/arrange/domain/types.domain.js +0 -10
  233. package/dist/lib/arrange/index.d.ts +0 -45
  234. package/dist/lib/arrange/index.d.ts.map +0 -1
  235. package/dist/lib/arrange/index.js +0 -41
  236. package/dist/lib/arrange/infra/arrange-sync-cli-options.adapter.d.ts +0 -14
  237. package/dist/lib/arrange/infra/arrange-sync-cli-options.adapter.d.ts.map +0 -1
  238. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts +0 -11
  239. package/dist/lib/arrange/infra/domain-source-parser.adapter.d.ts.map +0 -1
  240. package/dist/lib/arrange/infra/domain-source-parser.adapter.js +0 -19
  241. package/dist/lib/arrange/infra/ensure-cn-import.adapter.d.ts +0 -3
  242. package/dist/lib/arrange/infra/ensure-cn-import.adapter.d.ts.map +0 -1
  243. package/dist/lib/arrange/infra/ensure-cn-import.adapter.js +0 -6
  244. package/dist/lib/arrange/infra/file-walker.adapter.d.ts +0 -8
  245. package/dist/lib/arrange/infra/file-walker.adapter.d.ts.map +0 -1
  246. package/dist/lib/arrange/infra/file-walker.adapter.js +0 -17
  247. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.d.ts +0 -8
  248. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.d.ts.map +0 -1
  249. package/dist/lib/arrange/infra/merge-cn-literal-pool-for-test.test-helper.js +0 -25
  250. package/dist/lib/arrange/infra/ts-ast-translator.adapter.d.ts +0 -10
  251. package/dist/lib/arrange/infra/ts-ast-translator.adapter.d.ts.map +0 -1
  252. package/dist/lib/arrange/infra/ts-ast-translator.adapter.js +0 -363
  253. package/dist/lib/arrange/presentation/arrange-prelude.presenter.d.ts +0 -14
  254. package/dist/lib/arrange/presentation/arrange-prelude.presenter.d.ts.map +0 -1
  255. package/dist/lib/arrange/presentation/arrange-prelude.presenter.js +0 -24
  256. package/dist/lib/arrange/presentation/formatters.presenter.d.ts +0 -3
  257. package/dist/lib/arrange/presentation/formatters.presenter.d.ts.map +0 -1
  258. package/dist/lib/arrange/presentation/formatters.presenter.js +0 -2
  259. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.d.ts +0 -4
  260. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.d.ts.map +0 -1
  261. package/dist/lib/arrange/presentation/present-analyze-cli.presenter.js +0 -4
  262. package/dist/lib/arrange/presentation/report.presenter.d.ts +0 -4
  263. package/dist/lib/arrange/presentation/report.presenter.d.ts.map +0 -1
  264. package/dist/lib/arrange/presentation/report.presenter.js +0 -37
  265. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.d.ts +0 -2
  266. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.d.ts.map +0 -1
  267. package/dist/lib/arrange/presentation/resolve-arrange-cli-target.presenter.js +0 -7
  268. package/dist/lib/config/domain/schema.domain.d.ts +0 -50
  269. package/dist/lib/config/domain/schema.domain.d.ts.map +0 -1
  270. package/dist/lib/config/domain/schema.domain.js +0 -43
  271. package/dist/lib/config/index.d.ts +0 -4
  272. package/dist/lib/config/index.d.ts.map +0 -1
  273. package/dist/lib/config/index.js +0 -2
  274. package/dist/lib/config/infra/loader.adapter.d.ts +0 -11
  275. package/dist/lib/config/infra/loader.adapter.d.ts.map +0 -1
  276. package/dist/lib/config/infra/loader.adapter.js +0 -90
  277. package/dist/lib/core/application/architecture-boundaries.policy.d.ts +0 -19
  278. package/dist/lib/core/application/architecture-boundaries.policy.d.ts.map +0 -1
  279. package/dist/lib/core/application/architecture-boundaries.policy.js +0 -370
  280. package/dist/lib/core/application/ports/cli-io.port.d.ts +0 -31
  281. package/dist/lib/core/application/ports/cli-io.port.d.ts.map +0 -1
  282. package/dist/lib/core/application/schema-parse.util.d.ts +0 -8
  283. package/dist/lib/core/application/schema-parse.util.d.ts.map +0 -1
  284. package/dist/lib/core/application/schema-parse.util.js +0 -20
  285. package/dist/lib/core/application/utils/caught-unknown-message.util.d.ts +0 -6
  286. package/dist/lib/core/application/utils/caught-unknown-message.util.d.ts.map +0 -1
  287. package/dist/lib/core/application/utils/caught-unknown-message.util.js +0 -34
  288. package/dist/lib/core/application/utils/verbose-diagnostics.util.d.ts +0 -5
  289. package/dist/lib/core/application/utils/verbose-diagnostics.util.d.ts.map +0 -1
  290. package/dist/lib/core/application/utils/verbose-diagnostics.util.js +0 -7
  291. package/dist/lib/core/domain/errors.domain.d.ts +0 -11
  292. package/dist/lib/core/domain/errors.domain.d.ts.map +0 -1
  293. package/dist/lib/core/domain/errors.domain.js +0 -9
  294. package/dist/lib/core/domain/result.model.d.ts +0 -17
  295. package/dist/lib/core/domain/result.model.d.ts.map +0 -1
  296. package/dist/lib/core/domain/result.model.js +0 -15
  297. package/dist/lib/core/infra/container.adapter.d.ts +0 -58
  298. package/dist/lib/core/infra/container.adapter.d.ts.map +0 -1
  299. package/dist/lib/core/infra/container.adapter.js +0 -80
  300. package/dist/lib/core/infra/logging-decorator.adapter.d.ts +0 -12
  301. package/dist/lib/core/infra/logging-decorator.adapter.d.ts.map +0 -1
  302. package/dist/lib/core/infra/logging-decorator.adapter.js +0 -75
  303. package/dist/lib/core/presentation/cli-executor.presenter.d.ts +0 -33
  304. package/dist/lib/core/presentation/cli-executor.presenter.d.ts.map +0 -1
  305. package/dist/lib/core/presentation/cli-executor.presenter.js +0 -73
  306. package/dist/lib/core/presentation/format-app-error.presenter.d.ts +0 -6
  307. package/dist/lib/core/presentation/format-app-error.presenter.d.ts.map +0 -1
  308. package/dist/lib/core/presentation/format-app-error.presenter.js +0 -19
  309. package/dist/lib/core/presentation/global-cli-options.presenter.d.ts +0 -9
  310. package/dist/lib/core/presentation/global-cli-options.presenter.d.ts.map +0 -1
  311. package/dist/lib/core/presentation/global-cli-options.presenter.js +0 -8
  312. package/dist/lib/core/presentation/load-codefast-config.presenter.d.ts +0 -8
  313. package/dist/lib/core/presentation/load-codefast-config.presenter.d.ts.map +0 -1
  314. package/dist/lib/core/presentation/load-codefast-config.presenter.js +0 -15
  315. package/dist/lib/core/presentation/parse-cli-schema.presenter.d.ts +0 -5
  316. package/dist/lib/core/presentation/parse-cli-schema.presenter.d.ts.map +0 -1
  317. package/dist/lib/core/presentation/parse-cli-schema.presenter.js +0 -4
  318. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.d.ts +0 -6
  319. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.d.ts.map +0 -1
  320. package/dist/lib/core/presentation/run-cli-use-case-after-parse.presenter.js +0 -17
  321. package/dist/lib/core/presentation/workspace-root-strict.presenter.d.ts +0 -5
  322. package/dist/lib/core/presentation/workspace-root-strict.presenter.d.ts.map +0 -1
  323. package/dist/lib/core/presentation/workspace-root-strict.presenter.js +0 -12
  324. package/dist/lib/infra/config-reporter.adapter.d.ts +0 -4
  325. package/dist/lib/infra/config-reporter.adapter.d.ts.map +0 -1
  326. package/dist/lib/infra/config-reporter.adapter.js +0 -9
  327. package/dist/lib/infra/fs-contract.port.d.ts +0 -2
  328. package/dist/lib/infra/fs-contract.port.d.ts.map +0 -1
  329. package/dist/lib/infra/node-io.adapter.d.ts +0 -4
  330. package/dist/lib/infra/node-io.adapter.d.ts.map +0 -1
  331. package/dist/lib/infra/node-io.adapter.js +0 -37
  332. package/dist/lib/infra/workspace/repo-root.adapter.d.ts +0 -7
  333. package/dist/lib/infra/workspace/repo-root.adapter.d.ts.map +0 -1
  334. package/dist/lib/infra/workspace/repo-root.adapter.js +0 -23
  335. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts +0 -6
  336. package/dist/lib/mirror/application/ports/file-system-service.port.d.ts.map +0 -1
  337. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts +0 -27
  338. package/dist/lib/mirror/application/ports/mirror-sync-reporter.port.d.ts.map +0 -1
  339. package/dist/lib/mirror/application/ports/package-repository.port.d.ts +0 -16
  340. package/dist/lib/mirror/application/ports/package-repository.port.d.ts.map +0 -1
  341. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts +0 -7
  342. package/dist/lib/mirror/application/ports/workspace-service.port.d.ts.map +0 -1
  343. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts +0 -10
  344. package/dist/lib/mirror/application/requests/mirror-sync.request.d.ts.map +0 -1
  345. package/dist/lib/mirror/application/requests/mirror-sync.request.js +0 -8
  346. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.d.ts +0 -10
  347. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.d.ts.map +0 -1
  348. package/dist/lib/mirror/application/use-cases/generate-mirror-exports.use-case.js +0 -271
  349. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.d.ts +0 -19
  350. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.d.ts.map +0 -1
  351. package/dist/lib/mirror/application/use-cases/run-mirror-sync.use-case.js +0 -168
  352. package/dist/lib/mirror/domain/constants.domain.d.ts +0 -6
  353. package/dist/lib/mirror/domain/constants.domain.d.ts.map +0 -1
  354. package/dist/lib/mirror/domain/constants.domain.js +0 -5
  355. package/dist/lib/mirror/domain/errors.domain.d.ts +0 -10
  356. package/dist/lib/mirror/domain/errors.domain.d.ts.map +0 -1
  357. package/dist/lib/mirror/domain/errors.domain.js +0 -12
  358. package/dist/lib/mirror/domain/types.domain.d.ts +0 -65
  359. package/dist/lib/mirror/domain/types.domain.d.ts.map +0 -1
  360. package/dist/lib/mirror/index.d.ts +0 -6
  361. package/dist/lib/mirror/index.d.ts.map +0 -1
  362. package/dist/lib/mirror/index.js +0 -1
  363. package/dist/lib/mirror/infra/dirent-list.adapter.d.ts +0 -9
  364. package/dist/lib/mirror/infra/dirent-list.adapter.d.ts.map +0 -1
  365. package/dist/lib/mirror/infra/dirent-list.adapter.js +0 -13
  366. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts +0 -7
  367. package/dist/lib/mirror/infra/file-system-service.adapter.d.ts.map +0 -1
  368. package/dist/lib/mirror/infra/file-system-service.adapter.js +0 -47
  369. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.d.ts +0 -14
  370. package/dist/lib/mirror/infra/mirror-sync-cli-options.adapter.d.ts.map +0 -1
  371. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts +0 -3
  372. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.d.ts.map +0 -1
  373. package/dist/lib/mirror/infra/mirror-sync-reporter.adapter.js +0 -13
  374. package/dist/lib/mirror/infra/package-filter.adapter.d.ts +0 -8
  375. package/dist/lib/mirror/infra/package-filter.adapter.d.ts.map +0 -1
  376. package/dist/lib/mirror/infra/package-filter.adapter.js +0 -33
  377. package/dist/lib/mirror/infra/package-repository.adapter.d.ts +0 -17
  378. package/dist/lib/mirror/infra/package-repository.adapter.d.ts.map +0 -1
  379. package/dist/lib/mirror/infra/package-repository.adapter.js +0 -17
  380. package/dist/lib/mirror/infra/path-normalizer.adapter.d.ts +0 -2
  381. package/dist/lib/mirror/infra/path-normalizer.adapter.d.ts.map +0 -1
  382. package/dist/lib/mirror/infra/path-normalizer.adapter.js +0 -4
  383. package/dist/lib/mirror/infra/update-pkg.adapter.d.ts +0 -19
  384. package/dist/lib/mirror/infra/update-pkg.adapter.d.ts.map +0 -1
  385. package/dist/lib/mirror/infra/update-pkg.adapter.js +0 -156
  386. package/dist/lib/mirror/infra/workspace-packages.adapter.d.ts +0 -26
  387. package/dist/lib/mirror/infra/workspace-packages.adapter.d.ts.map +0 -1
  388. package/dist/lib/mirror/infra/workspace-packages.adapter.js +0 -170
  389. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts +0 -8
  390. package/dist/lib/mirror/infra/workspace-service.adapter.d.ts.map +0 -1
  391. package/dist/lib/mirror/infra/workspace-service.adapter.js +0 -10
  392. package/dist/lib/mirror/presentation/mirror-prelude.presenter.d.ts +0 -17
  393. package/dist/lib/mirror/presentation/mirror-prelude.presenter.d.ts.map +0 -1
  394. package/dist/lib/mirror/presentation/mirror-prelude.presenter.js +0 -35
  395. package/dist/lib/mirror/presentation/reporter.presenter.d.ts +0 -25
  396. package/dist/lib/mirror/presentation/reporter.presenter.d.ts.map +0 -1
  397. package/dist/lib/mirror/presentation/reporter.presenter.js +0 -140
  398. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.d.ts +0 -11
  399. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.d.ts.map +0 -1
  400. package/dist/lib/mirror/presentation/resolve-mirror-package-arg.presenter.js +0 -27
  401. package/dist/lib/shared/source-code/domain/text-edit.model.d.ts +0 -14
  402. package/dist/lib/shared/source-code/domain/text-edit.model.d.ts.map +0 -1
  403. package/dist/lib/shared/source-code/domain/text-edit.model.js +0 -30
  404. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.d.ts +0 -4
  405. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.d.ts.map +0 -1
  406. package/dist/lib/shared/source-code/infra/tsx-file-walk.adapter.js +0 -37
  407. package/dist/lib/tag/application/ports/target-resolver.port.d.ts +0 -6
  408. package/dist/lib/tag/application/ports/target-resolver.port.d.ts.map +0 -1
  409. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts +0 -6
  410. package/dist/lib/tag/application/ports/typescript-tree-walk.port.d.ts.map +0 -1
  411. package/dist/lib/tag/application/requests/tag-sync.request.d.ts +0 -10
  412. package/dist/lib/tag/application/requests/tag-sync.request.d.ts.map +0 -1
  413. package/dist/lib/tag/application/requests/tag-sync.request.js +0 -8
  414. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.d.ts +0 -23
  415. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.d.ts.map +0 -1
  416. package/dist/lib/tag/application/use-cases/run-tag-sync.use-case.js +0 -357
  417. package/dist/lib/tag/domain/types.domain.d.ts +0 -56
  418. package/dist/lib/tag/domain/types.domain.d.ts.map +0 -1
  419. package/dist/lib/tag/index.d.ts +0 -14
  420. package/dist/lib/tag/index.d.ts.map +0 -1
  421. package/dist/lib/tag/index.js +0 -10
  422. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.d.ts +0 -14
  423. package/dist/lib/tag/infra/tag-sync-cli-options.adapter.d.ts.map +0 -1
  424. package/dist/lib/tag/infra/tag-target-candidates.adapter.d.ts +0 -4
  425. package/dist/lib/tag/infra/tag-target-candidates.adapter.d.ts.map +0 -1
  426. package/dist/lib/tag/infra/tag-target-candidates.adapter.js +0 -200
  427. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts +0 -3
  428. package/dist/lib/tag/infra/tag-target-resolver.adapter.d.ts.map +0 -1
  429. package/dist/lib/tag/infra/tag-target-resolver.adapter.js +0 -4
  430. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts +0 -3
  431. package/dist/lib/tag/infra/typescript-tree-walk.adapter.d.ts.map +0 -1
  432. package/dist/lib/tag/infra/typescript-tree-walk.adapter.js +0 -4
  433. package/dist/lib/tag/presentation/colors.presenter.d.ts +0 -8
  434. package/dist/lib/tag/presentation/colors.presenter.d.ts.map +0 -1
  435. package/dist/lib/tag/presentation/colors.presenter.js +0 -9
  436. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.d.ts +0 -8
  437. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.d.ts.map +0 -1
  438. package/dist/lib/tag/presentation/resolve-tag-cli-target.presenter.js +0 -10
  439. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.d.ts +0 -8
  440. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.d.ts.map +0 -1
  441. package/dist/lib/tag/presentation/resolve-tag-workspace-root.presenter.js +0 -10
  442. package/dist/lib/tag/presentation/tag-prelude.presenter.d.ts +0 -15
  443. package/dist/lib/tag/presentation/tag-prelude.presenter.d.ts.map +0 -1
  444. package/dist/lib/tag/presentation/tag-prelude.presenter.js +0 -31
  445. package/dist/lib/tag/presentation/tag-sync.presenter.d.ts +0 -20
  446. package/dist/lib/tag/presentation/tag-sync.presenter.d.ts.map +0 -1
  447. package/dist/lib/tag/presentation/tag-sync.presenter.js +0 -92
  448. package/dist/program.d.ts +0 -4
  449. package/dist/program.d.ts.map +0 -1
  450. package/dist/program.js +0 -40
  451. /package/dist/lib/arrange/application/ports/{domain-source-parser.port.js → domain-source-parser.port.mjs} +0 -0
  452. /package/dist/lib/arrange/application/ports/{file-walker.port.js → file-walker.port.mjs} +0 -0
  453. /package/dist/lib/arrange/{infra/arrange-sync-cli-options.adapter.js → application/ports/group-file-preview.port.mjs} +0 -0
  454. /package/dist/lib/{core/application/ports/cli-io.port.js → arrange/application/requests/analyze-directory.request.mjs} +0 -0
  455. /package/dist/lib/{infra/fs-contract.port.js → arrange/application/requests/arrange-sync.request.mjs} +0 -0
  456. /package/dist/lib/{mirror/application/ports/file-system-service.port.js → arrange/application/requests/suggest-groups.request.mjs} +0 -0
  457. /package/dist/lib/{mirror/application/ports/mirror-sync-reporter.port.js → arrange/contracts/models.mjs} +0 -0
  458. /package/dist/lib/{mirror/application/ports/package-repository.port.js → arrange/contracts/presentation.contract.mjs} +0 -0
  459. /package/dist/lib/{mirror/application/ports/workspace-service.port.js → arrange/contracts/services.contract.mjs} +0 -0
  460. /package/dist/lib/{mirror/domain/types.domain.js → arrange/contracts/use-cases.contract.mjs} +0 -0
  461. /package/dist/lib/{mirror/infra/mirror-sync-cli-options.adapter.js → arrange/domain/types.domain.mjs} +0 -0
  462. /package/dist/lib/{tag/application/ports/target-resolver.port.js → arrange/infra/arrange-sync-cli-options.adapter.mjs} +0 -0
  463. /package/dist/lib/{tag/application/ports/typescript-tree-walk.port.js → config/application/ports/config-loader.port.mjs} +0 -0
  464. /package/dist/lib/{tag/domain/types.domain.js → config/domain/schema.domain.mjs} +0 -0
  465. /package/dist/lib/{tag/infra/tag-sync-cli-options.adapter.js → core/application/ports/cli-io.port.mjs} +0 -0
@@ -0,0 +1,258 @@
1
+ import { CliFsToken } from "../../core/operational/contracts/tokens.mjs";
2
+ import { appError } from "../../core/domain/errors.domain.mjs";
3
+ import { err, ok } from "../../core/domain/result.model.mjs";
4
+ import { messageFromCaughtUnknown } from "../../core/application/utils/caught-unknown-message.util.mjs";
5
+ import { findRepoRoot } from "../../infra/workspace/repo-root.adapter.mjs";
6
+ import { resolveArrangeCliTargetPath } from "./resolve-arrange-cli-target.presenter.mjs";
7
+ import { TryLoadCodefastConfigPresenterToken } from "../../core/contracts/tokens.mjs";
8
+ import { inject, injectable } from "@codefast/di";
9
+ //#region src/lib/arrange/presentation/prepare-arrange.orchestrator.ts
10
+ function toPrimitive(input, hint) {
11
+ if (typeof input !== "object" || input === null) return input;
12
+ var prim = input[Symbol.toPrimitive];
13
+ if (prim !== void 0) {
14
+ var res = prim.call(input, hint || "default");
15
+ if (typeof res !== "object") return res;
16
+ throw new TypeError("@@toPrimitive must return a primitive value.");
17
+ }
18
+ return (hint === "string" ? String : Number)(input);
19
+ }
20
+ function toPropertyKey(arg) {
21
+ var key = toPrimitive(arg, "string");
22
+ return typeof key === "symbol" ? key : String(key);
23
+ }
24
+ function checkInRHS(value) {
25
+ if (Object(value) !== value) throw TypeError("right-hand side of 'in' should be an object, got " + (value !== null ? typeof value : "null"));
26
+ return value;
27
+ }
28
+ function setFunctionName(fn, name, prefix) {
29
+ if (typeof name === "symbol") {
30
+ name = name.description;
31
+ name = name ? "[" + name + "]" : "";
32
+ }
33
+ try {
34
+ Object.defineProperty(fn, "name", {
35
+ configurable: true,
36
+ value: prefix ? prefix + " " + name : name
37
+ });
38
+ } catch (_) {}
39
+ return fn;
40
+ }
41
+ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis, instanceBrand, parentClass) {
42
+ var symbolMetadata = Symbol.metadata || Symbol.for("Symbol.metadata");
43
+ var defineProperty = Object.defineProperty;
44
+ var create = Object.create;
45
+ var metadata;
46
+ var existingNonFields = [create(null), create(null)];
47
+ var hasClassDecs = classDecs.length;
48
+ var _;
49
+ function createRunInitializers(initializers, useStaticThis, hasValue) {
50
+ return function(thisArg, value) {
51
+ if (useStaticThis) {
52
+ value = thisArg;
53
+ thisArg = targetClass;
54
+ }
55
+ for (var i = 0; i < initializers.length; i++) value = initializers[i].apply(thisArg, hasValue ? [value] : []);
56
+ return hasValue ? value : thisArg;
57
+ };
58
+ }
59
+ function assertCallable(fn, hint1, hint2, throwUndefined) {
60
+ if (typeof fn !== "function") {
61
+ if (throwUndefined || fn !== void 0) throw new TypeError(hint1 + " must " + (hint2 || "be") + " a function" + (throwUndefined ? "" : " or undefined"));
62
+ }
63
+ return fn;
64
+ }
65
+ function applyDec(Class, decInfo, decoratorsHaveThis, name, kind, initializers, ret, isStatic, isPrivate, isField, hasPrivateBrand) {
66
+ function assertInstanceIfPrivate(target) {
67
+ if (!hasPrivateBrand(target)) throw new TypeError("Attempted to access private element on non-instance");
68
+ }
69
+ var decs = [].concat(decInfo[0]);
70
+ var decVal = decInfo[3];
71
+ var isClass = !ret;
72
+ var isAccessor = kind === 1;
73
+ var isGetter = kind === 3;
74
+ var isSetter = kind === 4;
75
+ var isMethod = kind === 2;
76
+ function bindPropCall(name, useStaticThis, before) {
77
+ return function(_this, value) {
78
+ if (useStaticThis) {
79
+ value = _this;
80
+ _this = Class;
81
+ }
82
+ if (before) before(_this);
83
+ return desc[name].call(_this, value);
84
+ };
85
+ }
86
+ var desc1 = {};
87
+ var init = [];
88
+ var key = isGetter ? "get" : isSetter || isAccessor ? "set" : "value";
89
+ if (!isClass) {
90
+ if (isPrivate) {
91
+ if (isField || isAccessor) desc1 = {
92
+ get: setFunctionName(function() {
93
+ return decVal(this);
94
+ }, name, "get"),
95
+ set: function(value) {
96
+ decInfo[4](this, value);
97
+ }
98
+ };
99
+ else desc1[key] = decVal;
100
+ if (!isField) setFunctionName(desc1[key], name, isMethod ? "" : key);
101
+ } else if (!isField) desc1 = Object.getOwnPropertyDescriptor(Class, name);
102
+ if (!isField && !isPrivate) {
103
+ _ = existingNonFields[+isStatic][name];
104
+ if (_ && (_ ^ kind) !== 7) throw new Error("Decorating two elements with the same name (" + desc1[key].name + ") is not supported yet");
105
+ existingNonFields[+isStatic][name] = kind < 3 ? 1 : kind;
106
+ }
107
+ }
108
+ var newValue = Class;
109
+ for (var i = decs.length - 1; i >= 0; i -= decoratorsHaveThis ? 2 : 1) {
110
+ var dec = assertCallable(decs[i], "A decorator", "be", true);
111
+ var decThis = decoratorsHaveThis ? decs[i - 1] : void 0;
112
+ var decoratorFinishedRef = {};
113
+ var ctx = {
114
+ kind: [
115
+ "field",
116
+ "accessor",
117
+ "method",
118
+ "getter",
119
+ "setter",
120
+ "class"
121
+ ][kind],
122
+ name,
123
+ metadata,
124
+ addInitializer: (function(decoratorFinishedRef, initializer) {
125
+ if (decoratorFinishedRef.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
126
+ assertCallable(initializer, "An initializer", "be", true);
127
+ initializers.push(initializer);
128
+ }).bind(null, decoratorFinishedRef)
129
+ };
130
+ if (isClass) {
131
+ _ = dec.call(decThis, newValue, ctx);
132
+ decoratorFinishedRef.v = 1;
133
+ if (assertCallable(_, "class decorators", "return")) newValue = _;
134
+ continue;
135
+ }
136
+ ctx.static = isStatic;
137
+ ctx.private = isPrivate;
138
+ _ = ctx.access = { has: isPrivate ? hasPrivateBrand.bind() : function(target) {
139
+ return name in target;
140
+ } };
141
+ if (!isSetter) _.get = isPrivate ? isMethod ? function(_this) {
142
+ assertInstanceIfPrivate(_this);
143
+ return desc1.value;
144
+ } : bindPropCall("get", 0, assertInstanceIfPrivate) : function(target) {
145
+ return target[name];
146
+ };
147
+ if (!isMethod && !isGetter) _.set = isPrivate ? bindPropCall("set", 0, assertInstanceIfPrivate) : function(target, value) {
148
+ target[name] = value;
149
+ };
150
+ newValue = dec.call(decThis, isAccessor ? {
151
+ get: desc1.get,
152
+ set: desc1.set
153
+ } : desc1[key], ctx);
154
+ decoratorFinishedRef.v = 1;
155
+ if (isAccessor) {
156
+ if (typeof newValue === "object" && newValue) {
157
+ if (_ = assertCallable(newValue.get, "accessor.get")) desc1.get = _;
158
+ if (_ = assertCallable(newValue.set, "accessor.set")) desc1.set = _;
159
+ if (_ = assertCallable(newValue.init, "accessor.init")) init.unshift(_);
160
+ } else if (newValue !== void 0) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
161
+ } else if (assertCallable(newValue, (isField ? "field" : "method") + " decorators", "return")) if (isField) init.unshift(newValue);
162
+ else desc1[key] = newValue;
163
+ }
164
+ if (kind < 2) ret.push(createRunInitializers(init, isStatic, 1), createRunInitializers(initializers, isStatic, 0));
165
+ if (!isField && !isClass) if (isPrivate) if (isAccessor) ret.splice(-1, 0, bindPropCall("get", isStatic), bindPropCall("set", isStatic));
166
+ else ret.push(isMethod ? desc1[key] : assertCallable.call.bind(desc1[key]));
167
+ else defineProperty(Class, name, desc1);
168
+ return newValue;
169
+ }
170
+ function applyMemberDecs() {
171
+ var ret = [];
172
+ var protoInitializers;
173
+ var staticInitializers;
174
+ var pushInitializers = function(initializers) {
175
+ if (initializers) ret.push(createRunInitializers(initializers));
176
+ };
177
+ var applyMemberDecsOfKind = function(isStatic, isField) {
178
+ for (var i = 0; i < memberDecs.length; i++) {
179
+ var decInfo = memberDecs[i];
180
+ var kind = decInfo[1];
181
+ var kindOnly = kind & 7;
182
+ if ((kind & 8) == isStatic && !kindOnly == isField) {
183
+ var name = decInfo[2];
184
+ var isPrivate = !!decInfo[3];
185
+ var decoratorsHaveThis = kind & 16;
186
+ applyDec(isStatic ? targetClass : targetClass.prototype, decInfo, decoratorsHaveThis, isPrivate ? "#" + name : toPropertyKey(name), kindOnly, kindOnly < 2 ? [] : isStatic ? staticInitializers = staticInitializers || [] : protoInitializers = protoInitializers || [], ret, !!isStatic, isPrivate, isField, isStatic && isPrivate ? function(_) {
187
+ return checkInRHS(_) === targetClass;
188
+ } : instanceBrand);
189
+ }
190
+ }
191
+ };
192
+ applyMemberDecsOfKind(8, 0);
193
+ applyMemberDecsOfKind(0, 0);
194
+ applyMemberDecsOfKind(8, 1);
195
+ applyMemberDecsOfKind(0, 1);
196
+ pushInitializers(protoInitializers);
197
+ pushInitializers(staticInitializers);
198
+ return ret;
199
+ }
200
+ function defineMetadata(Class) {
201
+ return defineProperty(Class, symbolMetadata, {
202
+ configurable: true,
203
+ enumerable: true,
204
+ value: metadata
205
+ });
206
+ }
207
+ if (parentClass !== void 0) metadata = parentClass[symbolMetadata];
208
+ metadata = create(metadata == null ? null : metadata);
209
+ _ = applyMemberDecs();
210
+ if (!hasClassDecs) defineMetadata(targetClass);
211
+ return {
212
+ e: _,
213
+ get c() {
214
+ var initializers = [];
215
+ return hasClassDecs && [defineMetadata(targetClass = applyDec(targetClass, [classDecs], classDecsHaveThis, targetClass.name, 5, initializers)), createRunInitializers(initializers, 1)];
216
+ }
217
+ };
218
+ }
219
+ let _dec, _initClass;
220
+ _dec = injectable([inject(CliFsToken), inject(TryLoadCodefastConfigPresenterToken)]);
221
+ let _PrepareArrangeOrchestrator;
222
+ (class {
223
+ fs;
224
+ tryLoadCodefastConfig;
225
+ static {
226
+ ({c: [_PrepareArrangeOrchestrator, _initClass]} = _apply_decs_2311(this, [_dec], []));
227
+ }
228
+ constructor(fs, tryLoadCodefastConfig) {
229
+ this.fs = fs;
230
+ this.tryLoadCodefastConfig = tryLoadCodefastConfig;
231
+ }
232
+ async execute(args) {
233
+ const resolvedTarget = resolveArrangeCliTargetPath({
234
+ fs: this.fs,
235
+ currentWorkingDirectory: args.currentWorkingDirectory,
236
+ rawTarget: args.rawTarget
237
+ });
238
+ if (!this.fs.existsSync(resolvedTarget)) return err(appError("NOT_FOUND", `Not found: ${resolvedTarget}`));
239
+ let rootDir;
240
+ try {
241
+ rootDir = findRepoRoot(this.fs, args.currentWorkingDirectory);
242
+ } catch (caughtError) {
243
+ return err(appError("INFRA_FAILURE", messageFromCaughtUnknown(caughtError), caughtError));
244
+ }
245
+ const loadedOutcome = await this.tryLoadCodefastConfig.execute(rootDir);
246
+ if (!loadedOutcome.ok) return loadedOutcome;
247
+ return ok({
248
+ resolvedTarget,
249
+ rootDir,
250
+ config: loadedOutcome.value.config
251
+ });
252
+ }
253
+ static {
254
+ _initClass();
255
+ }
256
+ });
257
+ //#endregion
258
+ export { _PrepareArrangeOrchestrator as PrepareArrangeOrchestrator };
@@ -0,0 +1,7 @@
1
+ import { printAnalyzeReport } from "./report.presenter.mjs";
2
+ //#region src/lib/arrange/presentation/present-analyze-cli.presenter.ts
3
+ function presentAnalyzeCliReport(logger, resolvedTargetPath, report) {
4
+ printAnalyzeReport(resolvedTargetPath, report, logger);
5
+ }
6
+ //#endregion
7
+ export { presentAnalyzeCliReport };
@@ -0,0 +1,233 @@
1
+ import { CliLoggerToken } from "../../core/operational/contracts/tokens.mjs";
2
+ import { presentAnalyzeCliReport } from "./present-analyze-cli.presenter.mjs";
3
+ import { inject, injectable } from "@codefast/di";
4
+ //#region src/lib/arrange/presentation/present-analyze-report.presenter.ts
5
+ function toPrimitive(input, hint) {
6
+ if (typeof input !== "object" || input === null) return input;
7
+ var prim = input[Symbol.toPrimitive];
8
+ if (prim !== void 0) {
9
+ var res = prim.call(input, hint || "default");
10
+ if (typeof res !== "object") return res;
11
+ throw new TypeError("@@toPrimitive must return a primitive value.");
12
+ }
13
+ return (hint === "string" ? String : Number)(input);
14
+ }
15
+ function toPropertyKey(arg) {
16
+ var key = toPrimitive(arg, "string");
17
+ return typeof key === "symbol" ? key : String(key);
18
+ }
19
+ function checkInRHS(value) {
20
+ if (Object(value) !== value) throw TypeError("right-hand side of 'in' should be an object, got " + (value !== null ? typeof value : "null"));
21
+ return value;
22
+ }
23
+ function setFunctionName(fn, name, prefix) {
24
+ if (typeof name === "symbol") {
25
+ name = name.description;
26
+ name = name ? "[" + name + "]" : "";
27
+ }
28
+ try {
29
+ Object.defineProperty(fn, "name", {
30
+ configurable: true,
31
+ value: prefix ? prefix + " " + name : name
32
+ });
33
+ } catch (_) {}
34
+ return fn;
35
+ }
36
+ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis, instanceBrand, parentClass) {
37
+ var symbolMetadata = Symbol.metadata || Symbol.for("Symbol.metadata");
38
+ var defineProperty = Object.defineProperty;
39
+ var create = Object.create;
40
+ var metadata;
41
+ var existingNonFields = [create(null), create(null)];
42
+ var hasClassDecs = classDecs.length;
43
+ var _;
44
+ function createRunInitializers(initializers, useStaticThis, hasValue) {
45
+ return function(thisArg, value) {
46
+ if (useStaticThis) {
47
+ value = thisArg;
48
+ thisArg = targetClass;
49
+ }
50
+ for (var i = 0; i < initializers.length; i++) value = initializers[i].apply(thisArg, hasValue ? [value] : []);
51
+ return hasValue ? value : thisArg;
52
+ };
53
+ }
54
+ function assertCallable(fn, hint1, hint2, throwUndefined) {
55
+ if (typeof fn !== "function") {
56
+ if (throwUndefined || fn !== void 0) throw new TypeError(hint1 + " must " + (hint2 || "be") + " a function" + (throwUndefined ? "" : " or undefined"));
57
+ }
58
+ return fn;
59
+ }
60
+ function applyDec(Class, decInfo, decoratorsHaveThis, name, kind, initializers, ret, isStatic, isPrivate, isField, hasPrivateBrand) {
61
+ function assertInstanceIfPrivate(target) {
62
+ if (!hasPrivateBrand(target)) throw new TypeError("Attempted to access private element on non-instance");
63
+ }
64
+ var decs = [].concat(decInfo[0]);
65
+ var decVal = decInfo[3];
66
+ var isClass = !ret;
67
+ var isAccessor = kind === 1;
68
+ var isGetter = kind === 3;
69
+ var isSetter = kind === 4;
70
+ var isMethod = kind === 2;
71
+ function bindPropCall(name, useStaticThis, before) {
72
+ return function(_this, value) {
73
+ if (useStaticThis) {
74
+ value = _this;
75
+ _this = Class;
76
+ }
77
+ if (before) before(_this);
78
+ return desc[name].call(_this, value);
79
+ };
80
+ }
81
+ var desc1 = {};
82
+ var init = [];
83
+ var key = isGetter ? "get" : isSetter || isAccessor ? "set" : "value";
84
+ if (!isClass) {
85
+ if (isPrivate) {
86
+ if (isField || isAccessor) desc1 = {
87
+ get: setFunctionName(function() {
88
+ return decVal(this);
89
+ }, name, "get"),
90
+ set: function(value) {
91
+ decInfo[4](this, value);
92
+ }
93
+ };
94
+ else desc1[key] = decVal;
95
+ if (!isField) setFunctionName(desc1[key], name, isMethod ? "" : key);
96
+ } else if (!isField) desc1 = Object.getOwnPropertyDescriptor(Class, name);
97
+ if (!isField && !isPrivate) {
98
+ _ = existingNonFields[+isStatic][name];
99
+ if (_ && (_ ^ kind) !== 7) throw new Error("Decorating two elements with the same name (" + desc1[key].name + ") is not supported yet");
100
+ existingNonFields[+isStatic][name] = kind < 3 ? 1 : kind;
101
+ }
102
+ }
103
+ var newValue = Class;
104
+ for (var i = decs.length - 1; i >= 0; i -= decoratorsHaveThis ? 2 : 1) {
105
+ var dec = assertCallable(decs[i], "A decorator", "be", true);
106
+ var decThis = decoratorsHaveThis ? decs[i - 1] : void 0;
107
+ var decoratorFinishedRef = {};
108
+ var ctx = {
109
+ kind: [
110
+ "field",
111
+ "accessor",
112
+ "method",
113
+ "getter",
114
+ "setter",
115
+ "class"
116
+ ][kind],
117
+ name,
118
+ metadata,
119
+ addInitializer: (function(decoratorFinishedRef, initializer) {
120
+ if (decoratorFinishedRef.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
121
+ assertCallable(initializer, "An initializer", "be", true);
122
+ initializers.push(initializer);
123
+ }).bind(null, decoratorFinishedRef)
124
+ };
125
+ if (isClass) {
126
+ _ = dec.call(decThis, newValue, ctx);
127
+ decoratorFinishedRef.v = 1;
128
+ if (assertCallable(_, "class decorators", "return")) newValue = _;
129
+ continue;
130
+ }
131
+ ctx.static = isStatic;
132
+ ctx.private = isPrivate;
133
+ _ = ctx.access = { has: isPrivate ? hasPrivateBrand.bind() : function(target) {
134
+ return name in target;
135
+ } };
136
+ if (!isSetter) _.get = isPrivate ? isMethod ? function(_this) {
137
+ assertInstanceIfPrivate(_this);
138
+ return desc1.value;
139
+ } : bindPropCall("get", 0, assertInstanceIfPrivate) : function(target) {
140
+ return target[name];
141
+ };
142
+ if (!isMethod && !isGetter) _.set = isPrivate ? bindPropCall("set", 0, assertInstanceIfPrivate) : function(target, value) {
143
+ target[name] = value;
144
+ };
145
+ newValue = dec.call(decThis, isAccessor ? {
146
+ get: desc1.get,
147
+ set: desc1.set
148
+ } : desc1[key], ctx);
149
+ decoratorFinishedRef.v = 1;
150
+ if (isAccessor) {
151
+ if (typeof newValue === "object" && newValue) {
152
+ if (_ = assertCallable(newValue.get, "accessor.get")) desc1.get = _;
153
+ if (_ = assertCallable(newValue.set, "accessor.set")) desc1.set = _;
154
+ if (_ = assertCallable(newValue.init, "accessor.init")) init.unshift(_);
155
+ } else if (newValue !== void 0) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
156
+ } else if (assertCallable(newValue, (isField ? "field" : "method") + " decorators", "return")) if (isField) init.unshift(newValue);
157
+ else desc1[key] = newValue;
158
+ }
159
+ if (kind < 2) ret.push(createRunInitializers(init, isStatic, 1), createRunInitializers(initializers, isStatic, 0));
160
+ if (!isField && !isClass) if (isPrivate) if (isAccessor) ret.splice(-1, 0, bindPropCall("get", isStatic), bindPropCall("set", isStatic));
161
+ else ret.push(isMethod ? desc1[key] : assertCallable.call.bind(desc1[key]));
162
+ else defineProperty(Class, name, desc1);
163
+ return newValue;
164
+ }
165
+ function applyMemberDecs() {
166
+ var ret = [];
167
+ var protoInitializers;
168
+ var staticInitializers;
169
+ var pushInitializers = function(initializers) {
170
+ if (initializers) ret.push(createRunInitializers(initializers));
171
+ };
172
+ var applyMemberDecsOfKind = function(isStatic, isField) {
173
+ for (var i = 0; i < memberDecs.length; i++) {
174
+ var decInfo = memberDecs[i];
175
+ var kind = decInfo[1];
176
+ var kindOnly = kind & 7;
177
+ if ((kind & 8) == isStatic && !kindOnly == isField) {
178
+ var name = decInfo[2];
179
+ var isPrivate = !!decInfo[3];
180
+ var decoratorsHaveThis = kind & 16;
181
+ applyDec(isStatic ? targetClass : targetClass.prototype, decInfo, decoratorsHaveThis, isPrivate ? "#" + name : toPropertyKey(name), kindOnly, kindOnly < 2 ? [] : isStatic ? staticInitializers = staticInitializers || [] : protoInitializers = protoInitializers || [], ret, !!isStatic, isPrivate, isField, isStatic && isPrivate ? function(_) {
182
+ return checkInRHS(_) === targetClass;
183
+ } : instanceBrand);
184
+ }
185
+ }
186
+ };
187
+ applyMemberDecsOfKind(8, 0);
188
+ applyMemberDecsOfKind(0, 0);
189
+ applyMemberDecsOfKind(8, 1);
190
+ applyMemberDecsOfKind(0, 1);
191
+ pushInitializers(protoInitializers);
192
+ pushInitializers(staticInitializers);
193
+ return ret;
194
+ }
195
+ function defineMetadata(Class) {
196
+ return defineProperty(Class, symbolMetadata, {
197
+ configurable: true,
198
+ enumerable: true,
199
+ value: metadata
200
+ });
201
+ }
202
+ if (parentClass !== void 0) metadata = parentClass[symbolMetadata];
203
+ metadata = create(metadata == null ? null : metadata);
204
+ _ = applyMemberDecs();
205
+ if (!hasClassDecs) defineMetadata(targetClass);
206
+ return {
207
+ e: _,
208
+ get c() {
209
+ var initializers = [];
210
+ return hasClassDecs && [defineMetadata(targetClass = applyDec(targetClass, [classDecs], classDecsHaveThis, targetClass.name, 5, initializers)), createRunInitializers(initializers, 1)];
211
+ }
212
+ };
213
+ }
214
+ let _dec, _initClass;
215
+ _dec = injectable([inject(CliLoggerToken)]);
216
+ let _PresentAnalyzeReportPresenterImpl;
217
+ (class {
218
+ logger;
219
+ static {
220
+ ({c: [_PresentAnalyzeReportPresenterImpl, _initClass]} = _apply_decs_2311(this, [_dec], []));
221
+ }
222
+ constructor(logger) {
223
+ this.logger = logger;
224
+ }
225
+ present(resolvedTargetPath, report) {
226
+ presentAnalyzeCliReport(this.logger, resolvedTargetPath, report);
227
+ }
228
+ static {
229
+ _initClass();
230
+ }
231
+ });
232
+ //#endregion
233
+ export { _PresentAnalyzeReportPresenterImpl as PresentAnalyzeReportPresenterImpl };
@@ -0,0 +1,24 @@
1
+ import "../domain/constants.domain.mjs";
2
+ import path from "node:path";
3
+ //#region src/lib/arrange/presentation/report.presenter.ts
4
+ function printAnalyzeReport(analyzeRootDirectoryPath, analyzeReport, logger) {
5
+ const { out } = logger;
6
+ out(`Path: ${path.resolve(analyzeRootDirectoryPath)}`);
7
+ out(`.ts/.tsx files: ${analyzeReport.files}`);
8
+ out(`cn(...) call sites: ${analyzeReport.cnCallExpressions}`);
9
+ out(`tv(...) call sites: ${analyzeReport.tvCallExpressions}`);
10
+ out(`\nLong cn(...) string literals (≥18 tokens — consider splitting arguments): ${analyzeReport.longCnStringLiterals.length}`);
11
+ for (const findingEntry of analyzeReport.longCnStringLiterals.slice(0, 40)) out(` ${findingEntry.file}:${findingEntry.line} (${findingEntry.tokenCount} tokens) ${findingEntry.preview}`);
12
+ if (analyzeReport.longCnStringLiterals.length > 40) out(` … and ${analyzeReport.longCnStringLiterals.length - 40} more`);
13
+ out(`\nLong tv({...}) string literals in base/variants/… (≥18 tokens): ${analyzeReport.longTvStringLiterals.length}`);
14
+ for (const findingEntry of analyzeReport.longTvStringLiterals.slice(0, 40)) out(` ${findingEntry.file}:${findingEntry.line} (${findingEntry.tokenCount} tokens) ${findingEntry.preview}`);
15
+ if (analyzeReport.longTvStringLiterals.length > 40) out(` … and ${analyzeReport.longTvStringLiterals.length - 40} more`);
16
+ out(`\nJSX className="..." or className={'...'} (static strings, ≥18 tokens): ${analyzeReport.longJsxClassNameLiterals.length}`);
17
+ for (const findingEntry of analyzeReport.longJsxClassNameLiterals.slice(0, 40)) out(` ${findingEntry.file}:${findingEntry.line} (${findingEntry.tokenCount} tokens) ${findingEntry.preview}`);
18
+ if (analyzeReport.longJsxClassNameLiterals.length > 40) out(` … and ${analyzeReport.longJsxClassNameLiterals.length - 40} more`);
19
+ out(`\ncn(...) nested inside tv({...}) (prefer a string or array — preview/apply can rewrite): ${analyzeReport.cnInsideTvCalls.length}`);
20
+ for (const findingEntry of analyzeReport.cnInsideTvCalls.slice(0, 40)) out(` ${findingEntry.file}:${findingEntry.line} (${findingEntry.argCount} args) ${findingEntry.preview}`);
21
+ if (analyzeReport.cnInsideTvCalls.length > 40) out(` … and ${analyzeReport.cnInsideTvCalls.length - 40} more`);
22
+ }
23
+ //#endregion
24
+ export { printAnalyzeReport };
@@ -0,0 +1,21 @@
1
+ import path from "node:path";
2
+ //#region src/lib/arrange/presentation/resolve-arrange-cli-target.presenter.ts
3
+ const PACKAGE_JSON_FILE = "package.json";
4
+ function findNearestPackageDirectory(currentWorkingDirectory, fs) {
5
+ let currentDir = path.resolve(currentWorkingDirectory);
6
+ while (true) {
7
+ const packageJsonPath = path.join(currentDir, PACKAGE_JSON_FILE);
8
+ if (fs.existsSync(packageJsonPath)) return currentDir;
9
+ const parentDirectory = path.dirname(currentDir);
10
+ if (parentDirectory === currentDir) return;
11
+ currentDir = parentDirectory;
12
+ }
13
+ }
14
+ function resolveArrangeCliTargetPath(input) {
15
+ const explicitTargetPath = input.rawTarget ? path.isAbsolute(input.rawTarget) ? path.resolve(input.rawTarget) : path.resolve(input.currentWorkingDirectory, input.rawTarget) : void 0;
16
+ if (explicitTargetPath) return input.fs.canonicalPathSync(explicitTargetPath);
17
+ const resolvedDefaultTarget = findNearestPackageDirectory(input.currentWorkingDirectory, input.fs) ?? input.currentWorkingDirectory;
18
+ return input.fs.canonicalPathSync(resolvedDefaultTarget);
19
+ }
20
+ //#endregion
21
+ export { resolveArrangeCliTargetPath };
@@ -0,0 +1,17 @@
1
+ import { appError } from "../../../core/domain/errors.domain.mjs";
2
+ import { err, ok } from "../../../core/domain/result.model.mjs";
3
+ import { messageFromCaughtUnknown } from "../../../core/application/utils/caught-unknown-message.util.mjs";
4
+ //#region src/lib/config/application/use-cases/load-config.use-case.ts
5
+ async function loadCodefastConfig(configLoader, fs, rootDir) {
6
+ try {
7
+ const { config, warnings } = await configLoader.loadConfig(fs, rootDir);
8
+ return ok({
9
+ config,
10
+ warnings
11
+ });
12
+ } catch (caughtError) {
13
+ return err(appError("INFRA_FAILURE", messageFromCaughtUnknown(caughtError), caughtError));
14
+ }
15
+ }
16
+ //#endregion
17
+ export { loadCodefastConfig };
@@ -0,0 +1,5 @@
1
+ import { token } from "@codefast/di";
2
+ //#region src/lib/config/contracts/tokens.ts
3
+ const ConfigLoaderPortToken = token("ConfigLoaderPort");
4
+ //#endregion
5
+ export { ConfigLoaderPortToken };
@@ -0,0 +1,25 @@
1
+ import { z } from "zod";
2
+ //#region src/lib/config/infra/config-schema.adapter.ts
3
+ const hookSchema = z.custom((value) => typeof value === "function", { message: "Expected a function" });
4
+ const mirrorConfigSchema = z.object({
5
+ skipPackages: z.array(z.string()).optional(),
6
+ pathTransformations: z.record(z.string(), z.object({ removePrefix: z.string().optional() }).strict()).optional(),
7
+ customExports: z.record(z.string(), z.record(z.string(), z.string())).optional(),
8
+ cssExports: z.record(z.string(), z.union([z.boolean(), z.object({
9
+ enabled: z.boolean().optional(),
10
+ customExports: z.record(z.string(), z.string()).optional(),
11
+ forceExportFiles: z.boolean().optional()
12
+ }).strict()])).optional()
13
+ }).strict();
14
+ const codefastTagConfigSchema = z.object({
15
+ skipPackages: z.array(z.string()).optional(),
16
+ onAfterWrite: hookSchema.optional()
17
+ }).strict();
18
+ const codefastArrangeConfigSchema = z.object({ onAfterWrite: hookSchema.optional() }).strict();
19
+ const codefastConfigSchema = z.object({
20
+ mirror: mirrorConfigSchema.optional(),
21
+ tag: codefastTagConfigSchema.optional(),
22
+ arrange: codefastArrangeConfigSchema.optional()
23
+ }).strict();
24
+ //#endregion
25
+ export { codefastArrangeConfigSchema, codefastConfigSchema, codefastTagConfigSchema, hookSchema, mirrorConfigSchema };
@@ -0,0 +1,84 @@
1
+ import { codefastConfigSchema } from "./config-schema.adapter.mjs";
2
+ import path from "node:path";
3
+ import { ZodError } from "zod";
4
+ import jiti from "jiti";
5
+ //#region src/lib/config/infra/loader.adapter.ts
6
+ const CONFIG_JS_PRIORITY = [
7
+ "codefast.config.mjs",
8
+ "codefast.config.js",
9
+ "codefast.config.cjs"
10
+ ];
11
+ const CONFIG_JSON = "codefast.config.json";
12
+ const cachedLoads = /* @__PURE__ */ new Map();
13
+ function formatZodError(error, filePath) {
14
+ const formatted = error.issues.map((issue) => {
15
+ return ` - ${issue.path.length > 0 ? issue.path.join(".") : "<root>"}: ${issue.message}`;
16
+ }).join("\n");
17
+ return `Invalid config schema in ${path.basename(filePath)}:\n${formatted}`;
18
+ }
19
+ function parseLoadedConfig(raw, filePath) {
20
+ try {
21
+ return codefastConfigSchema.parse(raw);
22
+ } catch (caughtError) {
23
+ if (caughtError instanceof ZodError) throw new Error(formatZodError(caughtError, filePath));
24
+ throw caughtError;
25
+ }
26
+ }
27
+ function listConfigCandidates(startDir, fs) {
28
+ const candidates = [];
29
+ let current = path.resolve(startDir);
30
+ while (true) {
31
+ for (const name of CONFIG_JS_PRIORITY) {
32
+ const candidate = path.join(current, name);
33
+ if (fs.existsSync(candidate)) candidates.push(candidate);
34
+ }
35
+ const jsonCandidate = path.join(current, CONFIG_JSON);
36
+ if (fs.existsSync(jsonCandidate)) candidates.push(jsonCandidate);
37
+ const parent = path.dirname(current);
38
+ if (parent === current) break;
39
+ current = parent;
40
+ }
41
+ return candidates;
42
+ }
43
+ async function readConfigFromPath(filePath, fs, jitiBaseDir) {
44
+ if (path.extname(filePath) === ".json") {
45
+ const content = await fs.readFile(filePath, "utf8");
46
+ return parseLoadedConfig(JSON.parse(content), filePath);
47
+ }
48
+ const moduleConfig = jiti(jitiBaseDir, {
49
+ interopDefault: true,
50
+ moduleCache: false
51
+ })(filePath);
52
+ return parseLoadedConfig(typeof moduleConfig === "object" && moduleConfig !== null && "default" in moduleConfig ? moduleConfig.default : moduleConfig, filePath);
53
+ }
54
+ async function loadOnce(fs, startDir) {
55
+ const warnings = [];
56
+ const configPaths = listConfigCandidates(startDir, fs);
57
+ if (configPaths.length === 0) return {
58
+ config: {},
59
+ warnings
60
+ };
61
+ const configPath = configPaths[0];
62
+ if (configPath === void 0) return {
63
+ config: {},
64
+ warnings
65
+ };
66
+ return {
67
+ config: await readConfigFromPath(configPath, fs, startDir),
68
+ warnings,
69
+ configPath
70
+ };
71
+ }
72
+ async function loadConfig(fs, startDir) {
73
+ const cacheKey = path.resolve(startDir);
74
+ if (!cachedLoads.has(cacheKey)) cachedLoads.set(cacheKey, loadOnce(fs, cacheKey));
75
+ const cached = cachedLoads.get(cacheKey);
76
+ if (cached === void 0) throw new Error("config loader cache invariant violated");
77
+ return cached;
78
+ }
79
+ function resetConfigLoaderCacheForTests() {
80
+ cachedLoads.clear();
81
+ }
82
+ const configLoaderAdapter = { loadConfig };
83
+ //#endregion
84
+ export { configLoaderAdapter, loadConfig, resetConfigLoaderCacheForTests };