optiprune 2.5.0 → 2.7.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
 
@@ -35,7 +35,7 @@ pnpm add -D @optiprune/cli
35
35
  yarn add -D @optiprune/cli
36
36
  ```
37
37
 
38
- The Core package currently requires Node.js 21 or newer.
38
+ The Core package currently requires Node.js 20 or newer.
39
39
 
40
40
  ## Quick start
41
41
 
@@ -138,6 +138,8 @@ npx @optiprune/cli import-cache .optiprune/cache.json
138
138
 
139
139
  `export-cache` and `import-cache` accept `-r, --rootDir <path>` when the cache belongs to a directory other than the current working directory.
140
140
 
141
+ Cache entries are valid only for the same Core version and the same enabled plugin versions by default. A Core update, enabled-plugin update, or change in which plugins are enabled therefore starts a fresh cache. Use `--stop-new-cache-on-update` when intentionally reusing an existing cache across such updates.
142
+
141
143
  ## Configuration
142
144
 
143
145
  OptiPrune reads configuration through the Core loader. Supported sources include:
@@ -213,4 +215,4 @@ The Core repository uses Vitest for its test suite. The workflow badges above re
213
215
  | CLI package | [npmjs.com/package/@optiprune/cli](https://www.npmjs.com/package/@optiprune/cli) |
214
216
  | Core package | [npmjs.com/package/@optiprune/core](https://www.npmjs.com/package/@optiprune/core) |
215
217
  | Documentation site | [opti.drml.int.yt](https://opti.drml.int.yt/) |
216
- | License | [MIT](./LICENSE) |
218
+ | 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,331 @@ 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
- };
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
+ --stop-new-cache-on-update Reuse cache across Core or plugin version updates
110
+ `);
111
+ }
112
+ /** Preprocesses arguments so variadic flags work like Commander (e.g., `--extensions .ts .tsx`) */
113
+ function normalizeVariadicFlags(args, variadicNames) {
114
+ const result = [];
115
+ const variadicSet = new Set(variadicNames);
116
+ let currentFlag = null;
117
+ for (let i = 0; i < args.length; i++) {
118
+ const arg = args[i];
119
+ if (arg.startsWith("-")) {
120
+ const hasEquals = arg.includes("=");
121
+ const flagName = arg.split("=")[0].replace(/^-+/, "");
122
+ currentFlag = !hasEquals && variadicSet.has(flagName) ? arg : null;
123
+ result.push(arg);
137
124
  }
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]));
125
+ else if (currentFlag && !arg.startsWith("-")) {
126
+ result.push(currentFlag, arg);
149
127
  }
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.`);
128
+ else {
129
+ currentFlag = null;
130
+ result.push(arg);
158
131
  }
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));
132
+ }
133
+ return result;
134
+ }
135
+ async function runAnalyze(args) {
136
+ const normalizedArgs = normalizeVariadicFlags(args, ["entry", "e", "extensions", "x", "ignore", "i", "skip", "fix", "plugins"]);
137
+ const optionsConfig = {
138
+ help: { type: "boolean", short: "h" },
139
+ rootDir: { type: "string", short: "r" },
140
+ entry: { type: "string", short: "e", multiple: true },
141
+ extensions: { type: "string", short: "x", multiple: true },
142
+ ignore: { type: "string", short: "i", multiple: true },
143
+ "report-unused-exports": { type: "boolean", default: true },
144
+ "no-report-unused-exports": { type: "boolean" },
145
+ "conventional-entries": { type: "boolean", default: true },
146
+ "no-conventional-entries": { type: "boolean" },
147
+ "include-entry-exports": { type: "boolean" },
148
+ "include-entry-members": { type: "boolean" },
149
+ cycles: { type: "boolean" },
150
+ "ignore-tests": { type: "boolean" },
151
+ "ignore-unknown-import": { type: "boolean" },
152
+ "fail-on": { type: "string", default: "high" },
153
+ json: { type: "boolean" },
154
+ sarif: { type: "boolean" },
155
+ skip: { type: "string", multiple: true },
156
+ verbose: { type: "boolean", short: "v" },
157
+ fix: { type: "string", multiple: true },
158
+ "fix-json": { type: "boolean" },
159
+ plugins: { type: "string", multiple: true },
160
+ confidence: { type: "string", default: "high" },
161
+ force: { type: "boolean" },
162
+ "dry-run": { type: "boolean" },
163
+ "cache-from": { type: "string" },
164
+ "cache-to": { type: "string" },
165
+ "stop-new-cache-on-update": { type: "boolean" },
166
+ };
167
+ const { values } = parseArgs({
168
+ args: normalizedArgs,
169
+ options: optionsConfig,
170
+ strict: true,
171
+ allowPositionals: false,
172
+ });
173
+ if (values.help) {
174
+ printHelp();
175
+ return;
176
+ }
177
+ // Checks both long form (--rootDir) and short alias (-r), supporting inline '='
178
+ const isCliOverride = (longFlag, shortFlag) => {
179
+ return args.some((arg) => {
180
+ const base = arg.split("=")[0];
181
+ return (base === `--${longFlag}` ||
182
+ base === `--no-${longFlag}` ||
183
+ (shortFlag ? base === `-${shortFlag}` : false));
184
+ });
185
+ };
186
+ const targetRootDir = path.resolve(values.rootDir ?? process.cwd());
187
+ // 1. Read project config via core's loadConfig
188
+ const fileConfig = typeof loadConfig === "function" ? await loadConfig(targetRootDir) : {};
189
+ // 2. Resolve fix configurations
190
+ let fixOption = undefined;
191
+ const hasExplicitFix = isCliOverride("fix");
192
+ const hasJsonFix = isCliOverride("fix-json") && Boolean(values["fix-json"]);
193
+ const hasFixFlags = hasExplicitFix || hasJsonFix || isCliOverride("confidence") || isCliOverride("force") || isCliOverride("dry-run");
194
+ if (hasFixFlags) {
195
+ if (!hasExplicitFix && !hasJsonFix) {
196
+ throw new Error("--confidence, --force, and --dry-run require --fix <target...> or --fix-json");
221
197
  }
222
- else if (finalConfig.json || options.json) {
223
- console.log(JSON.stringify(report, (k, v) => typeof v === 'bigint' ? v.toString() : v, 2));
198
+ const requestedTargets = [
199
+ ...(hasExplicitFix && Array.isArray(values.fix) ? values.fix : []),
200
+ ...(hasJsonFix ? ["json"] : []),
201
+ ];
202
+ if (requestedTargets.length === 0) {
203
+ throw new Error("--fix requires at least one target: files, exports, dependencies, devDependencies, conditions, or json.");
224
204
  }
225
- else {
226
- const terminal = formatTerminal(report, { showCycles: !!finalConfig.cycles });
227
- console.log(terminal);
205
+ const invalidTargets = requestedTargets.filter((target) => !FIX_TARGETS.has(target));
206
+ if (invalidTargets.length > 0) {
207
+ throw new Error(`Unknown --fix target(s): ${invalidTargets.join(", ")}. Choose files, exports, dependencies, devDependencies, conditions, or json.`);
228
208
  }
229
- if (shouldFail(report, (finalConfig.failOn ?? options.failOn)))
230
- process.exit(1);
209
+ fixOption = {
210
+ confidence: values.confidence ?? "high",
211
+ rules: [...new Set(requestedTargets)],
212
+ force: Boolean(values.force),
213
+ dryRun: Boolean(values["dry-run"]),
214
+ };
231
215
  }
232
- catch (error) {
233
- console.error("An unexpected error occurred during analysis:", error);
234
- process.exit(1);
216
+ // 3. Determine if test ignoring is active
217
+ const shouldIgnoreTests = isCliOverride("ignore-tests")
218
+ ? Boolean(values["ignore-tests"])
219
+ : Boolean(fileConfig.ignoreTests);
220
+ // 4. Resolve ignore patterns
221
+ let mergedIgnore = undefined;
222
+ const cliIgnore = isCliOverride("ignore", "i") ? values.ignore : undefined;
223
+ const baseIgnore = cliIgnore ?? (Array.isArray(fileConfig.ignore) ? fileConfig.ignore : []);
224
+ if (shouldIgnoreTests || baseIgnore.length > 0) {
225
+ const testGlobs = shouldIgnoreTests ? TEST_IGNORE_PATTERNS : [];
226
+ mergedIgnore = Array.from(new Set([...testGlobs, ...baseIgnore]));
235
227
  }
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)}`);
228
+ // 5. Resolve explicitly requested plugins
229
+ const requestedPlugins = isCliOverride("plugins") ? (values.plugins ?? []) : [];
230
+ const resolvedPlugins = requestedPlugins.length > 0 ? assertPluginsExist(requestedPlugins) : [];
231
+ // 6. Build CLI overrides
232
+ const skipValues = isCliOverride("skip") ? (values.skip ?? []) : [];
233
+ const normalizedSkipValues = skipValues.map((v) => v.toLowerCase());
234
+ const invalidSkipValues = normalizedSkipValues.filter((value) => !["3", "4", "smt"].includes(value));
235
+ if (invalidSkipValues.length > 0) {
236
+ throw new Error(`Unknown --skip value(s): ${invalidSkipValues.join(", ")}. Choose 3, 4, or smt.`);
246
237
  }
247
- catch (error) {
248
- console.error("Failed to export cache:", error);
238
+ const skipLayers = {
239
+ ...(fileConfig.layers ?? {}),
240
+ ...(normalizedSkipValues.includes("3") && { skip3: true }),
241
+ ...(normalizedSkipValues.includes("4") && { skip4: true }),
242
+ ...(normalizedSkipValues.includes("smt") && { skipSmt: true, skip3: true }),
243
+ };
244
+ const reportUnusedExports = values["no-report-unused-exports"] ? false : Boolean(values["report-unused-exports"]);
245
+ const conventionalEntries = values["no-conventional-entries"] ? false : Boolean(values["conventional-entries"]);
246
+ const cliOverrides = {
247
+ ...(isCliOverride("rootDir", "r") && { rootDir: targetRootDir }),
248
+ ...(isCliOverride("entry", "e") && values.entry && { entry: values.entry }),
249
+ ...(isCliOverride("extensions", "x") && values.extensions && { extensions: values.extensions }),
250
+ ...(mergedIgnore !== undefined && { ignore: mergedIgnore }),
251
+ ...(shouldIgnoreTests && { ignoreTests: true }),
252
+ ...(isCliOverride("report-unused-exports") && { reportUnusedExports }),
253
+ ...(isCliOverride("conventional-entries") && { includeConventionalEntries: conventionalEntries }),
254
+ ...(isCliOverride("include-entry-exports") && { includeEntryExports: Boolean(values["include-entry-exports"]) }),
255
+ ...(isCliOverride("include-entry-members") && { includeEntryMembers: Boolean(values["include-entry-members"]) }),
256
+ ...(isCliOverride("cycles") && { cycles: Boolean(values.cycles) }),
257
+ ...(isCliOverride("ignore-unknown-import") && { ignoreUnknownImport: Boolean(values["ignore-unknown-import"]) }),
258
+ ...(isCliOverride("fail-on") && values["fail-on"] && { failOn: values["fail-on"] }),
259
+ ...(isCliOverride("json") && { json: Boolean(values.json) }),
260
+ ...(isCliOverride("skip") && { layers: skipLayers }),
261
+ ...(isCliOverride("verbose", "v") && { verbose: Boolean(values.verbose) }),
262
+ ...(isCliOverride("plugins") && {
263
+ plugins: {
264
+ ...(fileConfig.plugins ?? {}),
265
+ ...Object.fromEntries(resolvedPlugins.map((plugin) => [plugin, true])),
266
+ },
267
+ }),
268
+ ...(fixOption !== undefined && { fix: fixOption }),
269
+ ...(isCliOverride("cache-from") && values["cache-from"] && { cacheFrom: values["cache-from"] }),
270
+ ...(isCliOverride("cache-to") && values["cache-to"] && { cacheTo: values["cache-to"] }),
271
+ ...(isCliOverride("stop-new-cache-on-update") && { stopNewCacheOnUpdate: Boolean(values["stop-new-cache-on-update"]) }),
272
+ };
273
+ // 7. Merge DEFAULT_CONFIG -> fileConfig -> cliOverrides
274
+ const baseConfig = {
275
+ ...DEFAULT_CONFIG,
276
+ rootDir: targetRootDir,
277
+ entry: [...DEFAULT_CONFIG.entry],
278
+ extensions: [...DEFAULT_CONFIG.extensions],
279
+ ignore: [...DEFAULT_CONFIG.ignore],
280
+ ignoreDependencies: [...DEFAULT_CONFIG.ignoreDependencies],
281
+ packageIgnoreDependencies: new Map(DEFAULT_CONFIG.packageIgnoreDependencies),
282
+ externalContracts: [...DEFAULT_CONFIG.externalContracts],
283
+ pathAliases: new Map(DEFAULT_CONFIG.pathAliases),
284
+ packageImports: new Map(DEFAULT_CONFIG.packageImports),
285
+ layers: { ...DEFAULT_CONFIG.layers },
286
+ rules: { ...DEFAULT_CONFIG.rules },
287
+ plugins: { ...DEFAULT_CONFIG.plugins },
288
+ workspaceGlobs: [...DEFAULT_CONFIG.workspaceGlobs],
289
+ projectPatterns: [...DEFAULT_CONFIG.projectPatterns],
290
+ unreachableFileIgnorePatterns: [...DEFAULT_CONFIG.unreachableFileIgnorePatterns],
291
+ protectedExportPatterns: [...DEFAULT_CONFIG.protectedExportPatterns],
292
+ frameworks: [...DEFAULT_CONFIG.frameworks],
293
+ };
294
+ const resolvedWithFile = mergeConfig(baseConfig, fileConfig);
295
+ const finalConfig = mergeConfig(resolvedWithFile, cliOverrides);
296
+ const report = await analyze(finalConfig);
297
+ if (values.sarif) {
298
+ console.log(formatSarif(report));
299
+ }
300
+ else if (finalConfig.json || values.json) {
301
+ console.log(JSON.stringify(report, (k, v) => typeof v === "bigint" ? v.toString() : v, 2));
302
+ }
303
+ else {
304
+ const terminal = formatTerminal(report, { showCycles: Boolean(finalConfig.cycles) });
305
+ console.log(terminal);
306
+ }
307
+ const failTarget = (finalConfig.failOn ?? values["fail-on"] ?? "high");
308
+ if (shouldFail(report, failTarget)) {
249
309
  process.exit(1);
250
310
  }
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) => {
311
+ }
312
+ async function runExportCache(args) {
313
+ const { values, positionals } = parseArgs({
314
+ args,
315
+ options: {
316
+ rootDir: { type: "string", short: "r" },
317
+ help: { type: "boolean", short: "h" },
318
+ },
319
+ allowPositionals: true,
320
+ });
321
+ const targetPath = positionals[0];
322
+ if (values.help || !targetPath) {
323
+ console.log("Usage: optiprune export-cache <targetPath> [-r, --rootDir <path>]");
324
+ if (!targetPath && !values.help)
325
+ process.exit(1);
326
+ return;
327
+ }
328
+ const rootDir = values.rootDir ?? process.cwd();
329
+ await exportCache(rootDir, targetPath);
330
+ console.log(`${yellow("✔")} Cache exported to ${bold(targetPath)}`);
331
+ }
332
+ async function runImportCache(args) {
333
+ const { values, positionals } = parseArgs({
334
+ args,
335
+ options: {
336
+ rootDir: { type: "string", short: "r" },
337
+ help: { type: "boolean", short: "h" },
338
+ },
339
+ allowPositionals: true,
340
+ });
341
+ const sourcePath = positionals[0];
342
+ if (values.help || !sourcePath) {
343
+ console.log("Usage: optiprune import-cache <sourcePath> [-r, --rootDir <path>]");
344
+ if (!sourcePath && !values.help)
345
+ process.exit(1);
346
+ return;
347
+ }
348
+ const rootDir = values.rootDir ?? process.cwd();
349
+ await importCache(rootDir, sourcePath);
350
+ console.log(`${yellow("✔")} Cache imported from ${bold(sourcePath)}`);
351
+ }
352
+ async function main() {
353
+ const rawArgs = process.argv.slice(2);
354
+ if (rawArgs.includes("-V") || rawArgs.includes("--version")) {
355
+ const cliVersion = getCliVersion();
356
+ const coreVersion = getCoreVersion(process.cwd());
357
+ console.log(`CLI: ${cliVersion}, Core: ${coreVersion}`);
358
+ return;
359
+ }
360
+ if (rawArgs.includes("-h") || rawArgs.includes("--help")) {
361
+ printHelp();
362
+ return;
363
+ }
364
+ const firstArg = rawArgs[0];
365
+ const subcommands = new Set(["analyze", "export-cache", "import-cache"]);
366
+ let command = "analyze";
367
+ let commandArgs = rawArgs;
368
+ if (firstArg !== undefined && subcommands.has(firstArg)) {
369
+ command = firstArg;
370
+ commandArgs = rawArgs.slice(1);
371
+ }
257
372
  try {
258
- const rootDir = options.rootDir ?? process.cwd();
259
- await importCache(rootDir, sourcePath);
260
- console.log(`${yellow("✔")} Cache imported from ${bold(sourcePath)}`);
373
+ switch (command) {
374
+ case "analyze":
375
+ await runAnalyze(commandArgs);
376
+ break;
377
+ case "export-cache":
378
+ await runExportCache(commandArgs);
379
+ break;
380
+ case "import-cache":
381
+ await runImportCache(commandArgs);
382
+ break;
383
+ }
261
384
  }
262
385
  catch (error) {
263
- console.error("Failed to import cache:", error);
386
+ if (command === "analyze") {
387
+ console.error("An unexpected error occurred during analysis:", error);
388
+ }
389
+ else {
390
+ console.error(error?.message ?? error);
391
+ }
264
392
  process.exit(1);
265
393
  }
266
- });
267
- program.parse(process.argv);
394
+ }
395
+ main();
268
396
  //# 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":";AAEA,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;AAE3G,MAAM,oBAAoB,GAAG;IAC3B,YAAY;IACZ,aAAa;IACb,gBAAgB;IAChB,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;IACf,cAAc;IACd,cAAc;IACd,eAAe;IACf,eAAe;CAChB,CAAC;AAEF,aAAa;AACb,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACzH,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAIxE,0BAA0B;AAC1B,MAAM,IAAI,GAAK,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AACnD,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AACpD,MAAM,GAAG,GAAM,CAAC,CAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC;AACpD,MAAM,GAAG,GAAM,CAAC,CAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;AAEnD,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAChE,IAAI,GAAG,GAAG,UAAU,CAAC;QACrB,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;YAC/C,IAAI,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC1D,IAAI,GAAG,CAAC,OAAO;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;YACtC,CAAC;YACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IACd,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,2CAA2C,CAAC,CAAC;QAClF,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QACtC,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,GAAG,CAAC,OAAO;gBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IACd,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCb,CAAC,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,SAAS,sBAAsB,CAAC,IAAc,EAAE,aAAuB;IACrE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAC3C,IAAI,WAAW,GAAkB,IAAI,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACrB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvD,WAAW,GAAG,CAAC,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;aAAM,IAAI,WAAW,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,WAAW,GAAG,IAAI,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAc;IACtC,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhI,MAAM,aAAa,GAAG;QACpB,IAAI,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;QAC9C,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAG,EAAE;QAChD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC9D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;QACnE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/D,uBAAuB,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;QACpE,0BAA0B,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACxD,sBAAsB,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,IAAI,EAAE;QACnE,yBAAyB,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACvD,uBAAuB,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACrD,uBAAuB,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACrD,MAAM,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACpC,cAAc,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QAC5C,uBAAuB,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACrD,SAAS,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,MAAM,EAAE;QACvD,IAAI,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QAClC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACnC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE;QACjD,OAAO,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;QACjD,GAAG,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE;QAChD,UAAU,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACxC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpD,UAAU,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,OAAO,EAAE,MAAM,EAAE;QACxD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACnC,SAAS,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;QACvC,YAAY,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACzC,UAAU,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE;QACvC,0BAA0B,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE;KACzD,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAC3B,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,aAAa;QACtB,MAAM,EAAE,IAAI;QACZ,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,gFAAgF;IAChF,MAAM,aAAa,GAAG,CAAC,QAAgB,EAAE,SAAkB,EAAE,EAAE;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/B,OAAO,CACL,IAAI,KAAK,KAAK,QAAQ,EAAE;gBACxB,IAAI,KAAK,QAAQ,QAAQ,EAAE;gBAC3B,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAC/C,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAE,MAAM,CAAC,OAA8B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAE5F,+CAA+C;IAC/C,MAAM,UAAU,GAAW,OAAO,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnG,gCAAgC;IAChC,IAAI,SAAS,GAAoC,SAAS,CAAC;IAC3D,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,WAAW,GAAG,cAAc,IAAI,UAAU,IAAI,aAAa,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;IAEtI,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,cAAc,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;QAClG,CAAC;QACD,MAAM,gBAAgB,GAAa;YACjC,GAAG,CAAC,cAAc,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,GAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC;QACF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,yGAAyG,CAAC,CAAC;QAC7H,CAAC;QACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACrF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,4BAA4B,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QACvJ,CAAC;QACD,SAAS,GAAG;YACV,UAAU,EAAG,MAAM,CAAC,UAAiC,IAAI,MAAM;YAC/D,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;YACrC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YAC5B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACX,CAAC;IAC5B,CAAC;IAED,0CAA0C;IAC1C,MAAM,iBAAiB,GAAG,aAAa,CAAC,cAAc,CAAC;QACrD,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACjC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAEpC,6BAA6B;IAC7B,IAAI,YAAY,GAAyB,SAAS,CAAC;IACnD,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,MAA+B,CAAC,CAAC,CAAC,SAAS,CAAC;IACrG,MAAM,UAAU,GAAG,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5F,IAAI,iBAAiB,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC;IAED,0CAA0C;IAC1C,MAAM,gBAAgB,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,OAAgC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1G,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEhG,yBAAyB;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAE,MAAM,CAAC,IAA6B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9F,MAAM,oBAAoB,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACpE,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACrG,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACpG,CAAC;IAED,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC;QAC5B,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC1D,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAC1D,GAAG,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;KAC5E,CAAC;IAEF,MAAM,mBAAmB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAClH,MAAM,mBAAmB,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhH,MAAM,YAAY,GAAoB;QACpC,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QAChE,GAAG,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAiB,EAAE,CAAC;QACvF,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,UAAU,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAsB,EAAE,CAAC;QAC3G,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAC3D,GAAG,CAAC,iBAAiB,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC/C,GAAG,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,EAAE,CAAC;QACtE,GAAG,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,CAAC;QACjG,GAAG,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC;QAChH,GAAG,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC;QAChH,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC;QAChH,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,CAAQ,EAAE,CAAC;QAC1F,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,UAAiB,EAAE,CAAC;QAC3D,GAAG,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1E,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI;YAC9B,OAAO,EAAE;gBACP,GAAG,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC7B,GAAG,MAAM,CAAC,WAAW,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;aACvE;SACF,CAAC;QACF,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QAClD,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,YAAY,CAAW,EAAE,CAAC;QACzG,GAAG,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAW,EAAE,CAAC;QACjG,GAAG,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,EAAE,CAAC;KACxH,CAAC;IAEF,wDAAwD;IACxD,MAAM,UAAU,GAAoB;QAClC,GAAG,cAAc;QACjB,OAAO,EAAE,aAAa;QACtB,KAAK,EAAE,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC;QAChC,UAAU,EAAE,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC;QAC1C,MAAM,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;QAClC,kBAAkB,EAAE,CAAC,GAAG,cAAc,CAAC,kBAAkB,CAAC;QAC1D,yBAAyB,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,yBAAyB,CAAC;QAC5E,iBAAiB,EAAE,CAAC,GAAG,cAAc,CAAC,iBAAiB,CAAC;QACxD,WAAW,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC;QAChD,cAAc,EAAE,IAAI,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;QACtD,MAAM,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE;QACpC,KAAK,EAAE,EAAE,GAAG,cAAc,CAAC,KAAK,EAAE;QAClC,OAAO,EAAE,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE;QACtC,cAAc,EAAE,CAAC,GAAG,cAAc,CAAC,cAAc,CAAC;QAClD,eAAe,EAAE,CAAC,GAAG,cAAc,CAAC,eAAe,CAAC;QACpD,6BAA6B,EAAE,CAAC,GAAG,cAAc,CAAC,6BAA6B,CAAC;QAChF,uBAAuB,EAAE,CAAC,GAAG,cAAc,CAAC,uBAAuB,CAAC;QACpE,UAAU,EAAE,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC;KAC3C,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,WAAW,GAAG,WAAW,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAmB,MAAM,OAAO,CAAC,WAA8B,CAAC,CAAC;IAE7E,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACnC,CAAC;SAAM,IAAI,WAAW,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,UAAU,GAAG,CAAC,WAAW,CAAC,MAAM,IAAK,MAAM,CAAC,SAAS,CAAwB,IAAI,MAAM,CAAQ,CAAC;IACtG,IAAI,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAc;IAC1C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI;QACJ,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACvC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;SACtC;QACD,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAuB,WAAW,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAY,MAAM,CAAC,OAA8B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAChF,MAAM,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAc;IAC1C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;QACxC,IAAI;QACJ,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE;YACvC,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE;SACtC;QACD,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,MAAM,UAAU,GAAuB,WAAW,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAY,MAAM,CAAC,OAA8B,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAChF,MAAM,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEtC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;QACnC,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,UAAU,WAAW,WAAW,EAAE,CAAC,CAAC;QACxD,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,SAAS,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAuB,OAAO,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC;IAEzE,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,IAAI,WAAW,GAAa,OAAO,CAAC;IAEpC,IAAI,QAAQ,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,QAAQ,CAAC;QACnB,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC;QACH,QAAQ,OAAO,EAAE,CAAC;YAChB,KAAK,SAAS;gBACZ,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,cAAc;gBACjB,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;gBAClC,MAAM;QACV,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "optiprune",
3
- "version": "2.5.0",
3
+ "version": "2.7.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.17.2",
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": {