@codefast/cli 0.5.0-canary.4 → 0.5.0-canary.6
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 +106 -480
- package/dist/arrange/analyze.js +25 -0
- package/dist/arrange/analyze.js.map +1 -0
- package/dist/arrange/cli-schema.js +29 -0
- package/dist/arrange/cli-schema.js.map +1 -0
- package/dist/arrange/command.js +170 -0
- package/dist/arrange/command.js.map +1 -0
- package/dist/arrange/domain/analyze-service.js +122 -0
- package/dist/arrange/domain/analyze-service.js.map +1 -0
- package/dist/arrange/domain/ast/ast-node.js +240 -0
- package/dist/arrange/domain/ast/ast-node.js.map +1 -0
- package/dist/arrange/domain/ast/collectors-cn.js +81 -0
- package/dist/arrange/domain/ast/collectors-cn.js.map +1 -0
- package/dist/arrange/domain/ast/collectors-jsx.js +24 -0
- package/dist/arrange/domain/ast/collectors-jsx.js.map +1 -0
- package/dist/arrange/domain/ast/collectors-tv.js +319 -0
- package/dist/arrange/domain/ast/collectors-tv.js.map +1 -0
- package/dist/arrange/domain/ast/helpers.js +151 -0
- package/dist/arrange/domain/ast/helpers.js.map +1 -0
- package/dist/arrange/domain/ast/simplify-targets.js +161 -0
- package/dist/arrange/domain/ast/simplify-targets.js.map +1 -0
- package/dist/arrange/domain/ast/targets.js +182 -0
- package/dist/arrange/domain/ast/targets.js.map +1 -0
- package/dist/arrange/domain/constants.js +225 -0
- package/dist/arrange/domain/constants.js.map +1 -0
- package/dist/arrange/domain/grouping-service.js +128 -0
- package/dist/arrange/domain/grouping-service.js.map +1 -0
- package/dist/arrange/domain/grouping.js +435 -0
- package/dist/arrange/domain/grouping.js.map +1 -0
- package/dist/arrange/domain/imports.js +160 -0
- package/dist/arrange/domain/imports.js.map +1 -0
- package/dist/arrange/domain/source-text-formatters.js +100 -0
- package/dist/arrange/domain/source-text-formatters.js.map +1 -0
- package/dist/arrange/domain/tailwind-token.js +50 -0
- package/dist/arrange/domain/tailwind-token.js.map +1 -0
- package/dist/arrange/domain/token-classifier.js +448 -0
- package/dist/arrange/domain/token-classifier.js.map +1 -0
- package/dist/arrange/domain/types.js +11 -0
- package/dist/arrange/domain/types.js.map +1 -0
- package/dist/arrange/output.js +120 -0
- package/dist/arrange/output.js.map +1 -0
- package/dist/arrange/process-file.js +44 -0
- package/dist/arrange/process-file.js.map +1 -0
- package/dist/arrange/resolve-target.js +33 -0
- package/dist/arrange/resolve-target.js.map +1 -0
- package/dist/arrange/scan-target.js +30 -0
- package/dist/arrange/scan-target.js.map +1 -0
- package/dist/arrange/simplify-process-file.js +29 -0
- package/dist/arrange/simplify-process-file.js.map +1 -0
- package/dist/arrange/simplify-sync.js +29 -0
- package/dist/arrange/simplify-sync.js.map +1 -0
- package/dist/arrange/source-parse.js +17 -0
- package/dist/arrange/source-parse.js.map +1 -0
- package/dist/arrange/suggest.js +14 -0
- package/dist/arrange/suggest.js.map +1 -0
- package/dist/arrange/sync.js +48 -0
- package/dist/arrange/sync.js.map +1 -0
- package/dist/arrange/typescript-ast-translator.js +455 -0
- package/dist/arrange/typescript-ast-translator.js.map +1 -0
- package/dist/arrange/workspace.js +31 -0
- package/dist/arrange/workspace.js.map +1 -0
- package/dist/audit/cli-schema.js +22 -0
- package/dist/audit/cli-schema.js.map +1 -0
- package/dist/audit/command.js +60 -0
- package/dist/audit/command.js.map +1 -0
- package/dist/audit/domain/audit-file.js +101 -0
- package/dist/audit/domain/audit-file.js.map +1 -0
- package/dist/audit/domain/mappings.js +103 -0
- package/dist/audit/domain/mappings.js.map +1 -0
- package/dist/audit/domain/tokenize.js +83 -0
- package/dist/audit/domain/tokenize.js.map +1 -0
- package/dist/audit/domain/types.js +2 -0
- package/dist/audit/domain/types.js.map +1 -0
- package/dist/audit/output.js +44 -0
- package/dist/audit/output.js.map +1 -0
- package/dist/audit/prepare.js +42 -0
- package/dist/audit/prepare.js.map +1 -0
- package/dist/audit/run.js +57 -0
- package/dist/audit/run.js.map +1 -0
- package/dist/{bin.mjs → bin.js} +2 -4
- package/dist/bin.js.map +1 -0
- package/dist/cli.js +45 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/cli/format-error.js +19 -0
- package/dist/core/cli/format-error.js.map +1 -0
- package/dist/core/cli/global-options.js +10 -0
- package/dist/core/cli/global-options.js.map +1 -0
- package/dist/core/cli/positional.js +9 -0
- package/dist/core/cli/positional.js.map +1 -0
- package/dist/core/cli/result-handle.js +69 -0
- package/dist/core/cli/result-handle.js.map +1 -0
- package/dist/core/config/loader.js +88 -0
- package/dist/core/config/loader.js.map +1 -0
- package/dist/core/config/schema.js +97 -0
- package/dist/core/config/schema.js.map +1 -0
- package/dist/core/config/warnings.js +12 -0
- package/dist/core/config/warnings.js.map +1 -0
- package/dist/core/config.js +18 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/errors.js +58 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/exit-codes.js +15 -0
- package/dist/core/exit-codes.js.map +1 -0
- package/dist/core/filesystem/node.js +33 -0
- package/dist/core/filesystem/node.js.map +1 -0
- package/dist/core/filesystem/port.js +2 -0
- package/dist/core/filesystem/port.js.map +1 -0
- package/dist/core/glob.js +20 -0
- package/dist/core/glob.js.map +1 -0
- package/dist/core/logger.js +13 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/result.js +16 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/schema-parse.js +21 -0
- package/dist/core/schema-parse.js.map +1 -0
- package/dist/core/source-text-edit.js +62 -0
- package/dist/core/source-text-edit.js.map +1 -0
- package/dist/core/verbose-diagnostics.js +9 -0
- package/dist/core/verbose-diagnostics.js.map +1 -0
- package/dist/core/workspace/resolver.js +208 -0
- package/dist/core/workspace/resolver.js.map +1 -0
- package/dist/core/workspace/typescript-walk.js +41 -0
- package/dist/core/workspace/typescript-walk.js.map +1 -0
- package/dist/mirror/cli-result.js +20 -0
- package/dist/mirror/cli-result.js.map +1 -0
- package/dist/mirror/cli-schema.js +11 -0
- package/dist/mirror/cli-schema.js.map +1 -0
- package/dist/mirror/command.js +73 -0
- package/dist/mirror/command.js.map +1 -0
- package/dist/mirror/dist-filesystem-impl.js +53 -0
- package/dist/mirror/dist-filesystem-impl.js.map +1 -0
- package/dist/mirror/domain/constants.js +21 -0
- package/dist/mirror/domain/constants.js.map +1 -0
- package/dist/mirror/domain/dirent-guard.js +16 -0
- package/dist/mirror/domain/dirent-guard.js.map +1 -0
- package/dist/mirror/domain/dist-filesystem.js +2 -0
- package/dist/mirror/domain/dist-filesystem.js.map +1 -0
- package/dist/mirror/domain/errors.js +19 -0
- package/dist/mirror/domain/errors.js.map +1 -0
- package/dist/mirror/domain/exports.js +284 -0
- package/dist/mirror/domain/exports.js.map +1 -0
- package/dist/mirror/domain/package-display-name.js +10 -0
- package/dist/mirror/domain/package-display-name.js.map +1 -0
- package/dist/mirror/domain/path-normalizer.js +8 -0
- package/dist/mirror/domain/path-normalizer.js.map +1 -0
- package/dist/mirror/domain/types.js +2 -0
- package/dist/mirror/domain/types.js.map +1 -0
- package/dist/mirror/output.js +47 -0
- package/dist/mirror/output.js.map +1 -0
- package/dist/mirror/package-path.js +40 -0
- package/dist/mirror/package-path.js.map +1 -0
- package/dist/mirror/prepare.js +37 -0
- package/dist/mirror/prepare.js.map +1 -0
- package/dist/mirror/supplement-exports.js +157 -0
- package/dist/mirror/supplement-exports.js.map +1 -0
- package/dist/mirror/sync-reporter.js +125 -0
- package/dist/mirror/sync-reporter.js.map +1 -0
- package/dist/mirror/sync-types.js +2 -0
- package/dist/mirror/sync-types.js.map +1 -0
- package/dist/mirror/sync-workspace-package.js +117 -0
- package/dist/mirror/sync-workspace-package.js.map +1 -0
- package/dist/mirror/sync.js +90 -0
- package/dist/mirror/sync.js.map +1 -0
- package/dist/mirror/write-exports.js +145 -0
- package/dist/mirror/write-exports.js.map +1 -0
- package/dist/tag/cli-result.js +12 -0
- package/dist/tag/cli-result.js.map +1 -0
- package/dist/tag/cli-schema.js +13 -0
- package/dist/tag/cli-schema.js.map +1 -0
- package/dist/tag/command.js +69 -0
- package/dist/tag/command.js.map +1 -0
- package/dist/tag/domain/types.js +2 -0
- package/dist/tag/domain/types.js.map +1 -0
- package/dist/tag/output.js +101 -0
- package/dist/tag/output.js.map +1 -0
- package/dist/tag/prepare.js +30 -0
- package/dist/tag/prepare.js.map +1 -0
- package/dist/tag/resolve-target-path.js +14 -0
- package/dist/tag/resolve-target-path.js.map +1 -0
- package/dist/tag/since-writer.js +231 -0
- package/dist/tag/since-writer.js.map +1 -0
- package/dist/tag/sync.js +166 -0
- package/dist/tag/sync.js.map +1 -0
- package/dist/tag/target-candidates.js +79 -0
- package/dist/tag/target-candidates.js.map +1 -0
- package/dist/tag/target-runner.js +25 -0
- package/dist/tag/target-runner.js.map +1 -0
- package/dist/tag/version-resolver.js +28 -0
- package/dist/tag/version-resolver.js.map +1 -0
- package/package.json +25 -20
- package/dist/arrange/analyze.mjs +0 -24
- package/dist/arrange/cli-schema.mjs +0 -27
- package/dist/arrange/command.mjs +0 -130
- package/dist/arrange/domain/analyze-service.mjs +0 -102
- package/dist/arrange/domain/ast/ast-node.mjs +0 -215
- package/dist/arrange/domain/ast/collectors-cn.mjs +0 -64
- package/dist/arrange/domain/ast/collectors-jsx.mjs +0 -23
- package/dist/arrange/domain/ast/collectors-tv.mjs +0 -189
- package/dist/arrange/domain/ast/helpers.mjs +0 -108
- package/dist/arrange/domain/ast/simplify-targets.mjs +0 -109
- package/dist/arrange/domain/ast/targets.mjs +0 -134
- package/dist/arrange/domain/constants.mjs +0 -213
- package/dist/arrange/domain/grouping-service.mjs +0 -121
- package/dist/arrange/domain/grouping.mjs +0 -338
- package/dist/arrange/domain/imports.mjs +0 -107
- package/dist/arrange/domain/source-text-formatters.mjs +0 -88
- package/dist/arrange/domain/tailwind-token.mjs +0 -40
- package/dist/arrange/domain/token-classifier.mjs +0 -218
- package/dist/arrange/domain/types.mjs +0 -1
- package/dist/arrange/output.mjs +0 -87
- package/dist/arrange/process-file.mjs +0 -42
- package/dist/arrange/resolve-target.mjs +0 -24
- package/dist/arrange/scan-target.mjs +0 -29
- package/dist/arrange/simplify-process-file.mjs +0 -35
- package/dist/arrange/simplify-sync.mjs +0 -32
- package/dist/arrange/source-parse.mjs +0 -18
- package/dist/arrange/suggest.mjs +0 -15
- package/dist/arrange/sync.mjs +0 -51
- package/dist/arrange/typescript-ast-translator.mjs +0 -354
- package/dist/arrange/workspace.mjs +0 -31
- package/dist/cli.mjs +0 -34
- package/dist/core/cli/format-error.mjs +0 -15
- package/dist/core/cli/global-options.mjs +0 -10
- package/dist/core/cli/positional.mjs +0 -11
- package/dist/core/cli/result-handle.mjs +0 -51
- package/dist/core/config/loader.mjs +0 -79
- package/dist/core/config/schema.mjs +0 -60
- package/dist/core/config/warnings.mjs +0 -12
- package/dist/core/config.mjs +0 -19
- package/dist/core/errors.mjs +0 -35
- package/dist/core/exit-codes.mjs +0 -17
- package/dist/core/filesystem/node.mjs +0 -32
- package/dist/core/filesystem/port.mjs +0 -1
- package/dist/core/glob.mjs +0 -20
- package/dist/core/logger.mjs +0 -15
- package/dist/core/result.mjs +0 -21
- package/dist/core/schema-parse.mjs +0 -18
- package/dist/core/source-text-edit.mjs +0 -56
- package/dist/core/verbose-diagnostics.mjs +0 -11
- package/dist/core/workspace/resolver.mjs +0 -177
- package/dist/core/workspace/typescript-walk.mjs +0 -36
- package/dist/mirror/cli-result.mjs +0 -22
- package/dist/mirror/cli-schema.mjs +0 -13
- package/dist/mirror/command.mjs +0 -58
- package/dist/mirror/dist-filesystem-impl.mjs +0 -42
- package/dist/mirror/domain/constants.mjs +0 -31
- package/dist/mirror/domain/dirent-guard.mjs +0 -16
- package/dist/mirror/domain/dist-filesystem.mjs +0 -1
- package/dist/mirror/domain/errors.mjs +0 -21
- package/dist/mirror/domain/exports.mjs +0 -226
- package/dist/mirror/domain/package-display-name.mjs +0 -12
- package/dist/mirror/domain/path-normalizer.mjs +0 -10
- package/dist/mirror/domain/types.mjs +0 -1
- package/dist/mirror/output.mjs +0 -48
- package/dist/mirror/package-path.mjs +0 -32
- package/dist/mirror/prepare.mjs +0 -33
- package/dist/mirror/supplement-exports.mjs +0 -114
- package/dist/mirror/sync-reporter.mjs +0 -107
- package/dist/mirror/sync-types.mjs +0 -1
- package/dist/mirror/sync-workspace-package.mjs +0 -109
- package/dist/mirror/sync.mjs +0 -88
- package/dist/mirror/write-exports.mjs +0 -94
- package/dist/tag/cli-result.mjs +0 -11
- package/dist/tag/cli-schema.mjs +0 -15
- package/dist/tag/command.mjs +0 -56
- package/dist/tag/domain/types.mjs +0 -1
- package/dist/tag/output.mjs +0 -87
- package/dist/tag/prepare.mjs +0 -29
- package/dist/tag/resolve-target-path.mjs +0 -12
- package/dist/tag/since-writer.mjs +0 -131
- package/dist/tag/sync.mjs +0 -149
- package/dist/tag/target-candidates.mjs +0 -68
- package/dist/tag/target-runner.mjs +0 -26
- package/dist/tag/version-resolver.mjs +0 -25
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { messageFrom } from "#/core/errors";
|
|
3
|
+
const ANSI = {
|
|
4
|
+
reset: "\x1b[0m",
|
|
5
|
+
bold: "\x1b[1m",
|
|
6
|
+
dim: "\x1b[2m",
|
|
7
|
+
green: "\x1b[32m",
|
|
8
|
+
yellow: "\x1b[33m",
|
|
9
|
+
cyan: "\x1b[36m",
|
|
10
|
+
gray: "\x1b[90m",
|
|
11
|
+
magenta: "\x1b[35m",
|
|
12
|
+
brightGreen: "\x1b[92m",
|
|
13
|
+
brightCyan: "\x1b[96m",
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Console implementation: ANSI styling and layout for the mirror command.
|
|
17
|
+
*
|
|
18
|
+
* @since 0.3.16-canary.0
|
|
19
|
+
*/
|
|
20
|
+
export class MirrorSyncReporter {
|
|
21
|
+
colorsAreEnabled = true;
|
|
22
|
+
configureMirrorColors(noColor) {
|
|
23
|
+
this.colorsAreEnabled = !!process.stdout.isTTY && !noColor;
|
|
24
|
+
}
|
|
25
|
+
mirrorBanner(logger) {
|
|
26
|
+
logger.out(`\n${this.paint("📦 Mirror — package exports", ANSI.bold + ANSI.cyan)}`);
|
|
27
|
+
logger.out(`${this.paint("═".repeat(60), ANSI.dim)}\n`);
|
|
28
|
+
}
|
|
29
|
+
mirrorDryRunNotice(logger) {
|
|
30
|
+
logger.out(`${this.paint("Dry run — no files will be written.", ANSI.yellow)}\n`);
|
|
31
|
+
}
|
|
32
|
+
mirrorProcessingMode(logger, mode) {
|
|
33
|
+
if (mode.kind === "single") {
|
|
34
|
+
logger.out(`${this.paint("Processing single package...", ANSI.dim)}\n`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (mode.source === "default-patterns") {
|
|
38
|
+
logger.out(`${this.paint("Discovering workspace packages using default patterns (packages/*)…", ANSI.dim)}\n`);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (mode.source === "pnpm-workspace-yaml") {
|
|
42
|
+
logger.out(`${this.paint("Discovering workspace packages from pnpm-workspace.yaml…", ANSI.dim)}\n`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
logger.out(`${this.paint("pnpm-workspace.yaml declares an empty workspace package list.", ANSI.dim)}\n`);
|
|
46
|
+
}
|
|
47
|
+
mirrorNoPackages(logger) {
|
|
48
|
+
logger.out(this.paint("⚠ No packages found", ANSI.yellow));
|
|
49
|
+
}
|
|
50
|
+
logSkippedWorkspacePackage(logger, index, total, displayName, reason) {
|
|
51
|
+
const progress = this.paint(`[${index}/${total}]`, ANSI.dim);
|
|
52
|
+
logger.out(`${progress} ${this.paint("○", ANSI.gray)} ${this.paint(displayName, ANSI.dim)}`);
|
|
53
|
+
logger.out(` ${this.paint("└─", ANSI.dim)} ${this.paint(`Skipped: ${reason}`, ANSI.gray)}`);
|
|
54
|
+
logger.out("");
|
|
55
|
+
}
|
|
56
|
+
logPackageSuccess(logger, index, total, pkgStats, generatedDistAssetCounts, verbose) {
|
|
57
|
+
const progress = this.paint(`[${index}/${total}]`, ANSI.dim);
|
|
58
|
+
logger.out(`${progress} ${this.paint("✓", ANSI.brightGreen)} ${this.paint(pkgStats.name, ANSI.bold)}`);
|
|
59
|
+
if (verbose) {
|
|
60
|
+
logger.out(` ${this.paint("├─", ANSI.dim)} Path: ${pkgStats.path}`);
|
|
61
|
+
if (pkgStats.hasTransform) {
|
|
62
|
+
logger.out(` ${this.paint("├─", ANSI.dim)} ${this.paint("Custom path transformation", ANSI.cyan)}`);
|
|
63
|
+
}
|
|
64
|
+
if (pkgStats.cssConfigStatus) {
|
|
65
|
+
const status = pkgStats.cssConfigStatus === "disabled" ? "CSS disabled" : "CSS configured";
|
|
66
|
+
logger.out(` ${this.paint("├─", ANSI.dim)} ${this.paint(status, ANSI.cyan)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
const breakdown = [];
|
|
70
|
+
if (generatedDistAssetCounts.jsCount > 0) {
|
|
71
|
+
breakdown.push(this.paint(`${generatedDistAssetCounts.jsCount} modules`, ANSI.green));
|
|
72
|
+
}
|
|
73
|
+
if (generatedDistAssetCounts.cssCount > 0) {
|
|
74
|
+
breakdown.push(this.paint(`${generatedDistAssetCounts.cssCount} CSS`, ANSI.magenta));
|
|
75
|
+
}
|
|
76
|
+
if (pkgStats.extraExports > 0) {
|
|
77
|
+
breakdown.push(this.paint(`${pkgStats.extraExports} custom`, ANSI.yellow));
|
|
78
|
+
}
|
|
79
|
+
const totalExportsText = this.paint(`${pkgStats.totalExports} exports`, ANSI.brightCyan);
|
|
80
|
+
if (breakdown.length === 0) {
|
|
81
|
+
logger.out(` ${this.paint("└─", ANSI.dim)} ${totalExportsText}`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
logger.out(` ${this.paint("└─", ANSI.dim)} ${breakdown.join(" + ")} = ${totalExportsText}`);
|
|
85
|
+
}
|
|
86
|
+
logger.out("");
|
|
87
|
+
}
|
|
88
|
+
logPrunedStaleExport(logger, exportSpecifier) {
|
|
89
|
+
logger.out(` ${this.paint("└─", ANSI.dim)} ${this.paint(`Pruned stale export: ${exportSpecifier}`, ANSI.gray)}`);
|
|
90
|
+
}
|
|
91
|
+
logPackageError(logger, index, total, displayName, errorValue, verbose) {
|
|
92
|
+
logger.out(`${this.paint(`[${index}/${total}]`, ANSI.dim)} ${this.paint("✗", ANSI.yellow)} ${this.paint(displayName, ANSI.bold)}`);
|
|
93
|
+
logger.out(` ${this.paint("└─", ANSI.dim)} ${this.paint(`Error: ${messageFrom(errorValue)}`, ANSI.yellow)}\n`);
|
|
94
|
+
if (verbose) {
|
|
95
|
+
logger.err(errorValue instanceof Error && errorValue.stack ? errorValue.stack : messageFrom(errorValue));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
mirrorSummarySeparator(logger) {
|
|
99
|
+
logger.out(this.paint("═".repeat(60), ANSI.dim));
|
|
100
|
+
}
|
|
101
|
+
mirrorSummary(logger, stats, elapsedSeconds) {
|
|
102
|
+
logger.out(`${this.paint("📊 Summary", ANSI.bold)} ${this.paint(`(completed in ${elapsedSeconds.toFixed(2)}s)`, ANSI.dim)}\n`);
|
|
103
|
+
logger.out(` ${this.paint("Packages:", ANSI.bold)}`);
|
|
104
|
+
logger.out(` ${this.paint("├─", ANSI.dim)} Processed: ${this.paint(String(stats.packagesProcessed), ANSI.green)}`);
|
|
105
|
+
if (stats.packagesSkipped > 0) {
|
|
106
|
+
logger.out(` ${this.paint("├─", ANSI.dim)} Skipped: ${this.paint(String(stats.packagesSkipped), ANSI.gray)}`);
|
|
107
|
+
}
|
|
108
|
+
if (stats.packagesErrored > 0) {
|
|
109
|
+
logger.out(` ${this.paint("├─", ANSI.dim)} Errors: ${this.paint(String(stats.packagesErrored), ANSI.yellow)}`);
|
|
110
|
+
}
|
|
111
|
+
logger.out(` ${this.paint("└─", ANSI.dim)} Total found: ${stats.packagesFound}\n`);
|
|
112
|
+
logger.out(` ${this.paint("Exports:", ANSI.bold)}`);
|
|
113
|
+
logger.out(` ${this.paint("├─", ANSI.dim)} JS Modules: ${this.paint(String(stats.totalJsModules), ANSI.cyan)}`);
|
|
114
|
+
logger.out(` ${this.paint("├─", ANSI.dim)} CSS Files: ${this.paint(String(stats.totalCssExports), ANSI.magenta)}`);
|
|
115
|
+
logger.out(` ${this.paint("└─", ANSI.dim)} Total: ${this.paint(String(stats.totalExports), ANSI.brightCyan)}\n`);
|
|
116
|
+
logger.out(`${this.paint("═".repeat(60), ANSI.dim)}\n`);
|
|
117
|
+
}
|
|
118
|
+
paint(text, openSequence) {
|
|
119
|
+
if (!this.colorsAreEnabled) {
|
|
120
|
+
return text;
|
|
121
|
+
}
|
|
122
|
+
return `${openSequence}${text}${ANSI.reset}`;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=sync-reporter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-reporter.js","sourceRoot":"","sources":["../../src/mirror/sync-reporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-types.js","sourceRoot":"","sources":["../../src/mirror/sync-types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { messageFrom } from "#/core/errors";
|
|
3
|
+
import { createMirrorDistFilesystem } from "#/mirror/dist-filesystem-impl";
|
|
4
|
+
import { DIST_DIR, PACKAGE_JSON } from "#/mirror/domain/constants";
|
|
5
|
+
import { createPathTransform, generateExports } from "#/mirror/domain/exports";
|
|
6
|
+
import { resolvePackageDisplayName } from "#/mirror/domain/package-display-name";
|
|
7
|
+
import { buildSourcePathResolver, supplementExportsInPackageJson } from "#/mirror/supplement-exports";
|
|
8
|
+
import { writePackageJsonExportsAtomic } from "#/mirror/write-exports";
|
|
9
|
+
/**
|
|
10
|
+
* @since 0.3.16-canary.0
|
|
11
|
+
*/
|
|
12
|
+
export async function syncExportsForWorkspacePackage(fs, rootDir, packagePathStr, config, write = true) {
|
|
13
|
+
const pathJoin = path.join;
|
|
14
|
+
const pathResolve = path.resolve;
|
|
15
|
+
const pathBasename = path.basename;
|
|
16
|
+
const packageDir = pathResolve(rootDir, packagePathStr);
|
|
17
|
+
const distDir = pathJoin(packageDir, DIST_DIR);
|
|
18
|
+
const packageJsonPath = pathJoin(packageDir, PACKAGE_JSON);
|
|
19
|
+
const folderBasename = pathBasename(packageDir);
|
|
20
|
+
const distFilesystem = createMirrorDistFilesystem(fs);
|
|
21
|
+
const pkgStats = {
|
|
22
|
+
name: folderBasename,
|
|
23
|
+
path: packageDir,
|
|
24
|
+
jsModules: 0,
|
|
25
|
+
cssExports: 0,
|
|
26
|
+
extraExports: 0,
|
|
27
|
+
totalExports: 0,
|
|
28
|
+
hasTransform: false,
|
|
29
|
+
cssConfigStatus: "",
|
|
30
|
+
skipped: false,
|
|
31
|
+
skipReason: "",
|
|
32
|
+
error: null,
|
|
33
|
+
prunedExportKeys: [],
|
|
34
|
+
};
|
|
35
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
36
|
+
pkgStats.skipped = true;
|
|
37
|
+
pkgStats.skipReason = "package.json not found";
|
|
38
|
+
return pkgStats;
|
|
39
|
+
}
|
|
40
|
+
let packageJsonParseError;
|
|
41
|
+
let parsedPackageJson;
|
|
42
|
+
try {
|
|
43
|
+
const packageContent = await fs.readFile(packageJsonPath, "utf8");
|
|
44
|
+
const rawPackageJson = JSON.parse(packageContent);
|
|
45
|
+
if (rawPackageJson === null || typeof rawPackageJson !== "object" || Array.isArray(rawPackageJson)) {
|
|
46
|
+
throw new SyntaxError("package.json root must be a JSON object");
|
|
47
|
+
}
|
|
48
|
+
parsedPackageJson = rawPackageJson;
|
|
49
|
+
pkgStats.name = resolvePackageDisplayName(parsedPackageJson, folderBasename);
|
|
50
|
+
}
|
|
51
|
+
catch (caughtError) {
|
|
52
|
+
pkgStats.name = folderBasename;
|
|
53
|
+
packageJsonParseError = caughtError;
|
|
54
|
+
}
|
|
55
|
+
const packageName = pkgStats.name;
|
|
56
|
+
const pkgConfig = config[packageName];
|
|
57
|
+
if (pkgConfig === false) {
|
|
58
|
+
pkgStats.skipped = true;
|
|
59
|
+
pkgStats.skipReason = "configured to skip";
|
|
60
|
+
return pkgStats;
|
|
61
|
+
}
|
|
62
|
+
if (packageJsonParseError !== undefined) {
|
|
63
|
+
if (!fs.existsSync(distDir)) {
|
|
64
|
+
pkgStats.skipped = true;
|
|
65
|
+
pkgStats.skipReason = "dist/ not found";
|
|
66
|
+
return pkgStats;
|
|
67
|
+
}
|
|
68
|
+
pkgStats.error = messageFrom(packageJsonParseError);
|
|
69
|
+
return pkgStats;
|
|
70
|
+
}
|
|
71
|
+
if (!fs.existsSync(distDir)) {
|
|
72
|
+
pkgStats.skipped = true;
|
|
73
|
+
pkgStats.skipReason = "dist/ not found";
|
|
74
|
+
return pkgStats;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const resolveSourcePath = buildSourcePathResolver(fs, packageDir);
|
|
78
|
+
const exportOptions = {
|
|
79
|
+
source: pkgConfig?.source ?? true,
|
|
80
|
+
types: pkgConfig?.types ?? true,
|
|
81
|
+
import: pkgConfig?.import ?? true,
|
|
82
|
+
resolveSourcePath,
|
|
83
|
+
};
|
|
84
|
+
if (pkgConfig?.preserve) {
|
|
85
|
+
const { supplementedSpecifiers } = await supplementExportsInPackageJson(fs, packageJsonPath, packageDir, exportOptions, write);
|
|
86
|
+
pkgStats.totalExports = supplementedSpecifiers.length;
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
const pathTransform = createPathTransform(pkgConfig?.strip);
|
|
90
|
+
pkgStats.hasTransform = !!pathTransform;
|
|
91
|
+
const cssConfig = pkgConfig?.css;
|
|
92
|
+
if (cssConfig === false) {
|
|
93
|
+
pkgStats.cssConfigStatus = "disabled";
|
|
94
|
+
}
|
|
95
|
+
else if (cssConfig !== undefined) {
|
|
96
|
+
pkgStats.cssConfigStatus = "configured";
|
|
97
|
+
}
|
|
98
|
+
const extraExports = pkgConfig?.exports ?? {};
|
|
99
|
+
const generatedExports = await generateExports(distFilesystem, distDir, pathTransform, cssConfig, extraExports, exportOptions);
|
|
100
|
+
const { prunedKeys } = await writePackageJsonExportsAtomic(fs, packageJsonPath, {
|
|
101
|
+
generatedExports: generatedExports.exports,
|
|
102
|
+
managedExportSpecifiers: Object.keys(generatedExports.exports),
|
|
103
|
+
originalPathBySpecifier: generatedExports.originalPathBySpecifier,
|
|
104
|
+
}, write);
|
|
105
|
+
pkgStats.jsModules = generatedExports.jsCount;
|
|
106
|
+
pkgStats.cssExports = generatedExports.cssCount;
|
|
107
|
+
pkgStats.extraExports = Object.keys(extraExports).length;
|
|
108
|
+
pkgStats.totalExports = Object.keys(generatedExports.exports).length;
|
|
109
|
+
pkgStats.prunedExportKeys = prunedKeys;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
catch (caughtError) {
|
|
113
|
+
pkgStats.error = messageFrom(caughtError);
|
|
114
|
+
}
|
|
115
|
+
return pkgStats;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=sync-workspace-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync-workspace-package.js","sourceRoot":"","sources":["../../src/mirror/sync-workspace-package.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { AppError } from "#/core/errors";
|
|
3
|
+
import { messageFrom } from "#/core/errors";
|
|
4
|
+
import { err, ok } from "#/core/result";
|
|
5
|
+
import { listWorkspacePackageDirectories } from "#/core/workspace/resolver";
|
|
6
|
+
import { normalizePath } from "#/mirror/domain/path-normalizer";
|
|
7
|
+
import { resolvePackageFilterUnderRoot } from "#/mirror/package-path";
|
|
8
|
+
import { syncExportsForWorkspacePackage } from "#/mirror/sync-workspace-package";
|
|
9
|
+
/**
|
|
10
|
+
* @since 0.3.16-canary.0
|
|
11
|
+
*/
|
|
12
|
+
export async function runMirrorSync(fs, input) {
|
|
13
|
+
const config = (input.config ?? {});
|
|
14
|
+
const { listener } = input;
|
|
15
|
+
const write = input.write ?? true;
|
|
16
|
+
listener?.onBanner();
|
|
17
|
+
const startTime = performance.now();
|
|
18
|
+
try {
|
|
19
|
+
let targetPackages = [];
|
|
20
|
+
if (input.packageFilter) {
|
|
21
|
+
const filterOutcome = resolvePackageFilterUnderRoot(fs, input.rootDir, input.packageFilter);
|
|
22
|
+
if (!filterOutcome.ok) {
|
|
23
|
+
return filterOutcome;
|
|
24
|
+
}
|
|
25
|
+
targetPackages = [filterOutcome.value];
|
|
26
|
+
listener?.onProcessingMode({ kind: "single" });
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const layoutOutcome = await listWorkspacePackageDirectories(input.rootDir, fs, false);
|
|
30
|
+
const { relPaths, multiSource } = mirrorTargetsFromWorkspaceLayout(input.rootDir, layoutOutcome);
|
|
31
|
+
targetPackages = relPaths;
|
|
32
|
+
listener?.onProcessingMode({ kind: "multi", source: multiSource });
|
|
33
|
+
}
|
|
34
|
+
const stats = {
|
|
35
|
+
packagesFound: targetPackages.length,
|
|
36
|
+
packagesProcessed: 0,
|
|
37
|
+
packagesSkipped: 0,
|
|
38
|
+
packagesErrored: 0,
|
|
39
|
+
totalExports: 0,
|
|
40
|
+
totalJsModules: 0,
|
|
41
|
+
totalCssExports: 0,
|
|
42
|
+
packageDetails: [],
|
|
43
|
+
};
|
|
44
|
+
if (targetPackages.length === 0) {
|
|
45
|
+
listener?.onNoPackages();
|
|
46
|
+
listener?.onComplete(stats, (performance.now() - startTime) / 1000);
|
|
47
|
+
return ok(stats);
|
|
48
|
+
}
|
|
49
|
+
let ordinal = 1;
|
|
50
|
+
for (const pkgPath of targetPackages) {
|
|
51
|
+
const pkgStats = await syncExportsForWorkspacePackage(fs, input.rootDir, pkgPath, config, write);
|
|
52
|
+
stats.packageDetails.push(pkgStats);
|
|
53
|
+
listener?.onPackageComplete(pkgStats, ordinal, targetPackages.length);
|
|
54
|
+
ordinal++;
|
|
55
|
+
accumulateStats(stats, pkgStats);
|
|
56
|
+
}
|
|
57
|
+
const elapsed = (performance.now() - startTime) / 1000;
|
|
58
|
+
listener?.onComplete(stats, elapsed);
|
|
59
|
+
return ok(stats);
|
|
60
|
+
}
|
|
61
|
+
catch (caughtError) {
|
|
62
|
+
return err(new AppError("INFRA_FAILURE", messageFrom(caughtError), caughtError));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function accumulateStats(stats, pkgStats) {
|
|
66
|
+
if (pkgStats.skipped) {
|
|
67
|
+
stats.packagesSkipped++;
|
|
68
|
+
}
|
|
69
|
+
else if (pkgStats.error !== null) {
|
|
70
|
+
stats.packagesErrored++;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
stats.packagesProcessed++;
|
|
74
|
+
stats.totalExports += pkgStats.totalExports;
|
|
75
|
+
stats.totalJsModules += pkgStats.jsModules;
|
|
76
|
+
stats.totalCssExports += pkgStats.cssExports;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function mirrorTargetsFromWorkspaceLayout(rootDir, layoutOutcome) {
|
|
80
|
+
if (layoutOutcome.layoutSource === "declared-empty") {
|
|
81
|
+
return { relPaths: [], multiSource: "declared-empty" };
|
|
82
|
+
}
|
|
83
|
+
const multiSource = layoutOutcome.layoutSource;
|
|
84
|
+
const relPaths = layoutOutcome.packageDirectoryPathsAbsolute
|
|
85
|
+
.map((absolutePath) => normalizePath(path.relative(rootDir, absolutePath)))
|
|
86
|
+
.filter((relativePath) => relativePath.length > 0);
|
|
87
|
+
relPaths.sort((left, right) => left.localeCompare(right));
|
|
88
|
+
return { relPaths, multiSource };
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/mirror/sync.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAG5C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,+BAA+B,EAAsC,MAAM,2BAA2B,CAAC;AAChH,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAOhE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,OAAO,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAIjF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAkB,EAClB,KAA+B;IAE/B,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAiB,CAAC;IACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;IAElC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAErB,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IAEpC,IAAI,CAAC;QACH,IAAI,cAAc,GAAkB,EAAE,CAAC;QACvC,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,aAAa,GAAG,6BAA6B,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;YAC5F,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC;gBACtB,OAAO,aAAa,CAAC;YACvB,CAAC;YACD,cAAc,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACvC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,MAAM,aAAa,GAAG,MAAM,+BAA+B,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACtF,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,gCAAgC,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YACjG,cAAc,GAAG,QAAQ,CAAC;YAC1B,QAAQ,EAAE,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,KAAK,GAAgB;YACzB,aAAa,EAAE,cAAc,CAAC,MAAM;YACpC,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,eAAe,EAAE,CAAC;YAClB,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;YAClB,cAAc,EAAE,EAAE;SACnB,CAAC;QAEF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,QAAQ,EAAE,YAAY,EAAE,CAAC;YACzB,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;YACpE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,8BAA8B,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;YACjG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,QAAQ,EAAE,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC;YACtE,OAAO,EAAE,CAAC;YAEV,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;QACvD,QAAQ,EAAE,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAErC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAAC,OAAO,WAAoB,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,IAAI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC;IACnF,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAAkB,EAAE,QAAsB;IACjE,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,KAAK,CAAC,eAAe,EAAE,CAAC;IAC1B,CAAC;SAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;QACnC,KAAK,CAAC,eAAe,EAAE,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,KAAK,CAAC,YAAY,IAAI,QAAQ,CAAC,YAAY,CAAC;QAC5C,KAAK,CAAC,cAAc,IAAI,QAAQ,CAAC,SAAS,CAAC;QAC3C,KAAK,CAAC,eAAe,IAAI,QAAQ,CAAC,UAAU,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,SAAS,gCAAgC,CACvC,OAAe,EACf,aAA4C;IAE5C,IAAI,aAAa,CAAC,YAAY,KAAK,gBAAgB,EAAE,CAAC;QACpD,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC;IACzD,CAAC;IAED,MAAM,WAAW,GAAkC,aAAa,CAAC,YAAY,CAAC;IAE9E,MAAM,QAAQ,GAAG,aAAa,CAAC,6BAA6B;SACzD,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1E,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErD,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { messageFrom } from "#/core/errors";
|
|
2
|
+
import { PACKAGE_JSON_EXPORT } from "#/mirror/domain/constants";
|
|
3
|
+
import { MirrorError, MirrorErrorCode } from "#/mirror/domain/errors";
|
|
4
|
+
/**
|
|
5
|
+
* Writes `exports` into `package.json` via a temp file + rename (atomic on same volume).
|
|
6
|
+
* Preserves a trailing newline after JSON.
|
|
7
|
+
*
|
|
8
|
+
* @since 0.3.16-canary.0
|
|
9
|
+
*/
|
|
10
|
+
export async function writePackageJsonExportsAtomic(fs, packageJsonPath, mergeInput, write = true) {
|
|
11
|
+
function containsDistTarget(value) {
|
|
12
|
+
if (typeof value === "string") {
|
|
13
|
+
return value.startsWith("./dist/");
|
|
14
|
+
}
|
|
15
|
+
if (Array.isArray(value)) {
|
|
16
|
+
return value.some((entryValue) => containsDistTarget(entryValue));
|
|
17
|
+
}
|
|
18
|
+
if (value && typeof value === "object") {
|
|
19
|
+
return Object.values(value).some((entryValue) => containsDistTarget(entryValue));
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Keep `./package.json` at the very end for aesthetics by default.
|
|
25
|
+
* If a catch-all `./*` exists, move `./package.json` before wildcards so it remains reachable.
|
|
26
|
+
*/
|
|
27
|
+
function exportSpecifierRank(exportSpecifier, hasCatchAllWildcard) {
|
|
28
|
+
if (exportSpecifier === ".") {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
if (exportSpecifier === PACKAGE_JSON_EXPORT) {
|
|
32
|
+
return hasCatchAllWildcard ? 2 : 4;
|
|
33
|
+
}
|
|
34
|
+
if (exportSpecifier.includes("*")) {
|
|
35
|
+
return 3;
|
|
36
|
+
}
|
|
37
|
+
return 1;
|
|
38
|
+
}
|
|
39
|
+
function compareExportSpecifiers(leftSpecifier, rightSpecifier, pathBySpecifier, hasCatchAllWildcard) {
|
|
40
|
+
const leftRank = exportSpecifierRank(leftSpecifier, hasCatchAllWildcard);
|
|
41
|
+
const rightRank = exportSpecifierRank(rightSpecifier, hasCatchAllWildcard);
|
|
42
|
+
if (leftRank !== rightRank) {
|
|
43
|
+
return leftRank - rightRank;
|
|
44
|
+
}
|
|
45
|
+
const leftOriginalPath = pathBySpecifier[leftSpecifier] ?? leftSpecifier;
|
|
46
|
+
const rightOriginalPath = pathBySpecifier[rightSpecifier] ?? rightSpecifier;
|
|
47
|
+
const originalPathComparison = leftOriginalPath.localeCompare(rightOriginalPath);
|
|
48
|
+
if (originalPathComparison !== 0) {
|
|
49
|
+
return originalPathComparison;
|
|
50
|
+
}
|
|
51
|
+
return leftSpecifier.localeCompare(rightSpecifier);
|
|
52
|
+
}
|
|
53
|
+
const raw = await fs.readFile(packageJsonPath, "utf8");
|
|
54
|
+
const packageJson = JSON.parse(raw);
|
|
55
|
+
const existingExports = packageJson.exports;
|
|
56
|
+
const existingExportMap = existingExports && typeof existingExports === "object" && !Array.isArray(existingExports)
|
|
57
|
+
? existingExports
|
|
58
|
+
: {};
|
|
59
|
+
const managedSpecifiers = new Set(mergeInput.managedExportSpecifiers);
|
|
60
|
+
const originalPathBySpecifier = {
|
|
61
|
+
...mergeInput.originalPathBySpecifier,
|
|
62
|
+
};
|
|
63
|
+
const mergedExportMap = {};
|
|
64
|
+
const prunedKeys = [];
|
|
65
|
+
// Preserve unmanaged manual entries; drop unmanaged stale entries targeting dist/.
|
|
66
|
+
for (const [exportSpecifier, exportValue] of Object.entries(existingExportMap)) {
|
|
67
|
+
if (exportSpecifier === PACKAGE_JSON_EXPORT) {
|
|
68
|
+
mergedExportMap[exportSpecifier] = exportValue;
|
|
69
|
+
if (!(exportSpecifier in originalPathBySpecifier)) {
|
|
70
|
+
originalPathBySpecifier[exportSpecifier] = exportSpecifier;
|
|
71
|
+
}
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (!managedSpecifiers.has(exportSpecifier)) {
|
|
75
|
+
if (containsDistTarget(exportValue)) {
|
|
76
|
+
prunedKeys.push(exportSpecifier);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
mergedExportMap[exportSpecifier] = exportValue;
|
|
80
|
+
if (!(exportSpecifier in originalPathBySpecifier)) {
|
|
81
|
+
originalPathBySpecifier[exportSpecifier] = exportSpecifier;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Generated entries always win for managed specifiers (including ".").
|
|
87
|
+
for (const [exportSpecifier, exportValue] of Object.entries(mergeInput.generatedExports)) {
|
|
88
|
+
mergedExportMap[exportSpecifier] = exportValue;
|
|
89
|
+
}
|
|
90
|
+
if (!(PACKAGE_JSON_EXPORT in mergedExportMap)) {
|
|
91
|
+
mergedExportMap[PACKAGE_JSON_EXPORT] = PACKAGE_JSON_EXPORT;
|
|
92
|
+
}
|
|
93
|
+
originalPathBySpecifier[PACKAGE_JSON_EXPORT] = PACKAGE_JSON_EXPORT;
|
|
94
|
+
const rootExport = mergedExportMap["."];
|
|
95
|
+
if (rootExport && typeof rootExport === "object" && !Array.isArray(rootExport)) {
|
|
96
|
+
const rootEntry = rootExport;
|
|
97
|
+
const requirePath = typeof rootEntry.require === "string" ? rootEntry.require : undefined;
|
|
98
|
+
const importPath = typeof rootEntry.import === "string" ? rootEntry.import : undefined;
|
|
99
|
+
const typesPath = typeof rootEntry.types === "string" ? rootEntry.types : undefined;
|
|
100
|
+
if (requirePath || importPath) {
|
|
101
|
+
packageJson.main = requirePath ?? importPath;
|
|
102
|
+
}
|
|
103
|
+
// The `import` condition is the ESM entry regardless of extension (`.js`
|
|
104
|
+
// under `type: module`, or `.mjs`). Mirror `module` to it either way.
|
|
105
|
+
if (importPath) {
|
|
106
|
+
packageJson.module = importPath;
|
|
107
|
+
}
|
|
108
|
+
if (typesPath) {
|
|
109
|
+
packageJson.types = typesPath;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
const filesField = packageJson.files;
|
|
113
|
+
if (Array.isArray(filesField)) {
|
|
114
|
+
const normalizedFiles = filesField.filter((entry) => typeof entry === "string");
|
|
115
|
+
if (!normalizedFiles.includes("dist")) {
|
|
116
|
+
normalizedFiles.push("dist");
|
|
117
|
+
}
|
|
118
|
+
packageJson.files = normalizedFiles;
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
packageJson.files = ["dist"];
|
|
122
|
+
}
|
|
123
|
+
const sortedExportMap = {};
|
|
124
|
+
const hasCatchAllWildcard = "./*" in mergedExportMap;
|
|
125
|
+
for (const exportSpecifier of Object.keys(mergedExportMap).toSorted((leftSpecifier, rightSpecifier) => compareExportSpecifiers(leftSpecifier, rightSpecifier, originalPathBySpecifier, hasCatchAllWildcard))) {
|
|
126
|
+
sortedExportMap[exportSpecifier] = mergedExportMap[exportSpecifier];
|
|
127
|
+
}
|
|
128
|
+
// Dry-run: skip the on-disk mutation but still report what would have been pruned.
|
|
129
|
+
if (!write) {
|
|
130
|
+
return { prunedKeys };
|
|
131
|
+
}
|
|
132
|
+
packageJson.exports = sortedExportMap;
|
|
133
|
+
const serialized = JSON.stringify(packageJson, null, 2) + "\n";
|
|
134
|
+
const tmpPath = `${packageJsonPath}.tmp`;
|
|
135
|
+
await fs.writeFile(tmpPath, serialized, "utf8");
|
|
136
|
+
try {
|
|
137
|
+
await fs.rename(tmpPath, packageJsonPath);
|
|
138
|
+
}
|
|
139
|
+
catch (caughtRenameError) {
|
|
140
|
+
await fs.unlink(tmpPath).catch(() => { });
|
|
141
|
+
throw new MirrorError(MirrorErrorCode.PACKAGE_WRITE, `Failed to atomically update ${packageJsonPath}: ${messageFrom(caughtRenameError)}`, caughtRenameError instanceof Error ? { cause: caughtRenameError } : undefined);
|
|
142
|
+
}
|
|
143
|
+
return { prunedKeys };
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=write-exports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-exports.js","sourceRoot":"","sources":["../../src/mirror/write-exports.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CLI_EXIT_GENERAL_ERROR, CLI_EXIT_SUCCESS } from "#/core/exit-codes";
|
|
2
|
+
/**
|
|
3
|
+
* @since 0.3.16-canary.0
|
|
4
|
+
*/
|
|
5
|
+
export function exitCodeForTagSyncResult(result) {
|
|
6
|
+
if (result.selectedTargets.length === 0) {
|
|
7
|
+
return CLI_EXIT_GENERAL_ERROR;
|
|
8
|
+
}
|
|
9
|
+
const hasRunErrors = result.targetResults.some((targetResult) => targetResult.runError !== null);
|
|
10
|
+
return hasRunErrors || result.hookError !== null ? CLI_EXIT_GENERAL_ERROR : CLI_EXIT_SUCCESS;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=cli-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-result.js","sourceRoot":"","sources":["../../src/tag/cli-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG7E;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAqB;IAC5D,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,YAAY,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IACjG,OAAO,YAAY,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB,CAAC;AAC/F,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* @since 0.3.16-canary.0
|
|
4
|
+
*/
|
|
5
|
+
export const tagSyncRunRequestSchema = z.object({
|
|
6
|
+
rootDir: z.string().min(1),
|
|
7
|
+
write: z.boolean(),
|
|
8
|
+
json: z.boolean().optional(),
|
|
9
|
+
targetPath: z.string().optional(),
|
|
10
|
+
skipPackages: z.array(z.string()).optional(),
|
|
11
|
+
config: z.unknown().optional(),
|
|
12
|
+
});
|
|
13
|
+
//# sourceMappingURL=cli-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-schema.js","sourceRoot":"","sources":["../../src/tag/cli-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAiC,CAAC,CAAC,MAAM,CAAC;IAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE;IAClB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { readOptionalPositionalArg } from "#/core/cli/positional";
|
|
4
|
+
import { consumeCliAppError } from "#/core/cli/result-handle";
|
|
5
|
+
import { nodeFilesystem } from "#/core/filesystem/node";
|
|
6
|
+
import { logger } from "#/core/logger";
|
|
7
|
+
import { parseWithSchema } from "#/core/schema-parse";
|
|
8
|
+
import { exitCodeForTagSyncResult } from "#/tag/cli-result";
|
|
9
|
+
import { tagSyncRunRequestSchema } from "#/tag/cli-schema";
|
|
10
|
+
import { presentTagSyncResult, TagSyncProgressPresenter } from "#/tag/output";
|
|
11
|
+
import { prepareTagSync } from "#/tag/prepare";
|
|
12
|
+
import { runTagSync } from "#/tag/sync";
|
|
13
|
+
/**
|
|
14
|
+
* @since 0.3.16-canary.0
|
|
15
|
+
*/
|
|
16
|
+
export function createTagCommand() {
|
|
17
|
+
const cmd = new Command("tag")
|
|
18
|
+
.description("Add @since <version> JSDoc tags to exported declarations")
|
|
19
|
+
.argument("[target]", "Directory or file to tag (default: auto-discover workspace packages)")
|
|
20
|
+
.option("--dry-run", "Show summary without writing files", false)
|
|
21
|
+
.option("--json", "Print one JSON summary on stdout (suppresses human progress)", false)
|
|
22
|
+
.action(async (target, opts) => {
|
|
23
|
+
const prelude = await prepareTagSync(nodeFilesystem, {
|
|
24
|
+
currentWorkingDirectory: process.cwd(),
|
|
25
|
+
rawTarget: readOptionalPositionalArg(target),
|
|
26
|
+
});
|
|
27
|
+
if (!consumeCliAppError(prelude)) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const { rootDir, config, resolvedTargetPath } = prelude.value;
|
|
31
|
+
const tagConfig = config.tag ?? {};
|
|
32
|
+
const parsed = parseWithSchema(tagSyncRunRequestSchema, {
|
|
33
|
+
rootDir,
|
|
34
|
+
write: !opts.dryRun,
|
|
35
|
+
json: opts.json,
|
|
36
|
+
targetPath: resolvedTargetPath,
|
|
37
|
+
skipPackages: tagConfig.skipPackages,
|
|
38
|
+
config: tagConfig,
|
|
39
|
+
});
|
|
40
|
+
if (!consumeCliAppError(parsed)) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const progressPresenter = new TagSyncProgressPresenter();
|
|
44
|
+
const tagOutcome = await runTagSync(nodeFilesystem, {
|
|
45
|
+
...parsed.value,
|
|
46
|
+
listener: parsed.value.json ? undefined : progressPresenter,
|
|
47
|
+
});
|
|
48
|
+
if (!consumeCliAppError(tagOutcome)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (parsed.value.json) {
|
|
52
|
+
logger.out(formatTagSyncJsonOutput(tagOutcome.value, rootDir));
|
|
53
|
+
process.exitCode = exitCodeForTagSyncResult(tagOutcome.value);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
process.exitCode = presentTagSyncResult(tagOutcome.value, rootDir);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
return cmd;
|
|
60
|
+
}
|
|
61
|
+
function formatTagSyncJsonOutput(result, rootDir) {
|
|
62
|
+
return JSON.stringify({
|
|
63
|
+
schemaVersion: 1,
|
|
64
|
+
ok: result.hookError === null,
|
|
65
|
+
cwd: rootDir,
|
|
66
|
+
result,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/tag/command.ts"],"names":[],"mappings":"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"}
|