@putout/eslint
Version:
Wrapper that simplifies ESLint API and makes it compatible with 🐊Putout
47 lines (35 loc) • 1.1 kB
JavaScript
import {Linter} from 'eslint';
import {convertToPlace} from '../eslint.js';
export const lint = (source, {fix = true, plugins, filename, options = []}) => {
const linter = new Linter({
configType: 'flat',
});
const allOptions = [];
if (plugins) {
const [name, plugin] = plugins[0];
allOptions.push({
rules: {
[`${name}/plugin`]: 'error',
},
plugins: {
[name]: {
rules: {
plugin,
},
},
},
});
}
allOptions.push(...options);
const mainOptions = {};
if (filename)
mainOptions.filename = filename;
if (!fix) {
const places = linter
.verify(source, allOptions, mainOptions)
.map(convertToPlace);
return [source, places];
}
const {output, messages} = linter.verifyAndFix(source, allOptions, mainOptions);
return [output, messages.map(convertToPlace)];
};