@redocly/recheck 2.58.2 → 2.60.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 (39) hide show
  1. package/lib/actions/baseline.d.ts +7 -1
  2. package/lib/actions/baseline.d.ts.map +1 -1
  3. package/lib/actions/baseline.js +17 -3
  4. package/lib/actions/baseline.js.map +1 -1
  5. package/lib/actions/embedded.d.ts +16 -0
  6. package/lib/actions/embedded.d.ts.map +1 -0
  7. package/lib/actions/embedded.js +26 -0
  8. package/lib/actions/embedded.js.map +1 -0
  9. package/lib/actions/lint.d.ts +10 -0
  10. package/lib/actions/lint.d.ts.map +1 -1
  11. package/lib/actions/lint.js +106 -16
  12. package/lib/actions/lint.js.map +1 -1
  13. package/lib/config/resolve.d.ts +1 -1
  14. package/lib/config/resolve.d.ts.map +1 -1
  15. package/lib/config/resolve.js +89 -3
  16. package/lib/config/resolve.js.map +1 -1
  17. package/lib/core/baseline.d.ts +2 -0
  18. package/lib/core/baseline.d.ts.map +1 -1
  19. package/lib/core/baseline.js +5 -1
  20. package/lib/core/baseline.js.map +1 -1
  21. package/lib/core/rule-filters.d.ts +14 -0
  22. package/lib/core/rule-filters.d.ts.map +1 -1
  23. package/lib/core/rule-filters.js +11 -7
  24. package/lib/core/rule-filters.js.map +1 -1
  25. package/lib/core/runner.d.ts.map +1 -1
  26. package/lib/core/runner.js +2 -2
  27. package/lib/core/runner.js.map +1 -1
  28. package/lib/index.d.ts +1 -0
  29. package/lib/index.d.ts.map +1 -1
  30. package/lib/index.js.map +1 -1
  31. package/lib/parser/markdoc/syntax.js +1 -1
  32. package/lib/parser/markdoc/syntax.js.map +1 -1
  33. package/lib/types/problems.d.ts +1 -0
  34. package/lib/types/problems.d.ts.map +1 -1
  35. package/package.json +2 -2
  36. package/presets/google/PROVENANCE.md +10 -10
  37. package/presets/inclusive-language/PROVENANCE.md +12 -12
  38. package/presets/microsoft/PROVENANCE.md +7 -7
  39. package/presets/plain-language/PROVENANCE.md +1 -1
@@ -1,4 +1,6 @@
1
1
  import { type ResolvedRecheckConfig } from '../config/resolve.js';
2
+ import type { Problem } from '../types/index.js';
3
+ import { type EmbeddedInput } from './embedded.js';
2
4
  export interface BaselineRunResult {
3
5
  roots: string[];
4
6
  filesFound: number;
@@ -6,10 +8,14 @@ export interface BaselineRunResult {
6
8
  outPath: string;
7
9
  errorCount: number;
8
10
  baselinedFileCount: number;
11
+ apiDescriptionCount: number;
9
12
  }
10
13
  /**
11
14
  * Runs all configured rules and writes the baseline file: the error count for each
12
15
  * file and rule. The format is in core/baseline.ts.
13
16
  */
14
- export declare function generateBaseline(paths: string | string[] | undefined, config: ResolvedRecheckConfig): Promise<BaselineRunResult>;
17
+ export declare function generateBaseline(paths: string | string[] | undefined, config: ResolvedRecheckConfig, options?: {
18
+ embeddedInputs?: EmbeddedInput[];
19
+ isIgnored?: (problem: Problem) => boolean;
20
+ }): Promise<BaselineRunResult>;
15
21
  //# sourceMappingURL=baseline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/actions/baseline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAOzF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,YAAM,EAC9B,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAyC5B"}
1
+ {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/actions/baseline.ts"],"names":[],"mappings":"AAGA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAKzF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvE,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,YAAM,EAC9B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,GAAE;IACP,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAIjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CACtC,GACL,OAAO,CAAC,iBAAiB,CAAC,CAuD5B"}
@@ -5,13 +5,15 @@ import { buildBaseline, serializeBaseline, baselineKeyMapper } from '../core/bas
5
5
  import { needsImageMetadata, loadImageMetadata } from '../core/files.js';
6
6
  import { filterEnabledRules } from '../core/rule-filters.js';
7
7
  import { runRules } from '../core/runner.js';
8
+ import { lintEmbeddedInputs } from './embedded.js';
8
9
  import { discoverFilesForRoots, rootForFile, toRoots } from './roots.js';
9
10
  /**
10
11
  * Runs all configured rules and writes the baseline file: the error count for each
11
12
  * file and rule. The format is in core/baseline.ts.
12
13
  */
13
- export async function generateBaseline(paths = '.', config) {
14
- const roots = toRoots(paths);
14
+ export async function generateBaseline(paths = '.', config, options = {}) {
15
+ const embeddedInputs = options.embeddedInputs ?? [];
16
+ const roots = Array.isArray(paths) && paths.length === 0 ? [] : toRoots(paths);
15
17
  const configDir = config.configDir;
16
18
  const { enabled: rulesToRun } = filterEnabledRules(config.rules);
17
19
  const files = await discoverFilesForRoots(roots);
@@ -35,7 +37,18 @@ export async function generateBaseline(paths = '.', config) {
35
37
  markdoc: config.markdoc,
36
38
  markdocSchema: config.markdocSchema,
37
39
  });
38
- const errors = problems.filter((problem) => problem.severity === 'error');
40
+ if (embeddedInputs.length > 0) {
41
+ const { enabled: descriptionRulesToRun } = filterEnabledRules(config.descriptionRules);
42
+ const embedded = await lintEmbeddedInputs(embeddedInputs, descriptionRulesToRun, {
43
+ knownRuleNames: new Set(config.rules.map((rule) => rule.name)),
44
+ markdoc: config.markdoc,
45
+ markdocSchema: config.markdocSchema,
46
+ });
47
+ problems.push(...embedded.problems);
48
+ }
49
+ const isIgnored = options.isIgnored;
50
+ const kept = isIgnored ? problems.filter((problem) => !isIgnored(problem)) : problems;
51
+ const errors = kept.filter((problem) => problem.severity === 'error');
39
52
  const baseline = buildBaseline(errors, baselineKeyMapper(configDir));
40
53
  const outPath = pathModule.resolve(configDir, DEFAULT_BASELINE_FILE);
41
54
  await fs.writeFile(outPath, serializeBaseline(baseline), 'utf8');
@@ -46,6 +59,7 @@ export async function generateBaseline(paths = '.', config) {
46
59
  outPath,
47
60
  errorCount: errors.length,
48
61
  baselinedFileCount: Object.keys(baseline.files).length,
62
+ apiDescriptionCount: embeddedInputs.length,
49
63
  };
50
64
  }
51
65
  //# sourceMappingURL=baseline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/actions/baseline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../src/actions/baseline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type RunnerOptions } from '../core/runner.js';
2
+ import type { NormalizedRule, Problem } from '../types/index.js';
3
+ export interface EmbeddedInput {
4
+ file: string;
5
+ pointer: string;
6
+ content: string;
7
+ mapPosition(line: number, column: number): {
8
+ line: number;
9
+ column: number;
10
+ };
11
+ }
12
+ export declare function lintEmbeddedInputs(inputs: EmbeddedInput[], rules: NormalizedRule[], runnerOptions: RunnerOptions): Promise<{
13
+ problems: Problem[];
14
+ fixableCount: number;
15
+ }>;
16
+ //# sourceMappingURL=embedded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded.d.ts","sourceRoot":"","sources":["../../src/actions/embedded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7E;AAID,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,aAAa,EAAE,EACvB,KAAK,EAAE,cAAc,EAAE,EACvB,aAAa,EAAE,aAAa,GAC3B,OAAO,CAAC;IAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBxD"}
@@ -0,0 +1,26 @@
1
+ import { runRules } from '../core/runner.js';
2
+ // Lints each input on its own in embedded mode and remaps every finding to
3
+ // the owning file. Fixes never apply to embedded content.
4
+ export async function lintEmbeddedInputs(inputs, rules, runnerOptions) {
5
+ const problems = [];
6
+ let fixableCount = 0;
7
+ for (const input of inputs) {
8
+ const result = await runRules([{ path: input.file, content: input.content }], rules, {
9
+ ...runnerOptions,
10
+ embedded: true,
11
+ });
12
+ for (const problem of result.problems) {
13
+ const position = input.mapPosition(problem.line, problem.column);
14
+ if (problem.fixable)
15
+ fixableCount++;
16
+ problems.push({
17
+ ...problem,
18
+ line: position.line,
19
+ column: position.column,
20
+ pointer: input.pointer,
21
+ });
22
+ }
23
+ }
24
+ return { problems, fixableCount };
25
+ }
26
+ //# sourceMappingURL=embedded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embedded.js","sourceRoot":"","sources":["../../src/actions/embedded.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAsB,MAAM,mBAAmB,CAAC;AAajE,2EAA2E;AAC3E,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAuB,EACvB,KAAuB,EACvB,aAA4B;IAE5B,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE;YACnF,GAAG,aAAa;YAChB,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,OAAO,CAAC,OAAO;gBAAE,YAAY,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC;gBACZ,GAAG,OAAO;gBACV,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AACpC,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { ResolvedRecheckConfig } from '../config/resolve.js';
2
2
  import type { Fix, Problem } from '../types/index.js';
3
+ import { type EmbeddedInput } from './embedded.js';
3
4
  export interface LintOptions {
4
5
  severity?: 'off' | 'info' | 'warn' | 'warning' | 'error';
5
6
  tags?: (string | number)[];
@@ -8,9 +9,14 @@ export interface LintOptions {
8
9
  fix?: boolean;
9
10
  changedOnly?: boolean;
10
11
  changedListPath?: string;
12
+ embeddedInputs?: EmbeddedInput[];
13
+ apiFiles?: string[];
14
+ unreadableFiles?: string[];
15
+ isIgnored?: (problem: Problem) => boolean;
11
16
  }
12
17
  export interface LintRunReport {
13
18
  roots: string[];
19
+ apiDescriptionCount: number;
14
20
  ruleCount: number;
15
21
  disabledRuleCount: number;
16
22
  filesFound: number;
@@ -20,11 +26,15 @@ export interface LintRunReport {
20
26
  };
21
27
  unreadableFiles: string[];
22
28
  scannedFileCount: number;
29
+ scannedDescriptionFileCount: number;
30
+ executedDescriptionRuleCount: number;
23
31
  problems: Problem[];
24
32
  fixes?: {
25
33
  applied: Fix[];
26
34
  skippedCount: number;
27
35
  };
36
+ descriptionFixesSkipped: number;
37
+ suppressedByIgnoreFile: number;
28
38
  baseline?: {
29
39
  matched: number;
30
40
  new: number;
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/actions/lint.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAKlE,OAAO,KAAK,EAAE,GAAG,EAAkB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGtE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IAEnB,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAC3E;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAC5D,CAAC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC;AAE9C,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,YAAM,EAC9B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAgIxB"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/actions/lint.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAUlE,OAAO,KAAK,EAAE,GAAG,EAAkB,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGvE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IAEjC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAE3B,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IAEnB,aAAa,CAAC,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IAEzB,2BAA2B,EAAE,MAAM,CAAC;IACpC,4BAA4B,EAAE,MAAM,CAAC;IACrC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IAEjD,uBAAuB,EAAE,MAAM,CAAC;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,kBAAkB,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAC3E;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GAC5D,CAAC;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GAAG,aAAa,CAAC,CAAC;AAmB9C,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,YAAM,EAC9B,MAAM,EAAE,qBAAqB,EAC7B,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAoNxB"}
@@ -2,20 +2,49 @@ import * as fs from 'fs/promises';
2
2
  import * as pathModule from 'path';
3
3
  import { parseBaseline, compareToBaseline, baselineKeyMapper } from '../core/baseline.js';
4
4
  import { loadChangedFiles, needsImageMetadata, loadImageMetadata } from '../core/files.js';
5
- import { applyFilters, UnknownRuleNameError } from '../core/rule-filters.js';
5
+ import { applyFilters, assertRuleNamesKnown, matchesRuleName, UnknownRuleNameError, } from '../core/rule-filters.js';
6
6
  import { runRules, runRulesUntilStable } from '../core/runner.js';
7
+ import { lintEmbeddedInputs } from './embedded.js';
7
8
  import { discoverFilesForRoots, rootForFile, toRoots } from './roots.js';
9
+ // Filters one rule set by name. It does not check for unknown names:
10
+ // `assertRuleNamesKnown` already checked pages and descriptions together.
11
+ function narrowByRuleNames(rules, include, exclude) {
12
+ let narrowed = rules;
13
+ if (include.length > 0) {
14
+ narrowed = narrowed.filter((rule) => include.some((name) => matchesRuleName(rule, name)));
15
+ }
16
+ if (exclude.length > 0) {
17
+ narrowed = narrowed.filter((rule) => !exclude.some((name) => matchesRuleName(rule, name)));
18
+ }
19
+ return narrowed;
20
+ }
8
21
  export async function runLint(paths = '.', config, options) {
9
- const roots = toRoots(paths);
22
+ let embeddedInputs = options.embeddedInputs ?? [];
23
+ let apiFiles = options.apiFiles ?? [];
24
+ // An empty path list means no page discovery. A call with no paths uses the default `.`.
25
+ const roots = Array.isArray(paths) && paths.length === 0 ? [] : toRoots(paths);
26
+ const ruleNames = options.rules ?? [];
27
+ const excludeRuleNames = options.excludeRules ?? [];
10
28
  let rulesToRun;
11
29
  let disabledCount;
30
+ let descriptionRules = [];
12
31
  try {
13
32
  ({ filtered: rulesToRun, disabledCount } = applyFilters(config.rules, {
14
33
  severity: options.severity,
15
34
  tags: options.tags,
16
- rules: options.rules,
17
- excludeRules: options.excludeRules,
18
35
  }));
36
+ // A name filter must match a rule in effect on pages or, when the run has
37
+ // description inputs, on descriptions: `apiDescriptions.rules` can turn on
38
+ // a rule that is `off` for pages. The check runs once over both sides;
39
+ // each side then narrows on its own, so a name the other side matches
40
+ // leaves this side empty instead of failing the run.
41
+ if (embeddedInputs.length > 0 || apiFiles.length > 0) {
42
+ descriptionRules = applyFilters(config.descriptionRules, {
43
+ severity: options.severity,
44
+ tags: options.tags,
45
+ }).filtered;
46
+ }
47
+ assertRuleNamesKnown([...rulesToRun, ...descriptionRules], [...ruleNames, ...excludeRuleNames]);
19
48
  }
20
49
  catch (error) {
21
50
  if (error instanceof UnknownRuleNameError) {
@@ -23,24 +52,36 @@ export async function runLint(paths = '.', config, options) {
23
52
  }
24
53
  throw error;
25
54
  }
55
+ rulesToRun = narrowByRuleNames(rulesToRun, ruleNames, excludeRuleNames);
56
+ descriptionRules = narrowByRuleNames(descriptionRules, ruleNames, excludeRuleNames);
26
57
  const report = {
27
58
  roots,
59
+ apiDescriptionCount: embeddedInputs.length,
28
60
  ruleCount: rulesToRun.length,
29
61
  disabledRuleCount: disabledCount,
30
62
  filesFound: 0,
31
63
  unreadableFiles: [],
32
64
  scannedFileCount: 0,
65
+ scannedDescriptionFileCount: 0,
66
+ executedDescriptionRuleCount: 0,
33
67
  problems: [],
68
+ descriptionFixesSkipped: 0,
69
+ suppressedByIgnoreFile: 0,
34
70
  empty: true,
35
71
  };
36
72
  try {
37
73
  let files = await discoverFilesForRoots(roots);
38
74
  report.filesFound = files.length;
39
75
  // With a baseline, still compare when no files are found: deleting the last
40
- // baselined files makes their entries stale. Changed-only runs skip this.
41
- if (files.length === 0 && !(config.baselinePath && !options.changedOnly)) {
42
- return { status: 'completed', ...report };
76
+ // baselined files makes their entries stale. Changed-only runs skip this,
77
+ // unless they have API files: a changed API file without descriptions
78
+ // must still be compared.
79
+ if (files.length === 0 && embeddedInputs.length === 0) {
80
+ const compareBaseline = config.baselinePath !== undefined && (!options.changedOnly || apiFiles.length > 0);
81
+ if (!compareBaseline)
82
+ return { status: 'completed', ...report };
43
83
  }
84
+ // The changed-file filter covers pages and API descriptions alike.
44
85
  if (options.changedOnly) {
45
86
  const changedCandidates = await loadChangedFiles(options.changedListPath);
46
87
  if (!changedCandidates || changedCandidates.length === 0) {
@@ -48,11 +89,26 @@ export async function runLint(paths = '.', config, options) {
48
89
  return { status: 'completed', ...report };
49
90
  }
50
91
  const changedSet = new Set(changedCandidates.map((candidate) => pathModule.isAbsolute(candidate) ? candidate : pathModule.resolve(candidate)));
51
- const filtered = files.filter((file) => changedSet.has(pathModule.resolve(file)));
52
- report.changedFilter = { provided: true, matched: filtered.length };
53
- if (filtered.length === 0)
92
+ const changedFiles = files.filter((file) => changedSet.has(pathModule.resolve(file)));
93
+ const changedEmbeddedInputs = embeddedInputs.filter((input) => changedSet.has(pathModule.resolve(input.file)));
94
+ apiFiles = apiFiles.filter((file) => changedSet.has(pathModule.resolve(file)));
95
+ // Pages plus the distinct API files the list kept, whether they carry
96
+ // descriptions or not.
97
+ const changedApiFiles = new Set([
98
+ ...changedEmbeddedInputs.map((input) => input.file),
99
+ ...apiFiles,
100
+ ]);
101
+ report.changedFilter = {
102
+ provided: true,
103
+ matched: changedFiles.length + changedApiFiles.size,
104
+ };
105
+ if (changedFiles.length === 0 &&
106
+ changedEmbeddedInputs.length === 0 &&
107
+ (apiFiles.length === 0 || config.baselinePath === undefined)) {
54
108
  return { status: 'completed', ...report };
55
- files = filtered;
109
+ }
110
+ files = changedFiles;
111
+ embeddedInputs = changedEmbeddedInputs;
56
112
  }
57
113
  const loadImageMeta = needsImageMetadata(rulesToRun);
58
114
  const fileInputs = [];
@@ -76,7 +132,7 @@ export async function runLint(paths = '.', config, options) {
76
132
  markdoc: config.markdoc,
77
133
  markdocSchema: config.markdocSchema,
78
134
  };
79
- const { problems: allProblems, fixedFiles, fixes, skippedFixes, } = options.fix
135
+ const { problems: pageProblems, fixedFiles, fixes, skippedFixes, } = options.fix
80
136
  ? await runRulesUntilStable(fileInputs, rulesToRun, runnerOptions)
81
137
  : await runRules(fileInputs, rulesToRun, runnerOptions);
82
138
  if (options.fix) {
@@ -85,7 +141,34 @@ export async function runLint(paths = '.', config, options) {
85
141
  }
86
142
  report.fixes = { applied: fixes, skippedCount: skippedFixes.length };
87
143
  }
88
- report.problems = allProblems;
144
+ let problems = [...pageProblems];
145
+ const executedDescriptionRules = new Set();
146
+ // A scanned API file with zero descriptions still needs the description
147
+ // rules recorded as executed, so a leftover baseline entry for it goes stale.
148
+ if (embeddedInputs.length > 0 || apiFiles.length > 0) {
149
+ const noRulesLeftForDescriptions = ruleNames.length > 0 && descriptionRules.length === 0;
150
+ if (!noRulesLeftForDescriptions) {
151
+ for (const rule of descriptionRules)
152
+ executedDescriptionRules.add(rule.name);
153
+ const embedded = await lintEmbeddedInputs(embeddedInputs, descriptionRules, runnerOptions);
154
+ problems.push(...embedded.problems);
155
+ report.descriptionFixesSkipped = options.fix ? embedded.fixableCount : 0;
156
+ report.executedDescriptionRuleCount = descriptionRules.length;
157
+ }
158
+ }
159
+ if (options.isIgnored) {
160
+ const isIgnored = options.isIgnored;
161
+ const kept = problems.filter((problem) => !isIgnored(problem));
162
+ report.suppressedByIgnoreFile = problems.length - kept.length;
163
+ problems = kept;
164
+ }
165
+ // Union with `apiFiles`: a parsed API file with no local descriptions has
166
+ // no entry in `embeddedInputs`, but it was still scanned.
167
+ const scannedDescriptionFiles = [
168
+ ...new Set([...embeddedInputs.map((input) => input.file), ...apiFiles]),
169
+ ];
170
+ report.scannedDescriptionFileCount = scannedDescriptionFiles.length;
171
+ report.problems = problems;
89
172
  if (config.baselinePath) {
90
173
  let baselineText;
91
174
  try {
@@ -96,12 +179,19 @@ export async function runLint(paths = '.', config, options) {
96
179
  }
97
180
  const baseline = parseBaseline(baselineText, config.baselinePath);
98
181
  const toKey = baselineKeyMapper(config.configDir);
99
- const comparison = compareToBaseline(allProblems, baseline, {
100
- scannedFiles: fileInputs.map((file) => file.path),
101
- executedRules: new Set(rulesToRun.map((rule) => rule.name)),
182
+ const comparison = compareToBaseline(problems, baseline, {
183
+ scannedFiles: [...fileInputs.map((file) => file.path), ...scannedDescriptionFiles],
184
+ // Page rules run over the walked roots, so a run with no root ran
185
+ // none of them; description rules run over embedded inputs and
186
+ // any parsed API file.
187
+ executedRules: new Set([
188
+ ...(roots.length > 0 ? rulesToRun.map((rule) => rule.name) : []),
189
+ ...executedDescriptionRules,
190
+ ]),
102
191
  toKey,
103
192
  // A changed-only run does not scan every file, so a missing file means nothing there.
104
193
  scanRoots: options.changedOnly ? undefined : roots.map(toKey),
194
+ skipFiles: new Set((options.unreadableFiles ?? []).map(toKey)),
105
195
  });
106
196
  report.problems = comparison.problems;
107
197
  report.baseline = {
@@ -1 +1 @@
1
- {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/actions/lint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lint.js","sourceRoot":"","sources":["../../src/actions/lint.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export interface ResolvedRecheckConfig {
15
15
  markdoc: boolean;
16
16
  markdocSchema: MarkdocSchema | null;
17
17
  baselinePath?: string;
18
- apiDescriptionRules?: Record<string, unknown>;
18
+ descriptionRules: NormalizedRule[];
19
19
  }
20
20
  export interface RecheckBlockInput {
21
21
  block?: unknown;
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIjG,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAG1E,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACtC,eAAe,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,iBAAiB;IAEhC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GAC5D;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAElD,eAAO,MAAM,qBAAqB,mCAAmC,CAAC;AAoCtE,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA+D3F"}
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIjG,KAAK,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAG1E,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAAC;IACtC,eAAe,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAC;CACjD;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,gBAAgB,EAAE,cAAc,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAEhC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,MAAM,EAAE,EAAE,CAAA;CAAE,GAC5D;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAElD,eAAO,MAAM,qBAAqB,mCAAmC,CAAC;AAmGtE,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA0F3F"}
@@ -18,6 +18,63 @@ function toEngineConfig(block) {
18
18
  }
19
19
  return engineConfig;
20
20
  }
21
+ const OVERRIDE_KEYS = new Set([
22
+ 'severity',
23
+ 'message',
24
+ 'tags',
25
+ 'description',
26
+ 'link',
27
+ 'scope',
28
+ 'appliesTo',
29
+ 'excludes',
30
+ 'exceptions',
31
+ 'fix',
32
+ 'assertions',
33
+ ]);
34
+ // Applies `apiDescriptions.rules` on top of the effective rules. A severity
35
+ // string sets the severity; an object merges its fields. Every key must name
36
+ // a rule that is in effect.
37
+ function applyDescriptionOverrides(rules, overrides) {
38
+ if (!isPlainObject(overrides))
39
+ return { rules, errors: [] };
40
+ const errors = [];
41
+ const byName = new Map(rules.map((rule) => [rule.name, rule]));
42
+ for (const [name, value] of Object.entries(overrides)) {
43
+ const path = `recheck.apiDescriptions.rules.${name}`;
44
+ const rule = byName.get(name);
45
+ if (rule === undefined) {
46
+ errors.push({ message: `"${name}" is not a rule in effect, so it has no override`, path });
47
+ continue;
48
+ }
49
+ if (typeof value === 'string') {
50
+ if (!SEVERITIES.has(value)) {
51
+ errors.push({ message: `"${name}" has an unknown severity "${value}"`, path });
52
+ continue;
53
+ }
54
+ byName.set(name, { ...rule, severity: value });
55
+ continue;
56
+ }
57
+ if (!isPlainObject(value)) {
58
+ errors.push({ message: `"${name}" must be a severity string or a rule object`, path });
59
+ continue;
60
+ }
61
+ const unknown = Object.keys(value).filter((key) => !OVERRIDE_KEYS.has(key));
62
+ if (unknown.length > 0) {
63
+ errors.push({ message: `"${name}" has unknown keys: ${unknown.join(', ')}`, path });
64
+ continue;
65
+ }
66
+ if ('severity' in value &&
67
+ !(typeof value.severity === 'string' && SEVERITIES.has(value.severity))) {
68
+ errors.push({
69
+ message: `"${name}" has an unknown severity "${String(value.severity)}"`,
70
+ path,
71
+ });
72
+ continue;
73
+ }
74
+ byName.set(name, { ...rule, ...value });
75
+ }
76
+ return { rules: [...byName.values()], errors };
77
+ }
21
78
  // The engine validates the flat shape (rule keys at the top level). The block
22
79
  // nests them under `rules`, so the reported path must say where the user wrote it.
23
80
  function toBlockPath(enginePath) {
@@ -71,6 +128,33 @@ export async function resolveRecheckConfig(input) {
71
128
  errors: [{ message: '`recheck.rules` must be an object', path: 'recheck.rules' }],
72
129
  };
73
130
  }
131
+ if ('apiDescriptions' in block) {
132
+ const { apiDescriptions } = block;
133
+ const errors = [];
134
+ if (!isPlainObject(apiDescriptions)) {
135
+ errors.push({
136
+ message: '`recheck.apiDescriptions` must be an object',
137
+ path: 'recheck.apiDescriptions',
138
+ });
139
+ }
140
+ else {
141
+ const unknownKeys = Object.keys(apiDescriptions).filter((key) => key !== 'rules');
142
+ if (unknownKeys.length > 0) {
143
+ errors.push({
144
+ message: `\`recheck.apiDescriptions\` has unknown keys: ${unknownKeys.join(', ')}`,
145
+ path: 'recheck.apiDescriptions',
146
+ });
147
+ }
148
+ if ('rules' in apiDescriptions && !isPlainObject(apiDescriptions.rules)) {
149
+ errors.push({
150
+ message: '`recheck.apiDescriptions.rules` must be an object',
151
+ path: 'recheck.apiDescriptions.rules',
152
+ });
153
+ }
154
+ }
155
+ if (errors.length > 0)
156
+ return { success: false, errors };
157
+ }
74
158
  const validation = await validate(toEngineConfig(block), {
75
159
  configDir: input.configDir,
76
160
  warn: input.warn,
@@ -82,6 +166,10 @@ export async function resolveRecheckConfig(input) {
82
166
  };
83
167
  }
84
168
  const apiDescriptions = isPlainObject(block.apiDescriptions) ? block.apiDescriptions : undefined;
169
+ const overrides = applyDescriptionOverrides(validation.rules, apiDescriptions?.rules);
170
+ if (overrides.errors.length > 0) {
171
+ return { success: false, errors: overrides.errors };
172
+ }
85
173
  return {
86
174
  success: true,
87
175
  errors: [],
@@ -91,9 +179,7 @@ export async function resolveRecheckConfig(input) {
91
179
  markdoc: validation.markdoc.enabled,
92
180
  markdocSchema: validation.markdoc.schema,
93
181
  baselinePath: resolveBaselinePath(input.configDir),
94
- apiDescriptionRules: isPlainObject(apiDescriptions?.rules)
95
- ? apiDescriptions?.rules
96
- : undefined,
182
+ descriptionRules: overrides.rules,
97
183
  },
98
184
  };
99
185
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,8 @@ export interface CompareOptions {
31
31
  * seen even if the file was deleted, so they turn stale. Leave unset for `--changed-only`.
32
32
  */
33
33
  scanRoots?: string[];
34
+ /** Baseline keys of files this run could not read; their entries are neither matched nor stale. */
35
+ skipFiles?: Set<string>;
34
36
  }
35
37
  /**
36
38
  * Applies the baseline to the problems. Only errors are affected. An entry is checked for
@@ -1 +1 @@
1
- {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/core/baseline.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CA8B/E;AAED,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,YAAY,CAUhG;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAUhE;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uDAAuD;IACvD,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,0EAA0E;IAC1E,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAOD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,cAAc,GACtB,kBAAkB,CAwEpB;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAE7E"}
1
+ {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../src/core/baseline.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAGjD,sEAAsE;AACtE,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,6EAA6E;IAC7E,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;CACtB;AAKD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,CA8B/E;AAED,qGAAqG;AACrG,wBAAgB,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,YAAY,CAUhG;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAUhE;AAED,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,uDAAuD;IACvD,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,0EAA0E;IAC1E,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAChC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,mGAAmG;IACnG,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACzB;AAOD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,cAAc,GACtB,kBAAkB,CA2EpB;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAE7E"}
@@ -84,7 +84,9 @@ export function compareToBaseline(problems, baseline, options) {
84
84
  errorGroups.set(groupId, group);
85
85
  }
86
86
  for (const group of errorGroups.values()) {
87
- const budget = baseline.files[group.key]?.[group.rule] ?? 0;
87
+ const budget = options.skipFiles?.has(group.key)
88
+ ? 0
89
+ : (baseline.files[group.key]?.[group.rule] ?? 0);
88
90
  const found = group.problems.length;
89
91
  if (found <= budget) {
90
92
  suppressed += found;
@@ -105,6 +107,8 @@ export function compareToBaseline(problems, baseline, options) {
105
107
  const scannedKeys = new Set(options.scannedFiles.map(options.toKey));
106
108
  const staleProblems = [];
107
109
  for (const [file, rules] of Object.entries(baseline.files)) {
110
+ if (options.skipFiles?.has(file))
111
+ continue;
108
112
  const seen = scannedKeys.has(file) || (options.scanRoots ?? []).some((root) => underRoot(file, root));
109
113
  if (!seen)
110
114
  continue;