@vyuhlabs/dxkit 2.0.1 → 2.2.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.
Files changed (103) hide show
  1. package/CHANGELOG.md +223 -0
  2. package/README.md +21 -15
  3. package/dist/analyzers/bom/detailed.d.ts +26 -0
  4. package/dist/analyzers/bom/detailed.d.ts.map +1 -0
  5. package/dist/analyzers/bom/detailed.js +227 -0
  6. package/dist/analyzers/bom/detailed.js.map +1 -0
  7. package/dist/analyzers/bom/gather.d.ts +63 -0
  8. package/dist/analyzers/bom/gather.d.ts.map +1 -0
  9. package/dist/analyzers/bom/gather.js +229 -0
  10. package/dist/analyzers/bom/gather.js.map +1 -0
  11. package/dist/analyzers/bom/index.d.ts +23 -0
  12. package/dist/analyzers/bom/index.d.ts.map +1 -0
  13. package/dist/analyzers/bom/index.js +220 -0
  14. package/dist/analyzers/bom/index.js.map +1 -0
  15. package/dist/analyzers/bom/types.d.ts +91 -0
  16. package/dist/analyzers/bom/types.d.ts.map +1 -0
  17. package/dist/analyzers/bom/types.js +3 -0
  18. package/dist/analyzers/bom/types.js.map +1 -0
  19. package/dist/analyzers/licenses/detailed.d.ts +30 -0
  20. package/dist/analyzers/licenses/detailed.d.ts.map +1 -0
  21. package/dist/analyzers/licenses/detailed.js +194 -0
  22. package/dist/analyzers/licenses/detailed.js.map +1 -0
  23. package/dist/analyzers/licenses/gather.d.ts +15 -0
  24. package/dist/analyzers/licenses/gather.d.ts.map +1 -0
  25. package/dist/analyzers/licenses/gather.js +24 -0
  26. package/dist/analyzers/licenses/gather.js.map +1 -0
  27. package/dist/analyzers/licenses/index.d.ts +21 -0
  28. package/dist/analyzers/licenses/index.d.ts.map +1 -0
  29. package/dist/analyzers/licenses/index.js +146 -0
  30. package/dist/analyzers/licenses/index.js.map +1 -0
  31. package/dist/analyzers/licenses/types.d.ts +30 -0
  32. package/dist/analyzers/licenses/types.d.ts.map +1 -0
  33. package/dist/analyzers/licenses/types.js +13 -0
  34. package/dist/analyzers/licenses/types.js.map +1 -0
  35. package/dist/analyzers/security/detailed.d.ts +0 -3
  36. package/dist/analyzers/security/detailed.d.ts.map +1 -1
  37. package/dist/analyzers/security/detailed.js +37 -6
  38. package/dist/analyzers/security/detailed.js.map +1 -1
  39. package/dist/analyzers/security/gather.d.ts.map +1 -1
  40. package/dist/analyzers/security/gather.js +2 -0
  41. package/dist/analyzers/security/gather.js.map +1 -1
  42. package/dist/analyzers/security/index.d.ts.map +1 -1
  43. package/dist/analyzers/security/index.js +53 -14
  44. package/dist/analyzers/security/index.js.map +1 -1
  45. package/dist/analyzers/security/types.d.ts +5 -0
  46. package/dist/analyzers/security/types.d.ts.map +1 -1
  47. package/dist/analyzers/security/types.js +0 -3
  48. package/dist/analyzers/security/types.js.map +1 -1
  49. package/dist/analyzers/tools/osv.d.ts +49 -5
  50. package/dist/analyzers/tools/osv.d.ts.map +1 -1
  51. package/dist/analyzers/tools/osv.js +99 -17
  52. package/dist/analyzers/tools/osv.js.map +1 -1
  53. package/dist/analyzers/tools/runner.d.ts +11 -0
  54. package/dist/analyzers/tools/runner.d.ts.map +1 -1
  55. package/dist/analyzers/tools/runner.js +54 -0
  56. package/dist/analyzers/tools/runner.js.map +1 -1
  57. package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
  58. package/dist/analyzers/tools/tool-registry.js +77 -0
  59. package/dist/analyzers/tools/tool-registry.js.map +1 -1
  60. package/dist/analyzers/xlsx/bom.d.ts +27 -0
  61. package/dist/analyzers/xlsx/bom.d.ts.map +1 -0
  62. package/dist/analyzers/xlsx/bom.js +141 -0
  63. package/dist/analyzers/xlsx/bom.js.map +1 -0
  64. package/dist/analyzers/xlsx/index.d.ts +27 -0
  65. package/dist/analyzers/xlsx/index.d.ts.map +1 -0
  66. package/dist/analyzers/xlsx/index.js +92 -0
  67. package/dist/analyzers/xlsx/index.js.map +1 -0
  68. package/dist/analyzers/xlsx/licenses.d.ts +40 -0
  69. package/dist/analyzers/xlsx/licenses.d.ts.map +1 -0
  70. package/dist/analyzers/xlsx/licenses.js +140 -0
  71. package/dist/analyzers/xlsx/licenses.js.map +1 -0
  72. package/dist/cli.d.ts.map +1 -1
  73. package/dist/cli.js +178 -1
  74. package/dist/cli.js.map +1 -1
  75. package/dist/languages/capabilities/descriptors.d.ts +4 -1
  76. package/dist/languages/capabilities/descriptors.d.ts.map +1 -1
  77. package/dist/languages/capabilities/descriptors.js +20 -1
  78. package/dist/languages/capabilities/descriptors.js.map +1 -1
  79. package/dist/languages/capabilities/types.d.ts +60 -3
  80. package/dist/languages/capabilities/types.d.ts.map +1 -1
  81. package/dist/languages/csharp.d.ts +48 -0
  82. package/dist/languages/csharp.d.ts.map +1 -1
  83. package/dist/languages/csharp.js +418 -33
  84. package/dist/languages/csharp.js.map +1 -1
  85. package/dist/languages/go.d.ts +35 -0
  86. package/dist/languages/go.d.ts.map +1 -1
  87. package/dist/languages/go.js +367 -26
  88. package/dist/languages/go.js.map +1 -1
  89. package/dist/languages/python.d.ts +49 -0
  90. package/dist/languages/python.d.ts.map +1 -1
  91. package/dist/languages/python.js +372 -11
  92. package/dist/languages/python.js.map +1 -1
  93. package/dist/languages/rust.d.ts +28 -0
  94. package/dist/languages/rust.d.ts.map +1 -1
  95. package/dist/languages/rust.js +287 -28
  96. package/dist/languages/rust.js.map +1 -1
  97. package/dist/languages/types.d.ts +2 -1
  98. package/dist/languages/types.d.ts.map +1 -1
  99. package/dist/languages/typescript.d.ts +17 -0
  100. package/dist/languages/typescript.d.ts.map +1 -1
  101. package/dist/languages/typescript.js +358 -1
  102. package/dist/languages/typescript.js.map +1 -1
  103. package/package.json +7 -2
@@ -35,10 +35,14 @@ var __importStar = (this && this.__importStar) || (function () {
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.csharp = void 0;
37
37
  exports.parseCoberturaXml = parseCoberturaXml;
38
+ exports.parseDotnetVulnerableOutput = parseDotnetVulnerableOutput;
39
+ exports.parseProjectAssetsJson = parseProjectAssetsJson;
40
+ exports.buildCsharpTopLevelDepIndex = buildCsharpTopLevelDepIndex;
38
41
  exports.extractCsharpImportsRaw = extractCsharpImportsRaw;
39
42
  const fs = __importStar(require("fs"));
40
43
  const path = __importStar(require("path"));
41
44
  const exclusions_1 = require("../analyzers/tools/exclusions");
45
+ const osv_1 = require("../analyzers/tools/osv");
42
46
  const runner_1 = require("../analyzers/tools/runner");
43
47
  const tool_registry_1 = require("../analyzers/tools/tool-registry");
44
48
  function dirHasMatching(dir, regex) {
@@ -135,52 +139,354 @@ function parseCoberturaXml(raw, sourceFile, cwd) {
135
139
  const rel = path.relative(cwd, path.resolve(cwd, sourceFile)).split(path.sep).join('/');
136
140
  return { source: 'cobertura', sourceFile: rel || sourceFile, linePercent, files };
137
141
  }
142
+ /**
143
+ * Map dotnet's textual severity to the four-tier `SeverityCounts`
144
+ * domain. NuGet uses critical/high/moderate/low (moderate maps to
145
+ * medium, matching npm-audit).
146
+ */
147
+ function normalizeDotnetSeverity(s) {
148
+ switch (s?.toLowerCase()) {
149
+ case 'critical':
150
+ return 'critical';
151
+ case 'high':
152
+ return 'high';
153
+ case 'moderate':
154
+ case 'medium':
155
+ return 'medium';
156
+ default:
157
+ return 'low';
158
+ }
159
+ }
160
+ /**
161
+ * Extract the GHSA identifier from an advisory URL like
162
+ * `https://github.com/advisories/GHSA-...`. dotnet's --vulnerable
163
+ * output uses the GitHub advisory URL almost universally, so this
164
+ * is the primary id source for C# findings.
165
+ */
166
+ function extractGhsaIdFromUrl(url) {
167
+ if (!url)
168
+ return null;
169
+ const m = url.match(/GHSA-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}/i);
170
+ return m ? m[0].toUpperCase() : null;
171
+ }
172
+ /**
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.
187
+ */
188
+ function parseDotnetVulnerableOutput(raw) {
189
+ let data;
190
+ try {
191
+ data = JSON.parse(raw);
192
+ }
193
+ catch {
194
+ return null;
195
+ }
196
+ let critical = 0;
197
+ let high = 0;
198
+ let medium = 0;
199
+ let low = 0;
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
+ };
230
+ for (const proj of data.projects ?? []) {
231
+ for (const fw of proj.frameworks ?? []) {
232
+ for (const pkg of fw.topLevelPackages ?? []) {
233
+ if (!pkg.id)
234
+ continue;
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);
243
+ }
244
+ }
245
+ }
246
+ return { counts: { critical, high, medium, low }, findings };
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
+ }
138
397
  /**
139
398
  * Single source of truth for the csharp pack's dep-vuln gathering.
140
399
  * Consumed by `csharpDepVulnsProvider` (capability dispatcher). Runs
141
400
  * independently of `dotnet-format` availability — historical bug where
142
401
  * projects with `dotnet` but no `dotnet-format` saw zero vuln data.
402
+ *
403
+ * Project-file gating: dotnet list requires a .csproj or .sln in cwd
404
+ * to identify what to scan. Without one it'd fail with a non-JSON
405
+ * error message. Mirrors the python pack manifest gating from 10h.3.3
406
+ * — return null cleanly rather than scan an unrelated scope.
143
407
  */
144
408
  async function gatherCsharpDepVulnsResult(cwd) {
145
- const vulnRaw = (0, runner_1.run)('dotnet list package --vulnerable --format json 2>/dev/null', cwd, 120000);
409
+ if (!hasCsharpProject(cwd))
410
+ return { kind: 'tool-missing' };
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);
146
416
  if (!vulnRaw)
147
417
  return { kind: 'no-output' };
148
- try {
149
- const data = JSON.parse(vulnRaw);
150
- let critical = 0;
151
- let high = 0;
152
- let medium = 0;
153
- let low = 0;
154
- for (const proj of data.projects || []) {
155
- for (const fw of proj.frameworks || []) {
156
- for (const pkg of fw.topLevelPackages || []) {
157
- for (const adv of pkg.advisories || []) {
158
- const sev = adv.severity?.toLowerCase();
159
- if (sev === 'critical')
160
- critical++;
161
- else if (sev === 'high')
162
- high++;
163
- else if (sev === 'moderate' || sev === 'medium')
164
- medium++;
165
- else
166
- low++;
167
- }
168
- }
418
+ const parsed = parseDotnetVulnerableOutput(vulnRaw);
419
+ if (!parsed)
420
+ return { kind: 'parse-error' };
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;
169
437
  }
170
438
  }
171
- if (critical + high + medium + low === 0)
172
- return { kind: 'no-output' };
173
- const envelope = {
174
- schemaVersion: 1,
175
- tool: 'dotnet-vulnerable',
176
- enrichment: null,
177
- counts: { critical, high, medium, low },
178
- };
179
- return { kind: 'success', envelope };
439
+ }
440
+ // Alias-fallback CVSS pass: dotnet --vulnerable ships zero CVSS data
441
+ // per advisory; the GHSA id (extracted from advisoryUrl) is the only
442
+ // anchor. resolveCvssScores looks up via GHSA → CVE alias chain.
443
+ if (findings.length > 0) {
444
+ const cvssInputs = findings.map((f) => ({
445
+ primaryId: f.id,
446
+ embeddedCvss: f.cvssScore ?? null,
447
+ aliases: f.aliases ?? [],
448
+ }));
449
+ const resolved = await (0, osv_1.resolveCvssScores)(cvssInputs);
450
+ for (const f of findings) {
451
+ const score = resolved.get(f.id);
452
+ if (score !== null && score !== undefined)
453
+ f.cvssScore = score;
454
+ }
455
+ }
456
+ const envelope = {
457
+ schemaVersion: 1,
458
+ tool: 'dotnet-vulnerable',
459
+ enrichment: null,
460
+ counts,
461
+ findings,
462
+ };
463
+ return { kind: 'success', envelope };
464
+ }
465
+ /** True if `cwd` has a .csproj or .sln file at depth 0 or 1 (workspace
466
+ * layouts often nest projects one level under the repo root). */
467
+ function hasCsharpProject(cwd) {
468
+ let entries;
469
+ try {
470
+ entries = fs.readdirSync(cwd, { withFileTypes: true });
180
471
  }
181
472
  catch {
182
- return { kind: 'parse-error' };
473
+ return false;
474
+ }
475
+ for (const e of entries) {
476
+ if (e.isFile() && (e.name.endsWith('.csproj') || e.name.endsWith('.sln')))
477
+ return true;
478
+ if (e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules') {
479
+ try {
480
+ const sub = fs.readdirSync(path.join(cwd, e.name), { withFileTypes: true });
481
+ if (sub.some((s) => s.isFile() && (s.name.endsWith('.csproj') || s.name.endsWith('.sln'))))
482
+ return true;
483
+ }
484
+ catch {
485
+ /* unreadable subdir — ignore */
486
+ }
487
+ }
183
488
  }
489
+ return false;
184
490
  }
185
491
  const csharpDepVulnsProvider = {
186
492
  source: 'csharp',
@@ -330,6 +636,84 @@ const csharpTestFrameworkProvider = {
330
636
  return gatherCsharpTestFrameworkResult(cwd);
331
637
  },
332
638
  };
639
+ /**
640
+ * Locate the best input for nuget-license. Prefers a `.sln` at repo
641
+ * root (covers every csproj in the solution in one pass), falls back
642
+ * to any `.csproj` found within three levels. Returns an absolute path
643
+ * or null — callers skip cleanly on null.
644
+ */
645
+ function findCsharpLicenseInput(cwd) {
646
+ // .sln in root first — one pass over the whole solution.
647
+ let entries;
648
+ try {
649
+ entries = fs.readdirSync(cwd, { withFileTypes: true });
650
+ }
651
+ catch {
652
+ return null;
653
+ }
654
+ const sln = entries.find((e) => e.isFile() && e.name.endsWith('.sln'));
655
+ if (sln)
656
+ return path.join(cwd, sln.name);
657
+ // Fall back to first .csproj reachable within the standard depth.
658
+ return findMatchingRecursive(cwd, /\.csproj$/, 3);
659
+ }
660
+ /**
661
+ * Single source of truth for the csharp pack's license gathering.
662
+ * Consumed by `csharpLicensesProvider` (capability dispatcher).
663
+ *
664
+ * Delegates entirely to the `nuget-license` global .NET tool (OSS,
665
+ * MIT-licensed, established) — no custom .nuspec or project.assets.json
666
+ * parsing. Matches the pattern of the other four packs: one ecosystem
667
+ * tool, wrapped. Returns null cleanly when no .sln/.csproj is present
668
+ * or when the tool isn't installed.
669
+ */
670
+ function gatherCsharpLicensesResult(cwd) {
671
+ const input = findCsharpLicenseInput(cwd);
672
+ if (!input)
673
+ return null;
674
+ const status = (0, tool_registry_1.findTool)(tool_registry_1.TOOL_DEFS['nuget-license'], cwd);
675
+ if (!status.available || !status.path)
676
+ return null;
677
+ const raw = (0, runner_1.run)(`${status.path} -i "${input}" -o JsonPretty 2>/dev/null`, cwd, 180000);
678
+ if (!raw)
679
+ return null;
680
+ let data;
681
+ try {
682
+ data = JSON.parse(raw);
683
+ }
684
+ catch {
685
+ return null;
686
+ }
687
+ if (!Array.isArray(data))
688
+ return null;
689
+ const findings = [];
690
+ for (const entry of data) {
691
+ if (!entry.PackageId || !entry.PackageVersion)
692
+ continue;
693
+ const license = entry.License && entry.License.length > 0 ? entry.License : 'UNKNOWN';
694
+ findings.push({
695
+ package: entry.PackageId,
696
+ version: entry.PackageVersion,
697
+ licenseType: license,
698
+ sourceUrl: (entry.PackageProjectUrl && entry.PackageProjectUrl.length > 0
699
+ ? entry.PackageProjectUrl
700
+ : entry.LicenseUrl) || undefined,
701
+ description: entry.Description && entry.Description.length > 0 ? entry.Description : undefined,
702
+ supplier: entry.Authors && entry.Authors.length > 0 ? entry.Authors : undefined,
703
+ });
704
+ }
705
+ return {
706
+ schemaVersion: 1,
707
+ tool: 'nuget-license',
708
+ findings,
709
+ };
710
+ }
711
+ const csharpLicensesProvider = {
712
+ source: 'csharp',
713
+ async gather(cwd) {
714
+ return gatherCsharpLicensesResult(cwd);
715
+ },
716
+ };
333
717
  exports.csharp = {
334
718
  id: 'csharp',
335
719
  displayName: 'C#',
@@ -341,7 +725,7 @@ exports.csharp = {
341
725
  detect(cwd) {
342
726
  return (dirHasMatching(cwd, /\.(sln|csproj)$/) || findMatchingRecursive(cwd, /\.csproj$/, 3) !== null);
343
727
  },
344
- tools: ['dotnet-format'],
728
+ tools: ['dotnet-format', 'nuget-license'],
345
729
  // p/csharp semgrep ruleset is sparse — skip until it matures.
346
730
  semgrepRulesets: [],
347
731
  capabilities: {
@@ -350,6 +734,7 @@ exports.csharp = {
350
734
  coverage: csharpCoverageProvider,
351
735
  imports: csharpImportsProvider,
352
736
  testFramework: csharpTestFrameworkProvider,
737
+ licenses: csharpLicensesProvider,
353
738
  },
354
739
  // mapLintSeverity intentionally omitted: dotnet-format is a formatter,
355
740
  // not a tiered linter. It emits binary pass/fail per file and doesn't
@@ -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":"AAmBA,OAAO,KAAK,EAAE,eAAe,EAAgB,MAAM,SAAS,CAAC;AAkP7D;;;;;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;AAsED,eAAO,MAAM,EAAE,EAAE,eAuBhB,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"}