@@ -2,6 +2,7 @@ const { dirname, isAbsolute, join } = require('path');
2
2
3
3
const ESLintError = require ( './ESLintError' ) ;
4
4
const { getESLint } = require ( './getESLint' ) ;
5
+ const { arrify } = require ( './utils' ) ;
5
6
6
7
/** @typedef {import('eslint').ESLint } ESLint */
7
8
/** @typedef {import('eslint').ESLint.Formatter } Formatter */
@@ -59,7 +60,7 @@ function linter(key, options, compilation) {
59
60
* @param {string | string[] } files
60
61
*/
61
62
function lint ( files ) {
62
- for ( const file of asList ( files ) ) {
63
+ for ( const file of arrify ( files ) ) {
63
64
delete crossRunResultStorage [ file ] ;
64
65
}
65
66
rawResults . push (
@@ -192,10 +193,7 @@ function parseResults(options, results) {
192
193
) ;
193
194
194
195
if ( messages . length > 0 ) {
195
- errors . push ( {
196
- ...file ,
197
- messages,
198
- } ) ;
196
+ errors . push ( { ...file , messages } ) ;
199
197
}
200
198
}
201
199
@@ -205,10 +203,7 @@ function parseResults(options, results) {
205
203
) ;
206
204
207
205
if ( messages . length > 0 ) {
208
- warnings . push ( {
209
- ...file ,
210
- messages,
211
- } ) ;
206
+ warnings . push ( { ...file , messages } ) ;
212
207
}
213
208
}
214
209
} ) ;
@@ -267,20 +262,21 @@ async function removeIgnoredWarnings(eslint, results) {
267
262
// fatal is false for ignored file warnings.
268
263
// ruleId is unset for internal ESLint errors.
269
264
// line is unset for warnings not involving file contents.
265
+ const { messages, warningCount, errorCount, filePath } = result ;
266
+ const [ firstMessage ] = messages ;
267
+ const hasWarning = warningCount === 1 && errorCount === 0 ;
270
268
const ignored =
271
- result . messages . length === 0 ||
272
- ( result . warningCount === 1 &&
273
- result . errorCount === 0 &&
274
- ! result . messages [ 0 ] . fatal &&
275
- ! result . messages [ 0 ] . ruleId &&
276
- ! result . messages [ 0 ] . line &&
277
- ( await eslint . isPathIgnored ( result . filePath ) ) ) ;
278
-
269
+ messages . length === 0 ||
270
+ ( hasWarning &&
271
+ ! firstMessage . fatal &&
272
+ ! firstMessage . ruleId &&
273
+ ! firstMessage . line &&
274
+ ( await eslint . isPathIgnored ( filePath ) ) ) ;
279
275
return ignored ? false : result ;
280
276
} ) ;
281
277
282
278
// @ts -ignore
283
- return ( await Promise . all ( filterPromises ) ) . filter ( ( result ) => ! ! result ) ;
279
+ return ( await Promise . all ( filterPromises ) ) . filter ( Boolean ) ;
284
280
}
285
281
286
282
/**
@@ -308,12 +304,4 @@ function getResultStorage({ compiler }) {
308
304
return storage ;
309
305
}
310
306
311
- /**
312
- * @param {string | string[] } x
313
- */
314
- function asList ( x ) {
315
- /* istanbul ignore next */
316
- return Array . isArray ( x ) ? x : [ x ] ;
317
- }
318
-
319
307
module . exports = linter ;
0 commit comments