@empline/preflight 1.1.43 → 1.1.45

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 (36) hide show
  1. package/dist/checks/react/state-update-during-render.d.ts +3 -5
  2. package/dist/checks/react/state-update-during-render.d.ts.map +1 -1
  3. package/dist/checks/react/state-update-during-render.js +77 -144
  4. package/dist/checks/react/state-update-during-render.js.map +1 -1
  5. package/dist/checks/system/preflight-metadata-validator.d.ts.map +1 -1
  6. package/dist/checks/system/preflight-metadata-validator.js +97 -2
  7. package/dist/checks/system/preflight-metadata-validator.js.map +1 -1
  8. package/dist/checks/ui/layout-overflow-containment.d.ts +23 -0
  9. package/dist/checks/ui/layout-overflow-containment.d.ts.map +1 -0
  10. package/dist/checks/ui/layout-overflow-containment.js +240 -0
  11. package/dist/checks/ui/layout-overflow-containment.js.map +1 -0
  12. package/dist/index.d.ts +3 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +19 -4
  15. package/dist/index.js.map +1 -1
  16. package/dist/runner.d.ts +1 -0
  17. package/dist/runner.d.ts.map +1 -1
  18. package/dist/runner.js +36 -0
  19. package/dist/runner.js.map +1 -1
  20. package/dist/shared/concurrency-config.d.ts +2 -0
  21. package/dist/shared/concurrency-config.d.ts.map +1 -1
  22. package/dist/shared/concurrency-config.js +2 -0
  23. package/dist/shared/concurrency-config.js.map +1 -1
  24. package/dist/shared/consolidated-check-base.d.ts +112 -0
  25. package/dist/shared/consolidated-check-base.d.ts.map +1 -0
  26. package/dist/shared/consolidated-check-base.js +247 -0
  27. package/dist/shared/consolidated-check-base.js.map +1 -0
  28. package/dist/shared/exclusions.d.ts +31 -0
  29. package/dist/shared/exclusions.d.ts.map +1 -1
  30. package/dist/shared/exclusions.js +108 -0
  31. package/dist/shared/exclusions.js.map +1 -1
  32. package/dist/shared/performance-tracker.d.ts +103 -0
  33. package/dist/shared/performance-tracker.d.ts.map +1 -0
  34. package/dist/shared/performance-tracker.js +267 -0
  35. package/dist/shared/performance-tracker.js.map +1 -0
  36. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"concurrency-config.js","sourceRoot":"","sources":["../../src/shared/concurrency-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"concurrency-config.js","sourceRoot":"","sources":["../../src/shared/concurrency-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Consolidated Check Base
3
+ *
4
+ * Provides a standardized foundation for consolidated preflight checks.
5
+ * Handles common patterns like:
6
+ * - Concurrent file scanning
7
+ * - Result aggregation
8
+ * - Progress reporting
9
+ * - Error handling
10
+ * - Exclusion management
11
+ *
12
+ * @example
13
+ * import { ConsolidatedCheckBase, SubCheck } from '../shared/consolidated-check-base';
14
+ *
15
+ * const checks: SubCheck[] = [
16
+ * { id: 'no-console', name: 'No Console Logs', fn: checkNoConsole },
17
+ * { id: 'no-debugger', name: 'No Debugger', fn: checkNoDebugger },
18
+ * ];
19
+ *
20
+ * const result = await runConsolidatedCheck({
21
+ * id: 'ui/console-checks',
22
+ * name: 'Console & Debug Statement Checks',
23
+ * checks,
24
+ * concurrency: 4,
25
+ * });
26
+ */
27
+ import { PreflightCheckResult, PreflightFinding } from "../core/types";
28
+ /**
29
+ * A sub-check within a consolidated check
30
+ */
31
+ export interface SubCheck {
32
+ /** Unique identifier for this sub-check */
33
+ id: string;
34
+ /** Human-readable name */
35
+ name: string;
36
+ /** The check function - receives files and returns findings */
37
+ fn: (files: string[]) => Promise<PreflightFinding[]>;
38
+ /** Whether this sub-check is blocking (default: true) */
39
+ blocking?: boolean;
40
+ /** File patterns to check (default: all TS/TSX) */
41
+ filePatterns?: string[];
42
+ /** Additional exclusion patterns for this sub-check */
43
+ exclusions?: string[];
44
+ }
45
+ /**
46
+ * Result from a sub-check execution
47
+ */
48
+ export interface SubCheckResult {
49
+ id: string;
50
+ name: string;
51
+ passed: boolean;
52
+ findings: PreflightFinding[];
53
+ duration: number;
54
+ filesChecked: number;
55
+ }
56
+ /**
57
+ * Options for running a consolidated check
58
+ */
59
+ export interface ConsolidatedCheckOptions {
60
+ /** Check ID (e.g., "ui/console-checks") */
61
+ id: string;
62
+ /** Human-readable name */
63
+ name: string;
64
+ /** Array of sub-checks to run */
65
+ checks: SubCheck[];
66
+ /** Maximum concurrency for sub-checks (default: auto from config) */
67
+ concurrency?: number;
68
+ /** Whether to show progress output (default: true) */
69
+ showProgress?: boolean;
70
+ /** Whether any failure is blocking (default: based on sub-check settings) */
71
+ blocking?: boolean;
72
+ /** Custom file getter (default: fileCache.getAllTsTsx) */
73
+ getFiles?: () => Promise<string[]>;
74
+ }
75
+ /**
76
+ * Run a consolidated check with standardized handling
77
+ */
78
+ export declare function runConsolidatedCheck(options: ConsolidatedCheckOptions): Promise<PreflightCheckResult>;
79
+ /**
80
+ * Helper to create a file-based check function
81
+ *
82
+ * @example
83
+ * const checkNoConsole = createFileChecker({
84
+ * pattern: /console\.(log|warn|error)\(/,
85
+ * message: 'Console statement found',
86
+ * level: 'error',
87
+ * });
88
+ */
89
+ export declare function createFileChecker(options: {
90
+ pattern: RegExp;
91
+ message: string;
92
+ level: "error" | "warning" | "info";
93
+ ruleId?: string;
94
+ exclude?: RegExp;
95
+ suggestion?: string;
96
+ }): (files: string[]) => Promise<PreflightFinding[]>;
97
+ /**
98
+ * Helper to create an AST-based check (for more complex patterns)
99
+ * This is a placeholder - actual AST parsing would require ts-morph or similar
100
+ */
101
+ export declare function createAstChecker(_options: {
102
+ check: (filePath: string, content: string) => PreflightFinding[];
103
+ }): (files: string[]) => Promise<PreflightFinding[]>;
104
+ /**
105
+ * Merge multiple check results into one
106
+ */
107
+ export declare function mergeCheckResults(results: PreflightCheckResult[]): PreflightCheckResult;
108
+ /**
109
+ * Deduplicate findings by file + line + message
110
+ */
111
+ export declare function deduplicateFindings(findings: PreflightFinding[]): PreflightFinding[];
112
+ //# sourceMappingURL=consolidated-check-base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidated-check-base.d.ts","sourceRoot":"","sources":["../../src/shared/consolidated-check-base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAGH,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAMvE;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACrD,yDAAyD;IACzD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,2CAA2C;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAsG/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAmCnD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE;IACzC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,gBAAgB,EAAE,CAAC;CAClE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkBnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,oBAAoB,EAAE,GAC9B,oBAAoB,CAgBtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,gBAAgB,EAAE,CAapB"}
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ /**
3
+ * Consolidated Check Base
4
+ *
5
+ * Provides a standardized foundation for consolidated preflight checks.
6
+ * Handles common patterns like:
7
+ * - Concurrent file scanning
8
+ * - Result aggregation
9
+ * - Progress reporting
10
+ * - Error handling
11
+ * - Exclusion management
12
+ *
13
+ * @example
14
+ * import { ConsolidatedCheckBase, SubCheck } from '../shared/consolidated-check-base';
15
+ *
16
+ * const checks: SubCheck[] = [
17
+ * { id: 'no-console', name: 'No Console Logs', fn: checkNoConsole },
18
+ * { id: 'no-debugger', name: 'No Debugger', fn: checkNoDebugger },
19
+ * ];
20
+ *
21
+ * const result = await runConsolidatedCheck({
22
+ * id: 'ui/console-checks',
23
+ * name: 'Console & Debug Statement Checks',
24
+ * checks,
25
+ * concurrency: 4,
26
+ * });
27
+ */
28
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
29
+ if (k2 === undefined) k2 = k;
30
+ var desc = Object.getOwnPropertyDescriptor(m, k);
31
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
32
+ desc = { enumerable: true, get: function() { return m[k]; } };
33
+ }
34
+ Object.defineProperty(o, k2, desc);
35
+ }) : (function(o, m, k, k2) {
36
+ if (k2 === undefined) k2 = k;
37
+ o[k2] = m[k];
38
+ }));
39
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
40
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
41
+ }) : function(o, v) {
42
+ o["default"] = v;
43
+ });
44
+ var __importStar = (this && this.__importStar) || (function () {
45
+ var ownKeys = function(o) {
46
+ ownKeys = Object.getOwnPropertyNames || function (o) {
47
+ var ar = [];
48
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
49
+ return ar;
50
+ };
51
+ return ownKeys(o);
52
+ };
53
+ return function (mod) {
54
+ if (mod && mod.__esModule) return mod;
55
+ var result = {};
56
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
57
+ __setModuleDefault(result, mod);
58
+ return result;
59
+ };
60
+ })();
61
+ Object.defineProperty(exports, "__esModule", { value: true });
62
+ exports.runConsolidatedCheck = runConsolidatedCheck;
63
+ exports.createFileChecker = createFileChecker;
64
+ exports.createAstChecker = createAstChecker;
65
+ exports.mergeCheckResults = mergeCheckResults;
66
+ exports.deduplicateFindings = deduplicateFindings;
67
+ const fs = __importStar(require("node:fs"));
68
+ const concurrency_config_1 = require("./concurrency-config");
69
+ const exclusions_1 = require("./exclusions");
70
+ const file_cache_1 = require("./file-cache");
71
+ const console_chars_1 = require("../utils/console-chars");
72
+ /**
73
+ * Run a consolidated check with standardized handling
74
+ */
75
+ async function runConsolidatedCheck(options) {
76
+ const startTime = Date.now();
77
+ const { id, name, checks, concurrency = (0, concurrency_config_1.getConcurrencyConfig)().maxConcurrency, showProgress = true, blocking = true, getFiles = () => file_cache_1.fileCache.getAllTsTsx(), } = options;
78
+ // Load exclusions for this check
79
+ const exclusions = await (0, exclusions_1.getExclusions)(id);
80
+ // Get and filter files
81
+ const allFiles = await getFiles();
82
+ const files = (0, exclusions_1.filterExcludedFiles)(allFiles, exclusions);
83
+ if (showProgress) {
84
+ console.log(`\n${console_chars_1.emoji.search} ${name}`);
85
+ console.log(` Checking ${files.length} files with ${checks.length} sub-checks...`);
86
+ }
87
+ // Run sub-checks with concurrency
88
+ const results = [];
89
+ const allFindings = [];
90
+ // Process in batches
91
+ for (let i = 0; i < checks.length; i += concurrency) {
92
+ const batch = checks.slice(i, i + concurrency);
93
+ const batchResults = await Promise.all(batch.map(async (check) => {
94
+ const checkStart = Date.now();
95
+ try {
96
+ // Apply check-specific exclusions if any
97
+ let checkFiles = files;
98
+ if (check.exclusions && check.exclusions.length > 0) {
99
+ checkFiles = (0, exclusions_1.filterExcludedFiles)(files, check.exclusions);
100
+ }
101
+ const findings = await check.fn(checkFiles);
102
+ const duration = Date.now() - checkStart;
103
+ return {
104
+ id: check.id,
105
+ name: check.name,
106
+ passed: findings.filter((f) => f.level === "error").length === 0,
107
+ findings,
108
+ duration,
109
+ filesChecked: checkFiles.length,
110
+ };
111
+ }
112
+ catch (error) {
113
+ const duration = Date.now() - checkStart;
114
+ return {
115
+ id: check.id,
116
+ name: check.name,
117
+ passed: false,
118
+ findings: [
119
+ {
120
+ message: `Check failed: ${error instanceof Error ? error.message : String(error)}`,
121
+ level: "error",
122
+ ruleId: check.id,
123
+ },
124
+ ],
125
+ duration,
126
+ filesChecked: 0,
127
+ };
128
+ }
129
+ }));
130
+ results.push(...batchResults);
131
+ }
132
+ // Aggregate findings
133
+ for (const result of results) {
134
+ allFindings.push(...result.findings);
135
+ if (showProgress) {
136
+ const icon = result.passed ? console_chars_1.emoji.success : console_chars_1.emoji.error;
137
+ console.log(` ${icon} ${result.name} (${(result.duration / 1000).toFixed(2)}s)`);
138
+ }
139
+ }
140
+ // Calculate overall pass/fail
141
+ const errorCount = allFindings.filter((f) => f.level === "error").length;
142
+ const warningCount = allFindings.filter((f) => f.level === "warning").length;
143
+ const passed = errorCount === 0;
144
+ if (showProgress) {
145
+ console.log(`\n Summary: ${errorCount} errors, ${warningCount} warnings`);
146
+ }
147
+ return {
148
+ passed,
149
+ findings: allFindings,
150
+ duration: Date.now() - startTime,
151
+ };
152
+ }
153
+ /**
154
+ * Helper to create a file-based check function
155
+ *
156
+ * @example
157
+ * const checkNoConsole = createFileChecker({
158
+ * pattern: /console\.(log|warn|error)\(/,
159
+ * message: 'Console statement found',
160
+ * level: 'error',
161
+ * });
162
+ */
163
+ function createFileChecker(options) {
164
+ const { pattern, message, level, ruleId, exclude, suggestion } = options;
165
+ return async (files) => {
166
+ const findings = [];
167
+ for (const file of files) {
168
+ const content = fs.readFileSync(file, "utf-8");
169
+ if (!content)
170
+ continue;
171
+ const lines = content.split("\n");
172
+ for (let i = 0; i < lines.length; i++) {
173
+ const line = lines[i];
174
+ // Skip if excluded
175
+ if (exclude && exclude.test(line)) {
176
+ continue;
177
+ }
178
+ if (pattern.test(line)) {
179
+ findings.push({
180
+ message,
181
+ level,
182
+ file,
183
+ startLine: i + 1,
184
+ ruleId,
185
+ suggestion,
186
+ });
187
+ }
188
+ }
189
+ }
190
+ return findings;
191
+ };
192
+ }
193
+ /**
194
+ * Helper to create an AST-based check (for more complex patterns)
195
+ * This is a placeholder - actual AST parsing would require ts-morph or similar
196
+ */
197
+ function createAstChecker(_options) {
198
+ return async (files) => {
199
+ const findings = [];
200
+ for (const file of files) {
201
+ const content = fs.readFileSync(file, "utf-8");
202
+ if (!content)
203
+ continue;
204
+ try {
205
+ const fileFindings = _options.check(file, content);
206
+ findings.push(...fileFindings);
207
+ }
208
+ catch {
209
+ // Skip files that can't be parsed
210
+ }
211
+ }
212
+ return findings;
213
+ };
214
+ }
215
+ /**
216
+ * Merge multiple check results into one
217
+ */
218
+ function mergeCheckResults(results) {
219
+ const allFindings = [];
220
+ let totalDuration = 0;
221
+ for (const result of results) {
222
+ allFindings.push(...(result.findings || []));
223
+ totalDuration += result.duration || 0;
224
+ }
225
+ const passed = results.every((r) => r.passed);
226
+ return {
227
+ passed,
228
+ findings: allFindings,
229
+ duration: totalDuration,
230
+ };
231
+ }
232
+ /**
233
+ * Deduplicate findings by file + line + message
234
+ */
235
+ function deduplicateFindings(findings) {
236
+ const seen = new Set();
237
+ const unique = [];
238
+ for (const finding of findings) {
239
+ const key = `${finding.file || ""}:${finding.startLine || 0}:${finding.message}`;
240
+ if (!seen.has(key)) {
241
+ seen.add(key);
242
+ unique.push(finding);
243
+ }
244
+ }
245
+ return unique;
246
+ }
247
+ //# sourceMappingURL=consolidated-check-base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidated-check-base.js","sourceRoot":"","sources":["../../src/shared/consolidated-check-base.ts"],"names":[],"mappings":"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"}
@@ -65,6 +65,37 @@ export declare function getExclusionsSync(checkId: string): string[];
65
65
  * }
66
66
  */
67
67
  export declare function shouldExcludeFile(filePath: string, patterns: string[]): boolean;
68
+ /**
69
+ * Debug exclusion matching - returns which pattern matched a file
70
+ *
71
+ * @param filePath - The file path to check
72
+ * @param patterns - Array of glob patterns
73
+ * @returns The matching pattern or null if no match
74
+ */
75
+ export declare function getMatchingExclusionPattern(filePath: string, patterns: string[]): string | null;
76
+ /**
77
+ * Debug interface for exclusion analysis
78
+ */
79
+ export interface ExclusionDebugInfo {
80
+ checkId: string;
81
+ totalFiles: number;
82
+ excludedFiles: number;
83
+ includedFiles: number;
84
+ exclusionsByPattern: Map<string, string[]>;
85
+ patternSources: Map<string, "global" | "category" | "check-specific">;
86
+ }
87
+ /**
88
+ * Get detailed debug info about exclusions for a check
89
+ *
90
+ * @param checkId - The check ID
91
+ * @param files - Array of files to analyze
92
+ * @returns Debug information about what was excluded and why
93
+ */
94
+ export declare function getExclusionDebugInfo(checkId: string, files: string[]): Promise<ExclusionDebugInfo>;
95
+ /**
96
+ * Print debug info about exclusions (for --debug-exclusions flag)
97
+ */
98
+ export declare function printExclusionDebugInfo(info: ExclusionDebugInfo): void;
68
99
  /**
69
100
  * Filter an array of files, removing those that match exclusion patterns
70
101
  *
@@ -1 +1 @@
1
- {"version":3,"file":"exclusions.d.ts","sourceRoot":"","sources":["../../src/shared/exclusions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAmCH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAwB3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAW/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAMjF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG1F"}
1
+ {"version":3,"file":"exclusions.d.ts","sourceRoot":"","sources":["../../src/shared/exclusions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAmCH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAG3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAqBtE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAwB3D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAW/E;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAU/F;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3C,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,gBAAgB,CAAC,CAAC;CACvE;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EAAE,GACd,OAAO,CAAC,kBAAkB,CAAC,CA4D7B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAyBtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAMjF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAG1F"}
@@ -28,6 +28,9 @@ exports.clearExclusionsCache = clearExclusionsCache;
28
28
  exports.getExclusions = getExclusions;
29
29
  exports.getExclusionsSync = getExclusionsSync;
30
30
  exports.shouldExcludeFile = shouldExcludeFile;
31
+ exports.getMatchingExclusionPattern = getMatchingExclusionPattern;
32
+ exports.getExclusionDebugInfo = getExclusionDebugInfo;
33
+ exports.printExclusionDebugInfo = printExclusionDebugInfo;
31
34
  exports.filterExcludedFiles = filterExcludedFiles;
32
35
  exports.getFilteredFiles = getFilteredFiles;
33
36
  const config_1 = require("../core/config");
@@ -146,6 +149,111 @@ function shouldExcludeFile(filePath, patterns) {
146
149
  }
147
150
  return false;
148
151
  }
152
+ /**
153
+ * Debug exclusion matching - returns which pattern matched a file
154
+ *
155
+ * @param filePath - The file path to check
156
+ * @param patterns - Array of glob patterns
157
+ * @returns The matching pattern or null if no match
158
+ */
159
+ function getMatchingExclusionPattern(filePath, patterns) {
160
+ const normalizedPath = filePath.replace(/\\/g, "/");
161
+ for (const pattern of patterns) {
162
+ if (minimatch(normalizedPath, pattern, { matchBase: true })) {
163
+ return pattern;
164
+ }
165
+ }
166
+ return null;
167
+ }
168
+ /**
169
+ * Get detailed debug info about exclusions for a check
170
+ *
171
+ * @param checkId - The check ID
172
+ * @param files - Array of files to analyze
173
+ * @returns Debug information about what was excluded and why
174
+ */
175
+ async function getExclusionDebugInfo(checkId, files) {
176
+ const config = await loadExclusionsConfig();
177
+ const category = checkId.split("/")[0];
178
+ const exclusionsByPattern = new Map();
179
+ const patternSources = new Map();
180
+ // Collect patterns with their sources
181
+ const allPatterns = [];
182
+ if (config.global) {
183
+ for (const pattern of config.global) {
184
+ allPatterns.push(pattern);
185
+ patternSources.set(pattern, "global");
186
+ exclusionsByPattern.set(pattern, []);
187
+ }
188
+ }
189
+ if (category && config[category]) {
190
+ for (const pattern of config[category]) {
191
+ if (!patternSources.has(pattern)) {
192
+ allPatterns.push(pattern);
193
+ patternSources.set(pattern, "category");
194
+ exclusionsByPattern.set(pattern, []);
195
+ }
196
+ }
197
+ }
198
+ if (config[checkId]) {
199
+ for (const pattern of config[checkId]) {
200
+ if (!patternSources.has(pattern)) {
201
+ allPatterns.push(pattern);
202
+ patternSources.set(pattern, "check-specific");
203
+ exclusionsByPattern.set(pattern, []);
204
+ }
205
+ }
206
+ }
207
+ // Check each file against patterns
208
+ let excludedCount = 0;
209
+ for (const file of files) {
210
+ const normalizedPath = file.replace(/\\/g, "/");
211
+ for (const pattern of allPatterns) {
212
+ if (minimatch(normalizedPath, pattern, { matchBase: true })) {
213
+ exclusionsByPattern.get(pattern).push(file);
214
+ excludedCount++;
215
+ break; // Only count file once even if multiple patterns match
216
+ }
217
+ }
218
+ }
219
+ return {
220
+ checkId,
221
+ totalFiles: files.length,
222
+ excludedFiles: excludedCount,
223
+ includedFiles: files.length - excludedCount,
224
+ exclusionsByPattern,
225
+ patternSources,
226
+ };
227
+ }
228
+ /**
229
+ * Print debug info about exclusions (for --debug-exclusions flag)
230
+ */
231
+ function printExclusionDebugInfo(info) {
232
+ console.log(`\nšŸ“‹ Exclusion Debug: ${info.checkId}`);
233
+ console.log(` Total files: ${info.totalFiles}`);
234
+ console.log(` Excluded: ${info.excludedFiles}`);
235
+ console.log(` Included: ${info.includedFiles}`);
236
+ if (info.exclusionsByPattern.size > 0) {
237
+ console.log(`\n Patterns:`);
238
+ for (const [pattern, files] of info.exclusionsByPattern) {
239
+ const source = info.patternSources.get(pattern);
240
+ const sourceTag = source === "global" ? "[global]" :
241
+ source === "category" ? "[category]" : "[check]";
242
+ console.log(` ${sourceTag} "${pattern}" → ${files.length} files`);
243
+ if (files.length > 0 && files.length <= 5) {
244
+ for (const file of files) {
245
+ console.log(` - ${file}`);
246
+ }
247
+ }
248
+ else if (files.length > 5) {
249
+ for (const file of files.slice(0, 3)) {
250
+ console.log(` - ${file}`);
251
+ }
252
+ console.log(` ... and ${files.length - 3} more`);
253
+ }
254
+ }
255
+ }
256
+ }
149
257
  /**
150
258
  * Filter an array of files, removing those that match exclusion patterns
151
259
  *
@@ -1 +1 @@
1
- {"version":3,"file":"exclusions.js","sourceRoot":"","sources":["../../src/shared/exclusions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exclusions.js","sourceRoot":"","sources":["../../src/shared/exclusions.ts"],"names":[],"mappings":"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"}