@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
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CliFilesystemPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
2
2
|
import { resolvePackageDisplayName } from "../../domain/package-display-name.policy.mjs";
|
|
3
|
-
import { writePackageJsonExportsAtomic } from "
|
|
3
|
+
import { writePackageJsonExportsAtomic } from "../package-json-exports.repository.mjs";
|
|
4
4
|
import { inject, injectable } from "@codefast/di";
|
|
5
|
-
//#region src/
|
|
5
|
+
//#region src/domains/mirror/infrastructure/adapters/package-repository.adapter.ts
|
|
6
6
|
function toPrimitive(input, hint) {
|
|
7
7
|
if (typeof input !== "object" || input === null) return input;
|
|
8
8
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -213,7 +213,7 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
213
213
|
};
|
|
214
214
|
}
|
|
215
215
|
let _dec, _initClass;
|
|
216
|
-
_dec = injectable([inject(
|
|
216
|
+
_dec = injectable([inject(CliFilesystemPortToken)]);
|
|
217
217
|
let _PackageRepositoryAdapter;
|
|
218
218
|
(class {
|
|
219
219
|
fs;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { messageFromCaughtUnknown } from "
|
|
3
|
-
import { FileSystemServicePortToken, MirrorSyncReporterPortToken, PackageRepositoryPortToken } from "../../contracts/tokens.mjs";
|
|
1
|
+
import { CliFilesystemPortToken, CliPathPortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
2
|
+
import { messageFromCaughtUnknown } from "../../../../shell/domain/caught-unknown-message.value-object.mjs";
|
|
4
3
|
import { DIST_DIR, PACKAGE_JSON } from "../../domain/constants.domain.mjs";
|
|
5
|
-
import { createPathTransform, generateExports } from "../../
|
|
4
|
+
import { createPathTransform, generateExports } from "../../domain/generate-mirror-exports.domain-service.mjs";
|
|
5
|
+
import { FileSystemServicePortToken, PackageRepositoryPortToken } from "../../composition/tokens.mjs";
|
|
6
6
|
import { inject, injectable } from "@codefast/di";
|
|
7
|
-
//#region src/
|
|
7
|
+
//#region src/domains/mirror/infrastructure/adapters/sync-workspace-package.adapter.ts
|
|
8
8
|
function toPrimitive(input, hint) {
|
|
9
9
|
if (typeof input !== "object" || input === null) return input;
|
|
10
10
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -215,21 +215,11 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
215
215
|
};
|
|
216
216
|
}
|
|
217
217
|
let _dec, _initClass;
|
|
218
|
-
function resolvePackageScopedConfig(configMap, packageMeta) {
|
|
219
|
-
if (!configMap) return;
|
|
220
|
-
return configMap[packageMeta.packageName];
|
|
221
|
-
}
|
|
222
|
-
function isPackageSkipped(skipPackagesList, packageMeta) {
|
|
223
|
-
if (!skipPackagesList) return false;
|
|
224
|
-
return skipPackagesList.includes(packageMeta.packageName);
|
|
225
|
-
}
|
|
226
218
|
_dec = injectable([
|
|
227
|
-
inject(
|
|
228
|
-
inject(
|
|
219
|
+
inject(CliFilesystemPortToken),
|
|
220
|
+
inject(CliPathPortToken),
|
|
229
221
|
inject(PackageRepositoryPortToken),
|
|
230
|
-
inject(FileSystemServicePortToken)
|
|
231
|
-
inject(CliLoggerToken),
|
|
232
|
-
inject(MirrorSyncReporterPortToken)
|
|
222
|
+
inject(FileSystemServicePortToken)
|
|
233
223
|
]);
|
|
234
224
|
let _SyncWorkspacePackageAdapter;
|
|
235
225
|
(class {
|
|
@@ -237,20 +227,16 @@ let _SyncWorkspacePackageAdapter;
|
|
|
237
227
|
pathService;
|
|
238
228
|
packageRepository;
|
|
239
229
|
fileSystemService;
|
|
240
|
-
logger;
|
|
241
|
-
mirrorReporter;
|
|
242
230
|
static {
|
|
243
231
|
({c: [_SyncWorkspacePackageAdapter, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
244
232
|
}
|
|
245
|
-
constructor(fs, pathService, packageRepository, fileSystemService
|
|
233
|
+
constructor(fs, pathService, packageRepository, fileSystemService) {
|
|
246
234
|
this.fs = fs;
|
|
247
235
|
this.pathService = pathService;
|
|
248
236
|
this.packageRepository = packageRepository;
|
|
249
237
|
this.fileSystemService = fileSystemService;
|
|
250
|
-
this.logger = logger;
|
|
251
|
-
this.mirrorReporter = mirrorReporter;
|
|
252
238
|
}
|
|
253
|
-
async syncExportsForWorkspacePackage(rootDir, packagePathStr,
|
|
239
|
+
async syncExportsForWorkspacePackage(rootDir, packagePathStr, config) {
|
|
254
240
|
const packageDir = this.pathService.resolve(rootDir, packagePathStr);
|
|
255
241
|
const distDir = this.pathService.join(packageDir, DIST_DIR);
|
|
256
242
|
const packageJsonPath = this.pathService.join(packageDir, PACKAGE_JSON);
|
|
@@ -266,13 +252,12 @@ let _SyncWorkspacePackageAdapter;
|
|
|
266
252
|
cssConfigStatus: "",
|
|
267
253
|
skipped: false,
|
|
268
254
|
skipReason: "",
|
|
269
|
-
error: null
|
|
255
|
+
error: null,
|
|
256
|
+
prunedExportKeys: []
|
|
270
257
|
};
|
|
271
258
|
if (!this.fs.existsSync(packageJsonPath)) {
|
|
272
259
|
pkgStats.skipped = true;
|
|
273
260
|
pkgStats.skipReason = "package.json not found";
|
|
274
|
-
stats.packagesSkipped++;
|
|
275
|
-
if (!suppressMirrorLogs) this.mirrorReporter.logSkippedWorkspacePackage(this.logger, index, total, folderBasename, pkgStats.skipReason);
|
|
276
261
|
return pkgStats;
|
|
277
262
|
}
|
|
278
263
|
let packageJsonParseError;
|
|
@@ -286,63 +271,55 @@ let _SyncWorkspacePackageAdapter;
|
|
|
286
271
|
packageJsonParseError = caughtError;
|
|
287
272
|
}
|
|
288
273
|
const packageMeta = { packageName: pkgStats.name };
|
|
289
|
-
if (isPackageSkipped(config.skipPackages, packageMeta)) {
|
|
274
|
+
if (this.isPackageSkipped(config.skipPackages, packageMeta)) {
|
|
290
275
|
pkgStats.skipped = true;
|
|
291
276
|
pkgStats.skipReason = "configured to skip";
|
|
292
|
-
stats.packagesSkipped++;
|
|
293
|
-
if (!suppressMirrorLogs) this.mirrorReporter.logSkippedWorkspacePackage(this.logger, index, total, pkgStats.name, pkgStats.skipReason);
|
|
294
277
|
return pkgStats;
|
|
295
278
|
}
|
|
296
279
|
if (packageJsonParseError !== void 0) {
|
|
297
280
|
if (!this.fs.existsSync(distDir)) {
|
|
298
281
|
pkgStats.skipped = true;
|
|
299
282
|
pkgStats.skipReason = "dist/ not found";
|
|
300
|
-
stats.packagesSkipped++;
|
|
301
|
-
if (!suppressMirrorLogs) this.mirrorReporter.logSkippedWorkspacePackage(this.logger, index, total, pkgStats.name, pkgStats.skipReason);
|
|
302
283
|
return pkgStats;
|
|
303
284
|
}
|
|
304
285
|
pkgStats.error = messageFromCaughtUnknown(packageJsonParseError);
|
|
305
|
-
stats.packagesErrored++;
|
|
306
|
-
if (!suppressMirrorLogs) this.mirrorReporter.logPackageError(this.logger, index, total, pkgStats.name, packageJsonParseError, verbose);
|
|
307
286
|
return pkgStats;
|
|
308
287
|
}
|
|
309
288
|
if (!this.fs.existsSync(distDir)) {
|
|
310
289
|
pkgStats.skipped = true;
|
|
311
290
|
pkgStats.skipReason = "dist/ not found";
|
|
312
|
-
stats.packagesSkipped++;
|
|
313
|
-
if (!suppressMirrorLogs) this.mirrorReporter.logSkippedWorkspacePackage(this.logger, index, total, pkgStats.name, pkgStats.skipReason);
|
|
314
291
|
return pkgStats;
|
|
315
292
|
}
|
|
316
293
|
try {
|
|
317
294
|
const pathTransform = createPathTransform(config, packageMeta);
|
|
318
295
|
pkgStats.hasTransform = !!pathTransform;
|
|
319
|
-
const cssConfig = resolvePackageScopedConfig(config.cssExports, packageMeta);
|
|
296
|
+
const cssConfig = this.resolvePackageScopedConfig(config.cssExports, packageMeta);
|
|
320
297
|
if (cssConfig === false) pkgStats.cssConfigStatus = "disabled";
|
|
321
298
|
else if (cssConfig !== void 0) pkgStats.cssConfigStatus = "configured";
|
|
322
|
-
const customExports = resolvePackageScopedConfig(config.customExports, packageMeta) || {};
|
|
299
|
+
const customExports = this.resolvePackageScopedConfig(config.customExports, packageMeta) || {};
|
|
323
300
|
const generatedExports = await generateExports(this.pathService, this.fileSystemService, distDir, pathTransform, cssConfig, customExports);
|
|
324
301
|
const { prunedKeys } = await this.packageRepository.writePackageJsonExportsAtomic(packageJsonPath, {
|
|
325
302
|
generatedExports: generatedExports.exports,
|
|
326
303
|
managedExportSpecifiers: Object.keys(generatedExports.exports),
|
|
327
304
|
originalPathBySpecifier: generatedExports.originalPathBySpecifier
|
|
328
305
|
});
|
|
329
|
-
for (const exportSpecifier of prunedKeys) if (!suppressMirrorLogs) this.mirrorReporter.logPrunedStaleExport(this.logger, exportSpecifier);
|
|
330
306
|
pkgStats.jsModules = generatedExports.jsCount;
|
|
331
307
|
pkgStats.cssExports = generatedExports.cssCount;
|
|
332
308
|
pkgStats.customExports = Object.keys(customExports).length;
|
|
333
309
|
pkgStats.totalExports = Object.keys(generatedExports.exports).length;
|
|
334
|
-
|
|
335
|
-
stats.totalExports += pkgStats.totalExports;
|
|
336
|
-
stats.totalJsModules += pkgStats.jsModules;
|
|
337
|
-
stats.totalCssExports += pkgStats.cssExports;
|
|
338
|
-
if (!suppressMirrorLogs) this.mirrorReporter.logPackageSuccess(this.logger, index, total, pkgStats, generatedExports, verbose);
|
|
310
|
+
pkgStats.prunedExportKeys = prunedKeys;
|
|
339
311
|
} catch (caughtError) {
|
|
340
312
|
pkgStats.error = messageFromCaughtUnknown(caughtError);
|
|
341
|
-
stats.packagesErrored++;
|
|
342
|
-
if (!suppressMirrorLogs) this.mirrorReporter.logPackageError(this.logger, index, total, pkgStats.name, caughtError, verbose);
|
|
343
313
|
}
|
|
344
314
|
return pkgStats;
|
|
345
315
|
}
|
|
316
|
+
resolvePackageScopedConfig(configMap, packageMeta) {
|
|
317
|
+
if (!configMap) return;
|
|
318
|
+
return configMap[packageMeta.packageName];
|
|
319
|
+
}
|
|
320
|
+
isPackageSkipped(skipPackagesList, packageMeta) {
|
|
321
|
+
return !!skipPackagesList?.includes(packageMeta.packageName);
|
|
322
|
+
}
|
|
346
323
|
static {
|
|
347
324
|
_initClass();
|
|
348
325
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region src/
|
|
1
|
+
//#region src/domains/mirror/infrastructure/guards/dirent-list.guard.ts
|
|
2
2
|
/**
|
|
3
3
|
* Narrow `fs.promises.readdir` overload result to `Dirent[]` when `withFileTypes: true`.
|
|
4
4
|
* Accepts both historical checks (`isFile` / `isDirectory`) in one guard.
|
|
@@ -1,36 +1,36 @@
|
|
|
1
|
-
import { messageFromCaughtUnknown } from "
|
|
1
|
+
import { messageFromCaughtUnknown } from "../../../shell/domain/caught-unknown-message.value-object.mjs";
|
|
2
2
|
import { MirrorError, MirrorErrorCode } from "../domain/errors.domain.mjs";
|
|
3
3
|
import { PACKAGE_JSON_EXPORT } from "../domain/constants.domain.mjs";
|
|
4
|
-
//#region src/
|
|
5
|
-
function containsDistTarget(value) {
|
|
6
|
-
if (typeof value === "string") return value.startsWith("./dist/");
|
|
7
|
-
if (Array.isArray(value)) return value.some((entryValue) => containsDistTarget(entryValue));
|
|
8
|
-
if (value && typeof value === "object") return Object.values(value).some((entryValue) => containsDistTarget(entryValue));
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Keep `./package.json` at the very end for aesthetics by default.
|
|
13
|
-
* If a catch-all `./*` exists, move `./package.json` before wildcards so it remains reachable.
|
|
14
|
-
*/ function exportSpecifierRank(exportSpecifier, hasCatchAllWildcard) {
|
|
15
|
-
if (exportSpecifier === ".") return 0;
|
|
16
|
-
if (exportSpecifier === "./package.json") return hasCatchAllWildcard ? 2 : 4;
|
|
17
|
-
if (exportSpecifier.includes("*")) return 3;
|
|
18
|
-
return 1;
|
|
19
|
-
}
|
|
20
|
-
function compareExportSpecifiers(leftSpecifier, rightSpecifier, originalPathBySpecifier, hasCatchAllWildcard) {
|
|
21
|
-
const leftRank = exportSpecifierRank(leftSpecifier, hasCatchAllWildcard);
|
|
22
|
-
const rightRank = exportSpecifierRank(rightSpecifier, hasCatchAllWildcard);
|
|
23
|
-
if (leftRank !== rightRank) return leftRank - rightRank;
|
|
24
|
-
const leftOriginalPath = originalPathBySpecifier[leftSpecifier] ?? leftSpecifier;
|
|
25
|
-
const rightOriginalPath = originalPathBySpecifier[rightSpecifier] ?? rightSpecifier;
|
|
26
|
-
const originalPathComparison = leftOriginalPath.localeCompare(rightOriginalPath);
|
|
27
|
-
if (originalPathComparison !== 0) return originalPathComparison;
|
|
28
|
-
return leftSpecifier.localeCompare(rightSpecifier);
|
|
29
|
-
}
|
|
4
|
+
//#region src/domains/mirror/infrastructure/package-json-exports.repository.ts
|
|
30
5
|
/**
|
|
31
6
|
* Writes `exports` into `package.json` via a temp file + rename (atomic on same volume).
|
|
32
7
|
* Preserves a trailing newline after JSON.
|
|
33
8
|
*/ async function writePackageJsonExportsAtomic(fs, packageJsonPath, mergeInput) {
|
|
9
|
+
function containsDistTarget(value) {
|
|
10
|
+
if (typeof value === "string") return value.startsWith("./dist/");
|
|
11
|
+
if (Array.isArray(value)) return value.some((entryValue) => containsDistTarget(entryValue));
|
|
12
|
+
if (value && typeof value === "object") return Object.values(value).some((entryValue) => containsDistTarget(entryValue));
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Keep `./package.json` at the very end for aesthetics by default.
|
|
17
|
+
* If a catch-all `./*` exists, move `./package.json` before wildcards so it remains reachable.
|
|
18
|
+
*/ function exportSpecifierRank(exportSpecifier, hasCatchAllWildcard) {
|
|
19
|
+
if (exportSpecifier === ".") return 0;
|
|
20
|
+
if (exportSpecifier === "./package.json") return hasCatchAllWildcard ? 2 : 4;
|
|
21
|
+
if (exportSpecifier.includes("*")) return 3;
|
|
22
|
+
return 1;
|
|
23
|
+
}
|
|
24
|
+
function compareExportSpecifiers(leftSpecifier, rightSpecifier, pathBySpecifier, hasCatchAllWildcard) {
|
|
25
|
+
const leftRank = exportSpecifierRank(leftSpecifier, hasCatchAllWildcard);
|
|
26
|
+
const rightRank = exportSpecifierRank(rightSpecifier, hasCatchAllWildcard);
|
|
27
|
+
if (leftRank !== rightRank) return leftRank - rightRank;
|
|
28
|
+
const leftOriginalPath = pathBySpecifier[leftSpecifier] ?? leftSpecifier;
|
|
29
|
+
const rightOriginalPath = pathBySpecifier[rightSpecifier] ?? rightSpecifier;
|
|
30
|
+
const originalPathComparison = leftOriginalPath.localeCompare(rightOriginalPath);
|
|
31
|
+
if (originalPathComparison !== 0) return originalPathComparison;
|
|
32
|
+
return leftSpecifier.localeCompare(rightSpecifier);
|
|
33
|
+
}
|
|
34
34
|
const raw = await fs.readFile(packageJsonPath, "utf8");
|
|
35
35
|
const packageJson = JSON.parse(raw);
|
|
36
36
|
const existingExports = packageJson.exports;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { createOptionalCliPortTelemetryActivation } from "../../shell/wiring/optional-cli-port-telemetry-activation.mjs";
|
|
2
|
+
import { ShellInfrastructureModule } from "../../shell/shell.module.mjs";
|
|
3
|
+
import { FileSystemServiceAdapter as _FileSystemServiceAdapter } from "./infrastructure/adapters/file-system-service.adapter.mjs";
|
|
4
|
+
import { MirrorSyncReporterAdapter as _MirrorSyncReporterAdapter } from "./infrastructure/adapters/mirror-sync-reporter.adapter.mjs";
|
|
5
|
+
import { PackageRepositoryAdapter as _PackageRepositoryAdapter } from "./infrastructure/adapters/package-repository.adapter.mjs";
|
|
6
|
+
import { FileSystemServicePortToken, MirrorPackagePathPortToken, MirrorSyncReporterPortToken, PackageRepositoryPortToken, PrepareMirrorSyncUseCaseToken, PresentMirrorSyncProgressPresenterToken, RunMirrorSyncUseCaseToken, SyncWorkspacePackagePortToken } from "./composition/tokens.mjs";
|
|
7
|
+
import { SyncWorkspacePackageAdapter as _SyncWorkspacePackageAdapter } from "./infrastructure/adapters/sync-workspace-package.adapter.mjs";
|
|
8
|
+
import { MirrorPackagePathResolverAdapter as _MirrorPackagePathResolverAdapter } from "./infrastructure/adapters/mirror-package-path-resolver.adapter.mjs";
|
|
9
|
+
import { PrepareMirrorSyncUseCase as _PrepareMirrorSyncUseCase } from "./application/use-cases/prepare-mirror-sync.use-case.mjs";
|
|
10
|
+
import { RunMirrorSyncUseCase as _RunMirrorSyncUseCase } from "./application/use-cases/run-mirror-sync.use-case.mjs";
|
|
11
|
+
import { PresentMirrorSyncPresenter as _PresentMirrorSyncPresenter } from "./presentation/presenters/present-mirror-sync-progress.presenter.mjs";
|
|
12
|
+
import { Module } from "@codefast/di";
|
|
13
|
+
//#region src/domains/mirror/mirror.module.ts
|
|
14
|
+
const MirrorModule = Module.create("cli-mirror", (moduleBuilder) => {
|
|
15
|
+
moduleBuilder.import(ShellInfrastructureModule);
|
|
16
|
+
moduleBuilder.bind(MirrorPackagePathPortToken).to(_MirrorPackagePathResolverAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(MirrorPackagePathPortToken));
|
|
17
|
+
moduleBuilder.bind(PackageRepositoryPortToken).to(_PackageRepositoryAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(PackageRepositoryPortToken));
|
|
18
|
+
moduleBuilder.bind(FileSystemServicePortToken).to(_FileSystemServiceAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(FileSystemServicePortToken));
|
|
19
|
+
moduleBuilder.bind(MirrorSyncReporterPortToken).to(_MirrorSyncReporterAdapter).singleton().onActivation(createOptionalCliPortTelemetryActivation(MirrorSyncReporterPortToken));
|
|
20
|
+
moduleBuilder.bind(SyncWorkspacePackagePortToken).to(_SyncWorkspacePackageAdapter).singleton();
|
|
21
|
+
moduleBuilder.bind(PresentMirrorSyncProgressPresenterToken).to(_PresentMirrorSyncPresenter).singleton();
|
|
22
|
+
moduleBuilder.bind(PrepareMirrorSyncUseCaseToken).to(_PrepareMirrorSyncUseCase).singleton();
|
|
23
|
+
moduleBuilder.bind(RunMirrorSyncUseCaseToken).to(_RunMirrorSyncUseCase).singleton();
|
|
24
|
+
});
|
|
25
|
+
//#endregion
|
|
26
|
+
export { MirrorModule };
|
package/dist/{lib/mirror/adapters/primary → domains/mirror/presentation}/cli/mirror.command.mjs
RENAMED
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import "../../../../
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { mirrorSyncRunRequestSchema } from "
|
|
7
|
-
import { parseGlobalCliOptions } from "../../../../core/application/services/global-cli-options-parser.service.mjs";
|
|
1
|
+
import { CliExecutorToken, CliLoggerPortToken, CliRuntimeToken, CliSchemaParsingToken, GlobalCliOptionsParsePortToken } from "../../../../shell/application/cli-runtime.tokens.mjs";
|
|
2
|
+
import { PrepareMirrorSyncUseCaseToken, PresentMirrorSyncProgressPresenterToken, RunMirrorSyncUseCaseToken } from "../../composition/tokens.mjs";
|
|
3
|
+
import { CLI_COMMAND_SLOT_NAME } from "../../../../shell/contracts/cli-command-slots.mjs";
|
|
4
|
+
import { readOptionalPositionalArg } from "../../../../shell/domain/cli-positional-arg.value-object.mjs";
|
|
5
|
+
import { exitCodeForMirrorSyncResult, formatMirrorSyncJsonOutput } from "../../application/mirror-sync-cli-result.mjs";
|
|
6
|
+
import { mirrorSyncRunRequestSchema } from "../presenters/mirror-cli.schema.mjs";
|
|
8
7
|
import { inject, injectable } from "@codefast/di";
|
|
9
|
-
//#region src/
|
|
8
|
+
//#region src/domains/mirror/presentation/cli/mirror.command.ts
|
|
10
9
|
function toPrimitive(input, hint) {
|
|
11
10
|
if (typeof input !== "object" || input === null) return input;
|
|
12
11
|
var prim = input[Symbol.toPrimitive];
|
|
@@ -218,10 +217,14 @@ function _apply_decs_2311(targetClass, classDecs, memberDecs, classDecsHaveThis,
|
|
|
218
217
|
}
|
|
219
218
|
let _dec, _initClass;
|
|
220
219
|
_dec = injectable([
|
|
221
|
-
inject(
|
|
220
|
+
inject(CliLoggerPortToken),
|
|
222
221
|
inject(CliRuntimeToken),
|
|
223
222
|
inject(PrepareMirrorSyncUseCaseToken),
|
|
224
|
-
inject(RunMirrorSyncUseCaseToken)
|
|
223
|
+
inject(RunMirrorSyncUseCaseToken),
|
|
224
|
+
inject(GlobalCliOptionsParsePortToken),
|
|
225
|
+
inject(CliSchemaParsingToken),
|
|
226
|
+
inject(CliExecutorToken),
|
|
227
|
+
inject(PresentMirrorSyncProgressPresenterToken)
|
|
225
228
|
]);
|
|
226
229
|
let _MirrorCommand;
|
|
227
230
|
(class {
|
|
@@ -229,40 +232,93 @@ let _MirrorCommand;
|
|
|
229
232
|
runtime;
|
|
230
233
|
prepareMirrorSync;
|
|
231
234
|
runMirrorSync;
|
|
235
|
+
globalCliOptions;
|
|
236
|
+
schemaValidation;
|
|
237
|
+
cliExecutor;
|
|
238
|
+
mirrorProgressPresenter;
|
|
232
239
|
static {
|
|
233
240
|
({c: [_MirrorCommand, _initClass]} = _apply_decs_2311(this, [_dec], []));
|
|
234
241
|
}
|
|
235
|
-
constructor(logger, runtime, prepareMirrorSync, runMirrorSync) {
|
|
242
|
+
constructor(logger, runtime, prepareMirrorSync, runMirrorSync, globalCliOptions, schemaValidation, cliExecutor, mirrorProgressPresenter) {
|
|
236
243
|
this.logger = logger;
|
|
237
244
|
this.runtime = runtime;
|
|
238
245
|
this.prepareMirrorSync = prepareMirrorSync;
|
|
239
246
|
this.runMirrorSync = runMirrorSync;
|
|
247
|
+
this.globalCliOptions = globalCliOptions;
|
|
248
|
+
this.schemaValidation = schemaValidation;
|
|
249
|
+
this.cliExecutor = cliExecutor;
|
|
250
|
+
this.mirrorProgressPresenter = mirrorProgressPresenter;
|
|
240
251
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
252
|
+
get definition() {
|
|
253
|
+
return {
|
|
254
|
+
name: CLI_COMMAND_SLOT_NAME.mirror,
|
|
255
|
+
description: "Keep package manifests aligned with what you ship",
|
|
256
|
+
children: [{
|
|
257
|
+
name: "sync",
|
|
258
|
+
description: "Write package.json exports from dist/ for workspace packages",
|
|
259
|
+
route: [
|
|
260
|
+
{
|
|
261
|
+
kind: "optionalPositional",
|
|
262
|
+
argumentTemplate: "[package]",
|
|
263
|
+
helpBlurb: "Optional package path relative to repo root (e.g. packages/ui)"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
kind: "booleanFlag",
|
|
267
|
+
flagPhrase: "-v, --verbose",
|
|
268
|
+
helpBlurb: "Print extra diagnostics",
|
|
269
|
+
whenUnsetUses: false
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
kind: "booleanFlag",
|
|
273
|
+
flagPhrase: "--json",
|
|
274
|
+
helpBlurb: "Print one JSON summary on stdout (suppresses human progress)",
|
|
275
|
+
whenUnsetUses: false
|
|
276
|
+
}
|
|
277
|
+
],
|
|
278
|
+
action: async (_positionalPieces, typedLocalOptionsCarrier, globalsBridge) => {
|
|
279
|
+
await this.runSynchronizedMirrorLeaf(readOptionalPositionalArg(_positionalPieces[0]), {
|
|
280
|
+
verbose: typedLocalOptionsCarrier.verbose,
|
|
281
|
+
json: typedLocalOptionsCarrier.json
|
|
282
|
+
}, globalsBridge.readMergedGlobalsOptionRecords());
|
|
283
|
+
}
|
|
284
|
+
}]
|
|
285
|
+
};
|
|
245
286
|
}
|
|
246
|
-
async
|
|
247
|
-
const globalOptionsOutcome = parseGlobalCliOptions(
|
|
248
|
-
if (!consumeCliAppError(
|
|
287
|
+
async runSynchronizedMirrorLeaf(packageRelativePathPiece, branchOptionsCarrier, globalsOptionCarrier) {
|
|
288
|
+
const globalOptionsOutcome = this.globalCliOptions.parseGlobalCliOptions(globalsOptionCarrier);
|
|
289
|
+
if (!this.cliExecutor.consumeCliAppError(globalOptionsOutcome)) return;
|
|
249
290
|
const prelude = await this.prepareMirrorSync.execute({
|
|
250
291
|
currentWorkingDirectory: this.runtime.cwd(),
|
|
251
|
-
packageArg:
|
|
292
|
+
packageArg: packageRelativePathPiece,
|
|
252
293
|
globals: globalOptionsOutcome.value
|
|
253
294
|
});
|
|
254
|
-
if (!consumeCliAppError(
|
|
255
|
-
const { rootDir, config, packageFilter
|
|
256
|
-
const parsed =
|
|
295
|
+
if (!this.cliExecutor.consumeCliAppError(prelude)) return;
|
|
296
|
+
const { rootDir, config, packageFilter } = prelude.value;
|
|
297
|
+
const parsed = this.schemaValidation.parseWithSchema(mirrorSyncRunRequestSchema, {
|
|
257
298
|
rootDir,
|
|
258
299
|
config: config.mirror ?? {},
|
|
259
|
-
verbose: options.verbose,
|
|
260
|
-
json: options.json,
|
|
261
|
-
noColor: globals.color === false,
|
|
262
300
|
packageFilter
|
|
263
301
|
});
|
|
264
|
-
if (!consumeCliAppError(
|
|
265
|
-
|
|
302
|
+
if (!this.cliExecutor.consumeCliAppError(parsed)) return;
|
|
303
|
+
const json = !!branchOptionsCarrier.json;
|
|
304
|
+
const noColor = globalOptionsOutcome.value.color === false;
|
|
305
|
+
const verbose = !!branchOptionsCarrier.verbose;
|
|
306
|
+
let listener;
|
|
307
|
+
if (!json) {
|
|
308
|
+
this.mirrorProgressPresenter.configure({
|
|
309
|
+
noColor,
|
|
310
|
+
verbose
|
|
311
|
+
});
|
|
312
|
+
listener = this.mirrorProgressPresenter;
|
|
313
|
+
}
|
|
314
|
+
const startTime = performance.now();
|
|
315
|
+
const outcome = await this.runMirrorSync.execute({
|
|
316
|
+
...parsed.value,
|
|
317
|
+
listener
|
|
318
|
+
});
|
|
319
|
+
if (!this.cliExecutor.consumeCliAppError(outcome)) return;
|
|
320
|
+
if (json) this.logger.out(formatMirrorSyncJsonOutput(outcome.value, (performance.now() - startTime) / 1e3));
|
|
321
|
+
this.runtime.setExitCode(exitCodeForMirrorSyncResult(outcome.value));
|
|
266
322
|
}
|
|
267
323
|
static {
|
|
268
324
|
_initClass();
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
//#region src/
|
|
2
|
+
//#region src/domains/mirror/presentation/presenters/mirror-cli.schema.ts
|
|
3
3
|
const mirrorSyncRunRequestSchema = z.object({
|
|
4
4
|
rootDir: z.string().min(1),
|
|
5
|
-
verbose: z.boolean().optional(),
|
|
6
|
-
noColor: z.boolean().optional(),
|
|
7
|
-
json: z.boolean().optional(),
|
|
8
5
|
packageFilter: z.string().optional(),
|
|
9
6
|
config: z.unknown().optional()
|
|
10
7
|
});
|