depvitals 0.0.1 → 0.1.1

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.
Files changed (40) hide show
  1. package/README.md +67 -10
  2. package/dist/cli/index.js +13 -7
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/cli/parseCliArgs.d.ts +37 -0
  5. package/dist/cli/parseCliArgs.d.ts.map +1 -0
  6. package/dist/cli/parseCliArgs.js +85 -0
  7. package/dist/cli/parseCliArgs.js.map +1 -0
  8. package/dist/cli/runCli.d.ts +31 -13
  9. package/dist/cli/runCli.d.ts.map +1 -1
  10. package/dist/cli/runCli.js +76 -84
  11. package/dist/cli/runCli.js.map +1 -1
  12. package/dist/core/analyzeProject.d.ts +92 -0
  13. package/dist/core/analyzeProject.d.ts.map +1 -0
  14. package/dist/core/analyzeProject.js +175 -0
  15. package/dist/core/analyzeProject.js.map +1 -0
  16. package/dist/reporters/terminalReporter.d.ts +49 -0
  17. package/dist/reporters/terminalReporter.d.ts.map +1 -0
  18. package/dist/reporters/terminalReporter.js +98 -0
  19. package/dist/reporters/terminalReporter.js.map +1 -0
  20. package/dist/scanner/moduleSpecifiers.d.ts +60 -0
  21. package/dist/scanner/moduleSpecifiers.d.ts.map +1 -0
  22. package/dist/scanner/moduleSpecifiers.js +824 -0
  23. package/dist/scanner/moduleSpecifiers.js.map +1 -0
  24. package/dist/scanner/packageSpecifier.d.ts +45 -0
  25. package/dist/scanner/packageSpecifier.d.ts.map +1 -0
  26. package/dist/scanner/packageSpecifier.js +98 -0
  27. package/dist/scanner/packageSpecifier.js.map +1 -0
  28. package/dist/scanner/projectManifest.d.ts +72 -0
  29. package/dist/scanner/projectManifest.d.ts.map +1 -0
  30. package/dist/scanner/projectManifest.js +176 -0
  31. package/dist/scanner/projectManifest.js.map +1 -0
  32. package/dist/scanner/scriptUsage.d.ts +54 -0
  33. package/dist/scanner/scriptUsage.d.ts.map +1 -0
  34. package/dist/scanner/scriptUsage.js +490 -0
  35. package/dist/scanner/scriptUsage.js.map +1 -0
  36. package/dist/scanner/sourceFiles.d.ts +52 -0
  37. package/dist/scanner/sourceFiles.d.ts.map +1 -0
  38. package/dist/scanner/sourceFiles.js +190 -0
  39. package/dist/scanner/sourceFiles.js.map +1 -0
  40. package/package.json +3 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moduleSpecifiers.js","sourceRoot":"","sources":["../../src/scanner/moduleSpecifiers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Package specifier classification.
3
+ *
4
+ * This module classifies a single raw module specifier into a small set of categories without
5
+ * executing code, reading the filesystem or consulting `node_modules`. It is a pure transformation
6
+ * that sits between specifier extraction (Step 9) and dependency analysis (Step 12).
7
+ *
8
+ * It deliberately does not:
9
+ * - decide whether a specifier is used, unused or missing (that belongs to the analyzer);
10
+ * - resolve files on disk, `node_modules`, package `exports`, TS `paths` or bundler aliases;
11
+ * - validate a name against npm registry publication rules (names are compared case-sensitively);
12
+ * - read `package.json#imports`, so `#` import aliases cannot be resolved here.
13
+ *
14
+ * The classification is conservative: anything that cannot be confidently recognized is reported as
15
+ * `unsupported` (or `internal`) rather than as an external package, so these specifiers can never
16
+ * become a false "missing dependency".
17
+ */
18
+ /**
19
+ * The classification of a raw module specifier.
20
+ *
21
+ * - `external`: an npm package, normalized to its package root (subpaths collapse to the root).
22
+ * - `builtin`: a Node.js builtin module, recognized from the running runtime.
23
+ * - `internal`: a relative or absolute filesystem reference.
24
+ * - `unsupported`: a specifier that cannot be recognized (URI schemes, `#` import aliases, malformed
25
+ * scoped names, empty input, ...).
26
+ */
27
+ export type PackageSpecifier = {
28
+ kind: 'external';
29
+ packageName: string;
30
+ } | {
31
+ kind: 'builtin';
32
+ } | {
33
+ kind: 'internal';
34
+ } | {
35
+ kind: 'unsupported';
36
+ };
37
+ /**
38
+ * Classify a raw module specifier as an external package, a Node builtin, an internal reference or
39
+ * an unsupported specifier.
40
+ *
41
+ * The function is pure and side-effect free: it performs no I/O, caches nothing and never mutates
42
+ * its argument.
43
+ */
44
+ export declare function classifyPackageSpecifier(specifier: string): PackageSpecifier;
45
+ //# sourceMappingURL=packageSpecifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageSpecifier.d.ts","sourceRoot":"","sources":["../../src/scanner/packageSpecifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AAU5B;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAsC5E"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Package specifier classification.
3
+ *
4
+ * This module classifies a single raw module specifier into a small set of categories without
5
+ * executing code, reading the filesystem or consulting `node_modules`. It is a pure transformation
6
+ * that sits between specifier extraction (Step 9) and dependency analysis (Step 12).
7
+ *
8
+ * It deliberately does not:
9
+ * - decide whether a specifier is used, unused or missing (that belongs to the analyzer);
10
+ * - resolve files on disk, `node_modules`, package `exports`, TS `paths` or bundler aliases;
11
+ * - validate a name against npm registry publication rules (names are compared case-sensitively);
12
+ * - read `package.json#imports`, so `#` import aliases cannot be resolved here.
13
+ *
14
+ * The classification is conservative: anything that cannot be confidently recognized is reported as
15
+ * `unsupported` (or `internal`) rather than as an external package, so these specifiers can never
16
+ * become a false "missing dependency".
17
+ */
18
+ import { isBuiltin } from 'node:module';
19
+ /**
20
+ * A URI-like scheme prefix such as `file:`, `http:`, `data:` or `npm:`.
21
+ *
22
+ * `node:` is matched here too, but builtin recognition runs first so real Node builtins are never
23
+ * swallowed by this check.
24
+ */
25
+ const SCHEME_PATTERN = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;
26
+ /**
27
+ * Classify a raw module specifier as an external package, a Node builtin, an internal reference or
28
+ * an unsupported specifier.
29
+ *
30
+ * The function is pure and side-effect free: it performs no I/O, caches nothing and never mutates
31
+ * its argument.
32
+ */
33
+ export function classifyPackageSpecifier(specifier) {
34
+ // Empty and whitespace-only input, and any specifier containing a character that can never appear
35
+ // in a package reference, are unsupported. Trimming is intentionally avoided so accidental
36
+ // whitespace does not silently change a specifier.
37
+ if (specifier.length === 0 || isMalformed(specifier)) {
38
+ return { kind: 'unsupported' };
39
+ }
40
+ // Node builtins are recognized from the running runtime before any generic scheme handling so
41
+ // that real builtins (including the `node:` form) are never treated as external packages.
42
+ if (isBuiltin(specifier)) {
43
+ return { kind: 'builtin' };
44
+ }
45
+ // Relative and absolute filesystem references.
46
+ if (specifier.startsWith('.') || specifier.startsWith('/')) {
47
+ return { kind: 'internal' };
48
+ }
49
+ // Any other URI-like scheme (file:, data:, http:, https:, npm:, bun:, drive letters like C:).
50
+ if (SCHEME_PATTERN.test(specifier)) {
51
+ return { kind: 'unsupported' };
52
+ }
53
+ // Scoped packages collapse to `@scope/package`; malformed scoped forms are rejected below.
54
+ if (specifier.startsWith('@')) {
55
+ return classifyScoped(specifier);
56
+ }
57
+ // Unscoped packages: the first path segment is the package root. A stray `@` (for example a
58
+ // version specifier such as `pkg@1.2.3`) is not a valid package name.
59
+ const root = specifier.split('/')[0] ?? '';
60
+ if (root.length === 0 || root.includes('@')) {
61
+ return { kind: 'unsupported' };
62
+ }
63
+ return { kind: 'external', packageName: root };
64
+ }
65
+ /**
66
+ * Classify a scoped specifier (`@scope/package`), collapsing subpaths to the package root.
67
+ *
68
+ * Malformed scoped forms (`@scope`, `@scope/`, `@/pkg`) are rejected as unsupported rather than
69
+ * inventing a package name.
70
+ */
71
+ function classifyScoped(specifier) {
72
+ const slashIndex = specifier.indexOf('/');
73
+ if (slashIndex === -1) {
74
+ // A bare `@` with no package part.
75
+ return { kind: 'unsupported' };
76
+ }
77
+ const scope = specifier.slice(1, slashIndex);
78
+ const rest = specifier.slice(slashIndex + 1);
79
+ const packageRoot = rest.split('/')[0] ?? '';
80
+ if (scope.length === 0 || packageRoot.length === 0 || packageRoot.includes('@')) {
81
+ return { kind: 'unsupported' };
82
+ }
83
+ return { kind: 'external', packageName: `@${scope}/${packageRoot}` };
84
+ }
85
+ /**
86
+ * Whether a specifier contains a character that can never appear in a package reference.
87
+ *
88
+ * These are checked before structural parsing so a stray `?`, `#`, `%`, backslash or whitespace
89
+ * anywhere in the specifier is rejected consistently, for both scoped and unscoped forms.
90
+ */
91
+ function isMalformed(specifier) {
92
+ return (/\s/.test(specifier) ||
93
+ specifier.includes('\\') ||
94
+ specifier.includes('#') ||
95
+ specifier.includes('?') ||
96
+ specifier.includes('%'));
97
+ }
98
+ //# sourceMappingURL=packageSpecifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"packageSpecifier.js","sourceRoot":"","sources":["../../src/scanner/packageSpecifier.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Project manifest discovery.
3
+ *
4
+ * This module answers exactly one question: "what does this package declare?". It loads the root
5
+ * `package.json` of a single Node.js project and turns it into a deterministic dependency
6
+ * inventory.
7
+ *
8
+ * It deliberately does not:
9
+ * - decide whether a dependency is used, unused or missing (that belongs to the analyzers);
10
+ * - walk upward looking for a parent manifest or interpret workspaces (`v0.1.0` is
11
+ * single-package);
12
+ * - execute or import anything from the analyzed project;
13
+ * - mutate the analyzed project.
14
+ *
15
+ * The manifest is read as text and parsed with `JSON.parse`, so no target-project code runs. The
16
+ * text is read as UTF-8 without any BOM handling: a manifest that `JSON.parse` rejects is reported
17
+ * as invalid instead of being silently normalized.
18
+ */
19
+ /**
20
+ * A dependency section: package name mapped to the version specifier declared for it.
21
+ *
22
+ * Version specifiers are kept verbatim; DepVitals never validates semver ranges here.
23
+ */
24
+ export type DependencyMap = Readonly<Record<string, string>>;
25
+ /**
26
+ * The declared contents of one project manifest.
27
+ *
28
+ * `declaredDependencyNames` is the union of every dependency section and exists only to suppress
29
+ * obviously wrong "missing" results later. Unused analysis is restricted to `dependencies` and
30
+ * `devDependencies`; peer and optional dependencies are never reported as unused in `v0.1.0`.
31
+ */
32
+ export type ProjectManifest = {
33
+ /** Absolute, normalized project root as supplied to {@link loadProjectManifest}. */
34
+ root: string;
35
+ /** Path of the `package.json` that was loaded from `root`. */
36
+ packageJsonPath: string;
37
+ /** Package name. Omitted when the manifest declares none. */
38
+ name?: string;
39
+ dependencies: DependencyMap;
40
+ devDependencies: DependencyMap;
41
+ declaredDependencyNames: ReadonlySet<string>;
42
+ /** `scripts` entries as static strings, never executed. */
43
+ scripts: Readonly<Record<string, string>>;
44
+ };
45
+ /**
46
+ * Why a manifest could not be turned into a {@link ProjectManifest}.
47
+ *
48
+ * - `missing`: no `package.json` exists at the expected path.
49
+ * - `unreadable`: the file exists but could not be read (permissions, not a directory, ...).
50
+ * - `invalid-json`: the file content is not valid JSON.
51
+ * - `invalid-shape`: the JSON is valid but its structure is not what the model requires.
52
+ */
53
+ export type ProjectManifestErrorCode = 'missing' | 'unreadable' | 'invalid-json' | 'invalid-shape';
54
+ /**
55
+ * Operational error for manifest loading. The `code` lets callers (the CLI in a later step) render
56
+ * a clean message without matching on error strings.
57
+ */
58
+ export declare class ProjectManifestError extends Error {
59
+ readonly code: ProjectManifestErrorCode;
60
+ constructor(message: string, code: ProjectManifestErrorCode, cause?: unknown);
61
+ }
62
+ /**
63
+ * Load the root `package.json` of the project rooted at `projectRoot`.
64
+ *
65
+ * The supplied root is resolved to an absolute path; `process.cwd()` is never changed and the
66
+ * target project is never written to.
67
+ *
68
+ * @throws {ProjectManifestError} when the manifest is missing, unreadable, invalid JSON, or has an
69
+ * unexpected structure.
70
+ */
71
+ export declare function loadProjectManifest(projectRoot: string): Promise<ProjectManifest>;
72
+ //# sourceMappingURL=projectManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectManifest.d.ts","sourceRoot":"","sources":["../../src/scanner/projectManifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAKH;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,oFAAoF;IACpF,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,aAAa,CAAC;IAC5B,eAAe,EAAE,aAAa,CAAC;IAC/B,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,2DAA2D;IAC3D,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC3C,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAInG;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;gBAE5B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,KAAK,CAAC,EAAE,OAAO;CAK7E;AAED;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAYvF"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Project manifest discovery.
3
+ *
4
+ * This module answers exactly one question: "what does this package declare?". It loads the root
5
+ * `package.json` of a single Node.js project and turns it into a deterministic dependency
6
+ * inventory.
7
+ *
8
+ * It deliberately does not:
9
+ * - decide whether a dependency is used, unused or missing (that belongs to the analyzers);
10
+ * - walk upward looking for a parent manifest or interpret workspaces (`v0.1.0` is
11
+ * single-package);
12
+ * - execute or import anything from the analyzed project;
13
+ * - mutate the analyzed project.
14
+ *
15
+ * The manifest is read as text and parsed with `JSON.parse`, so no target-project code runs. The
16
+ * text is read as UTF-8 without any BOM handling: a manifest that `JSON.parse` rejects is reported
17
+ * as invalid instead of being silently normalized.
18
+ */
19
+ import { readFile } from 'node:fs/promises';
20
+ import { join, resolve } from 'node:path';
21
+ const MANIFEST_FILENAME = 'package.json';
22
+ /**
23
+ * Operational error for manifest loading. The `code` lets callers (the CLI in a later step) render
24
+ * a clean message without matching on error strings.
25
+ */
26
+ export class ProjectManifestError extends Error {
27
+ code;
28
+ constructor(message, code, cause) {
29
+ super(message, cause === undefined ? undefined : { cause });
30
+ this.name = 'ProjectManifestError';
31
+ this.code = code;
32
+ }
33
+ }
34
+ /**
35
+ * Load the root `package.json` of the project rooted at `projectRoot`.
36
+ *
37
+ * The supplied root is resolved to an absolute path; `process.cwd()` is never changed and the
38
+ * target project is never written to.
39
+ *
40
+ * @throws {ProjectManifestError} when the manifest is missing, unreadable, invalid JSON, or has an
41
+ * unexpected structure.
42
+ */
43
+ export async function loadProjectManifest(projectRoot) {
44
+ const root = resolve(projectRoot);
45
+ const packageJsonPath = join(root, MANIFEST_FILENAME);
46
+ let text;
47
+ try {
48
+ text = await readFile(packageJsonPath, 'utf8');
49
+ }
50
+ catch (error) {
51
+ throw toReadError(packageJsonPath, error);
52
+ }
53
+ return parseManifest(root, packageJsonPath, text);
54
+ }
55
+ /**
56
+ * Classify a filesystem failure: a missing manifest is expected and reported separately from any
57
+ * other I/O problem. A root that turns out to be a file surfaces as `ENOTDIR` and stays unreadable.
58
+ */
59
+ function toReadError(packageJsonPath, error) {
60
+ if (isNotFoundError(error)) {
61
+ return new ProjectManifestError(`No ${MANIFEST_FILENAME} found at ${packageJsonPath}`, 'missing', error);
62
+ }
63
+ return new ProjectManifestError(`Could not read ${MANIFEST_FILENAME} at ${packageJsonPath}`, 'unreadable', error);
64
+ }
65
+ /**
66
+ * Whether an unknown thrown value is the filesystem `ENOENT` error.
67
+ */
68
+ function isNotFoundError(error) {
69
+ return error instanceof Error && 'code' in error && error.code === 'ENOENT';
70
+ }
71
+ /**
72
+ * Parse manifest text into the internal model.
73
+ */
74
+ function parseManifest(root, packageJsonPath, text) {
75
+ let parsed;
76
+ try {
77
+ parsed = JSON.parse(text);
78
+ }
79
+ catch (error) {
80
+ throw new ProjectManifestError(`${packageJsonPath} is not valid JSON`, 'invalid-json', error);
81
+ }
82
+ if (!isPlainRecord(parsed)) {
83
+ throw new ProjectManifestError(`${packageJsonPath} must contain a JSON object`, 'invalid-shape');
84
+ }
85
+ const dependencies = readStringRecord(parsed, 'dependencies', packageJsonPath);
86
+ const devDependencies = readStringRecord(parsed, 'devDependencies', packageJsonPath);
87
+ const optionalDependencies = readStringRecord(parsed, 'optionalDependencies', packageJsonPath);
88
+ const peerDependencies = readStringRecord(parsed, 'peerDependencies', packageJsonPath);
89
+ const scripts = readStringRecord(parsed, 'scripts', packageJsonPath);
90
+ const name = readName(parsed, packageJsonPath);
91
+ const manifest = {
92
+ root,
93
+ packageJsonPath,
94
+ dependencies,
95
+ devDependencies,
96
+ declaredDependencyNames: declaredNames([
97
+ dependencies,
98
+ devDependencies,
99
+ optionalDependencies,
100
+ peerDependencies,
101
+ ]),
102
+ scripts,
103
+ };
104
+ return name === undefined ? manifest : { ...manifest, name };
105
+ }
106
+ /**
107
+ * Read the optional `name` field. Its type is validated, but npm package-name rules are not.
108
+ */
109
+ function readName(manifest, packageJsonPath) {
110
+ const value = manifest['name'];
111
+ if (value === undefined) {
112
+ return undefined;
113
+ }
114
+ if (typeof value !== 'string') {
115
+ throw new ProjectManifestError(`${packageJsonPath} field "name" must be a string when present`, 'invalid-shape');
116
+ }
117
+ return value;
118
+ }
119
+ /**
120
+ * Read one manifest section as a string map.
121
+ *
122
+ * A missing section is empty. A present section must be an object whose values are all strings;
123
+ * anything else is an explicit error rather than a silent guess. Keys are package names or script
124
+ * names and are kept verbatim (no package-name validation at this stage).
125
+ */
126
+ function readStringRecord(manifest, section, packageJsonPath) {
127
+ const value = manifest[section];
128
+ if (value === undefined) {
129
+ return {};
130
+ }
131
+ if (!isPlainRecord(value)) {
132
+ throw new ProjectManifestError(`${packageJsonPath} field "${section}" must be an object of string values`, 'invalid-shape');
133
+ }
134
+ const entries = [];
135
+ for (const [key, entry] of Object.entries(value)) {
136
+ if (typeof entry !== 'string') {
137
+ throw new ProjectManifestError(`${packageJsonPath} field "${section}" must map every name to a string, but "${key}" is not a string`, 'invalid-shape');
138
+ }
139
+ entries.push([key, entry]);
140
+ }
141
+ entries.sort(([a], [b]) => compareNames(a, b));
142
+ // Rebuilt from sorted entries so later scanner steps never depend on JSON property order.
143
+ return Object.fromEntries(entries);
144
+ }
145
+ /**
146
+ * Deterministic union of the dependency names of every supplied section.
147
+ */
148
+ function declaredNames(sections) {
149
+ const names = new Set();
150
+ for (const section of sections) {
151
+ for (const name of Object.keys(section)) {
152
+ names.add(name);
153
+ }
154
+ }
155
+ // Rebuilt from sorted names so iteration is deterministic even when sections overlap.
156
+ return new Set([...names].sort(compareNames));
157
+ }
158
+ /**
159
+ * A JSON object (not an array, not `null`) whose keys are strings.
160
+ */
161
+ function isPlainRecord(value) {
162
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
163
+ }
164
+ /**
165
+ * Locale-independent lexicographic ordering, so the same manifest always yields the same order.
166
+ */
167
+ function compareNames(a, b) {
168
+ if (a < b) {
169
+ return -1;
170
+ }
171
+ if (a > b) {
172
+ return 1;
173
+ }
174
+ return 0;
175
+ }
176
+ //# sourceMappingURL=projectManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectManifest.js","sourceRoot":"","sources":["../../src/scanner/projectManifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Basic package.json script usage detection.
3
+ *
4
+ * This module answers exactly one narrow question: which declared dependencies are referenced by
5
+ * the static strings found in a project's `package.json` `scripts`? It turns those strings into a
6
+ * conservative set of package names that have clear static usage evidence, so later steps can avoid
7
+ * reporting them as unused.
8
+ *
9
+ * It deliberately does not:
10
+ * - execute, expand, substitute, resolve, spawn, source or evaluate anything;
11
+ * - shell-out, read the filesystem or consult `node_modules`;
12
+ * - map arbitrary shell binaries to packages; only the small, explicit `BINARY_TO_PACKAGE` list
13
+ * (currently `tsc` -> `typescript`) is ever translated, and only against declared packages;
14
+ * - report missing dependencies (undeclared command tokens are ignored);
15
+ * - inspect installed `bin` metadata, config, workspaces or framework detectors.
16
+ *
17
+ * The strings are treated as inert text. This module performs no I/O and has no side effects.
18
+ *
19
+ * Recognition is intentionally conservative:
20
+ * - a shell segment's first effective command token counts only when that token is exactly a package
21
+ * name, so paths and package subpaths (`scripts/build.js`, `eslint/bin/cli`) are never usage
22
+ * evidence for the package they point into;
23
+ * - the small explicit `BINARY_TO_PACKAGE` list translates a recognized direct executable (currently
24
+ * `tsc` -> `typescript`) to its declared package; every other command keeps exact-name matching.
25
+ * - the five documented package-runner forms count (`npx`, `npm exec`, `pnpm exec`, `pnpm dlx`,
26
+ * `yarn dlx`) with the package in its immediate position;
27
+ * - leading POSIX environment assignments (`NODE_ENV=test`, `FOO=1 BAR=2`) are skipped;
28
+ * - quoted tokens keep their content, so separators and text inside quotes are not misread.
29
+ *
30
+ * Shell syntax this scanner does not understand invalidates the segment that contains it: single `&`
31
+ * (background execution), redirection (`<`, `>`), command and parameter expansion (`$(...)`,
32
+ * `${...}`), legacy backtick substitution and backslash escapes outside single quotes, plus a quote
33
+ * that is still open at the end of the script. Each such region is consumed as an opaque block, so a
34
+ * separator inside it never delimits the surrounding script. An invalidated segment yields no
35
+ * evidence at all, while the neighbouring segments delimited by real supported separators are still
36
+ * analyzed normally.
37
+ */
38
+ /**
39
+ * Recognize the declared dependencies that `package.json` scripts clearly reference.
40
+ *
41
+ * For every script command the module collects the package names that have clear static usage
42
+ * evidence (a command token, a recognized executable mapped through `BINARY_TO_PACKAGE`, or a
43
+ * supported runner package position) and keeps only those that are present in
44
+ * {@link declaredPackageNames}. Undeclared command tokens and undeclared mapped packages are ignored:
45
+ * this module never creates missing-dependency findings.
46
+ *
47
+ * The result is built in alphabetical package-name order so iteration is deterministic. Neither
48
+ * {@link scripts} nor {@link declaredPackageNames} is mutated.
49
+ *
50
+ * @param scripts - `package.json` `scripts` entries as static strings (never executed).
51
+ * @param declaredPackageNames - the declared dependency names that may be suppressed as used.
52
+ */
53
+ export declare function findPackageScriptUsage(scripts: Readonly<Record<string, string>>, declaredPackageNames: ReadonlySet<string>): ReadonlySet<string>;
54
+ //# sourceMappingURL=scriptUsage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scriptUsage.d.ts","sourceRoot":"","sources":["../../src/scanner/scriptUsage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AA8DH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACzC,oBAAoB,EAAE,WAAW,CAAC,MAAM,CAAC,GACxC,WAAW,CAAC,MAAM,CAAC,CAYrB"}