react-doctor 0.7.4-dev.b47d053 → 0.7.4-dev.b686594

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/dist/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="09731967-e6b8-5d9e-84b7-cb46a451b11a")}catch(e){}}();
2
+ !function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="ef42af6f-0ecf-599f-a6cb-63bf1f1bd562")}catch(e){}}();
3
3
  import { createRequire } from "node:module";
4
4
  import * as NodeChildProcess from "node:child_process";
5
5
  import { execFile, execFileSync, spawn, spawnSync } from "node:child_process";
@@ -8,8 +8,8 @@ import path from "node:path";
8
8
  import * as NFS from "node:fs";
9
9
  import fs, { mkdtempSync, rmSync } from "node:fs";
10
10
  import process$1 from "node:process";
11
- import reactDoctorPlugin, { ALL_REACT_DOCTOR_RULE_KEYS, CROSS_FILE_DEPENDENCY_COLLECTORS, CROSS_FILE_RULE_IDS, FRAMEWORK_SPECIFIC_RULE_KEYS, FRAMEWORK_TOKENS, MOTION_LIBRARY_PACKAGES, REACT_COMPILER_RULES, REACT_DOCTOR_RULES, classifySecurityScanFile, collectCrossFileDependencyProbes, resetManifestCaches, shouldReadSecurityScanContent } from "oxlint-plugin-react-doctor";
12
11
  import ts from "typescript";
12
+ import reactDoctorPlugin, { ALL_REACT_DOCTOR_RULE_KEYS, CROSS_FILE_DEPENDENCY_COLLECTORS, CROSS_FILE_RULE_IDS, FRAMEWORK_SPECIFIC_RULE_KEYS, MOTION_LIBRARY_PACKAGES, REACT_COMPILER_RULES, REACT_DOCTOR_RULES, classifySecurityScanFile, collectCrossFileDependencyProbes, resetManifestCaches, shouldReadSecurityScanContent } from "oxlint-plugin-react-doctor";
13
13
  import * as OS from "node:os";
14
14
  import os, { tmpdir } from "node:os";
15
15
  import { parseJSON5 } from "confbox";
@@ -22411,45 +22411,12 @@ var Diagnostic = class extends Class("Diagnostic")({
22411
22411
  relatedLocations: optional(ArraySchema(DiagnosticRelatedLocation)),
22412
22412
  fixGroupId: optional(String$1)
22413
22413
  }) {};
22414
- var JsonReportDiagnosticV3 = class extends Class("JsonReportDiagnosticV3")({
22415
- id: String$1,
22416
- normalizedFilePath: String$1,
22417
- filePath: String$1,
22418
- plugin: String$1,
22419
- rule: String$1,
22420
- severity: Severity,
22421
- tags: ArraySchema(String$1),
22422
- title: optional(String$1),
22423
- message: String$1,
22424
- help: String$1,
22425
- url: optional(String$1),
22426
- line: Number$1,
22427
- column: Number$1,
22428
- offset: optional(Number$1),
22429
- length: optional(Number$1),
22430
- endLine: optional(Number$1),
22431
- endColumn: optional(Number$1),
22432
- category: String$1,
22433
- matchByOccurrence: optional(Boolean$1),
22434
- fileContext: optional(Literals(["test", "story"])),
22435
- suppressionHint: optional(String$1),
22436
- relatedLocations: optional(ArraySchema(DiagnosticRelatedLocation)),
22437
- fixGroupId: optional(String$1)
22438
- }) {};
22439
- /**
22440
- * Deterministic identity string for a diagnostic. Same diagnostic
22441
- * across two scans yields the same identity; lets baselines,
22442
- * suppression files, content-hash caches, and IDE "ignore this"
22443
- * actions all key off one shared shape.
22444
- */
22445
- const buildDiagnosticIdentity = (input) => `${input.filePath}::${input.line}:${input.column}::${input.plugin}/${input.rule}`;
22446
22414
  const JsonReportMode = Literals([
22447
22415
  "full",
22448
22416
  "diff",
22449
22417
  "staged",
22450
22418
  "baseline"
22451
22419
  ]);
22452
- const Framework = Literals(FRAMEWORK_TOKENS);
22453
22420
  var JsonReportSummary = class extends Class("JsonReportSummary")({
22454
22421
  errorCount: Number$1,
22455
22422
  warningCount: Number$1,
@@ -22487,22 +22454,13 @@ var JsonReportProjectEntry = class extends Class("JsonReportProjectEntry")({
22487
22454
  scannedFileCount: optional(Number$1),
22488
22455
  elapsedMilliseconds: Number$1
22489
22456
  }) {};
22490
- var JsonReportProjectEntryV3 = class extends Class("JsonReportProjectEntryV3")({
22491
- directory: String$1,
22492
- packageRoot: String$1,
22493
- framework: Framework,
22494
- project: Unknown,
22495
- diagnostics: ArraySchema(JsonReportDiagnosticV3),
22496
- score: Unknown,
22497
- skippedChecks: ArraySchema(String$1),
22498
- skippedCheckReasons: optional(Record$1(String$1, String$1)),
22499
- analyzedFiles: ArraySchema(String$1),
22500
- analyzedFileCount: Number$1,
22501
- complete: Boolean$1,
22502
- scannedFileCount: optional(Number$1),
22503
- elapsedMilliseconds: Number$1
22504
- }) {};
22505
- /** Original full, diff, and staged report contract. */
22457
+ /**
22458
+ * Versioned JsonReport schema. `JsonReport` is a `Schema.Union` so we
22459
+ * can add `schemaVersion: 2` later as one new union member without
22460
+ * breaking existing v1 consumers (the GitHub Action keys off the
22461
+ * version literal). Today's union is single-arm; the shape is
22462
+ * intentional.
22463
+ */
22506
22464
  var JsonReportV1 = class extends Class("JsonReportV1")({
22507
22465
  schemaVersion: Literal(1),
22508
22466
  version: String$1,
@@ -22563,27 +22521,7 @@ var JsonReportV2 = class extends Class("JsonReportV2")({
22563
22521
  elapsedMilliseconds: Number$1,
22564
22522
  error: NullOr(JsonReportError)
22565
22523
  }) {};
22566
- var JsonReportV3 = class extends Class("JsonReportV3")({
22567
- schemaVersion: Literal(3),
22568
- version: String$1,
22569
- ok: Boolean$1,
22570
- directory: String$1,
22571
- mode: JsonReportMode,
22572
- baselineDegraded: optional(Boolean$1),
22573
- reactDetected: optional(Boolean$1),
22574
- diff: NullOr(JsonReportDiffInfo),
22575
- baseline: optional(JsonReportBaseline),
22576
- projects: ArraySchema(JsonReportProjectEntryV3),
22577
- diagnostics: ArraySchema(JsonReportDiagnosticV3),
22578
- summary: JsonReportSummary,
22579
- elapsedMilliseconds: Number$1,
22580
- error: NullOr(JsonReportError)
22581
- }) {};
22582
- Union([
22583
- JsonReportV1,
22584
- JsonReportV2,
22585
- JsonReportV3
22586
- ]);
22524
+ Union([JsonReportV1, JsonReportV2]);
22587
22525
  //#endregion
22588
22526
  //#region ../../node_modules/.pnpm/semver@7.7.4/node_modules/semver/internal/constants.js
22589
22527
  var require_constants$1 = /* @__PURE__ */ __commonJSMin$1(((exports, module) => {
@@ -37147,22 +37085,6 @@ const isPackageJsonReanimatedAware = (packageJson) => {
37147
37085
  };
37148
37086
  return Object.hasOwn(allDependencies, REANIMATED_DEPENDENCY_NAME$1);
37149
37087
  };
37150
- const SSR_DEPENDENCY_NAMES = new Set([
37151
- "@react-router/cloudflare",
37152
- "@react-router/node",
37153
- "@react-router/serve",
37154
- "vike",
37155
- "vite-plugin-ssr"
37156
- ]);
37157
- const isPackageJsonSsrAware = (packageJson) => {
37158
- const allDependencies = {
37159
- ...packageJson.peerDependencies,
37160
- ...packageJson.dependencies,
37161
- ...packageJson.devDependencies,
37162
- ...packageJson.optionalDependencies
37163
- };
37164
- return Object.keys(allDependencies).some((packageName) => SSR_DEPENDENCY_NAMES.has(packageName));
37165
- };
37166
37088
  const getWorkspacePatterns = (rootDirectory, packageJson) => {
37167
37089
  const pnpmPatterns = parsePnpmWorkspacePatterns(rootDirectory);
37168
37090
  if (pnpmPatterns.length > 0) return pnpmPatterns;
@@ -37303,7 +37225,6 @@ const evaluateManifestFacts = (facts, packageJson, directory) => {
37303
37225
  }
37304
37226
  facts.hasReactNativeAwarePackage = facts.hasReactNativeAwarePackage || isPackageJsonReactNativeAware(packageJson);
37305
37227
  facts.hasReanimatedAwarePackage = facts.hasReanimatedAwarePackage || isPackageJsonReanimatedAware(packageJson);
37306
- facts.hasSsrDependency = facts.hasSsrDependency || isPackageJsonSsrAware(packageJson);
37307
37228
  };
37308
37229
  const collectWorkspaceFacts = (rootDirectory, rootPackageJson, { collectReactGroup }) => {
37309
37230
  const facts = {
@@ -37325,7 +37246,6 @@ const collectWorkspaceFacts = (rootDirectory, rootPackageJson, { collectReactGro
37325
37246
  },
37326
37247
  hasReactNativeAwarePackage: false,
37327
37248
  hasReanimatedAwarePackage: false,
37328
- hasSsrDependency: false,
37329
37249
  reanimatedVersion: null
37330
37250
  };
37331
37251
  evaluateManifestFacts(facts, rootPackageJson, rootDirectory);
@@ -37562,7 +37482,6 @@ const discoverProjectWithoutPackageJson = (directory) => {
37562
37482
  hasTypeScript: hasOwnTsConfig,
37563
37483
  hasReactCompiler: false,
37564
37484
  hasTanStackQuery: false,
37565
- hasSsrDependency: false,
37566
37485
  preactVersion: null,
37567
37486
  preactMajorVersion: null,
37568
37487
  hasReactNativeWorkspace: false,
@@ -37682,7 +37601,6 @@ const discoverProject = (directory) => {
37682
37601
  hasTypeScript,
37683
37602
  hasReactCompiler: detectReactCompiler(directory, packageJson),
37684
37603
  hasTanStackQuery: hasTanStackQuery(packageJson),
37685
- hasSsrDependency: workspaceFacts.hasSsrDependency,
37686
37604
  preactVersion,
37687
37605
  preactMajorVersion: parseReactMajor(preactVersion),
37688
37606
  hasReactNativeWorkspace,
@@ -40536,12 +40454,6 @@ const CLIENT_ONLY_FRAMEWORKS = new Set([
40536
40454
  "react-native",
40537
40455
  "expo"
40538
40456
  ]);
40539
- const SSR_FRAMEWORKS = new Set([
40540
- "nextjs",
40541
- "remix",
40542
- "gatsby",
40543
- "tanstack-start"
40544
- ]);
40545
40457
  const addMajorLadder = (capabilities, name, major, earliest, latest) => {
40546
40458
  if (major === null) return;
40547
40459
  const cappedMajor = Math.min(major, latest);
@@ -40554,7 +40466,6 @@ const buildCapabilities = (project) => {
40554
40466
  if (project.framework === "expo" || project.framework === "react-native" || project.hasReactNativeWorkspace) capabilities.add("react-native");
40555
40467
  if (project.expoVersion !== null) capabilities.add("expo");
40556
40468
  if ((project.framework === "nextjs" || project.framework === "tanstack-start" || project.framework === "remix") && !project.isStaticExport) capabilities.add("server-actions");
40557
- if (SSR_FRAMEWORKS.has(project.framework) || project.hasSsrDependency) capabilities.add("ssr");
40558
40469
  if (CLIENT_ONLY_FRAMEWORKS.has(project.framework)) capabilities.add("client-only");
40559
40470
  if (project.isStaticExport) capabilities.add("nextjs:static-export");
40560
40471
  if (project.nextjsMajorVersion !== null && project.nextjsMajorVersion >= 15) capabilities.add("nextjs:15");
@@ -43975,8 +43886,6 @@ const spawnLintBatches = async (input) => {
43975
43886
  const reasonHint = firstDropReason ? ` — first failure: ${firstDropReason}` : "";
43976
43887
  reportSkippedFiles(droppedFiles, (fileListPreview) => `${droppedFiles.length} file(s) failed to lint and were skipped (${fileListPreview})${reasonHint}`);
43977
43888
  reportSkippedFiles(outcome.deadlineSkippedFiles, (fileListPreview) => `${outcome.deadlineSkippedFiles.length} file(s) skipped — max scan duration reached before they were linted (${fileListPreview})`);
43978
- const unavailableFiles = new Set([...droppedFiles, ...outcome.deadlineSkippedFiles]);
43979
- input.onAnalyzedFiles?.([...new Set(fileBatches.flat().filter((filePath) => !unavailableFiles.has(filePath)))].sort());
43980
43889
  return dedupeDiagnostics(diagnostics);
43981
43890
  };
43982
43891
  let didValidate = false;
@@ -44233,18 +44142,12 @@ const reactHooksJsPluginDropNote = (error) => {
44233
44142
  * 6. always restore disable directives + clean up the temp dir
44234
44143
  */
44235
44144
  const runOxlint = async (options) => {
44236
- const { rootDirectory, project, includePaths, nodeBinaryPath = process.execPath, customRulesOnly = false, respectInlineDisables = true, adoptExistingLintConfig = true, ignoredTags = /* @__PURE__ */ new Set(), userConfig, configSourceDirectory = rootDirectory, onPartialFailure, onFileCoverage, perFileLintCacheEnabled = false, sidecarLintCacheEnabled = false, onCacheStats, onSidecarStats, spawnTimeoutMs, outputMaxBytes, lintBatchOrdering = "cost" } = options;
44145
+ const { rootDirectory, project, includePaths, nodeBinaryPath = process.execPath, customRulesOnly = false, respectInlineDisables = true, adoptExistingLintConfig = true, ignoredTags = /* @__PURE__ */ new Set(), userConfig, configSourceDirectory = rootDirectory, onPartialFailure, perFileLintCacheEnabled = false, sidecarLintCacheEnabled = false, onCacheStats, onSidecarStats, spawnTimeoutMs, outputMaxBytes, lintBatchOrdering = "cost" } = options;
44237
44146
  const serverAuthFunctionNames = Array.isArray(userConfig?.serverAuthFunctionNames) ? userConfig.serverAuthFunctionNames.filter((entry) => typeof entry === "string" && entry.length > 0) : void 0;
44238
44147
  const severityControls = buildRuleSeverityControls(userConfig);
44239
44148
  validateRuleRegistration();
44240
44149
  resetManifestCaches();
44241
- if (includePaths !== void 0 && includePaths.length === 0) {
44242
- onFileCoverage?.({
44243
- candidateFiles: [],
44244
- analyzedFiles: []
44245
- });
44246
- return [];
44247
- }
44150
+ if (includePaths !== void 0 && includePaths.length === 0) return [];
44248
44151
  const pluginPath = resolvePluginPath();
44249
44152
  const extendsPaths = (adoptExistingLintConfig && !customRulesOnly ? detectUserLintConfigPaths(rootDirectory) : []).filter(canOxlintExtendConfig);
44250
44153
  const userPlugins = resolveUserPlugins(userConfig?.plugins, configSourceDirectory);
@@ -44305,7 +44208,6 @@ const runOxlint = async (options) => {
44305
44208
  const runConfigOverFiles = async (buildConfigForPass, configFileName, files, fileProgress) => {
44306
44209
  if (files.length === 0) return {
44307
44210
  diagnostics: [],
44308
- analyzedFiles: [],
44309
44211
  didDropReactHooksJsPlugin: false,
44310
44212
  hadPartialFailure: false
44311
44213
  };
@@ -44317,32 +44219,24 @@ const runOxlint = async (options) => {
44317
44219
  const passConfigPath = Path.join(configDirectory, configFileName);
44318
44220
  const passBaseArgs = makeBaseArgs(passConfigPath);
44319
44221
  const passFileBatches = buildFileBatches(passBaseArgs, files);
44320
- let analyzedFiles = [];
44321
- const spawnPass = () => {
44322
- analyzedFiles = [];
44323
- return spawnLintBatches({
44324
- baseArgs: passBaseArgs,
44325
- fileBatches: passFileBatches,
44326
- rootDirectory,
44327
- nodeBinaryPath,
44328
- project,
44329
- onPartialFailure: reportPartialFailure,
44330
- onAnalyzedFiles: (filePaths) => {
44331
- analyzedFiles = filePaths;
44332
- },
44333
- onFileProgress: fileProgress,
44334
- spawnTimeoutMs,
44335
- outputMaxBytes,
44336
- concurrency: options.concurrency,
44337
- signal: options.signal,
44338
- deadlineEpochMs: options.deadlineEpochMs
44339
- });
44340
- };
44222
+ const spawnPass = () => spawnLintBatches({
44223
+ baseArgs: passBaseArgs,
44224
+ fileBatches: passFileBatches,
44225
+ rootDirectory,
44226
+ nodeBinaryPath,
44227
+ project,
44228
+ onPartialFailure: reportPartialFailure,
44229
+ onFileProgress: fileProgress,
44230
+ spawnTimeoutMs,
44231
+ outputMaxBytes,
44232
+ concurrency: options.concurrency,
44233
+ signal: options.signal,
44234
+ deadlineEpochMs: options.deadlineEpochMs
44235
+ });
44341
44236
  writeOxlintConfig(passConfigPath, buildConfigForPass({}));
44342
44237
  try {
44343
44238
  return {
44344
44239
  diagnostics: await spawnPass(),
44345
- analyzedFiles,
44346
44240
  didDropReactHooksJsPlugin: false,
44347
44241
  hadPartialFailure
44348
44242
  };
@@ -44354,7 +44248,6 @@ const runOxlint = async (options) => {
44354
44248
  reportPartialFailure(reactHooksJsDropNote);
44355
44249
  return {
44356
44250
  diagnostics,
44357
- analyzedFiles,
44358
44251
  didDropReactHooksJsPlugin: true,
44359
44252
  hadPartialFailure
44360
44253
  };
@@ -44430,7 +44323,6 @@ const runOxlint = async (options) => {
44430
44323
  const missFileSet = new Set(missFiles);
44431
44324
  const hitFiles = candidateFiles.filter((candidateFile) => !missFileSet.has(candidateFile));
44432
44325
  const sidecarReplayedDiagnostics = [];
44433
- const sidecarReplayedFiles = [];
44434
44326
  const sidecarLintFiles = [];
44435
44327
  if (sidecarCache === null) sidecarLintFiles.push(...hitFiles);
44436
44328
  else {
@@ -44438,10 +44330,8 @@ const runOxlint = async (options) => {
44438
44330
  for (const hitFile of hitFiles) {
44439
44331
  const cacheKey = cacheKeyByFile.get(hitFile);
44440
44332
  const entry = cacheKey === void 0 ? null : sidecarCache.lookup(cacheKey);
44441
- if (entry !== null && entry.probes.every((probe) => probeAnswers.answerFor(probe.kind, probe.path) === probe.answer)) {
44442
- sidecarReplayedFiles.push(hitFile);
44443
- sidecarReplayedDiagnostics.push(...entry.diagnostics);
44444
- } else sidecarLintFiles.push(hitFile);
44333
+ if (entry !== null && entry.probes.every((probe) => probeAnswers.answerFor(probe.kind, probe.path) === probe.answer)) sidecarReplayedDiagnostics.push(...entry.diagnostics);
44334
+ else sidecarLintFiles.push(hitFile);
44445
44335
  if (performance.now() - verifySliceStartedAt >= 12) {
44446
44336
  await yieldToEventLoop();
44447
44337
  verifySliceStartedAt = performance.now();
@@ -44467,7 +44357,6 @@ const runOxlint = async (options) => {
44467
44357
  sidecarRuleIdFilter: new Set(unboundedSidecarRuleIds)
44468
44358
  }), "oxlintrc.sidecar-unbounded.json", hitFiles, void 0) : {
44469
44359
  diagnostics: [],
44470
- analyzedFiles: [],
44471
44360
  didDropReactHooksJsPlugin: false,
44472
44361
  hadPartialFailure: false
44473
44362
  };
@@ -44498,15 +44387,6 @@ const runOxlint = async (options) => {
44498
44387
  probesByFile: await missProbesTask
44499
44388
  }]
44500
44389
  });
44501
- const analyzedFileSet = new Set(fullResult.analyzedFiles);
44502
- const boundedSidecarAnalyzedFileSet = new Set(boundedSidecarResult.analyzedFiles);
44503
- const unboundedSidecarAnalyzedFileSet = new Set(unboundedSidecarResult.analyzedFiles);
44504
- const sidecarReplayedFileSet = new Set(sidecarReplayedFiles);
44505
- for (const hitFile of hitFiles) if (useSidecarCache ? (sidecarReplayedFileSet.has(hitFile) || boundedSidecarAnalyzedFileSet.has(hitFile)) && (unboundedSidecarRuleIds.length === 0 || unboundedSidecarAnalyzedFileSet.has(hitFile)) : boundedSidecarAnalyzedFileSet.has(hitFile)) analyzedFileSet.add(hitFile);
44506
- onFileCoverage?.({
44507
- candidateFiles,
44508
- analyzedFiles: candidateFiles.filter((candidateFile) => analyzedFileSet.has(candidateFile))
44509
- });
44510
44390
  return dedupeDiagnostics([
44511
44391
  ...replayedDiagnostics,
44512
44392
  ...fullResult.diagnostics,
@@ -44517,7 +44397,6 @@ const runOxlint = async (options) => {
44517
44397
  }
44518
44398
  const baseArgs = makeBaseArgs(configPath);
44519
44399
  const fileBatches = buildFileBatches(baseArgs, candidateFiles);
44520
- let analyzedFiles = [];
44521
44400
  const runBatches = () => spawnLintBatches({
44522
44401
  baseArgs,
44523
44402
  fileBatches,
@@ -44525,9 +44404,6 @@ const runOxlint = async (options) => {
44525
44404
  nodeBinaryPath,
44526
44405
  project,
44527
44406
  onPartialFailure,
44528
- onAnalyzedFiles: (filePaths) => {
44529
- analyzedFiles = filePaths;
44530
- },
44531
44407
  onFileProgress: options.onFileProgress,
44532
44408
  spawnTimeoutMs,
44533
44409
  outputMaxBytes,
@@ -44537,12 +44413,7 @@ const runOxlint = async (options) => {
44537
44413
  });
44538
44414
  writeOxlintConfig(configPath, buildConfig({ extendsPaths }));
44539
44415
  try {
44540
- const diagnostics = await runBatches();
44541
- onFileCoverage?.({
44542
- candidateFiles,
44543
- analyzedFiles
44544
- });
44545
- return diagnostics;
44416
+ return await runBatches();
44546
44417
  } catch (error) {
44547
44418
  const reactHooksJsDropNote = reactHooksJsPluginDropNote(error);
44548
44419
  if (reactHooksJsDropNote !== null) {
@@ -44552,20 +44423,11 @@ const runOxlint = async (options) => {
44552
44423
  }));
44553
44424
  const diagnostics = await runBatches();
44554
44425
  onPartialFailure?.(reactHooksJsDropNote);
44555
- onFileCoverage?.({
44556
- candidateFiles,
44557
- analyzedFiles
44558
- });
44559
44426
  return diagnostics;
44560
44427
  }
44561
44428
  if (extendsPaths.length === 0) throw error;
44562
44429
  writeOxlintConfig(configPath, buildConfig({ extendsPaths: [] }));
44563
- const diagnostics = await runBatches();
44564
- onFileCoverage?.({
44565
- candidateFiles,
44566
- analyzedFiles
44567
- });
44568
- return diagnostics;
44430
+ return await runBatches();
44569
44431
  }
44570
44432
  } finally {
44571
44433
  restoreDisableDirectives();
@@ -44645,7 +44507,6 @@ var Linter = class Linter extends Service()("react-doctor/Linter") {
44645
44507
  onPartialFailure: (reason) => {
44646
44508
  collectedFailures.push(reason);
44647
44509
  },
44648
- onFileCoverage: input.onFileCoverage,
44649
44510
  onFileProgress: input.onFileProgress,
44650
44511
  perFileLintCacheEnabled,
44651
44512
  sidecarLintCacheEnabled,
@@ -45353,7 +45214,6 @@ const resolveGithubActionsScoreMetadata = (environment = process.env) => {
45353
45214
  ...actorAssociation !== void 0 ? { githubActorAssociation: actorAssociation } : {}
45354
45215
  };
45355
45216
  };
45356
- const toNormalizedRelativePath = (filePath, rootDirectory) => Path.relative(Path.resolve(rootDirectory), Path.resolve(rootDirectory, filePath)).replaceAll("\\", "/") || ".";
45357
45217
  const NO_HOOKS = {
45358
45218
  beforeLint: () => void_,
45359
45219
  afterLint: () => void_
@@ -45452,7 +45312,7 @@ const runInspect = (input, hooks = {}) => gen(function* () {
45452
45312
  repo
45453
45313
  }).pipe(orElseSucceed(() => null)) : succeed$2(null));
45454
45314
  const lintIncludePaths = (input.skipJsxIncludeFilter ? input.includePaths.length > 0 ? [...input.includePaths] : void 0 : computeExplicitLintIncludePaths([...input.includePaths], project)) ?? resolveLintIncludePaths(scanDirectory, resolvedConfig.config, project);
45455
- const fallbackScannedFilePaths = input.suppressScanSummary ? (lintIncludePaths ?? (yield* filesService.listSourceFiles(scanDirectory))).map((relativePath) => Path.resolve(scanDirectory, relativePath)) : [];
45315
+ const scannedFilePaths = input.suppressScanSummary ? (lintIncludePaths ?? (yield* filesService.listSourceFiles(scanDirectory))).map((relativePath) => Path.resolve(scanDirectory, relativePath)) : [];
45456
45316
  const beforeLint = hooks.beforeLint ?? NO_HOOKS.beforeLint;
45457
45317
  const afterLint = hooks.afterLint ?? NO_HOOKS.afterLint;
45458
45318
  yield* beforeLint(project, lintIncludePaths ?? void 0);
@@ -45557,7 +45417,6 @@ const runInspect = (input, hooks = {}) => gen(function* () {
45557
45417
  let deadCodeCacheHit = null;
45558
45418
  let deadCodeSummaryCacheHits = null;
45559
45419
  let deadCodeSummaryCacheMisses = null;
45560
- const lintFileCoverageState = { value: null };
45561
45420
  const baseLintStream = linterService.run({
45562
45421
  rootDirectory: scanDirectory,
45563
45422
  project,
@@ -45573,9 +45432,6 @@ const runInspect = (input, hooks = {}) => gen(function* () {
45573
45432
  lastReportedTotalFileCount = totalFileCount;
45574
45433
  runSync(scanProgress.update(`Scanning files (${scannedFileCount}/${totalFileCount})${workerCountSuffix}...`));
45575
45434
  },
45576
- onFileCoverage: (coverage) => {
45577
- lintFileCoverageState.value = coverage;
45578
- },
45579
45435
  onCacheStats: (cacheHitFileCount, totalConsideredFileCount) => {
45580
45436
  lintCacheHitFileCount = cacheHitFileCount;
45581
45437
  lintCacheTotalFileCount = totalConsideredFileCount;
@@ -45606,10 +45462,7 @@ const runInspect = (input, hooks = {}) => gen(function* () {
45606
45462
  const lintFailureState = yield* get$2(lintFailure);
45607
45463
  yield* afterLint(lintFailureState.didFail);
45608
45464
  if (lintFailureState.didFail) yield* scanProgress.fail(formatLintFailText(lintFailureState.reasonTag, process.version));
45609
- const candidateFiles = lintFileCoverageState.value === null ? [] : [...new Set(lintFileCoverageState.value.candidateFiles.map((filePath) => toNormalizedRelativePath(filePath, scanDirectory)))];
45610
- const analyzedFiles = lintFileCoverageState.value === null ? [] : [...new Set(lintFileCoverageState.value.analyzedFiles.map((filePath) => toNormalizedRelativePath(filePath, scanDirectory)))].sort();
45611
- const totalFileCount = candidateFiles.length || lastReportedTotalFileCount || (lintIncludePaths?.length ?? project.sourceFileCount);
45612
- const scannedFilePaths = input.suppressScanSummary ? candidateFiles.length > 0 ? candidateFiles.map((filePath) => Path.resolve(scanDirectory, filePath)) : fallbackScannedFilePaths : [];
45465
+ const totalFileCount = lastReportedTotalFileCount || (lintIncludePaths?.length ?? project.sourceFileCount);
45613
45466
  const scannedFilesLabel = `${totalFileCount} ${totalFileCount === 1 ? "file" : "files"}`;
45614
45467
  let deadCodeCollected = [];
45615
45468
  if (lintFailureState.didFail) {
@@ -45691,7 +45544,6 @@ const runInspect = (input, hooks = {}) => gen(function* () {
45691
45544
  deadCodeOverlapped: shouldOverlapDeadCode,
45692
45545
  scannedFileCount: totalFileCount,
45693
45546
  scannedFilePaths,
45694
- analyzedFiles,
45695
45547
  scanElapsedMilliseconds,
45696
45548
  scanConcurrency,
45697
45549
  supplyChainOverlapTimedOut: supplyChainResult.timedOut,
@@ -45967,7 +45819,7 @@ const buildJsonReportError = (input) => {
45967
45819
  sentryEventId
45968
45820
  };
45969
45821
  return {
45970
- schemaVersion: 3,
45822
+ schemaVersion: 1,
45971
45823
  version: input.version,
45972
45824
  ok: false,
45973
45825
  directory: input.directory,
@@ -46012,7 +45864,6 @@ const summarizeDiagnostics = (diagnostics, worstScore = null, worstScoreLabel =
46012
45864
  * React-runtime rule family was gated off for the project.
46013
45865
  */
46014
45866
  const hasReactRuntime = (project) => project.reactVersion !== null || project.preactVersion !== null;
46015
- const isScanComplete = (input) => input.analyzedFileCount !== void 0 && input.scannedFileCount !== void 0 && input.skippedCheckCount === 0 && input.skippedCheckReasonCount === 0 && input.analyzedFileCount === input.scannedFileCount;
46016
45867
  const toJsonDiff = (diff) => {
46017
45868
  if (!diff) return null;
46018
45869
  return {
@@ -46035,68 +45886,21 @@ const findWorstScoredProject = (projects) => {
46035
45886
  }
46036
45887
  return worst;
46037
45888
  };
46038
- const toJsonReportDiagnostic = (diagnostic, projectRoot, reportRoot) => {
46039
- const normalizedFilePath = toNormalizedRelativePath(diagnostic.filePath, projectRoot);
46040
- const reportRelativeFilePath = toNormalizedRelativePath(Path.resolve(projectRoot, diagnostic.filePath), reportRoot);
46041
- const ruleIdentity = getDiagnosticRuleIdentity(diagnostic);
46042
- return {
46043
- ...diagnostic,
46044
- id: buildDiagnosticIdentity({
46045
- filePath: reportRelativeFilePath,
46046
- line: diagnostic.line,
46047
- column: diagnostic.column,
46048
- plugin: diagnostic.plugin,
46049
- rule: diagnostic.rule
46050
- }),
46051
- normalizedFilePath,
46052
- category: ruleIdentity.category,
46053
- tags: [...new Set(ruleIdentity.tags)].sort()
46054
- };
46055
- };
46056
45889
  const buildJsonReport = (input) => {
46057
- const projects = input.scans.map(({ directory, result }) => {
46058
- const skippedChecks = result.skippedChecks ?? [];
46059
- const analyzedFiles = [...new Set((result.analyzedFiles ?? []).map((filePath) => toNormalizedRelativePath(filePath, result.project.rootDirectory)))].sort();
46060
- const scannedFileCount = result.scannedFileCount ?? result.project.sourceFileCount;
46061
- return {
46062
- directory,
46063
- packageRoot: result.project.rootDirectory,
46064
- framework: result.project.framework,
46065
- project: result.project,
46066
- diagnostics: result.diagnostics.map((diagnostic) => toJsonReportDiagnostic(diagnostic, result.project.rootDirectory, input.directory)),
46067
- score: result.score,
46068
- skippedChecks,
46069
- ...result.skippedCheckReasons ? { skippedCheckReasons: result.skippedCheckReasons } : {},
46070
- analyzedFiles,
46071
- analyzedFileCount: analyzedFiles.length,
46072
- complete: isScanComplete({
46073
- analyzedFileCount: result.analyzedFiles === void 0 ? void 0 : analyzedFiles.length,
46074
- scannedFileCount,
46075
- skippedCheckCount: skippedChecks.length,
46076
- skippedCheckReasonCount: Object.keys(result.skippedCheckReasons ?? {}).length
46077
- }),
46078
- ...typeof result.scannedFileCount === "number" ? { scannedFileCount } : {},
46079
- elapsedMilliseconds: result.elapsedMilliseconds
46080
- };
46081
- });
45890
+ const projects = input.scans.map(({ directory, result }) => ({
45891
+ directory,
45892
+ project: result.project,
45893
+ diagnostics: result.diagnostics,
45894
+ score: result.score,
45895
+ skippedChecks: result.skippedChecks,
45896
+ ...result.skippedCheckReasons ? { skippedCheckReasons: result.skippedCheckReasons } : {},
45897
+ ...typeof result.scannedFileCount === "number" ? { scannedFileCount: result.scannedFileCount } : {},
45898
+ elapsedMilliseconds: result.elapsedMilliseconds
45899
+ }));
46082
45900
  const flattenedDiagnostics = projects.flatMap((entry) => entry.diagnostics);
46083
45901
  const worstScoredProject = findWorstScoredProject(projects);
46084
- const diagnosticSummary = summarizeDiagnostics(flattenedDiagnostics, worstScoredProject?.score?.score ?? null, worstScoredProject?.score?.label ?? null);
46085
- const affectedFileCount = projects.reduce((totalAffectedFileCount, project) => totalAffectedFileCount + new Set(project.diagnostics.map((diagnostic) => diagnostic.normalizedFilePath)).size, 0);
46086
- const summary = {
46087
- ...diagnosticSummary,
46088
- affectedFileCount
46089
- };
46090
- return {
46091
- schemaVersion: 3,
46092
- mode: input.baseline !== void 0 ? "baseline" : input.baselineDegraded && input.mode === "baseline" ? "diff" : input.mode,
46093
- ...input.baseline ? { baseline: {
46094
- baseRef: input.baseline.baseRef,
46095
- newCount: summary.totalDiagnosticCount,
46096
- fixedCount: input.baseline.fixedCount,
46097
- baseTotalCount: input.baseline.baseTotalCount
46098
- } } : {},
46099
- ...input.baselineDegraded ? { baselineDegraded: true } : {},
45902
+ const summary = summarizeDiagnostics(flattenedDiagnostics, worstScoredProject?.score?.score ?? null, worstScoredProject?.score?.label ?? null);
45903
+ const shared = {
46100
45904
  ...input.scans.length > 0 ? { reactDetected: input.scans.some((scan) => hasReactRuntime(scan.result.project)) } : {},
46101
45905
  version: input.version,
46102
45906
  ok: true,
@@ -46108,26 +45912,39 @@ const buildJsonReport = (input) => {
46108
45912
  elapsedMilliseconds: input.totalElapsedMilliseconds,
46109
45913
  error: null
46110
45914
  };
45915
+ if (input.baseline) return {
45916
+ schemaVersion: 2,
45917
+ mode: "baseline",
45918
+ baseline: {
45919
+ baseRef: input.baseline.baseRef,
45920
+ newCount: summary.totalDiagnosticCount,
45921
+ fixedCount: input.baseline.fixedCount,
45922
+ baseTotalCount: input.baseline.baseTotalCount
45923
+ },
45924
+ ...shared
45925
+ };
45926
+ return {
45927
+ schemaVersion: 1,
45928
+ mode: input.mode,
45929
+ ...input.baselineDegraded ? { baselineDegraded: true } : {},
45930
+ ...shared
45931
+ };
46111
45932
  };
46112
45933
  /**
46113
45934
  * Single source of truth for the skipped-check accounting shared by the
46114
45935
  * CLI renderer (`react-doctor/src/inspect.ts → finalizeAndRender`) and the
46115
45936
  * programmatic shell (`@react-doctor/api → diagnose()`). Both surface a
46116
- * failed or partial analysis pass instead of a false "all clear", so the
45937
+ * failed lint / dead-code pass instead of a false "all clear", so the
46117
45938
  * branch logic lives here once.
46118
45939
  */
46119
45940
  const buildSkippedChecks = (input) => {
46120
45941
  const skippedChecks = [];
46121
45942
  if (input.didLintFail) skippedChecks.push("lint");
46122
45943
  if (input.didDeadCodeFail) skippedChecks.push("dead-code");
46123
- if (input.supplyChainOverlapTimedOut) skippedChecks.push("supply-chain");
46124
- if (input.securityScanFailed) skippedChecks.push("security-scan");
46125
45944
  const skippedCheckReasons = {};
46126
45945
  if (input.didLintFail && input.lintFailureReason !== null) skippedCheckReasons.lint = input.lintFailureReason;
46127
45946
  else if (input.lintPartialFailures.length > 0) skippedCheckReasons["lint:partial"] = input.lintPartialFailures.join("; ");
46128
45947
  if (input.didDeadCodeFail && input.deadCodeFailureReason !== null) skippedCheckReasons["dead-code"] = input.deadCodeFailureReason;
46129
- if (input.supplyChainOverlapTimedOut) skippedCheckReasons["supply-chain"] = "Supply-chain analysis timed out and was skipped.";
46130
- if (input.securityScanFailed) skippedCheckReasons["security-scan"] = "Security scan failed and was skipped.";
46131
45948
  return {
46132
45949
  skippedChecks,
46133
45950
  skippedCheckReasons
@@ -46542,7 +46359,7 @@ const GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS = 5e3;
46542
46359
  const CI_TRUST_COMPANIES = "PayPal, Rippling, and Alibaba";
46543
46360
  const WELCOME_EXPLANATION_HOLD_MS = 1e3;
46544
46361
  const CATEGORY_COUNTUP_SETTLE_HOLD_MS = 1e3;
46545
- const INTERNAL_ERROR_JSON_FALLBACK = "{\"schemaVersion\":3,\"version\":\"unknown\",\"ok\":false,\"directory\":\"\",\"mode\":\"full\",\"diff\":null,\"projects\":[],\"diagnostics\":[],\"summary\":{\"errorCount\":0,\"warningCount\":0,\"affectedFileCount\":0,\"totalDiagnosticCount\":0,\"score\":null,\"scoreLabel\":null},\"elapsedMilliseconds\":0,\"error\":{\"message\":\"Internal error\",\"name\":\"Error\",\"chain\":[]}}\n";
46362
+ const INTERNAL_ERROR_JSON_FALLBACK = "{\"schemaVersion\":1,\"ok\":false,\"error\":{\"message\":\"Internal error\",\"name\":\"Error\",\"chain\":[]}}\n";
46546
46363
  const SENTRY_FLUSH_TIMEOUT_MS = 2e3;
46547
46364
  const NANOSECONDS_PER_SECOND = 1000000000n;
46548
46365
  const METRIC = {
@@ -46629,7 +46446,7 @@ const makeNoopConsole = () => ({
46629
46446
  });
46630
46447
  //#endregion
46631
46448
  //#region src/cli/utils/version.ts
46632
- const VERSION = "0.7.4-dev.b47d053";
46449
+ const VERSION = "0.7.4-dev.b686594";
46633
46450
  //#endregion
46634
46451
  //#region src/cli/utils/json-mode.ts
46635
46452
  let context = null;
@@ -46998,13 +46815,13 @@ const isDevVersion = (version) => version === "0.0.0" || version.includes("-");
46998
46815
  * uploads source-map artifacts under, so stack frames symbolicate. Honors the
46999
46816
  * standard `SENTRY_RELEASE` override.
47000
46817
  */
47001
- const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.7.4-dev.b47d053`;
46818
+ const resolveSentryRelease = () => process.env.SENTRY_RELEASE || `react-doctor@0.7.4-dev.b686594`;
47002
46819
  /**
47003
46820
  * Deployment environment shown in Sentry's environment filter. Defaults to
47004
46821
  * `production` for tagged releases and `development` for dev/unbuilt versions,
47005
46822
  * overridable via the standard `SENTRY_ENVIRONMENT` env var.
47006
46823
  */
47007
- const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.7.4-dev.b47d053") ? "development" : "production");
46824
+ const resolveSentryEnvironment = () => process.env.SENTRY_ENVIRONMENT || (isDevVersion("0.7.4-dev.b686594") ? "development" : "production");
47008
46825
  /**
47009
46826
  * Performance-tracing sample rate in `[0, 1]`. Reads `SENTRY_TRACES_SAMPLE_RATE`
47010
46827
  * (set to `0` to disable tracing) and falls back to
@@ -59214,12 +59031,12 @@ const resolveCacheFilePath = (projectDirectory) => path.join(resolveReactDoctorC
59214
59031
  const readPersistedCache = (cacheFilePath) => {
59215
59032
  try {
59216
59033
  const parsed = JSON.parse(fs.readFileSync(cacheFilePath, "utf8"));
59217
- if (!isRecord(parsed) || parsed.version !== 5) return {
59218
- version: 5,
59034
+ if (!isRecord(parsed) || parsed.version !== 4) return {
59035
+ version: 4,
59219
59036
  entries: []
59220
59037
  };
59221
59038
  if (!Array.isArray(parsed.entries)) return {
59222
- version: 5,
59039
+ version: 4,
59223
59040
  entries: []
59224
59041
  };
59225
59042
  const entries = [];
@@ -59229,12 +59046,12 @@ const readPersistedCache = (cacheFilePath) => {
59229
59046
  entries.push(entry);
59230
59047
  }
59231
59048
  return {
59232
- version: 5,
59049
+ version: 4,
59233
59050
  entries
59234
59051
  };
59235
59052
  } catch {
59236
59053
  return {
59237
- version: 5,
59054
+ version: 4,
59238
59055
  entries: []
59239
59056
  };
59240
59057
  }
@@ -59296,7 +59113,7 @@ const buildScanResultCacheKey = (input) => {
59296
59113
  if (headSha === null) return null;
59297
59114
  if (stringifyStableJson(input.userConfig) === null) return null;
59298
59115
  const cacheKeyJson = stringifyStableJson({
59299
- schemaVersion: 5,
59116
+ schemaVersion: 4,
59300
59117
  projectIdentity: resolveProjectIdentity(input.projectDirectory),
59301
59118
  headSha,
59302
59119
  worktreeFingerprint,
@@ -59337,7 +59154,7 @@ const createScanResultCache = (projectDirectory) => {
59337
59154
  for (const entry of persistedCache.entries) entries.set(entry.key, entry);
59338
59155
  const persist = () => {
59339
59156
  writePersistedCache(cacheFilePath, {
59340
- version: 5,
59157
+ version: 4,
59341
59158
  entries: [...entries.values()].sort((firstEntry, secondEntry) => secondEntry.createdAtMs - firstEntry.createdAtMs).slice(0, 20)
59342
59159
  });
59343
59160
  };
@@ -59478,7 +59295,6 @@ const buildOutcomeAttributes = (input) => {
59478
59295
  return withNamespace("outcome", {
59479
59296
  status: "error",
59480
59297
  exitCode: 1,
59481
- complete: false,
59482
59298
  knownError: known,
59483
59299
  errorTag: known ? error.reason._tag : error instanceof Error ? error.name : null
59484
59300
  });
@@ -59488,13 +59304,8 @@ const buildOutcomeAttributes = (input) => {
59488
59304
  const blockingLevel = resolveTelemetryBlocking(input.userConfig);
59489
59305
  const gateDiagnostics = filterDiagnosticsForSurface(result.diagnostics, "ciFailure", input.userConfig);
59490
59306
  const wouldBlock = !input.scoreOnly && !input.gateExempt && shouldBlockCi(gateDiagnostics, blockingLevel);
59491
- const complete = isScanComplete({
59492
- analyzedFileCount: result.analyzedFiles?.length,
59493
- scannedFileCount: result.scannedFileCount,
59494
- skippedCheckCount: result.skippedChecks.length,
59495
- skippedCheckReasonCount: Object.keys(result.skippedCheckReasons ?? {}).length
59496
- });
59497
- const isClean = result.diagnostics.length === 0 && complete;
59307
+ const hasSkippedChecks = result.skippedChecks.length > 0;
59308
+ const isClean = result.diagnostics.length === 0 && !hasSkippedChecks;
59498
59309
  const outcome = wouldBlock ? "blocked" : isClean ? "clean" : "ok";
59499
59310
  const firings = summarizeRuleFirings(result.diagnostics);
59500
59311
  const countByRule = /* @__PURE__ */ new Map();
@@ -59544,7 +59355,6 @@ const buildOutcomeAttributes = (input) => {
59544
59355
  wouldBlock,
59545
59356
  blocking: blockingLevel,
59546
59357
  clean: isClean,
59547
- complete,
59548
59358
  skippedChecks: result.skippedChecks.length
59549
59359
  }),
59550
59360
  ...withNamespace("diag", {
@@ -61195,7 +61005,6 @@ const runInspectWithRuntime = async (directory, options, userConfig, hasConfigOv
61195
61005
  directory: output.resolvedDirectory,
61196
61006
  scannedFileCount: output.scannedFileCount,
61197
61007
  scannedFilePaths: output.scannedFilePaths,
61198
- analyzedFiles: output.analyzedFiles,
61199
61008
  scanElapsedMilliseconds: output.scanElapsedMilliseconds,
61200
61009
  scanConcurrency: output.scanConcurrency,
61201
61010
  baselineDelta,
@@ -61250,12 +61059,9 @@ const renderAndRecordScan = async (input) => {
61250
61059
  lintPartialFailures: input.payload.lintPartialFailures,
61251
61060
  didDeadCodeFail: input.payload.didDeadCodeFail,
61252
61061
  deadCodeFailureReason: input.payload.deadCodeFailureReason,
61253
- supplyChainOverlapTimedOut: input.payload.supplyChainOverlapTimedOut,
61254
- securityScanFailed: input.payload.securityScanFailed ?? false,
61255
61062
  directory: input.payload.directory,
61256
61063
  scannedFileCount: input.payload.scannedFileCount,
61257
61064
  scannedFilePaths: input.payload.scannedFilePaths,
61258
- analyzedFiles: input.payload.analyzedFiles ?? [],
61259
61065
  scanElapsedMilliseconds: input.payload.scanElapsedMilliseconds,
61260
61066
  lintCacheHitFileCount: input.lintCacheHitFileCount ?? null,
61261
61067
  lintCacheTotalFileCount: input.lintCacheTotalFileCount ?? null,
@@ -61303,15 +61109,13 @@ const renderAndRecordScan = async (input) => {
61303
61109
  return result;
61304
61110
  };
61305
61111
  const finalizeAndRender = (input) => gen(function* () {
61306
- const { options, elapsedMilliseconds, diagnostics, score, project, userConfig, didLintFail, lintFailureReason, lintPartialFailures, didDeadCodeFail, deadCodeFailureReason, supplyChainOverlapTimedOut, securityScanFailed, directory, scannedFileCount, scannedFilePaths, analyzedFiles, scanElapsedMilliseconds, lintCacheHitFileCount, lintCacheTotalFileCount, lintSidecarReplayedFileCount, lintSidecarTotalFileCount, deadCodeCacheHit, deadCodeSummaryCacheHits, deadCodeSummaryCacheMisses, baselineDelta } = input;
61112
+ const { options, elapsedMilliseconds, diagnostics, score, project, userConfig, didLintFail, lintFailureReason, lintPartialFailures, didDeadCodeFail, deadCodeFailureReason, directory, scannedFileCount, scannedFilePaths, scanElapsedMilliseconds, lintCacheHitFileCount, lintCacheTotalFileCount, lintSidecarReplayedFileCount, lintSidecarTotalFileCount, deadCodeCacheHit, deadCodeSummaryCacheHits, deadCodeSummaryCacheMisses, baselineDelta } = input;
61307
61113
  const { skippedChecks, skippedCheckReasons } = buildSkippedChecks({
61308
61114
  didLintFail,
61309
61115
  lintFailureReason,
61310
61116
  lintPartialFailures,
61311
61117
  didDeadCodeFail,
61312
- deadCodeFailureReason,
61313
- supplyChainOverlapTimedOut,
61314
- securityScanFailed
61118
+ deadCodeFailureReason
61315
61119
  });
61316
61120
  const hasSkippedChecks = skippedChecks.length > 0;
61317
61121
  const noScoreMessage = buildNoScoreMessage(options.noScore);
@@ -61324,7 +61128,6 @@ const finalizeAndRender = (input) => gen(function* () {
61324
61128
  elapsedMilliseconds,
61325
61129
  scannedFileCount,
61326
61130
  scannedFilePaths,
61327
- analyzedFiles,
61328
61131
  scanElapsedMilliseconds,
61329
61132
  ...lintCacheTotalFileCount !== null ? {
61330
61133
  lintCacheHitFileCount,
@@ -65193,4 +64996,4 @@ Promise.resolve().then(() => assertNoRemovedFlags(process.argv)).then(() => prog
65193
64996
  export {};
65194
64997
 
65195
64998
  //# sourceMappingURL=cli.js.map
65196
- //# debugId=09731967-e6b8-5d9e-84b7-cb46a451b11a
64999
+ //# debugId=ef42af6f-0ecf-599f-a6cb-63bf1f1bd562