sadrazam 0.1.0 → 0.1.2

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 CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## v0.1.2
6
+
7
+ ### Added
8
+ - Safe auto-fix support with `--fix` for unused `dependencies` and `devDependencies`
9
+
10
+ ### Changed
11
+ - Re-run scans after auto-fix and report applied package.json removals in text and JSON reporters
12
+
13
+ ## v0.1.1
14
+
15
+ ### Added
16
+ - Export trace support with `--trace-export` for reachable local modules
17
+ - Memory reporting with `--memory` in text and JSON reporters
18
+ - Watch mode with `--watch` for live reruns on project changes
19
+
20
+ ### Changed
21
+ - Watch mode now reuses scan caching internally and disables repeated AI summary calls
22
+ - Added CLI and smoke coverage for export trace, memory reporting, and watch behavior
23
+
5
24
  ## v0.1.0
6
25
 
7
26
  ### Added
package/README.md CHANGED
@@ -2,11 +2,18 @@
2
2
  <img src="./assets/logo.svg" alt="Sadrazam logo" width="200" />
3
3
  </p>
4
4
 
5
+ <p align="center">
6
+ <a href="https://www.npmjs.com/package/sadrazam"><img src="https://img.shields.io/npm/v/sadrazam" alt="npm version" /></a>
7
+ <a href="https://www.npmjs.com/package/sadrazam"><img src="https://img.shields.io/npm/dw/sadrazam" alt="npm downloads" /></a>
8
+ <a href="https://packagephobia.com/result?p=sadrazam"><img src="https://packagephobia.com/badge?p=sadrazam" alt="install size" /></a>
9
+ </p>
10
+
5
11
  Sadrazam is a dependency analysis CLI for JavaScript and TypeScript projects with optional AI-powered insights.
6
12
 
7
13
  Documentation: https://borakilicoglu.github.io/sadrazam/
14
+ npm: https://www.npmjs.com/package/sadrazam
8
15
 
9
- Sadrazam scans your dependencies like a jeweler inspects gold. It finds unused packages, flags dependency hygiene issues, and, when you provide an AI token, can explain findings and suggest cleanup actions directly in the CLI.
16
+ Sadrazam scans your project to find unused packages, flag dependency hygiene issues, and, when you provide an AI token, explain findings and suggest cleanup actions directly in the CLI.
10
17
 
11
18
  Current status:
12
19
 
@@ -0,0 +1,8 @@
1
+ import type { ReportWorkspace } from "./reporters.js";
2
+ export interface AppliedFixSummary {
3
+ packagePath: string;
4
+ removedDependencies: string[];
5
+ removedDevDependencies: string[];
6
+ }
7
+ export declare function applyAutoFixes(workspaces: ReportWorkspace[]): Promise<AppliedFixSummary[]>;
8
+ //# sourceMappingURL=autoFix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoFix.d.ts","sourceRoot":"","sources":["../src/autoFix.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAQrE,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,sBAAsB,EAAE,MAAM,EAAE,CAAC;CAClC;AAED,wBAAsB,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAGhG"}
@@ -0,0 +1,44 @@
1
+ import { writeFile } from "node:fs/promises";
2
+ import { readPackageJson } from "./packageReader.js";
3
+ export async function applyAutoFixes(workspaces) {
4
+ const summaries = await Promise.all(workspaces.map((workspace) => applyWorkspaceFixes(workspace)));
5
+ return summaries.filter((summary) => summary !== null);
6
+ }
7
+ async function applyWorkspaceFixes(workspace) {
8
+ const unusedDependencies = getFindingItems(workspace.findings, "unused-dependencies");
9
+ const unusedDevDependencies = getFindingItems(workspace.findings, "unused-devDependencies");
10
+ if (unusedDependencies.length === 0 && unusedDevDependencies.length === 0) {
11
+ return null;
12
+ }
13
+ const packageJson = await readPackageJson(workspace.result.packagePath);
14
+ const removedDependencies = removePackageEntries(packageJson, "dependencies", unusedDependencies);
15
+ const removedDevDependencies = removePackageEntries(packageJson, "devDependencies", unusedDevDependencies);
16
+ if (removedDependencies.length === 0 && removedDevDependencies.length === 0) {
17
+ return null;
18
+ }
19
+ await writeFile(workspace.result.packagePath, `${JSON.stringify(packageJson, null, 2)}
20
+ `, "utf8");
21
+ return {
22
+ packagePath: workspace.result.packagePath,
23
+ removedDependencies,
24
+ removedDevDependencies,
25
+ };
26
+ }
27
+ function getFindingItems(findings, type) {
28
+ return findings.find((finding) => finding.type === type)?.items ?? [];
29
+ }
30
+ function removePackageEntries(packageJson, section, packageNames) {
31
+ const record = packageJson[section];
32
+ if (!record) {
33
+ return [];
34
+ }
35
+ const removed = packageNames.filter((packageName) => packageName in record);
36
+ for (const packageName of removed) {
37
+ delete record[packageName];
38
+ }
39
+ if (Object.keys(record).length === 0) {
40
+ delete packageJson[section];
41
+ }
42
+ return removed.sort();
43
+ }
44
+ //# sourceMappingURL=autoFix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoFix.js","sourceRoot":"","sources":["../src/autoFix.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAerD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,UAA6B;IAChE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACnG,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAgC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;AACvF,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,SAA0B;IAC3D,MAAM,kBAAkB,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACtF,MAAM,qBAAqB,GAAG,eAAe,CAAC,SAAS,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;IAE5F,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAuB,CAAC;IAC9F,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,WAAW,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAClG,MAAM,sBAAsB,GAAG,oBAAoB,CAAC,WAAW,EAAE,iBAAiB,EAAE,qBAAqB,CAAC,CAAC;IAE3G,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;CACtF,EAAE,MAAM,CAAC,CAAC;IAET,OAAO;QACL,WAAW,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW;QACzC,mBAAmB;QACnB,sBAAsB;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,QAAyB,EAAE,IAA2B;IAC7E,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;AACxE,CAAC;AAED,SAAS,oBAAoB,CAC3B,WAA+B,EAC/B,OAA2C,EAC3C,YAAsB;IAEtB,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,IAAI,MAAM,CAAC,CAAC;IAE5E,KAAK,MAAM,WAAW,IAAI,OAAO,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;AACxB,CAAC"}
package/dist/cache.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { ScanOptions, ScanResult } from "./scan.js";
2
- type CachedScanResult = Omit<ScanResult, "performance" | "cached">;
2
+ type CachedScanResult = Omit<ScanResult, "performance" | "memory" | "cached">;
3
3
  interface ScanCacheInput {
4
4
  packageDir: string;
5
5
  packagePath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKzD,KAAK,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,QAAQ,CAAC,CAAC;AAYnE,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,UAAU,mBAAoB,SAAQ,cAAc;IAClD,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgB3F;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9E"}
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../src/cache.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAKzD,KAAK,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;AAY9E,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,UAAU,mBAAoB,SAAQ,cAAc;IAClD,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgB3F;AAED,wBAAsB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY9E"}
package/dist/config.d.ts CHANGED
@@ -8,13 +8,24 @@ export interface SadrazamConfig {
8
8
  strict?: boolean;
9
9
  debug?: boolean;
10
10
  performance?: boolean;
11
+ memory?: boolean;
11
12
  cache?: boolean;
13
+ watch?: boolean;
12
14
  trace?: string;
13
15
  ignorePackages?: string[];
14
16
  allowUnusedDependencies?: string[];
15
17
  allowUnusedDevDependencies?: string[];
16
18
  allowMissingPackages?: string[];
17
19
  allowMisplacedDevDependencies?: string[];
20
+ inputs?: {
21
+ entryFiles?: string[];
22
+ packageNames?: string[];
23
+ };
24
+ preprocessors?: {
25
+ packagePatterns?: string[];
26
+ filePatterns?: string[];
27
+ exportPatterns?: string[];
28
+ };
18
29
  ai?: {
19
30
  provider?: string;
20
31
  model?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGhE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,EAAE,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoBxF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGhE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;IACnC,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;IACtC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,EAAE,CAAC;IACzC,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;IACF,aAAa,CAAC,EAAE;QACd,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,EAAE,CAAC,EAAE;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CAChB;AAQD,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAoBxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAiC7E,MAAM,gBAAgB,GAAG,CAAC,eAAe,CAAC,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7C,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEnD,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAmB;gBACxE,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,MAAM,eAAe,CAAC,WAAW,CAAC,CAA4B,CAAC;IACpF,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;QAClC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,WAAW,CAAC,CAAC,CAAC,UAAU;KACtE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AA4C7E,MAAM,gBAAgB,GAAG,CAAC,eAAe,CAAC,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAAgB;IACvD,MAAM,WAAW,GAAG,MAAM,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAE7C,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAEnD,IAAI,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO;gBACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAmB;gBACxE,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,CAAC,MAAM,eAAe,CAAC,WAAW,CAAC,CAA4B,CAAC;IACpF,OAAO;QACL,MAAM,EAAE,WAAW,CAAC,QAAQ,IAAI,EAAE;QAClC,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,WAAW,WAAW,CAAC,CAAC,CAAC,UAAU;KACtE,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAgB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -8,6 +8,11 @@ export interface FindingRules {
8
8
  allowMissingPackages: string[];
9
9
  allowMisplacedDevDependencies: string[];
10
10
  ignorePackages: string[];
11
+ preprocessors: {
12
+ packagePatterns: string[];
13
+ filePatterns: string[];
14
+ exportPatterns: string[];
15
+ };
11
16
  }
12
17
  export declare function getActiveFindings(result: ScanResult, rules: FindingRules, production: boolean): ActiveFinding[];
13
18
  //# sourceMappingURL=findings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,0BAA0B,EAAE,MAAM,EAAE,CAAC;IACrC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,6BAA6B,EAAE,MAAM,EAAE,CAAC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,OAAO,GAClB,aAAa,EAAE,CA2DjB"}
1
+ {"version":3,"file":"findings.d.ts","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,uBAAuB,EAAE,MAAM,EAAE,CAAC;IAClC,0BAA0B,EAAE,MAAM,EAAE,CAAC;IACrC,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,6BAA6B,EAAE,MAAM,EAAE,CAAC;IACxC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE;QACb,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;CACH;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,OAAO,GAClB,aAAa,EAAE,CAgEjB"}
package/dist/findings.js CHANGED
@@ -45,7 +45,11 @@ export function getActiveFindings(result, rules, production) {
45
45
  items: result.unusedExports,
46
46
  },
47
47
  ];
48
- return candidates.filter((candidate) => {
48
+ const preprocessedCandidates = candidates.map((candidate) => ({
49
+ ...candidate,
50
+ items: applyPreprocessors(candidate.type, candidate.items, rules.preprocessors),
51
+ }));
52
+ return preprocessedCandidates.filter((candidate) => {
49
53
  if (rules.include.length > 0 && !rules.include.includes(candidate.type)) {
50
54
  return false;
51
55
  }
@@ -59,4 +63,29 @@ function filterPackages(items, blocked) {
59
63
  const blockedSet = new Set(blocked);
60
64
  return items.filter((item) => !blockedSet.has(item));
61
65
  }
66
+ function applyPreprocessors(type, items, preprocessors) {
67
+ if (items.length === 0) {
68
+ return items;
69
+ }
70
+ const patterns = getPatternsForFinding(type, preprocessors);
71
+ if (patterns.length === 0) {
72
+ return items;
73
+ }
74
+ return items.filter((item) => !patterns.some((pattern) => matchesPattern(item, pattern)));
75
+ }
76
+ function getPatternsForFinding(type, preprocessors) {
77
+ if (type === "unused-files") {
78
+ return preprocessors.filePatterns;
79
+ }
80
+ if (type === "unused-exports") {
81
+ return preprocessors.exportPatterns;
82
+ }
83
+ return preprocessors.packagePatterns;
84
+ }
85
+ function matchesPattern(value, pattern) {
86
+ const escaped = pattern
87
+ .replace(/[|\{}()[\]^$+?.]/g, "\\$&")
88
+ .replace(/\*/g, ".*");
89
+ return new RegExp(`^${escaped}$`).test(value);
90
+ }
62
91
  //# sourceMappingURL=findings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"findings.js","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,iBAAiB,CAC/B,MAAkB,EAClB,KAAmB,EACnB,UAAmB;IAEnB,MAAM,UAAU,GAAoB;QAClC;YACE,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,2BAA2B;YAClC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,EAAE;gBAC5C,GAAG,KAAK,CAAC,oBAAoB;gBAC7B,GAAG,KAAK,CAAC,cAAc;aACxB,CAAC;SACH;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,KAAK,EAAE,qBAAqB;YAC5B,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,kBAAkB,EAAE;gBAC/C,GAAG,KAAK,CAAC,uBAAuB;gBAChC,GAAG,KAAK,CAAC,cAAc;aACxB,CAAC;SACH;QACD;YACE,IAAI,EAAE,wBAAwB;YAC9B,KAAK,EAAE,wBAAwB;YAC/B,KAAK,EAAE,UAAU;gBACf,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE;oBAC3C,GAAG,KAAK,CAAC,0BAA0B;oBACnC,GAAG,KAAK,CAAC,cAAc;iBACxB,CAAC;SACP;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,KAAK,EAAE,2CAA2C;YAClD,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,wBAAwB,EAAE;gBACrD,GAAG,KAAK,CAAC,6BAA6B;gBACtC,GAAG,KAAK,CAAC,cAAc;aACxB,CAAC;SACH;QACD;YACE,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,cAAc;YACrB,KAAK,EAAE,MAAM,CAAC,WAAW;SAC1B;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,gBAAgB;YACvB,KAAK,EAAE,MAAM,CAAC,aAAa;SAC5B;KACF,CAAC;IAEF,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE;QACrC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACxE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,KAAe,EAAE,OAAiB;IACxD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IACpC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"findings.js","sourceRoot":"","sources":["../src/findings.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,17 +1,37 @@
1
1
  #!/usr/bin/env node
2
+ import { createHash } from "node:crypto";
3
+ import { stat } from "node:fs/promises";
2
4
  import { performance as nodePerformance } from "node:perf_hooks";
3
5
  import path from "node:path";
4
- import pc from "picocolors";
5
6
  import { Command } from "commander";
7
+ import fg from "fast-glob";
8
+ import pc from "picocolors";
6
9
  import { generateAiSummary } from "./aiClient.js";
10
+ import { applyAutoFixes } from "./autoFix.js";
7
11
  import { resolveAiConfig, SUPPORTED_AI_PROVIDERS } from "./aiConfig.js";
8
12
  import { getConfigurationHints } from "./configHints.js";
9
13
  import { loadSadrazamConfig } from "./config.js";
10
14
  import { getActiveFindings } from "./findings.js";
15
+ import { findSourceFiles } from "./fileFinder.js";
11
16
  import { renderReport, SUPPORTED_REPORTERS, } from "./reporters.js";
12
17
  import { scanProject } from "./scan.js";
13
18
  import { discoverWorkspaces } from "./workspaceFinder.js";
14
19
  const program = new Command();
20
+ const WATCH_INTERVAL_MS = 1000;
21
+ const WATCH_IGNORE_GLOBS = [
22
+ "**/node_modules/**",
23
+ "**/.git/**",
24
+ "**/dist/**",
25
+ "**/.turbo/**",
26
+ "**/.vitepress/cache/**",
27
+ ];
28
+ const EMPTY_MEMORY = {
29
+ rssMb: 0,
30
+ heapUsedMb: 0,
31
+ heapTotalMb: 0,
32
+ externalMb: 0,
33
+ arrayBuffersMb: 0,
34
+ };
15
35
  const SUPPORTED_FINDING_TYPES = [
16
36
  "missing",
17
37
  "unused-dependencies",
@@ -35,8 +55,12 @@ program
35
55
  .option("--strict", "flag devDependencies used in production files")
36
56
  .option("--debug", "print resolved debug information")
37
57
  .option("--performance", "print performance timing information")
58
+ .option("--memory", "print memory usage information")
38
59
  .option("--cache", "reuse scan results when source inputs have not changed")
60
+ .option("--fix", "auto-fix safe package.json issues")
61
+ .option("--watch", "re-run analysis when project files change")
39
62
  .option("--trace <package>", "trace where a package is used")
63
+ .option("--trace-export <target>", "trace where an export is used (relativePath:exportName)")
40
64
  .option("--ignore-packages <names>", "comma-separated package names to ignore in findings")
41
65
  .option("--allow-unused-dependencies <names>", "comma-separated dependency allowlist")
42
66
  .option("--allow-unused-dev-dependencies <names>", "comma-separated devDependency allowlist")
@@ -47,19 +71,41 @@ Examples:
47
71
  sadrazam .
48
72
  sadrazam . --reporter json
49
73
  sadrazam . --trace typescript
74
+ sadrazam . --trace-export src/lib.ts:usedHelper
50
75
  sadrazam . --cache --performance
76
+ sadrazam . --fix
77
+ sadrazam . --memory
78
+ sadrazam . --watch
51
79
  sadrazam . --workspace packages/web
52
80
  sadrazam . --production --strict
53
81
  AI_PROVIDER=openai AI_TOKEN=... sadrazam . --ai
54
82
  `)
55
83
  .action(async (target, options) => {
84
+ const targetDir = path.resolve(target);
85
+ const loadedConfig = await loadSadrazamConfig(targetDir);
86
+ const mergedOptions = mergeCliWithConfig(options, loadedConfig.config);
87
+ if (mergedOptions.watch) {
88
+ await runWatchMode(targetDir, options);
89
+ return;
90
+ }
91
+ process.exitCode = await runScanCommand(targetDir, options);
92
+ });
93
+ program.parseAsync(process.argv);
94
+ async function runScanCommand(targetDir, rawOptions, runtimeOptions = {}) {
56
95
  try {
57
96
  const totalStart = nodePerformance.now();
58
- const targetDir = path.resolve(target);
59
97
  const loadedConfig = await loadSadrazamConfig(targetDir);
60
- const mergedOptions = mergeCliWithConfig(options, loadedConfig.config);
98
+ const mergedOptions = mergeCliWithConfig(rawOptions, loadedConfig.config);
99
+ const warnings = [];
100
+ const aiEnabled = Boolean(mergedOptions.ai) && !runtimeOptions.watchRun;
101
+ if (runtimeOptions.watchRun && mergedOptions.ai) {
102
+ warnings.push("AI summary disabled in watch mode.");
103
+ }
104
+ if (runtimeOptions.watchRun && mergedOptions.fix) {
105
+ warnings.push("Auto-fix disabled in watch mode.");
106
+ }
61
107
  const aiConfig = resolveAiConfig({
62
- ai: mergedOptions.ai,
108
+ ai: aiEnabled,
63
109
  provider: mergedOptions.provider,
64
110
  model: mergedOptions.model,
65
111
  configAi: loadedConfig.config.ai,
@@ -68,24 +114,16 @@ Examples:
68
114
  const include = parseFindingTypes(mergedOptions.include);
69
115
  const exclude = parseFindingTypes(mergedOptions.exclude);
70
116
  const workspaceFilters = parseCsvOption(mergedOptions.workspace);
71
- const rules = buildFindingRules(mergedOptions, include, exclude);
117
+ const rules = buildFindingRules(mergedOptions, include, exclude, loadedConfig.config);
72
118
  const discoverStart = nodePerformance.now();
73
119
  const { rootDir, workspaces } = await discoverWorkspaces(targetDir, workspaceFilters);
74
120
  const discoverWorkspacesMs = nodePerformance.now() - discoverStart;
75
- const workspaceReports = await Promise.all(workspaces.map(async (workspace) => {
76
- const result = await scanProject(workspace.dir, {
77
- production: Boolean(mergedOptions.production),
78
- strict: Boolean(mergedOptions.strict),
79
- cache: Boolean(mergedOptions.cache),
80
- });
81
- const findings = getActiveFindings(result, rules, Boolean(mergedOptions.production));
82
- return {
83
- workspace,
84
- result,
85
- findings,
86
- };
87
- }));
88
- const warnings = [];
121
+ let workspaceReports = await collectWorkspaceReports(workspaces, mergedOptions, loadedConfig.config, rules);
122
+ const autoFixEnabled = Boolean(mergedOptions.fix) && !runtimeOptions.watchRun;
123
+ const appliedFixes = autoFixEnabled ? await applyAutoFixes(workspaceReports) : [];
124
+ if (appliedFixes.length > 0) {
125
+ workspaceReports = await collectWorkspaceReports(workspaces, mergedOptions, loadedConfig.config, rules);
126
+ }
89
127
  let aiSummary;
90
128
  let aiSummaryMs = 0;
91
129
  if (aiConfig) {
@@ -108,7 +146,10 @@ Examples:
108
146
  reporter,
109
147
  debug: Boolean(mergedOptions.debug),
110
148
  performance: Boolean(mergedOptions.performance),
111
- cache: Boolean(mergedOptions.cache),
149
+ memory: Boolean(mergedOptions.memory),
150
+ watch: Boolean(mergedOptions.watch),
151
+ cache: Boolean(mergedOptions.cache || mergedOptions.watch),
152
+ fix: Boolean(mergedOptions.fix),
112
153
  production: Boolean(mergedOptions.production),
113
154
  strict: Boolean(mergedOptions.strict),
114
155
  include,
@@ -122,6 +163,7 @@ Examples:
122
163
  allowUnusedDevDependencies: rules.allowUnusedDevDependencies,
123
164
  allowMissingPackages: rules.allowMissingPackages,
124
165
  allowMisplacedDevDependencies: rules.allowMisplacedDevDependencies,
166
+ preprocessors: rules.preprocessors,
125
167
  },
126
168
  performanceSummary: {
127
169
  discoverWorkspacesMs: roundMs(discoverWorkspacesMs),
@@ -129,8 +171,13 @@ Examples:
129
171
  aiSummaryMs: roundMs(aiSummaryMs),
130
172
  totalMs: roundMs(nodePerformance.now() - totalStart),
131
173
  },
174
+ memorySummary: {
175
+ peak: workspaceReports.reduce((peak, workspace) => workspace.result.memory.heapUsedMb > peak.heapUsedMb ? workspace.result.memory : peak, workspaceReports[0]?.result.memory ?? EMPTY_MEMORY),
176
+ },
132
177
  ...(warnings.length > 0 ? { warnings } : {}),
178
+ ...(appliedFixes.length > 0 ? { appliedFixes } : {}),
133
179
  ...(mergedOptions.trace ? { trace: String(mergedOptions.trace) } : {}),
180
+ ...(mergedOptions.traceExport ? { traceExport: String(mergedOptions.traceExport) } : {}),
134
181
  ...(aiSummary ? { aiSummary } : {}),
135
182
  ...(aiConfig
136
183
  ? {
@@ -142,17 +189,104 @@ Examples:
142
189
  : {}),
143
190
  });
144
191
  console.log(report);
145
- if (workspaceReports.some((workspace) => workspace.findings.some((finding) => finding.items.length > 0))) {
146
- process.exitCode = 2;
147
- }
192
+ return workspaceReports.some((workspace) => workspace.findings.some((finding) => finding.items.length > 0))
193
+ ? 2
194
+ : 0;
148
195
  }
149
196
  catch (error) {
150
197
  const message = error instanceof Error ? error.message : "Unknown error";
151
198
  console.error(pc.red(`Error: ${message}`));
152
- process.exitCode = 1;
199
+ return 1;
153
200
  }
154
- });
155
- program.parseAsync(process.argv);
201
+ }
202
+ async function runWatchMode(targetDir, rawOptions) {
203
+ let fingerprint = await createWatchFingerprint(targetDir);
204
+ let running = false;
205
+ let pending = false;
206
+ let timer;
207
+ const rerun = async (reason) => {
208
+ if (running) {
209
+ pending = true;
210
+ return;
211
+ }
212
+ running = true;
213
+ if (reason) {
214
+ console.log(pc.dim(`\nChange detected${reason ? `: ${reason}` : ""}. Re-running...`));
215
+ }
216
+ process.exitCode = await runScanCommand(targetDir, rawOptions, { watchRun: true });
217
+ fingerprint = await createWatchFingerprint(targetDir);
218
+ running = false;
219
+ if (pending) {
220
+ pending = false;
221
+ await rerun();
222
+ }
223
+ };
224
+ await rerun();
225
+ console.log(pc.dim("\nWatching for changes. Press Ctrl+C to exit."));
226
+ timer = setInterval(async () => {
227
+ try {
228
+ const nextFingerprint = await createWatchFingerprint(targetDir);
229
+ if (nextFingerprint !== fingerprint) {
230
+ fingerprint = nextFingerprint;
231
+ await rerun("files changed");
232
+ }
233
+ }
234
+ catch (error) {
235
+ const message = error instanceof Error ? error.message : String(error);
236
+ console.error(pc.yellow(`Watch polling failed: ${message}`));
237
+ }
238
+ }, WATCH_INTERVAL_MS);
239
+ await new Promise((resolve) => {
240
+ const handleSigint = () => {
241
+ if (timer) {
242
+ clearInterval(timer);
243
+ }
244
+ process.off("SIGINT", handleSigint);
245
+ console.log(pc.dim("\nWatch mode stopped."));
246
+ resolve();
247
+ };
248
+ process.on("SIGINT", handleSigint);
249
+ });
250
+ }
251
+ async function collectWorkspaceReports(workspaces, options, config, rules) {
252
+ return Promise.all(workspaces.map(async (workspace) => {
253
+ const result = await scanProject(workspace.dir, {
254
+ production: Boolean(options.production),
255
+ strict: Boolean(options.strict),
256
+ cache: Boolean(options.cache || options.watch),
257
+ ...(config.inputs ? { pluginInputs: config.inputs } : {}),
258
+ });
259
+ const findings = getActiveFindings(result, rules, Boolean(options.production));
260
+ return {
261
+ workspace,
262
+ result,
263
+ findings,
264
+ };
265
+ }));
266
+ }
267
+ async function createWatchFingerprint(targetDir) {
268
+ const [sourceFiles, metadataFiles] = await Promise.all([
269
+ findSourceFiles(targetDir),
270
+ fg(["**/package.json", "**/sadrazam.json", "**/pnpm-workspace.yaml"], {
271
+ cwd: targetDir,
272
+ absolute: true,
273
+ dot: true,
274
+ ignore: WATCH_IGNORE_GLOBS,
275
+ }),
276
+ ]);
277
+ const filePaths = [...new Set([...sourceFiles, ...metadataFiles])].sort();
278
+ const entries = await Promise.all(filePaths.map(async (filePath) => {
279
+ try {
280
+ const fileStat = await stat(filePath);
281
+ const relativePath = path.relative(targetDir, filePath) || path.basename(filePath);
282
+ return `${relativePath}:${fileStat.size}:${Math.floor(fileStat.mtimeMs)}`;
283
+ }
284
+ catch {
285
+ return `${filePath}:missing`;
286
+ }
287
+ }));
288
+ return createHash("sha256").update(entries.join("\n")).digest("hex");
289
+ }
156
290
  function parseReporter(value) {
157
291
  if (SUPPORTED_REPORTERS.includes(value)) {
158
292
  return value;
@@ -174,7 +308,7 @@ function parseCsvOption(value) {
174
308
  .map((item) => item.trim())
175
309
  .filter(Boolean);
176
310
  }
177
- function buildFindingRules(options, include, exclude) {
311
+ function buildFindingRules(options, include, exclude, config) {
178
312
  return {
179
313
  include,
180
314
  exclude,
@@ -183,6 +317,11 @@ function buildFindingRules(options, include, exclude) {
183
317
  allowUnusedDevDependencies: parseCsvOption(options.allowUnusedDevDependencies),
184
318
  allowMissingPackages: parseCsvOption(options.allowMissingPackages),
185
319
  allowMisplacedDevDependencies: parseCsvOption(options.allowMisplacedDevDependencies),
320
+ preprocessors: {
321
+ packagePatterns: config.preprocessors?.packagePatterns ?? [],
322
+ filePatterns: config.preprocessors?.filePatterns ?? [],
323
+ exportPatterns: config.preprocessors?.exportPatterns ?? [],
324
+ },
186
325
  };
187
326
  }
188
327
  function mergeCliWithConfig(rawOptions, config) {
@@ -198,8 +337,12 @@ function mergeCliWithConfig(rawOptions, config) {
198
337
  strict: rawOptions.strict === true ? true : config.strict ?? false,
199
338
  debug: rawOptions.debug === true ? true : config.debug ?? false,
200
339
  performance: rawOptions.performance === true ? true : config.performance ?? false,
340
+ memory: rawOptions.memory === true ? true : config.memory ?? false,
201
341
  cache: rawOptions.cache === true ? true : config.cache ?? false,
342
+ fix: rawOptions.fix === true,
343
+ watch: rawOptions.watch === true ? true : config.watch ?? false,
202
344
  trace: asOptionalString(rawOptions.trace) ?? config.trace,
345
+ traceExport: asOptionalString(rawOptions.traceExport),
203
346
  ignorePackages: asOptionalString(rawOptions.ignorePackages) ?? config.ignorePackages?.join(","),
204
347
  allowUnusedDependencies: asOptionalString(rawOptions.allowUnusedDependencies) ?? config.allowUnusedDependencies?.join(","),
205
348
  allowUnusedDevDependencies: asOptionalString(rawOptions.allowUnusedDevDependencies) ?? config.allowUnusedDevDependencies?.join(","),
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export interface PluginAnalysis {
2
+ activePlugins: string[];
3
+ commandPackages: string[];
4
+ fileEntries: string[];
5
+ commandUsage: Record<string, string[]>;
6
+ }
7
+ interface PluginContext {
8
+ packageDir: string;
9
+ scripts: Record<string, string>;
10
+ }
11
+ export interface PluginInputsConfig {
12
+ entryFiles?: string[];
13
+ packageNames?: string[];
14
+ }
15
+ export declare function analyzePlugins(context: PluginContext): Promise<PluginAnalysis>;
16
+ export declare function analyzePluginInputs(packageDir: string, inputs: PluginInputsConfig | undefined): Promise<PluginAnalysis>;
17
+ export {};
18
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACxC;AAQD,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAyHD,wBAAsB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAiEpF;AAqDD,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,kBAAkB,GAAG,SAAS,GACrC,OAAO,CAAC,cAAc,CAAC,CA8BzB"}