@codefast/cli 0.8.0 → 0.9.0
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/CHANGELOG.md +568 -0
- package/LICENSE +1 -1
- package/README.md +150 -50
- package/dist/arrange/analyze.js +1 -2
- package/dist/arrange/cli-schema.js +1 -2
- package/dist/arrange/command.js +1 -2
- package/dist/arrange/domain/analyze-service.js +1 -2
- package/dist/arrange/domain/ast/ast-node.js +1 -2
- package/dist/arrange/domain/ast/collectors-cn.js +1 -2
- package/dist/arrange/domain/ast/collectors-jsx.js +1 -2
- package/dist/arrange/domain/ast/collectors-tv.js +1 -2
- package/dist/arrange/domain/ast/helpers.js +1 -2
- package/dist/arrange/domain/ast/simplify-targets.js +1 -2
- package/dist/arrange/domain/ast/targets.js +1 -2
- package/dist/arrange/domain/constants.js +1 -2
- package/dist/arrange/domain/grouping-service.js +1 -2
- package/dist/arrange/domain/grouping.js +1 -2
- package/dist/arrange/domain/imports.js +1 -2
- package/dist/arrange/domain/source-text-formatters.js +1 -2
- package/dist/arrange/domain/tailwind-token.js +1 -2
- package/dist/arrange/domain/token-classifier.js +1 -2
- package/dist/arrange/domain/types.js +1 -2
- package/dist/arrange/output.js +1 -2
- package/dist/arrange/process-file.js +1 -2
- package/dist/arrange/resolve-target.js +1 -2
- package/dist/arrange/scan-target.js +1 -2
- package/dist/arrange/simplify-process-file.js +1 -2
- package/dist/arrange/simplify-sync.js +1 -2
- package/dist/arrange/source-parse.js +1 -2
- package/dist/arrange/suggest.js +1 -2
- package/dist/arrange/sync.js +1 -2
- package/dist/arrange/typescript-ast-translator.js +1 -2
- package/dist/arrange/workspace.js +1 -2
- package/dist/audit/cli-schema.js +12 -2
- package/dist/audit/command.js +44 -5
- package/dist/audit/domain/audit-file.js +2 -3
- package/dist/audit/domain/comment-content.js +1 -2
- package/dist/audit/domain/comment-dividers.js +49 -22
- package/dist/audit/domain/display-names.js +71 -0
- package/dist/audit/domain/link-references.js +1 -2
- package/dist/audit/domain/mappings.js +1 -2
- package/dist/audit/domain/markdown-links.js +1 -2
- package/dist/audit/domain/react-imports.js +1 -2
- package/dist/audit/domain/since-versions.js +1 -2
- package/dist/audit/domain/tokenize.js +2 -3
- package/dist/audit/domain/tsdoc-syntax.js +1 -2
- package/dist/audit/domain/types.js +1 -2
- package/dist/audit/output.js +41 -1
- package/dist/audit/prepare.js +31 -1
- package/dist/audit/run-comments.js +23 -20
- package/dist/audit/run-display-names.js +60 -0
- package/dist/audit/run-links.js +1 -2
- package/dist/audit/run-react.js +1 -2
- package/dist/audit/run.js +1 -2
- package/dist/bin.js +1 -2
- package/dist/cli.js +3 -2
- package/dist/core/cli/format-error.js +1 -2
- package/dist/core/cli/global-options.js +1 -2
- package/dist/core/cli/positional.js +1 -2
- package/dist/core/cli/result-handle.js +1 -22
- package/dist/core/config/loader.js +1 -2
- package/dist/core/config/schema.js +19 -10
- package/dist/core/config/warnings.js +1 -2
- package/dist/core/config.js +1 -2
- package/dist/core/errors.js +1 -2
- package/dist/core/exit-codes.js +1 -2
- package/dist/core/filesystem/node.js +1 -2
- package/dist/core/filesystem/port.js +1 -2
- package/dist/core/glob.js +1 -2
- package/dist/core/logger.js +1 -2
- package/dist/core/result.js +1 -2
- package/dist/core/schema-parse.js +1 -2
- package/dist/core/source-text-edit.js +1 -2
- package/dist/core/verbose-diagnostics.js +1 -2
- package/dist/core/workspace/markdown-walk.js +1 -2
- package/dist/core/workspace/package-version.js +1 -2
- package/dist/core/workspace/resolver.js +1 -2
- package/dist/core/workspace/skip-directories.js +1 -2
- package/dist/core/workspace/source-walk.js +14 -4
- package/dist/core/workspace/typescript-walk.js +1 -2
- package/dist/mirror/cli-result.js +1 -2
- package/dist/mirror/cli-schema.js +1 -2
- package/dist/mirror/command.js +1 -2
- package/dist/mirror/dist-filesystem-impl.js +1 -2
- package/dist/mirror/domain/constants.js +1 -2
- package/dist/mirror/domain/dirent-guard.js +1 -2
- package/dist/mirror/domain/dist-filesystem.js +1 -2
- package/dist/mirror/domain/errors.js +1 -2
- package/dist/mirror/domain/exports.js +1 -2
- package/dist/mirror/domain/package-display-name.js +1 -2
- package/dist/mirror/domain/path-normalizer.js +1 -2
- package/dist/mirror/domain/types.js +1 -2
- package/dist/mirror/output.js +1 -2
- package/dist/mirror/package-path.js +1 -2
- package/dist/mirror/prepare.js +1 -2
- package/dist/mirror/supplement-exports.js +1 -2
- package/dist/mirror/sync-reporter.js +1 -2
- package/dist/mirror/sync-types.js +1 -2
- package/dist/mirror/sync-workspace-package.js +1 -2
- package/dist/mirror/sync.js +1 -2
- package/dist/mirror/write-exports.js +1 -2
- package/dist/pack-slim/cli-result.js +23 -0
- package/dist/pack-slim/cli-schema.js +11 -0
- package/dist/pack-slim/command.js +80 -0
- package/dist/pack-slim/domain/transform.js +221 -0
- package/dist/pack-slim/domain/types.js +2 -0
- package/dist/pack-slim/output.js +62 -0
- package/dist/pack-slim/sync.js +157 -0
- package/dist/pack-slim/working-tree.js +45 -0
- package/dist/tag/cli-result.js +1 -2
- package/dist/tag/cli-schema.js +1 -2
- package/dist/tag/command.js +1 -2
- package/dist/tag/domain/types.js +1 -2
- package/dist/tag/output.js +1 -2
- package/dist/tag/prepare.js +1 -2
- package/dist/tag/resolve-target-path.js +1 -2
- package/dist/tag/since-writer.js +1 -2
- package/dist/tag/sync.js +1 -2
- package/dist/tag/target-candidates.js +1 -2
- package/dist/tag/target-runner.js +1 -2
- package/dist/tag/version-resolver.js +1 -2
- package/package.json +8 -43
- package/dist/arrange/analyze.js.map +0 -1
- package/dist/arrange/cli-schema.js.map +0 -1
- package/dist/arrange/command.js.map +0 -1
- package/dist/arrange/domain/analyze-service.js.map +0 -1
- package/dist/arrange/domain/ast/ast-node.js.map +0 -1
- package/dist/arrange/domain/ast/collectors-cn.js.map +0 -1
- package/dist/arrange/domain/ast/collectors-jsx.js.map +0 -1
- package/dist/arrange/domain/ast/collectors-tv.js.map +0 -1
- package/dist/arrange/domain/ast/helpers.js.map +0 -1
- package/dist/arrange/domain/ast/simplify-targets.js.map +0 -1
- package/dist/arrange/domain/ast/targets.js.map +0 -1
- package/dist/arrange/domain/constants.js.map +0 -1
- package/dist/arrange/domain/grouping-service.js.map +0 -1
- package/dist/arrange/domain/grouping.js.map +0 -1
- package/dist/arrange/domain/imports.js.map +0 -1
- package/dist/arrange/domain/source-text-formatters.js.map +0 -1
- package/dist/arrange/domain/tailwind-token.js.map +0 -1
- package/dist/arrange/domain/token-classifier.js.map +0 -1
- package/dist/arrange/domain/types.js.map +0 -1
- package/dist/arrange/output.js.map +0 -1
- package/dist/arrange/process-file.js.map +0 -1
- package/dist/arrange/resolve-target.js.map +0 -1
- package/dist/arrange/scan-target.js.map +0 -1
- package/dist/arrange/simplify-process-file.js.map +0 -1
- package/dist/arrange/simplify-sync.js.map +0 -1
- package/dist/arrange/source-parse.js.map +0 -1
- package/dist/arrange/suggest.js.map +0 -1
- package/dist/arrange/sync.js.map +0 -1
- package/dist/arrange/typescript-ast-translator.js.map +0 -1
- package/dist/arrange/workspace.js.map +0 -1
- package/dist/audit/cli-schema.js.map +0 -1
- package/dist/audit/command.js.map +0 -1
- package/dist/audit/domain/audit-file.js.map +0 -1
- package/dist/audit/domain/comment-content.js.map +0 -1
- package/dist/audit/domain/comment-dividers.js.map +0 -1
- package/dist/audit/domain/link-references.js.map +0 -1
- package/dist/audit/domain/mappings.js.map +0 -1
- package/dist/audit/domain/markdown-links.js.map +0 -1
- package/dist/audit/domain/react-imports.js.map +0 -1
- package/dist/audit/domain/since-versions.js.map +0 -1
- package/dist/audit/domain/tokenize.js.map +0 -1
- package/dist/audit/domain/tsdoc-syntax.js.map +0 -1
- package/dist/audit/domain/types.js.map +0 -1
- package/dist/audit/output.js.map +0 -1
- package/dist/audit/prepare.js.map +0 -1
- package/dist/audit/run-comments.js.map +0 -1
- package/dist/audit/run-links.js.map +0 -1
- package/dist/audit/run-react.js.map +0 -1
- package/dist/audit/run.js.map +0 -1
- package/dist/bin.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/core/cli/format-error.js.map +0 -1
- package/dist/core/cli/global-options.js.map +0 -1
- package/dist/core/cli/positional.js.map +0 -1
- package/dist/core/cli/result-handle.js.map +0 -1
- package/dist/core/config/loader.js.map +0 -1
- package/dist/core/config/schema.js.map +0 -1
- package/dist/core/config/warnings.js.map +0 -1
- package/dist/core/config.js.map +0 -1
- package/dist/core/errors.js.map +0 -1
- package/dist/core/exit-codes.js.map +0 -1
- package/dist/core/filesystem/node.js.map +0 -1
- package/dist/core/filesystem/port.js.map +0 -1
- package/dist/core/glob.js.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/core/result.js.map +0 -1
- package/dist/core/schema-parse.js.map +0 -1
- package/dist/core/source-text-edit.js.map +0 -1
- package/dist/core/verbose-diagnostics.js.map +0 -1
- package/dist/core/workspace/markdown-walk.js.map +0 -1
- package/dist/core/workspace/package-version.js.map +0 -1
- package/dist/core/workspace/resolver.js.map +0 -1
- package/dist/core/workspace/skip-directories.js.map +0 -1
- package/dist/core/workspace/source-walk.js.map +0 -1
- package/dist/core/workspace/typescript-walk.js.map +0 -1
- package/dist/mirror/cli-result.js.map +0 -1
- package/dist/mirror/cli-schema.js.map +0 -1
- package/dist/mirror/command.js.map +0 -1
- package/dist/mirror/dist-filesystem-impl.js.map +0 -1
- package/dist/mirror/domain/constants.js.map +0 -1
- package/dist/mirror/domain/dirent-guard.js.map +0 -1
- package/dist/mirror/domain/dist-filesystem.js.map +0 -1
- package/dist/mirror/domain/errors.js.map +0 -1
- package/dist/mirror/domain/exports.js.map +0 -1
- package/dist/mirror/domain/package-display-name.js.map +0 -1
- package/dist/mirror/domain/path-normalizer.js.map +0 -1
- package/dist/mirror/domain/types.js.map +0 -1
- package/dist/mirror/output.js.map +0 -1
- package/dist/mirror/package-path.js.map +0 -1
- package/dist/mirror/prepare.js.map +0 -1
- package/dist/mirror/supplement-exports.js.map +0 -1
- package/dist/mirror/sync-reporter.js.map +0 -1
- package/dist/mirror/sync-types.js.map +0 -1
- package/dist/mirror/sync-workspace-package.js.map +0 -1
- package/dist/mirror/sync.js.map +0 -1
- package/dist/mirror/write-exports.js.map +0 -1
- package/dist/tag/cli-result.js.map +0 -1
- package/dist/tag/cli-schema.js.map +0 -1
- package/dist/tag/command.js.map +0 -1
- package/dist/tag/domain/types.js.map +0 -1
- package/dist/tag/output.js.map +0 -1
- package/dist/tag/prepare.js.map +0 -1
- package/dist/tag/resolve-target-path.js.map +0 -1
- package/dist/tag/since-writer.js.map +0 -1
- package/dist/tag/sync.js.map +0 -1
- package/dist/tag/target-candidates.js.map +0 -1
- package/dist/tag/target-runner.js.map +0 -1
- package/dist/tag/version-resolver.js.map +0 -1
|
@@ -17,26 +17,6 @@ function exitCodeForAppError(error) {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
/**
|
|
21
|
-
* Narrows a `Result` by invoking `onSuccess` on success, or reporting the error and setting the exit code.
|
|
22
|
-
*
|
|
23
|
-
* @since 0.3.16-canary.0
|
|
24
|
-
*/
|
|
25
|
-
export function handleResult(outcome, onSuccess) {
|
|
26
|
-
if (!outcome.ok) {
|
|
27
|
-
logger.err(formatAppError(outcome.error));
|
|
28
|
-
if (isVerboseCliDiagnostics() &&
|
|
29
|
-
outcome.error.code === "INFRA_FAILURE" &&
|
|
30
|
-
outcome.error.cause instanceof Error &&
|
|
31
|
-
outcome.error.cause.stack !== undefined) {
|
|
32
|
-
logger.err(outcome.error.cause.stack);
|
|
33
|
-
}
|
|
34
|
-
process.exitCode = exitCodeForAppError(outcome.error);
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
onSuccess(outcome.value);
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
40
20
|
/**
|
|
41
21
|
* Narrows a `Result`, reporting a failure and setting the exit code, or logging an optional success message.
|
|
42
22
|
*
|
|
@@ -71,5 +51,4 @@ export async function runCliResultAsync(outcomePromise, onSuccess) {
|
|
|
71
51
|
}
|
|
72
52
|
const exit = await onSuccess(outcome.value);
|
|
73
53
|
process.exitCode = exit === undefined ? 0 : exit;
|
|
74
|
-
}
|
|
75
|
-
//# sourceMappingURL=result-handle.js.map
|
|
54
|
+
}
|
|
@@ -23,7 +23,7 @@ const mirrorCssConfigSchema = z.union([
|
|
|
23
23
|
*
|
|
24
24
|
* @since 0.3.16-canary.0
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
const mirrorPackageConfigSchema = z
|
|
27
27
|
.object({
|
|
28
28
|
/** Preserve the existing `package.json#exports` map and only add missing conditions
|
|
29
29
|
* (`source`, `types`, `import`). No dist/ scan is performed. */
|
|
@@ -53,7 +53,7 @@ export const mirrorConfigSchema = z.record(z.string(), z.union([z.literal(false)
|
|
|
53
53
|
*
|
|
54
54
|
* @since 0.3.16-canary.0
|
|
55
55
|
*/
|
|
56
|
-
|
|
56
|
+
const codefastTagConfigSchema = z
|
|
57
57
|
.object({
|
|
58
58
|
skipPackages: z.array(z.string()).optional(),
|
|
59
59
|
onAfterWrite: afterWriteHookSchema.optional(),
|
|
@@ -64,7 +64,7 @@ export const codefastTagConfigSchema = z
|
|
|
64
64
|
*
|
|
65
65
|
* @since 0.3.16-canary.0
|
|
66
66
|
*/
|
|
67
|
-
|
|
67
|
+
const codefastArrangeConfigSchema = z
|
|
68
68
|
.object({
|
|
69
69
|
onAfterWrite: afterWriteHookSchema.optional(),
|
|
70
70
|
})
|
|
@@ -74,7 +74,7 @@ export const codefastArrangeConfigSchema = z
|
|
|
74
74
|
*
|
|
75
75
|
* @since 0.3.16-canary.0
|
|
76
76
|
*/
|
|
77
|
-
|
|
77
|
+
const codefastAuditRtlConfigSchema = z
|
|
78
78
|
.object({
|
|
79
79
|
/** Directory or file to scan when no CLI target is passed. */
|
|
80
80
|
target: z.string().optional(),
|
|
@@ -87,7 +87,7 @@ export const codefastAuditRtlConfigSchema = z
|
|
|
87
87
|
*
|
|
88
88
|
* @since 0.5.0
|
|
89
89
|
*/
|
|
90
|
-
|
|
90
|
+
const codefastAuditLinksConfigSchema = z
|
|
91
91
|
.object({
|
|
92
92
|
/** Bare link targets or `repo/relative/doc.md:target` entries to ignore. */
|
|
93
93
|
allowlist: z.array(z.string()).optional(),
|
|
@@ -98,7 +98,7 @@ export const codefastAuditLinksConfigSchema = z
|
|
|
98
98
|
*
|
|
99
99
|
* @since 0.6.0
|
|
100
100
|
*/
|
|
101
|
-
|
|
101
|
+
const codefastAuditCommentsConfigSchema = z
|
|
102
102
|
.object({
|
|
103
103
|
/** Divider lines as written, or `repo/relative/path.ts:<divider>` entries, to ignore. */
|
|
104
104
|
allowlist: z.array(z.string()).optional(),
|
|
@@ -110,23 +110,33 @@ export const codefastAuditCommentsConfigSchema = z
|
|
|
110
110
|
*
|
|
111
111
|
* @since 0.8.0
|
|
112
112
|
*/
|
|
113
|
-
|
|
113
|
+
const codefastAuditReactConfigSchema = z
|
|
114
114
|
.object({
|
|
115
115
|
/** Offending source text as written, or `repo/relative/path.tsx:<text>` entries, to ignore. */
|
|
116
116
|
allowlist: z.array(z.string()).optional(),
|
|
117
117
|
})
|
|
118
118
|
.strict();
|
|
119
|
+
/**
|
|
120
|
+
* Display-name audit defaults — the scan always starts at the repo root, so only exceptions are configured.
|
|
121
|
+
*/
|
|
122
|
+
const codefastAuditDisplayNamesConfigSchema = z
|
|
123
|
+
.object({
|
|
124
|
+
/** Offending calls as written, or `repo/relative/path.ts:<call>` entries, to ignore. */
|
|
125
|
+
allowlist: z.array(z.string()).optional(),
|
|
126
|
+
})
|
|
127
|
+
.strict();
|
|
119
128
|
/**
|
|
120
129
|
* Zod schema grouping the per-audit configurations under `audit`.
|
|
121
130
|
*
|
|
122
131
|
* @since 0.3.16-canary.0
|
|
123
132
|
*/
|
|
124
|
-
|
|
133
|
+
const codefastAuditConfigSchema = z
|
|
125
134
|
.object({
|
|
126
135
|
rtl: codefastAuditRtlConfigSchema.optional(),
|
|
127
136
|
links: codefastAuditLinksConfigSchema.optional(),
|
|
128
137
|
comments: codefastAuditCommentsConfigSchema.optional(),
|
|
129
138
|
react: codefastAuditReactConfigSchema.optional(),
|
|
139
|
+
displayNames: codefastAuditDisplayNamesConfigSchema.optional(),
|
|
130
140
|
})
|
|
131
141
|
.strict();
|
|
132
142
|
/**
|
|
@@ -141,5 +151,4 @@ export const codefastConfigRootSchema = z
|
|
|
141
151
|
arrange: codefastArrangeConfigSchema.optional(),
|
|
142
152
|
audit: codefastAuditConfigSchema.optional(),
|
|
143
153
|
})
|
|
144
|
-
.strict();
|
|
145
|
-
//# sourceMappingURL=schema.js.map
|
|
154
|
+
.strict();
|
package/dist/core/config.js
CHANGED
package/dist/core/errors.js
CHANGED
package/dist/core/exit-codes.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=port.js.map
|
|
1
|
+
export {};
|
package/dist/core/glob.js
CHANGED
package/dist/core/logger.js
CHANGED
package/dist/core/result.js
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import { defaultSkipDirectoryNames } from "#/core/workspace/skip-directories";
|
|
3
|
+
// Ignore files carry the divider convention over `#` comments — the content rules stay code-only.
|
|
4
|
+
const ignoreFileNames = new Set([
|
|
5
|
+
".gitignore",
|
|
6
|
+
".dockerignore",
|
|
7
|
+
".npmignore",
|
|
8
|
+
".prettierignore",
|
|
9
|
+
".eslintignore",
|
|
10
|
+
]);
|
|
3
11
|
/**
|
|
4
|
-
* Every hand-written source file a comment convention applies to — `.ts`, `.tsx`, and
|
|
12
|
+
* Every hand-written source file a comment convention applies to — `.ts`, `.tsx`, `.css`, and ignore files.
|
|
5
13
|
*
|
|
6
14
|
* @remarks Emitted declarations are excluded: they carry whatever the compiler copied over,
|
|
7
15
|
* and rewriting them would be undone by the next build.
|
|
@@ -25,7 +33,10 @@ export function sourceCommentLanguage(filePath) {
|
|
|
25
33
|
if (filePath.endsWith(".ts") || filePath.endsWith(".tsx")) {
|
|
26
34
|
return "js";
|
|
27
35
|
}
|
|
28
|
-
|
|
36
|
+
if (filePath.endsWith(".css")) {
|
|
37
|
+
return "css";
|
|
38
|
+
}
|
|
39
|
+
return ignoreFileNames.has(path.basename(filePath)) ? "ignore" : null;
|
|
29
40
|
}
|
|
30
41
|
function visitSourcePaths(result, entryPath, fs) {
|
|
31
42
|
const entryStats = fs.statSync(entryPath);
|
|
@@ -41,5 +52,4 @@ function visitSourcePaths(result, entryPath, fs) {
|
|
|
41
52
|
if (sourceCommentLanguage(entryPath) !== null) {
|
|
42
53
|
result.push(entryPath);
|
|
43
54
|
}
|
|
44
|
-
}
|
|
45
|
-
//# sourceMappingURL=source-walk.js.map
|
|
55
|
+
}
|
package/dist/mirror/command.js
CHANGED
|
@@ -27,5 +27,4 @@ export const VALID_DTS_EXTENSIONS = new Set([".d.ts", ".d.mts", ".d.cts"]);
|
|
|
27
27
|
*
|
|
28
28
|
* @since 0.3.16-canary.0
|
|
29
29
|
*/
|
|
30
|
-
export const PACKAGE_JSON_EXPORT = "./package.json";
|
|
31
|
-
//# sourceMappingURL=constants.js.map
|
|
30
|
+
export const PACKAGE_JSON_EXPORT = "./package.json";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=dist-filesystem.js.map
|
|
1
|
+
export {};
|
|
@@ -6,5 +6,4 @@
|
|
|
6
6
|
export function resolvePackageDisplayName(packageJson, folderBasename) {
|
|
7
7
|
const declaredName = packageJson.name;
|
|
8
8
|
return typeof declaredName === "string" && declaredName.length > 0 ? declaredName : folderBasename;
|
|
9
|
-
}
|
|
10
|
-
//# sourceMappingURL=package-display-name.js.map
|
|
9
|
+
}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=types.js.map
|
|
1
|
+
export {};
|
package/dist/mirror/output.js
CHANGED
|
@@ -40,5 +40,4 @@ export function resolvePackageFilterUnderRoot(fs, rootDir, packageFilter) {
|
|
|
40
40
|
return err(new AppError("VALIDATION_ERROR", `Package path must be a subdirectory under monorepo root: ${rootDir}`));
|
|
41
41
|
}
|
|
42
42
|
return ok(normalized);
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=package-path.js.map
|
|
43
|
+
}
|
package/dist/mirror/prepare.js
CHANGED
|
@@ -155,5 +155,4 @@ export function buildSourcePathResolver(fs, packageDir) {
|
|
|
155
155
|
const tsxPath = path.join(srcDir, `${modulePath}.tsx`);
|
|
156
156
|
return fs.existsSync(tsxPath) ? `./src/${modulePath}.tsx` : `./src/${modulePath}.ts`;
|
|
157
157
|
};
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=supplement-exports.js.map
|
|
158
|
+
}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=sync-types.js.map
|
|
1
|
+
export {};
|
package/dist/mirror/sync.js
CHANGED
|
@@ -88,5 +88,4 @@ function mirrorTargetsFromWorkspaceLayout(rootDir, layoutOutcome) {
|
|
|
88
88
|
.filter((relativePath) => relativePath.length > 0);
|
|
89
89
|
relPaths.sort((left, right) => left.localeCompare(right));
|
|
90
90
|
return { relPaths, multiSource };
|
|
91
|
-
}
|
|
92
|
-
//# sourceMappingURL=sync.js.map
|
|
91
|
+
}
|
|
@@ -141,5 +141,4 @@ export async function writePackageJsonExportsAtomic(fs, packageJsonPath, mergeIn
|
|
|
141
141
|
throw new MirrorError(MirrorErrorCode.PACKAGE_WRITE, `Failed to atomically update ${packageJsonPath}: ${messageFrom(caughtRenameError)}`, caughtRenameError instanceof Error ? { cause: caughtRenameError } : undefined);
|
|
142
142
|
}
|
|
143
143
|
return { prunedKeys };
|
|
144
|
-
}
|
|
145
|
-
//# sourceMappingURL=write-exports.js.map
|
|
144
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { CLI_EXIT_GENERAL_ERROR, CLI_EXIT_SUCCESS } from "#/core/exit-codes";
|
|
2
|
+
/**
|
|
3
|
+
* Maps a pack-slim run's stats to the process exit code.
|
|
4
|
+
*
|
|
5
|
+
* @since 0.8.1
|
|
6
|
+
*/
|
|
7
|
+
export function exitCodeForPackSlimResult(stats) {
|
|
8
|
+
return stats.packagesErrored > 0 ? CLI_EXIT_GENERAL_ERROR : CLI_EXIT_SUCCESS;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Serializes a pack-slim run's stats as the single-line JSON summary printed under `--json`.
|
|
12
|
+
*
|
|
13
|
+
* @since 0.8.1
|
|
14
|
+
*/
|
|
15
|
+
export function formatPackSlimJsonOutput(stats, elapsedSeconds, write = true) {
|
|
16
|
+
return JSON.stringify({
|
|
17
|
+
schemaVersion: 1,
|
|
18
|
+
ok: stats.packagesErrored === 0,
|
|
19
|
+
write,
|
|
20
|
+
elapsedSeconds,
|
|
21
|
+
stats,
|
|
22
|
+
});
|
|
23
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Zod schema validating the serializable inputs of a pack-slim run.
|
|
4
|
+
*
|
|
5
|
+
* @since 0.8.1
|
|
6
|
+
*/
|
|
7
|
+
export const packSlimRunRequestSchema = z.object({
|
|
8
|
+
rootDir: z.string().min(1),
|
|
9
|
+
packageFilter: z.string().optional(),
|
|
10
|
+
write: z.boolean().optional(),
|
|
11
|
+
});
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import process from "node:process";
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { globalCliCommanderOptionsSchema } from "#/core/cli/global-options";
|
|
4
|
+
import { readOptionalPositionalArg } from "#/core/cli/positional";
|
|
5
|
+
import { consumeCliAppError } from "#/core/cli/result-handle";
|
|
6
|
+
import { AppError, messageFrom } from "#/core/errors";
|
|
7
|
+
import { nodeFilesystem } from "#/core/filesystem/node";
|
|
8
|
+
import { logger } from "#/core/logger";
|
|
9
|
+
import { err } from "#/core/result";
|
|
10
|
+
import { parseWithSchema } from "#/core/schema-parse";
|
|
11
|
+
import { findRepoRoot } from "#/core/workspace/resolver";
|
|
12
|
+
import { exitCodeForPackSlimResult, formatPackSlimJsonOutput } from "#/pack-slim/cli-result";
|
|
13
|
+
import { packSlimRunRequestSchema } from "#/pack-slim/cli-schema";
|
|
14
|
+
import { PackSlimProgressPresenter } from "#/pack-slim/output";
|
|
15
|
+
import { runPackSlim } from "#/pack-slim/sync";
|
|
16
|
+
import { ensureWorkingTreeClean } from "#/pack-slim/working-tree";
|
|
17
|
+
/**
|
|
18
|
+
* Creates the `pack-slim` subcommand, which slims published packages down to what a consumer reads before publish.
|
|
19
|
+
*
|
|
20
|
+
* @since 0.8.1
|
|
21
|
+
*/
|
|
22
|
+
export function createPackSlimCommand() {
|
|
23
|
+
const cmd = new Command("pack-slim")
|
|
24
|
+
.description("Strip src, source conditions, unshipped imports, dev-only scripts, devDependencies, and dist source maps from " +
|
|
25
|
+
"published packages before publish")
|
|
26
|
+
.argument("[package]", "Optional package path relative to repo root (e.g. packages/ui)")
|
|
27
|
+
.option("--dry-run", "Report what would change without touching any file", false)
|
|
28
|
+
.option("--force", "Run even if the git working tree has uncommitted tracked changes", false)
|
|
29
|
+
.option("--json", "Print one JSON summary on stdout (suppresses human progress)", false)
|
|
30
|
+
.action(async (packageArg, opts, command) => {
|
|
31
|
+
const globalsOptionCarrier = command.optsWithGlobals?.() ??
|
|
32
|
+
command.opts();
|
|
33
|
+
const globalOptionsOutcome = parseWithSchema(globalCliCommanderOptionsSchema, globalsOptionCarrier);
|
|
34
|
+
if (!consumeCliAppError(globalOptionsOutcome)) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
let rootDir;
|
|
38
|
+
try {
|
|
39
|
+
rootDir = findRepoRoot(process.cwd(), nodeFilesystem);
|
|
40
|
+
}
|
|
41
|
+
catch (caughtError) {
|
|
42
|
+
consumeCliAppError(err(new AppError("INFRA_FAILURE", messageFrom(caughtError), caughtError)));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const write = !opts.dryRun;
|
|
46
|
+
// A destructive slim must never land on a developer's uncommitted work; --dry-run writes nothing, so it is exempt.
|
|
47
|
+
if (write && !opts.force) {
|
|
48
|
+
const cleanCheck = ensureWorkingTreeClean(rootDir);
|
|
49
|
+
if (!consumeCliAppError(cleanCheck)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const parsed = parseWithSchema(packSlimRunRequestSchema, {
|
|
54
|
+
rootDir,
|
|
55
|
+
packageFilter: readOptionalPositionalArg(packageArg),
|
|
56
|
+
write,
|
|
57
|
+
});
|
|
58
|
+
if (!consumeCliAppError(parsed)) {
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const json = !!opts.json;
|
|
62
|
+
const presenter = new PackSlimProgressPresenter();
|
|
63
|
+
if (!json) {
|
|
64
|
+
presenter.configure({ dryRun: !write });
|
|
65
|
+
}
|
|
66
|
+
const startTime = performance.now();
|
|
67
|
+
const outcome = await runPackSlim(nodeFilesystem, {
|
|
68
|
+
...parsed.value,
|
|
69
|
+
listener: json ? undefined : presenter,
|
|
70
|
+
});
|
|
71
|
+
if (!consumeCliAppError(outcome)) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (json) {
|
|
75
|
+
logger.out(formatPackSlimJsonOutput(outcome.value, (performance.now() - startTime) / 1000, write));
|
|
76
|
+
}
|
|
77
|
+
process.exitCode = exitCodeForPackSlimResult(outcome.value);
|
|
78
|
+
});
|
|
79
|
+
return cmd;
|
|
80
|
+
}
|