@vyuhlabs/dxkit 2.1.0 → 2.2.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 (37) hide show
  1. package/CHANGELOG.md +137 -0
  2. package/README.md +9 -9
  3. package/dist/analyzers/bom/gather.d.ts +12 -1
  4. package/dist/analyzers/bom/gather.d.ts.map +1 -1
  5. package/dist/analyzers/bom/gather.js +46 -0
  6. package/dist/analyzers/bom/gather.js.map +1 -1
  7. package/dist/analyzers/bom/index.d.ts.map +1 -1
  8. package/dist/analyzers/bom/index.js +37 -0
  9. package/dist/analyzers/bom/index.js.map +1 -1
  10. package/dist/analyzers/bom/types.d.ts +20 -0
  11. package/dist/analyzers/bom/types.d.ts.map +1 -1
  12. package/dist/analyzers/xlsx/bom.d.ts.map +1 -1
  13. package/dist/analyzers/xlsx/bom.js +11 -1
  14. package/dist/analyzers/xlsx/bom.js.map +1 -1
  15. package/dist/languages/capabilities/types.d.ts +1 -0
  16. package/dist/languages/capabilities/types.d.ts.map +1 -1
  17. package/dist/languages/csharp.d.ts +41 -6
  18. package/dist/languages/csharp.d.ts.map +1 -1
  19. package/dist/languages/csharp.js +225 -35
  20. package/dist/languages/csharp.js.map +1 -1
  21. package/dist/languages/go.d.ts +35 -0
  22. package/dist/languages/go.d.ts.map +1 -1
  23. package/dist/languages/go.js +156 -0
  24. package/dist/languages/go.js.map +1 -1
  25. package/dist/languages/python.d.ts +49 -0
  26. package/dist/languages/python.d.ts.map +1 -1
  27. package/dist/languages/python.js +202 -17
  28. package/dist/languages/python.js.map +1 -1
  29. package/dist/languages/rust.d.ts +15 -0
  30. package/dist/languages/rust.d.ts.map +1 -1
  31. package/dist/languages/rust.js +93 -0
  32. package/dist/languages/rust.js.map +1 -1
  33. package/dist/languages/typescript.d.ts +17 -0
  34. package/dist/languages/typescript.d.ts.map +1 -1
  35. package/dist/languages/typescript.js +106 -0
  36. package/dist/languages/typescript.js.map +1 -1
  37. package/package.json +4 -3
@@ -36,6 +36,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.csharp = void 0;
37
37
  exports.parseCoberturaXml = parseCoberturaXml;
38
38
  exports.parseDotnetVulnerableOutput = parseDotnetVulnerableOutput;
39
+ exports.parseProjectAssetsJson = parseProjectAssetsJson;
40
+ exports.buildCsharpTopLevelDepIndex = buildCsharpTopLevelDepIndex;
39
41
  exports.extractCsharpImportsRaw = extractCsharpImportsRaw;
40
42
  const fs = __importStar(require("fs"));
41
43
  const path = __importStar(require("path"));
@@ -168,12 +170,20 @@ function extractGhsaIdFromUrl(url) {
168
170
  return m ? m[0].toUpperCase() : null;
169
171
  }
170
172
  /**
171
- * Pure parser for `dotnet list package --vulnerable --format json`.
172
- * Extracted from the gather function so it can be unit-tested without
173
- * a real .NET SDK on the dev machine (10h.5 release-time validation
174
- * runs the full pipeline). Returns null when the input is malformed;
175
- * otherwise returns counts + findings ready for downstream alias
176
- * enrichment.
173
+ * Pure parser for `dotnet list package --vulnerable --include-transitive
174
+ * --format json`. Extracted from the gather function so it can be
175
+ * unit-tested without a real .NET SDK on the dev machine (10h.5
176
+ * release-time validation runs the full pipeline). Returns null when
177
+ * the input is malformed; otherwise returns counts + findings ready
178
+ * for downstream alias enrichment + top-level attribution.
179
+ *
180
+ * Both top-level and transitive packages are iterated. Top-level
181
+ * findings carry `topLevelDep = [self]` (they ARE manifest deps);
182
+ * transitive findings emit with `topLevelDep` unset — the gather
183
+ * function then fills it from `project.assets.json` if available.
184
+ * Leaving attribution unset on transitives when assets.json is absent
185
+ * matches Python's venv-missing behavior: degrade gracefully rather
186
+ * than invent false parents.
177
187
  */
178
188
  function parseDotnetVulnerableOutput(raw) {
179
189
  let data;
@@ -188,44 +198,202 @@ function parseDotnetVulnerableOutput(raw) {
188
198
  let medium = 0;
189
199
  let low = 0;
190
200
  const findings = [];
201
+ const emit = (pkgId, resolvedVersion, advisories, topLevelDep) => {
202
+ for (const adv of advisories) {
203
+ const severity = normalizeDotnetSeverity(adv.severity);
204
+ if (severity === 'critical')
205
+ critical++;
206
+ else if (severity === 'high')
207
+ high++;
208
+ else if (severity === 'medium')
209
+ medium++;
210
+ else
211
+ low++;
212
+ const ghsa = extractGhsaIdFromUrl(adv.advisoryUrl);
213
+ const id = ghsa ?? `nuget-${pkgId}@${resolvedVersion ?? 'unknown'}`;
214
+ const finding = {
215
+ id,
216
+ package: pkgId,
217
+ installedVersion: resolvedVersion,
218
+ tool: 'dotnet-vulnerable',
219
+ severity,
220
+ };
221
+ if (topLevelDep && topLevelDep.length > 0)
222
+ finding.topLevelDep = topLevelDep;
223
+ if (ghsa)
224
+ finding.aliases = [ghsa];
225
+ if (adv.advisoryUrl)
226
+ finding.references = [adv.advisoryUrl];
227
+ findings.push(finding);
228
+ }
229
+ };
191
230
  for (const proj of data.projects ?? []) {
192
231
  for (const fw of proj.frameworks ?? []) {
193
232
  for (const pkg of fw.topLevelPackages ?? []) {
194
233
  if (!pkg.id)
195
234
  continue;
196
- for (const adv of pkg.advisories ?? []) {
197
- const severity = normalizeDotnetSeverity(adv.severity);
198
- if (severity === 'critical')
199
- critical++;
200
- else if (severity === 'high')
201
- high++;
202
- else if (severity === 'medium')
203
- medium++;
204
- else
205
- low++;
206
- const ghsa = extractGhsaIdFromUrl(adv.advisoryUrl);
207
- // No GHSA URL means we have nothing addressable — fall back
208
- // to a synthetic id so the finding is still emitted (the
209
- // counts already incremented, and bom render needs a row).
210
- const id = ghsa ?? `nuget-${pkg.id}@${pkg.resolvedVersion ?? 'unknown'}`;
211
- const finding = {
212
- id,
213
- package: pkg.id,
214
- installedVersion: pkg.resolvedVersion,
215
- tool: 'dotnet-vulnerable',
216
- severity,
217
- };
218
- if (ghsa)
219
- finding.aliases = [ghsa];
220
- if (adv.advisoryUrl)
221
- finding.references = [adv.advisoryUrl];
222
- findings.push(finding);
223
- }
235
+ emit(pkg.id, pkg.resolvedVersion, pkg.advisories ?? [], [pkg.id]);
236
+ }
237
+ for (const pkg of fw.transitivePackages ?? []) {
238
+ if (!pkg.id)
239
+ continue;
240
+ // topLevelDep stays unset; `attachCsharpTopLevelAttribution`
241
+ // downstream fills it from project.assets.json when available.
242
+ emit(pkg.id, pkg.resolvedVersion, pkg.advisories ?? [], undefined);
224
243
  }
225
244
  }
226
245
  }
227
246
  return { counts: { critical, high, medium, low }, findings };
228
247
  }
248
+ /**
249
+ * Pure parser for `obj/project.assets.json`. Extracts the forward
250
+ * dep graph keyed by package name (collapsing versions — same as
251
+ * TS/Go/Rust packs) plus the set of top-level (direct manifest)
252
+ * package names across every target framework declared in `project`.
253
+ *
254
+ * Multi-framework projects: graphs are merged across target
255
+ * frameworks into a single name-level edge map. Top-level set is
256
+ * the union of declared direct deps across frameworks. This
257
+ * over-attributes slightly if a package is direct in netstandard2.0
258
+ * but transitive in net8.0 — it gets listed as a top-level — but the
259
+ * simplification beats per-framework multi-reporting complexity.
260
+ */
261
+ function parseProjectAssetsJson(raw) {
262
+ let data;
263
+ try {
264
+ data = JSON.parse(raw);
265
+ }
266
+ catch {
267
+ return null;
268
+ }
269
+ if (!data.targets && !data.project)
270
+ return null;
271
+ const nameOf = (key) => {
272
+ // Keys are `Pkg/Version` — split on '/' and take the package part.
273
+ const slash = key.indexOf('/');
274
+ return slash < 0 ? key : key.slice(0, slash);
275
+ };
276
+ const edges = new Map();
277
+ for (const target of Object.values(data.targets ?? {})) {
278
+ for (const [pkgVerKey, pkgEntry] of Object.entries(target)) {
279
+ const srcName = nameOf(pkgVerKey);
280
+ const deps = pkgEntry?.dependencies;
281
+ if (!deps)
282
+ continue;
283
+ const bucket = edges.get(srcName) ?? new Set();
284
+ for (const depName of Object.keys(deps)) {
285
+ bucket.add(depName);
286
+ }
287
+ edges.set(srcName, bucket);
288
+ }
289
+ }
290
+ const topLevels = new Set();
291
+ for (const fw of Object.values(data.project?.frameworks ?? {})) {
292
+ for (const name of Object.keys(fw?.dependencies ?? {})) {
293
+ topLevels.add(name);
294
+ }
295
+ }
296
+ return { topLevels: [...topLevels].sort(), edges };
297
+ }
298
+ /**
299
+ * BFS the parsed asset graph to produce a per-package-name index of
300
+ * its top-level ancestors. Mirrors `buildTsTopLevelDepIndex` /
301
+ * `buildRustTopLevelDepIndex` in shape and semantics; attribution is
302
+ * coarse (name-level) and unions across multiple reachable parents.
303
+ */
304
+ function buildCsharpTopLevelDepIndex(parsed) {
305
+ const result = new Map();
306
+ for (const top of parsed.topLevels) {
307
+ const visited = new Set();
308
+ const queue = [top];
309
+ while (queue.length > 0) {
310
+ const name = queue.shift();
311
+ if (visited.has(name))
312
+ continue;
313
+ visited.add(name);
314
+ const bucket = result.get(name) ?? new Set();
315
+ bucket.add(top);
316
+ result.set(name, bucket);
317
+ for (const child of parsed.edges.get(name) ?? []) {
318
+ if (!visited.has(child))
319
+ queue.push(child);
320
+ }
321
+ }
322
+ }
323
+ const sorted = new Map();
324
+ for (const [name, parents] of result) {
325
+ sorted.set(name, [...parents].sort());
326
+ }
327
+ return sorted;
328
+ }
329
+ /**
330
+ * Locate the nearest `obj/project.assets.json` under cwd (NuGet's
331
+ * lockfile equivalent, created by `dotnet restore`). Unlike the
332
+ * shared `findMatchingRecursive`, we cannot skip `obj/` here —
333
+ * that's literally where the file lives. Walks up to 4 levels deep
334
+ * to handle solutions with nested projects. Returns the absolute
335
+ * path of the first match, or null.
336
+ *
337
+ * Multi-project solutions currently use the first-found file's
338
+ * graph — noted as a known limitation in the phase commit.
339
+ */
340
+ function findProjectAssetsJson(cwd, maxDepth = 4) {
341
+ function search(dir, depth) {
342
+ if (depth > maxDepth)
343
+ return null;
344
+ let entries;
345
+ try {
346
+ entries = fs.readdirSync(dir, { withFileTypes: true });
347
+ }
348
+ catch {
349
+ return null;
350
+ }
351
+ // Direct-child shortcut: if this directory is `obj`, check for
352
+ // the file right here before recursing.
353
+ for (const e of entries) {
354
+ if (e.isFile() && e.name === 'project.assets.json') {
355
+ // Only accept if parent directory is `obj`.
356
+ if (path.basename(dir) === 'obj')
357
+ return path.join(dir, e.name);
358
+ }
359
+ }
360
+ for (const e of entries) {
361
+ if (e.name.startsWith('.') ||
362
+ ['node_modules', 'bin', 'TestResults', 'packages'].includes(e.name)) {
363
+ continue;
364
+ }
365
+ if (e.isDirectory()) {
366
+ const nested = search(path.join(dir, e.name), depth + 1);
367
+ if (nested)
368
+ return nested;
369
+ }
370
+ }
371
+ return null;
372
+ }
373
+ return search(cwd, 0);
374
+ }
375
+ /**
376
+ * Read + parse `obj/project.assets.json` and build the top-level
377
+ * attribution index. Returns an empty map on any failure — transitive
378
+ * findings simply ship without attribution rather than blocking the
379
+ * scan. Matches Python pack's missing-venv semantics.
380
+ */
381
+ function loadCsharpTopLevelDepIndex(cwd) {
382
+ const assetsPath = findProjectAssetsJson(cwd);
383
+ if (!assetsPath)
384
+ return new Map();
385
+ let raw;
386
+ try {
387
+ raw = fs.readFileSync(assetsPath, 'utf-8');
388
+ }
389
+ catch {
390
+ return new Map();
391
+ }
392
+ const parsed = parseProjectAssetsJson(raw);
393
+ if (!parsed)
394
+ return new Map();
395
+ return buildCsharpTopLevelDepIndex(parsed);
396
+ }
229
397
  /**
230
398
  * Single source of truth for the csharp pack's dep-vuln gathering.
231
399
  * Consumed by `csharpDepVulnsProvider` (capability dispatcher). Runs
@@ -240,13 +408,35 @@ function parseDotnetVulnerableOutput(raw) {
240
408
  async function gatherCsharpDepVulnsResult(cwd) {
241
409
  if (!hasCsharpProject(cwd))
242
410
  return { kind: 'tool-missing' };
243
- const vulnRaw = (0, runner_1.run)('dotnet list package --vulnerable --format json 2>/dev/null', cwd, 120000);
411
+ // `--include-transitive` (10h.4.4.c) extends the scan to indirect
412
+ // deps; without it NuGet would only report vulns where the
413
+ // vulnerable package is itself declared in .csproj. Transitive
414
+ // attribution lands via `project.assets.json` below.
415
+ const vulnRaw = (0, runner_1.run)('dotnet list package --vulnerable --include-transitive --format json 2>/dev/null', cwd, 120000);
244
416
  if (!vulnRaw)
245
417
  return { kind: 'no-output' };
246
418
  const parsed = parseDotnetVulnerableOutput(vulnRaw);
247
419
  if (!parsed)
248
420
  return { kind: 'parse-error' };
249
421
  const { counts, findings } = parsed;
422
+ // Attach top-level attribution to transitive findings (top-level
423
+ // findings already carry self-attribution from the parser). Skipped
424
+ // when project.assets.json is absent — user hasn't run
425
+ // `dotnet restore`, or the obj/ dir was cleaned. Findings ship with
426
+ // `topLevelDep` unset in that case, matching Python's no-venv path.
427
+ const transitiveNeedsAttribution = findings.some((f) => !f.topLevelDep || f.topLevelDep.length === 0);
428
+ if (transitiveNeedsAttribution) {
429
+ const topLevelIndex = loadCsharpTopLevelDepIndex(cwd);
430
+ if (topLevelIndex.size > 0) {
431
+ for (const f of findings) {
432
+ if (f.topLevelDep && f.topLevelDep.length > 0)
433
+ continue;
434
+ const parents = topLevelIndex.get(f.package);
435
+ if (parents && parents.length > 0)
436
+ f.topLevelDep = parents;
437
+ }
438
+ }
439
+ }
250
440
  // Alias-fallback CVSS pass: dotnet --vulnerable ships zero CVSS data
251
441
  // per advisory; the GHSA id (extracted from advisoryUrl) is the only
252
442
  // anchor. resolveCvssScores looks up via GHSA → CVE alias chain.
@@ -1 +1 @@
1
- {"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../src/languages/csharp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../src/languages/csharp.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,39 @@
1
1
  import type { LanguageSupport } from './types';
2
+ /**
3
+ * Pure parser for `go.mod`, extracting module paths declared in
4
+ * `require` blocks WITHOUT a `// indirect` marker. Those are the
5
+ * user's direct deps — the ones that show up as Snyk top-levels.
6
+ *
7
+ * Handles both syntaxes:
8
+ * require foo.com/bar v1.0 (single-line)
9
+ * require ( foo.com/bar v1.0 (block)
10
+ * baz.com/qux v2.0 // indirect ) (indirect-marked)
11
+ *
12
+ * Lines with `// indirect` (or `//indirect`) are skipped since those
13
+ * were added by `go mod tidy` to pin transitive versions, not because
14
+ * the user declared them. Go's direct/indirect distinction maps
15
+ * cleanly onto the top-level concept.
16
+ */
17
+ export declare function parseGoModDirectDeps(raw: string): string[];
18
+ /**
19
+ * Pure parser for `go mod graph`, returning a per-module index of the
20
+ * top-level manifest deps (root's direct children, filtered against
21
+ * `go.mod`'s direct-dep list when supplied) that transitively pull
22
+ * each module.
23
+ *
24
+ * `go mod graph` output is line-oriented: `<src> <dst>` where each
25
+ * token is `module@version` except the root module which appears
26
+ * without `@version`. The root's direct deps are the BFS seeds;
27
+ * attribution collapses at the module-name level so the same package
28
+ * appearing at multiple versions maps to a single name.
29
+ *
30
+ * When `directDeps` is supplied, seeds are intersected with that set —
31
+ * excludes indirect-but-in-graph modules (every dependency of a
32
+ * direct dep is also a direct child of root in the graph). Without
33
+ * this filter, Go projects with 5 direct + 30 indirect deps would
34
+ * show 35 "top-levels," inflating attribution.
35
+ */
36
+ export declare function buildGoTopLevelDepIndex(raw: string, directDeps?: ReadonlyArray<string>): Map<string, string[]>;
2
37
  /**
3
38
  * Capture Go module specifiers from source text. Handles both single-line
4
39
  * `import "fmt"` and parenthesized multi-line blocks, including aliased
@@ -1 +1 @@
1
- {"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../src/languages/go.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AA0U7D;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB9F;AA8KD,eAAO,MAAM,EAAE,EAAE,eAwBhB,CAAC"}
1
+ {"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../src/languages/go.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AA+F7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CA8B1D;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,GACjC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAyDvB;AAsQD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAmB7D;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqB9F;AA8KD,eAAO,MAAM,EAAE,EAAE,eAwBhB,CAAC"}
@@ -34,6 +34,8 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.go = void 0;
37
+ exports.parseGoModDirectDeps = parseGoModDirectDeps;
38
+ exports.buildGoTopLevelDepIndex = buildGoTopLevelDepIndex;
37
39
  exports.extractGoImportsRaw = extractGoImportsRaw;
38
40
  exports.resolveGoImportRaw = resolveGoImportRaw;
39
41
  const fs = __importStar(require("fs"));
@@ -111,6 +113,156 @@ function tierGolangciIssue(issue) {
111
113
  }
112
114
  return byLinter;
113
115
  }
116
+ /**
117
+ * Pure parser for `go.mod`, extracting module paths declared in
118
+ * `require` blocks WITHOUT a `// indirect` marker. Those are the
119
+ * user's direct deps — the ones that show up as Snyk top-levels.
120
+ *
121
+ * Handles both syntaxes:
122
+ * require foo.com/bar v1.0 (single-line)
123
+ * require ( foo.com/bar v1.0 (block)
124
+ * baz.com/qux v2.0 // indirect ) (indirect-marked)
125
+ *
126
+ * Lines with `// indirect` (or `//indirect`) are skipped since those
127
+ * were added by `go mod tidy` to pin transitive versions, not because
128
+ * the user declared them. Go's direct/indirect distinction maps
129
+ * cleanly onto the top-level concept.
130
+ */
131
+ function parseGoModDirectDeps(raw) {
132
+ const direct = [];
133
+ let inRequireBlock = false;
134
+ for (const rawLine of raw.split('\n')) {
135
+ // Strip line comments first so `// indirect` detection is accurate.
136
+ // Preserve the original for the indirect check — which looks at the
137
+ // comment we just stripped.
138
+ const indirect = /\/\/\s*indirect\b/.test(rawLine);
139
+ const line = rawLine.replace(/\/\/.*$/, '').trim();
140
+ if (!line)
141
+ continue;
142
+ if (line === 'require (') {
143
+ inRequireBlock = true;
144
+ continue;
145
+ }
146
+ if (inRequireBlock && line === ')') {
147
+ inRequireBlock = false;
148
+ continue;
149
+ }
150
+ if (inRequireBlock) {
151
+ if (indirect)
152
+ continue;
153
+ // Block-form entries are `<modpath> <version>`; we only want the path.
154
+ const parts = line.split(/\s+/);
155
+ if (parts.length >= 1 && parts[0])
156
+ direct.push(parts[0]);
157
+ continue;
158
+ }
159
+ // Single-line require outside a block: `require <modpath> <version>`.
160
+ const m = line.match(/^require\s+(\S+)\s+\S+/);
161
+ if (m && !indirect)
162
+ direct.push(m[1]);
163
+ }
164
+ return direct;
165
+ }
166
+ /**
167
+ * Pure parser for `go mod graph`, returning a per-module index of the
168
+ * top-level manifest deps (root's direct children, filtered against
169
+ * `go.mod`'s direct-dep list when supplied) that transitively pull
170
+ * each module.
171
+ *
172
+ * `go mod graph` output is line-oriented: `<src> <dst>` where each
173
+ * token is `module@version` except the root module which appears
174
+ * without `@version`. The root's direct deps are the BFS seeds;
175
+ * attribution collapses at the module-name level so the same package
176
+ * appearing at multiple versions maps to a single name.
177
+ *
178
+ * When `directDeps` is supplied, seeds are intersected with that set —
179
+ * excludes indirect-but-in-graph modules (every dependency of a
180
+ * direct dep is also a direct child of root in the graph). Without
181
+ * this filter, Go projects with 5 direct + 30 indirect deps would
182
+ * show 35 "top-levels," inflating attribution.
183
+ */
184
+ function buildGoTopLevelDepIndex(raw, directDeps) {
185
+ const nameOf = (tok) => {
186
+ const at = tok.indexOf('@');
187
+ return at < 0 ? tok : tok.slice(0, at);
188
+ };
189
+ // Root is identified as the only source token without `@version`.
190
+ // All lines whose source lacks `@` share the same root name (barring
191
+ // workspace multi-module repos, which we approximate as a single
192
+ // root — accurate enough for Snyk-style grouping).
193
+ let root = null;
194
+ const edges = new Map();
195
+ for (const line of raw.split('\n')) {
196
+ const trimmed = line.trim();
197
+ if (!trimmed)
198
+ continue;
199
+ const parts = trimmed.split(/\s+/);
200
+ if (parts.length < 2)
201
+ continue;
202
+ const srcName = nameOf(parts[0]);
203
+ const dstName = nameOf(parts[1]);
204
+ if (!parts[0].includes('@')) {
205
+ // Source token lacks @version → this is the root module.
206
+ if (root === null)
207
+ root = srcName;
208
+ }
209
+ const bucket = edges.get(srcName) ?? new Set();
210
+ bucket.add(dstName);
211
+ edges.set(srcName, bucket);
212
+ }
213
+ if (!root)
214
+ return new Map();
215
+ let rootChildren = [...(edges.get(root) ?? new Set())];
216
+ if (directDeps && directDeps.length > 0) {
217
+ const directSet = new Set(directDeps);
218
+ rootChildren = rootChildren.filter((name) => directSet.has(name));
219
+ }
220
+ const result = new Map();
221
+ for (const top of rootChildren) {
222
+ const visited = new Set();
223
+ const queue = [top];
224
+ while (queue.length > 0) {
225
+ const name = queue.shift();
226
+ if (visited.has(name))
227
+ continue;
228
+ visited.add(name);
229
+ const bucket = result.get(name) ?? new Set();
230
+ bucket.add(top);
231
+ result.set(name, bucket);
232
+ for (const child of edges.get(name) ?? []) {
233
+ if (!visited.has(child))
234
+ queue.push(child);
235
+ }
236
+ }
237
+ }
238
+ const sorted = new Map();
239
+ for (const [name, parents] of result) {
240
+ sorted.set(name, [...parents].sort());
241
+ }
242
+ return sorted;
243
+ }
244
+ /**
245
+ * Invoke `go mod graph` + read `go.mod` and build the top-level index.
246
+ * Returns an empty map when either is missing — attribution stays
247
+ * unset so dep-vuln gather still succeeds. Degrades safely on
248
+ * toolchain-less environments (e.g. containerized CI lacking go).
249
+ */
250
+ function loadGoTopLevelDepIndex(cwd) {
251
+ const graphRaw = (0, runner_1.run)('go mod graph 2>/dev/null', cwd, 60000);
252
+ if (!graphRaw)
253
+ return new Map();
254
+ let directDeps = [];
255
+ try {
256
+ const modRaw = fs.readFileSync(path.join(cwd, 'go.mod'), 'utf-8');
257
+ directDeps = parseGoModDirectDeps(modRaw);
258
+ }
259
+ catch {
260
+ // go.mod missing/unreadable — fall back to pre-filter behavior
261
+ // (all root children become top-levels). Consistent with the
262
+ // pre-10h.4.4.a semantics rather than blocking attribution.
263
+ }
264
+ return buildGoTopLevelDepIndex(graphRaw, directDeps);
265
+ }
114
266
  /**
115
267
  * Single source of truth for the go pack's dep-vuln gathering.
116
268
  * Consumed by `goDepVulnsProvider` (capability dispatcher).
@@ -206,6 +358,7 @@ async function gatherGoDepVulnsResult(cwd) {
206
358
  else
207
359
  low++;
208
360
  }
361
+ const topLevelIndex = loadGoTopLevelDepIndex(cwd);
209
362
  const findings = [];
210
363
  for (const grouped of groupedFindings.values()) {
211
364
  if (!grouped.osv)
@@ -247,6 +400,9 @@ async function gatherGoDepVulnsResult(cwd) {
247
400
  if (!finding.references) {
248
401
  finding.references = [`https://osv.dev/vulnerability/${grouped.osv}`];
249
402
  }
403
+ const parents = topLevelIndex.get(pkgName);
404
+ if (parents && parents.length > 0)
405
+ finding.topLevelDep = parents;
250
406
  findings.push(finding);
251
407
  }
252
408
  // Alias-fallback CVSS pass: stdlib advisories (GO-YYYY-NNNN) often