depvitals 0.2.0 → 0.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/README.md +95 -30
- package/dist/cli/entry.js +8 -21
- package/dist/cli/entry.js.map +1 -1
- package/dist/cli/parseCliArgs.d.ts +5 -2
- package/dist/cli/parseCliArgs.d.ts.map +1 -1
- package/dist/cli/parseCliArgs.js +51 -36
- package/dist/cli/parseCliArgs.js.map +1 -1
- package/dist/cli/runCli.d.ts +4 -5
- package/dist/cli/runCli.d.ts.map +1 -1
- package/dist/cli/runCli.js +41 -46
- package/dist/cli/runCli.js.map +1 -1
- package/dist/config/ignoreDependencies.d.ts +9 -0
- package/dist/config/ignoreDependencies.d.ts.map +1 -0
- package/dist/config/ignoreDependencies.js +22 -0
- package/dist/config/ignoreDependencies.js.map +1 -0
- package/dist/config/ignorePaths.d.ts +13 -0
- package/dist/config/ignorePaths.d.ts.map +1 -0
- package/dist/config/ignorePaths.js +47 -0
- package/dist/config/ignorePaths.js.map +1 -0
- package/dist/config/projectConfigError.d.ts +7 -0
- package/dist/config/projectConfigError.d.ts.map +1 -0
- package/dist/config/projectConfigError.js +10 -0
- package/dist/config/projectConfigError.js.map +1 -0
- package/dist/config/readProjectConfig.d.ts +28 -0
- package/dist/config/readProjectConfig.d.ts.map +1 -0
- package/dist/config/readProjectConfig.js +120 -0
- package/dist/config/readProjectConfig.js.map +1 -0
- package/dist/core/analyzeProject.d.ts +40 -1
- package/dist/core/analyzeProject.d.ts.map +1 -1
- package/dist/core/analyzeProject.js +189 -45
- package/dist/core/analyzeProject.js.map +1 -1
- package/dist/core/evidence.d.ts +67 -0
- package/dist/core/evidence.d.ts.map +1 -0
- package/dist/core/evidence.js +115 -0
- package/dist/core/evidence.js.map +1 -0
- package/dist/core/scanContext.d.ts +20 -0
- package/dist/core/scanContext.d.ts.map +1 -0
- package/dist/core/scanContext.js +43 -0
- package/dist/core/scanContext.js.map +1 -0
- package/dist/detectors/eslintManifestConfig.d.ts +18 -0
- package/dist/detectors/eslintManifestConfig.d.ts.map +1 -1
- package/dist/detectors/eslintManifestConfig.js +62 -80
- package/dist/detectors/eslintManifestConfig.js.map +1 -1
- package/dist/detectors/eslintRcJsonConfig.d.ts +8 -2
- package/dist/detectors/eslintRcJsonConfig.d.ts.map +1 -1
- package/dist/detectors/eslintRcJsonConfig.js +27 -12
- package/dist/detectors/eslintRcJsonConfig.js.map +1 -1
- package/dist/detectors/jestManifestConfig.d.ts +15 -3
- package/dist/detectors/jestManifestConfig.d.ts.map +1 -1
- package/dist/detectors/jestManifestConfig.js +63 -83
- package/dist/detectors/jestManifestConfig.js.map +1 -1
- package/dist/reporters/jsonReporter.d.ts +39 -0
- package/dist/reporters/jsonReporter.d.ts.map +1 -0
- package/dist/reporters/jsonReporter.js +91 -0
- package/dist/reporters/jsonReporter.js.map +1 -0
- package/dist/reporters/terminalReporter.d.ts +15 -4
- package/dist/reporters/terminalReporter.d.ts.map +1 -1
- package/dist/reporters/terminalReporter.js +64 -4
- package/dist/reporters/terminalReporter.js.map +1 -1
- package/dist/scanner/moduleSpecifiers.d.ts +12 -2
- package/dist/scanner/moduleSpecifiers.d.ts.map +1 -1
- package/dist/scanner/moduleSpecifiers.js +1154 -183
- package/dist/scanner/moduleSpecifiers.js.map +1 -1
- package/dist/scanner/packageSpecifier.d.ts +26 -2
- package/dist/scanner/packageSpecifier.d.ts.map +1 -1
- package/dist/scanner/packageSpecifier.js +70 -2
- package/dist/scanner/packageSpecifier.js.map +1 -1
- package/dist/scanner/projectManifest.d.ts +28 -3
- package/dist/scanner/projectManifest.d.ts.map +1 -1
- package/dist/scanner/projectManifest.js +58 -13
- package/dist/scanner/projectManifest.js.map +1 -1
- package/dist/scanner/scriptUsage.d.ts +15 -1
- package/dist/scanner/scriptUsage.d.ts.map +1 -1
- package/dist/scanner/scriptUsage.js +284 -69
- package/dist/scanner/scriptUsage.js.map +1 -1
- package/dist/scanner/sourceFiles.d.ts +21 -2
- package/dist/scanner/sourceFiles.d.ts.map +1 -1
- package/dist/scanner/sourceFiles.js +19 -6
- package/dist/scanner/sourceFiles.js.map +1 -1
- package/package.json +4 -2
- package/schemas/README.md +47 -0
- package/schemas/examples/README.md +27 -0
- package/schemas/examples/explain-excluded.json +53 -0
- package/schemas/examples/explain-missing.json +65 -0
- package/schemas/examples/explain-node-preload.json +70 -0
- package/schemas/examples/explain-unknown.json +53 -0
- package/schemas/examples/scan-clean.json +40 -0
- package/schemas/examples/scan-findings.json +80 -0
- package/schemas/report-v1.schema.json +376 -0
|
@@ -48,11 +48,13 @@
|
|
|
48
48
|
*/
|
|
49
49
|
import { readFile } from 'node:fs/promises';
|
|
50
50
|
import { dirname } from 'node:path';
|
|
51
|
-
import {
|
|
51
|
+
import { loadPackageScope, loadProjectManifest, } from '../scanner/projectManifest.js';
|
|
52
52
|
import { discoverSourceFiles } from '../scanner/sourceFiles.js';
|
|
53
|
-
import {
|
|
54
|
-
import { classifyPackageSpecifier } from '../scanner/packageSpecifier.js';
|
|
55
|
-
import {
|
|
53
|
+
import { collectModuleSpecifiers, } from '../scanner/moduleSpecifiers.js';
|
|
54
|
+
import { classifyPackageSpecifier, isPackageSelfReference } from '../scanner/packageSpecifier.js';
|
|
55
|
+
import { collectPackageScriptUsage } from '../scanner/scriptUsage.js';
|
|
56
|
+
import { isExactPackageRoot } from '../config/ignoreDependencies.js';
|
|
57
|
+
import { declarationGroupsFor, evidencePath, FINDING_CATEGORIES, sortedUniqueEvidence, } from './evidence.js';
|
|
56
58
|
/**
|
|
57
59
|
* Operational error for the dependency-analysis engine.
|
|
58
60
|
*
|
|
@@ -76,26 +78,118 @@ export class AnalysisError extends Error {
|
|
|
76
78
|
* project is never written to.
|
|
77
79
|
*
|
|
78
80
|
* @param projectRoot - Directory to analyze.
|
|
79
|
-
* @param options - Optional
|
|
81
|
+
* @param options - Optional static tool hints and validated source exclusions; omitted inputs change nothing.
|
|
80
82
|
* @throws {AnalysisError} when a discovered source file cannot be read or cannot be safely analyzed.
|
|
81
83
|
* @throws {ProjectManifestError} when the manifest is missing, unreadable, invalid or malformed.
|
|
82
84
|
* @throws {SourceFilesError} when the root is missing, is not a directory, or cannot be read.
|
|
83
85
|
*/
|
|
84
86
|
export async function analyzeProject(projectRoot, options = {}) {
|
|
85
87
|
const manifest = await loadProjectManifest(projectRoot);
|
|
86
|
-
const
|
|
88
|
+
const usage = await collectUsage(manifest, options.ignorePaths);
|
|
89
|
+
// Legacy names-only hints keep their finding semantics without creating fictional provenance.
|
|
90
|
+
const used = unionNames([
|
|
91
|
+
[...usage.usedNames],
|
|
92
|
+
[...normalizeConfigHints(options.configUsedNames)],
|
|
93
|
+
]);
|
|
94
|
+
const underlying = classifyFindings(manifest, usage.sourceUsedNames, used);
|
|
95
|
+
return legacyResult(manifest.root, applyDependencyPolicy(underlying, new Set(options.ignoreDependencies ?? [])));
|
|
96
|
+
}
|
|
97
|
+
/** Keep the small CLI/legacy result projection while collecting the same complete scan facts. */
|
|
98
|
+
export async function analyzeProjectWithContext(context) {
|
|
99
|
+
return projectAnalysisResult(await analyzeProjectDetailed(context));
|
|
100
|
+
}
|
|
101
|
+
/** Detailed analysis accepts eligible typed facts only, never the legacy names-only hint seam. */
|
|
102
|
+
export async function analyzeProjectDetailed(context) {
|
|
103
|
+
const { manifest, config } = context;
|
|
104
|
+
const usage = await collectUsage(manifest, config.ignorePaths, context.configEvidence);
|
|
105
|
+
const underlyingFindings = classifyFindings(manifest, usage.sourceUsedNames, usage.usedNames);
|
|
106
|
+
const ignored = new Set(config.ignoreDependencies);
|
|
107
|
+
const findings = applyDependencyPolicy(underlyingFindings, ignored);
|
|
108
|
+
return {
|
|
109
|
+
projectRoot: manifest.root,
|
|
110
|
+
manifest,
|
|
111
|
+
config,
|
|
112
|
+
underlyingFindings,
|
|
113
|
+
findings,
|
|
114
|
+
packages: packageFacts(manifest, usage.evidence, ignored, underlyingFindings, findings),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
/** Pure legacy projection; no collection, reclassification or input reads. */
|
|
118
|
+
export function projectAnalysisResult(result) {
|
|
119
|
+
return legacyResult(result.projectRoot, result.findings);
|
|
120
|
+
}
|
|
121
|
+
/** Project only completed scan facts. This function performs no collection or resolution. */
|
|
122
|
+
export function projectPackageExplanation(result, packageName) {
|
|
123
|
+
if (!isExactPackageRoot(packageName)) {
|
|
124
|
+
throw new TypeError('Invalid value for --explain: expected an exact package root (name or @scope/name), at most 214 characters.');
|
|
125
|
+
}
|
|
126
|
+
const selected = result.packages.find((pkg) => pkg.name === packageName);
|
|
127
|
+
const known = selected !== undefined;
|
|
128
|
+
const pkg = selected ?? {
|
|
129
|
+
name: packageName,
|
|
130
|
+
status: 'unknown',
|
|
131
|
+
declaredIn: [],
|
|
132
|
+
excluded: false,
|
|
133
|
+
underlyingFindings: [],
|
|
134
|
+
findings: [],
|
|
135
|
+
evidence: [],
|
|
136
|
+
};
|
|
137
|
+
const findings = {
|
|
138
|
+
unusedDependencies: result.findings.unusedDependencies.filter((name) => name === packageName),
|
|
139
|
+
unusedDevDependencies: result.findings.unusedDevDependencies.filter((name) => name === packageName),
|
|
140
|
+
missingDependencies: result.findings.missingDependencies.filter((name) => name === packageName),
|
|
141
|
+
};
|
|
142
|
+
const counts = {
|
|
143
|
+
unusedDependencies: findings.unusedDependencies.length,
|
|
144
|
+
unusedDevDependencies: findings.unusedDevDependencies.length,
|
|
145
|
+
missingDependencies: findings.missingDependencies.length,
|
|
146
|
+
};
|
|
147
|
+
return {
|
|
148
|
+
projectRoot: result.projectRoot,
|
|
149
|
+
config: result.config,
|
|
150
|
+
findings,
|
|
151
|
+
counts,
|
|
152
|
+
packages: [pkg],
|
|
153
|
+
query: { packageName, known },
|
|
154
|
+
exitCode: !known || Object.values(counts).some((count) => count > 0) ? 1 : 0,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
async function collectUsage(manifest, ignorePaths, configFacts = []) {
|
|
158
|
+
const evidence = new Map();
|
|
159
|
+
const add = (name, fact) => {
|
|
160
|
+
const facts = evidence.get(name);
|
|
161
|
+
if (facts === undefined)
|
|
162
|
+
evidence.set(name, [fact]);
|
|
163
|
+
else
|
|
164
|
+
facts.push(fact);
|
|
165
|
+
};
|
|
166
|
+
const sourceFiles = await discoverSourceFiles(manifest.root, {
|
|
167
|
+
ignorePaths,
|
|
168
|
+
});
|
|
87
169
|
// External package roots referenced by source files, collapsed to their package root.
|
|
88
170
|
const sourceUsedNames = new Set();
|
|
89
|
-
|
|
90
|
-
|
|
171
|
+
// Seed the selected root so scope lookup never consults a parent outside the scan.
|
|
172
|
+
const scopeByDirectory = new Map([
|
|
173
|
+
[manifest.root, { packageType: manifest.packageType, selfReference: manifest.selfReference }],
|
|
91
174
|
]);
|
|
92
175
|
for (const file of sourceFiles) {
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
|
|
176
|
+
const scope = await packageScopeForDirectory(dirname(file), scopeByDirectory);
|
|
177
|
+
const occurrences = await readAndExtract(file, scope.packageType);
|
|
178
|
+
const relativeFile = evidencePath(manifest.root, file);
|
|
179
|
+
for (const occurrence of occurrences) {
|
|
180
|
+
const specifier = occurrence.specifier;
|
|
181
|
+
if (isPackageSelfReference(specifier, scope.selfReference))
|
|
182
|
+
continue;
|
|
96
183
|
const classified = classifyPackageSpecifier(specifier);
|
|
97
184
|
if (classified.kind === 'external') {
|
|
98
185
|
sourceUsedNames.add(classified.packageName);
|
|
186
|
+
add(classified.packageName, {
|
|
187
|
+
kind: 'source',
|
|
188
|
+
file: relativeFile,
|
|
189
|
+
reference: occurrence.kind,
|
|
190
|
+
specifier,
|
|
191
|
+
position: occurrence.position,
|
|
192
|
+
});
|
|
99
193
|
}
|
|
100
194
|
}
|
|
101
195
|
}
|
|
@@ -105,42 +199,89 @@ export async function analyzeProject(projectRoot, options = {}) {
|
|
|
105
199
|
Object.keys(manifest.dependencies),
|
|
106
200
|
Object.keys(manifest.devDependencies),
|
|
107
201
|
]);
|
|
108
|
-
const
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
const
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
202
|
+
for (const fact of collectPackageScriptUsage(manifest.scripts, declaredCandidates)) {
|
|
203
|
+
add(fact.packageName, fact.evidence);
|
|
204
|
+
}
|
|
205
|
+
for (const fact of configFacts) {
|
|
206
|
+
// Config facts cannot enlarge the external inventory with undeclared packages.
|
|
207
|
+
if (manifest.declaredDependencyNames.has(fact.packageName))
|
|
208
|
+
add(fact.packageName, fact.evidence);
|
|
209
|
+
}
|
|
210
|
+
return { sourceUsedNames, usedNames: new Set(evidence.keys()), evidence };
|
|
211
|
+
}
|
|
212
|
+
/** Existing formulas, evaluated against full inventory before dependency exclusions. */
|
|
213
|
+
function classifyFindings(manifest, sourceUsedNames, usedNames) {
|
|
118
214
|
return {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
215
|
+
unusedDependencies: declaredMinus(Object.keys(manifest.dependencies), usedNames),
|
|
216
|
+
unusedDevDependencies: declaredMinus(Object.keys(manifest.devDependencies), usedNames),
|
|
217
|
+
missingDependencies: declaredMinus([...sourceUsedNames], manifest.declaredDependencyNames),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function applyDependencyPolicy(underlying, ignored) {
|
|
221
|
+
return {
|
|
222
|
+
unusedDependencies: underlying.unusedDependencies.filter((name) => !ignored.has(name)),
|
|
223
|
+
unusedDevDependencies: underlying.unusedDevDependencies.filter((name) => !ignored.has(name)),
|
|
224
|
+
missingDependencies: underlying.missingDependencies.filter((name) => !ignored.has(name)),
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
function legacyResult(projectRoot, findings) {
|
|
228
|
+
return {
|
|
229
|
+
projectRoot,
|
|
230
|
+
unusedDependencies: findings.unusedDependencies,
|
|
231
|
+
unusedDevDependencies: findings.unusedDevDependencies,
|
|
232
|
+
missingDependencies: findings.missingDependencies,
|
|
123
233
|
};
|
|
124
234
|
}
|
|
235
|
+
function categoryMembership(findings) {
|
|
236
|
+
return {
|
|
237
|
+
unusedDependencies: new Set(findings.unusedDependencies),
|
|
238
|
+
unusedDevDependencies: new Set(findings.unusedDevDependencies),
|
|
239
|
+
missingDependencies: new Set(findings.missingDependencies),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
function packageFacts(manifest, evidenceByPackage, ignored, underlying, visible) {
|
|
243
|
+
const underlyingMembership = categoryMembership(underlying);
|
|
244
|
+
const visibleMembership = categoryMembership(visible);
|
|
245
|
+
const names = unionNames([
|
|
246
|
+
[...manifest.declaredDependencyNames],
|
|
247
|
+
[...evidenceByPackage.keys()],
|
|
248
|
+
[...ignored],
|
|
249
|
+
]);
|
|
250
|
+
return [...names].map((name) => {
|
|
251
|
+
const declaredIn = declarationGroupsFor(name, manifest);
|
|
252
|
+
const excluded = ignored.has(name);
|
|
253
|
+
const underlyingFindings = FINDING_CATEGORIES.filter((category) => underlyingMembership[category].has(name));
|
|
254
|
+
const findings = FINDING_CATEGORIES.filter((category) => visibleMembership[category].has(name));
|
|
255
|
+
const evidence = sortedUniqueEvidence(evidenceByPackage.get(name) ?? []);
|
|
256
|
+
const status = excluded
|
|
257
|
+
? 'excluded'
|
|
258
|
+
: underlyingFindings.includes('missingDependencies')
|
|
259
|
+
? 'missing'
|
|
260
|
+
: underlyingFindings.length > 0
|
|
261
|
+
? 'unused'
|
|
262
|
+
: evidence.length > 0
|
|
263
|
+
? 'used'
|
|
264
|
+
: declaredIn.length > 0
|
|
265
|
+
? 'declared'
|
|
266
|
+
: 'unknown';
|
|
267
|
+
return { name, status, declaredIn, excluded, underlyingFindings, findings, evidence };
|
|
268
|
+
});
|
|
269
|
+
}
|
|
125
270
|
/**
|
|
126
271
|
* Resolve the nearest package scope for one discovered source file.
|
|
127
272
|
*
|
|
128
273
|
* An existing nested `package.json` starts a new scope even when it omits `type`; directories
|
|
129
|
-
* without one inherit their parent.
|
|
274
|
+
* without one inherit their parent. Ownership and module mode share this walk and cache. The
|
|
275
|
+
* selected root is always seeded before lookup, so traversal stops there.
|
|
130
276
|
*/
|
|
131
|
-
async function
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
const packageType = hint === undefined
|
|
140
|
-
? await packageTypeForDirectory(dirname(directory), projectRoot, cache)
|
|
141
|
-
: hint.packageType;
|
|
142
|
-
cache.set(directory, packageType);
|
|
143
|
-
return packageType;
|
|
277
|
+
async function packageScopeForDirectory(directory, cache) {
|
|
278
|
+
const cached = cache.get(directory);
|
|
279
|
+
if (cached !== undefined)
|
|
280
|
+
return cached;
|
|
281
|
+
const ownScope = await loadPackageScope(directory);
|
|
282
|
+
const scope = ownScope ?? (await packageScopeForDirectory(dirname(directory), cache));
|
|
283
|
+
cache.set(directory, scope);
|
|
284
|
+
return scope;
|
|
144
285
|
}
|
|
145
286
|
/**
|
|
146
287
|
* Read a discovered source file and extract its statically known specifiers.
|
|
@@ -162,10 +303,10 @@ async function readAndExtract(file, packageType) {
|
|
|
162
303
|
* Determine the narrow Node source mode needed for top-level `await`.
|
|
163
304
|
*
|
|
164
305
|
* Explicit module extensions win over the package type. CommonJS extensions remain scripts even
|
|
165
|
-
* under a module package
|
|
166
|
-
* `type: "module"`
|
|
306
|
+
* under a module package. Ambiguous `.js` scopes use bounded syntax detection; JSX/TypeScript
|
|
307
|
+
* extensions retain the existing nearest-scope `type: "module"` policy.
|
|
167
308
|
*/
|
|
168
|
-
function
|
|
309
|
+
function sourceModuleMode(file, packageType) {
|
|
169
310
|
const lower = file.toLowerCase();
|
|
170
311
|
if (lower.endsWith('.mjs') || lower.endsWith('.mts')) {
|
|
171
312
|
return true;
|
|
@@ -173,6 +314,9 @@ async function readAndExtract(file, packageType) {
|
|
|
173
314
|
if (lower.endsWith('.cjs') || lower.endsWith('.cts')) {
|
|
174
315
|
return false;
|
|
175
316
|
}
|
|
317
|
+
if (lower.endsWith('.js') && packageType !== 'module' && packageType !== 'commonjs') {
|
|
318
|
+
return 'detect';
|
|
319
|
+
}
|
|
176
320
|
return ((lower.endsWith('.js') ||
|
|
177
321
|
lower.endsWith('.jsx') ||
|
|
178
322
|
lower.endsWith('.ts') ||
|
|
@@ -180,11 +324,11 @@ async function readAndExtract(file, packageType) {
|
|
|
180
324
|
packageType === 'module');
|
|
181
325
|
}
|
|
182
326
|
try {
|
|
183
|
-
const occurrences =
|
|
327
|
+
const occurrences = collectModuleSpecifiers(source, {
|
|
184
328
|
jsx: usesJsxSyntax(file, source),
|
|
185
|
-
module:
|
|
329
|
+
module: sourceModuleMode(file, packageType),
|
|
186
330
|
});
|
|
187
|
-
return occurrences
|
|
331
|
+
return occurrences;
|
|
188
332
|
}
|
|
189
333
|
catch (error) {
|
|
190
334
|
if (error instanceof Error && error.name === 'ModuleSpecifierError') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeProject.js","sourceRoot":"","sources":["../../src/core/analyzeProject.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"analyzeProject.js","sourceRoot":"","sources":["../../src/core/analyzeProject.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Internal fact model. Collection and classification belong to their owning pipeline stages. */
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import type { ModuleSpecifierKind } from '../scanner/moduleSpecifiers.js';
|
|
4
|
+
import type { DependencyMap } from '../scanner/projectManifest.js';
|
|
5
|
+
export declare const DECLARATION_GROUPS: readonly ["dependencies", "devDependencies", "peerDependencies", "optionalDependencies"];
|
|
6
|
+
export type DeclarationGroup = (typeof DECLARATION_GROUPS)[number];
|
|
7
|
+
export type DeclarationInventory = Readonly<Record<DeclarationGroup, DependencyMap>>;
|
|
8
|
+
export declare const FINDING_CATEGORIES: readonly ["unusedDependencies", "unusedDevDependencies", "missingDependencies"];
|
|
9
|
+
export type FindingCategory = (typeof FINDING_CATEGORIES)[number];
|
|
10
|
+
/** Precedence only; this module does not classify packages or infer usage. */
|
|
11
|
+
export declare const PACKAGE_STATUSES: readonly ["excluded", "missing", "unused", "used", "declared", "unknown"];
|
|
12
|
+
export type PackageStatus = (typeof PACKAGE_STATUSES)[number];
|
|
13
|
+
export declare const SOURCE_REFERENCES: readonly ["import", "export-from", "dynamic-import", "require"];
|
|
14
|
+
export type SourceReference = ModuleSpecifierKind;
|
|
15
|
+
export type SourceEvidence = {
|
|
16
|
+
kind: 'source';
|
|
17
|
+
file: string;
|
|
18
|
+
reference: SourceReference;
|
|
19
|
+
specifier: string;
|
|
20
|
+
/** Original UTF-16 opening-quote offset (zero-based), line and column (one-based). */
|
|
21
|
+
position: {
|
|
22
|
+
offset: number;
|
|
23
|
+
line: number;
|
|
24
|
+
column: number;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
export declare const SCRIPT_VIAS: readonly ["direct", "mapping", "runner", "node-preload"];
|
|
28
|
+
export type ScriptEvidence = {
|
|
29
|
+
kind: 'script';
|
|
30
|
+
file: 'package.json';
|
|
31
|
+
pointer: string;
|
|
32
|
+
command: string;
|
|
33
|
+
via: (typeof SCRIPT_VIAS)[number];
|
|
34
|
+
/** Script-wide accepted external candidate ordinal, before declaration filtering. */
|
|
35
|
+
occurrence: number;
|
|
36
|
+
};
|
|
37
|
+
export declare const CONFIG_DETECTORS: readonly ["eslint", "jest"];
|
|
38
|
+
export type ConfigEvidence = {
|
|
39
|
+
kind: 'config';
|
|
40
|
+
file: string;
|
|
41
|
+
pointer: string;
|
|
42
|
+
value: string;
|
|
43
|
+
detector: (typeof CONFIG_DETECTORS)[number];
|
|
44
|
+
};
|
|
45
|
+
export type Evidence = SourceEvidence | ScriptEvidence | ConfigEvidence;
|
|
46
|
+
export type PackageFact = {
|
|
47
|
+
name: string;
|
|
48
|
+
status: PackageStatus;
|
|
49
|
+
declaredIn: readonly DeclarationGroup[];
|
|
50
|
+
excluded: boolean;
|
|
51
|
+
underlyingFindings: readonly FindingCategory[];
|
|
52
|
+
findings: readonly FindingCategory[];
|
|
53
|
+
evidence: readonly Evidence[];
|
|
54
|
+
};
|
|
55
|
+
/** ECMAScript UTF-16 lexicographic order, independent of the host locale. */
|
|
56
|
+
export declare function compareStrings(a: string, b: string): number;
|
|
57
|
+
/** Own membership only: prototype properties are not declarations. Names remain case-sensitive. */
|
|
58
|
+
export declare function declarationGroupsFor(name: string, inventory: DeclarationInventory): DeclarationGroup[];
|
|
59
|
+
/** Lexical display only. The caller owns filesystem validation and symlink policy. */
|
|
60
|
+
export declare function evidencePath(root: string, file: string, paths?: Pick<typeof path, 'relative' | 'isAbsolute' | 'sep'>): string;
|
|
61
|
+
/** RFC 6901 data pointer, not a URI fragment. An empty token is significant. */
|
|
62
|
+
export declare function jsonPointer(...tokens: readonly string[]): string;
|
|
63
|
+
export declare function compareEvidence(a: Evidence, b: Evidence): number;
|
|
64
|
+
/** Explicit tuples make exact identity independent of object property insertion order. */
|
|
65
|
+
export declare function evidenceIdentity(evidence: Evidence): string;
|
|
66
|
+
export declare function sortedUniqueEvidence(records: readonly Evidence[]): Evidence[];
|
|
67
|
+
//# sourceMappingURL=evidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** Internal fact model. Collection and classification belong to their owning pipeline stages. */
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
export const DECLARATION_GROUPS = [
|
|
4
|
+
'dependencies',
|
|
5
|
+
'devDependencies',
|
|
6
|
+
'peerDependencies',
|
|
7
|
+
'optionalDependencies',
|
|
8
|
+
];
|
|
9
|
+
export const FINDING_CATEGORIES = [
|
|
10
|
+
'unusedDependencies',
|
|
11
|
+
'unusedDevDependencies',
|
|
12
|
+
'missingDependencies',
|
|
13
|
+
];
|
|
14
|
+
/** Precedence only; this module does not classify packages or infer usage. */
|
|
15
|
+
export const PACKAGE_STATUSES = [
|
|
16
|
+
'excluded',
|
|
17
|
+
'missing',
|
|
18
|
+
'unused',
|
|
19
|
+
'used',
|
|
20
|
+
'declared',
|
|
21
|
+
'unknown',
|
|
22
|
+
];
|
|
23
|
+
export const SOURCE_REFERENCES = ['import', 'export-from', 'dynamic-import', 'require'];
|
|
24
|
+
export const SCRIPT_VIAS = ['direct', 'mapping', 'runner', 'node-preload'];
|
|
25
|
+
export const CONFIG_DETECTORS = ['eslint', 'jest'];
|
|
26
|
+
/** ECMAScript UTF-16 lexicographic order, independent of the host locale. */
|
|
27
|
+
export function compareStrings(a, b) {
|
|
28
|
+
return a < b ? -1 : a > b ? 1 : 0;
|
|
29
|
+
}
|
|
30
|
+
/** Own membership only: prototype properties are not declarations. Names remain case-sensitive. */
|
|
31
|
+
export function declarationGroupsFor(name, inventory) {
|
|
32
|
+
return DECLARATION_GROUPS.filter((group) => Object.hasOwn(inventory[group], name));
|
|
33
|
+
}
|
|
34
|
+
/** Lexical display only. The caller owns filesystem validation and symlink policy. */
|
|
35
|
+
export function evidencePath(root, file, paths = path) {
|
|
36
|
+
if (!paths.isAbsolute(root) || !paths.isAbsolute(file)) {
|
|
37
|
+
throw new Error('Evidence paths require an absolute project root and file');
|
|
38
|
+
}
|
|
39
|
+
const relative = paths.relative(root, file);
|
|
40
|
+
const components = relative.split(paths.sep);
|
|
41
|
+
if (paths.isAbsolute(relative) ||
|
|
42
|
+
components.some((part) => part === '' || part === '.' || part === '..')) {
|
|
43
|
+
throw new Error('Evidence file must be inside the project root');
|
|
44
|
+
}
|
|
45
|
+
return components.join('/');
|
|
46
|
+
}
|
|
47
|
+
/** RFC 6901 data pointer, not a URI fragment. An empty token is significant. */
|
|
48
|
+
export function jsonPointer(...tokens) {
|
|
49
|
+
return tokens.map((token) => '/' + token.replaceAll('~', '~0').replaceAll('/', '~1')).join('');
|
|
50
|
+
}
|
|
51
|
+
const EVIDENCE_KINDS = ['source', 'script', 'config'];
|
|
52
|
+
export function compareEvidence(a, b) {
|
|
53
|
+
const common = EVIDENCE_KINDS.indexOf(a.kind) - EVIDENCE_KINDS.indexOf(b.kind) ||
|
|
54
|
+
compareStrings(a.file, b.file);
|
|
55
|
+
if (common !== 0)
|
|
56
|
+
return common;
|
|
57
|
+
if (a.kind === 'source' && b.kind === 'source') {
|
|
58
|
+
return (a.position.offset - b.position.offset ||
|
|
59
|
+
SOURCE_REFERENCES.indexOf(a.reference) - SOURCE_REFERENCES.indexOf(b.reference) ||
|
|
60
|
+
compareStrings(a.specifier, b.specifier) ||
|
|
61
|
+
a.position.line - b.position.line ||
|
|
62
|
+
a.position.column - b.position.column);
|
|
63
|
+
}
|
|
64
|
+
if (a.kind === 'script' && b.kind === 'script') {
|
|
65
|
+
return (compareStrings(a.pointer, b.pointer) ||
|
|
66
|
+
a.occurrence - b.occurrence ||
|
|
67
|
+
SCRIPT_VIAS.indexOf(a.via) - SCRIPT_VIAS.indexOf(b.via) ||
|
|
68
|
+
compareStrings(a.command, b.command));
|
|
69
|
+
}
|
|
70
|
+
if (a.kind === 'config' && b.kind === 'config') {
|
|
71
|
+
return (compareStrings(a.pointer, b.pointer) ||
|
|
72
|
+
CONFIG_DETECTORS.indexOf(a.detector) - CONFIG_DETECTORS.indexOf(b.detector) ||
|
|
73
|
+
compareStrings(a.value, b.value));
|
|
74
|
+
}
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
/** Explicit tuples make exact identity independent of object property insertion order. */
|
|
78
|
+
export function evidenceIdentity(evidence) {
|
|
79
|
+
switch (evidence.kind) {
|
|
80
|
+
case 'source':
|
|
81
|
+
return JSON.stringify([
|
|
82
|
+
evidence.kind,
|
|
83
|
+
evidence.file,
|
|
84
|
+
evidence.reference,
|
|
85
|
+
evidence.specifier,
|
|
86
|
+
evidence.position.offset,
|
|
87
|
+
evidence.position.line,
|
|
88
|
+
evidence.position.column,
|
|
89
|
+
]);
|
|
90
|
+
case 'script':
|
|
91
|
+
return JSON.stringify([
|
|
92
|
+
evidence.kind,
|
|
93
|
+
evidence.file,
|
|
94
|
+
evidence.pointer,
|
|
95
|
+
evidence.command,
|
|
96
|
+
evidence.via,
|
|
97
|
+
evidence.occurrence,
|
|
98
|
+
]);
|
|
99
|
+
case 'config':
|
|
100
|
+
return JSON.stringify([
|
|
101
|
+
evidence.kind,
|
|
102
|
+
evidence.file,
|
|
103
|
+
evidence.pointer,
|
|
104
|
+
evidence.value,
|
|
105
|
+
evidence.detector,
|
|
106
|
+
]);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
export function sortedUniqueEvidence(records) {
|
|
110
|
+
const unique = new Map();
|
|
111
|
+
for (const record of records)
|
|
112
|
+
unique.set(evidenceIdentity(record), record);
|
|
113
|
+
return [...unique.values()].sort(compareEvidence);
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/core/evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Internal per-invocation inputs. No global cache or atomic filesystem snapshot is implied. */
|
|
2
|
+
import { type ProjectConfig } from '../config/readProjectConfig.js';
|
|
3
|
+
import { type LegacyEslintPrecedence } from '../detectors/eslintManifestConfig.js';
|
|
4
|
+
import { type ProjectManifest } from '../scanner/projectManifest.js';
|
|
5
|
+
import { type ConfigEvidence } from './evidence.js';
|
|
6
|
+
export type ScanContext = {
|
|
7
|
+
readonly manifest: ProjectManifest;
|
|
8
|
+
readonly rawManifest: Readonly<Record<string, unknown>>;
|
|
9
|
+
readonly config: ProjectConfig;
|
|
10
|
+
readonly rootEntries: readonly string[];
|
|
11
|
+
readonly eslintPrecedence: LegacyEslintPrecedence;
|
|
12
|
+
readonly jestConfigBarrier: boolean;
|
|
13
|
+
readonly configEvidence: readonly {
|
|
14
|
+
readonly packageName: string;
|
|
15
|
+
readonly evidence: ConfigEvidence;
|
|
16
|
+
}[];
|
|
17
|
+
};
|
|
18
|
+
/** Validate root/manifest, then strict policy, then collect only the selected detector sources. */
|
|
19
|
+
export declare function createScanContext(projectRoot: string): Promise<ScanContext>;
|
|
20
|
+
//# sourceMappingURL=scanContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanContext.d.ts","sourceRoot":"","sources":["../../src/core/scanContext.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAA6B,KAAK,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,sCAAsC,CAAC;AAM9C,OAAO,EAA2B,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAmC,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAErF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAClD,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,SAAS;QAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;KACnC,EAAE,CAAC;CACL,CAAC;AAEF,mGAAmG;AACnG,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmCjF"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Internal per-invocation inputs. No global cache or atomic filesystem snapshot is implied. */
|
|
2
|
+
import { readProjectConfigSnapshot } from '../config/readProjectConfig.js';
|
|
3
|
+
import { collectEslintConfigUsage, legacyEslintPrecedenceFromEntries, } from '../detectors/eslintManifestConfig.js';
|
|
4
|
+
import { collectEslintRcJsonUsageForManifest } from '../detectors/eslintRcJsonConfig.js';
|
|
5
|
+
import { collectJestConfigUsage, hasRootJestConfigEntries, } from '../detectors/jestManifestConfig.js';
|
|
6
|
+
import { loadProjectManifestData } from '../scanner/projectManifest.js';
|
|
7
|
+
import { compareEvidence, compareStrings } from './evidence.js';
|
|
8
|
+
/** Validate root/manifest, then strict policy, then collect only the selected detector sources. */
|
|
9
|
+
export async function createScanContext(projectRoot) {
|
|
10
|
+
const { manifest, raw } = await loadProjectManifestData(projectRoot);
|
|
11
|
+
const { config, rootEntries } = await readProjectConfigSnapshot(manifest.root);
|
|
12
|
+
const eslintPrecedence = legacyEslintPrecedenceFromEntries(rootEntries);
|
|
13
|
+
const jestConfigBarrier = hasRootJestConfigEntries(rootEntries);
|
|
14
|
+
const configEvidence = [];
|
|
15
|
+
if (!eslintPrecedence.hardBarrier) {
|
|
16
|
+
if (eslintPrecedence.legacyRcJsonEntryName !== undefined) {
|
|
17
|
+
const occurrences = await collectEslintRcJsonUsageForManifest(manifest, eslintPrecedence);
|
|
18
|
+
for (const occurrence of occurrences)
|
|
19
|
+
configEvidence.push(occurrence);
|
|
20
|
+
}
|
|
21
|
+
else if (!eslintPrecedence.legacyRcByName) {
|
|
22
|
+
const occurrences = collectEslintConfigUsage(raw['eslintConfig'], manifest.declaredDependencyNames);
|
|
23
|
+
for (const occurrence of occurrences)
|
|
24
|
+
configEvidence.push(occurrence);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (!jestConfigBarrier) {
|
|
28
|
+
const occurrences = collectJestConfigUsage(raw['jest'], manifest.declaredDependencyNames);
|
|
29
|
+
for (const occurrence of occurrences)
|
|
30
|
+
configEvidence.push(occurrence);
|
|
31
|
+
}
|
|
32
|
+
configEvidence.sort((a, b) => compareStrings(a.packageName, b.packageName) || compareEvidence(a.evidence, b.evidence));
|
|
33
|
+
return {
|
|
34
|
+
manifest,
|
|
35
|
+
rawManifest: raw,
|
|
36
|
+
config,
|
|
37
|
+
rootEntries,
|
|
38
|
+
eslintPrecedence,
|
|
39
|
+
jestConfigBarrier,
|
|
40
|
+
configEvidence,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=scanContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanContext.js","sourceRoot":"","sources":["../../src/core/scanContext.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,OAAO,EAAE,yBAAyB,EAAsB,MAAM,gCAAgC,CAAC;AAC/F,OAAO,EACL,wBAAwB,EACxB,iCAAiC,GAElC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mCAAmC,EAAE,MAAM,oCAAoC,CAAC;AACzF,OAAO,EACL,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAwB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAC;AAerF,mGAAmG;AACnG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,WAAmB;IACzD,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,MAAM,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACrE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,yBAAyB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,WAAW,CAAC,CAAC;IACxE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,WAAW,CAAC,CAAC;IAChE,MAAM,cAAc,GAA0E,EAAE,CAAC;IACjG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,gBAAgB,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;YACzD,MAAM,WAAW,GAAG,MAAM,mCAAmC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC1F,KAAK,MAAM,UAAU,IAAI,WAAW;gBAAE,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,wBAAwB,CAC1C,GAAG,CAAC,cAAc,CAAC,EACnB,QAAQ,CAAC,uBAAuB,CACjC,CAAC;YACF,KAAK,MAAM,UAAU,IAAI,WAAW;gBAAE,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,uBAAuB,CAAC,CAAC;QAC1F,KAAK,MAAM,UAAU,IAAI,WAAW;YAAE,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxE,CAAC;IACD,cAAc,CAAC,IAAI,CACjB,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,cAAc,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAC1F,CAAC;IACF,OAAO;QACL,QAAQ;QACR,WAAW,EAAE,GAAG;QAChB,MAAM;QACN,WAAW;QACX,gBAAgB;QAChB,iBAAiB;QACjB,cAAc;KACf,CAAC;AACJ,CAAC"}
|