optiprune 1.3.0 → 1.4.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/dist/types.d.ts CHANGED
@@ -105,6 +105,8 @@ export interface AnalyzerOptions {
105
105
  failOn?: FailOn;
106
106
  json?: boolean;
107
107
  includeConventionalEntries?: boolean;
108
+ skip3?: boolean;
109
+ skip4?: boolean;
108
110
  }
109
111
  export type RuleSeverity = "error" | "warning" | "off";
110
112
  export interface Config {
@@ -121,6 +123,8 @@ export interface Config {
121
123
  smtTimeoutMs?: number;
122
124
  isolateMemoryLimitMb?: number;
123
125
  enableConcolicProof?: boolean;
126
+ skip3?: boolean;
127
+ skip4?: boolean;
124
128
  };
125
129
  rules?: Record<string, RuleSeverity>;
126
130
  }
@@ -141,6 +145,8 @@ export interface ResolvedOptions {
141
145
  smtTimeoutMs: number;
142
146
  isolateMemoryLimitMb: number;
143
147
  enableConcolicProof: boolean;
148
+ skip3: boolean;
149
+ skip4: boolean;
144
150
  };
145
151
  rules: Record<string, RuleSeverity>;
146
152
  }
@@ -201,15 +207,30 @@ export interface AnalysisContext {
201
207
  semanticGraph?: any;
202
208
  symbolicContracts?: Map<string, any>;
203
209
  }
204
- export interface PluginInstruction {
205
- name: string;
206
- description: string;
207
- identifyUsage(node: any, module: ModuleRecord, context: AnalysisContext): string[];
210
+ export interface PluginAdapter {
211
+ getAst(fileId: string): any;
212
+ getSymbol(name: string, fileId: string): any;
213
+ getType(node: any): string | undefined;
214
+ getDependencies(fileId: string): string[];
215
+ getConfig(): ResolvedOptions;
216
+ readFile(filename: string): Promise<string | null>;
217
+ readJson(filename: string): Promise<any | null>;
218
+ emitFinding(finding: Omit<Finding, "rule">): void;
219
+ markAsUsed(fileId: string, symbol?: string): void;
220
+ attachMetadata(node: any, key: string, value: any): void;
221
+ }
222
+ export interface PluginLifecycle {
223
+ onProjectInit?(adapter: PluginAdapter): void | Promise<void>;
224
+ onFileStart?(fileId: string, adapter: PluginAdapter): void | Promise<void>;
225
+ onASTNode?(node: any, fileId: string, adapter: PluginAdapter): void;
226
+ onAnalysisComplete?(adapter: PluginAdapter): void | Promise<void>;
208
227
  }
209
228
  export interface AnalyzerPlugin {
210
229
  name: string;
211
- instructions: PluginInstruction[];
212
- analyze?(context: AnalysisContext): Finding[];
230
+ version: string;
231
+ enabled?: boolean;
232
+ detect?(adapter: PluginAdapter): Promise<boolean>;
233
+ lifecycle: PluginLifecycle;
213
234
  }
214
235
  export declare const CONFIDENCE_RANK: Record<FailOn, number>;
215
236
  export declare function defineConfig(config: Config): Config;
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AA+PA,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,EAAE,yCAAyC;CACpD,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAwRA,MAAM,CAAC,MAAM,eAAe,GAA2B;IACrD,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,EAAE,yCAAyC;CACpD,CAAC;AAEF,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/workspace.js CHANGED
@@ -2,7 +2,7 @@ import path from 'pathe';
2
2
  import fs from 'node:fs';
3
3
  import fg from 'fast-glob';
4
4
  import * as yaml from 'js-yaml';
5
- import { normalizeAbsolute } from './fs-utils.js';
5
+ import { normalizeAbsolute, readJsonFile } from './fs-utils.js';
6
6
  /**
7
7
  * Resolves all sub-packages in a Monorepo workspace.
8
8
  * Uses POSIX-style path logic for internal calculations to support Windows.
@@ -22,14 +22,14 @@ export async function buildMonorepoTopology(rootPath) {
22
22
  }
23
23
  }
24
24
  catch (e) {
25
- console.error(`[Workspace] Error parsing pnpm-workspace.yaml: ${e}`);
25
+ // Ignore parse warnings on malformed workspace configs
26
26
  }
27
27
  }
28
28
  // 2. Detect Yarn/NPM workspaces in package.json
29
29
  const rootPackageJsonPath = path.join(absoluteRoot, 'package.json');
30
30
  if (fs.existsSync(rootPackageJsonPath)) {
31
- try {
32
- const rootManifest = JSON.parse(fs.readFileSync(rootPackageJsonPath, 'utf-8'));
31
+ const rootManifest = await readJsonFile(rootPackageJsonPath);
32
+ if (rootManifest) {
33
33
  if (Array.isArray(rootManifest.workspaces)) {
34
34
  packageGlobs.push(...rootManifest.workspaces);
35
35
  }
@@ -37,41 +37,32 @@ export async function buildMonorepoTopology(rootPath) {
37
37
  packageGlobs.push(...rootManifest.workspaces.packages);
38
38
  }
39
39
  }
40
- catch (e) {
41
- console.error(`[Workspace] Error parsing root package.json: ${e}`);
42
- }
43
40
  }
44
41
  // Default to common patterns if nothing found
45
42
  if (packageGlobs.length === 0) {
46
43
  packageGlobs.push('packages/*', 'apps/*');
47
44
  }
48
45
  // 3. Find all package.json files matching the globs
49
- // Use path.posix for globs as fast-glob expects forward slashes
50
46
  const manifestFiles = await fg(packageGlobs.map(g => path.posix.join(g, 'package.json')), { cwd: absoluteRoot, absolute: true, ignore: ['**/node_modules/**'] });
51
47
  for (const manifestPath of manifestFiles) {
52
- try {
53
- const manifest = JSON.parse(fs.readFileSync(manifestPath, 'utf-8'));
54
- const pkgName = manifest.name;
55
- if (!pkgName)
56
- continue;
57
- const location = normalizeAbsolute(path.dirname(manifestPath));
58
- const allDeps = new Set([
59
- ...Object.keys(manifest.dependencies || {}),
60
- ...Object.keys(manifest.devDependencies || {}),
61
- ...Object.keys(manifest.peerDependencies || {}),
62
- ]);
63
- packageMap.set(pkgName, {
64
- name: pkgName,
65
- location,
66
- relativePath: path.posix.relative(absoluteRoot, location),
67
- manifestPath: normalizeAbsolute(manifestPath),
68
- dependencies: new Set(), // Will be filled in next pass
69
- allDependencies: allDeps,
70
- });
71
- }
72
- catch (e) {
73
- console.error(`[Workspace] Error parsing package manifest at ${manifestPath}: ${e}`);
74
- }
48
+ const manifest = await readJsonFile(manifestPath);
49
+ if (!manifest || !manifest.name)
50
+ continue;
51
+ const pkgName = manifest.name;
52
+ const location = normalizeAbsolute(path.dirname(manifestPath));
53
+ const allDeps = new Set([
54
+ ...Object.keys(manifest.dependencies || {}),
55
+ ...Object.keys(manifest.devDependencies || {}),
56
+ ...Object.keys(manifest.peerDependencies || {}),
57
+ ]);
58
+ packageMap.set(pkgName, {
59
+ name: pkgName,
60
+ location,
61
+ relativePath: path.posix.relative(absoluteRoot, location),
62
+ manifestPath: normalizeAbsolute(manifestPath),
63
+ dependencies: new Set(),
64
+ allDependencies: allDeps,
65
+ });
75
66
  }
76
67
  // 4. Resolve internal workspace dependencies
77
68
  const internalPackageNames = new Set(packageMap.keys());
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../src/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,OAAO,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAA0B,YAAY,EAAE,MAAM,eAAe,CAAC;AAGxF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,QAAgB;IAC1D,MAAM,YAAY,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEvD,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,gCAAgC;IAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;IACzE,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;YAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAQ,CAAC;YACtC,IAAI,GAAG,EAAE,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACjD,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,MAAM,mBAAmB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACpE,IAAI,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,MAAM,YAAY,CAAsB,mBAAmB,CAAC,CAAC;QAClF,IAAI,YAAY,EAAE,CAAC;YACjB,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;YAChD,CAAC;iBAAM,IAAI,YAAY,CAAC,UAAU,EAAE,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChG,YAAY,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAED,oDAAoD;IACpD,MAAM,aAAa,GAAG,MAAM,EAAE,CAC5B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,EACzD,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,oBAAoB,CAAC,EAAE,CACtE,CAAC;IAEF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAsB,YAAY,CAAC,CAAC;QACvE,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE,SAAS;QAE1C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAc,CAAC;QACxC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS;YAC9B,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,EAAE,CAAC;YAC3C,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,IAAI,EAAE,CAAC;YAC9C,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,IAAI,EAAE,CAAC;SAChD,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE;YACtB,IAAI,EAAE,OAAO;YACb,QAAQ;YACR,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC;YACzD,YAAY,EAAE,iBAAiB,CAAC,YAAY,CAAC;YAC7C,YAAY,EAAE,IAAI,GAAG,EAAE;YACvB,eAAe,EAAE,OAAO;SACzB,CAAC,CAAC;IACL,CAAC;IAED,6CAA6C;IAC7C,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,eAAe,EAAE,CAAC;YAC1C,IAAI,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,SAAS,KAAK,CAAC,IAAY;QACzB,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAE9B,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnB,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,GAAG,EAAE,CAAC;YACR,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACnC,KAAK,CAAC,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,CAAC;IACd,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,YAAY;QACtB,UAAU;QACV,gBAAgB;KACjB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "optiprune",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Resilient static dead-code analyzer for TypeScript and JavaScript workspaces.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -64,8 +64,8 @@
64
64
  "LICENSE"
65
65
  ],
66
66
  "scripts": {
67
- "build": "tsc -p tsconfig.json",
68
- "check": "tsc -p tsconfig.json --noEmit",
67
+ "build": "npx tsc -p tsconfig.json",
68
+ "check": "npx tsc -p tsconfig.json --noEmit",
69
69
  "test": "vitest run --no-file-parallelism",
70
70
  "test:watch": "vitest",
71
71
  "analyze": "node ./dist/cli.js",
@@ -90,6 +90,7 @@
90
90
  "esbuild": "^0.28.1",
91
91
  "fast-glob": "^3.3.3",
92
92
  "js-yaml": "^5.2.2",
93
+ "nodejs": "^0.0.0",
93
94
  "pathe": "latest",
94
95
  "quickjs-emscripten": "^0.32.0",
95
96
  "z3-solver": "^5.0.0"