Skip to content

Commit 8025020

Browse files
committed
perf: use map to improve perfs
1 parent 65aa964 commit 8025020

File tree

1 file changed

+26
-28
lines changed

1 file changed

+26
-28
lines changed

Diff for: src/eslint.ts

+26-28
Original file line numberDiff line numberDiff line change
@@ -3,42 +3,40 @@ import type { ESLint, Linter } from "eslint";
33
export const mergeResults = (
44
results: ESLint.LintResult[],
55
): ESLint.LintResult[] => {
6-
const mergedResults: ESLint.LintResult[] = [];
6+
const mergedResults: Record<string, ESLint.LintResult> = {};
77

88
for (const result of results) {
9-
const prev = mergedResults.find((res) => res.filePath === result.filePath);
10-
11-
if (!prev) {
12-
mergedResults.push(result);
13-
9+
const filePath = result.filePath;
10+
if (!mergedResults[filePath]) {
11+
mergedResults[filePath] = { ...result };
1412
continue;
1513
}
1614

17-
mergedResults[mergedResults.indexOf(prev)] = {
18-
fatalErrorCount: prev.fatalErrorCount + result.fatalErrorCount,
19-
errorCount: prev.errorCount + result.errorCount,
20-
warningCount: prev.warningCount + result.warningCount,
21-
fixableErrorCount: prev.fixableErrorCount + result.fixableErrorCount,
22-
fixableWarningCount:
23-
prev.fixableWarningCount + result.fixableWarningCount,
24-
filePath: prev.filePath,
25-
suppressedMessages: [
26-
...prev.suppressedMessages,
27-
...result.suppressedMessages,
28-
],
29-
messages: [...prev.messages, ...result.messages],
30-
usedDeprecatedRules: [
31-
...prev.usedDeprecatedRules,
32-
...result.usedDeprecatedRules,
33-
],
15+
const existingResult = mergedResults[filePath];
16+
17+
existingResult.fatalErrorCount += result.fatalErrorCount;
18+
existingResult.errorCount += result.errorCount;
19+
existingResult.warningCount += result.warningCount;
20+
existingResult.fixableErrorCount += result.fixableErrorCount;
21+
existingResult.fixableWarningCount += result.fixableWarningCount;
22+
23+
existingResult.suppressedMessages = [
24+
...existingResult.suppressedMessages,
25+
...result.suppressedMessages,
26+
];
27+
28+
existingResult.messages = [...existingResult.messages, ...result.messages];
29+
existingResult.usedDeprecatedRules = [
30+
...existingResult.usedDeprecatedRules,
31+
...result.usedDeprecatedRules,
32+
];
3433

35-
output: result.output ?? prev.output,
36-
source: result.source ?? prev.source,
37-
stats: result.stats ?? prev.stats,
38-
};
34+
existingResult.output = result.output ?? existingResult.output;
35+
existingResult.source = result.source ?? existingResult.source;
36+
existingResult.stats = result.stats ?? existingResult.stats;
3937
}
4038

41-
return mergedResults;
39+
return Object.values(mergedResults);
4240
};
4341

4442
export const overrideConfig: Linter.Config<Linter.RulesRecord>[] = [

0 commit comments

Comments
 (0)