You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.1 KiB
50 lines
1.1 KiB
"use strict"; |
|
|
|
/** @typedef {import('eslint').ESLint} ESLint */ |
|
|
|
/** @typedef {import('eslint').ESLint.Options} ESLintOptions */ |
|
Object.assign(module.exports, { |
|
lintFiles, |
|
setup |
|
}); |
|
/** @type {{ new (arg0: import("eslint").ESLint.Options): import("eslint").ESLint; outputFixes: (arg0: import("eslint").ESLint.LintResult[]) => any; }} */ |
|
|
|
let ESLint; |
|
/** @type {ESLint} */ |
|
|
|
let eslint; |
|
/** @type {boolean} */ |
|
|
|
let fix; |
|
/** |
|
* @typedef {object} setupOptions |
|
* @property {string=} eslintPath - import path of eslint |
|
* @property {ESLintOptions=} eslintOptions - linter options |
|
* |
|
* @param {setupOptions} arg0 - setup worker |
|
*/ |
|
|
|
function setup({ |
|
eslintPath, |
|
eslintOptions = {} |
|
}) { |
|
fix = !!(eslintOptions && eslintOptions.fix); |
|
({ |
|
ESLint |
|
} = require(eslintPath || 'eslint')); |
|
eslint = new ESLint(eslintOptions); |
|
} |
|
/** |
|
* @param {string | string[]} files |
|
*/ |
|
|
|
|
|
async function lintFiles(files) { |
|
const result = await eslint.lintFiles(files); // if enabled, use eslint autofixing where possible |
|
|
|
if (fix) { |
|
await ESLint.outputFixes(result); |
|
} |
|
|
|
return result; |
|
} |