dep-up-surgeon 2.2.0 → 2.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +107 -22
  2. package/dist/cli/doctor.d.ts +52 -0
  3. package/dist/cli/doctor.d.ts.map +1 -0
  4. package/dist/cli/doctor.js +616 -0
  5. package/dist/cli/doctor.js.map +1 -0
  6. package/dist/cli/doctorCommand.d.ts +2 -0
  7. package/dist/cli/doctorCommand.d.ts.map +1 -0
  8. package/dist/cli/doctorCommand.js +71 -0
  9. package/dist/cli/doctorCommand.js.map +1 -0
  10. package/dist/cli/doctorRenderer.d.ts +21 -0
  11. package/dist/cli/doctorRenderer.d.ts.map +1 -0
  12. package/dist/cli/doctorRenderer.js +79 -0
  13. package/dist/cli/doctorRenderer.js.map +1 -0
  14. package/dist/cli/git.d.ts +11 -0
  15. package/dist/cli/git.d.ts.map +1 -1
  16. package/dist/cli/git.js +45 -9
  17. package/dist/cli/git.js.map +1 -1
  18. package/dist/cli/gitFlow.d.ts.map +1 -1
  19. package/dist/cli/gitFlow.js +7 -0
  20. package/dist/cli/gitFlow.js.map +1 -1
  21. package/dist/cli/lockfileFix.d.ts +91 -0
  22. package/dist/cli/lockfileFix.d.ts.map +1 -0
  23. package/dist/cli/lockfileFix.js +509 -0
  24. package/dist/cli/lockfileFix.js.map +1 -0
  25. package/dist/cli/report.d.ts +4 -0
  26. package/dist/cli/report.d.ts.map +1 -1
  27. package/dist/cli/report.js +5 -0
  28. package/dist/cli/report.js.map +1 -1
  29. package/dist/cli/summary.d.ts.map +1 -1
  30. package/dist/cli/summary.js +221 -2
  31. package/dist/cli/summary.js.map +1 -1
  32. package/dist/cli.js +80 -1
  33. package/dist/cli.js.map +1 -1
  34. package/dist/core/peerResolver.d.ts +82 -0
  35. package/dist/core/peerResolver.d.ts.map +1 -0
  36. package/dist/core/peerResolver.js +213 -0
  37. package/dist/core/peerResolver.js.map +1 -0
  38. package/dist/core/upgrader.d.ts +30 -6
  39. package/dist/core/upgrader.d.ts.map +1 -1
  40. package/dist/core/upgrader.js +195 -14
  41. package/dist/core/upgrader.js.map +1 -1
  42. package/dist/core/workspaces.d.ts +22 -0
  43. package/dist/core/workspaces.d.ts.map +1 -1
  44. package/dist/core/workspaces.js +52 -0
  45. package/dist/core/workspaces.js.map +1 -1
  46. package/dist/types.d.ts +92 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/utils/concurrency.d.ts +55 -0
  49. package/dist/utils/concurrency.d.ts.map +1 -1
  50. package/dist/utils/concurrency.js +46 -1
  51. package/dist/utils/concurrency.js.map +1 -1
  52. package/dist/utils/npm.d.ts +14 -0
  53. package/dist/utils/npm.d.ts.map +1 -1
  54. package/dist/utils/npm.js +48 -0
  55. package/dist/utils/npm.js.map +1 -1
  56. package/package.json +3 -3
@@ -1,5 +1,49 @@
1
1
  import path from 'node:path';
2
2
  import fs from 'fs-extra';
3
+ /**
4
+ * Self-contained stylesheet embedded into every HTML summary. Kept deliberately short + GitHub
5
+ * Actions / email friendly:
6
+ * - Scoped to `.dep-up-surgeon-report` so it can't leak into a host page / step-summary that
7
+ * also contains other tool output.
8
+ * - Uses system fonts only — no web fonts or external URLs.
9
+ * - Severity chips use the same palette as npm / GitHub advisory UIs so reviewers recognise
10
+ * the colors at a glance (critical=red, high=orange, moderate=amber, low=grey).
11
+ * - Tables fold down on narrow viewports by switching to `display:block` + horizontal scroll
12
+ * rather than reflowing cells, which preserves column-alignment readability.
13
+ */
14
+ const SUMMARY_CSS = `
15
+ .dep-up-surgeon-report { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 14px; line-height: 1.5; color: #1f2328; }
16
+ .dep-up-surgeon-report h2 { margin-top: 0; font-size: 1.5em; border-bottom: 1px solid #d1d9e0; padding-bottom: 0.3em; }
17
+ .dep-up-surgeon-report h3 { margin-top: 1.5em; font-size: 1.15em; border-bottom: 1px solid #d1d9e0b3; padding-bottom: 0.2em; }
18
+ .dep-up-surgeon-report h4 { margin-top: 1.25em; font-size: 1em; color: #59636e; }
19
+ .dep-up-surgeon-report code { background: #afb8c133; padding: 0.15em 0.35em; border-radius: 4px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.92em; }
20
+ .dep-up-surgeon-report pre { background: #f6f8fa; padding: 12px; border-radius: 6px; overflow-x: auto; font-size: 0.85em; }
21
+ .dep-up-surgeon-report pre code { background: transparent; padding: 0; }
22
+ .dep-up-surgeon-report table { border-collapse: collapse; margin: 0.5em 0 1em; width: 100%; max-width: 100%; overflow-x: auto; display: block; }
23
+ .dep-up-surgeon-report thead { background: #f6f8fa; }
24
+ .dep-up-surgeon-report th, .dep-up-surgeon-report td { border: 1px solid #d1d9e0; padding: 6px 10px; text-align: left; vertical-align: top; }
25
+ .dep-up-surgeon-report a { color: #0969da; text-decoration: none; }
26
+ .dep-up-surgeon-report a:hover { text-decoration: underline; }
27
+ .dep-up-surgeon-report details { margin: 0.4em 0; }
28
+ .dep-up-surgeon-report details > summary { cursor: pointer; padding: 4px 0; }
29
+ .dep-up-surgeon-report blockquote { border-left: 3px solid #d1d9e0; padding: 0.4em 0.8em; color: #59636e; background: #f6f8fa; margin: 0.5em 0; }
30
+ .dep-up-surgeon-report .chip { display: inline-block; padding: 1px 8px; border-radius: 10px; font-size: 0.78em; font-weight: 600; text-transform: uppercase; letter-spacing: 0.02em; line-height: 1.5; vertical-align: middle; }
31
+ .dep-up-surgeon-report .chip-critical { background: #ffebe9; color: #a40e26; border: 1px solid #ffb4a8; }
32
+ .dep-up-surgeon-report .chip-high { background: #fff1e5; color: #9a3412; border: 1px solid #ffb787; }
33
+ .dep-up-surgeon-report .chip-moderate { background: #fff8c5; color: #7d4e00; border: 1px solid #e6d47a; }
34
+ .dep-up-surgeon-report .chip-low { background: #eaeef2; color: #59636e; border: 1px solid #d1d9e0; }
35
+ .dep-up-surgeon-report .chip-breaking { background: #ffebe9; color: #a40e26; border: 1px solid #ffb4a8; }
36
+ .dep-up-surgeon-report .chip-peer { background: #ddf4ff; color: #0550ae; border: 1px solid #54aeff; }
37
+ .dep-up-surgeon-report .chip-security { background: #fff8c5; color: #7d4e00; border: 1px solid #e6d47a; }
38
+ .dep-up-surgeon-report .chip-fallback { background: #eaeef2; color: #59636e; border: 1px solid #d1d9e0; }
39
+ .dep-up-surgeon-report .chip-forced { background: #ffd8b5; color: #9a3412; border: 1px solid #ffb787; }
40
+ .dep-up-surgeon-report .note-bits { display: inline-flex; flex-wrap: wrap; gap: 4px; align-items: center; }
41
+ `.trim();
42
+ const VALID_SEVERITIES = new Set(['low', 'moderate', 'high', 'critical']);
43
+ function severityChip(severity, esc) {
44
+ const sev = VALID_SEVERITIES.has(severity) ? severity : 'low';
45
+ return `<span class="chip chip-${sev}">${esc(severity)}</span>`;
46
+ }
3
47
  const DEFAULT_BASENAME = 'dep-up-surgeon-summary';
4
48
  /**
5
49
  * Resolve the destination for a `--summary` write:
@@ -119,6 +163,23 @@ export function renderSummaryMarkdown(structured, toolVersion) {
119
163
  }
120
164
  lines.push('');
121
165
  }
166
+ // Peer-range intersection resolver breadcrumbs — list only the rows that were actually
167
+ // nudged off the user's requested target so the reviewer can see which linked-group
168
+ // members were compromised and why.
169
+ const peerResolved = upgraded.filter((r) => r.resolvedPeer);
170
+ if (peerResolved.length > 0) {
171
+ lines.push(`### Peer-range resolutions`);
172
+ lines.push('');
173
+ lines.push(`_${peerResolved.length} package${peerResolved.length === 1 ? ' was' : 's were'} pinned below the requested latest because a linked-group peer constraint would otherwise have broken the install. Each row shows the originally requested version alongside the compatible version the resolver picked._`);
174
+ lines.push('');
175
+ lines.push(`| Package | Group | Requested | Installed | Tuples explored |`);
176
+ lines.push(`| --- | --- | --- | --- | ---: |`);
177
+ for (const r of peerResolved) {
178
+ const rp = r.resolvedPeer;
179
+ lines.push(`| \`${r.name}\` | \`${r.linkedGroupId ?? '?'}\` | \`${rp.originalTarget}\` | \`${r.to ?? '?'}\` | ${rp.tuplesExplored} |`);
180
+ }
181
+ lines.push('');
182
+ }
122
183
  if (upgraded.length) {
123
184
  lines.push(`### Upgraded`);
124
185
  lines.push('');
@@ -187,6 +248,52 @@ export function renderSummaryMarkdown(structured, toolVersion) {
187
248
  lines.push(structured.ignored.map((n) => `\`${n}\``).join(', '));
188
249
  lines.push('');
189
250
  }
251
+ if (structured.lockfileFix) {
252
+ const lf = structured.lockfileFix;
253
+ lines.push(`### Lockfile fix`);
254
+ lines.push('');
255
+ lines.push(renderLockfileFixSummaryLine(lf));
256
+ lines.push('');
257
+ const interesting = lf.dedupeChanges.filter((c) => c.change === 'merged' || c.change === 'updated');
258
+ if (interesting.length > 0) {
259
+ lines.push(`| Package | Change | Before | After |`);
260
+ lines.push(`| --- | --- | --- | --- |`);
261
+ for (const c of interesting.slice(0, 50)) {
262
+ lines.push(`| \`${c.name}\` | ${c.change} | ${c.before.map((v) => `\`${v}\``).join(', ') || '—'} | ${c.after.map((v) => `\`${v}\``).join(', ') || '—'} |`);
263
+ }
264
+ if (interesting.length > 50) {
265
+ lines.push('');
266
+ lines.push(`_…and ${interesting.length - 50} more not shown._`);
267
+ }
268
+ lines.push('');
269
+ }
270
+ if (lf.stale.length > 0) {
271
+ lines.push(`<details><summary>Stale transitives (${lf.stale.length} — \`package.json\` untouched)</summary>`);
272
+ lines.push('');
273
+ lines.push(`| Package | Installed | Latest | Major behind | Minor behind |`);
274
+ lines.push(`| --- | --- | --- | ---: | ---: |`);
275
+ for (const s of lf.stale.slice(0, 25)) {
276
+ lines.push(`| \`${s.name}\` | ${s.installed.map((v) => `\`${v}\``).join(', ')} | \`${s.latest}\` | ${s.majorBehind} | ${s.minorBehind} |`);
277
+ }
278
+ if (lf.stale.length > 25) {
279
+ lines.push('');
280
+ lines.push(`_…and ${lf.stale.length - 25} more not shown._`);
281
+ }
282
+ lines.push('');
283
+ lines.push(`</details>`);
284
+ lines.push('');
285
+ }
286
+ if (lf.status === 'failed' && lf.lastLines) {
287
+ lines.push(`<details><summary>${lf.failureKind ?? 'dedupe'} output (last lines)</summary>`);
288
+ lines.push('');
289
+ lines.push('```');
290
+ lines.push(lf.lastLines);
291
+ lines.push('```');
292
+ lines.push('');
293
+ lines.push(`</details>`);
294
+ lines.push('');
295
+ }
296
+ }
190
297
  if (structured.overrides && structured.overrides.attempts.length > 0) {
191
298
  const ok = structured.overrides.attempts.filter((a) => a.ok && !a.skipped);
192
299
  const noOp = structured.overrides.attempts.filter((a) => a.ok && a.skipped);
@@ -261,6 +368,12 @@ export function renderSummaryHtml(structured, toolVersion) {
261
368
  .replace(/>/g, '&gt;')
262
369
  .replace(/"/g, '&quot;');
263
370
  const out = [];
371
+ // Inline stylesheet first, then the scoping wrapper. The `<style>` tag is stripped by
372
+ // GitHub's sanitizer in issue / PR / step-summary contexts, in which case the HTML still
373
+ // renders as plain tables (graceful degradation). When the summary is saved to a file and
374
+ // opened in a browser — the primary `--summary html` use case — the stylesheet applies and
375
+ // the report gets chips + proper table styling without any external assets.
376
+ out.push(`<style>${SUMMARY_CSS}</style>`);
264
377
  out.push(`<section class="dep-up-surgeon-report">`);
265
378
  out.push(`<h2>dep-up-surgeon — upgrade report</h2>`);
266
379
  out.push(`<p><em>${upgraded.length} upgraded, ${failed.length} failed, ${structured.skipped.length} skipped — dep-up-surgeon <code>${esc(toolVersion)}</code></em></p>`);
@@ -289,7 +402,7 @@ export function renderSummaryHtml(structured, toolVersion) {
289
402
  : s.url
290
403
  ? `<a href="${esc(s.url)}" rel="noreferrer noopener">link</a>`
291
404
  : '';
292
- out.push(`<tr><td><code>${esc(r.name)}</code>${esc(workspaceTagPlain(r.workspace))}</td><td><strong>${esc(s.severity)}</strong></td><td>${advCell}</td><td><code>${esc(r.from ?? '?')}</code> → <code>${esc(r.to ?? '?')}</code></td><td>${esc(s.title ?? '')}</td></tr>`);
405
+ out.push(`<tr><td><code>${esc(r.name)}</code>${esc(workspaceTagPlain(r.workspace))}</td><td>${severityChip(s.severity, esc)}</td><td>${advCell}</td><td><code>${esc(r.from ?? '?')}</code> → <code>${esc(r.to ?? '?')}</code></td><td>${esc(s.title ?? '')}</td></tr>`);
293
406
  }
294
407
  out.push(`</tbody></table>`);
295
408
  }
@@ -308,11 +421,22 @@ export function renderSummaryHtml(structured, toolVersion) {
308
421
  }
309
422
  out.push(`</ul>`);
310
423
  }
424
+ const peerResolvedHtml = upgraded.filter((r) => r.resolvedPeer);
425
+ if (peerResolvedHtml.length > 0) {
426
+ out.push(`<h3>Peer-range resolutions</h3>`);
427
+ out.push(`<p><em>${peerResolvedHtml.length} package${peerResolvedHtml.length === 1 ? ' was' : 's were'} pinned below the requested latest because a linked-group peer constraint would otherwise have broken the install.</em></p>`);
428
+ out.push(`<table><thead><tr><th>Package</th><th>Group</th><th>Requested</th><th>Installed</th><th>Tuples explored</th></tr></thead><tbody>`);
429
+ for (const r of peerResolvedHtml) {
430
+ const rp = r.resolvedPeer;
431
+ out.push(`<tr><td><code>${esc(r.name)}</code></td><td><code>${esc(r.linkedGroupId ?? '?')}</code></td><td><code>${esc(rp.originalTarget)}</code></td><td><code>${esc(r.to ?? '?')}</code></td><td>${rp.tuplesExplored}</td></tr>`);
432
+ }
433
+ out.push(`</tbody></table>`);
434
+ }
311
435
  if (upgraded.length) {
312
436
  out.push(`<h3>Upgraded</h3>`);
313
437
  out.push(`<table><thead><tr><th>Package</th><th>Workspace</th><th>From</th><th>To</th><th>Notes</th></tr></thead><tbody>`);
314
438
  for (const r of upgraded) {
315
- out.push(`<tr><td><code>${esc(r.name)}</code></td><td>${esc(r.workspace ?? 'root')}</td><td><code>${esc(r.from ?? '?')}</code></td><td><code>${esc(r.to ?? '?')}</code></td><td>${esc(formatUpgradeNote(r))}</td></tr>`);
439
+ out.push(`<tr><td><code>${esc(r.name)}</code></td><td>${esc(r.workspace ?? 'root')}</td><td><code>${esc(r.from ?? '?')}</code></td><td><code>${esc(r.to ?? '?')}</code></td><td>${formatUpgradeNoteHtml(r, esc)}</td></tr>`);
316
440
  }
317
441
  out.push(`</tbody></table>`);
318
442
  const withChangelog = upgraded.filter((r) => r.changelog?.body);
@@ -357,9 +481,66 @@ export function renderSummaryHtml(structured, toolVersion) {
357
481
  out.push(`<h3>Ignored</h3>`);
358
482
  out.push(`<p>${structured.ignored.map((n) => `<code>${esc(n)}</code>`).join(', ')}</p>`);
359
483
  }
484
+ if (structured.lockfileFix) {
485
+ const lf = structured.lockfileFix;
486
+ out.push(`<h3>Lockfile fix</h3>`);
487
+ out.push(`<p><em>${esc(renderLockfileFixSummaryLine(lf))}</em></p>`);
488
+ const interesting = lf.dedupeChanges.filter((c) => c.change === 'merged' || c.change === 'updated');
489
+ if (interesting.length > 0) {
490
+ out.push(`<table><thead><tr><th>Package</th><th>Change</th><th>Before</th><th>After</th></tr></thead><tbody>`);
491
+ for (const c of interesting.slice(0, 50)) {
492
+ const chipKind = c.change === 'merged' ? 'chip-peer' : 'chip-low';
493
+ const beforeCell = c.before.length > 0 ? c.before.map((v) => `<code>${esc(v)}</code>`).join(', ') : '—';
494
+ const afterCell = c.after.length > 0 ? c.after.map((v) => `<code>${esc(v)}</code>`).join(', ') : '—';
495
+ out.push(`<tr><td><code>${esc(c.name)}</code></td><td><span class="chip ${chipKind}">${esc(c.change)}</span></td><td>${beforeCell}</td><td>${afterCell}</td></tr>`);
496
+ }
497
+ out.push(`</tbody></table>`);
498
+ if (interesting.length > 50) {
499
+ out.push(`<p><em>…and ${interesting.length - 50} more not shown.</em></p>`);
500
+ }
501
+ }
502
+ if (lf.stale.length > 0) {
503
+ out.push(`<details><summary>Stale transitives (${lf.stale.length} — <code>package.json</code> untouched)</summary>`);
504
+ out.push(`<table><thead><tr><th>Package</th><th>Installed</th><th>Latest</th><th>Major behind</th><th>Minor behind</th></tr></thead><tbody>`);
505
+ for (const s of lf.stale.slice(0, 25)) {
506
+ out.push(`<tr><td><code>${esc(s.name)}</code></td><td>${s.installed.map((v) => `<code>${esc(v)}</code>`).join(', ')}</td><td><code>${esc(s.latest)}</code></td><td>${s.majorBehind}</td><td>${s.minorBehind}</td></tr>`);
507
+ }
508
+ out.push(`</tbody></table>`);
509
+ if (lf.stale.length > 25) {
510
+ out.push(`<p><em>…and ${lf.stale.length - 25} more not shown.</em></p>`);
511
+ }
512
+ out.push(`</details>`);
513
+ }
514
+ if (lf.status === 'failed' && lf.lastLines) {
515
+ out.push(`<details><summary>${esc(lf.failureKind ?? 'dedupe')} output (last lines)</summary><pre>${esc(lf.lastLines)}</pre></details>`);
516
+ }
517
+ }
360
518
  out.push(`</section>`);
361
519
  return out.join('\n');
362
520
  }
521
+ /**
522
+ * One-line human summary of a lockfile-fix report. Shared by the Markdown and HTML
523
+ * renderers so the wording stays consistent.
524
+ */
525
+ function renderLockfileFixSummaryLine(lf) {
526
+ if (lf.status === 'skipped') {
527
+ const reason = lf.skipReason === 'no-lockfile'
528
+ ? 'no lockfile was present on disk'
529
+ : 'package manager has no dedupe subcommand (yarn classic)';
530
+ return `Skipped — ${reason}.`;
531
+ }
532
+ if (lf.status === 'dry-run') {
533
+ return `Dry-run — would execute \`${lf.command}\`.`;
534
+ }
535
+ if (lf.status === 'failed') {
536
+ const kind = lf.failureKind === 'validation' ? 'validator' : 'dedupe';
537
+ return `Failed — ${kind} exited non-zero; lockfile was restored to its pre-dedupe state.`;
538
+ }
539
+ const merged = lf.dedupeChanges.filter((c) => c.change === 'merged').length;
540
+ const updated = lf.dedupeChanges.filter((c) => c.change === 'updated').length;
541
+ const stale = lf.stale.length;
542
+ return `Ran \`${lf.command}\` — ${merged} merged, ${updated} updated, ${stale} stale transitive${stale === 1 ? '' : 's'} flagged.`;
543
+ }
363
544
  function formatUpgradeNote(r) {
364
545
  const bits = [];
365
546
  if (r.changelog?.breaking?.hasBreaking) {
@@ -375,11 +556,49 @@ function formatUpgradeNote(r) {
375
556
  if (r.usedFallback && r.requestedLatest) {
376
557
  bits.push(`fallback (latest was \`${r.requestedLatest}\`)`);
377
558
  }
559
+ if (r.resolvedPeer) {
560
+ bits.push(`peer-resolved from \`${r.resolvedPeer.originalTarget}\``);
561
+ }
378
562
  if (r.forced) {
379
563
  bits.push('forced');
380
564
  }
381
565
  return bits.join(', ');
382
566
  }
567
+ /**
568
+ * HTML variant of `formatUpgradeNote` — emits severity + classification chips + clickable
569
+ * advisory IDs instead of a flat markdown string. Used only by `renderSummaryHtml`; the
570
+ * Markdown renderer keeps `formatUpgradeNote` because chips don't render in plain MD.
571
+ */
572
+ function formatUpgradeNoteHtml(r, esc) {
573
+ const parts = [];
574
+ if (r.changelog?.breaking?.hasBreaking) {
575
+ parts.push(`<span class="chip chip-breaking">breaking</span>`);
576
+ }
577
+ if (r.security) {
578
+ const id = r.security.ids[0];
579
+ const idCell = id
580
+ ? r.security.url
581
+ ? ` <a href="${esc(r.security.url)}" rel="noreferrer noopener"><code>${esc(id)}</code></a>`
582
+ : ` <code>${esc(id)}</code>`
583
+ : '';
584
+ parts.push(`${severityChip(r.security.severity, esc)}${idCell}`);
585
+ }
586
+ if (r.linkedGroupId) {
587
+ parts.push(`<span class="chip chip-low">group <code>${esc(r.linkedGroupId)}</code></span>`);
588
+ }
589
+ if (r.usedFallback && r.requestedLatest) {
590
+ parts.push(`<span class="chip chip-fallback">fallback</span> <em>(latest was <code>${esc(r.requestedLatest)}</code>)</em>`);
591
+ }
592
+ if (r.resolvedPeer) {
593
+ parts.push(`<span class="chip chip-peer">peer-resolved</span> <em>from <code>${esc(r.resolvedPeer.originalTarget)}</code></em>`);
594
+ }
595
+ if (r.forced) {
596
+ parts.push(`<span class="chip chip-forced">forced</span>`);
597
+ }
598
+ if (parts.length === 0)
599
+ return '';
600
+ return `<span class="note-bits">${parts.join(' ')}</span>`;
601
+ }
383
602
  function formatFailureNote(f) {
384
603
  if (f.reason === 'validation-script' && f.validation) {
385
604
  return `validator \`${f.validation.command ?? '?'}\` exited \`${f.validation.exitCode ?? '?'}\``;
@@ -1 +1 @@
1
- {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/cli/summary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/cli/summary.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -113,6 +113,15 @@ async function postRunInteractive(cwd, report) {
113
113
  }
114
114
  async function main() {
115
115
  const version = await readSelfVersion();
116
+ // `doctor` is a read-only diagnostic subcommand — we dispatch it BEFORE the main commander
117
+ // program is wired up so it doesn't have to inherit the upgrade flow's 70+ options (most
118
+ // of which don't apply to a read-only run). `doctor` has its own small commander program
119
+ // with a focused option set; when it runs, it prints its report and exits directly.
120
+ if (process.argv[2] === 'doctor') {
121
+ const { runDoctorCommand } = await import('./cli/doctorCommand.js');
122
+ await runDoctorCommand(process.argv, version);
123
+ return;
124
+ }
116
125
  program
117
126
  .name('dep-up-surgeon')
118
127
  .description('Upgrade npm dependencies one-by-one with install + test/build validation and rollback on failure.')
@@ -132,7 +141,8 @@ async function main() {
132
141
  .option('--workspaces-only', 'Traverse only workspace members; skip the root package.json. Implies --workspaces.', false)
133
142
  .option('--workspace <names>', 'Comma-separated workspace member names to traverse (use the package `name` from each child package.json). Pass `root` to also include the root. Example: --workspace "@org/core,@org/web,root".')
134
143
  .option('--install-mode <mode>', 'Workspace install strategy: `root` (default; always install the whole tree from the workspace root — safest) or `filtered` (npm `-w <name>` / pnpm `--filter <name>` per child target). Yarn falls back to a full install with a warning. Only matters with --workspaces / --workspace.', 'root')
135
- .option('--concurrency <n>', 'Maximum number of workspace targets to scan/plan in parallel (1-16; default 1). Higher values overlap registry fetches across targets while a shared mutex keeps installs and validation serialized (the lockfile is shared). Requires --json to keep per-target log lines from interleaving — non-JSON mode silently downgrades to 1 with a warning.', '1')
144
+ .option('--concurrency <n>', 'Maximum number of workspace targets to scan/plan in parallel (1-16; default 1). Higher values overlap registry fetches across targets while a shared mutex keeps installs and validation serialized (the lockfile is shared). In **isolated-lockfile** monorepos (pnpm `shared-workspace-lockfile=false`, or every workspace member shipping its own lockfile) the installs + validation ALSO run in parallel, keyed per workspace directory. Requires --json to keep per-target log lines from interleaving — non-JSON mode silently downgrades to 1 with a warning.', '1')
145
+ .option('--no-parallel-installs', 'Force installs + validation to stay serialized even when an isolated-lockfile monorepo is detected. Useful when debugging a flaky install step (parallel installs mask the ordering) or when a per-workspace postinstall script touches shared state outside the workspace tree.')
136
146
  .option('--no-persist-report', `Do not write the structured report to ${LAST_RUN_FILENAME} after the run. By default the report is written next to the workspace root for inspection by CI / --retry-failed.`)
137
147
  .option('--retry-failed', `Read ${LAST_RUN_FILENAME} from the previous run and only reattempt entries that failed for non-terminal reasons (i.e. NOT 'peer' or 'validation-script'). Successful upgrades + terminal failures from the last run are added to the ignore list automatically.`, false)
138
148
  .option('--summary <format>', 'Write a human-friendly summary of the run as `md` (default) or `html`. Destination: $GITHUB_STEP_SUMMARY if set (appended), otherwise --summary-file <path>, otherwise ./dep-up-surgeon-summary.<ext>.')
@@ -150,8 +160,11 @@ async function main() {
150
160
  .option('--min-severity <level>', 'Minimum advisory severity to consider under --security-only: one of "low", "moderate", "high", "critical". Lower severities are filtered out. Default: "low" (accept all).', 'low')
151
161
  .option('--blast-radius', 'Scan project source files to list which files actually import each upgraded package. Attaches the file list to every upgrade record + surfaces it in --summary. Default ON when --summary is active.')
152
162
  .option('--no-blast-radius', 'Disable blast-radius source scanning. Useful in very large monorepos where the scan is slower than the install itself.')
163
+ .option('--resolve-peers', 'When a linked-group bump (e.g. `react` + `react-dom`) fails with a peer-dependency conflict, attempt to compute a compatible version tuple by intersecting each member\'s peer ranges across the registry packument. If a satisfiable tuple exists and it passes install + validate, the batch succeeds with members possibly downgraded off `latest`. Default: ON.')
164
+ .option('--no-resolve-peers', 'Disable the peer-range intersection resolver. A linked batch that fails with a peer conflict rolls back exactly like before. Useful when you WANT the failure to surface instead of having the tool silently nudge versions off latest.')
153
165
  .option('--apply-overrides', 'After the main upgrade loop, attempt to fix transitive CVEs that no direct bump could reach by writing a package-manager override (`overrides` for npm, `pnpm.overrides` for pnpm, `resolutions` for yarn) pinning each vulnerable package to its audit-recommended safe version. Runs install + validator after each pin and rolls back the pin on failure. Requires --security-only.', false)
154
166
  .option('--override-force', 'Used with --apply-overrides. Overwrite an existing override whose value conflicts with the audit-recommended version. By default we refuse and record a `conflict` reason so the user can reconcile manually.', false)
167
+ .option('--fix-lockfile', 'Run the package manager\'s native dedupe pass (`npm dedupe` / `pnpm dedupe` / `yarn dedupe`) to collapse redundant transitive copies WITHOUT touching package.json, and scan for transitives more than one minor or a full major behind registry `latest`. The lockfile is backed up before dedupe and restored if the dedupe command OR the post-dedupe validator fails. Yarn classic (v1) has no dedupe subcommand and is recorded as `skipped: "unsupported"`.', false)
155
168
  .option('--open-pr', 'Push the branch created by --git-branch and open a GitHub PR using the `gh` CLI (must be installed + authenticated). The PR body is the --summary markdown (falls back to a minimal default). Never fatal: a missing `gh`, an auth failure, or a push reject is recorded in the structured report as `pullRequest.error` without aborting the upgrade run.', false)
156
169
  .option('--open-pr-title <title>', 'Override the PR title. Default: a deterministic title derived from the upgrade counts (e.g. "deps: [security] bump 3 packages").')
157
170
  .option('--open-pr-draft', 'Open the PR as a draft. Useful on Fridays or when --force was used so the PR cannot be auto-merged by a queue bot.', false)
@@ -416,8 +429,14 @@ async function main() {
416
429
  workspaceMode,
417
430
  installMode,
418
431
  concurrency,
432
+ // commander turns `--no-parallel-installs` into `parallelInstalls: false`; everything
433
+ // else (undefined, true, or the flag absent) means "auto-detect from project info".
434
+ ...(opts.parallelInstalls === false ? { forceSerialInstalls: true } : {}),
419
435
  restrictToNames,
420
436
  policy,
437
+ // `--no-resolve-peers` sets opts.resolvePeers to false (commander convention);
438
+ // anything else (undefined, true) means "default on" inside the engine.
439
+ resolvePeers: opts.resolvePeers !== false,
421
440
  onUpgradeApplied: gitFlow?.onUpgradeApplied,
422
441
  onTargetComplete: gitFlow
423
442
  ? async (ev) => {
@@ -595,6 +614,66 @@ async function main() {
595
614
  }
596
615
  }
597
616
  }
617
+ // --fix-lockfile: dedupe + stale-transitive scan. Runs AFTER the main upgrade loop and
618
+ // overrides pass so we dedupe the FINAL tree. We roll back on any failure, so in the
619
+ // worst case the user ends up with the same lockfile the upgrade loop produced.
620
+ if (opts.fixLockfile && !dryRun) {
621
+ try {
622
+ const { runLockfileFix } = await import('./cli/lockfileFix.js');
623
+ const fixManager = packageManager !== 'auto' ? packageManager : report.project?.manager ?? 'npm';
624
+ const yarnMajorVersion = report.project?.yarnMajorVersion;
625
+ const fixRes = await runLockfileFix({
626
+ cwd,
627
+ manager: fixManager,
628
+ ...(yarnMajorVersion !== undefined ? { yarnMajorVersion } : {}),
629
+ json: jsonOutput,
630
+ runValidator: async () => {
631
+ if (validate.skip)
632
+ return { ok: true };
633
+ try {
634
+ const { validateProject } = await import('./core/validator.js');
635
+ const pkg = await fs.readJson(path.join(cwd, 'package.json'));
636
+ const vr = await validateProject(cwd, pkg, {
637
+ ...(validate.command ? { command: validate.command } : {}),
638
+ manager: fixManager,
639
+ ...(validate.source ? { source: validate.source } : {}),
640
+ });
641
+ return {
642
+ ok: vr.ok,
643
+ ...(vr.command ? { command: vr.command } : {}),
644
+ ...(vr.output ? { lastLines: vr.output } : {}),
645
+ };
646
+ }
647
+ catch {
648
+ return { ok: true };
649
+ }
650
+ },
651
+ runInstallAfterRollback: async () => {
652
+ const { runInstall } = await import('./utils/npm.js');
653
+ await runInstall(cwd, fixManager);
654
+ },
655
+ });
656
+ report.lockfileFix = fixRes.report;
657
+ if (!jsonOutput) {
658
+ const r = fixRes.report;
659
+ if (r.status === 'ok') {
660
+ const mergedOrUpdated = r.dedupeChanges.filter((c) => c.change === 'merged' || c.change === 'updated').length;
661
+ log.success(`--fix-lockfile: ${r.command} succeeded (${mergedOrUpdated} package${mergedOrUpdated === 1 ? '' : 's'} deduped/updated, ${r.stale.length} stale transitive${r.stale.length === 1 ? '' : 's'} flagged).`);
662
+ }
663
+ else if (r.status === 'failed') {
664
+ log.warn(`--fix-lockfile: ${r.failureKind === 'validation' ? 'validator' : 'dedupe'} failed; lockfile was restored.`);
665
+ }
666
+ else if (r.status === 'skipped') {
667
+ log.info(`--fix-lockfile: skipped (${r.skipReason === 'no-lockfile' ? 'no lockfile on disk' : 'yarn classic has no dedupe subcommand'}).`);
668
+ }
669
+ }
670
+ }
671
+ catch (e) {
672
+ if (!jsonOutput) {
673
+ log.warn(`--fix-lockfile: skipped due to error: ${e instanceof Error ? e.message : String(e)}`);
674
+ }
675
+ }
676
+ }
598
677
  // Write the --summary file BEFORE emitting the primary report so we can reuse it as the
599
678
  // PR body (when --open-pr is set) and so the JSON consumer sees `pullRequest` reflected in
600
679
  // the final structured report.