@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,259 @@
1
+ import { CliFilesystemPortToken } from "../../application/cli-runtime.tokens.mjs";
2
+ import path from "node:path";
3
+ import { inject, injectable } from "@codefast/di";
4
+ //#region src/shell/infrastructure/adapters/typescript-source-file-walker.adapter.ts
5
+ function toPrimitive(input, hint) {
6
+ if (typeof input !== "object" || input === null) return input;
7
+ var prim = input[Symbol.toPrimitive];
8
+ if (prim !== void 0) {
9
+ var res = prim.call(input, hint || "default");
10
+ if (typeof res !== "object") return res;
11
+ throw new TypeError("@@toPrimitive must return a primitive value.");
12
+ }
13
+ return (hint === "string" ? String : Number)(input);
14
+ }
15
+ function toPropertyKey(arg) {
16
+ var key = toPrimitive(arg, "string");
17
+ return typeof key === "symbol" ? key : String(key);
18
+ }
19
+ function checkInRHS(value) {
20
+ if (Object(value) !== value) throw TypeError("right-hand side of 'in' should be an object, got " + (value !== null ? typeof value : "null"));
21
+ return value;
22
+ }
23
+ function setFunctionName(fn, name, prefix) {
24
+ if (typeof name === "symbol") {
25
+ name = name.description;
26
+ name = name ? "[" + name + "]" : "";
27
+ }
28
+ try {
29
+ Object.defineProperty(fn, "name", {
30
+ configurable: true,
31
+ value: prefix ? prefix + " " + name : name
32
+ });
33
+ } catch (_) {}
34
+ return fn;
35
+ }
36
+ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis, instanceBrand, parentClass) {
37
+ var symbolMetadata = Symbol.metadata || Symbol.for("Symbol.metadata");
38
+ var defineProperty = Object.defineProperty;
39
+ var create = Object.create;
40
+ var metadata;
41
+ var existingNonFields = [create(null), create(null)];
42
+ var hasClassDecs = classDecs.length;
43
+ var _;
44
+ function createRunInitializers(initializers, useStaticThis, hasValue) {
45
+ return function(thisArg, value) {
46
+ if (useStaticThis) {
47
+ value = thisArg;
48
+ thisArg = targetClass;
49
+ }
50
+ for (var i = 0; i < initializers.length; i++) value = initializers[i].apply(thisArg, hasValue ? [value] : []);
51
+ return hasValue ? value : thisArg;
52
+ };
53
+ }
54
+ function assertCallable(fn, hint1, hint2, throwUndefined) {
55
+ if (typeof fn !== "function") {
56
+ if (throwUndefined || fn !== void 0) throw new TypeError(hint1 + " must " + (hint2 || "be") + " a function" + (throwUndefined ? "" : " or undefined"));
57
+ }
58
+ return fn;
59
+ }
60
+ function applyDec(Class, decInfo, decoratorsHaveThis, name, kind, initializers, ret, isStatic, isPrivate, isField, hasPrivateBrand) {
61
+ function assertInstanceIfPrivate(target) {
62
+ if (!hasPrivateBrand(target)) throw new TypeError("Attempted to access private element on non-instance");
63
+ }
64
+ var decs = [].concat(decInfo[0]);
65
+ var decVal = decInfo[3];
66
+ var isClass = !ret;
67
+ var isAccessor = kind === 1;
68
+ var isGetter = kind === 3;
69
+ var isSetter = kind === 4;
70
+ var isMethod = kind === 2;
71
+ function bindPropCall(name, useStaticThis, before) {
72
+ return function(_this, value) {
73
+ if (useStaticThis) {
74
+ value = _this;
75
+ _this = Class;
76
+ }
77
+ if (before) before(_this);
78
+ return desc[name].call(_this, value);
79
+ };
80
+ }
81
+ var desc1 = {};
82
+ var init = [];
83
+ var key = isGetter ? "get" : isSetter || isAccessor ? "set" : "value";
84
+ if (!isClass) {
85
+ if (isPrivate) {
86
+ if (isField || isAccessor) desc1 = {
87
+ get: setFunctionName(function() {
88
+ return decVal(this);
89
+ }, name, "get"),
90
+ set: function(value) {
91
+ decInfo[4](this, value);
92
+ }
93
+ };
94
+ else desc1[key] = decVal;
95
+ if (!isField) setFunctionName(desc1[key], name, isMethod ? "" : key);
96
+ } else if (!isField) desc1 = Object.getOwnPropertyDescriptor(Class, name);
97
+ if (!isField && !isPrivate) {
98
+ _ = existingNonFields[+isStatic][name];
99
+ if (_ && (_ ^ kind) !== 7) throw new Error("Decorating two elements with the same name (" + desc1[key].name + ") is not supported yet");
100
+ existingNonFields[+isStatic][name] = kind < 3 ? 1 : kind;
101
+ }
102
+ }
103
+ var newValue = Class;
104
+ for (var i = decs.length - 1; i >= 0; i -= decoratorsHaveThis ? 2 : 1) {
105
+ var dec = assertCallable(decs[i], "A decorator", "be", true);
106
+ var decThis = decoratorsHaveThis ? decs[i - 1] : void 0;
107
+ var decoratorFinishedRef = {};
108
+ var ctx = {
109
+ kind: [
110
+ "field",
111
+ "accessor",
112
+ "method",
113
+ "getter",
114
+ "setter",
115
+ "class"
116
+ ][kind],
117
+ name,
118
+ metadata,
119
+ addInitializer: (function(decoratorFinishedRef, initializer) {
120
+ if (decoratorFinishedRef.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
121
+ assertCallable(initializer, "An initializer", "be", true);
122
+ initializers.push(initializer);
123
+ }).bind(null, decoratorFinishedRef)
124
+ };
125
+ if (isClass) {
126
+ _ = dec.call(decThis, newValue, ctx);
127
+ decoratorFinishedRef.v = 1;
128
+ if (assertCallable(_, "class decorators", "return")) newValue = _;
129
+ continue;
130
+ }
131
+ ctx.static = isStatic;
132
+ ctx.private = isPrivate;
133
+ _ = ctx.access = { has: isPrivate ? hasPrivateBrand.bind() : function(target) {
134
+ return name in target;
135
+ } };
136
+ if (!isSetter) _.get = isPrivate ? isMethod ? function(_this) {
137
+ assertInstanceIfPrivate(_this);
138
+ return desc1.value;
139
+ } : bindPropCall("get", 0, assertInstanceIfPrivate) : function(target) {
140
+ return target[name];
141
+ };
142
+ if (!isMethod && !isGetter) _.set = isPrivate ? bindPropCall("set", 0, assertInstanceIfPrivate) : function(target, value) {
143
+ target[name] = value;
144
+ };
145
+ newValue = dec.call(decThis, isAccessor ? {
146
+ get: desc1.get,
147
+ set: desc1.set
148
+ } : desc1[key], ctx);
149
+ decoratorFinishedRef.v = 1;
150
+ if (isAccessor) {
151
+ if (typeof newValue === "object" && newValue) {
152
+ if (_ = assertCallable(newValue.get, "accessor.get")) desc1.get = _;
153
+ if (_ = assertCallable(newValue.set, "accessor.set")) desc1.set = _;
154
+ if (_ = assertCallable(newValue.init, "accessor.init")) init.unshift(_);
155
+ } else if (newValue !== void 0) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
156
+ } else if (assertCallable(newValue, (isField ? "field" : "method") + " decorators", "return")) if (isField) init.unshift(newValue);
157
+ else desc1[key] = newValue;
158
+ }
159
+ if (kind < 2) ret.push(createRunInitializers(init, isStatic, 1), createRunInitializers(initializers, isStatic, 0));
160
+ if (!isField && !isClass) if (isPrivate) if (isAccessor) ret.splice(-1, 0, bindPropCall("get", isStatic), bindPropCall("set", isStatic));
161
+ else ret.push(isMethod ? desc1[key] : assertCallable.call.bind(desc1[key]));
162
+ else defineProperty(Class, name, desc1);
163
+ return newValue;
164
+ }
165
+ function applyMemberDecs() {
166
+ var ret = [];
167
+ var protoInitializers;
168
+ var staticInitializers;
169
+ var pushInitializers = function(initializers) {
170
+ if (initializers) ret.push(createRunInitializers(initializers));
171
+ };
172
+ var applyMemberDecsOfKind = function(isStatic, isField) {
173
+ for (var i = 0; i < memberDecs.length; i++) {
174
+ var decInfo = memberDecs[i];
175
+ var kind = decInfo[1];
176
+ var kindOnly = kind & 7;
177
+ if ((kind & 8) == isStatic && !kindOnly == isField) {
178
+ var name = decInfo[2];
179
+ var isPrivate = !!decInfo[3];
180
+ var decoratorsHaveThis = kind & 16;
181
+ applyDec(isStatic ? targetClass : targetClass.prototype, decInfo, decoratorsHaveThis, isPrivate ? "#" + name : toPropertyKey(name), kindOnly, kindOnly < 2 ? [] : isStatic ? staticInitializers = staticInitializers || [] : protoInitializers = protoInitializers || [], ret, !!isStatic, isPrivate, isField, isStatic && isPrivate ? function(_) {
182
+ return checkInRHS(_) === targetClass;
183
+ } : instanceBrand);
184
+ }
185
+ }
186
+ };
187
+ applyMemberDecsOfKind(8, 0);
188
+ applyMemberDecsOfKind(0, 0);
189
+ applyMemberDecsOfKind(8, 1);
190
+ applyMemberDecsOfKind(0, 1);
191
+ pushInitializers(protoInitializers);
192
+ pushInitializers(staticInitializers);
193
+ return ret;
194
+ }
195
+ function defineMetadata(Class) {
196
+ return defineProperty(Class, symbolMetadata, {
197
+ configurable: true,
198
+ enumerable: true,
199
+ value: metadata
200
+ });
201
+ }
202
+ if (parentClass !== void 0) metadata = parentClass[symbolMetadata];
203
+ metadata = create(metadata == null ? null : metadata);
204
+ _ = applyMemberDecs();
205
+ if (!hasClassDecs) defineMetadata(targetClass);
206
+ return {
207
+ e: _,
208
+ get c() {
209
+ var initializers = [];
210
+ return hasClassDecs && [defineMetadata(targetClass = applyDec(targetClass, [classDecs], classDecsHaveThis, targetClass.name, 5, initializers)), createRunInitializers(initializers, 1)];
211
+ }
212
+ };
213
+ }
214
+ let _dec, _initClass;
215
+ _dec = injectable([inject(CliFilesystemPortToken)]);
216
+ let _TypeScriptSourceFileWalkerAdapter;
217
+ (class {
218
+ fs;
219
+ static {
220
+ ({c: [_TypeScriptSourceFileWalkerAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
221
+ }
222
+ constructor(fs) {
223
+ this.fs = fs;
224
+ }
225
+ defaultSkipDirectoryNames = new Set([
226
+ "node_modules",
227
+ "dist",
228
+ ".git",
229
+ ".turbo",
230
+ ".next",
231
+ ".cache",
232
+ "out",
233
+ "build",
234
+ "coverage",
235
+ ".vercel",
236
+ ".output"
237
+ ]);
238
+ walkTsxFiles(rootDirectoryPath) {
239
+ const result = [];
240
+ this.visitTsxPaths(result, rootDirectoryPath);
241
+ return result;
242
+ }
243
+ visitTsxPaths(result, entryPath) {
244
+ if (this.fs.statSync(entryPath).isDirectory()) {
245
+ for (const childName of this.fs.readdirSync(entryPath)) {
246
+ if (this.defaultSkipDirectoryNames.has(childName)) continue;
247
+ this.visitTsxPaths(result, path.join(entryPath, childName));
248
+ }
249
+ return;
250
+ }
251
+ if (entryPath.endsWith(".d.ts")) return;
252
+ if (entryPath.endsWith(".tsx") || entryPath.endsWith(".ts")) result.push(entryPath);
253
+ }
254
+ static {
255
+ _initClass();
256
+ }
257
+ });
258
+ //#endregion
259
+ export { _TypeScriptSourceFileWalkerAdapter as TypeScriptSourceFileWalkerAdapter };
@@ -0,0 +1,69 @@
1
+ import { Command, Option } from "commander";
2
+ //#region src/shell/infrastructure/commander/commander-cli-host.adapter.ts
3
+ /** Traverses {@link CommandTree} onto a Commander {@link Command} node. */ var CommanderCliHostAdapter = class CommanderCliHostAdapter {
4
+ rootProgram;
5
+ constructor(rootProgram) {
6
+ this.rootProgram = rootProgram;
7
+ }
8
+ /** Attaches every top-level CLI root command subtree under one program root. */ static registerTrees(programRoot, trees) {
9
+ const adapter = new CommanderCliHostAdapter(programRoot);
10
+ for (const subtree of trees) adapter.registerRoot(subtree);
11
+ }
12
+ static isLikelyPlainOptionsRecord(candidate) {
13
+ return typeof candidate === "object" && candidate !== null && !Array.isArray(candidate);
14
+ }
15
+ static extractDispatchParts(args) {
16
+ if (args.length < 2) throw new Error("[internal] Commander action invoked with too few arguments");
17
+ const commandLeafCandidate = args[args.length - 1];
18
+ if (!(commandLeafCandidate instanceof Command)) throw new Error("[internal] Commander action trailing argument must be Command");
19
+ const candidateOptions = args[args.length - 2];
20
+ return {
21
+ positionalArguments: typeof candidateOptions !== "undefined" && CommanderCliHostAdapter.isLikelyPlainOptionsRecord(candidateOptions) ? args.slice(0, -2) : args.slice(0, -1),
22
+ localOptionRecord: CommanderCliHostAdapter.isLikelyPlainOptionsRecord(candidateOptions) ? candidateOptions : {},
23
+ commandLeaf: commandLeafCandidate
24
+ };
25
+ }
26
+ static applyRouteWire(leafCommand, wire) {
27
+ switch (wire.kind) {
28
+ case "optionalPositional": return leafCommand.argument(wire.argumentTemplate, wire.helpBlurb);
29
+ case "greedyPositional": return leafCommand.argument(wire.argumentTemplate, wire.helpBlurb);
30
+ case "booleanFlag": return leafCommand.option(wire.flagPhrase, wire.helpBlurb, wire.whenUnsetUses);
31
+ case "stringPlaceholderFlag": return leafCommand.option(wire.flagPhraseWithPlaceholder, wire.helpBlurb);
32
+ case "synonymousBooleanAliases": return leafCommand.addOption(new Option(wire.commaJoinedFlags, wire.helpBlurb).default(false));
33
+ }
34
+ }
35
+ static wireLeafDispatch(leafCommand, dispatch) {
36
+ leafCommand.action(async (...passedArguments) => {
37
+ const { positionalArguments, localOptionRecord, commandLeaf } = CommanderCliHostAdapter.extractDispatchParts(passedArguments);
38
+ await dispatch(positionalArguments, localOptionRecord, { readMergedGlobalsOptionRecords: () => {
39
+ const bridgeCommand = commandLeaf;
40
+ const mergedViaGlobalsBridge = bridgeCommand.optsWithGlobals?.();
41
+ if (mergedViaGlobalsBridge) return mergedViaGlobalsBridge;
42
+ return bridgeCommand.opts();
43
+ } });
44
+ });
45
+ }
46
+ static attachSubtree(parentBridge, node) {
47
+ let branchCommand = parentBridge.command(node.name).description(node.description);
48
+ if (node.aliases !== void 0) for (const aliasPiece of node.aliases) branchCommand = branchCommand.alias(aliasPiece);
49
+ const childBranchCount = node.children?.length ?? 0;
50
+ const hasLeafDispatcher = typeof node.action !== "undefined";
51
+ if (childBranchCount > 0 && hasLeafDispatcher) throw new Error(`[cli] Command "${node.name}" cannot combine children with a leaf action dispatch`);
52
+ if (childBranchCount > 0) {
53
+ for (const nestedChild of node.children) CommanderCliHostAdapter.attachSubtree(branchCommand, nestedChild);
54
+ return;
55
+ }
56
+ if (hasLeafDispatcher) {
57
+ let leafConfigured = branchCommand;
58
+ const routePieces = node.route ?? [];
59
+ for (const segment of routePieces) leafConfigured = CommanderCliHostAdapter.applyRouteWire(leafConfigured, segment);
60
+ CommanderCliHostAdapter.wireLeafDispatch(leafConfigured, node.action);
61
+ return;
62
+ }
63
+ }
64
+ registerRoot(treeRoot) {
65
+ CommanderCliHostAdapter.attachSubtree(this.rootProgram, treeRoot);
66
+ }
67
+ };
68
+ //#endregion
69
+ export { CommanderCliHostAdapter };
@@ -1,9 +1,8 @@
1
- import process from "node:process";
2
1
  import fsSync from "node:fs";
3
2
  import path from "node:path";
4
3
  import { injectable } from "@codefast/di";
5
4
  import fsPromises from "node:fs/promises";
6
- //#region src/lib/infrastructure/node-io.adapter.ts
5
+ //#region src/shell/infrastructure/node/node-cli-fs.adapter.ts
7
6
  function toPrimitive(input, hint) {
8
7
  if (typeof input !== "object" || input === null) return input;
9
8
  var prim = input[Symbol.toPrimitive];
@@ -213,14 +212,7 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
213
212
  }
214
213
  };
215
214
  }
216
- let _dec, _initClass, _dec1, _initClass1, _dec2, _initClass2;
217
- function canonicalPathSyncNode(inputPath) {
218
- try {
219
- return fsSync.realpathSync.native(inputPath);
220
- } catch {
221
- return path.resolve(inputPath);
222
- }
223
- }
215
+ let _dec, _initClass;
224
216
  _dec = injectable([]);
225
217
  let _NodeCliFsAdapter;
226
218
  (class {
@@ -228,11 +220,11 @@ let _NodeCliFsAdapter;
228
220
  ({c: [_NodeCliFsAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
229
221
  }
230
222
  existsSync = fsSync.existsSync;
231
- canonicalPathSync = canonicalPathSyncNode;
232
223
  statSync = fsSync.statSync;
233
224
  readFileSync = fsSync.readFileSync;
234
225
  writeFileSync = fsSync.writeFileSync;
235
226
  readdirSync = fsSync.readdirSync;
227
+ canonicalPathSync = (inputPath) => this.canonicalPathSyncNode(inputPath);
236
228
  readFile = (p, enc) => fsPromises.readFile(p, enc);
237
229
  writeFile = (p, data, enc) => fsPromises.writeFile(p, data, enc);
238
230
  readdir = async (p, opts) => {
@@ -242,44 +234,16 @@ let _NodeCliFsAdapter;
242
234
  };
243
235
  rename = (oldPath, newPath) => fsPromises.rename(oldPath, newPath);
244
236
  unlink = (p) => fsPromises.unlink(p);
245
- static {
246
- _initClass();
247
- }
248
- });
249
- _dec1 = injectable([]);
250
- let _NodeCliLoggerAdapter;
251
- (class {
252
- static {
253
- ({c: [_NodeCliLoggerAdapter, _initClass1]} = _apply_decs_2311(this, [_dec1], []));
254
- }
255
- out(line) {
256
- process.stdout.write(`${line}\n`);
257
- }
258
- err(line) {
259
- process.stderr.write(`${line}\n`);
260
- }
261
- static {
262
- _initClass1();
263
- }
264
- });
265
- _dec2 = injectable([]);
266
- let _NodeCliRuntimeAdapter;
267
- (class {
268
- static {
269
- ({c: [_NodeCliRuntimeAdapter, _initClass2]} = _apply_decs_2311(this, [_dec2], []));
270
- }
271
- cwd() {
272
- return process.cwd();
273
- }
274
- setExitCode(code) {
275
- process.exitCode = code;
276
- }
277
- isStdoutTty() {
278
- return !!process.stdout.isTTY;
237
+ canonicalPathSyncNode(inputPath) {
238
+ try {
239
+ return fsSync.realpathSync.native(inputPath);
240
+ } catch {
241
+ return path.resolve(inputPath);
242
+ }
279
243
  }
280
244
  static {
281
- _initClass2();
245
+ _initClass();
282
246
  }
283
247
  });
284
248
  //#endregion
285
- export { _NodeCliFsAdapter as NodeCliFsAdapter, _NodeCliLoggerAdapter as NodeCliLoggerAdapter, _NodeCliRuntimeAdapter as NodeCliRuntimeAdapter };
249
+ export { _NodeCliFsAdapter as NodeCliFsAdapter };
@@ -1,7 +1,6 @@
1
- import { CliFsToken } from "../../../core/contracts/tokens.mjs";
2
- import { findRepoRoot } from "../../../infrastructure/workspace/repo-root-resolver.service.mjs";
3
- import { inject, injectable } from "@codefast/di";
4
- //#region src/lib/arrange/adapters/secondary/workspace-resolver.adapter.ts
1
+ import process from "node:process";
2
+ import { injectable } from "@codefast/di";
3
+ //#region src/shell/infrastructure/node/node-cli-logger.adapter.ts
5
4
  function toPrimitive(input, hint) {
6
5
  if (typeof input !== "object" || input === null) return input;
7
6
  var prim = input[Symbol.toPrimitive];
@@ -212,22 +211,21 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
212
211
  };
213
212
  }
214
213
  let _dec, _initClass;
215
- _dec = injectable([inject(CliFsToken)]);
216
- let _WorkspaceResolverAdapter;
214
+ _dec = injectable([]);
215
+ let _NodeCliLoggerAdapter;
217
216
  (class {
218
- fs;
219
217
  static {
220
- ({c: [_WorkspaceResolverAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
218
+ ({c: [_NodeCliLoggerAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
221
219
  }
222
- constructor(fs) {
223
- this.fs = fs;
220
+ out(line) {
221
+ process.stdout.write(`${line}\n`);
224
222
  }
225
- findRepoRoot(fromDirectory) {
226
- return findRepoRoot(this.fs, fromDirectory);
223
+ err(line) {
224
+ process.stderr.write(`${line}\n`);
227
225
  }
228
226
  static {
229
227
  _initClass();
230
228
  }
231
229
  });
232
230
  //#endregion
233
- export { _WorkspaceResolverAdapter as WorkspaceResolverAdapter };
231
+ export { _NodeCliLoggerAdapter as NodeCliLoggerAdapter };
@@ -1,6 +1,6 @@
1
1
  import path from "node:path";
2
2
  import { injectable } from "@codefast/di";
3
- //#region src/lib/core/infrastructure/path.adapter.ts
3
+ //#region src/shell/infrastructure/node/node-cli-path.adapter.ts
4
4
  function toPrimitive(input, hint) {
5
5
  if (typeof input !== "object" || input === null) return input;
6
6
  var prim = input[Symbol.toPrimitive];
@@ -1,7 +1,6 @@
1
- import { CliFsToken } from "../contracts/tokens.mjs";
2
- import { findRepoRoot } from "../../infrastructure/workspace/repo-root-resolver.service.mjs";
3
- import { inject, injectable } from "@codefast/di";
4
- //#region src/lib/core/infrastructure/repo-root-resolver.adapter.ts
1
+ import process from "node:process";
2
+ import { injectable } from "@codefast/di";
3
+ //#region src/shell/infrastructure/node/node-cli-runtime.adapter.ts
5
4
  function toPrimitive(input, hint) {
6
5
  if (typeof input !== "object" || input === null) return input;
7
6
  var prim = input[Symbol.toPrimitive];
@@ -212,22 +211,24 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
212
211
  };
213
212
  }
214
213
  let _dec, _initClass;
215
- _dec = injectable([inject(CliFsToken)]);
216
- let _RepoRootResolverAdapter;
214
+ _dec = injectable([]);
215
+ let _NodeCliRuntimeAdapter;
217
216
  (class {
218
- fs;
219
217
  static {
220
- ({c: [_RepoRootResolverAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
218
+ ({c: [_NodeCliRuntimeAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
221
219
  }
222
- constructor(fs) {
223
- this.fs = fs;
220
+ cwd() {
221
+ return process.cwd();
224
222
  }
225
- findRepoRoot(fromDirectory) {
226
- return findRepoRoot(this.fs, fromDirectory);
223
+ setExitCode(code) {
224
+ process.exitCode = code;
225
+ }
226
+ isStdoutTty() {
227
+ return !!process.stdout.isTTY;
227
228
  }
228
229
  static {
229
230
  _initClass();
230
231
  }
231
232
  });
232
233
  //#endregion
233
- export { _RepoRootResolverAdapter as RepoRootResolverAdapter };
234
+ export { _NodeCliRuntimeAdapter as NodeCliRuntimeAdapter };