@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.
- 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
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { tagSyncRunRequestSchema } from "../../../presentation/tag-cli.schema.mjs";
|
|
8
|
-
import { PresentTagSyncResultPresenterToken, TagSyncProgressListenerToken } from "./presentation.tokens.mjs";
|
|
1
|
+
import { CliExecutorToken, CliLoggerPortToken, CliRuntimeToken, CliSchemaParsingToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
2
|
+
import { PrepareTagSyncUseCaseToken, PresentTagSyncProgressPresenterToken, PresentTagSyncResultPresenterToken, RunTagSyncUseCaseToken } from "../../composition/tokens.mjs";
|
|
3
|
+
import { exitCodeForTagSyncResult } from "../../application/tag-sync-cli-result.mjs";
|
|
4
|
+
import { CLI_COMMAND_SLOT_NAME } from "../../../../shell/contracts/cli-command-slots.mjs";
|
|
5
|
+
import { readOptionalPositionalArg } from "../../../../shell/domain/cli-positional-arg.value-object.mjs";
|
|
6
|
+
import { tagSyncRunRequestSchema } from "../presenters/tag-cli.schema.mjs";
|
|
9
7
|
import { inject, injectable } from "@codefast/di";
|
|
10
|
-
//#region src/
|
|
8
|
+
//#region src/domains/tag/presentation/cli/tag.command.ts
|
|
11
9
|
function toPrimitive(input, hint) {
|
|
12
10
|
if (typeof input !== "object" || input === null) return input;
|
|
13
11
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -219,12 +217,14 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
219
217
|
}
|
|
220
218
|
let _dec, _initClass;
|
|
221
219
|
_dec = injectable([
|
|
222
|
-
inject(
|
|
220
|
+
inject(CliLoggerPortToken),
|
|
223
221
|
inject(CliRuntimeToken),
|
|
224
222
|
inject(PrepareTagSyncUseCaseToken),
|
|
225
223
|
inject(RunTagSyncUseCaseToken),
|
|
226
|
-
inject(
|
|
227
|
-
inject(PresentTagSyncResultPresenterToken)
|
|
224
|
+
inject(PresentTagSyncProgressPresenterToken),
|
|
225
|
+
inject(PresentTagSyncResultPresenterToken),
|
|
226
|
+
inject(CliSchemaParsingToken),
|
|
227
|
+
inject(CliExecutorToken)
|
|
228
228
|
]);
|
|
229
229
|
let _TagCommand;
|
|
230
230
|
(class {
|
|
@@ -232,33 +232,65 @@ let _TagCommand;
|
|
|
232
232
|
runtime;
|
|
233
233
|
prepareTagSync;
|
|
234
234
|
runTagSync;
|
|
235
|
-
|
|
235
|
+
tagProgressPresenter;
|
|
236
236
|
presentSyncCliResult;
|
|
237
|
+
schemaValidation;
|
|
238
|
+
cliExecutor;
|
|
237
239
|
static {
|
|
238
240
|
({c: [_TagCommand, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
239
241
|
}
|
|
240
|
-
constructor(logger, runtime, prepareTagSync, runTagSync,
|
|
242
|
+
constructor(logger, runtime, prepareTagSync, runTagSync, tagProgressPresenter, presentSyncCliResult, schemaValidation, cliExecutor) {
|
|
241
243
|
this.logger = logger;
|
|
242
244
|
this.runtime = runtime;
|
|
243
245
|
this.prepareTagSync = prepareTagSync;
|
|
244
246
|
this.runTagSync = runTagSync;
|
|
245
|
-
this.
|
|
247
|
+
this.tagProgressPresenter = tagProgressPresenter;
|
|
246
248
|
this.presentSyncCliResult = presentSyncCliResult;
|
|
249
|
+
this.schemaValidation = schemaValidation;
|
|
250
|
+
this.cliExecutor = cliExecutor;
|
|
247
251
|
}
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
+
get definition() {
|
|
253
|
+
return {
|
|
254
|
+
name: CLI_COMMAND_SLOT_NAME.tag,
|
|
255
|
+
description: "Add @since <version> JSDoc tags to exported declarations",
|
|
256
|
+
aliases: ["annotate"],
|
|
257
|
+
route: [
|
|
258
|
+
{
|
|
259
|
+
kind: "optionalPositional",
|
|
260
|
+
argumentTemplate: "[target]",
|
|
261
|
+
helpBlurb: "Directory or file to annotate (default: auto-discover workspace packages)"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
kind: "booleanFlag",
|
|
265
|
+
flagPhrase: "--dry-run",
|
|
266
|
+
helpBlurb: "Show summary without writing files",
|
|
267
|
+
whenUnsetUses: false
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
kind: "booleanFlag",
|
|
271
|
+
flagPhrase: "--json",
|
|
272
|
+
helpBlurb: "Print one JSON summary on stdout (suppresses human progress)",
|
|
273
|
+
whenUnsetUses: false
|
|
274
|
+
}
|
|
275
|
+
],
|
|
276
|
+
action: async (positionalArguments, localOptionRecord) => {
|
|
277
|
+
const typedOptionsCarrier = localOptionRecord;
|
|
278
|
+
await this.runAnnotatedTagVerb(readOptionalPositionalArg(positionalArguments[0]), {
|
|
279
|
+
dryRun: typedOptionsCarrier.dryRun,
|
|
280
|
+
json: typedOptionsCarrier.json
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
};
|
|
252
284
|
}
|
|
253
|
-
async
|
|
285
|
+
async runAnnotatedTagVerb(rawTargetPiece, options) {
|
|
254
286
|
const prelude = await this.prepareTagSync.execute({
|
|
255
287
|
currentWorkingDirectory: this.runtime.cwd(),
|
|
256
|
-
rawTarget:
|
|
288
|
+
rawTarget: rawTargetPiece
|
|
257
289
|
});
|
|
258
|
-
if (!consumeCliAppError(
|
|
290
|
+
if (!this.cliExecutor.consumeCliAppError(prelude)) return;
|
|
259
291
|
const { rootDir, config, resolvedTargetPath } = prelude.value;
|
|
260
292
|
const tagConfig = config.tag ?? {};
|
|
261
|
-
const parsed =
|
|
293
|
+
const parsed = this.schemaValidation.parseWithSchema(tagSyncRunRequestSchema, {
|
|
262
294
|
rootDir,
|
|
263
295
|
write: !options.dryRun,
|
|
264
296
|
json: options.json,
|
|
@@ -266,17 +298,25 @@ let _TagCommand;
|
|
|
266
298
|
skipPackages: tagConfig.skipPackages,
|
|
267
299
|
config: tagConfig
|
|
268
300
|
});
|
|
269
|
-
if (!consumeCliAppError(
|
|
301
|
+
if (!this.cliExecutor.consumeCliAppError(parsed)) return;
|
|
270
302
|
const tagOutcome = await this.runTagSync.execute({
|
|
271
303
|
...parsed.value,
|
|
272
|
-
listener: parsed.value.json ? void 0 : this.
|
|
304
|
+
listener: parsed.value.json ? void 0 : this.tagProgressPresenter
|
|
273
305
|
});
|
|
274
|
-
if (!consumeCliAppError(
|
|
306
|
+
if (!this.cliExecutor.consumeCliAppError(tagOutcome)) return;
|
|
275
307
|
if (parsed.value.json) {
|
|
276
|
-
this.logger.out(formatTagSyncJsonOutput(tagOutcome.value, rootDir));
|
|
308
|
+
this.logger.out(this.formatTagSyncJsonOutput(tagOutcome.value, rootDir));
|
|
277
309
|
this.runtime.setExitCode(exitCodeForTagSyncResult(tagOutcome.value));
|
|
278
310
|
} else this.runtime.setExitCode(this.presentSyncCliResult.present(tagOutcome.value, rootDir));
|
|
279
311
|
}
|
|
312
|
+
formatTagSyncJsonOutput(result, rootDir) {
|
|
313
|
+
return JSON.stringify({
|
|
314
|
+
schemaVersion: 1,
|
|
315
|
+
ok: result.hookError === null,
|
|
316
|
+
cwd: rootDir,
|
|
317
|
+
result
|
|
318
|
+
});
|
|
319
|
+
}
|
|
280
320
|
static {
|
|
281
321
|
_initClass();
|
|
282
322
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { formatProgress } from "./tag-sync.presenter.mjs";
|
|
1
|
+
import { CliLoggerPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
3
2
|
import { inject, injectable } from "@codefast/di";
|
|
4
|
-
//#region src/
|
|
3
|
+
//#region src/domains/tag/presentation/presenters/present-tag-sync-progress.presenter.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,32 +211,38 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
212
211
|
};
|
|
213
212
|
}
|
|
214
213
|
let _dec, _initClass;
|
|
215
|
-
_dec = injectable([inject(
|
|
216
|
-
let
|
|
214
|
+
_dec = injectable([inject(CliLoggerPortToken)]);
|
|
215
|
+
let _PresentTagSyncProgressPresenter;
|
|
217
216
|
(class {
|
|
218
217
|
logger;
|
|
219
218
|
static {
|
|
220
|
-
({c: [
|
|
219
|
+
({c: [_PresentTagSyncProgressPresenter, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
221
220
|
}
|
|
222
221
|
constructor(logger) {
|
|
223
222
|
this.logger = logger;
|
|
224
223
|
}
|
|
225
224
|
onTargetStarted(target) {
|
|
226
|
-
this.logger.out(formatProgress({
|
|
225
|
+
this.logger.out(this.formatProgress({
|
|
227
226
|
type: "target-started",
|
|
228
227
|
target
|
|
229
228
|
}));
|
|
230
229
|
}
|
|
231
230
|
onTargetCompleted(target, result) {
|
|
232
|
-
this.logger.out(formatProgress({
|
|
231
|
+
this.logger.out(this.formatProgress({
|
|
233
232
|
type: "target-completed",
|
|
234
233
|
target,
|
|
235
234
|
result
|
|
236
235
|
}));
|
|
237
236
|
}
|
|
237
|
+
formatProgress(event) {
|
|
238
|
+
const targetDisplayName = (target) => target.packageName ?? target.rootRelativeTargetPath;
|
|
239
|
+
if (event.type === "target-started") return `[tag] Processing ${targetDisplayName(event.target)}...`;
|
|
240
|
+
const changedFiles = event.result.result?.filesChanged ?? 0;
|
|
241
|
+
return `[tag] Done ${targetDisplayName(event.target)} (${changedFiles} changes)`;
|
|
242
|
+
}
|
|
238
243
|
static {
|
|
239
244
|
_initClass();
|
|
240
245
|
}
|
|
241
246
|
});
|
|
242
247
|
//#endregion
|
|
243
|
-
export {
|
|
248
|
+
export { _PresentTagSyncProgressPresenter as PresentTagSyncProgressPresenter };
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import { CliLoggerPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
2
|
+
import "../../../../shell/domain/cli-exit-codes.domain.mjs";
|
|
3
|
+
import { exitCodeForTagSyncResult } from "../../application/tag-sync-cli-result.mjs";
|
|
4
|
+
import { inject, injectable } from "@codefast/di";
|
|
5
|
+
//#region src/domains/tag/presentation/presenters/present-tag-sync-result.presenter.ts
|
|
6
|
+
function toPrimitive(input, hint) {
|
|
7
|
+
if (typeof input !== "object" || input === null) return input;
|
|
8
|
+
var prim = input[Symbol.toPrimitive];
|
|
9
|
+
if (prim !== void 0) {
|
|
10
|
+
var res = prim.call(input, hint || "default");
|
|
11
|
+
if (typeof res !== "object") return res;
|
|
12
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
13
|
+
}
|
|
14
|
+
return (hint === "string" ? String : Number)(input);
|
|
15
|
+
}
|
|
16
|
+
function toPropertyKey(arg) {
|
|
17
|
+
var key = toPrimitive(arg, "string");
|
|
18
|
+
return typeof key === "symbol" ? key : String(key);
|
|
19
|
+
}
|
|
20
|
+
function checkInRHS(value) {
|
|
21
|
+
if (Object(value) !== value) throw TypeError("right-hand side of 'in' should be an object, got " + (value !== null ? typeof value : "null"));
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
function setFunctionName(fn, name, prefix) {
|
|
25
|
+
if (typeof name === "symbol") {
|
|
26
|
+
name = name.description;
|
|
27
|
+
name = name ? "[" + name + "]" : "";
|
|
28
|
+
}
|
|
29
|
+
try {
|
|
30
|
+
Object.defineProperty(fn, "name", {
|
|
31
|
+
configurable: true,
|
|
32
|
+
value: prefix ? prefix + " " + name : name
|
|
33
|
+
});
|
|
34
|
+
} catch (_) {}
|
|
35
|
+
return fn;
|
|
36
|
+
}
|
|
37
|
+
function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis, instanceBrand, parentClass) {
|
|
38
|
+
var symbolMetadata = Symbol.metadata || Symbol.for("Symbol.metadata");
|
|
39
|
+
var defineProperty = Object.defineProperty;
|
|
40
|
+
var create = Object.create;
|
|
41
|
+
var metadata;
|
|
42
|
+
var existingNonFields = [create(null), create(null)];
|
|
43
|
+
var hasClassDecs = classDecs.length;
|
|
44
|
+
var _;
|
|
45
|
+
function createRunInitializers(initializers, useStaticThis, hasValue) {
|
|
46
|
+
return function(thisArg, value) {
|
|
47
|
+
if (useStaticThis) {
|
|
48
|
+
value = thisArg;
|
|
49
|
+
thisArg = targetClass;
|
|
50
|
+
}
|
|
51
|
+
for (var i = 0; i < initializers.length; i++) value = initializers[i].apply(thisArg, hasValue ? [value] : []);
|
|
52
|
+
return hasValue ? value : thisArg;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function assertCallable(fn, hint1, hint2, throwUndefined) {
|
|
56
|
+
if (typeof fn !== "function") {
|
|
57
|
+
if (throwUndefined || fn !== void 0) throw new TypeError(hint1 + " must " + (hint2 || "be") + " a function" + (throwUndefined ? "" : " or undefined"));
|
|
58
|
+
}
|
|
59
|
+
return fn;
|
|
60
|
+
}
|
|
61
|
+
function applyDec(Class, decInfo, decoratorsHaveThis, name, kind, initializers, ret, isStatic, isPrivate, isField, hasPrivateBrand) {
|
|
62
|
+
function assertInstanceIfPrivate(target) {
|
|
63
|
+
if (!hasPrivateBrand(target)) throw new TypeError("Attempted to access private element on non-instance");
|
|
64
|
+
}
|
|
65
|
+
var decs = [].concat(decInfo[0]);
|
|
66
|
+
var decVal = decInfo[3];
|
|
67
|
+
var isClass = !ret;
|
|
68
|
+
var isAccessor = kind === 1;
|
|
69
|
+
var isGetter = kind === 3;
|
|
70
|
+
var isSetter = kind === 4;
|
|
71
|
+
var isMethod = kind === 2;
|
|
72
|
+
function bindPropCall(name, useStaticThis, before) {
|
|
73
|
+
return function(_this, value) {
|
|
74
|
+
if (useStaticThis) {
|
|
75
|
+
value = _this;
|
|
76
|
+
_this = Class;
|
|
77
|
+
}
|
|
78
|
+
if (before) before(_this);
|
|
79
|
+
return desc[name].call(_this, value);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
var desc1 = {};
|
|
83
|
+
var init = [];
|
|
84
|
+
var key = isGetter ? "get" : isSetter || isAccessor ? "set" : "value";
|
|
85
|
+
if (!isClass) {
|
|
86
|
+
if (isPrivate) {
|
|
87
|
+
if (isField || isAccessor) desc1 = {
|
|
88
|
+
get: setFunctionName(function() {
|
|
89
|
+
return decVal(this);
|
|
90
|
+
}, name, "get"),
|
|
91
|
+
set: function(value) {
|
|
92
|
+
decInfo[4](this, value);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
else desc1[key] = decVal;
|
|
96
|
+
if (!isField) setFunctionName(desc1[key], name, isMethod ? "" : key);
|
|
97
|
+
} else if (!isField) desc1 = Object.getOwnPropertyDescriptor(Class, name);
|
|
98
|
+
if (!isField && !isPrivate) {
|
|
99
|
+
_ = existingNonFields[+isStatic][name];
|
|
100
|
+
if (_ && (_ ^ kind) !== 7) throw new Error("Decorating two elements with the same name (" + desc1[key].name + ") is not supported yet");
|
|
101
|
+
existingNonFields[+isStatic][name] = kind < 3 ? 1 : kind;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
var newValue = Class;
|
|
105
|
+
for (var i = decs.length - 1; i >= 0; i -= decoratorsHaveThis ? 2 : 1) {
|
|
106
|
+
var dec = assertCallable(decs[i], "A decorator", "be", true);
|
|
107
|
+
var decThis = decoratorsHaveThis ? decs[i - 1] : void 0;
|
|
108
|
+
var decoratorFinishedRef = {};
|
|
109
|
+
var ctx = {
|
|
110
|
+
kind: [
|
|
111
|
+
"field",
|
|
112
|
+
"accessor",
|
|
113
|
+
"method",
|
|
114
|
+
"getter",
|
|
115
|
+
"setter",
|
|
116
|
+
"class"
|
|
117
|
+
][kind],
|
|
118
|
+
name,
|
|
119
|
+
metadata,
|
|
120
|
+
addInitializer: (function(decoratorFinishedRef, initializer) {
|
|
121
|
+
if (decoratorFinishedRef.v) throw new TypeError("attempted to call addInitializer after decoration was finished");
|
|
122
|
+
assertCallable(initializer, "An initializer", "be", true);
|
|
123
|
+
initializers.push(initializer);
|
|
124
|
+
}).bind(null, decoratorFinishedRef)
|
|
125
|
+
};
|
|
126
|
+
if (isClass) {
|
|
127
|
+
_ = dec.call(decThis, newValue, ctx);
|
|
128
|
+
decoratorFinishedRef.v = 1;
|
|
129
|
+
if (assertCallable(_, "class decorators", "return")) newValue = _;
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
ctx.static = isStatic;
|
|
133
|
+
ctx.private = isPrivate;
|
|
134
|
+
_ = ctx.access = { has: isPrivate ? hasPrivateBrand.bind() : function(target) {
|
|
135
|
+
return name in target;
|
|
136
|
+
} };
|
|
137
|
+
if (!isSetter) _.get = isPrivate ? isMethod ? function(_this) {
|
|
138
|
+
assertInstanceIfPrivate(_this);
|
|
139
|
+
return desc1.value;
|
|
140
|
+
} : bindPropCall("get", 0, assertInstanceIfPrivate) : function(target) {
|
|
141
|
+
return target[name];
|
|
142
|
+
};
|
|
143
|
+
if (!isMethod && !isGetter) _.set = isPrivate ? bindPropCall("set", 0, assertInstanceIfPrivate) : function(target, value) {
|
|
144
|
+
target[name] = value;
|
|
145
|
+
};
|
|
146
|
+
newValue = dec.call(decThis, isAccessor ? {
|
|
147
|
+
get: desc1.get,
|
|
148
|
+
set: desc1.set
|
|
149
|
+
} : desc1[key], ctx);
|
|
150
|
+
decoratorFinishedRef.v = 1;
|
|
151
|
+
if (isAccessor) {
|
|
152
|
+
if (typeof newValue === "object" && newValue) {
|
|
153
|
+
if (_ = assertCallable(newValue.get, "accessor.get")) desc1.get = _;
|
|
154
|
+
if (_ = assertCallable(newValue.set, "accessor.set")) desc1.set = _;
|
|
155
|
+
if (_ = assertCallable(newValue.init, "accessor.init")) init.unshift(_);
|
|
156
|
+
} else if (newValue !== void 0) throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined");
|
|
157
|
+
} else if (assertCallable(newValue, (isField ? "field" : "method") + " decorators", "return")) if (isField) init.unshift(newValue);
|
|
158
|
+
else desc1[key] = newValue;
|
|
159
|
+
}
|
|
160
|
+
if (kind < 2) ret.push(createRunInitializers(init, isStatic, 1), createRunInitializers(initializers, isStatic, 0));
|
|
161
|
+
if (!isField && !isClass) if (isPrivate) if (isAccessor) ret.splice(-1, 0, bindPropCall("get", isStatic), bindPropCall("set", isStatic));
|
|
162
|
+
else ret.push(isMethod ? desc1[key] : assertCallable.call.bind(desc1[key]));
|
|
163
|
+
else defineProperty(Class, name, desc1);
|
|
164
|
+
return newValue;
|
|
165
|
+
}
|
|
166
|
+
function applyMemberDecs() {
|
|
167
|
+
var ret = [];
|
|
168
|
+
var protoInitializers;
|
|
169
|
+
var staticInitializers;
|
|
170
|
+
var pushInitializers = function(initializers) {
|
|
171
|
+
if (initializers) ret.push(createRunInitializers(initializers));
|
|
172
|
+
};
|
|
173
|
+
var applyMemberDecsOfKind = function(isStatic, isField) {
|
|
174
|
+
for (var i = 0; i < memberDecs.length; i++) {
|
|
175
|
+
var decInfo = memberDecs[i];
|
|
176
|
+
var kind = decInfo[1];
|
|
177
|
+
var kindOnly = kind & 7;
|
|
178
|
+
if ((kind & 8) == isStatic && !kindOnly == isField) {
|
|
179
|
+
var name = decInfo[2];
|
|
180
|
+
var isPrivate = !!decInfo[3];
|
|
181
|
+
var decoratorsHaveThis = kind & 16;
|
|
182
|
+
applyDec(isStatic ? targetClass : targetClass.prototype, decInfo, decoratorsHaveThis, isPrivate ? "#" + name : toPropertyKey(name), kindOnly, kindOnly < 2 ? [] : isStatic ? staticInitializers = staticInitializers || [] : protoInitializers = protoInitializers || [], ret, !!isStatic, isPrivate, isField, isStatic && isPrivate ? function(_) {
|
|
183
|
+
return checkInRHS(_) === targetClass;
|
|
184
|
+
} : instanceBrand);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
applyMemberDecsOfKind(8, 0);
|
|
189
|
+
applyMemberDecsOfKind(0, 0);
|
|
190
|
+
applyMemberDecsOfKind(8, 1);
|
|
191
|
+
applyMemberDecsOfKind(0, 1);
|
|
192
|
+
pushInitializers(protoInitializers);
|
|
193
|
+
pushInitializers(staticInitializers);
|
|
194
|
+
return ret;
|
|
195
|
+
}
|
|
196
|
+
function defineMetadata(Class) {
|
|
197
|
+
return defineProperty(Class, symbolMetadata, {
|
|
198
|
+
configurable: true,
|
|
199
|
+
enumerable: true,
|
|
200
|
+
value: metadata
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
if (parentClass !== void 0) metadata = parentClass[symbolMetadata];
|
|
204
|
+
metadata = create(metadata == null ? null : metadata);
|
|
205
|
+
_ = applyMemberDecs();
|
|
206
|
+
if (!hasClassDecs) defineMetadata(targetClass);
|
|
207
|
+
return {
|
|
208
|
+
e: _,
|
|
209
|
+
get c() {
|
|
210
|
+
var initializers = [];
|
|
211
|
+
return hasClassDecs && [defineMetadata(targetClass = applyDec(targetClass, [classDecs], classDecsHaveThis, targetClass.name, 5, initializers)), createRunInitializers(initializers, 1)];
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
function _identity(x) {
|
|
216
|
+
return x;
|
|
217
|
+
}
|
|
218
|
+
let _dec, _initClass;
|
|
219
|
+
_dec = injectable([inject(CliLoggerPortToken)]);
|
|
220
|
+
let _PresentTagSyncResultPresenter;
|
|
221
|
+
new class extends _identity {
|
|
222
|
+
constructor() {
|
|
223
|
+
super(_PresentTagSyncResultPresenter), _initClass();
|
|
224
|
+
}
|
|
225
|
+
static [class PresentTagSyncResultPresenter {
|
|
226
|
+
logger;
|
|
227
|
+
static {
|
|
228
|
+
({c: [_PresentTagSyncResultPresenter, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
229
|
+
}
|
|
230
|
+
constructor(logger) {
|
|
231
|
+
this.logger = logger;
|
|
232
|
+
}
|
|
233
|
+
present(result, rootDir) {
|
|
234
|
+
this.logger.out(this.formatTargetTable(result.selectedTargets, rootDir));
|
|
235
|
+
if (result.selectedTargets.length === 0) {
|
|
236
|
+
this.logger.err("No packages found in workspace. Check your pnpm-workspace.yaml or provide an explicit target path.");
|
|
237
|
+
return 1;
|
|
238
|
+
}
|
|
239
|
+
const warningsAndErrorsSection = this.formatWarningsAndErrors(result);
|
|
240
|
+
if (warningsAndErrorsSection) this.logger.err(warningsAndErrorsSection);
|
|
241
|
+
this.logger.out(this.formatSummary(result));
|
|
242
|
+
return exitCodeForTagSyncResult(result);
|
|
243
|
+
}
|
|
244
|
+
withColorizedLine(line, colorCode) {
|
|
245
|
+
return `${colorCode}${line}${_PresentTagSyncResultPresenter.colorReset}`;
|
|
246
|
+
}
|
|
247
|
+
warningsAndErrorsFromResult(result) {
|
|
248
|
+
const entries = [];
|
|
249
|
+
for (const targetResult of result.targetResults) if (targetResult.runError) entries.push(targetResult.runError);
|
|
250
|
+
if (result.hookError) entries.push(result.hookError);
|
|
251
|
+
return entries;
|
|
252
|
+
}
|
|
253
|
+
formatTargetTable(targets, rootDir) {
|
|
254
|
+
const packageColumnWidth = Math.max(7, ...targets.map((target) => (target.packageName ?? "-").length));
|
|
255
|
+
const pathColumnWidth = Math.max(4, ...targets.map((target) => target.rootRelativeTargetPath.length));
|
|
256
|
+
const lines = [];
|
|
257
|
+
lines.push(`[tag] Root: ${rootDir}`);
|
|
258
|
+
lines.push(`[tag] Resolved targets: ${targets.length}`);
|
|
259
|
+
lines.push("[tag] Targets:");
|
|
260
|
+
lines.push(` ${"package".padEnd(packageColumnWidth)} ${"path".padEnd(pathColumnWidth)} source`);
|
|
261
|
+
lines.push(` ${"-".repeat(packageColumnWidth)} ${"-".repeat(pathColumnWidth)} ${"-".repeat(6)}`);
|
|
262
|
+
for (const target of targets) lines.push(` ${(target.packageName ?? "-").padEnd(packageColumnWidth)} ${target.rootRelativeTargetPath.padEnd(pathColumnWidth)} ${target.source}`);
|
|
263
|
+
return lines.join("\n");
|
|
264
|
+
}
|
|
265
|
+
formatWarningsAndErrors(result) {
|
|
266
|
+
const entries = this.warningsAndErrorsFromResult(result);
|
|
267
|
+
if (entries.length === 0) return null;
|
|
268
|
+
const lines = [this.withColorizedLine("⚠️ Warnings & Errors", _PresentTagSyncResultPresenter.colors.yellow)];
|
|
269
|
+
for (const entry of entries) lines.push(this.withColorizedLine(`- ${entry}`, _PresentTagSyncResultPresenter.colors.red));
|
|
270
|
+
return lines.join("\n");
|
|
271
|
+
}
|
|
272
|
+
formatSummary(result) {
|
|
273
|
+
const isDryRun = result.mode === "dry-run";
|
|
274
|
+
const summaryPrefix = isDryRun ? "[tag:dry-run]" : "[tag]";
|
|
275
|
+
const versionSuffix = result.versionSummary === "mixed" && result.distinctVersions.length > 0 ? ` [${result.distinctVersions.join(", ")}]` : "";
|
|
276
|
+
const summaryColor = result.targetResults.some((targetResult) => targetResult.runError !== null) || result.hookError !== null ? _PresentTagSyncResultPresenter.colors.red : isDryRun ? _PresentTagSyncResultPresenter.colors.yellow : _PresentTagSyncResultPresenter.colors.green;
|
|
277
|
+
const lines = [this.withColorizedLine(`${summaryPrefix} version=${result.versionSummary}${versionSuffix} files=${result.filesChanged}/${result.filesScanned} declarations=${result.taggedDeclarations}`, summaryColor)];
|
|
278
|
+
if (result.skippedPackages.length > 0) lines.push(`[tag] Skipped: ${result.skippedPackages.length} package(s)`);
|
|
279
|
+
return lines.join("\n");
|
|
280
|
+
}
|
|
281
|
+
}];
|
|
282
|
+
colorReset = "\x1B[0m";
|
|
283
|
+
colors = {
|
|
284
|
+
red: "\x1B[31m",
|
|
285
|
+
green: "\x1B[32m",
|
|
286
|
+
yellow: "\x1B[33m"
|
|
287
|
+
};
|
|
288
|
+
}();
|
|
289
|
+
//#endregion
|
|
290
|
+
export { _PresentTagSyncResultPresenter as PresentTagSyncResultPresenter };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createOptionalCliPortTelemetryActivation } from "../../shell/wiring/optional-cli-port-telemetry-activation.mjs";
|
|
2
|
+
import { ShellInfrastructureModule } from "../../shell/shell.module.mjs";
|
|
3
|
+
import { TagTargetResolverAdapter as _TagTargetResolverAdapter } from "./infrastructure/adapters/tag-target-resolver.adapter.mjs";
|
|
4
|
+
import { TagSinceWriterAdapter as _TagSinceWriterAdapter } from "./infrastructure/adapters/tag-since-writer.adapter.mjs";
|
|
5
|
+
import { TagVersionResolverAdapter as _TagVersionResolverAdapter } from "./infrastructure/adapters/tag-version-resolver.adapter.mjs";
|
|
6
|
+
import { TagTargetPathResolverAdapter as _TagTargetPathResolverAdapter } from "./infrastructure/adapters/tag-target-path-resolver.adapter.mjs";
|
|
7
|
+
import { PrepareTagSyncUseCaseToken, PresentTagSyncProgressPresenterToken, PresentTagSyncResultPresenterToken, RunTagSyncUseCaseToken, TagEligibleWorkspacePathsPortToken, TagSinceWriterPortToken, TagTargetPathResolverPortToken, TagTargetRunnerPortToken, TagVersionResolverPortToken } from "./composition/tokens.mjs";
|
|
8
|
+
import { TagTargetRunnerAdapter as _TagTargetRunnerAdapter } from "./infrastructure/adapters/tag-target-runner.adapter.mjs";
|
|
9
|
+
import { PrepareTagSyncUseCase as _PrepareTagSyncUseCase } from "./application/use-cases/prepare-tag-sync.use-case.mjs";
|
|
10
|
+
import { RunTagSyncUseCase as _RunTagSyncUseCase } from "./application/use-cases/run-tag-sync.use-case.mjs";
|
|
11
|
+
import { PresentTagSyncResultPresenter as _PresentTagSyncResultPresenter } from "./presentation/presenters/present-tag-sync-result.presenter.mjs";
|
|
12
|
+
import { PresentTagSyncProgressPresenter as _PresentTagSyncProgressPresenter } from "./presentation/presenters/present-tag-sync-progress.presenter.mjs";
|
|
13
|
+
import { Module } from "@codefast/di";
|
|
14
|
+
//#region src/domains/tag/tag.module.ts
|
|
15
|
+
const TagModule = Module.create("cli-tag", (moduleBuilder) => {
|
|
16
|
+
moduleBuilder.import(ShellInfrastructureModule);
|
|
17
|
+
moduleBuilder.bind(TagEligibleWorkspacePathsPortToken).to(_TagTargetResolverAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(TagEligibleWorkspacePathsPortToken));
|
|
18
|
+
moduleBuilder.bind(TagSinceWriterPortToken).to(_TagSinceWriterAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(TagSinceWriterPortToken));
|
|
19
|
+
moduleBuilder.bind(TagVersionResolverPortToken).to(_TagVersionResolverAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(TagVersionResolverPortToken));
|
|
20
|
+
moduleBuilder.bind(TagTargetRunnerPortToken).to(_TagTargetRunnerAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(TagTargetRunnerPortToken));
|
|
21
|
+
moduleBuilder.bind(TagTargetPathResolverPortToken).to(_TagTargetPathResolverAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(TagTargetPathResolverPortToken));
|
|
22
|
+
moduleBuilder.bind(PrepareTagSyncUseCaseToken).to(_PrepareTagSyncUseCase).singleton();
|
|
23
|
+
moduleBuilder.bind(RunTagSyncUseCaseToken).to(_RunTagSyncUseCase).singleton();
|
|
24
|
+
moduleBuilder.bind(PresentTagSyncResultPresenterToken).to(_PresentTagSyncResultPresenter).singleton();
|
|
25
|
+
moduleBuilder.bind(PresentTagSyncProgressPresenterToken).to(_PresentTagSyncProgressPresenter).singleton();
|
|
26
|
+
});
|
|
27
|
+
//#endregion
|
|
28
|
+
export { TagModule };
|
package/dist/program.mjs
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { registerCliCommandTreesOnProgram } from "./bootstrap/register-cli-command-trees.mjs";
|
|
2
|
+
import { createCliRuntimeContainer, resolveCliCommands } from "./bootstrap/composition-root.mjs";
|
|
2
3
|
import process from "node:process";
|
|
3
4
|
import { readFileSync } from "node:fs";
|
|
4
5
|
import path from "node:path";
|
|
@@ -18,7 +19,7 @@ function readVersion() {
|
|
|
18
19
|
function createProgram(commands) {
|
|
19
20
|
const program = new Command();
|
|
20
21
|
program.name("codefast").description("Codefast monorepo developer CLI").version(readVersion()).option("--no-color", "Disable ANSI color output").configureHelp({ sortSubcommands: true }).showHelpAfterError("(use --help for usage)");
|
|
21
|
-
|
|
22
|
+
registerCliCommandTreesOnProgram(program, commands);
|
|
22
23
|
return program;
|
|
23
24
|
}
|
|
24
25
|
async function runCli(argv) {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { token } from "@codefast/di";
|
|
2
|
+
//#region src/shell/application/cli-runtime.tokens.ts
|
|
3
|
+
const CliTelemetryPortToken = token("CliTelemetryPort");
|
|
4
|
+
const CliFilesystemPortToken = token("FilesystemPort");
|
|
5
|
+
const CliLoggerPortToken = token("CliLoggerPort");
|
|
6
|
+
const CliPathPortToken = token("CliPathPort");
|
|
7
|
+
const RepoRootResolverPortToken = token("RepoRootResolverPort");
|
|
8
|
+
const TypeScriptSourceFileWalkerPortToken = token("TypeScriptSourceFileWalkerPort");
|
|
9
|
+
const CliRuntimeToken = token("CliRuntimePort");
|
|
10
|
+
const LoadCodefastConfigUseCaseToken = token("LoadCodefastConfigUseCase");
|
|
11
|
+
const CliSchemaParsingToken = token("CliSchemaParsing");
|
|
12
|
+
const GlobalCliOptionsParsePortToken = token("GlobalCliOptionsParsePort");
|
|
13
|
+
const FormatAppErrorPortToken = token("FormatAppErrorPort");
|
|
14
|
+
const CliVerboseDiagnosticsPortToken = token("CliVerboseDiagnosticsPort");
|
|
15
|
+
const CliExecutorToken = token("CliExecutor");
|
|
16
|
+
const WorkspacePackageLayoutPortToken = token("WorkspacePackageLayoutPort");
|
|
17
|
+
//#endregion
|
|
18
|
+
export { CliExecutorToken, CliFilesystemPortToken, CliLoggerPortToken, CliPathPortToken, CliRuntimeToken, CliSchemaParsingToken, CliTelemetryPortToken, CliVerboseDiagnosticsPortToken, FormatAppErrorPortToken, GlobalCliOptionsParsePortToken, LoadCodefastConfigUseCaseToken, RepoRootResolverPortToken, TypeScriptSourceFileWalkerPortToken, WorkspacePackageLayoutPortToken };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
//#region src/shell/application/global-cli-options.model.ts
|
|
3
|
+
/** Commander global opts shape validated before mirror prelude (`color` from `--no-color`). */ const globalCliCommanderOptionsSchema = z.object({ color: z.boolean().optional() });
|
|
4
|
+
//#endregion
|
|
5
|
+
export { globalCliCommanderOptionsSchema };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|