@codefast/cli 0.3.14 → 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.
- package/README.md +8 -3
- package/dist/bootstrap/cli-application.module.mjs +18 -0
- package/dist/bootstrap/composition-root.mjs +14 -0
- package/dist/bootstrap/register-cli-command-trees.mjs +7 -0
- package/dist/{lib → domains}/arrange/application/use-cases/analyze-directory.use-case.mjs +12 -12
- package/dist/{lib → domains}/arrange/application/use-cases/prepare-arrange-workspace.use-case.mjs +19 -18
- package/dist/{lib → domains}/arrange/application/use-cases/run-arrange-sync.use-case.mjs +18 -18
- package/dist/{lib → domains}/arrange/application/use-cases/suggest-cn-groups.use-case.mjs +5 -5
- package/dist/domains/arrange/arrange.module.mjs +38 -0
- package/dist/domains/arrange/composition/tokens.mjs +17 -0
- package/dist/{lib/arrange/domain/arrange-analyze.service.mjs → domains/arrange/domain/arrange-analyze.domain-service.mjs} +1 -1
- package/dist/{lib/arrange/domain/arrange-grouping.service.mjs → domains/arrange/domain/arrange-grouping.domain-service.mjs} +2 -2
- package/dist/{lib → domains}/arrange/domain/ast/ast-helpers.helper.mjs +2 -2
- package/dist/{lib → domains}/arrange/domain/ast/ast-node.model.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/ast/collectors-cn.collector.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/ast/collectors-jsx.collector.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/ast/collectors-tv.collector.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/ast/targets.model.mjs +2 -2
- package/dist/{lib → domains}/arrange/domain/constants.domain.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/grouping.domain.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/imports.domain.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/source-text-formatters.formatter.mjs +2 -2
- package/dist/{lib/arrange/domain/tailwind-grouping.service.mjs → domains/arrange/domain/tailwind-grouping.domain-service.mjs} +5 -5
- package/dist/{lib → domains}/arrange/domain/tailwind-token-classifier.domain-service.mjs +1 -1
- package/dist/{lib → domains}/arrange/domain/tailwind-token.value-object.mjs +1 -1
- package/dist/{lib/arrange/application/services/arrange-file-processor.service.mjs → domains/arrange/infrastructure/adapters/arrange-file-processor.adapter.mjs} +8 -8
- package/dist/domains/arrange/infrastructure/adapters/arrange-target-path-resolver.adapter.mjs +247 -0
- package/dist/{lib/arrange/application/services/arrange-target-scanner.service.mjs → domains/arrange/infrastructure/adapters/arrange-target-scanner.adapter.mjs} +8 -8
- package/dist/{lib/arrange/adapters/secondary → domains/arrange/infrastructure/adapters}/domain-source-parser.adapter.mjs +10 -8
- package/dist/{lib/arrange/adapters/secondary → domains/arrange/infrastructure/adapters}/file-walker.adapter.mjs +8 -9
- package/dist/domains/arrange/infrastructure/typescript-ast-translator.mjs +580 -0
- package/dist/{lib/arrange/adapters/primary → domains/arrange/presentation}/cli/arrange.command.mjs +195 -54
- package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/arrange-analyze.presenter.mjs +26 -33
- package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/arrange-cli.schema.mjs +1 -1
- package/dist/{lib/tag/presentation/present-tag-sync-result.presenter.mjs → domains/arrange/presentation/presenters/arrange-sync.presenter.mjs} +12 -9
- package/dist/{lib/arrange/presentation → domains/arrange/presentation/presenters}/group-file-preview.presenter.mjs +46 -46
- package/dist/domains/config/composition/tokens.mjs +7 -0
- package/dist/{lib/config/infrastructure/config-schema.adapter.mjs → domains/config/domain/codefast-config.schema.mjs} +6 -6
- package/dist/{lib/config/infrastructure → domains/config/infrastructure/adapters}/config-loader.adapter.mjs +76 -77
- package/dist/{lib/config/infrastructure → domains/config/infrastructure/adapters}/config-warning-reporter.adapter.mjs +6 -6
- package/dist/domains/config/infrastructure/adapters/zod-codefast-config-schema.adapter.mjs +236 -0
- package/dist/domains/mirror/application/mirror-sync-cli-result.mjs +15 -0
- package/dist/{lib → domains}/mirror/application/use-cases/prepare-mirror-sync.use-case.mjs +14 -15
- package/dist/{lib → domains}/mirror/application/use-cases/run-mirror-sync.use-case.mjs +69 -54
- package/dist/{lib/mirror/contracts → domains/mirror/composition}/tokens.mjs +4 -3
- package/dist/{lib → domains}/mirror/domain/constants.domain.mjs +1 -1
- package/dist/{lib → domains}/mirror/domain/errors.domain.mjs +1 -1
- package/dist/{lib/mirror/application/services/generate-mirror-exports.service.mjs → domains/mirror/domain/generate-mirror-exports.domain-service.mjs} +2 -2
- package/dist/{lib → domains}/mirror/domain/package-display-name.policy.mjs +1 -1
- package/dist/{lib → domains}/mirror/domain/path-normalizer.value-object.mjs +1 -1
- package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/file-system-service.adapter.mjs +8 -8
- package/dist/domains/mirror/infrastructure/adapters/mirror-package-path-resolver.adapter.mjs +252 -0
- package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/mirror-sync-reporter.adapter.mjs +94 -15
- package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/package-repository.adapter.mjs +4 -4
- package/dist/{lib/mirror/adapters/secondary → domains/mirror/infrastructure/adapters}/sync-workspace-package.adapter.mjs +23 -46
- package/dist/{lib/mirror/infrastructure → domains/mirror/infrastructure/guards}/dirent-list.guard.mjs +1 -1
- package/dist/{lib → domains}/mirror/infrastructure/package-json-exports.repository.mjs +27 -27
- package/dist/domains/mirror/mirror.module.mjs +26 -0
- package/dist/{lib/mirror/adapters/primary → domains/mirror/presentation}/cli/mirror.command.mjs +83 -27
- package/dist/{lib/mirror/presentation → domains/mirror/presentation/presenters}/mirror-cli.schema.mjs +1 -4
- package/dist/domains/mirror/presentation/presenters/present-mirror-sync-progress.presenter.mjs +265 -0
- package/dist/domains/tag/application/ports/outbound/tag-eligible-workspace-paths.port.mjs +1 -0
- package/dist/domains/tag/application/ports/outbound/tag-since-writer.port.mjs +1 -0
- package/dist/domains/tag/application/ports/outbound/tag-target-path-resolver.port.mjs +1 -0
- package/dist/domains/tag/application/ports/outbound/tag-target-runner.port.mjs +1 -0
- package/dist/domains/tag/application/ports/outbound/tag-version-resolver.port.mjs +1 -0
- package/dist/domains/tag/application/ports/presenting/present-tag-sync-progress.presenter.mjs +1 -0
- package/dist/domains/tag/application/ports/presenting/present-tag-sync-result.presenter.mjs +1 -0
- package/dist/domains/tag/application/requests/tag-sync-execution-input.mjs +1 -0
- package/dist/domains/tag/application/requests/tag-sync.request.mjs +1 -0
- package/dist/{lib → domains}/tag/application/tag-sync-cli-result.mjs +3 -3
- package/dist/{lib → domains}/tag/application/use-cases/prepare-tag-sync.use-case.mjs +20 -24
- package/dist/{lib → domains}/tag/application/use-cases/run-tag-sync.use-case.mjs +123 -129
- package/dist/domains/tag/composition/tokens.mjs +13 -0
- package/dist/domains/tag/contracts/models.mjs +1 -0
- package/dist/domains/tag/domain/types.domain.mjs +1 -0
- package/dist/{lib/tag/adapters/secondary → domains/tag/infrastructure/adapters}/tag-since-writer.adapter.mjs +105 -105
- package/dist/{lib/tag/adapters/secondary/typescript-tree-walk.adapter.mjs → domains/tag/infrastructure/adapters/tag-target-path-resolver.adapter.mjs} +11 -9
- package/dist/domains/tag/infrastructure/adapters/tag-target-resolver.adapter.mjs +302 -0
- package/dist/domains/tag/infrastructure/adapters/tag-target-runner.adapter.mjs +259 -0
- package/dist/{lib/tag/adapters/secondary → domains/tag/infrastructure/adapters}/tag-version-resolver.adapter.mjs +6 -6
- package/dist/{lib/tag/adapters/primary → domains/tag/presentation}/cli/tag.command.mjs +67 -27
- package/dist/{lib/tag/presentation/tag-sync-progress-listener.presenter.mjs → domains/tag/presentation/presenters/present-tag-sync-progress.presenter.mjs} +14 -9
- package/dist/domains/tag/presentation/presenters/present-tag-sync-result.presenter.mjs +290 -0
- package/dist/{lib/tag/presentation → domains/tag/presentation/presenters}/tag-cli.schema.mjs +1 -1
- package/dist/domains/tag/tag.module.mjs +28 -0
- package/dist/program.mjs +3 -2
- package/dist/shell/application/cli-runtime.tokens.mjs +18 -0
- package/dist/shell/application/coordination/cli-executor.coordination.mjs +1 -0
- package/dist/shell/application/coordination/cli-schema-parsing.coordination.mjs +1 -0
- package/dist/shell/application/global-cli-options.model.mjs +5 -0
- package/dist/shell/application/ports/inbound/load-codefast-config.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-fs.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-logger.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-path.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-runtime.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-telemetry.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/cli-verbose-diagnostics.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/format-app-error.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/global-cli-options-parse.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/repo-root-resolver.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/typescript-source-file-walker.port.mjs +1 -0
- package/dist/shell/application/ports/outbound/workspace-package-layout.port.mjs +1 -0
- package/dist/shell/application/ports/primary/command.port.mjs +1 -0
- package/dist/shell/application/services/cli-executor.service.mjs +267 -0
- package/dist/shell/application/services/schema-validator.service.mjs +236 -0
- package/dist/{lib/core/application → shell/application/use-cases}/load-codefast-config.use-case.mjs +11 -13
- package/dist/shell/composition/tokens.mjs +5 -0
- package/dist/shell/contracts/cli-command-slots.mjs +11 -0
- package/dist/{lib/core → shell}/domain/caught-unknown-message.value-object.mjs +1 -1
- package/dist/{lib/core → shell}/domain/cli-exit-codes.domain.mjs +1 -1
- package/dist/shell/domain/cli-positional-arg.value-object.mjs +6 -0
- package/dist/{lib/core → shell}/domain/errors.domain.mjs +1 -1
- package/dist/{lib/core → shell}/domain/result.model.mjs +1 -1
- package/dist/{lib/shared/source-code/domain/text-edit.model.mjs → shell/domain/source-text-edit.support.mjs} +2 -2
- package/dist/shell/infrastructure/adapters/cli-verbose-diagnostics.adapter.mjs +228 -0
- package/dist/{lib/tag/adapters/secondary/tag-target-resolver.adapter.mjs → shell/infrastructure/adapters/format-app-error.adapter.mjs} +16 -13
- package/dist/shell/infrastructure/adapters/global-cli-options-parser.adapter.mjs +233 -0
- package/dist/{lib/mirror/adapters/secondary/workspace-service.adapter.mjs → shell/infrastructure/adapters/repo-root-resolver.adapter.mjs} +20 -13
- package/dist/shell/infrastructure/adapters/typescript-source-file-walker.adapter.mjs +259 -0
- package/dist/shell/infrastructure/commander/commander-cli-host.adapter.mjs +69 -0
- package/dist/{lib/infrastructure/node-io.adapter.mjs → shell/infrastructure/node/node-cli-fs.adapter.mjs} +11 -47
- package/dist/{lib/arrange/adapters/secondary/workspace-resolver.adapter.mjs → shell/infrastructure/node/node-cli-logger.adapter.mjs} +11 -13
- package/dist/{lib/core/infrastructure/path.adapter.mjs → shell/infrastructure/node/node-cli-path.adapter.mjs} +1 -1
- package/dist/{lib/core/infrastructure/repo-root-resolver.adapter.mjs → shell/infrastructure/node/node-cli-runtime.adapter.mjs} +14 -13
- package/dist/shell/infrastructure/telemetry/cli-telemetry.adapter.mjs +280 -0
- package/dist/shell/infrastructure/workspace/node-pnpm-workspace-package-layout.adapter.mjs +385 -0
- package/dist/shell/shell.module.mjs +43 -0
- package/dist/shell/wiring/optional-cli-port-telemetry-activation.mjs +13 -0
- package/package.json +9 -7
- package/dist/lib/arrange/adapters/primary/cli/arrange.presentation.module.mjs +0 -14
- package/dist/lib/arrange/adapters/primary/cli/presentation.tokens.mjs +0 -5
- package/dist/lib/arrange/application/services/arrange-target-path-resolver.service.mjs +0 -21
- package/dist/lib/arrange/arrange.module.mjs +0 -31
- package/dist/lib/arrange/contracts/tokens.mjs +0 -15
- package/dist/lib/arrange/infrastructure/typescript-ast-translator.adapter.mjs +0 -355
- package/dist/lib/arrange/presentation/arrange-sync.presenter.mjs +0 -33
- package/dist/lib/bootstrap/composition-root.mjs +0 -33
- package/dist/lib/config/application/services/load-config.service.mjs +0 -17
- package/dist/lib/config/contracts/tokens.mjs +0 -6
- package/dist/lib/core/application/services/global-cli-options-parser.service.mjs +0 -9
- package/dist/lib/core/application/services/schema-validator.service.mjs +0 -17
- package/dist/lib/core/contracts/tokens.mjs +0 -10
- package/dist/lib/core/core.module.mjs +0 -9
- package/dist/lib/core/infrastructure/infrastructure.module.mjs +0 -30
- package/dist/lib/core/infrastructure/port-telemetry.decorator.mjs +0 -62
- package/dist/lib/core/infrastructure/verbose-diagnostics.policy.mjs +0 -9
- package/dist/lib/core/presentation/cli-executor.presenter.mjs +0 -42
- package/dist/lib/core/presentation/cli-schema.parser.mjs +0 -7
- package/dist/lib/core/presentation/format-app-error.presenter.mjs +0 -17
- package/dist/lib/core/presentation/presentation.module.mjs +0 -5
- package/dist/lib/infrastructure/workspace/repo-root-resolver.service.mjs +0 -21
- package/dist/lib/kernel/contracts/tokens.mjs +0 -5
- package/dist/lib/mirror/application/mirror-sync-json.format.mjs +0 -12
- package/dist/lib/mirror/application/services/mirror-package-arg-resolver.service.mjs +0 -20
- package/dist/lib/mirror/infrastructure/mirror-console-reporter.presenter.mjs +0 -99
- package/dist/lib/mirror/infrastructure/package-filter-resolver.service.mjs +0 -25
- package/dist/lib/mirror/infrastructure/workspace-packages.service.mjs +0 -158
- package/dist/lib/mirror/mirror.module.mjs +0 -25
- package/dist/lib/shared/source-code/infrastructure/typescript-source-file-walker.service.mjs +0 -33
- package/dist/lib/tag/adapters/primary/cli/presentation.tokens.mjs +0 -6
- package/dist/lib/tag/adapters/primary/cli/tag.presentation.module.mjs +0 -13
- package/dist/lib/tag/application/services/tag-cli-target-path-resolver.service.mjs +0 -9
- package/dist/lib/tag/application/services/tag-target-runner.service.mjs +0 -21
- package/dist/lib/tag/application/tag-sync-json.format.mjs +0 -14
- package/dist/lib/tag/contracts/tokens.mjs +0 -10
- package/dist/lib/tag/infrastructure/tag-target-candidates.adapter.mjs +0 -170
- package/dist/lib/tag/presentation/colors.presenter.mjs +0 -12
- package/dist/lib/tag/presentation/tag-sync.presenter.mjs +0 -61
- package/dist/lib/tag/tag.module.mjs +0 -23
- /package/dist/{lib/arrange/application/ports/domain-source-parser.port.mjs → domains/arrange/application/ports/inbound/analyze-directory.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/ports/file-walker.port.mjs → domains/arrange/application/ports/inbound/prepare-arrange-workspace.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/ports/group-file-preview.port.mjs → domains/arrange/application/ports/inbound/run-arrange-sync.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/ports/workspace-resolver.port.mjs → domains/arrange/application/ports/inbound/suggest-cn-groups.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/requests/analyze-directory.request.mjs → domains/arrange/application/ports/outbound/arrange-file-processor.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/requests/arrange-sync.request.mjs → domains/arrange/application/ports/outbound/arrange-target-path-resolver.port.mjs} +0 -0
- /package/dist/{lib/arrange/application/requests/suggest-groups.request.mjs → domains/arrange/application/ports/outbound/arrange-target-scanner.port.mjs} +0 -0
- /package/dist/{lib/arrange/contracts/analyze-report-presenter.contract.mjs → domains/arrange/application/ports/outbound/domain-source-parser.port.mjs} +0 -0
- /package/dist/{lib/arrange/contracts/models.mjs → domains/arrange/application/ports/outbound/file-walker.port.mjs} +0 -0
- /package/dist/{lib/arrange/contracts/services.contract.mjs → domains/arrange/application/ports/presenting/present-analyze-report.presenter.mjs} +0 -0
- /package/dist/{lib/arrange/domain/types.domain.mjs → domains/arrange/application/ports/presenting/present-arrange-sync-result.presenter.mjs} +0 -0
- /package/dist/{lib/config/application/ports/config-loader.port.mjs → domains/arrange/application/ports/presenting/present-group-file-preview.presenter.mjs} +0 -0
- /package/dist/{lib/config/application/ports/config-warning-reporter.port.mjs → domains/arrange/application/requests/analyze-directory.request.mjs} +0 -0
- /package/dist/{lib/config/domain/schema.domain.mjs → domains/arrange/application/requests/arrange-sync.request.mjs} +0 -0
- /package/dist/{lib/core/application/ports/cli-io.port.mjs → domains/arrange/application/requests/suggest-groups.request.mjs} +0 -0
- /package/dist/{lib/mirror → domains/arrange}/contracts/models.mjs +0 -0
- /package/dist/{lib/mirror → domains/arrange}/domain/types.domain.mjs +0 -0
- /package/dist/{lib/core/application/ports/path.port.mjs → domains/config/application/ports/outbound/codefast-config-schema.port.mjs} +0 -0
- /package/dist/{lib/core/application/ports/repo-root-resolver.port.mjs → domains/config/application/ports/outbound/config-loader.port.mjs} +0 -0
- /package/dist/{lib/core/application/ports/runtime.port.mjs → domains/config/application/ports/outbound/config-warning-reporter.port.mjs} +0 -0
- /package/dist/{lib/kernel/contracts/cli-command.contract.mjs → domains/config/domain/schema.domain.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/file-system-service.port.mjs → domains/mirror/application/ports/inbound/prepare-mirror-sync.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/mirror-sync-reporter.port.mjs → domains/mirror/application/ports/inbound/run-mirror-sync.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/package-repository.port.mjs → domains/mirror/application/ports/outbound/file-system-service.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/sync-workspace-package.port.mjs → domains/mirror/application/ports/outbound/mirror-package-path.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/ports/workspace-service.port.mjs → domains/mirror/application/ports/outbound/mirror-sync-reporter.port.mjs} +0 -0
- /package/dist/{lib/mirror/application/requests/mirror-sync.request.mjs → domains/mirror/application/ports/outbound/package-repository.port.mjs} +0 -0
- /package/dist/{lib/tag/application/ports/tag-since-writer.port.mjs → domains/mirror/application/ports/outbound/sync-workspace-package.port.mjs} +0 -0
- /package/dist/{lib/tag/application/ports/tag-version-resolver.port.mjs → domains/mirror/application/ports/presenting/present-mirror-sync-progress.presenter.mjs} +0 -0
- /package/dist/{lib/tag/application/ports/target-resolver.port.mjs → domains/mirror/application/requests/mirror-sync-execution-input.mjs} +0 -0
- /package/dist/{lib/tag/application/ports/typescript-tree-walk.port.mjs → domains/mirror/application/requests/mirror-sync.request.mjs} +0 -0
- /package/dist/{lib/tag → domains/mirror}/contracts/models.mjs +0 -0
- /package/dist/{lib/tag → domains/mirror}/domain/types.domain.mjs +0 -0
- /package/dist/{lib/tag/application/requests/tag-sync.request.mjs → domains/tag/application/ports/inbound/prepare-tag-sync.port.mjs} +0 -0
- /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,43 @@
|
|
|
1
|
+
import { CliExecutorToken, CliFilesystemPortToken, CliLoggerPortToken, CliPathPortToken, CliRuntimeToken, CliSchemaParsingToken, CliTelemetryPortToken, CliVerboseDiagnosticsPortToken, FormatAppErrorPortToken, GlobalCliOptionsParsePortToken, LoadCodefastConfigUseCaseToken, RepoRootResolverPortToken, TypeScriptSourceFileWalkerPortToken, WorkspacePackageLayoutPortToken } from "./application/cli-runtime.tokens.mjs";
|
|
2
|
+
import { CodefastConfigSchemaPortToken, ConfigLoaderPortToken, ConfigWarningReporterPortToken } from "../domains/config/composition/tokens.mjs";
|
|
3
|
+
import { ZodCodefastConfigSchemaAdapter as _ZodCodefastConfigSchemaAdapter } from "../domains/config/infrastructure/adapters/zod-codefast-config-schema.adapter.mjs";
|
|
4
|
+
import { ConfigLoaderAdapter as _ConfigLoaderAdapter } from "../domains/config/infrastructure/adapters/config-loader.adapter.mjs";
|
|
5
|
+
import { ConfigWarningReporterAdapter as _ConfigWarningReporterAdapter } from "../domains/config/infrastructure/adapters/config-warning-reporter.adapter.mjs";
|
|
6
|
+
import { LoadCodefastConfigUseCase as _LoadCodefastConfigUseCase } from "./application/use-cases/load-codefast-config.use-case.mjs";
|
|
7
|
+
import { CliExecutorService as _CliExecutorService } from "./application/services/cli-executor.service.mjs";
|
|
8
|
+
import { CliVerboseDiagnosticsAdapter as _CliVerboseDiagnosticsAdapter } from "./infrastructure/adapters/cli-verbose-diagnostics.adapter.mjs";
|
|
9
|
+
import { FormatAppErrorAdapter as _FormatAppErrorAdapter } from "./infrastructure/adapters/format-app-error.adapter.mjs";
|
|
10
|
+
import { GlobalCliOptionsParserAdapter as _GlobalCliOptionsParserAdapter } from "./infrastructure/adapters/global-cli-options-parser.adapter.mjs";
|
|
11
|
+
import { SchemaValidatorService as _SchemaValidatorService } from "./application/services/schema-validator.service.mjs";
|
|
12
|
+
import { createOptionalCliPortTelemetryActivation } from "./wiring/optional-cli-port-telemetry-activation.mjs";
|
|
13
|
+
import { NodeCliFsAdapter as _NodeCliFsAdapter } from "./infrastructure/node/node-cli-fs.adapter.mjs";
|
|
14
|
+
import { NodeCliLoggerAdapter as _NodeCliLoggerAdapter } from "./infrastructure/node/node-cli-logger.adapter.mjs";
|
|
15
|
+
import { NodeCliPathAdapter as _NodeCliPathAdapter } from "./infrastructure/node/node-cli-path.adapter.mjs";
|
|
16
|
+
import { NodeCliRuntimeAdapter as _NodeCliRuntimeAdapter } from "./infrastructure/node/node-cli-runtime.adapter.mjs";
|
|
17
|
+
import { CliTelemetryAdapter as _CliTelemetryAdapter } from "./infrastructure/telemetry/cli-telemetry.adapter.mjs";
|
|
18
|
+
import { TypeScriptSourceFileWalkerAdapter as _TypeScriptSourceFileWalkerAdapter } from "./infrastructure/adapters/typescript-source-file-walker.adapter.mjs";
|
|
19
|
+
import { NodePnpmWorkspacePackageLayoutAdapter as _NodePnpmWorkspacePackageLayoutAdapter } from "./infrastructure/workspace/node-pnpm-workspace-package-layout.adapter.mjs";
|
|
20
|
+
import { RepoRootResolverAdapter as _RepoRootResolverAdapter } from "./infrastructure/adapters/repo-root-resolver.adapter.mjs";
|
|
21
|
+
import { Module } from "@codefast/di";
|
|
22
|
+
//#region src/shell/shell.module.ts
|
|
23
|
+
/** Cross-cutting CLI IO, repo root discovery, telemetry, and `codefast.config` loading. */ const ShellInfrastructureModule = Module.create("shell-infrastructure", (moduleBuilder) => {
|
|
24
|
+
moduleBuilder.bind(CliPathPortToken).to(_NodeCliPathAdapter).singleton();
|
|
25
|
+
moduleBuilder.bind(CliLoggerPortToken).to(_NodeCliLoggerAdapter).singleton();
|
|
26
|
+
moduleBuilder.bind(CliTelemetryPortToken).to(_CliTelemetryAdapter).singleton();
|
|
27
|
+
moduleBuilder.bind(CliRuntimeToken).to(_NodeCliRuntimeAdapter).singleton();
|
|
28
|
+
moduleBuilder.bind(RepoRootResolverPortToken).to(_RepoRootResolverAdapter).singleton();
|
|
29
|
+
moduleBuilder.bind(CliFilesystemPortToken).to(_NodeCliFsAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(CliFilesystemPortToken));
|
|
30
|
+
moduleBuilder.bind(CodefastConfigSchemaPortToken).to(_ZodCodefastConfigSchemaAdapter).singleton();
|
|
31
|
+
moduleBuilder.bind(CliSchemaParsingToken).to(_SchemaValidatorService).singleton();
|
|
32
|
+
moduleBuilder.bind(FormatAppErrorPortToken).to(_FormatAppErrorAdapter).singleton();
|
|
33
|
+
moduleBuilder.bind(CliVerboseDiagnosticsPortToken).to(_CliVerboseDiagnosticsAdapter).singleton();
|
|
34
|
+
moduleBuilder.bind(CliExecutorToken).to(_CliExecutorService).singleton();
|
|
35
|
+
moduleBuilder.bind(GlobalCliOptionsParsePortToken).to(_GlobalCliOptionsParserAdapter).singleton();
|
|
36
|
+
moduleBuilder.bind(WorkspacePackageLayoutPortToken).to(_NodePnpmWorkspacePackageLayoutAdapter).singleton();
|
|
37
|
+
moduleBuilder.bind(TypeScriptSourceFileWalkerPortToken).to(_TypeScriptSourceFileWalkerAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(TypeScriptSourceFileWalkerPortToken));
|
|
38
|
+
moduleBuilder.bind(ConfigLoaderPortToken).to(_ConfigLoaderAdapter).singleton();
|
|
39
|
+
moduleBuilder.bind(ConfigWarningReporterPortToken).to(_ConfigWarningReporterAdapter).singleton();
|
|
40
|
+
moduleBuilder.bind(LoadCodefastConfigUseCaseToken).to(_LoadCodefastConfigUseCase).singleton();
|
|
41
|
+
});
|
|
42
|
+
//#endregion
|
|
43
|
+
export { ShellInfrastructureModule };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CliLoggerPortToken, CliTelemetryPortToken } from "../application/cli-runtime.tokens.mjs";
|
|
2
|
+
import { tokenName } from "@codefast/di";
|
|
3
|
+
//#region src/shell/wiring/optional-cli-port-telemetry-activation.ts
|
|
4
|
+
/**
|
|
5
|
+
* DI `onActivation` handler: optional port call telemetry, labeled via {@link tokenName}
|
|
6
|
+
* (same resolution labels the container uses for tokens and class keys).
|
|
7
|
+
* Domain modules should import this from `shell/wiring`, not from `shell/infrastructure`.
|
|
8
|
+
*/ function createOptionalCliPortTelemetryActivation(portKey) {
|
|
9
|
+
const portName = tokenName(portKey);
|
|
10
|
+
return (context, implementation) => context.resolve(CliTelemetryPortToken).withOptionalPortTelemetry(portName, implementation, context.resolve(CliLoggerPortToken));
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { createOptionalCliPortTelemetryActivation };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codefast/cli",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.15",
|
|
4
4
|
"description": "Developer CLI for the Codefast monorepo (arrange, mirror, tag)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -55,20 +55,20 @@
|
|
|
55
55
|
"jiti": "^2.6.1",
|
|
56
56
|
"picomatch": "^4.0.4",
|
|
57
57
|
"typescript": "^6.0.3",
|
|
58
|
-
"yaml": "^2.8.
|
|
59
|
-
"zod": "^4.
|
|
60
|
-
"@codefast/di": "0.3.
|
|
58
|
+
"yaml": "^2.8.4",
|
|
59
|
+
"zod": "^4.4.2",
|
|
60
|
+
"@codefast/di": "0.3.15"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@types/node": "^25.6.0",
|
|
64
64
|
"@types/picomatch": "^4.0.3",
|
|
65
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
65
|
+
"@typescript/native-preview": "7.0.0-dev.20260502.1",
|
|
66
66
|
"@vitest/coverage-v8": "^4.1.5",
|
|
67
67
|
"esbuild": "^0.28.0",
|
|
68
68
|
"unplugin-swc": "^1.5.9",
|
|
69
|
-
"vite": "^8.0.
|
|
69
|
+
"vite": "^8.0.10",
|
|
70
70
|
"vitest": "^4.1.5",
|
|
71
|
-
"@codefast/typescript-config": "0.3.
|
|
71
|
+
"@codefast/typescript-config": "0.3.15"
|
|
72
72
|
},
|
|
73
73
|
"engines": {
|
|
74
74
|
"node": ">=22.0.0"
|
|
@@ -78,6 +78,8 @@
|
|
|
78
78
|
"check-types": "tsgo --noEmit",
|
|
79
79
|
"clean": "rm -rf dist",
|
|
80
80
|
"test": "vitest run",
|
|
81
|
+
"test:integration": "vitest run tests/integration",
|
|
82
|
+
"test:unit": "vitest run tests/unit",
|
|
81
83
|
"test:coverage": "vitest run --coverage",
|
|
82
84
|
"test:watch": "vitest"
|
|
83
85
|
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { GroupFilePreviewPortToken } from "../../../contracts/tokens.mjs";
|
|
2
|
-
import { PresentAnalyzeReportPresenterToken } from "./presentation.tokens.mjs";
|
|
3
|
-
import { PresentAnalyzeReportPresenterImpl as _PresentAnalyzeReportPresenterImpl } from "../../../presentation/arrange-analyze.presenter.mjs";
|
|
4
|
-
import { GroupFilePreviewPresenterAdapter as _GroupFilePreviewPresenterAdapter } from "../../../presentation/group-file-preview.presenter.mjs";
|
|
5
|
-
import { PresentationModule } from "../../../../core/presentation/presentation.module.mjs";
|
|
6
|
-
import { Module } from "@codefast/di";
|
|
7
|
-
//#region src/lib/arrange/adapters/primary/cli/arrange.presentation.module.ts
|
|
8
|
-
const ArrangePresentationModule = Module.create("cli-arrange-presentation", (moduleBuilder) => {
|
|
9
|
-
moduleBuilder.import(PresentationModule);
|
|
10
|
-
moduleBuilder.bind(PresentAnalyzeReportPresenterToken).to(_PresentAnalyzeReportPresenterImpl).singleton();
|
|
11
|
-
moduleBuilder.bind(GroupFilePreviewPortToken).to(_GroupFilePreviewPresenterAdapter).singleton();
|
|
12
|
-
});
|
|
13
|
-
//#endregion
|
|
14
|
-
export { ArrangePresentationModule };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
//#region src/lib/arrange/application/services/arrange-target-path-resolver.service.ts
|
|
3
|
-
const PACKAGE_JSON_FILE = "package.json";
|
|
4
|
-
function findNearestPackageDirectory(currentWorkingDirectory, fs) {
|
|
5
|
-
let currentDir = path.resolve(currentWorkingDirectory);
|
|
6
|
-
while (true) {
|
|
7
|
-
const packageJsonPath = path.join(currentDir, PACKAGE_JSON_FILE);
|
|
8
|
-
if (fs.existsSync(packageJsonPath)) return currentDir;
|
|
9
|
-
const parentDirectory = path.dirname(currentDir);
|
|
10
|
-
if (parentDirectory === currentDir) return;
|
|
11
|
-
currentDir = parentDirectory;
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
function resolveArrangeTargetPath(args) {
|
|
15
|
-
const explicitTargetPath = args.rawTarget ? path.isAbsolute(args.rawTarget) ? path.resolve(args.rawTarget) : path.resolve(args.currentWorkingDirectory, args.rawTarget) : void 0;
|
|
16
|
-
if (explicitTargetPath) return args.fs.canonicalPathSync(explicitTargetPath);
|
|
17
|
-
const resolvedDefaultTarget = findNearestPackageDirectory(args.currentWorkingDirectory, args.fs) ?? args.currentWorkingDirectory;
|
|
18
|
-
return args.fs.canonicalPathSync(resolvedDefaultTarget);
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { resolveArrangeTargetPath };
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { AnalyzeDirectoryUseCaseToken, ArrangeFileProcessorServiceToken, ArrangeTargetScannerServiceToken, DomainSourceParserPortToken, FileWalkerPortToken, PrepareArrangeWorkspaceUseCaseToken, RunArrangeSyncUseCaseToken, SuggestCnGroupsUseCaseToken, TailwindGroupingServiceToken, WorkspaceResolverPortToken } from "./contracts/tokens.mjs";
|
|
2
|
-
import { CliLoggerToken } from "../core/contracts/tokens.mjs";
|
|
3
|
-
import { ArrangeFileProcessorServiceImpl as _ArrangeFileProcessorServiceImpl } from "./application/services/arrange-file-processor.service.mjs";
|
|
4
|
-
import { ArrangeTargetScannerServiceImpl as _ArrangeTargetScannerServiceImpl } from "./application/services/arrange-target-scanner.service.mjs";
|
|
5
|
-
import { AnalyzeDirectoryUseCaseImpl as _AnalyzeDirectoryUseCaseImpl } from "./application/use-cases/analyze-directory.use-case.mjs";
|
|
6
|
-
import { RunArrangeSyncUseCaseImpl as _RunArrangeSyncUseCaseImpl } from "./application/use-cases/run-arrange-sync.use-case.mjs";
|
|
7
|
-
import { SuggestCnGroupsUseCaseImpl as _SuggestCnGroupsUseCaseImpl } from "./application/use-cases/suggest-cn-groups.use-case.mjs";
|
|
8
|
-
import { DomainSourceParserAdapter as _DomainSourceParserAdapter } from "./adapters/secondary/domain-source-parser.adapter.mjs";
|
|
9
|
-
import { FileWalkerAdapter as _FileWalkerAdapter } from "./adapters/secondary/file-walker.adapter.mjs";
|
|
10
|
-
import { WorkspaceResolverAdapter as _WorkspaceResolverAdapter } from "./adapters/secondary/workspace-resolver.adapter.mjs";
|
|
11
|
-
import { TailwindGroupingServiceImpl as _TailwindGroupingServiceImpl } from "./domain/tailwind-grouping.service.mjs";
|
|
12
|
-
import { PrepareArrangeWorkspaceUseCaseImpl as _PrepareArrangeWorkspaceUseCaseImpl } from "./application/use-cases/prepare-arrange-workspace.use-case.mjs";
|
|
13
|
-
import { withOptionalPortTelemetry } from "../core/infrastructure/port-telemetry.decorator.mjs";
|
|
14
|
-
import { InfrastructureModule } from "../core/infrastructure/infrastructure.module.mjs";
|
|
15
|
-
import { Module } from "@codefast/di";
|
|
16
|
-
//#region src/lib/arrange/arrange.module.ts
|
|
17
|
-
const ArrangeModule = Module.create("cli-arrange", (moduleBuilder) => {
|
|
18
|
-
moduleBuilder.import(InfrastructureModule);
|
|
19
|
-
moduleBuilder.bind(FileWalkerPortToken).to(_FileWalkerAdapter).singleton().onActivation((ctx, implementation) => withOptionalPortTelemetry("FileWalkerPort", implementation, ctx.resolve(CliLoggerToken)));
|
|
20
|
-
moduleBuilder.bind(DomainSourceParserPortToken).to(_DomainSourceParserAdapter).singleton().onActivation((ctx, implementation) => withOptionalPortTelemetry("DomainSourceParserPort", implementation, ctx.resolve(CliLoggerToken)));
|
|
21
|
-
moduleBuilder.bind(WorkspaceResolverPortToken).to(_WorkspaceResolverAdapter).singleton();
|
|
22
|
-
moduleBuilder.bind(TailwindGroupingServiceToken).to(_TailwindGroupingServiceImpl).singleton();
|
|
23
|
-
moduleBuilder.bind(AnalyzeDirectoryUseCaseToken).to(_AnalyzeDirectoryUseCaseImpl).singleton();
|
|
24
|
-
moduleBuilder.bind(ArrangeTargetScannerServiceToken).to(_ArrangeTargetScannerServiceImpl).singleton();
|
|
25
|
-
moduleBuilder.bind(ArrangeFileProcessorServiceToken).to(_ArrangeFileProcessorServiceImpl).singleton();
|
|
26
|
-
moduleBuilder.bind(RunArrangeSyncUseCaseToken).to(_RunArrangeSyncUseCaseImpl).singleton();
|
|
27
|
-
moduleBuilder.bind(SuggestCnGroupsUseCaseToken).to(_SuggestCnGroupsUseCaseImpl).singleton();
|
|
28
|
-
moduleBuilder.bind(PrepareArrangeWorkspaceUseCaseToken).to(_PrepareArrangeWorkspaceUseCaseImpl).singleton();
|
|
29
|
-
});
|
|
30
|
-
//#endregion
|
|
31
|
-
export { ArrangeModule };
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { token } from "@codefast/di";
|
|
2
|
-
//#region src/lib/arrange/contracts/tokens.ts
|
|
3
|
-
const FileWalkerPortToken = token("FileWalkerPort");
|
|
4
|
-
const DomainSourceParserPortToken = token("DomainSourceParserPort");
|
|
5
|
-
const GroupFilePreviewPortToken = token("GroupFilePreviewPort");
|
|
6
|
-
const ArrangeTargetScannerServiceToken = token("ArrangeTargetScannerService");
|
|
7
|
-
const ArrangeFileProcessorServiceToken = token("ArrangeFileProcessorService");
|
|
8
|
-
const AnalyzeDirectoryUseCaseToken = token("AnalyzeDirectoryUseCase");
|
|
9
|
-
const RunArrangeSyncUseCaseToken = token("RunArrangeSyncUseCase");
|
|
10
|
-
const SuggestCnGroupsUseCaseToken = token("SuggestCnGroupsUseCase");
|
|
11
|
-
const PrepareArrangeWorkspaceUseCaseToken = token("PrepareArrangeWorkspaceUseCase");
|
|
12
|
-
const WorkspaceResolverPortToken = token("WorkspaceResolverPort");
|
|
13
|
-
const TailwindGroupingServiceToken = token("TailwindGroupingService");
|
|
14
|
-
//#endregion
|
|
15
|
-
export { AnalyzeDirectoryUseCaseToken, ArrangeFileProcessorServiceToken, ArrangeTargetScannerServiceToken, DomainSourceParserPortToken, FileWalkerPortToken, GroupFilePreviewPortToken, PrepareArrangeWorkspaceUseCaseToken, RunArrangeSyncUseCaseToken, SuggestCnGroupsUseCaseToken, TailwindGroupingServiceToken, WorkspaceResolverPortToken };
|
|
@@ -1,355 +0,0 @@
|
|
|
1
|
-
import { DomainBinaryOperator, DomainSyntaxKind } from "../domain/ast/ast-node.model.mjs";
|
|
2
|
-
import ts from "typescript";
|
|
3
|
-
//#region src/lib/arrange/infrastructure/typescript-ast-translator.adapter.ts
|
|
4
|
-
/**
|
|
5
|
-
* Anti-corruption layer: maps TypeScript compiler AST to arrange domain AST.
|
|
6
|
-
* This module is the only place that imports `typescript` for arrange AST translation.
|
|
7
|
-
*/ function translateUnknown(n, parent, sf) {
|
|
8
|
-
const pos = n.getStart(sf);
|
|
9
|
-
const end = n.getEnd();
|
|
10
|
-
const self = {
|
|
11
|
-
kind: DomainSyntaxKind.Unknown,
|
|
12
|
-
pos,
|
|
13
|
-
end,
|
|
14
|
-
parent,
|
|
15
|
-
children: []
|
|
16
|
-
};
|
|
17
|
-
const childList = [];
|
|
18
|
-
ts.forEachChild(n, (child) => {
|
|
19
|
-
childList.push(translateNode(child, self, sf));
|
|
20
|
-
});
|
|
21
|
-
return {
|
|
22
|
-
...self,
|
|
23
|
-
children: childList
|
|
24
|
-
};
|
|
25
|
-
}
|
|
26
|
-
function mapBinaryOperator(operatorToken) {
|
|
27
|
-
if (operatorToken.kind === ts.SyntaxKind.PlusToken) return DomainBinaryOperator.Plus;
|
|
28
|
-
return DomainBinaryOperator.Other;
|
|
29
|
-
}
|
|
30
|
-
function translateNode(n, parent, sf) {
|
|
31
|
-
const pos = n.getStart(sf);
|
|
32
|
-
const end = n.getEnd();
|
|
33
|
-
switch (n.kind) {
|
|
34
|
-
case ts.SyntaxKind.Identifier: {
|
|
35
|
-
const id = n;
|
|
36
|
-
return {
|
|
37
|
-
kind: DomainSyntaxKind.Identifier,
|
|
38
|
-
pos,
|
|
39
|
-
end,
|
|
40
|
-
parent,
|
|
41
|
-
text: id.text
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
case ts.SyntaxKind.StringLiteral: {
|
|
45
|
-
const lit = n;
|
|
46
|
-
return {
|
|
47
|
-
kind: DomainSyntaxKind.StringLiteral,
|
|
48
|
-
pos,
|
|
49
|
-
end,
|
|
50
|
-
parent,
|
|
51
|
-
text: lit.text
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
case ts.SyntaxKind.NoSubstitutionTemplateLiteral: {
|
|
55
|
-
const lit = n;
|
|
56
|
-
return {
|
|
57
|
-
kind: DomainSyntaxKind.NoSubstitutionTemplateLiteral,
|
|
58
|
-
pos,
|
|
59
|
-
end,
|
|
60
|
-
parent,
|
|
61
|
-
text: lit.text
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
case ts.SyntaxKind.ImportDeclaration: {
|
|
65
|
-
const decl = n;
|
|
66
|
-
const self = {
|
|
67
|
-
kind: DomainSyntaxKind.ImportDeclaration,
|
|
68
|
-
pos,
|
|
69
|
-
end,
|
|
70
|
-
parent,
|
|
71
|
-
importClause: void 0,
|
|
72
|
-
moduleSpecifier: void 0
|
|
73
|
-
};
|
|
74
|
-
if (decl.importClause) self.importClause = translateNode(decl.importClause, self, sf);
|
|
75
|
-
self.moduleSpecifier = translateNode(decl.moduleSpecifier, self, sf);
|
|
76
|
-
return self;
|
|
77
|
-
}
|
|
78
|
-
case ts.SyntaxKind.ImportClause: {
|
|
79
|
-
const clause = n;
|
|
80
|
-
const self = {
|
|
81
|
-
kind: DomainSyntaxKind.ImportClause,
|
|
82
|
-
pos,
|
|
83
|
-
end,
|
|
84
|
-
parent,
|
|
85
|
-
isTypeOnly: clause.isTypeOnly,
|
|
86
|
-
name: void 0,
|
|
87
|
-
namedBindings: void 0
|
|
88
|
-
};
|
|
89
|
-
if (clause.name) self.name = translateNode(clause.name, self, sf);
|
|
90
|
-
if (clause.namedBindings) self.namedBindings = translateNode(clause.namedBindings, self, sf);
|
|
91
|
-
return self;
|
|
92
|
-
}
|
|
93
|
-
case ts.SyntaxKind.NamedImports: {
|
|
94
|
-
const named = n;
|
|
95
|
-
const self = {
|
|
96
|
-
kind: DomainSyntaxKind.NamedImports,
|
|
97
|
-
pos,
|
|
98
|
-
end,
|
|
99
|
-
parent,
|
|
100
|
-
elements: []
|
|
101
|
-
};
|
|
102
|
-
const elements = [];
|
|
103
|
-
for (const element of named.elements) elements.push(translateNode(element, self, sf));
|
|
104
|
-
return {
|
|
105
|
-
...self,
|
|
106
|
-
elements
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
case ts.SyntaxKind.NamespaceImport: {
|
|
110
|
-
const ns = n;
|
|
111
|
-
const self = {
|
|
112
|
-
kind: DomainSyntaxKind.NamespaceImport,
|
|
113
|
-
pos,
|
|
114
|
-
end,
|
|
115
|
-
parent,
|
|
116
|
-
name: void 0
|
|
117
|
-
};
|
|
118
|
-
self.name = translateNode(ns.name, self, sf);
|
|
119
|
-
return self;
|
|
120
|
-
}
|
|
121
|
-
case ts.SyntaxKind.ImportSpecifier: {
|
|
122
|
-
const spec = n;
|
|
123
|
-
const self = {
|
|
124
|
-
kind: DomainSyntaxKind.ImportSpecifier,
|
|
125
|
-
pos,
|
|
126
|
-
end,
|
|
127
|
-
parent,
|
|
128
|
-
propertyName: void 0,
|
|
129
|
-
name: void 0
|
|
130
|
-
};
|
|
131
|
-
if (spec.propertyName) self.propertyName = translateNode(spec.propertyName, self, sf);
|
|
132
|
-
self.name = translateNode(spec.name, self, sf);
|
|
133
|
-
return self;
|
|
134
|
-
}
|
|
135
|
-
case ts.SyntaxKind.CallExpression: {
|
|
136
|
-
const call = n;
|
|
137
|
-
const self = {
|
|
138
|
-
kind: DomainSyntaxKind.CallExpression,
|
|
139
|
-
pos,
|
|
140
|
-
end,
|
|
141
|
-
parent,
|
|
142
|
-
expression: void 0,
|
|
143
|
-
arguments: []
|
|
144
|
-
};
|
|
145
|
-
self.expression = translateNode(call.expression, self, sf);
|
|
146
|
-
self.arguments = call.arguments.map((arg) => translateNode(arg, self, sf));
|
|
147
|
-
return self;
|
|
148
|
-
}
|
|
149
|
-
case ts.SyntaxKind.PropertyAccessExpression: {
|
|
150
|
-
const pa = n;
|
|
151
|
-
const self = {
|
|
152
|
-
kind: DomainSyntaxKind.PropertyAccessExpression,
|
|
153
|
-
pos,
|
|
154
|
-
end,
|
|
155
|
-
parent,
|
|
156
|
-
expression: void 0,
|
|
157
|
-
name: void 0
|
|
158
|
-
};
|
|
159
|
-
self.expression = translateNode(pa.expression, self, sf);
|
|
160
|
-
self.name = translateNode(pa.name, self, sf);
|
|
161
|
-
return self;
|
|
162
|
-
}
|
|
163
|
-
case ts.SyntaxKind.ObjectLiteralExpression: {
|
|
164
|
-
const obj = n;
|
|
165
|
-
const self = {
|
|
166
|
-
kind: DomainSyntaxKind.ObjectLiteralExpression,
|
|
167
|
-
pos,
|
|
168
|
-
end,
|
|
169
|
-
parent,
|
|
170
|
-
properties: []
|
|
171
|
-
};
|
|
172
|
-
const properties = [];
|
|
173
|
-
for (const prop of obj.properties) properties.push(translateNode(prop, self, sf));
|
|
174
|
-
return {
|
|
175
|
-
...self,
|
|
176
|
-
properties
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
case ts.SyntaxKind.PropertyAssignment: {
|
|
180
|
-
const prop = n;
|
|
181
|
-
const self = {
|
|
182
|
-
kind: DomainSyntaxKind.PropertyAssignment,
|
|
183
|
-
pos,
|
|
184
|
-
end,
|
|
185
|
-
parent,
|
|
186
|
-
name: void 0,
|
|
187
|
-
initializer: void 0
|
|
188
|
-
};
|
|
189
|
-
self.name = translateNode(prop.name, self, sf);
|
|
190
|
-
self.initializer = translateNode(prop.initializer, self, sf);
|
|
191
|
-
return self;
|
|
192
|
-
}
|
|
193
|
-
case ts.SyntaxKind.ArrayLiteralExpression: {
|
|
194
|
-
const arr = n;
|
|
195
|
-
const self = {
|
|
196
|
-
kind: DomainSyntaxKind.ArrayLiteralExpression,
|
|
197
|
-
pos,
|
|
198
|
-
end,
|
|
199
|
-
parent,
|
|
200
|
-
elements: []
|
|
201
|
-
};
|
|
202
|
-
const elements = [];
|
|
203
|
-
for (const element of arr.elements) elements.push(translateNode(element, self, sf));
|
|
204
|
-
return {
|
|
205
|
-
...self,
|
|
206
|
-
elements
|
|
207
|
-
};
|
|
208
|
-
}
|
|
209
|
-
case ts.SyntaxKind.SpreadElement: {
|
|
210
|
-
const sp = n;
|
|
211
|
-
const self = {
|
|
212
|
-
kind: DomainSyntaxKind.SpreadElement,
|
|
213
|
-
pos,
|
|
214
|
-
end,
|
|
215
|
-
parent,
|
|
216
|
-
expression: void 0
|
|
217
|
-
};
|
|
218
|
-
self.expression = translateNode(sp.expression, self, sf);
|
|
219
|
-
return self;
|
|
220
|
-
}
|
|
221
|
-
case ts.SyntaxKind.ParenthesizedExpression: {
|
|
222
|
-
const pe = n;
|
|
223
|
-
const self = {
|
|
224
|
-
kind: DomainSyntaxKind.ParenthesizedExpression,
|
|
225
|
-
pos,
|
|
226
|
-
end,
|
|
227
|
-
parent,
|
|
228
|
-
expression: void 0
|
|
229
|
-
};
|
|
230
|
-
self.expression = translateNode(pe.expression, self, sf);
|
|
231
|
-
return self;
|
|
232
|
-
}
|
|
233
|
-
case ts.SyntaxKind.AsExpression: {
|
|
234
|
-
const ae = n;
|
|
235
|
-
const self = {
|
|
236
|
-
kind: DomainSyntaxKind.AsExpression,
|
|
237
|
-
pos,
|
|
238
|
-
end,
|
|
239
|
-
parent,
|
|
240
|
-
expression: void 0
|
|
241
|
-
};
|
|
242
|
-
self.expression = translateNode(ae.expression, self, sf);
|
|
243
|
-
return self;
|
|
244
|
-
}
|
|
245
|
-
case ts.SyntaxKind.SatisfiesExpression: {
|
|
246
|
-
const se = n;
|
|
247
|
-
const self = {
|
|
248
|
-
kind: DomainSyntaxKind.SatisfiesExpression,
|
|
249
|
-
pos,
|
|
250
|
-
end,
|
|
251
|
-
parent,
|
|
252
|
-
expression: void 0
|
|
253
|
-
};
|
|
254
|
-
self.expression = translateNode(se.expression, self, sf);
|
|
255
|
-
return self;
|
|
256
|
-
}
|
|
257
|
-
case ts.SyntaxKind.NonNullExpression: {
|
|
258
|
-
const nn = n;
|
|
259
|
-
const self = {
|
|
260
|
-
kind: DomainSyntaxKind.NonNullExpression,
|
|
261
|
-
pos,
|
|
262
|
-
end,
|
|
263
|
-
parent,
|
|
264
|
-
expression: void 0
|
|
265
|
-
};
|
|
266
|
-
self.expression = translateNode(nn.expression, self, sf);
|
|
267
|
-
return self;
|
|
268
|
-
}
|
|
269
|
-
case ts.SyntaxKind.ConditionalExpression: {
|
|
270
|
-
const ce = n;
|
|
271
|
-
const self = {
|
|
272
|
-
kind: DomainSyntaxKind.ConditionalExpression,
|
|
273
|
-
pos,
|
|
274
|
-
end,
|
|
275
|
-
parent,
|
|
276
|
-
condition: void 0,
|
|
277
|
-
whenTrue: void 0,
|
|
278
|
-
whenFalse: void 0
|
|
279
|
-
};
|
|
280
|
-
self.condition = translateNode(ce.condition, self, sf);
|
|
281
|
-
self.whenTrue = translateNode(ce.whenTrue, self, sf);
|
|
282
|
-
self.whenFalse = translateNode(ce.whenFalse, self, sf);
|
|
283
|
-
return self;
|
|
284
|
-
}
|
|
285
|
-
case ts.SyntaxKind.BinaryExpression: {
|
|
286
|
-
const be = n;
|
|
287
|
-
const self = {
|
|
288
|
-
kind: DomainSyntaxKind.BinaryExpression,
|
|
289
|
-
pos,
|
|
290
|
-
end,
|
|
291
|
-
parent,
|
|
292
|
-
left: void 0,
|
|
293
|
-
operator: mapBinaryOperator(be.operatorToken),
|
|
294
|
-
right: void 0
|
|
295
|
-
};
|
|
296
|
-
self.left = translateNode(be.left, self, sf);
|
|
297
|
-
self.right = translateNode(be.right, self, sf);
|
|
298
|
-
return self;
|
|
299
|
-
}
|
|
300
|
-
case ts.SyntaxKind.ExpressionStatement: {
|
|
301
|
-
const es = n;
|
|
302
|
-
const self = {
|
|
303
|
-
kind: DomainSyntaxKind.ExpressionStatement,
|
|
304
|
-
pos,
|
|
305
|
-
end,
|
|
306
|
-
parent,
|
|
307
|
-
expression: void 0
|
|
308
|
-
};
|
|
309
|
-
self.expression = translateNode(es.expression, self, sf);
|
|
310
|
-
return self;
|
|
311
|
-
}
|
|
312
|
-
case ts.SyntaxKind.JsxAttribute: {
|
|
313
|
-
const ja = n;
|
|
314
|
-
const self = {
|
|
315
|
-
kind: DomainSyntaxKind.JsxAttribute,
|
|
316
|
-
pos,
|
|
317
|
-
end,
|
|
318
|
-
parent,
|
|
319
|
-
name: void 0,
|
|
320
|
-
initializer: void 0
|
|
321
|
-
};
|
|
322
|
-
self.name = translateNode(ja.name, self, sf);
|
|
323
|
-
if (ja.initializer) self.initializer = translateNode(ja.initializer, self, sf);
|
|
324
|
-
return self;
|
|
325
|
-
}
|
|
326
|
-
case ts.SyntaxKind.JsxExpression: {
|
|
327
|
-
const je = n;
|
|
328
|
-
const self = {
|
|
329
|
-
kind: DomainSyntaxKind.JsxExpression,
|
|
330
|
-
pos,
|
|
331
|
-
end,
|
|
332
|
-
parent,
|
|
333
|
-
expression: void 0
|
|
334
|
-
};
|
|
335
|
-
if (je.expression) self.expression = translateNode(je.expression, self, sf);
|
|
336
|
-
return self;
|
|
337
|
-
}
|
|
338
|
-
default: return translateUnknown(n, parent, sf);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
function translateTypeScriptSourceFile(tsSf) {
|
|
342
|
-
const text = tsSf.getFullText();
|
|
343
|
-
const statements = tsSf.statements.map((statement) => translateNode(statement, null, tsSf));
|
|
344
|
-
return {
|
|
345
|
-
fileName: tsSf.fileName,
|
|
346
|
-
text,
|
|
347
|
-
statements
|
|
348
|
-
};
|
|
349
|
-
}
|
|
350
|
-
function parseDomainSourceFile(filePath, sourceText) {
|
|
351
|
-
const scriptKind = filePath.endsWith(".tsx") ? ts.ScriptKind.TSX : ts.ScriptKind.TS;
|
|
352
|
-
return translateTypeScriptSourceFile(ts.createSourceFile(filePath, sourceText, ts.ScriptTarget.Latest, true, scriptKind));
|
|
353
|
-
}
|
|
354
|
-
//#endregion
|
|
355
|
-
export { parseDomainSourceFile };
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import "../../core/domain/cli-exit-codes.domain.mjs";
|
|
2
|
-
//#region src/lib/arrange/presentation/arrange-sync.presenter.ts
|
|
3
|
-
function exitCodeForArrangeSyncResult(result) {
|
|
4
|
-
return result.hookError !== null ? 1 : 0;
|
|
5
|
-
}
|
|
6
|
-
function presentArrangeSyncResult(logger, result, write) {
|
|
7
|
-
logger.out(`\nTotal: ${result.filePaths.length} file(s), ${result.totalFound} site(s) (cn/tv/JSX className) to review.`);
|
|
8
|
-
if (write) logger.out(`Applied: ${result.totalChanged} site(s) updated.`);
|
|
9
|
-
else logger.out(`(Run "apply" to write changes, or "pnpm cli:arrange-apply" / "pnpm exec codefast arrange apply")`);
|
|
10
|
-
if (write ? result.totalChanged > 0 : result.totalFound > 0) logger.out("Note: class order may change across concern groups — smoke-test the UI if you rely on cascade order.");
|
|
11
|
-
if (result.hookError !== null) logger.err(result.hookError);
|
|
12
|
-
return exitCodeForArrangeSyncResult(result);
|
|
13
|
-
}
|
|
14
|
-
function formatArrangeSyncJsonOutput(result, write) {
|
|
15
|
-
const { previewPlans: _plans, ...serializableResult } = result;
|
|
16
|
-
const payload = {
|
|
17
|
-
schemaVersion: 1,
|
|
18
|
-
ok: result.hookError === null,
|
|
19
|
-
write,
|
|
20
|
-
result: serializableResult
|
|
21
|
-
};
|
|
22
|
-
return JSON.stringify(payload);
|
|
23
|
-
}
|
|
24
|
-
function formatArrangeGroupJsonOutput(output) {
|
|
25
|
-
const payload = {
|
|
26
|
-
schemaVersion: 1,
|
|
27
|
-
primaryLine: output.primaryLine,
|
|
28
|
-
bucketsCommentLine: output.bucketsCommentLine
|
|
29
|
-
};
|
|
30
|
-
return JSON.stringify(payload);
|
|
31
|
-
}
|
|
32
|
-
//#endregion
|
|
33
|
-
export { exitCodeForArrangeSyncResult, formatArrangeGroupJsonOutput, formatArrangeSyncJsonOutput, presentArrangeSyncResult };
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { ArrangeCommand as _ArrangeCommand } from "../arrange/adapters/primary/cli/arrange.command.mjs";
|
|
2
|
-
import { ArrangePresentationModule } from "../arrange/adapters/primary/cli/arrange.presentation.module.mjs";
|
|
3
|
-
import { ArrangeModule } from "../arrange/arrange.module.mjs";
|
|
4
|
-
import { MirrorCommand as _MirrorCommand } from "../mirror/adapters/primary/cli/mirror.command.mjs";
|
|
5
|
-
import { MirrorModule } from "../mirror/mirror.module.mjs";
|
|
6
|
-
import { TagCommand as _TagCommand } from "../tag/adapters/primary/cli/tag.command.mjs";
|
|
7
|
-
import { TagPresentationModule } from "../tag/adapters/primary/cli/tag.presentation.module.mjs";
|
|
8
|
-
import { TagModule } from "../tag/tag.module.mjs";
|
|
9
|
-
import { CliCommandToken } from "../kernel/contracts/tokens.mjs";
|
|
10
|
-
import { Container } from "@codefast/di";
|
|
11
|
-
//#region src/lib/bootstrap/composition-root.ts
|
|
12
|
-
function createCliRuntimeContainer() {
|
|
13
|
-
const runtimeContainer = Container.create();
|
|
14
|
-
runtimeContainer.load(ArrangePresentationModule, ArrangeModule);
|
|
15
|
-
runtimeContainer.bind(_ArrangeCommand).to(_ArrangeCommand).singleton();
|
|
16
|
-
runtimeContainer.bind(CliCommandToken).to(_ArrangeCommand).whenNamed("arrange").singleton();
|
|
17
|
-
runtimeContainer.load(MirrorModule);
|
|
18
|
-
runtimeContainer.bind(_MirrorCommand).to(_MirrorCommand).singleton();
|
|
19
|
-
runtimeContainer.bind(CliCommandToken).to(_MirrorCommand).whenNamed("mirror").singleton();
|
|
20
|
-
runtimeContainer.load(TagPresentationModule, TagModule);
|
|
21
|
-
runtimeContainer.bind(_TagCommand).to(_TagCommand).singleton();
|
|
22
|
-
runtimeContainer.bind(CliCommandToken).to(_TagCommand).whenNamed("tag").singleton();
|
|
23
|
-
return runtimeContainer;
|
|
24
|
-
}
|
|
25
|
-
function resolveCliCommands(runtimeContainer) {
|
|
26
|
-
return [
|
|
27
|
-
runtimeContainer.resolve(_ArrangeCommand),
|
|
28
|
-
runtimeContainer.resolve(_MirrorCommand),
|
|
29
|
-
runtimeContainer.resolve(_TagCommand)
|
|
30
|
-
];
|
|
31
|
-
}
|
|
32
|
-
//#endregion
|
|
33
|
-
export { createCliRuntimeContainer, resolveCliCommands };
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { AppError } from "../../../core/domain/errors.domain.mjs";
|
|
2
|
-
import { err, ok } from "../../../core/domain/result.model.mjs";
|
|
3
|
-
import { messageFromCaughtUnknown } from "../../../core/domain/caught-unknown-message.value-object.mjs";
|
|
4
|
-
//#region src/lib/config/application/services/load-config.service.ts
|
|
5
|
-
async function loadCodefastConfig(configLoader, rootDir) {
|
|
6
|
-
try {
|
|
7
|
-
const { config, warnings } = await configLoader.loadConfig(rootDir);
|
|
8
|
-
return ok({
|
|
9
|
-
config,
|
|
10
|
-
warnings
|
|
11
|
-
});
|
|
12
|
-
} catch (caughtError) {
|
|
13
|
-
return err(new AppError("INFRA_FAILURE", messageFromCaughtUnknown(caughtError), caughtError));
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
//#endregion
|
|
17
|
-
export { loadCodefastConfig };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { token } from "@codefast/di";
|
|
2
|
-
//#region src/lib/config/contracts/tokens.ts
|
|
3
|
-
const ConfigLoaderPortToken = token("ConfigLoaderPort");
|
|
4
|
-
const ConfigWarningReporterPortToken = token("ConfigWarningReporterPort");
|
|
5
|
-
//#endregion
|
|
6
|
-
export { ConfigLoaderPortToken, ConfigWarningReporterPortToken };
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { parseWithSchema } from "./schema-validator.service.mjs";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
//#region src/lib/core/application/services/global-cli-options-parser.service.ts
|
|
4
|
-
const globalCliOptionsSchema = z.object({ color: z.boolean().optional() });
|
|
5
|
-
function parseGlobalCliOptions(raw) {
|
|
6
|
-
return parseWithSchema(globalCliOptionsSchema, raw);
|
|
7
|
-
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { parseGlobalCliOptions };
|