optiprune 2.5.0 → 2.6.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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ![OptiPrune analyzer animation](https://raw.githubusercontent.com/optiprune/core/main/animation.svg)
2
2
 
3
- [![CLI npm version](https://img.shields.io/npm/v/%40optiprune%2Fcli?label=%40optiprune%2Fcli)](https://www.npmjs.com/package/@optiprune/cli)[![Core npm version](https://img.shields.io/npm/v/%40optiprune%2Fcore?label=%40optiprune%2Fcore)](https://www.npmjs.com/package/@optiprune/core)[![CLI package](https://img.shields.io/github/package-json/v/optiprune/cli?label=CLI%20package)](https://github.com/optiprune/cli)[![Core tests](https://img.shields.io/github/actions/workflow/status/optiprune/core/tests.yml?branch=main&label=core%20tests)](https://github.com/optiprune/core/actions/workflows/tests.yml)[![License](https://img.shields.io/github/license/optiprune/cli)](./LICENSE)[![Node.js](https://img.shields.io/badge/Node.js-%3E%3D21-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
3
+ [![CLI npm version](https://img.shields.io/npm/v/%40optiprune%2Fcli?label=%40optiprune%2Fcli)](https://www.npmjs.com/package/@optiprune/cli)[![Core npm version](https://img.shields.io/npm/v/%40optiprune%2Fcore?label=%40optiprune%2Fcore)](https://www.npmjs.com/package/@optiprune/core)[![CLI package](https://img.shields.io/github/package-json/v/optiprune/cli?label=CLI%20package)](https://github.com/optiprune/cli)[![Core tests](https://img.shields.io/github/actions/workflow/status/optiprune/core/tests-push.yml?branch=main&label=core%20tests)](https://github.com/optiprune/core/actions/workflows/tests-push.yml)[![License](https://img.shields.io/github/license/optiprune/cli)](./LICENSE)[![Node.js](https://img.shields.io/badge/Node.js-%3E%3D20-339933?logo=node.js&logoColor=white)](https://nodejs.org/)
4
4
 
5
5
  # OptiPrune
6
6
 
@@ -213,4 +213,4 @@ The Core repository uses Vitest for its test suite. The workflow badges above re
213
213
  | CLI package | [npmjs.com/package/@optiprune/cli](https://www.npmjs.com/package/@optiprune/cli) |
214
214
  | Core package | [npmjs.com/package/@optiprune/core](https://www.npmjs.com/package/@optiprune/core) |
215
215
  | Documentation site | [opti.drml.int.yt](https://opti.drml.int.yt/) |
216
- | License | [MIT](./LICENSE) |
216
+ | License | [MIT](./LICENSE) |
package/dist/cli.js CHANGED
@@ -2,11 +2,9 @@
2
2
  import path from "pathe";
3
3
  import fs from "node:fs";
4
4
  import { fileURLToPath } from "node:url";
5
- import { Command } from "commander";
5
+ import { parseArgs } from "node:util";
6
6
  import { assertPluginsExist } from "./plugin-resolution.js";
7
- const program = new Command();
8
7
  const FIX_TARGETS = new Set(["files", "exports", "dependencies", "devDependencies", "conditions", "json"]);
9
- // Test and fixture patterns defined directly in the CLI
10
8
  const TEST_IGNORE_PATTERNS = [
11
9
  "**/test/**",
12
10
  "**/tests/**",
@@ -21,8 +19,6 @@ const TEST_IGNORE_PATTERNS = [
21
19
  "**/*.spec.tsx",
22
20
  "**/*.spec.jsx",
23
21
  ];
24
- // Using @ts-ignore for core imports as CI environments sometimes struggle
25
- // with subpath exports resolution in strict NodeNext mode.
26
22
  // @ts-ignore
27
23
  import { analyze, shouldFail, exportCache, importCache, loadConfig, mergeConfig, DEFAULT_CONFIG } from "@optiprune/core";
28
24
  // @ts-ignore
@@ -32,7 +28,6 @@ const bold = (s) => `\x1b[1m${s}\x1b[0m`;
32
28
  const yellow = (s) => `\x1b[33m${s}\x1b[0m`;
33
29
  const red = (s) => `\x1b[31m${s}\x1b[0m`;
34
30
  const dim = (s) => `\x1b[2m${s}\x1b[0m`;
35
- // Helper to find the CLI package version
36
31
  function getCliVersion() {
37
32
  try {
38
33
  const currentDir = path.dirname(fileURLToPath(import.meta.url));
@@ -50,7 +45,6 @@ function getCliVersion() {
50
45
  catch (e) { }
51
46
  return "unknown";
52
47
  }
53
- // Helper to find the core version safely
54
48
  function getCoreVersion(rootDir) {
55
49
  try {
56
50
  const localCore = path.join(rootDir, "node_modules/@optiprune/core/package.json");
@@ -72,197 +66,325 @@ function getCoreVersion(rootDir) {
72
66
  catch (e) { }
73
67
  return "1.12.1";
74
68
  }
75
- const cliVersion = getCliVersion();
76
- const coreVersion = getCoreVersion(process.cwd());
77
- program
78
- .name("optiprune")
79
- .description("Finds dead code in TypeScript/JavaScript projects.")
80
- .version(`CLI: ${cliVersion}, Core: ${coreVersion}`, "-V, --version", "output the version number");
81
- program
82
- .command("analyze", { isDefault: true })
83
- .description("Perform full analysis of the project")
84
- .option("-r, --rootDir <path>", "Root directory of the project", process.cwd())
85
- .option("-e, --entry <patterns...>", "Entry point patterns (glob or file paths)", undefined)
86
- .option("-x, --extensions <exts...>", "File extensions to analyze", [".ts", ".tsx", ".js", ".jsx", ".vue"])
87
- .option("-i, --ignore <patterns...>", "Ignore patterns (glob)", undefined)
88
- .option("--no-report-unused-exports", "Do not report unused exports")
89
- .option("--no-conventional-entries", "Do not include conventional entry points (e.g., src/index.ts)")
90
- .option("--include-entry-exports", "Report unused exports declared directly in entry files")
91
- .option("--include-entry-members", "Report unused members declared in objects exported directly from entry files")
92
- .option("--cycles", "Print detected dependency cycles")
93
- .option("--ignore-tests", "Ignore test files such as test.ts, *.test.ts, fixtures, and __tests__ files")
94
- .option("--ignore-unknown-import", "Ignore dynamic and unknown import patterns for reachability")
95
- .option("--fail-on <confidence>", "Fail on findings with confidence level (high, medium, low, none)", "high")
96
- .option("--json", "Output results as JSON")
97
- .option("--sarif", "Output results in SARIF format")
98
- .option("--skip <layers...>", "Skip analysis layers (3, 4, or smt)")
99
- .option("-v, --verbose", "Show verbose output and internal graph state; with --json includes structured debug diagnostics")
100
- .option("--fix <rules...>", "Fix selected targets: files, exports, dependencies, devDependencies, conditions, json")
101
- .option("--fix-json", "Safely repair recoverable package.json JSON errors (equivalent to --fix json)")
102
- .option("--plugins <names...>", "Force-enable built-in plugins by name (for example: astro vite vitest)")
103
- .option("--confidence <level>", "Minimum confidence to fix (high, medium+, low+, all)", "high")
104
- .option("--force", "Allow fixes when the source edit is otherwise considered unsafe")
105
- .option("--dry-run", "Log what would be fixed without changing files")
106
- .option("--cache-from <path>", "Path to a JSON file to import cache from before analysis")
107
- .option("--cache-to <path>", "Path to export the resulting cache to after analysis")
108
- .action(async (options, command) => {
109
- try {
110
- const isCliOverride = (name) => command.getOptionValueSource(name) === "cli";
111
- const targetRootDir = path.resolve(options.rootDir ?? process.cwd());
112
- // 1. Read project config via core's loadConfig
113
- const fileConfig = typeof loadConfig === "function" ? await loadConfig(targetRootDir) : {};
114
- // 2. Resolve fix configurations
115
- let fixOption = undefined;
116
- const hasExplicitFix = isCliOverride("fix");
117
- const hasJsonFix = isCliOverride("fixJson") && !!options.fixJson;
118
- const hasFixFlags = hasExplicitFix || hasJsonFix || isCliOverride("confidence") || isCliOverride("force") || isCliOverride("dryRun");
119
- if (hasFixFlags) {
120
- if (!hasExplicitFix && !hasJsonFix) {
121
- throw new Error("--confidence, --force, and --dry-run require --fix <target...> or --fix-json");
122
- }
123
- const requestedTargets = [
124
- ...(hasExplicitFix ? options.fix : []),
125
- ...(hasJsonFix ? ["json"] : []),
126
- ];
127
- const invalidTargets = requestedTargets.filter((target) => !FIX_TARGETS.has(target));
128
- if (invalidTargets.length > 0) {
129
- throw new Error(`Unknown --fix target(s): ${invalidTargets.join(", ")}. Choose files, exports, dependencies, devDependencies, conditions, or json.`);
130
- }
131
- fixOption = {
132
- confidence: options.confidence,
133
- rules: [...new Set(requestedTargets)],
134
- force: !!options.force,
135
- dryRun: !!options.dryRun,
136
- };
137
- }
138
- // 3. Determine if test ignoring is active (CLI flag OR config file setting)
139
- const shouldIgnoreTests = isCliOverride("ignoreTests")
140
- ? !!options.ignoreTests
141
- : !!fileConfig.ignoreTests;
142
- // 4. Resolve ignore patterns directly in the CLI
143
- let mergedIgnore = undefined;
144
- const cliIgnore = isCliOverride("ignore") ? options.ignore : undefined;
145
- const baseIgnore = cliIgnore ?? (Array.isArray(fileConfig.ignore) ? fileConfig.ignore : []);
146
- if (shouldIgnoreTests || baseIgnore.length > 0) {
147
- const testGlobs = shouldIgnoreTests ? TEST_IGNORE_PATTERNS : [];
148
- mergedIgnore = Array.from(new Set([...testGlobs, ...baseIgnore]));
69
+ function printHelp() {
70
+ console.log(`
71
+ Usage: optiprune [command] [options]
72
+
73
+ Finds dead code in TypeScript/JavaScript projects.
74
+
75
+ Commands:
76
+ analyze [options] Perform full analysis of the project (default)
77
+ export-cache <targetPath> Export current analysis cache to a JSON file
78
+ import-cache <sourcePath> Import cache JSON file into local directory
79
+
80
+ Options:
81
+ -V, --version Output the version number
82
+ -h, --help Display this help text
83
+
84
+ Analyze Options:
85
+ -r, --rootDir <path> Root directory of project (default: cwd)
86
+ -e, --entry <patterns...> Entry point patterns
87
+ -x, --extensions <exts...> Extensions to analyze (default: .ts .tsx .js .jsx .vue)
88
+ -i, --ignore <patterns...> Ignore patterns (glob)
89
+ --no-report-unused-exports Do not report unused exports
90
+ --no-conventional-entries Do not include conventional entry points
91
+ --include-entry-exports Report unused exports in entry files
92
+ --include-entry-members Report unused members in entry files
93
+ --cycles Print detected dependency cycles
94
+ --ignore-tests Ignore test files and fixtures
95
+ --ignore-unknown-import Ignore dynamic/unknown import reachability
96
+ --fail-on <confidence> Fail confidence: high, medium, low, none (default: high)
97
+ --json Output results as JSON
98
+ --sarif Output results in SARIF format
99
+ --skip <layers...> Skip analysis layers: 3, 4, smt
100
+ -v, --verbose Show verbose output and internal graph state
101
+ --fix <rules...> Fix targets: files, exports, dependencies, etc.
102
+ --fix-json Safely repair recoverable package.json JSON errors
103
+ --plugins <names...> Force-enable plugins by name (e.g. astro vite vitest)
104
+ --confidence <level> Min fix confidence: high, medium+, low+, all (default: high)
105
+ --force Allow unsafe fixes
106
+ --dry-run Log fixes without writing files
107
+ --cache-from <path> Import cache JSON prior to analysis
108
+ --cache-to <path> Export resulting cache to JSON after analysis
109
+ `);
110
+ }
111
+ /** Preprocesses arguments so variadic flags work like Commander (e.g., `--extensions .ts .tsx`) */
112
+ function normalizeVariadicFlags(args, variadicNames) {
113
+ const result = [];
114
+ const variadicSet = new Set(variadicNames);
115
+ let currentFlag = null;
116
+ for (let i = 0; i < args.length; i++) {
117
+ const arg = args[i];
118
+ if (arg.startsWith("-")) {
119
+ const flagName = arg.split("=")[0].replace(/^-+/, "");
120
+ currentFlag = variadicSet.has(flagName) ? arg.split("=")[0] : null;
121
+ result.push(arg);
149
122
  }
150
- // 5. Resolve explicitly requested plugins before building overrides.
151
- const requestedPlugins = isCliOverride("plugins") ? options.plugins : [];
152
- const resolvedPlugins = requestedPlugins.length > 0 ? assertPluginsExist(requestedPlugins) : [];
153
- // 6. Build CLI overrides
154
- const skipValues = isCliOverride("skip") ? options.skip : [];
155
- const invalidSkipValues = skipValues.filter((value) => !["3", "4", "smt"].includes(value.toLowerCase()));
156
- if (invalidSkipValues.length > 0) {
157
- throw new Error(`Unknown --skip value(s): ${invalidSkipValues.join(", ")}. Choose 3, 4, or smt.`);
123
+ else if (currentFlag && !arg.startsWith("-")) {
124
+ result.push(currentFlag, arg);
158
125
  }
159
- const skipLayers = {
160
- ...(fileConfig.layers ?? {}),
161
- ...(skipValues.some((value) => value === "3") && { skip3: true }),
162
- ...(skipValues.some((value) => value === "4") && { skip4: true }),
163
- ...(skipValues.some((value) => value.toLowerCase() === "smt") && { skipSmt: true, skip3: true }),
164
- };
165
- const cliOverrides = {
166
- ...(isCliOverride("rootDir") && { rootDir: targetRootDir }),
167
- ...(isCliOverride("entry") && { entry: options.entry }),
168
- ...(isCliOverride("extensions") && { extensions: options.extensions }),
169
- ...(mergedIgnore !== undefined && { ignore: mergedIgnore }),
170
- ...(shouldIgnoreTests && { ignoreTests: true }),
171
- ...(isCliOverride("reportUnusedExports") && {
172
- reportUnusedExports: options.reportUnusedExports,
173
- }),
174
- ...(isCliOverride("conventionalEntries") && {
175
- includeConventionalEntries: options.conventionalEntries,
176
- }),
177
- ...(isCliOverride("includeEntryExports") && { includeEntryExports: options.includeEntryExports }),
178
- ...(isCliOverride("includeEntryMembers") && { includeEntryMembers: options.includeEntryMembers }),
179
- ...(isCliOverride("cycles") && { cycles: options.cycles }),
180
- ...(isCliOverride("ignoreUnknownImport") && { ignoreUnknownImport: options.ignoreUnknownImport }),
181
- ...(isCliOverride("failOn") && { failOn: options.failOn }),
182
- ...(isCliOverride("json") && { json: options.json }),
183
- ...(isCliOverride("skip") && { layers: skipLayers }),
184
- ...(isCliOverride("verbose") && { verbose: options.verbose }),
185
- ...(isCliOverride("plugins") && {
186
- plugins: {
187
- ...(fileConfig.plugins ?? {}),
188
- ...Object.fromEntries(resolvedPlugins.map((plugin) => [plugin, true])),
189
- },
190
- }),
191
- ...(fixOption !== undefined && { fix: fixOption }),
192
- ...(isCliOverride("cacheFrom") && { cacheFrom: options.cacheFrom }),
193
- ...(isCliOverride("cacheTo") && { cacheTo: options.cacheTo }),
194
- };
195
- // 7. Merge DEFAULT_CONFIG -> fileConfig -> cliOverrides
196
- const baseConfig = {
197
- ...DEFAULT_CONFIG,
198
- rootDir: targetRootDir,
199
- entry: [...DEFAULT_CONFIG.entry],
200
- extensions: [...DEFAULT_CONFIG.extensions],
201
- ignore: [...DEFAULT_CONFIG.ignore],
202
- ignoreDependencies: [...DEFAULT_CONFIG.ignoreDependencies],
203
- packageIgnoreDependencies: new Map(DEFAULT_CONFIG.packageIgnoreDependencies),
204
- externalContracts: [...DEFAULT_CONFIG.externalContracts],
205
- pathAliases: new Map(DEFAULT_CONFIG.pathAliases),
206
- packageImports: new Map(DEFAULT_CONFIG.packageImports),
207
- layers: { ...DEFAULT_CONFIG.layers },
208
- rules: { ...DEFAULT_CONFIG.rules },
209
- plugins: { ...DEFAULT_CONFIG.plugins },
210
- workspaceGlobs: [...DEFAULT_CONFIG.workspaceGlobs],
211
- projectPatterns: [...DEFAULT_CONFIG.projectPatterns],
212
- unreachableFileIgnorePatterns: [...DEFAULT_CONFIG.unreachableFileIgnorePatterns],
213
- protectedExportPatterns: [...DEFAULT_CONFIG.protectedExportPatterns],
214
- frameworks: [...DEFAULT_CONFIG.frameworks],
215
- };
216
- const resolvedWithFile = mergeConfig(baseConfig, fileConfig);
217
- const finalConfig = mergeConfig(resolvedWithFile, cliOverrides);
218
- const report = await analyze(finalConfig);
219
- if (options.sarif) {
220
- console.log(formatSarif(report));
126
+ else {
127
+ currentFlag = null;
128
+ result.push(arg);
221
129
  }
222
- else if (finalConfig.json || options.json) {
223
- console.log(JSON.stringify(report, (k, v) => typeof v === 'bigint' ? v.toString() : v, 2));
130
+ }
131
+ return result;
132
+ }
133
+ async function runAnalyze(args) {
134
+ const normalizedArgs = normalizeVariadicFlags(args, ["entry", "e", "extensions", "x", "ignore", "i", "skip", "fix", "plugins"]);
135
+ const optionsConfig = {
136
+ help: { type: "boolean", short: "h" },
137
+ rootDir: { type: "string", short: "r" },
138
+ entry: { type: "string", short: "e", multiple: true },
139
+ extensions: { type: "string", short: "x", multiple: true },
140
+ ignore: { type: "string", short: "i", multiple: true },
141
+ "report-unused-exports": { type: "boolean", default: true },
142
+ "no-report-unused-exports": { type: "boolean" },
143
+ "conventional-entries": { type: "boolean", default: true },
144
+ "no-conventional-entries": { type: "boolean" },
145
+ "include-entry-exports": { type: "boolean" },
146
+ "include-entry-members": { type: "boolean" },
147
+ cycles: { type: "boolean" },
148
+ "ignore-tests": { type: "boolean" },
149
+ "ignore-unknown-import": { type: "boolean" },
150
+ "fail-on": { type: "string", default: "high" },
151
+ json: { type: "boolean" },
152
+ sarif: { type: "boolean" },
153
+ skip: { type: "string", multiple: true },
154
+ verbose: { type: "boolean", short: "v" },
155
+ fix: { type: "string", multiple: true },
156
+ "fix-json": { type: "boolean" },
157
+ plugins: { type: "string", multiple: true },
158
+ confidence: { type: "string", default: "high" },
159
+ force: { type: "boolean" },
160
+ "dry-run": { type: "boolean" },
161
+ "cache-from": { type: "string" },
162
+ "cache-to": { type: "string" },
163
+ };
164
+ const { values } = parseArgs({
165
+ args: normalizedArgs,
166
+ options: optionsConfig,
167
+ strict: true,
168
+ allowPositionals: false,
169
+ });
170
+ if (values.help) {
171
+ printHelp();
172
+ return;
173
+ }
174
+ // Checks both long form (--rootDir) and short alias (-r)
175
+ const isCliOverride = (longFlag, shortFlag) => {
176
+ return args.some((arg) => {
177
+ const base = arg.split("=")[0];
178
+ return (base === `--${longFlag}` ||
179
+ base === `--no-${longFlag}` ||
180
+ (shortFlag ? base === `-${shortFlag}` : false));
181
+ });
182
+ };
183
+ const targetRootDir = path.resolve(values.rootDir ?? process.cwd());
184
+ // 1. Read project config via core's loadConfig
185
+ const fileConfig = typeof loadConfig === "function" ? await loadConfig(targetRootDir) : {};
186
+ // 2. Resolve fix configurations
187
+ let fixOption = undefined;
188
+ const hasExplicitFix = isCliOverride("fix");
189
+ const hasJsonFix = isCliOverride("fix-json") && Boolean(values["fix-json"]);
190
+ const hasFixFlags = hasExplicitFix || hasJsonFix || isCliOverride("confidence") || isCliOverride("force") || isCliOverride("dry-run");
191
+ if (hasFixFlags) {
192
+ if (!hasExplicitFix && !hasJsonFix) {
193
+ throw new Error("--confidence, --force, and --dry-run require --fix <target...> or --fix-json");
224
194
  }
225
- else {
226
- const terminal = formatTerminal(report, { showCycles: !!finalConfig.cycles });
227
- console.log(terminal);
195
+ const requestedTargets = [
196
+ ...(hasExplicitFix && Array.isArray(values.fix) ? values.fix : []),
197
+ ...(hasJsonFix ? ["json"] : []),
198
+ ];
199
+ const invalidTargets = requestedTargets.filter((target) => !FIX_TARGETS.has(target));
200
+ if (invalidTargets.length > 0) {
201
+ throw new Error(`Unknown --fix target(s): ${invalidTargets.join(", ")}. Choose files, exports, dependencies, devDependencies, conditions, or json.`);
228
202
  }
229
- if (shouldFail(report, (finalConfig.failOn ?? options.failOn)))
230
- process.exit(1);
203
+ fixOption = {
204
+ confidence: values.confidence ?? "high",
205
+ rules: [...new Set(requestedTargets)],
206
+ force: Boolean(values.force),
207
+ dryRun: Boolean(values["dry-run"]),
208
+ };
231
209
  }
232
- catch (error) {
233
- console.error("An unexpected error occurred during analysis:", error);
234
- process.exit(1);
210
+ // 3. Determine if test ignoring is active
211
+ const shouldIgnoreTests = isCliOverride("ignore-tests")
212
+ ? Boolean(values["ignore-tests"])
213
+ : Boolean(fileConfig.ignoreTests);
214
+ // 4. Resolve ignore patterns
215
+ let mergedIgnore = undefined;
216
+ const cliIgnore = isCliOverride("ignore", "i") ? values.ignore : undefined;
217
+ const baseIgnore = cliIgnore ?? (Array.isArray(fileConfig.ignore) ? fileConfig.ignore : []);
218
+ if (shouldIgnoreTests || baseIgnore.length > 0) {
219
+ const testGlobs = shouldIgnoreTests ? TEST_IGNORE_PATTERNS : [];
220
+ mergedIgnore = Array.from(new Set([...testGlobs, ...baseIgnore]));
235
221
  }
236
- });
237
- program
238
- .command("export-cache <targetPath>")
239
- .description("Export the current analysis cache to a JSON file")
240
- .option("-r, --rootDir <path>", "Root directory of the project", process.cwd())
241
- .action(async (targetPath, options) => {
242
- try {
243
- const rootDir = options.rootDir ?? process.cwd();
244
- await exportCache(rootDir, targetPath);
245
- console.log(`${yellow("✔")} Cache exported to ${bold(targetPath)}`);
222
+ // 5. Resolve explicitly requested plugins
223
+ const requestedPlugins = isCliOverride("plugins") ? (values.plugins ?? []) : [];
224
+ const resolvedPlugins = requestedPlugins.length > 0 ? assertPluginsExist(requestedPlugins) : [];
225
+ // 6. Build CLI overrides
226
+ const skipValues = isCliOverride("skip") ? (values.skip ?? []) : [];
227
+ const invalidSkipValues = skipValues.filter((value) => !["3", "4", "smt"].includes(value.toLowerCase()));
228
+ if (invalidSkipValues.length > 0) {
229
+ throw new Error(`Unknown --skip value(s): ${invalidSkipValues.join(", ")}. Choose 3, 4, or smt.`);
246
230
  }
247
- catch (error) {
248
- console.error("Failed to export cache:", error);
231
+ const skipLayers = {
232
+ ...(fileConfig.layers ?? {}),
233
+ ...(skipValues.some((value) => value === "3") && { skip3: true }),
234
+ ...(skipValues.some((value) => value === "4") && { skip4: true }),
235
+ ...(skipValues.some((value) => value.toLowerCase() === "smt") && { skipSmt: true, skip3: true }),
236
+ };
237
+ const reportUnusedExports = values["no-report-unused-exports"] ? false : Boolean(values["report-unused-exports"]);
238
+ const conventionalEntries = values["no-conventional-entries"] ? false : Boolean(values["conventional-entries"]);
239
+ const cliOverrides = {
240
+ ...(isCliOverride("rootDir", "r") && { rootDir: targetRootDir }),
241
+ ...(isCliOverride("entry", "e") && values.entry && { entry: values.entry }),
242
+ ...(isCliOverride("extensions", "x")
243
+ ? values.extensions ? { extensions: values.extensions } : {}
244
+ : { extensions: [".ts", ".tsx", ".js", ".jsx", ".vue"] }),
245
+ ...(mergedIgnore !== undefined && { ignore: mergedIgnore }),
246
+ ...(shouldIgnoreTests && { ignoreTests: true }),
247
+ ...(isCliOverride("report-unused-exports") && { reportUnusedExports }),
248
+ ...(isCliOverride("conventional-entries") && { includeConventionalEntries: conventionalEntries }),
249
+ ...(isCliOverride("include-entry-exports") && { includeEntryExports: Boolean(values["include-entry-exports"]) }),
250
+ ...(isCliOverride("include-entry-members") && { includeEntryMembers: Boolean(values["include-entry-members"]) }),
251
+ ...(isCliOverride("cycles") && { cycles: Boolean(values.cycles) }),
252
+ ...(isCliOverride("ignore-unknown-import") && { ignoreUnknownImport: Boolean(values["ignore-unknown-import"]) }),
253
+ ...(isCliOverride("fail-on") && values["fail-on"] && { failOn: values["fail-on"] }),
254
+ ...(isCliOverride("json") && { json: Boolean(values.json) }),
255
+ ...(isCliOverride("skip") && { layers: skipLayers }),
256
+ ...(isCliOverride("verbose", "v") && { verbose: Boolean(values.verbose) }),
257
+ ...(isCliOverride("plugins") && {
258
+ plugins: {
259
+ ...(fileConfig.plugins ?? {}),
260
+ ...Object.fromEntries(resolvedPlugins.map((plugin) => [plugin, true])),
261
+ },
262
+ }),
263
+ ...(fixOption !== undefined && { fix: fixOption }),
264
+ ...(isCliOverride("cache-from") && values["cache-from"] && { cacheFrom: values["cache-from"] }),
265
+ ...(isCliOverride("cache-to") && values["cache-to"] && { cacheTo: values["cache-to"] }),
266
+ };
267
+ // 7. Merge DEFAULT_CONFIG -> fileConfig -> cliOverrides
268
+ const baseConfig = {
269
+ ...DEFAULT_CONFIG,
270
+ rootDir: targetRootDir,
271
+ entry: [...DEFAULT_CONFIG.entry],
272
+ extensions: [...DEFAULT_CONFIG.extensions],
273
+ ignore: [...DEFAULT_CONFIG.ignore],
274
+ ignoreDependencies: [...DEFAULT_CONFIG.ignoreDependencies],
275
+ packageIgnoreDependencies: new Map(DEFAULT_CONFIG.packageIgnoreDependencies),
276
+ externalContracts: [...DEFAULT_CONFIG.externalContracts],
277
+ pathAliases: new Map(DEFAULT_CONFIG.pathAliases),
278
+ packageImports: new Map(DEFAULT_CONFIG.packageImports),
279
+ layers: { ...DEFAULT_CONFIG.layers },
280
+ rules: { ...DEFAULT_CONFIG.rules },
281
+ plugins: { ...DEFAULT_CONFIG.plugins },
282
+ workspaceGlobs: [...DEFAULT_CONFIG.workspaceGlobs],
283
+ projectPatterns: [...DEFAULT_CONFIG.projectPatterns],
284
+ unreachableFileIgnorePatterns: [...DEFAULT_CONFIG.unreachableFileIgnorePatterns],
285
+ protectedExportPatterns: [...DEFAULT_CONFIG.protectedExportPatterns],
286
+ frameworks: [...DEFAULT_CONFIG.frameworks],
287
+ };
288
+ const resolvedWithFile = mergeConfig(baseConfig, fileConfig);
289
+ const finalConfig = mergeConfig(resolvedWithFile, cliOverrides);
290
+ const report = await analyze(finalConfig);
291
+ if (values.sarif) {
292
+ console.log(formatSarif(report));
293
+ }
294
+ else if (finalConfig.json || values.json) {
295
+ console.log(JSON.stringify(report, (k, v) => typeof v === "bigint" ? v.toString() : v, 2));
296
+ }
297
+ else {
298
+ const terminal = formatTerminal(report, { showCycles: Boolean(finalConfig.cycles) });
299
+ console.log(terminal);
300
+ }
301
+ const failTarget = (finalConfig.failOn ?? values["fail-on"] ?? "high");
302
+ if (shouldFail(report, failTarget)) {
249
303
  process.exit(1);
250
304
  }
251
- });
252
- program
253
- .command("import-cache <sourcePath>")
254
- .description("Import an external cache JSON file into the local directory")
255
- .option("-r, --rootDir <path>", "Root directory of the project", process.cwd())
256
- .action(async (sourcePath, options) => {
305
+ }
306
+ async function runExportCache(args) {
307
+ const { values, positionals } = parseArgs({
308
+ args,
309
+ options: {
310
+ rootDir: { type: "string", short: "r" },
311
+ help: { type: "boolean", short: "h" },
312
+ },
313
+ allowPositionals: true,
314
+ });
315
+ const targetPath = positionals[0];
316
+ if (values.help || !targetPath) {
317
+ console.log("Usage: optiprune export-cache <targetPath> [-r, --rootDir <path>]");
318
+ if (!targetPath && !values.help)
319
+ process.exit(1);
320
+ return;
321
+ }
322
+ const rootDir = values.rootDir ?? process.cwd();
323
+ await exportCache(rootDir, targetPath);
324
+ console.log(`${yellow("✔")} Cache exported to ${bold(targetPath)}`);
325
+ }
326
+ async function runImportCache(args) {
327
+ const { values, positionals } = parseArgs({
328
+ args,
329
+ options: {
330
+ rootDir: { type: "string", short: "r" },
331
+ help: { type: "boolean", short: "h" },
332
+ },
333
+ allowPositionals: true,
334
+ });
335
+ const sourcePath = positionals[0];
336
+ if (values.help || !sourcePath) {
337
+ console.log("Usage: optiprune import-cache <sourcePath> [-r, --rootDir <path>]");
338
+ if (!sourcePath && !values.help)
339
+ process.exit(1);
340
+ return;
341
+ }
342
+ const rootDir = values.rootDir ?? process.cwd();
343
+ await importCache(rootDir, sourcePath);
344
+ console.log(`${yellow("✔")} Cache imported from ${bold(sourcePath)}`);
345
+ }
346
+ async function main() {
347
+ const rawArgs = process.argv.slice(2);
348
+ if (rawArgs.includes("-V") || rawArgs.includes("--version")) {
349
+ const cliVersion = getCliVersion();
350
+ const coreVersion = getCoreVersion(process.cwd());
351
+ console.log(`CLI: ${cliVersion}, Core: ${coreVersion}`);
352
+ return;
353
+ }
354
+ if (rawArgs.includes("-h") || rawArgs.includes("--help")) {
355
+ printHelp();
356
+ return;
357
+ }
358
+ const firstArg = rawArgs[0];
359
+ const subcommands = new Set(["analyze", "export-cache", "import-cache"]);
360
+ let command = "analyze";
361
+ let commandArgs = rawArgs;
362
+ if (firstArg !== undefined && subcommands.has(firstArg)) {
363
+ command = firstArg;
364
+ commandArgs = rawArgs.slice(1);
365
+ }
257
366
  try {
258
- const rootDir = options.rootDir ?? process.cwd();
259
- await importCache(rootDir, sourcePath);
260
- console.log(`${yellow("✔")} Cache imported from ${bold(sourcePath)}`);
367
+ switch (command) {
368
+ case "analyze":
369
+ await runAnalyze(commandArgs);
370
+ break;
371
+ case "export-cache":
372
+ await runExportCache(commandArgs);
373
+ break;
374
+ case "import-cache":
375
+ await runImportCache(commandArgs);
376
+ break;
377
+ }
261
378
  }
262
379
  catch (error) {
263
- console.error("Failed to import cache:", error);
380
+ if (command === "analyze") {
381
+ console.error("An unexpected error occurred during analysis:", error);
382
+ }
383
+ else {
384
+ console.error(error?.message ?? error);
385
+ }
264
386
  process.exit(1);
265
387
  }
266
- });
267
- program.parse(process.argv);
388
+ }
389
+ main();
268
390
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "optiprune",
3
- "version": "2.5.0",
3
+ "version": "2.6.0",
4
4
  "description": "CLI for resilient static dead-code analyzer for TypeScript and JavaScript workspaces.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -69,12 +69,11 @@
69
69
  "./package.json": "./package.json"
70
70
  },
71
71
  "dependencies": {
72
- "@optiprune/core": "^1.13.0",
73
- "commander": "^15.0.0",
72
+ "@optiprune/core": "^1.16.0",
74
73
  "pathe": "2.0.3"
75
74
  },
76
75
  "devDependencies": {
77
- "@types/node": "^22.20.1",
76
+ "@types/node": "^20.0.01",
78
77
  "typescript": "^5.8.3"
79
78
  },
80
79
  "optionalDependencies": {