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

2 years ago
"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;
}