@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
@@ -0,0 +1,267 @@
1
+ import { CliLoggerPortToken, CliVerboseDiagnosticsPortToken, FormatAppErrorPortToken } from "../cli-runtime.tokens.mjs";
2
+ import "../../domain/cli-exit-codes.domain.mjs";
3
+ import process from "node:process";
4
+ import { inject, injectable } from "@codefast/di";
5
+ //#region src/shell/application/services/cli-executor.service.ts
6
+ function toPrimitive(input, hint) {
7
+ if (typeof input !== "object" || input === null) return input;
8
+ var prim = input[Symbol.toPrimitive];
9
+ if (prim !== void 0) {
10
+ var res = prim.call(input, hint || "default");
11
+ if (typeof res !== "object") return res;
12
+ throw new TypeError("@@toPrimitive must return a primitive value.");
13
+ }
14
+ return (hint === "string" ? String : Number)(input);
15
+ }
16
+ function toPropertyKey(arg) {
17
+ var key = toPrimitive(arg, "string");
18
+ return typeof key === "symbol" ? key : String(key);
19
+ }
20
+ function checkInRHS(value) {
21
+ if (Object(value) !== value) throw TypeError("right-hand side of 'in' should be an object, got " + (value !== null ? typeof value : "null"));
22
+ return value;
23
+ }
24
+ function setFunctionName(fn, name, prefix) {
25
+ if (typeof name === "symbol") {
26
+ name = name.description;
27
+ name = name ? "[" + name + "]" : "";
28
+ }
29
+ try {
30
+ Object.defineProperty(fn, "name", {
31
+ configurable: true,
32
+ value: prefix ? prefix + " " + name : name
33
+ });
34
+ } catch (_) {}
35
+ return fn;
36
+ }
37
+ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis, instanceBrand, parentClass) {
38
+ var symbolMetadata = Symbol.metadata || Symbol.for("Symbol.metadata");
39
+ var defineProperty = Object.defineProperty;
40
+ var create = Object.create;
41
+ var metadata;
42
+ var existingNonFields = [create(null), create(null)];
43
+ var hasClassDecs = classDecs.length;
44
+ var _;
45
+ function createRunInitializers(initializers, useStaticThis, hasValue) {
46
+ return function(thisArg, value) {
47
+ if (useStaticThis) {
48
+ value = thisArg;
49
+ thisArg = targetClass;
50
+ }
51
+ for (var i = 0; i < initializers.length; i++) value = initializers[i].apply(thisArg, hasValue ? [value] : []);
52
+ return hasValue ? value : thisArg;
53
+ };
54
+ }
55
+ function assertCallable(fn, hint1, hint2, throwUndefined) {
56
+ if (typeof fn !== "function") {
57
+ if (throwUndefined || fn !== void 0) throw new TypeError(hint1 + " must " + (hint2 || "be") + " a function" + (throwUndefined ? "" : " or undefined"));
58
+ }
59
+ return fn;
60
+ }
61
+ function applyDec(Class, decInfo, decoratorsHaveThis, name, kind, initializers, ret, isStatic, isPrivate, isField, hasPrivateBrand) {
62
+ function assertInstanceIfPrivate(target) {
63
+ if (!hasPrivateBrand(target)) throw new TypeError("Attempted to access private element on non-instance");
64
+ }
65
+ var decs = [].concat(decInfo[0]);
66
+ var decVal = decInfo[3];
67
+ var isClass = !ret;
68
+ var isAccessor = kind === 1;
69
+ var isGetter = kind === 3;
70
+ var isSetter = kind === 4;
71
+ var isMethod = kind === 2;
72
+ function bindPropCall(name, useStaticThis, before) {
73
+ return function(_this, value) {
74
+ if (useStaticThis) {
75
+ value = _this;
76
+ _this = Class;
77
+ }
78
+ if (before) before(_this);
79
+ return desc[name].call(_this, value);
80
+ };
81
+ }
82
+ var desc1 = {};
83
+ var init = [];
84
+ var key = isGetter ? "get" : isSetter || isAccessor ? "set" : "value";
85
+ if (!isClass) {
86
+ if (isPrivate) {
87
+ if (isField || isAccessor) desc1 = {
88
+ get: setFunctionName(function() {
89
+ return decVal(this);
90
+ }, name, "get"),
91
+ set: function(value) {
92
+ decInfo[4](this, value);
93
+ }
94
+ };
95
+ else desc1[key] = decVal;
96
+ if (!isField) setFunctionName(desc1[key], name, isMethod ? "" : key);
97
+ } else if (!isField) desc1 = Object.getOwnPropertyDescriptor(Class, name);
98
+ if (!isField && !isPrivate) {
99
+ _ = existingNonFields[+isStatic][name];
100
+ if (_ && (_ ^ kind) !== 7) throw new Error("Decorating two elements with the same name (" + desc1[key].name + ") is not supported yet");
101
+ existingNonFields[+isStatic][name] = kind < 3 ? 1 : kind;
102
+ }
103
+ }
104
+ var newValue = Class;
105
+ for (var i = decs.length - 1; i >= 0; i -= decoratorsHaveThis ? 2 : 1) {
106
+ var dec = assertCallable(decs[i], "A decorator", "be", true);
107
+ var decThis = decoratorsHaveThis ? decs[i - 1] : void 0;
108
+ var decoratorFinishedRef = {};
109
+ var ctx = {
110
+ kind: [
111
+ "field",
112
+ "accessor",
113
+ "method",
114
+ "getter",
115
+ "setter",
116
+ "class"
117
+ ][kind],
118
+ name,
119
+ metadata,
120
+ addInitializer: (function(decoratorFinishedRef, initializer) {
121
+ if (decoratorFinishedRef.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
122
+ assertCallable(initializer, "An initializer", "be", true);
123
+ initializers.push(initializer);
124
+ }).bind(null, decoratorFinishedRef)
125
+ };
126
+ if (isClass) {
127
+ _ = dec.call(decThis, newValue, ctx);
128
+ decoratorFinishedRef.v = 1;
129
+ if (assertCallable(_, "class decorators", "return")) newValue = _;
130
+ continue;
131
+ }
132
+ ctx.static = isStatic;
133
+ ctx.private = isPrivate;
134
+ _ = ctx.access = { has: isPrivate ? hasPrivateBrand.bind() : function(target) {
135
+ return name in target;
136
+ } };
137
+ if (!isSetter) _.get = isPrivate ? isMethod ? function(_this) {
138
+ assertInstanceIfPrivate(_this);
139
+ return desc1.value;
140
+ } : bindPropCall("get", 0, assertInstanceIfPrivate) : function(target) {
141
+ return target[name];
142
+ };
143
+ if (!isMethod && !isGetter) _.set = isPrivate ? bindPropCall("set", 0, assertInstanceIfPrivate) : function(target, value) {
144
+ target[name] = value;
145
+ };
146
+ newValue = dec.call(decThis, isAccessor ? {
147
+ get: desc1.get,
148
+ set: desc1.set
149
+ } : desc1[key], ctx);
150
+ decoratorFinishedRef.v = 1;
151
+ if (isAccessor) {
152
+ if (typeof newValue === "object" && newValue) {
153
+ if (_ = assertCallable(newValue.get, "accessor.get")) desc1.get = _;
154
+ if (_ = assertCallable(newValue.set, "accessor.set")) desc1.set = _;
155
+ if (_ = assertCallable(newValue.init, "accessor.init")) init.unshift(_);
156
+ } else if (newValue !== void 0) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
157
+ } else if (assertCallable(newValue, (isField ? "field" : "method") + " decorators", "return")) if (isField) init.unshift(newValue);
158
+ else desc1[key] = newValue;
159
+ }
160
+ if (kind < 2) ret.push(createRunInitializers(init, isStatic, 1), createRunInitializers(initializers, isStatic, 0));
161
+ if (!isField && !isClass) if (isPrivate) if (isAccessor) ret.splice(-1, 0, bindPropCall("get", isStatic), bindPropCall("set", isStatic));
162
+ else ret.push(isMethod ? desc1[key] : assertCallable.call.bind(desc1[key]));
163
+ else defineProperty(Class, name, desc1);
164
+ return newValue;
165
+ }
166
+ function applyMemberDecs() {
167
+ var ret = [];
168
+ var protoInitializers;
169
+ var staticInitializers;
170
+ var pushInitializers = function(initializers) {
171
+ if (initializers) ret.push(createRunInitializers(initializers));
172
+ };
173
+ var applyMemberDecsOfKind = function(isStatic, isField) {
174
+ for (var i = 0; i < memberDecs.length; i++) {
175
+ var decInfo = memberDecs[i];
176
+ var kind = decInfo[1];
177
+ var kindOnly = kind & 7;
178
+ if ((kind & 8) == isStatic && !kindOnly == isField) {
179
+ var name = decInfo[2];
180
+ var isPrivate = !!decInfo[3];
181
+ var decoratorsHaveThis = kind & 16;
182
+ 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(_) {
183
+ return checkInRHS(_) === targetClass;
184
+ } : instanceBrand);
185
+ }
186
+ }
187
+ };
188
+ applyMemberDecsOfKind(8, 0);
189
+ applyMemberDecsOfKind(0, 0);
190
+ applyMemberDecsOfKind(8, 1);
191
+ applyMemberDecsOfKind(0, 1);
192
+ pushInitializers(protoInitializers);
193
+ pushInitializers(staticInitializers);
194
+ return ret;
195
+ }
196
+ function defineMetadata(Class) {
197
+ return defineProperty(Class, symbolMetadata, {
198
+ configurable: true,
199
+ enumerable: true,
200
+ value: metadata
201
+ });
202
+ }
203
+ if (parentClass !== void 0) metadata = parentClass[symbolMetadata];
204
+ metadata = create(metadata == null ? null : metadata);
205
+ _ = applyMemberDecs();
206
+ if (!hasClassDecs) defineMetadata(targetClass);
207
+ return {
208
+ e: _,
209
+ get c() {
210
+ var initializers = [];
211
+ return hasClassDecs && [defineMetadata(targetClass = applyDec(targetClass, [classDecs], classDecsHaveThis, targetClass.name, 5, initializers)), createRunInitializers(initializers, 1)];
212
+ }
213
+ };
214
+ }
215
+ let _dec, _initClass;
216
+ _dec = injectable([
217
+ inject(FormatAppErrorPortToken),
218
+ inject(CliVerboseDiagnosticsPortToken),
219
+ inject(CliLoggerPortToken)
220
+ ]);
221
+ let _CliExecutorService;
222
+ (class {
223
+ formatAppError;
224
+ verboseDiagnostics;
225
+ logger;
226
+ static {
227
+ ({c: [_CliExecutorService, _initClass]} = _apply_decs_2311(this, [_dec], []));
228
+ }
229
+ constructor(formatAppError, verboseDiagnostics, logger) {
230
+ this.formatAppError = formatAppError;
231
+ this.verboseDiagnostics = verboseDiagnostics;
232
+ this.logger = logger;
233
+ }
234
+ assertExhaustiveAppErrorCode(code) {
235
+ return code;
236
+ }
237
+ exitCodeForAppError(error) {
238
+ const { code } = error;
239
+ switch (code) {
240
+ case "NOT_FOUND": return 1;
241
+ case "VALIDATION_ERROR": return 2;
242
+ case "INFRA_FAILURE": return 1;
243
+ default: return this.assertExhaustiveAppErrorCode(code);
244
+ }
245
+ }
246
+ consumeCliAppError(outcome, options) {
247
+ if (!outcome.ok) {
248
+ this.logger.err(this.formatAppError.format(outcome.error));
249
+ if (this.verboseDiagnostics.isVerboseCliDiagnostics() && outcome.error.code === "INFRA_FAILURE" && outcome.error.cause instanceof Error && outcome.error.cause.stack !== void 0) this.logger.err(outcome.error.cause.stack);
250
+ process.exitCode = this.exitCodeForAppError(outcome.error);
251
+ return false;
252
+ }
253
+ if (options?.successMessage !== void 0) this.logger.out(options.successMessage);
254
+ return true;
255
+ }
256
+ async runCliResultAsync(outcomePromise, onSuccess) {
257
+ const outcome = await outcomePromise;
258
+ if (!this.consumeCliAppError(outcome)) return;
259
+ const exit = await onSuccess(outcome.value);
260
+ process.exitCode = exit === void 0 ? 0 : exit;
261
+ }
262
+ static {
263
+ _initClass();
264
+ }
265
+ });
266
+ //#endregion
267
+ export { _CliExecutorService as CliExecutorService };
@@ -0,0 +1,236 @@
1
+ import { AppError } from "../../domain/errors.domain.mjs";
2
+ import { err, ok } from "../../domain/result.model.mjs";
3
+ import { injectable } from "@codefast/di";
4
+ //#region src/shell/application/services/schema-validator.service.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();
216
+ let _SchemaValidatorService;
217
+ (class {
218
+ static {
219
+ ({c: [_SchemaValidatorService, _initClass]} = _apply_decs_2311(this, [_dec], []));
220
+ }
221
+ formatSchemaIssues(issues) {
222
+ return issues.map((issue) => {
223
+ return `${issue.path.length > 0 ? `${issue.path.join(".")}: ` : ""}${issue.message}`;
224
+ }).join("; ");
225
+ }
226
+ parseWithSchema(schema, input) {
227
+ const parsed = schema.safeParse(input);
228
+ if (!parsed.success) return err(new AppError("VALIDATION_ERROR", this.formatSchemaIssues(parsed.error.issues)));
229
+ return ok(parsed.data);
230
+ }
231
+ static {
232
+ _initClass();
233
+ }
234
+ });
235
+ //#endregion
236
+ export { _SchemaValidatorService as SchemaValidatorService };
@@ -1,10 +1,9 @@
1
- import { AppError } from "../domain/errors.domain.mjs";
2
- import { err, ok } from "../domain/result.model.mjs";
3
- import { messageFromCaughtUnknown } from "../domain/caught-unknown-message.value-object.mjs";
4
- import { ConfigLoaderPortToken, ConfigWarningReporterPortToken } from "../../config/contracts/tokens.mjs";
5
- import { loadCodefastConfig } from "../../config/application/services/load-config.service.mjs";
1
+ import { AppError } from "../../domain/errors.domain.mjs";
2
+ import { err, ok } from "../../domain/result.model.mjs";
3
+ import { messageFromCaughtUnknown } from "../../domain/caught-unknown-message.value-object.mjs";
4
+ import { ConfigLoaderPortToken, ConfigWarningReporterPortToken } from "../../../domains/config/composition/tokens.mjs";
6
5
  import { inject, injectable } from "@codefast/di";
7
- //#region src/lib/core/application/load-codefast-config.use-case.ts
6
+ //#region src/shell/application/use-cases/load-codefast-config.use-case.ts
8
7
  function toPrimitive(input, hint) {
9
8
  if (typeof input !== "object" || input === null) return input;
10
9
  var prim = input[Symbol.toPrimitive];
@@ -216,12 +215,12 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
216
215
  }
217
216
  let _dec, _initClass;
218
217
  _dec = injectable([inject(ConfigLoaderPortToken), inject(ConfigWarningReporterPortToken)]);
219
- let _LoadCodefastConfigUseCaseImpl;
218
+ let _LoadCodefastConfigUseCase;
220
219
  (class {
221
220
  configLoader;
222
221
  warningReporter;
223
222
  static {
224
- ({c: [_LoadCodefastConfigUseCaseImpl, _initClass]} = _apply_decs_2311(this, [_dec], []));
223
+ ({c: [_LoadCodefastConfigUseCase, _initClass]} = _apply_decs_2311(this, [_dec], []));
225
224
  }
226
225
  constructor(configLoader, warningReporter) {
227
226
  this.configLoader = configLoader;
@@ -229,10 +228,9 @@ let _LoadCodefastConfigUseCaseImpl;
229
228
  }
230
229
  async execute(rootDir) {
231
230
  try {
232
- const loadedConfig = await loadCodefastConfig(this.configLoader, rootDir);
233
- if (!loadedConfig.ok) return loadedConfig;
234
- this.warningReporter.reportSchemaWarnings(loadedConfig.value.warnings);
235
- return ok({ config: loadedConfig.value.config });
231
+ const { config, warnings } = await this.configLoader.loadConfig(rootDir);
232
+ this.warningReporter.reportSchemaWarnings(warnings);
233
+ return ok({ config });
236
234
  } catch (caughtError) {
237
235
  return err(new AppError("INFRA_FAILURE", messageFromCaughtUnknown(caughtError), caughtError));
238
236
  }
@@ -242,4 +240,4 @@ let _LoadCodefastConfigUseCaseImpl;
242
240
  }
243
241
  });
244
242
  //#endregion
245
- export { _LoadCodefastConfigUseCaseImpl as LoadCodefastConfigUseCaseImpl };
243
+ export { _LoadCodefastConfigUseCase as LoadCodefastConfigUseCase };
@@ -0,0 +1,5 @@
1
+ import { token } from "@codefast/di";
2
+ //#region src/shell/composition/tokens.ts
3
+ const CommandPortToken = token("CommandPort");
4
+ //#endregion
5
+ export { CommandPortToken };
@@ -0,0 +1,11 @@
1
+ //#region src/shell/contracts/cli-command-slots.ts
2
+ /**
3
+ * Stable DI slot names for `CommandPortToken` multi-bindings and Commander subcommand names.
4
+ * Keep in sync with `CommandPort.definition.name` on each command class.
5
+ */ const CLI_COMMAND_SLOT_NAME = {
6
+ arrange: "arrange",
7
+ mirror: "mirror",
8
+ tag: "tag"
9
+ };
10
+ //#endregion
11
+ export { CLI_COMMAND_SLOT_NAME };
@@ -1,4 +1,4 @@
1
- //#region src/lib/core/domain/caught-unknown-message.value-object.ts
1
+ //#region src/shell/domain/caught-unknown-message.value-object.ts
2
2
  /**
3
3
  * Stable, user-facing text for values caught as `unknown`.
4
4
  * Avoids `String(unknown)` / `[object Object]` and satisfies strict `no-base-to-string`.
@@ -1,4 +1,4 @@
1
- //#region src/lib/core/domain/cli-exit-codes.domain.ts
1
+ //#region src/shell/domain/cli-exit-codes.domain.ts
2
2
  /**
3
3
  * Process exit codes for the `codefast` CLI.
4
4
  *
@@ -0,0 +1,6 @@
1
+ //#region src/shell/domain/cli-positional-arg.value-object.ts
2
+ /** Coerce a raw Commander positional argument to a string, or undefined when absent. */ function readOptionalPositionalArg(candidate) {
3
+ return typeof candidate === "string" ? candidate : void 0;
4
+ }
5
+ //#endregion
6
+ export { readOptionalPositionalArg };
@@ -1,4 +1,4 @@
1
- //#region src/lib/core/domain/errors.domain.ts
1
+ //#region src/shell/domain/errors.domain.ts
2
2
  /**
3
3
  * Cross-context application errors for Result-based use cases (CLI orchestration).
4
4
  * Does not extend the global `Error` type — instances are carried in `Result` values, not thrown.
@@ -1,4 +1,4 @@
1
- //#region src/lib/core/domain/result.model.ts
1
+ //#region src/shell/domain/result.model.ts
2
2
  /**
3
3
  * Lightweight functional Result type for use-case boundaries.
4
4
  */ function ok(value) {
@@ -1,4 +1,4 @@
1
- //#region src/lib/shared/source-code/domain/text-edit.model.ts
1
+ //#region src/shell/domain/source-text-edit.support.ts
2
2
  /**
3
3
  * Pure string utilities for applying non-overlapping text edits and reading line indentation.
4
4
  */ function lineStartIndexContaining(source, pos) {
@@ -26,7 +26,7 @@
26
26
  * a token not at column 0 (e.g. `base: ["foo"` → prefix before the opening `"` of `"foo"`).
27
27
  */ function textPrefixFromLineStartToPosition(source, pos) {
28
28
  const searchPos = Math.max(0, Math.min(pos, source.length));
29
- return source.slice(lineStartIndexContaining(source, pos), searchPos);
29
+ return source.slice(lineStartIndexContaining(source, searchPos), searchPos);
30
30
  }
31
31
  /**
32
32
  * If `tokenEnd` is followed by optional ASCII whitespace then `,`, returns the index after that