@codefast/cli 0.3.14-canary.2 → 0.3.15

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 (205) hide show
  1. package/README.md +8 -3
  2. package/dist/bootstrap/cli-application.module.mjs +18 -0
  3. package/dist/bootstrap/composition-root.mjs +14 -0
  4. package/dist/bootstrap/register-cli-command-trees.mjs +7 -0
  5. package/dist/{lib → domains}/arrange/application/use-cases/analyze-directory.use-case.mjs +12 -12
  6. package/dist/{lib → domains}/arrange/application/use-cases/prepare-arrange-workspace.use-case.mjs +19 -18
  7. package/dist/{lib → domains}/arrange/application/use-cases/run-arrange-sync.use-case.mjs +18 -18
  8. package/dist/{lib → domains}/arrange/application/use-cases/suggest-cn-groups.use-case.mjs +5 -5
  9. package/dist/domains/arrange/arrange.module.mjs +38 -0
  10. package/dist/domains/arrange/composition/tokens.mjs +17 -0
  11. package/dist/{lib/arrange/domain/arrange-analyze.service.mjs → domains/arrange/domain/arrange-analyze.domain-service.mjs} +1 -1
  12. package/dist/{lib/arrange/domain/arrange-grouping.service.mjs → domains/arrange/domain/arrange-grouping.domain-service.mjs} +2 -2
  13. package/dist/{lib → domains}/arrange/domain/ast/ast-helpers.helper.mjs +2 -2
  14. package/dist/{lib → domains}/arrange/domain/ast/ast-node.model.mjs +1 -1
  15. package/dist/{lib → domains}/arrange/domain/ast/collectors-cn.collector.mjs +1 -1
  16. package/dist/{lib → domains}/arrange/domain/ast/collectors-jsx.collector.mjs +1 -1
  17. package/dist/{lib → domains}/arrange/domain/ast/collectors-tv.collector.mjs +1 -1
  18. package/dist/{lib → domains}/arrange/domain/ast/targets.model.mjs +2 -2
  19. package/dist/{lib → domains}/arrange/domain/constants.domain.mjs +1 -1
  20. package/dist/{lib → domains}/arrange/domain/grouping.domain.mjs +1 -1
  21. package/dist/{lib → domains}/arrange/domain/imports.domain.mjs +1 -1
  22. package/dist/{lib → domains}/arrange/domain/source-text-formatters.formatter.mjs +2 -2
  23. package/dist/{lib/arrange/domain/tailwind-grouping.service.mjs → domains/arrange/domain/tailwind-grouping.domain-service.mjs} +5 -5
  24. package/dist/{lib → domains}/arrange/domain/tailwind-token-classifier.domain-service.mjs +1 -1
  25. package/dist/{lib → domains}/arrange/domain/tailwind-token.value-object.mjs +1 -1
  26. package/dist/{lib/arrange/application/services/arrange-file-processor.service.mjs → domains/arrange/infrastructure/adapters/arrange-file-processor.adapter.mjs} +8 -8
  27. package/dist/domains/arrange/infrastructure/adapters/arrange-target-path-resolver.adapter.mjs +247 -0
  28. package/dist/{lib/arrange/application/services/arrange-target-scanner.service.mjs → domains/arrange/infrastructure/adapters/arrange-target-scanner.adapter.mjs} +8 -8
  29. package/dist/{lib/arrange/adapters/secondary → domains/arrange/infrastructure/adapters}/domain-source-parser.adapter.mjs +10 -8
  30. package/dist/{lib/arrange/adapters/secondary → domains/arrange/infrastructure/adapters}/file-walker.adapter.mjs +8 -9
  31. package/dist/domains/arrange/infrastructure/typescript-ast-translator.mjs +580 -0
  32. package/dist/{lib/arrange/adapters/primary → domains/arrange/presentation}/cli/arrange.command.mjs +195 -54
  33. package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/arrange-analyze.presenter.mjs +26 -33
  34. package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/arrange-cli.schema.mjs +1 -1
  35. package/dist/{lib/tag/presentation/present-tag-sync-result.presenter.mjs → domains/arrange/presentation/presenters/arrange-sync.presenter.mjs} +12 -9
  36. package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/group-file-preview.presenter.mjs +46 -46
  37. package/dist/domains/config/composition/tokens.mjs +7 -0
  38. package/dist/{lib/config/infrastructure/config-schema.adapter.mjs → domains/config/domain/codefast-config.schema.mjs} +6 -6
  39. package/dist/{lib/config/infrastructure → domains/config/infrastructure/adapters}/config-loader.adapter.mjs +76 -77
  40. package/dist/{lib/config/infrastructure → domains/config/infrastructure/adapters}/config-warning-reporter.adapter.mjs +6 -6
  41. package/dist/domains/config/infrastructure/adapters/zod-codefast-config-schema.adapter.mjs +236 -0
  42. package/dist/domains/mirror/application/mirror-sync-cli-result.mjs +15 -0
  43. package/dist/{lib → domains}/mirror/application/use-cases/prepare-mirror-sync.use-case.mjs +14 -15
  44. package/dist/{lib → domains}/mirror/application/use-cases/run-mirror-sync.use-case.mjs +69 -54
  45. package/dist/{lib/mirror/contracts → domains/mirror/composition}/tokens.mjs +4 -3
  46. package/dist/{lib → domains}/mirror/domain/constants.domain.mjs +1 -1
  47. package/dist/{lib → domains}/mirror/domain/errors.domain.mjs +1 -1
  48. package/dist/{lib/mirror/application/services/generate-mirror-exports.service.mjs → domains/mirror/domain/generate-mirror-exports.domain-service.mjs} +2 -2
  49. package/dist/{lib → domains}/mirror/domain/package-display-name.policy.mjs +1 -1
  50. package/dist/{lib → domains}/mirror/domain/path-normalizer.value-object.mjs +1 -1
  51. package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/file-system-service.adapter.mjs +8 -8
  52. package/dist/domains/mirror/infrastructure/adapters/mirror-package-path-resolver.adapter.mjs +252 -0
  53. package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/mirror-sync-reporter.adapter.mjs +94 -15
  54. package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/package-repository.adapter.mjs +4 -4
  55. package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/sync-workspace-package.adapter.mjs +23 -46
  56. package/dist/{lib/mirror/infrastructure → domains/mirror/infrastructure/guards}/dirent-list.guard.mjs +1 -1
  57. package/dist/{lib → domains}/mirror/infrastructure/package-json-exports.repository.mjs +27 -27
  58. package/dist/domains/mirror/mirror.module.mjs +26 -0
  59. package/dist/{lib/mirror/adapters/primary → domains/mirror/presentation}/cli/mirror.command.mjs +83 -27
  60. package/dist/{lib/mirror/presentation → domains/mirror/presentation/presenters}/mirror-cli.schema.mjs +1 -4
  61. package/dist/domains/mirror/presentation/presenters/present-mirror-sync-progress.presenter.mjs +265 -0
  62. package/dist/domains/tag/application/ports/outbound/tag-eligible-workspace-paths.port.mjs +1 -0
  63. package/dist/domains/tag/application/ports/outbound/tag-since-writer.port.mjs +1 -0
  64. package/dist/domains/tag/application/ports/outbound/tag-target-path-resolver.port.mjs +1 -0
  65. package/dist/domains/tag/application/ports/outbound/tag-target-runner.port.mjs +1 -0
  66. package/dist/domains/tag/application/ports/outbound/tag-version-resolver.port.mjs +1 -0
  67. package/dist/domains/tag/application/ports/presenting/present-tag-sync-progress.presenter.mjs +1 -0
  68. package/dist/domains/tag/application/ports/presenting/present-tag-sync-result.presenter.mjs +1 -0
  69. package/dist/domains/tag/application/requests/tag-sync-execution-input.mjs +1 -0
  70. package/dist/domains/tag/application/requests/tag-sync.request.mjs +1 -0
  71. package/dist/{lib → domains}/tag/application/tag-sync-cli-result.mjs +3 -3
  72. package/dist/{lib → domains}/tag/application/use-cases/prepare-tag-sync.use-case.mjs +20 -24
  73. package/dist/{lib → domains}/tag/application/use-cases/run-tag-sync.use-case.mjs +123 -129
  74. package/dist/domains/tag/composition/tokens.mjs +13 -0
  75. package/dist/domains/tag/contracts/models.mjs +1 -0
  76. package/dist/domains/tag/domain/types.domain.mjs +1 -0
  77. package/dist/{lib/tag/adapters/secondary → domains/tag/infrastructure/adapters}/tag-since-writer.adapter.mjs +105 -105
  78. package/dist/{lib/tag/adapters/secondary/typescript-tree-walk.adapter.mjs → domains/tag/infrastructure/adapters/tag-target-path-resolver.adapter.mjs} +11 -9
  79. package/dist/domains/tag/infrastructure/adapters/tag-target-resolver.adapter.mjs +302 -0
  80. package/dist/domains/tag/infrastructure/adapters/tag-target-runner.adapter.mjs +259 -0
  81. package/dist/{lib/tag/adapters/secondary → domains/tag/infrastructure/adapters}/tag-version-resolver.adapter.mjs +6 -6
  82. package/dist/{lib/tag/adapters/primary → domains/tag/presentation}/cli/tag.command.mjs +67 -27
  83. package/dist/{lib/tag/presentation/tag-sync-progress-listener.presenter.mjs → domains/tag/presentation/presenters/present-tag-sync-progress.presenter.mjs} +14 -9
  84. package/dist/domains/tag/presentation/presenters/present-tag-sync-result.presenter.mjs +290 -0
  85. package/dist/{lib/tag/presentation → domains/tag/presentation/presenters}/tag-cli.schema.mjs +1 -1
  86. package/dist/domains/tag/tag.module.mjs +28 -0
  87. package/dist/program.mjs +3 -2
  88. package/dist/shell/application/cli-runtime.tokens.mjs +18 -0
  89. package/dist/shell/application/coordination/cli-executor.coordination.mjs +1 -0
  90. package/dist/shell/application/coordination/cli-schema-parsing.coordination.mjs +1 -0
  91. package/dist/shell/application/global-cli-options.model.mjs +5 -0
  92. package/dist/shell/application/ports/inbound/load-codefast-config.port.mjs +1 -0
  93. package/dist/shell/application/ports/outbound/cli-fs.port.mjs +1 -0
  94. package/dist/shell/application/ports/outbound/cli-logger.port.mjs +1 -0
  95. package/dist/shell/application/ports/outbound/cli-path.port.mjs +1 -0
  96. package/dist/shell/application/ports/outbound/cli-runtime.port.mjs +1 -0
  97. package/dist/shell/application/ports/outbound/cli-telemetry.port.mjs +1 -0
  98. package/dist/shell/application/ports/outbound/cli-verbose-diagnostics.port.mjs +1 -0
  99. package/dist/shell/application/ports/outbound/format-app-error.port.mjs +1 -0
  100. package/dist/shell/application/ports/outbound/global-cli-options-parse.port.mjs +1 -0
  101. package/dist/shell/application/ports/outbound/repo-root-resolver.port.mjs +1 -0
  102. package/dist/shell/application/ports/outbound/typescript-source-file-walker.port.mjs +1 -0
  103. package/dist/shell/application/ports/outbound/workspace-package-layout.port.mjs +1 -0
  104. package/dist/shell/application/ports/primary/command.port.mjs +1 -0
  105. package/dist/shell/application/services/cli-executor.service.mjs +267 -0
  106. package/dist/shell/application/services/schema-validator.service.mjs +236 -0
  107. package/dist/{lib/core/application → shell/application/use-cases}/load-codefast-config.use-case.mjs +11 -13
  108. package/dist/shell/composition/tokens.mjs +5 -0
  109. package/dist/shell/contracts/cli-command-slots.mjs +11 -0
  110. package/dist/{lib/core → shell}/domain/caught-unknown-message.value-object.mjs +1 -1
  111. package/dist/{lib/core → shell}/domain/cli-exit-codes.domain.mjs +1 -1
  112. package/dist/shell/domain/cli-positional-arg.value-object.mjs +6 -0
  113. package/dist/{lib/core → shell}/domain/errors.domain.mjs +1 -1
  114. package/dist/{lib/core → shell}/domain/result.model.mjs +1 -1
  115. package/dist/{lib/shared/source-code/domain/text-edit.model.mjs → shell/domain/source-text-edit.support.mjs} +2 -2
  116. package/dist/shell/infrastructure/adapters/cli-verbose-diagnostics.adapter.mjs +228 -0
  117. package/dist/{lib/tag/adapters/secondary/tag-target-resolver.adapter.mjs → shell/infrastructure/adapters/format-app-error.adapter.mjs} +16 -13
  118. package/dist/shell/infrastructure/adapters/global-cli-options-parser.adapter.mjs +233 -0
  119. package/dist/{lib/mirror/adapters/secondary/workspace-service.adapter.mjs → shell/infrastructure/adapters/repo-root-resolver.adapter.mjs} +20 -13
  120. package/dist/shell/infrastructure/adapters/typescript-source-file-walker.adapter.mjs +259 -0
  121. package/dist/shell/infrastructure/commander/commander-cli-host.adapter.mjs +69 -0
  122. package/dist/{lib/infrastructure/node-io.adapter.mjs → shell/infrastructure/node/node-cli-fs.adapter.mjs} +11 -47
  123. package/dist/{lib/arrange/adapters/secondary/workspace-resolver.adapter.mjs → shell/infrastructure/node/node-cli-logger.adapter.mjs} +11 -13
  124. package/dist/{lib/core/infrastructure/path.adapter.mjs → shell/infrastructure/node/node-cli-path.adapter.mjs} +1 -1
  125. package/dist/{lib/core/infrastructure/repo-root-resolver.adapter.mjs → shell/infrastructure/node/node-cli-runtime.adapter.mjs} +14 -13
  126. package/dist/shell/infrastructure/telemetry/cli-telemetry.adapter.mjs +280 -0
  127. package/dist/shell/infrastructure/workspace/node-pnpm-workspace-package-layout.adapter.mjs +385 -0
  128. package/dist/shell/shell.module.mjs +43 -0
  129. package/dist/shell/wiring/optional-cli-port-telemetry-activation.mjs +13 -0
  130. package/package.json +9 -7
  131. package/dist/lib/arrange/adapters/primary/cli/arrange.presentation.module.mjs +0 -14
  132. package/dist/lib/arrange/adapters/primary/cli/presentation.tokens.mjs +0 -5
  133. package/dist/lib/arrange/application/services/arrange-target-path-resolver.service.mjs +0 -21
  134. package/dist/lib/arrange/arrange.module.mjs +0 -31
  135. package/dist/lib/arrange/contracts/tokens.mjs +0 -15
  136. package/dist/lib/arrange/infrastructure/typescript-ast-translator.adapter.mjs +0 -355
  137. package/dist/lib/arrange/presentation/arrange-sync.presenter.mjs +0 -33
  138. package/dist/lib/bootstrap/composition-root.mjs +0 -33
  139. package/dist/lib/config/application/services/load-config.service.mjs +0 -17
  140. package/dist/lib/config/contracts/tokens.mjs +0 -6
  141. package/dist/lib/core/application/services/global-cli-options-parser.service.mjs +0 -9
  142. package/dist/lib/core/application/services/schema-validator.service.mjs +0 -17
  143. package/dist/lib/core/contracts/tokens.mjs +0 -10
  144. package/dist/lib/core/core.module.mjs +0 -9
  145. package/dist/lib/core/infrastructure/infrastructure.module.mjs +0 -30
  146. package/dist/lib/core/infrastructure/port-telemetry.decorator.mjs +0 -62
  147. package/dist/lib/core/infrastructure/verbose-diagnostics.policy.mjs +0 -9
  148. package/dist/lib/core/presentation/cli-executor.presenter.mjs +0 -42
  149. package/dist/lib/core/presentation/cli-schema.parser.mjs +0 -7
  150. package/dist/lib/core/presentation/format-app-error.presenter.mjs +0 -17
  151. package/dist/lib/core/presentation/presentation.module.mjs +0 -5
  152. package/dist/lib/infrastructure/workspace/repo-root-resolver.service.mjs +0 -21
  153. package/dist/lib/kernel/contracts/tokens.mjs +0 -5
  154. package/dist/lib/mirror/application/mirror-sync-json.format.mjs +0 -12
  155. package/dist/lib/mirror/application/services/mirror-package-arg-resolver.service.mjs +0 -20
  156. package/dist/lib/mirror/infrastructure/mirror-console-reporter.presenter.mjs +0 -99
  157. package/dist/lib/mirror/infrastructure/package-filter-resolver.service.mjs +0 -25
  158. package/dist/lib/mirror/infrastructure/workspace-packages.service.mjs +0 -158
  159. package/dist/lib/mirror/mirror.module.mjs +0 -25
  160. package/dist/lib/shared/source-code/infrastructure/typescript-source-file-walker.service.mjs +0 -33
  161. package/dist/lib/tag/adapters/primary/cli/presentation.tokens.mjs +0 -6
  162. package/dist/lib/tag/adapters/primary/cli/tag.presentation.module.mjs +0 -13
  163. package/dist/lib/tag/application/services/tag-cli-target-path-resolver.service.mjs +0 -9
  164. package/dist/lib/tag/application/services/tag-target-runner.service.mjs +0 -21
  165. package/dist/lib/tag/application/tag-sync-json.format.mjs +0 -14
  166. package/dist/lib/tag/contracts/tokens.mjs +0 -10
  167. package/dist/lib/tag/infrastructure/tag-target-candidates.adapter.mjs +0 -170
  168. package/dist/lib/tag/presentation/colors.presenter.mjs +0 -12
  169. package/dist/lib/tag/presentation/tag-sync.presenter.mjs +0 -61
  170. package/dist/lib/tag/tag.module.mjs +0 -23
  171. /package/dist/{lib/arrange/application/ports/domain-source-parser.port.mjs → domains/arrange/application/ports/inbound/analyze-directory.port.mjs} +0 -0
  172. /package/dist/{lib/arrange/application/ports/file-walker.port.mjs → domains/arrange/application/ports/inbound/prepare-arrange-workspace.port.mjs} +0 -0
  173. /package/dist/{lib/arrange/application/ports/group-file-preview.port.mjs → domains/arrange/application/ports/inbound/run-arrange-sync.port.mjs} +0 -0
  174. /package/dist/{lib/arrange/application/ports/workspace-resolver.port.mjs → domains/arrange/application/ports/inbound/suggest-cn-groups.port.mjs} +0 -0
  175. /package/dist/{lib/arrange/application/requests/analyze-directory.request.mjs → domains/arrange/application/ports/outbound/arrange-file-processor.port.mjs} +0 -0
  176. /package/dist/{lib/arrange/application/requests/arrange-sync.request.mjs → domains/arrange/application/ports/outbound/arrange-target-path-resolver.port.mjs} +0 -0
  177. /package/dist/{lib/arrange/application/requests/suggest-groups.request.mjs → domains/arrange/application/ports/outbound/arrange-target-scanner.port.mjs} +0 -0
  178. /package/dist/{lib/arrange/contracts/analyze-report-presenter.contract.mjs → domains/arrange/application/ports/outbound/domain-source-parser.port.mjs} +0 -0
  179. /package/dist/{lib/arrange/contracts/models.mjs → domains/arrange/application/ports/outbound/file-walker.port.mjs} +0 -0
  180. /package/dist/{lib/arrange/contracts/services.contract.mjs → domains/arrange/application/ports/presenting/present-analyze-report.presenter.mjs} +0 -0
  181. /package/dist/{lib/arrange/domain/types.domain.mjs → domains/arrange/application/ports/presenting/present-arrange-sync-result.presenter.mjs} +0 -0
  182. /package/dist/{lib/config/application/ports/config-loader.port.mjs → domains/arrange/application/ports/presenting/present-group-file-preview.presenter.mjs} +0 -0
  183. /package/dist/{lib/config/application/ports/config-warning-reporter.port.mjs → domains/arrange/application/requests/analyze-directory.request.mjs} +0 -0
  184. /package/dist/{lib/config/domain/schema.domain.mjs → domains/arrange/application/requests/arrange-sync.request.mjs} +0 -0
  185. /package/dist/{lib/core/application/ports/cli-io.port.mjs → domains/arrange/application/requests/suggest-groups.request.mjs} +0 -0
  186. /package/dist/{lib/mirror → domains/arrange}/contracts/models.mjs +0 -0
  187. /package/dist/{lib/mirror → domains/arrange}/domain/types.domain.mjs +0 -0
  188. /package/dist/{lib/core/application/ports/path.port.mjs → domains/config/application/ports/outbound/codefast-config-schema.port.mjs} +0 -0
  189. /package/dist/{lib/core/application/ports/repo-root-resolver.port.mjs → domains/config/application/ports/outbound/config-loader.port.mjs} +0 -0
  190. /package/dist/{lib/core/application/ports/runtime.port.mjs → domains/config/application/ports/outbound/config-warning-reporter.port.mjs} +0 -0
  191. /package/dist/{lib/kernel/contracts/cli-command.contract.mjs → domains/config/domain/schema.domain.mjs} +0 -0
  192. /package/dist/{lib/mirror/application/ports/file-system-service.port.mjs → domains/mirror/application/ports/inbound/prepare-mirror-sync.port.mjs} +0 -0
  193. /package/dist/{lib/mirror/application/ports/mirror-sync-reporter.port.mjs → domains/mirror/application/ports/inbound/run-mirror-sync.port.mjs} +0 -0
  194. /package/dist/{lib/mirror/application/ports/package-repository.port.mjs → domains/mirror/application/ports/outbound/file-system-service.port.mjs} +0 -0
  195. /package/dist/{lib/mirror/application/ports/sync-workspace-package.port.mjs → domains/mirror/application/ports/outbound/mirror-package-path.port.mjs} +0 -0
  196. /package/dist/{lib/mirror/application/ports/workspace-service.port.mjs → domains/mirror/application/ports/outbound/mirror-sync-reporter.port.mjs} +0 -0
  197. /package/dist/{lib/mirror/application/requests/mirror-sync.request.mjs → domains/mirror/application/ports/outbound/package-repository.port.mjs} +0 -0
  198. /package/dist/{lib/tag/application/ports/tag-since-writer.port.mjs → domains/mirror/application/ports/outbound/sync-workspace-package.port.mjs} +0 -0
  199. /package/dist/{lib/tag/application/ports/tag-version-resolver.port.mjs → domains/mirror/application/ports/presenting/present-mirror-sync-progress.presenter.mjs} +0 -0
  200. /package/dist/{lib/tag/application/ports/target-resolver.port.mjs → domains/mirror/application/requests/mirror-sync-execution-input.mjs} +0 -0
  201. /package/dist/{lib/tag/application/ports/typescript-tree-walk.port.mjs → domains/mirror/application/requests/mirror-sync.request.mjs} +0 -0
  202. /package/dist/{lib/tag → domains/mirror}/contracts/models.mjs +0 -0
  203. /package/dist/{lib/tag → domains/mirror}/domain/types.domain.mjs +0 -0
  204. /package/dist/{lib/tag/application/requests/tag-sync.request.mjs → domains/tag/application/ports/inbound/prepare-tag-sync.port.mjs} +0 -0
  205. /package/dist/{lib/tag/contracts/tag-sync-result-presenter.contract.mjs → domains/tag/application/ports/inbound/run-tag-sync.port.mjs} +0 -0
@@ -1,8 +1,8 @@
1
- import { CliFsToken } from "../../../core/contracts/tokens.mjs";
1
+ import { CliFilesystemPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
2
2
  import { resolvePackageDisplayName } from "../../domain/package-display-name.policy.mjs";
3
- import { writePackageJsonExportsAtomic } from "../../infrastructure/package-json-exports.repository.mjs";
3
+ import { writePackageJsonExportsAtomic } from "../package-json-exports.repository.mjs";
4
4
  import { inject, injectable } from "@codefast/di";
5
- //#region src/lib/mirror/adapters/secondary/package-repository.adapter.ts
5
+ //#region src/domains/mirror/infrastructure/adapters/package-repository.adapter.ts
6
6
  function toPrimitive(input, hint) {
7
7
  if (typeof input !== "object" || input === null) return input;
8
8
  var prim = input[Symbol.toPrimitive];
@@ -213,7 +213,7 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
213
213
  };
214
214
  }
215
215
  let _dec, _initClass;
216
- _dec = injectable([inject(CliFsToken)]);
216
+ _dec = injectable([inject(CliFilesystemPortToken)]);
217
217
  let _PackageRepositoryAdapter;
218
218
  (class {
219
219
  fs;
@@ -1,10 +1,10 @@
1
- import { CliFsToken, CliLoggerToken, CliPathToken } from "../../../core/contracts/tokens.mjs";
2
- import { messageFromCaughtUnknown } from "../../../core/domain/caught-unknown-message.value-object.mjs";
3
- import { FileSystemServicePortToken, MirrorSyncReporterPortToken, PackageRepositoryPortToken } from "../../contracts/tokens.mjs";
1
+ import { CliFilesystemPortToken, CliPathPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
2
+ import { messageFromCaughtUnknown } from "../../../../shell/domain/caught-unknown-message.value-object.mjs";
4
3
  import { DIST_DIR, PACKAGE_JSON } from "../../domain/constants.domain.mjs";
5
- import { createPathTransform, generateExports } from "../../application/services/generate-mirror-exports.service.mjs";
4
+ import { createPathTransform, generateExports } from "../../domain/generate-mirror-exports.domain-service.mjs";
5
+ import { FileSystemServicePortToken, PackageRepositoryPortToken } from "../../composition/tokens.mjs";
6
6
  import { inject, injectable } from "@codefast/di";
7
- //#region src/lib/mirror/adapters/secondary/sync-workspace-package.adapter.ts
7
+ //#region src/domains/mirror/infrastructure/adapters/sync-workspace-package.adapter.ts
8
8
  function toPrimitive(input, hint) {
9
9
  if (typeof input !== "object" || input === null) return input;
10
10
  var prim = input[Symbol.toPrimitive];
@@ -215,21 +215,11 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
215
215
  };
216
216
  }
217
217
  let _dec, _initClass;
218
- function resolvePackageScopedConfig(configMap, packageMeta) {
219
- if (!configMap) return;
220
- return configMap[packageMeta.packageName];
221
- }
222
- function isPackageSkipped(skipPackagesList, packageMeta) {
223
- if (!skipPackagesList) return false;
224
- return skipPackagesList.includes(packageMeta.packageName);
225
- }
226
218
  _dec = injectable([
227
- inject(CliFsToken),
228
- inject(CliPathToken),
219
+ inject(CliFilesystemPortToken),
220
+ inject(CliPathPortToken),
229
221
  inject(PackageRepositoryPortToken),
230
- inject(FileSystemServicePortToken),
231
- inject(CliLoggerToken),
232
- inject(MirrorSyncReporterPortToken)
222
+ inject(FileSystemServicePortToken)
233
223
  ]);
234
224
  let _SyncWorkspacePackageAdapter;
235
225
  (class {
@@ -237,20 +227,16 @@ let _SyncWorkspacePackageAdapter;
237
227
  pathService;
238
228
  packageRepository;
239
229
  fileSystemService;
240
- logger;
241
- mirrorReporter;
242
230
  static {
243
231
  ({c: [_SyncWorkspacePackageAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
244
232
  }
245
- constructor(fs, pathService, packageRepository, fileSystemService, logger, mirrorReporter) {
233
+ constructor(fs, pathService, packageRepository, fileSystemService) {
246
234
  this.fs = fs;
247
235
  this.pathService = pathService;
248
236
  this.packageRepository = packageRepository;
249
237
  this.fileSystemService = fileSystemService;
250
- this.logger = logger;
251
- this.mirrorReporter = mirrorReporter;
252
238
  }
253
- async syncExportsForWorkspacePackage(rootDir, packagePathStr, index, total, config, verbose, stats, suppressMirrorLogs = false) {
239
+ async syncExportsForWorkspacePackage(rootDir, packagePathStr, config) {
254
240
  const packageDir = this.pathService.resolve(rootDir, packagePathStr);
255
241
  const distDir = this.pathService.join(packageDir, DIST_DIR);
256
242
  const packageJsonPath = this.pathService.join(packageDir, PACKAGE_JSON);
@@ -266,13 +252,12 @@ let _SyncWorkspacePackageAdapter;
266
252
  cssConfigStatus: "",
267
253
  skipped: false,
268
254
  skipReason: "",
269
- error: null
255
+ error: null,
256
+ prunedExportKeys: []
270
257
  };
271
258
  if (!this.fs.existsSync(packageJsonPath)) {
272
259
  pkgStats.skipped = true;
273
260
  pkgStats.skipReason = "package.json not found";
274
- stats.packagesSkipped++;
275
- if (!suppressMirrorLogs) this.mirrorReporter.logSkippedWorkspacePackage(this.logger, index, total, folderBasename, pkgStats.skipReason);
276
261
  return pkgStats;
277
262
  }
278
263
  let packageJsonParseError;
@@ -286,63 +271,55 @@ let _SyncWorkspacePackageAdapter;
286
271
  packageJsonParseError = caughtError;
287
272
  }
288
273
  const packageMeta = { packageName: pkgStats.name };
289
- if (isPackageSkipped(config.skipPackages, packageMeta)) {
274
+ if (this.isPackageSkipped(config.skipPackages, packageMeta)) {
290
275
  pkgStats.skipped = true;
291
276
  pkgStats.skipReason = "configured to skip";
292
- stats.packagesSkipped++;
293
- if (!suppressMirrorLogs) this.mirrorReporter.logSkippedWorkspacePackage(this.logger, index, total, pkgStats.name, pkgStats.skipReason);
294
277
  return pkgStats;
295
278
  }
296
279
  if (packageJsonParseError !== void 0) {
297
280
  if (!this.fs.existsSync(distDir)) {
298
281
  pkgStats.skipped = true;
299
282
  pkgStats.skipReason = "dist/ not found";
300
- stats.packagesSkipped++;
301
- if (!suppressMirrorLogs) this.mirrorReporter.logSkippedWorkspacePackage(this.logger, index, total, pkgStats.name, pkgStats.skipReason);
302
283
  return pkgStats;
303
284
  }
304
285
  pkgStats.error = messageFromCaughtUnknown(packageJsonParseError);
305
- stats.packagesErrored++;
306
- if (!suppressMirrorLogs) this.mirrorReporter.logPackageError(this.logger, index, total, pkgStats.name, packageJsonParseError, verbose);
307
286
  return pkgStats;
308
287
  }
309
288
  if (!this.fs.existsSync(distDir)) {
310
289
  pkgStats.skipped = true;
311
290
  pkgStats.skipReason = "dist/ not found";
312
- stats.packagesSkipped++;
313
- if (!suppressMirrorLogs) this.mirrorReporter.logSkippedWorkspacePackage(this.logger, index, total, pkgStats.name, pkgStats.skipReason);
314
291
  return pkgStats;
315
292
  }
316
293
  try {
317
294
  const pathTransform = createPathTransform(config, packageMeta);
318
295
  pkgStats.hasTransform = !!pathTransform;
319
- const cssConfig = resolvePackageScopedConfig(config.cssExports, packageMeta);
296
+ const cssConfig = this.resolvePackageScopedConfig(config.cssExports, packageMeta);
320
297
  if (cssConfig === false) pkgStats.cssConfigStatus = "disabled";
321
298
  else if (cssConfig !== void 0) pkgStats.cssConfigStatus = "configured";
322
- const customExports = resolvePackageScopedConfig(config.customExports, packageMeta) || {};
299
+ const customExports = this.resolvePackageScopedConfig(config.customExports, packageMeta) || {};
323
300
  const generatedExports = await generateExports(this.pathService, this.fileSystemService, distDir, pathTransform, cssConfig, customExports);
324
301
  const { prunedKeys } = await this.packageRepository.writePackageJsonExportsAtomic(packageJsonPath, {
325
302
  generatedExports: generatedExports.exports,
326
303
  managedExportSpecifiers: Object.keys(generatedExports.exports),
327
304
  originalPathBySpecifier: generatedExports.originalPathBySpecifier
328
305
  });
329
- for (const exportSpecifier of prunedKeys) if (!suppressMirrorLogs) this.mirrorReporter.logPrunedStaleExport(this.logger, exportSpecifier);
330
306
  pkgStats.jsModules = generatedExports.jsCount;
331
307
  pkgStats.cssExports = generatedExports.cssCount;
332
308
  pkgStats.customExports = Object.keys(customExports).length;
333
309
  pkgStats.totalExports = Object.keys(generatedExports.exports).length;
334
- stats.packagesProcessed++;
335
- stats.totalExports += pkgStats.totalExports;
336
- stats.totalJsModules += pkgStats.jsModules;
337
- stats.totalCssExports += pkgStats.cssExports;
338
- if (!suppressMirrorLogs) this.mirrorReporter.logPackageSuccess(this.logger, index, total, pkgStats, generatedExports, verbose);
310
+ pkgStats.prunedExportKeys = prunedKeys;
339
311
  } catch (caughtError) {
340
312
  pkgStats.error = messageFromCaughtUnknown(caughtError);
341
- stats.packagesErrored++;
342
- if (!suppressMirrorLogs) this.mirrorReporter.logPackageError(this.logger, index, total, pkgStats.name, caughtError, verbose);
343
313
  }
344
314
  return pkgStats;
345
315
  }
316
+ resolvePackageScopedConfig(configMap, packageMeta) {
317
+ if (!configMap) return;
318
+ return configMap[packageMeta.packageName];
319
+ }
320
+ isPackageSkipped(skipPackagesList, packageMeta) {
321
+ return !!skipPackagesList?.includes(packageMeta.packageName);
322
+ }
346
323
  static {
347
324
  _initClass();
348
325
  }
@@ -1,4 +1,4 @@
1
- //#region src/lib/mirror/infrastructure/dirent-list.guard.ts
1
+ //#region src/domains/mirror/infrastructure/guards/dirent-list.guard.ts
2
2
  /**
3
3
  * Narrow `fs.promises.readdir` overload result to `Dirent[]` when `withFileTypes: true`.
4
4
  * Accepts both historical checks (`isFile` / `isDirectory`) in one guard.
@@ -1,36 +1,36 @@
1
- import { messageFromCaughtUnknown } from "../../core/domain/caught-unknown-message.value-object.mjs";
1
+ import { messageFromCaughtUnknown } from "../../../shell/domain/caught-unknown-message.value-object.mjs";
2
2
  import { MirrorError, MirrorErrorCode } from "../domain/errors.domain.mjs";
3
3
  import { PACKAGE_JSON_EXPORT } from "../domain/constants.domain.mjs";
4
- //#region src/lib/mirror/infrastructure/package-json-exports.repository.ts
5
- function containsDistTarget(value) {
6
- if (typeof value === "string") return value.startsWith("./dist/");
7
- if (Array.isArray(value)) return value.some((entryValue) => containsDistTarget(entryValue));
8
- if (value && typeof value === "object") return Object.values(value).some((entryValue) => containsDistTarget(entryValue));
9
- return false;
10
- }
11
- /**
12
- * Keep `./package.json` at the very end for aesthetics by default.
13
- * If a catch-all `./*` exists, move `./package.json` before wildcards so it remains reachable.
14
- */ function exportSpecifierRank(exportSpecifier, hasCatchAllWildcard) {
15
- if (exportSpecifier === ".") return 0;
16
- if (exportSpecifier === "./package.json") return hasCatchAllWildcard ? 2 : 4;
17
- if (exportSpecifier.includes("*")) return 3;
18
- return 1;
19
- }
20
- function compareExportSpecifiers(leftSpecifier, rightSpecifier, originalPathBySpecifier, hasCatchAllWildcard) {
21
- const leftRank = exportSpecifierRank(leftSpecifier, hasCatchAllWildcard);
22
- const rightRank = exportSpecifierRank(rightSpecifier, hasCatchAllWildcard);
23
- if (leftRank !== rightRank) return leftRank - rightRank;
24
- const leftOriginalPath = originalPathBySpecifier[leftSpecifier] ?? leftSpecifier;
25
- const rightOriginalPath = originalPathBySpecifier[rightSpecifier] ?? rightSpecifier;
26
- const originalPathComparison = leftOriginalPath.localeCompare(rightOriginalPath);
27
- if (originalPathComparison !== 0) return originalPathComparison;
28
- return leftSpecifier.localeCompare(rightSpecifier);
29
- }
4
+ //#region src/domains/mirror/infrastructure/package-json-exports.repository.ts
30
5
  /**
31
6
  * Writes `exports` into `package.json` via a temp file + rename (atomic on same volume).
32
7
  * Preserves a trailing newline after JSON.
33
8
  */ async function writePackageJsonExportsAtomic(fs, packageJsonPath, mergeInput) {
9
+ function containsDistTarget(value) {
10
+ if (typeof value === "string") return value.startsWith("./dist/");
11
+ if (Array.isArray(value)) return value.some((entryValue) => containsDistTarget(entryValue));
12
+ if (value && typeof value === "object") return Object.values(value).some((entryValue) => containsDistTarget(entryValue));
13
+ return false;
14
+ }
15
+ /**
16
+ * Keep `./package.json` at the very end for aesthetics by default.
17
+ * If a catch-all `./*` exists, move `./package.json` before wildcards so it remains reachable.
18
+ */ function exportSpecifierRank(exportSpecifier, hasCatchAllWildcard) {
19
+ if (exportSpecifier === ".") return 0;
20
+ if (exportSpecifier === "./package.json") return hasCatchAllWildcard ? 2 : 4;
21
+ if (exportSpecifier.includes("*")) return 3;
22
+ return 1;
23
+ }
24
+ function compareExportSpecifiers(leftSpecifier, rightSpecifier, pathBySpecifier, hasCatchAllWildcard) {
25
+ const leftRank = exportSpecifierRank(leftSpecifier, hasCatchAllWildcard);
26
+ const rightRank = exportSpecifierRank(rightSpecifier, hasCatchAllWildcard);
27
+ if (leftRank !== rightRank) return leftRank - rightRank;
28
+ const leftOriginalPath = pathBySpecifier[leftSpecifier] ?? leftSpecifier;
29
+ const rightOriginalPath = pathBySpecifier[rightSpecifier] ?? rightSpecifier;
30
+ const originalPathComparison = leftOriginalPath.localeCompare(rightOriginalPath);
31
+ if (originalPathComparison !== 0) return originalPathComparison;
32
+ return leftSpecifier.localeCompare(rightSpecifier);
33
+ }
34
34
  const raw = await fs.readFile(packageJsonPath, "utf8");
35
35
  const packageJson = JSON.parse(raw);
36
36
  const existingExports = packageJson.exports;
@@ -0,0 +1,26 @@
1
+ import { createOptionalCliPortTelemetryActivation } from "../../shell/wiring/optional-cli-port-telemetry-activation.mjs";
2
+ import { ShellInfrastructureModule } from "../../shell/shell.module.mjs";
3
+ import { FileSystemServiceAdapter as _FileSystemServiceAdapter } from "./infrastructure/adapters/file-system-service.adapter.mjs";
4
+ import { MirrorSyncReporterAdapter as _MirrorSyncReporterAdapter } from "./infrastructure/adapters/mirror-sync-reporter.adapter.mjs";
5
+ import { PackageRepositoryAdapter as _PackageRepositoryAdapter } from "./infrastructure/adapters/package-repository.adapter.mjs";
6
+ import { FileSystemServicePortToken, MirrorPackagePathPortToken, MirrorSyncReporterPortToken, PackageRepositoryPortToken, PrepareMirrorSyncUseCaseToken, PresentMirrorSyncProgressPresenterToken, RunMirrorSyncUseCaseToken, SyncWorkspacePackagePortToken } from "./composition/tokens.mjs";
7
+ import { SyncWorkspacePackageAdapter as _SyncWorkspacePackageAdapter } from "./infrastructure/adapters/sync-workspace-package.adapter.mjs";
8
+ import { MirrorPackagePathResolverAdapter as _MirrorPackagePathResolverAdapter } from "./infrastructure/adapters/mirror-package-path-resolver.adapter.mjs";
9
+ import { PrepareMirrorSyncUseCase as _PrepareMirrorSyncUseCase } from "./application/use-cases/prepare-mirror-sync.use-case.mjs";
10
+ import { RunMirrorSyncUseCase as _RunMirrorSyncUseCase } from "./application/use-cases/run-mirror-sync.use-case.mjs";
11
+ import { PresentMirrorSyncPresenter as _PresentMirrorSyncPresenter } from "./presentation/presenters/present-mirror-sync-progress.presenter.mjs";
12
+ import { Module } from "@codefast/di";
13
+ //#region src/domains/mirror/mirror.module.ts
14
+ const MirrorModule = Module.create("cli-mirror", (moduleBuilder) => {
15
+ moduleBuilder.import(ShellInfrastructureModule);
16
+ moduleBuilder.bind(MirrorPackagePathPortToken).to(_MirrorPackagePathResolverAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(MirrorPackagePathPortToken));
17
+ moduleBuilder.bind(PackageRepositoryPortToken).to(_PackageRepositoryAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(PackageRepositoryPortToken));
18
+ moduleBuilder.bind(FileSystemServicePortToken).to(_FileSystemServiceAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(FileSystemServicePortToken));
19
+ moduleBuilder.bind(MirrorSyncReporterPortToken).to(_MirrorSyncReporterAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(MirrorSyncReporterPortToken));
20
+ moduleBuilder.bind(SyncWorkspacePackagePortToken).to(_SyncWorkspacePackageAdapter).singleton();
21
+ moduleBuilder.bind(PresentMirrorSyncProgressPresenterToken).to(_PresentMirrorSyncPresenter).singleton();
22
+ moduleBuilder.bind(PrepareMirrorSyncUseCaseToken).to(_PrepareMirrorSyncUseCase).singleton();
23
+ moduleBuilder.bind(RunMirrorSyncUseCaseToken).to(_RunMirrorSyncUseCase).singleton();
24
+ });
25
+ //#endregion
26
+ export { MirrorModule };
@@ -1,12 +1,11 @@
1
- import "../../../../core/domain/cli-exit-codes.domain.mjs";
2
- import { CliLoggerToken, CliRuntimeToken } from "../../../../core/contracts/tokens.mjs";
3
- import { parseWithCliSchema } from "../../../../core/presentation/cli-schema.parser.mjs";
4
- import { consumeCliAppError, runCliResultAsync } from "../../../../core/presentation/cli-executor.presenter.mjs";
5
- import { PrepareMirrorSyncUseCaseToken, RunMirrorSyncUseCaseToken } from "../../../contracts/tokens.mjs";
6
- import { mirrorSyncRunRequestSchema } from "../../../presentation/mirror-cli.schema.mjs";
7
- import { parseGlobalCliOptions } from "../../../../core/application/services/global-cli-options-parser.service.mjs";
1
+ import { CliExecutorToken, CliLoggerPortToken, CliRuntimeToken, CliSchemaParsingToken, GlobalCliOptionsParsePortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
2
+ import { PrepareMirrorSyncUseCaseToken, PresentMirrorSyncProgressPresenterToken, RunMirrorSyncUseCaseToken } from "../../composition/tokens.mjs";
3
+ import { CLI_COMMAND_SLOT_NAME } from "../../../../shell/contracts/cli-command-slots.mjs";
4
+ import { readOptionalPositionalArg } from "../../../../shell/domain/cli-positional-arg.value-object.mjs";
5
+ import { exitCodeForMirrorSyncResult, formatMirrorSyncJsonOutput } from "../../application/mirror-sync-cli-result.mjs";
6
+ import { mirrorSyncRunRequestSchema } from "../presenters/mirror-cli.schema.mjs";
8
7
  import { inject, injectable } from "@codefast/di";
9
- //#region src/lib/mirror/adapters/primary/cli/mirror.command.ts
8
+ //#region src/domains/mirror/presentation/cli/mirror.command.ts
10
9
  function toPrimitive(input, hint) {
11
10
  if (typeof input !== "object" || input === null) return input;
12
11
  var prim = input[Symbol.toPrimitive];
@@ -218,10 +217,14 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
218
217
  }
219
218
  let _dec, _initClass;
220
219
  _dec = injectable([
221
- inject(CliLoggerToken),
220
+ inject(CliLoggerPortToken),
222
221
  inject(CliRuntimeToken),
223
222
  inject(PrepareMirrorSyncUseCaseToken),
224
- inject(RunMirrorSyncUseCaseToken)
223
+ inject(RunMirrorSyncUseCaseToken),
224
+ inject(GlobalCliOptionsParsePortToken),
225
+ inject(CliSchemaParsingToken),
226
+ inject(CliExecutorToken),
227
+ inject(PresentMirrorSyncProgressPresenterToken)
225
228
  ]);
226
229
  let _MirrorCommand;
227
230
  (class {
@@ -229,40 +232,93 @@ let _MirrorCommand;
229
232
  runtime;
230
233
  prepareMirrorSync;
231
234
  runMirrorSync;
235
+ globalCliOptions;
236
+ schemaValidation;
237
+ cliExecutor;
238
+ mirrorProgressPresenter;
232
239
  static {
233
240
  ({c: [_MirrorCommand, _initClass]} = _apply_decs_2311(this, [_dec], []));
234
241
  }
235
- constructor(logger, runtime, prepareMirrorSync, runMirrorSync) {
242
+ constructor(logger, runtime, prepareMirrorSync, runMirrorSync, globalCliOptions, schemaValidation, cliExecutor, mirrorProgressPresenter) {
236
243
  this.logger = logger;
237
244
  this.runtime = runtime;
238
245
  this.prepareMirrorSync = prepareMirrorSync;
239
246
  this.runMirrorSync = runMirrorSync;
247
+ this.globalCliOptions = globalCliOptions;
248
+ this.schemaValidation = schemaValidation;
249
+ this.cliExecutor = cliExecutor;
250
+ this.mirrorProgressPresenter = mirrorProgressPresenter;
240
251
  }
241
- name = "mirror";
242
- description = "Keep package manifests aligned with what you ship";
243
- register(program) {
244
- program.command(this.name).description(this.description).command("sync").description("Write package.json exports from dist/ for workspace packages").argument("[package]", "Optional package path relative to repo root (e.g. packages/ui)").option("-v, --verbose", "Print extra diagnostics", false).option("--json", "Print one JSON summary on stdout (suppresses human progress)", false).action(this.execute.bind(this));
252
+ get definition() {
253
+ return {
254
+ name: CLI_COMMAND_SLOT_NAME.mirror,
255
+ description: "Keep package manifests aligned with what you ship",
256
+ children: [{
257
+ name: "sync",
258
+ description: "Write package.json exports from dist/ for workspace packages",
259
+ route: [
260
+ {
261
+ kind: "optionalPositional",
262
+ argumentTemplate: "[package]",
263
+ helpBlurb: "Optional package path relative to repo root (e.g. packages/ui)"
264
+ },
265
+ {
266
+ kind: "booleanFlag",
267
+ flagPhrase: "-v, --verbose",
268
+ helpBlurb: "Print extra diagnostics",
269
+ whenUnsetUses: false
270
+ },
271
+ {
272
+ kind: "booleanFlag",
273
+ flagPhrase: "--json",
274
+ helpBlurb: "Print one JSON summary on stdout (suppresses human progress)",
275
+ whenUnsetUses: false
276
+ }
277
+ ],
278
+ action: async (_positionalPieces, typedLocalOptionsCarrier, globalsBridge) => {
279
+ await this.runSynchronizedMirrorLeaf(readOptionalPositionalArg(_positionalPieces[0]), {
280
+ verbose: typedLocalOptionsCarrier.verbose,
281
+ json: typedLocalOptionsCarrier.json
282
+ }, globalsBridge.readMergedGlobalsOptionRecords());
283
+ }
284
+ }]
285
+ };
245
286
  }
246
- async execute(pkg, options, command) {
247
- const globalOptionsOutcome = parseGlobalCliOptions(command.optsWithGlobals());
248
- if (!consumeCliAppError(this.logger, globalOptionsOutcome)) return;
287
+ async runSynchronizedMirrorLeaf(packageRelativePathPiece, branchOptionsCarrier, globalsOptionCarrier) {
288
+ const globalOptionsOutcome = this.globalCliOptions.parseGlobalCliOptions(globalsOptionCarrier);
289
+ if (!this.cliExecutor.consumeCliAppError(globalOptionsOutcome)) return;
249
290
  const prelude = await this.prepareMirrorSync.execute({
250
291
  currentWorkingDirectory: this.runtime.cwd(),
251
- packageArg: pkg,
292
+ packageArg: packageRelativePathPiece,
252
293
  globals: globalOptionsOutcome.value
253
294
  });
254
- if (!consumeCliAppError(this.logger, prelude)) return;
255
- const { rootDir, config, packageFilter, globals } = prelude.value;
256
- const parsed = parseWithCliSchema(mirrorSyncRunRequestSchema, {
295
+ if (!this.cliExecutor.consumeCliAppError(prelude)) return;
296
+ const { rootDir, config, packageFilter } = prelude.value;
297
+ const parsed = this.schemaValidation.parseWithSchema(mirrorSyncRunRequestSchema, {
257
298
  rootDir,
258
299
  config: config.mirror ?? {},
259
- verbose: options.verbose,
260
- json: options.json,
261
- noColor: globals.color === false,
262
300
  packageFilter
263
301
  });
264
- if (!consumeCliAppError(this.logger, parsed)) return;
265
- await runCliResultAsync(this.logger, this.runMirrorSync.execute(parsed.value), (stats) => stats.packagesErrored > 0 ? 1 : 0);
302
+ if (!this.cliExecutor.consumeCliAppError(parsed)) return;
303
+ const json = !!branchOptionsCarrier.json;
304
+ const noColor = globalOptionsOutcome.value.color === false;
305
+ const verbose = !!branchOptionsCarrier.verbose;
306
+ let listener;
307
+ if (!json) {
308
+ this.mirrorProgressPresenter.configure({
309
+ noColor,
310
+ verbose
311
+ });
312
+ listener = this.mirrorProgressPresenter;
313
+ }
314
+ const startTime = performance.now();
315
+ const outcome = await this.runMirrorSync.execute({
316
+ ...parsed.value,
317
+ listener
318
+ });
319
+ if (!this.cliExecutor.consumeCliAppError(outcome)) return;
320
+ if (json) this.logger.out(formatMirrorSyncJsonOutput(outcome.value, (performance.now() - startTime) / 1e3));
321
+ this.runtime.setExitCode(exitCodeForMirrorSyncResult(outcome.value));
266
322
  }
267
323
  static {
268
324
  _initClass();
@@ -1,10 +1,7 @@
1
1
  import { z } from "zod";
2
- //#region src/lib/mirror/presentation/mirror-cli.schema.ts
2
+ //#region src/domains/mirror/presentation/presenters/mirror-cli.schema.ts
3
3
  const mirrorSyncRunRequestSchema = z.object({
4
4
  rootDir: z.string().min(1),
5
- verbose: z.boolean().optional(),
6
- noColor: z.boolean().optional(),
7
- json: z.boolean().optional(),
8
5
  packageFilter: z.string().optional(),
9
6
  config: z.unknown().optional()
10
7
  });