11import { loadESLint } from 'eslint'
22
33import { BaseLinter } from '../base'
4- import { LintMessage , LintResult } from '../results'
4+ import { LintMessage , RuleMeta } from '../results'
55
66export class ESLint implements BaseLinter {
77 constructor ( private options : { targets : string [ ] , fix ?: boolean } ) { }
88
9- async run ( ) : Promise < LintResult [ ] > {
9+ async run ( ) {
1010 const originESLint = await loadESLint ( {
1111 useFlatConfig : true
1212 } )
@@ -16,29 +16,43 @@ export class ESLint implements BaseLinter {
1616 errorOnUnmatchedPattern : false
1717 } )
1818
19- const results = await instance . lintFiles ( this . options . targets )
19+ const eslintResults = await instance . lintFiles ( this . options . targets )
2020
2121 if ( this . options . fix ) {
22- await originESLint . outputFixes ( results )
22+ await originESLint . outputFixes ( eslintResults )
2323 }
2424
25- return results . map ( ( { filePath, messages } ) => {
25+ const results = eslintResults . map ( ( { filePath, messages } ) => {
2626 return {
2727 filePath,
2828 messages : messages . map ( message => {
29- const result : LintMessage = {
29+ return {
3030 column : message . column ,
3131 line : message . line ,
32- endColumn : message . endColumn ?? message . column ,
33- endLine : message . endLine ?? message . line ,
32+ endColumn : message . endColumn ,
33+ endLine : message . endLine ,
3434 ruleId : message . ruleId ?? null ,
3535 message : message . message ,
3636 severity : message . severity
37- }
38-
39- return result
37+ } satisfies LintMessage
4038 } )
4139 }
4240 } )
41+ const allMessages = eslintResults . flatMap ( ( { messages } ) => messages )
42+ const rules = Object . entries ( instance . getRulesMetaForResults ( eslintResults ) )
43+ . map ( ( [ id , { docs } ] ) => {
44+ const firstMessage = allMessages . find ( ( { ruleId } ) => ruleId === id )
45+
46+ return {
47+ id,
48+ description : docs ?. description ,
49+ severity : firstMessage ?. severity ?? 1
50+ } satisfies RuleMeta
51+ } )
52+
53+ return {
54+ results,
55+ rules
56+ }
4357 }
4458}
0 commit comments