@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,9 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
//#region src/lib/tag/application/services/tag-cli-target-path-resolver.service.ts
|
|
3
|
-
function resolveTagCliTargetPath(input) {
|
|
4
|
-
if (input.rawTarget === void 0) return;
|
|
5
|
-
const candidate = path.isAbsolute(input.rawTarget) ? path.resolve(input.rawTarget) : path.resolve(input.currentWorkingDirectory, input.rawTarget);
|
|
6
|
-
return input.fs.canonicalPathSync(candidate);
|
|
7
|
-
}
|
|
8
|
-
//#endregion
|
|
9
|
-
export { resolveTagCliTargetPath };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
//#region src/lib/tag/application/services/tag-target-runner.service.ts
|
|
2
|
-
function resolveNearestPackageVersion(targetPath, versionResolver) {
|
|
3
|
-
return versionResolver.resolveNearestPackageVersion(targetPath);
|
|
4
|
-
}
|
|
5
|
-
function runTagOnTarget(targetPath, opts, fs, pathService, versionResolver, sinceWriter, typeScriptTreeWalk) {
|
|
6
|
-
const resolvedTarget = pathService.resolve(targetPath);
|
|
7
|
-
const version = resolveNearestPackageVersion(resolvedTarget, versionResolver);
|
|
8
|
-
const tsFiles = (fs.statSync(resolvedTarget).isDirectory() ? typeScriptTreeWalk.walkTsxFiles(resolvedTarget) : [resolvedTarget]).filter((filePath) => filePath.endsWith(".ts") || filePath.endsWith(".tsx"));
|
|
9
|
-
const fileResults = tsFiles.map((filePath) => sinceWriter.applySinceTagsToFile(filePath, version, opts.write));
|
|
10
|
-
const filesChanged = fileResults.filter((result) => result.changed).length;
|
|
11
|
-
const taggedDeclarations = fileResults.reduce((sum, result) => sum + result.taggedDeclarations, 0);
|
|
12
|
-
return {
|
|
13
|
-
version,
|
|
14
|
-
filesScanned: tsFiles.length,
|
|
15
|
-
filesChanged,
|
|
16
|
-
taggedDeclarations,
|
|
17
|
-
fileResults
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
//#endregion
|
|
21
|
-
export { runTagOnTarget };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import "../../core/domain/cli-exit-codes.domain.mjs";
|
|
2
|
-
import { exitCodeForTagSyncResult } from "./tag-sync-cli-result.mjs";
|
|
3
|
-
//#region src/lib/tag/application/tag-sync-json.format.ts
|
|
4
|
-
function formatTagSyncJsonOutput(tagResult, rootDir) {
|
|
5
|
-
const payload = {
|
|
6
|
-
schemaVersion: 1,
|
|
7
|
-
ok: exitCodeForTagSyncResult(tagResult) === 0,
|
|
8
|
-
rootDir,
|
|
9
|
-
result: tagResult
|
|
10
|
-
};
|
|
11
|
-
return JSON.stringify(payload);
|
|
12
|
-
}
|
|
13
|
-
//#endregion
|
|
14
|
-
export { formatTagSyncJsonOutput };
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { token } from "@codefast/di";
|
|
2
|
-
//#region src/lib/tag/contracts/tokens.ts
|
|
3
|
-
const TagTargetResolverPortToken = token("TagTargetResolverPort");
|
|
4
|
-
const TypeScriptTreeWalkPortToken = token("TypeScriptTreeWalkPort");
|
|
5
|
-
const TagSinceWriterPortToken = token("TagSinceWriterPort");
|
|
6
|
-
const TagVersionResolverPortToken = token("TagVersionResolverPort");
|
|
7
|
-
const RunTagSyncUseCaseToken = token("RunTagSyncUseCase");
|
|
8
|
-
const PrepareTagSyncUseCaseToken = token("PrepareTagSyncUseCase");
|
|
9
|
-
//#endregion
|
|
10
|
-
export { PrepareTagSyncUseCaseToken, RunTagSyncUseCaseToken, TagSinceWriterPortToken, TagTargetResolverPortToken, TagVersionResolverPortToken, TypeScriptTreeWalkPortToken };
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
import { messageFromCaughtUnknown } from "../../core/domain/caught-unknown-message.value-object.mjs";
|
|
2
|
-
import { globSync } from "node:fs";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { z } from "zod";
|
|
5
|
-
import picomatch from "picomatch";
|
|
6
|
-
import { parse } from "yaml";
|
|
7
|
-
//#region src/lib/tag/infrastructure/tag-target-candidates.adapter.ts
|
|
8
|
-
const PNPM_WORKSPACE_FILE = "pnpm-workspace.yaml";
|
|
9
|
-
const PACKAGE_JSON_FILE = "package.json";
|
|
10
|
-
const DEFAULT_WORKSPACE_PACKAGE_PATTERNS = ["packages/*"];
|
|
11
|
-
const pnpmWorkspaceSchema = z.looseObject({ packages: z.array(z.string()).optional() });
|
|
12
|
-
const packageNameSchema = z.looseObject({ name: z.string().min(1).optional() });
|
|
13
|
-
function toPosix(filePath) {
|
|
14
|
-
return filePath.split(path.sep).join("/");
|
|
15
|
-
}
|
|
16
|
-
function workspacePatternToPackageJsonGlob(pattern) {
|
|
17
|
-
const normalizedPattern = toPosix(pattern.trim()).replace(/\/+$/, "");
|
|
18
|
-
if (!normalizedPattern) return `**/${PACKAGE_JSON_FILE}`;
|
|
19
|
-
return `${normalizedPattern}/${PACKAGE_JSON_FILE}`;
|
|
20
|
-
}
|
|
21
|
-
function splitWorkspacePackagePatterns(rawPatterns) {
|
|
22
|
-
const include = [];
|
|
23
|
-
const exclude = [];
|
|
24
|
-
for (const rawPattern of rawPatterns) {
|
|
25
|
-
const trimmedPattern = rawPattern.trim();
|
|
26
|
-
if (!trimmedPattern) continue;
|
|
27
|
-
if (trimmedPattern.startsWith("!")) {
|
|
28
|
-
exclude.push(trimmedPattern.slice(1).trim());
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
include.push(trimmedPattern);
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
include,
|
|
35
|
-
exclude
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
async function readWorkspacePackagePatterns(rootDir, fs) {
|
|
39
|
-
const workspaceYamlPath = path.join(rootDir, PNPM_WORKSPACE_FILE);
|
|
40
|
-
if (!fs.existsSync(workspaceYamlPath)) return {
|
|
41
|
-
patterns: [...DEFAULT_WORKSPACE_PACKAGE_PATTERNS],
|
|
42
|
-
hasWorkspaceFile: false,
|
|
43
|
-
declaredEmptyPackages: false
|
|
44
|
-
};
|
|
45
|
-
let workspaceYamlRaw = "";
|
|
46
|
-
try {
|
|
47
|
-
workspaceYamlRaw = await fs.readFile(workspaceYamlPath, "utf8");
|
|
48
|
-
} catch (caughtReadError) {
|
|
49
|
-
throw new Error(`Failed to read ${PNPM_WORKSPACE_FILE}: ${messageFromCaughtUnknown(caughtReadError)}`);
|
|
50
|
-
}
|
|
51
|
-
let parsedWorkspaceDoc;
|
|
52
|
-
try {
|
|
53
|
-
parsedWorkspaceDoc = parse(workspaceYamlRaw);
|
|
54
|
-
} catch (caughtParseError) {
|
|
55
|
-
throw new Error(`Failed to parse ${PNPM_WORKSPACE_FILE}: ${messageFromCaughtUnknown(caughtParseError)}`);
|
|
56
|
-
}
|
|
57
|
-
const parsedWorkspaceResult = pnpmWorkspaceSchema.safeParse(parsedWorkspaceDoc);
|
|
58
|
-
if (!parsedWorkspaceResult.success) {
|
|
59
|
-
const issuePath = parsedWorkspaceResult.error.issues[0]?.path.join(".") ?? "<root>";
|
|
60
|
-
const issueMessage = parsedWorkspaceResult.error.issues[0]?.message ?? "Invalid value";
|
|
61
|
-
throw new Error(`Invalid ${PNPM_WORKSPACE_FILE} schema at "${issuePath}": ${issueMessage}`);
|
|
62
|
-
}
|
|
63
|
-
const hasPackagesKey = typeof parsedWorkspaceDoc === "object" && parsedWorkspaceDoc !== null && Object.prototype.hasOwnProperty.call(parsedWorkspaceDoc, "packages");
|
|
64
|
-
const workspacePackages = parsedWorkspaceResult.data.packages;
|
|
65
|
-
if (!workspacePackages) return {
|
|
66
|
-
patterns: [...DEFAULT_WORKSPACE_PACKAGE_PATTERNS],
|
|
67
|
-
hasWorkspaceFile: true,
|
|
68
|
-
declaredEmptyPackages: false
|
|
69
|
-
};
|
|
70
|
-
if (workspacePackages.length === 0 && hasPackagesKey) return {
|
|
71
|
-
patterns: [],
|
|
72
|
-
hasWorkspaceFile: true,
|
|
73
|
-
declaredEmptyPackages: true
|
|
74
|
-
};
|
|
75
|
-
return {
|
|
76
|
-
patterns: workspacePackages,
|
|
77
|
-
hasWorkspaceFile: true,
|
|
78
|
-
declaredEmptyPackages: false
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
async function discoverWorkspacePackageDirs(rootDir, fs) {
|
|
82
|
-
const workspacePackages = await readWorkspacePackagePatterns(rootDir, fs);
|
|
83
|
-
const { include, exclude } = splitWorkspacePackagePatterns(workspacePackages.patterns);
|
|
84
|
-
const includePatterns = include.length > 0 ? include : [...DEFAULT_WORKSPACE_PACKAGE_PATTERNS];
|
|
85
|
-
const foundPackageDirs = /* @__PURE__ */ new Set();
|
|
86
|
-
const globOptions = {
|
|
87
|
-
cwd: rootDir,
|
|
88
|
-
posix: true,
|
|
89
|
-
...path.sep === "\\" ? { windowsPathsNoEscape: true } : {}
|
|
90
|
-
};
|
|
91
|
-
for (const pattern of includePatterns) {
|
|
92
|
-
const matches = globSync(workspacePatternToPackageJsonGlob(pattern), globOptions);
|
|
93
|
-
for (const matchedPath of matches) {
|
|
94
|
-
if (!matchedPath.endsWith(`/${PACKAGE_JSON_FILE}`)) continue;
|
|
95
|
-
const packageRelDir = matchedPath.slice(0, -`/${PACKAGE_JSON_FILE}`.length);
|
|
96
|
-
if (!packageRelDir) continue;
|
|
97
|
-
foundPackageDirs.add(path.resolve(rootDir, packageRelDir));
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
if (exclude.length === 0) return {
|
|
101
|
-
packageDirs: [...foundPackageDirs].sort((leftDir, rightDir) => leftDir.localeCompare(rightDir)),
|
|
102
|
-
hasWorkspaceFile: workspacePackages.hasWorkspaceFile,
|
|
103
|
-
declaredEmptyPackages: workspacePackages.declaredEmptyPackages
|
|
104
|
-
};
|
|
105
|
-
const excludeMatchers = exclude.map((excludePattern) => picomatch(excludePattern, { dot: true }));
|
|
106
|
-
const discoveredDirs = [...foundPackageDirs].filter((packageDir) => {
|
|
107
|
-
const relativePackagePath = toPosix(path.relative(rootDir, packageDir));
|
|
108
|
-
return !excludeMatchers.some((excludeMatcher) => excludeMatcher(relativePackagePath));
|
|
109
|
-
});
|
|
110
|
-
discoveredDirs.sort((leftDir, rightDir) => leftDir.localeCompare(rightDir));
|
|
111
|
-
return {
|
|
112
|
-
packageDirs: discoveredDirs,
|
|
113
|
-
hasWorkspaceFile: workspacePackages.hasWorkspaceFile,
|
|
114
|
-
declaredEmptyPackages: workspacePackages.declaredEmptyPackages
|
|
115
|
-
};
|
|
116
|
-
}
|
|
117
|
-
function readPackageName(packageDir, fs) {
|
|
118
|
-
const packageJsonPath = path.join(packageDir, PACKAGE_JSON_FILE);
|
|
119
|
-
if (!fs.existsSync(packageJsonPath)) return null;
|
|
120
|
-
try {
|
|
121
|
-
const rawPackageJson = fs.readFileSync(packageJsonPath, "utf8");
|
|
122
|
-
const parsedPackageJson = JSON.parse(rawPackageJson);
|
|
123
|
-
const parsedPackageName = packageNameSchema.safeParse(parsedPackageJson);
|
|
124
|
-
if (!parsedPackageName.success) return null;
|
|
125
|
-
return parsedPackageName.data.name ?? null;
|
|
126
|
-
} catch {
|
|
127
|
-
return null;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
function toRootRelativePath(rootDir, absolutePath) {
|
|
131
|
-
const relativePath = path.relative(rootDir, absolutePath);
|
|
132
|
-
return relativePath ? toPosix(relativePath) : ".";
|
|
133
|
-
}
|
|
134
|
-
function toPackageTargetCandidate(rootDir, packageDir, fs) {
|
|
135
|
-
const packageName = readPackageName(packageDir, fs);
|
|
136
|
-
return {
|
|
137
|
-
candidatePath: packageDir,
|
|
138
|
-
rootRelativeCandidatePath: toRootRelativePath(rootDir, packageDir),
|
|
139
|
-
source: "workspace-package",
|
|
140
|
-
packageDir,
|
|
141
|
-
packageName
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
async function resolveTagTargetCandidates(rootDir, explicitTarget, fs) {
|
|
145
|
-
if (explicitTarget) {
|
|
146
|
-
const resolvedExplicitTarget = path.resolve(explicitTarget);
|
|
147
|
-
return [{
|
|
148
|
-
candidatePath: resolvedExplicitTarget,
|
|
149
|
-
rootRelativeCandidatePath: toRootRelativePath(rootDir, resolvedExplicitTarget),
|
|
150
|
-
source: "explicit-target",
|
|
151
|
-
packageDir: null,
|
|
152
|
-
packageName: null
|
|
153
|
-
}];
|
|
154
|
-
}
|
|
155
|
-
const workspaceDiscovery = await discoverWorkspacePackageDirs(rootDir, fs);
|
|
156
|
-
if (workspaceDiscovery.packageDirs.length === 0) {
|
|
157
|
-
if (workspaceDiscovery.hasWorkspaceFile) return [];
|
|
158
|
-
const repoSourceDir = path.join(rootDir, "src");
|
|
159
|
-
return [{
|
|
160
|
-
candidatePath: repoSourceDir,
|
|
161
|
-
rootRelativeCandidatePath: toRootRelativePath(rootDir, repoSourceDir),
|
|
162
|
-
source: "repo-src-fallback",
|
|
163
|
-
packageDir: null,
|
|
164
|
-
packageName: null
|
|
165
|
-
}];
|
|
166
|
-
}
|
|
167
|
-
return workspaceDiscovery.packageDirs.map((packageDir) => toPackageTargetCandidate(rootDir, packageDir, fs));
|
|
168
|
-
}
|
|
169
|
-
//#endregion
|
|
170
|
-
export { resolveTagTargetCandidates };
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
//#region src/lib/tag/presentation/colors.presenter.ts
|
|
2
|
-
const TAG_COLORS = {
|
|
3
|
-
RESET: "\x1B[0m",
|
|
4
|
-
RED: "\x1B[31m",
|
|
5
|
-
GREEN: "\x1B[32m",
|
|
6
|
-
YELLOW: "\x1B[33m"
|
|
7
|
-
};
|
|
8
|
-
function withTagColor(line, colorCode) {
|
|
9
|
-
return `${colorCode}${line}${TAG_COLORS.RESET}`;
|
|
10
|
-
}
|
|
11
|
-
//#endregion
|
|
12
|
-
export { TAG_COLORS, withTagColor };
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import "../../core/domain/cli-exit-codes.domain.mjs";
|
|
2
|
-
import { exitCodeForTagSyncResult } from "../application/tag-sync-cli-result.mjs";
|
|
3
|
-
import { TAG_COLORS, withTagColor } from "./colors.presenter.mjs";
|
|
4
|
-
//#region src/lib/tag/presentation/tag-sync.presenter.ts
|
|
5
|
-
function targetDisplayName(target) {
|
|
6
|
-
return target.packageName ?? target.rootRelativeTargetPath;
|
|
7
|
-
}
|
|
8
|
-
function formatProgress(event) {
|
|
9
|
-
if (event.type === "target-started") return `[tag] Processing ${targetDisplayName(event.target)}...`;
|
|
10
|
-
const changedFiles = event.result.result?.filesChanged ?? 0;
|
|
11
|
-
return `[tag] Done ${targetDisplayName(event.target)} (${changedFiles} changes)`;
|
|
12
|
-
}
|
|
13
|
-
function warningsAndErrorsFromResult(result) {
|
|
14
|
-
const entries = [];
|
|
15
|
-
for (const targetResult of result.targetResults) if (targetResult.runError) entries.push(targetResult.runError);
|
|
16
|
-
if (result.hookError) entries.push(result.hookError);
|
|
17
|
-
return entries;
|
|
18
|
-
}
|
|
19
|
-
function formatTargetTable(targets, rootDir) {
|
|
20
|
-
const packageColumnWidth = Math.max(7, ...targets.map((target) => (target.packageName ?? "-").length));
|
|
21
|
-
const pathColumnWidth = Math.max(4, ...targets.map((target) => target.rootRelativeTargetPath.length));
|
|
22
|
-
const lines = [];
|
|
23
|
-
lines.push(`[tag] Root: ${rootDir}`);
|
|
24
|
-
lines.push(`[tag] Resolved targets: ${targets.length}`);
|
|
25
|
-
lines.push("[tag] Targets:");
|
|
26
|
-
lines.push(` ${"package".padEnd(packageColumnWidth)} ${"path".padEnd(pathColumnWidth)} source`);
|
|
27
|
-
lines.push(` ${"-".repeat(packageColumnWidth)} ${"-".repeat(pathColumnWidth)} ${"-".repeat(6)}`);
|
|
28
|
-
for (const target of targets) lines.push(` ${(target.packageName ?? "-").padEnd(packageColumnWidth)} ${target.rootRelativeTargetPath.padEnd(pathColumnWidth)} ${target.source}`);
|
|
29
|
-
return lines.join("\n");
|
|
30
|
-
}
|
|
31
|
-
function formatWarningsAndErrors(result) {
|
|
32
|
-
const entries = warningsAndErrorsFromResult(result);
|
|
33
|
-
if (entries.length === 0) return null;
|
|
34
|
-
const lines = [withTagColor("⚠️ Warnings & Errors", TAG_COLORS.YELLOW)];
|
|
35
|
-
for (const entry of entries) lines.push(withTagColor(`- ${entry}`, TAG_COLORS.RED));
|
|
36
|
-
return lines.join("\n");
|
|
37
|
-
}
|
|
38
|
-
function formatSummary(result) {
|
|
39
|
-
const isDryRun = result.mode === "dry-run";
|
|
40
|
-
const summaryPrefix = isDryRun ? "[tag:dry-run]" : "[tag]";
|
|
41
|
-
const versionSuffix = result.versionSummary === "mixed" && result.distinctVersions.length > 0 ? ` [${result.distinctVersions.join(", ")}]` : "";
|
|
42
|
-
const summaryColor = result.targetResults.some((targetResult) => targetResult.runError !== null) || result.hookError !== null ? TAG_COLORS.RED : isDryRun ? TAG_COLORS.YELLOW : TAG_COLORS.GREEN;
|
|
43
|
-
const lines = [withTagColor(`${summaryPrefix} version=${result.versionSummary}${versionSuffix} files=${result.filesChanged}/${result.filesScanned} declarations=${result.taggedDeclarations}`, summaryColor)];
|
|
44
|
-
if (result.skippedPackages.length > 0) lines.push(`[tag] Skipped: ${result.skippedPackages.length} package(s)`);
|
|
45
|
-
return lines.join("\n");
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Prints tag sync output and returns a process exit code (0 success, 1 when empty targets or hook/run errors).
|
|
49
|
-
*/ function presentTagSyncCliResult(logger, tagResult, rootDir) {
|
|
50
|
-
logger.out(formatTargetTable(tagResult.selectedTargets, rootDir));
|
|
51
|
-
if (tagResult.selectedTargets.length === 0) {
|
|
52
|
-
logger.err("No packages found in workspace. Check your pnpm-workspace.yaml or provide an explicit target path.");
|
|
53
|
-
return 1;
|
|
54
|
-
}
|
|
55
|
-
const warningsAndErrorsSection = formatWarningsAndErrors(tagResult);
|
|
56
|
-
if (warningsAndErrorsSection) logger.err(warningsAndErrorsSection);
|
|
57
|
-
logger.out(formatSummary(tagResult));
|
|
58
|
-
return exitCodeForTagSyncResult(tagResult);
|
|
59
|
-
}
|
|
60
|
-
//#endregion
|
|
61
|
-
export { formatProgress, presentTagSyncCliResult };
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { CliLoggerToken } from "../core/contracts/tokens.mjs";
|
|
2
|
-
import { withOptionalPortTelemetry } from "../core/infrastructure/port-telemetry.decorator.mjs";
|
|
3
|
-
import { InfrastructureModule } from "../core/infrastructure/infrastructure.module.mjs";
|
|
4
|
-
import { PrepareTagSyncUseCaseToken, RunTagSyncUseCaseToken, TagSinceWriterPortToken, TagTargetResolverPortToken, TagVersionResolverPortToken, TypeScriptTreeWalkPortToken } from "./contracts/tokens.mjs";
|
|
5
|
-
import { TagSinceWriterAdapter as _TagSinceWriterAdapter } from "./adapters/secondary/tag-since-writer.adapter.mjs";
|
|
6
|
-
import { TagTargetResolverAdapter as _TagTargetResolverAdapter } from "./adapters/secondary/tag-target-resolver.adapter.mjs";
|
|
7
|
-
import { TagVersionResolverAdapter as _TagVersionResolverAdapter } from "./adapters/secondary/tag-version-resolver.adapter.mjs";
|
|
8
|
-
import { TypeScriptTreeWalkAdapter as _TypeScriptTreeWalkAdapter } from "./adapters/secondary/typescript-tree-walk.adapter.mjs";
|
|
9
|
-
import { RunTagSyncUseCaseImpl as _RunTagSyncUseCaseImpl } from "./application/use-cases/run-tag-sync.use-case.mjs";
|
|
10
|
-
import { PrepareTagSyncUseCaseImpl as _PrepareTagSyncUseCaseImpl } from "./application/use-cases/prepare-tag-sync.use-case.mjs";
|
|
11
|
-
import { Module } from "@codefast/di";
|
|
12
|
-
//#region src/lib/tag/tag.module.ts
|
|
13
|
-
const TagModule = Module.create("cli-tag", (moduleBuilder) => {
|
|
14
|
-
moduleBuilder.import(InfrastructureModule);
|
|
15
|
-
moduleBuilder.bind(TagTargetResolverPortToken).to(_TagTargetResolverAdapter).singleton().onActivation((ctx, implementation) => withOptionalPortTelemetry("TagTargetResolverPort", implementation, ctx.resolve(CliLoggerToken)));
|
|
16
|
-
moduleBuilder.bind(TypeScriptTreeWalkPortToken).to(_TypeScriptTreeWalkAdapter).singleton().onActivation((ctx, implementation) => withOptionalPortTelemetry("TypeScriptTreeWalkPort", implementation, ctx.resolve(CliLoggerToken)));
|
|
17
|
-
moduleBuilder.bind(TagSinceWriterPortToken).to(_TagSinceWriterAdapter).singleton().onActivation((ctx, implementation) => withOptionalPortTelemetry("TagSinceWriterPort", implementation, ctx.resolve(CliLoggerToken)));
|
|
18
|
-
moduleBuilder.bind(TagVersionResolverPortToken).to(_TagVersionResolverAdapter).singleton().onActivation((ctx, implementation) => withOptionalPortTelemetry("TagVersionResolverPort", implementation, ctx.resolve(CliLoggerToken)));
|
|
19
|
-
moduleBuilder.bind(PrepareTagSyncUseCaseToken).to(_PrepareTagSyncUseCaseImpl).singleton();
|
|
20
|
-
moduleBuilder.bind(RunTagSyncUseCaseToken).to(_RunTagSyncUseCaseImpl).singleton();
|
|
21
|
-
});
|
|
22
|
-
//#endregion
|
|
23
|
-
export { TagModule };
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|