141 lines
4.8 KiB
Plaintext
141 lines
4.8 KiB
Plaintext
import * as eslint from 'eslint';
|
|
import * as semver from 'semver';
|
|
import { c as convertConfigToRc } from './shared/eslint-compat-utils.74f551ea.mjs';
|
|
import { g as getUnsupported } from './shared/eslint-compat-utils.3ecba7ac.mjs';
|
|
import 'module';
|
|
|
|
var __defProp = Object.defineProperty;
|
|
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
var __publicField = (obj, key, value) => {
|
|
__defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
return value;
|
|
};
|
|
let cacheESLint, cacheLegacyESLint;
|
|
function getESLint() {
|
|
return cacheESLint != null ? cacheESLint : cacheESLint = getESLintInternal();
|
|
function getESLintInternal() {
|
|
if (semver.gte(eslint.Linter.version, "9.0.0-0")) {
|
|
return eslint.ESLint;
|
|
}
|
|
return getUnsupported().FlatESLint || (eslint.ESLint ? getESLintClassFromLegacyESLint(eslint.ESLint) : getESLintClassFromLegacyESLint(getLegacyESLintClassFromCLIEngine()));
|
|
}
|
|
}
|
|
function getLegacyESLint() {
|
|
return cacheLegacyESLint != null ? cacheLegacyESLint : cacheLegacyESLint = getLegacyESLintInternal();
|
|
function getLegacyESLintInternal() {
|
|
return getUnsupported().LegacyESLint || eslint.ESLint || getLegacyESLintClassFromCLIEngine();
|
|
}
|
|
}
|
|
function getESLintClassFromLegacyESLint(legacyESLintClass) {
|
|
return class ESLintFromLegacyESLint extends legacyESLintClass {
|
|
static get version() {
|
|
return legacyESLintClass.version;
|
|
}
|
|
constructor(options) {
|
|
super(adjustOptions(options));
|
|
}
|
|
};
|
|
function adjustOptions(options) {
|
|
const {
|
|
baseConfig: originalBaseConfig,
|
|
overrideConfig: originalOverrideConfig,
|
|
overrideConfigFile,
|
|
...newOptions
|
|
} = options || {};
|
|
if (originalBaseConfig) {
|
|
const [baseConfig, plugins] = convertConfig(originalBaseConfig);
|
|
newOptions.baseConfig = baseConfig;
|
|
if (plugins) {
|
|
newOptions.plugins = plugins;
|
|
}
|
|
}
|
|
if (originalOverrideConfig) {
|
|
const [overrideConfig, plugins] = convertConfig(originalOverrideConfig);
|
|
newOptions.overrideConfig = overrideConfig;
|
|
if (plugins) {
|
|
newOptions.plugins = plugins;
|
|
}
|
|
}
|
|
if (overrideConfigFile) {
|
|
if (overrideConfigFile === true) {
|
|
newOptions.useEslintrc = false;
|
|
} else {
|
|
newOptions.overrideConfigFile = overrideConfigFile;
|
|
}
|
|
}
|
|
return newOptions;
|
|
}
|
|
function convertConfig(config) {
|
|
const { plugins, ...otherConfig } = config;
|
|
delete otherConfig.files;
|
|
if (typeof otherConfig.processor !== "string")
|
|
delete otherConfig.processor;
|
|
const newConfig = convertConfigToRc(otherConfig);
|
|
if (plugins) {
|
|
newConfig.plugins = Object.keys(plugins);
|
|
}
|
|
return [newConfig, plugins];
|
|
}
|
|
}
|
|
function getLegacyESLintClassFromCLIEngine() {
|
|
const CLIEngine = eslint.CLIEngine;
|
|
class LegacyESLintFromCLIEngine {
|
|
constructor(options) {
|
|
__publicField(this, "engine");
|
|
const {
|
|
overrideConfig: { plugins, globals, rules, ...overrideConfig } = {
|
|
plugins: [],
|
|
globals: {},
|
|
rules: {}
|
|
},
|
|
fix,
|
|
reportUnusedDisableDirectives,
|
|
plugins: pluginsMap,
|
|
...otherOptions
|
|
} = options || {};
|
|
const cliEngineOptions = {
|
|
fix: Boolean(fix),
|
|
reportUnusedDisableDirectives: reportUnusedDisableDirectives ? reportUnusedDisableDirectives !== "off" : void 0,
|
|
...otherOptions,
|
|
globals: globals ? Object.keys(globals).filter((n) => globals[n]) : void 0,
|
|
plugins: plugins || [],
|
|
rules: rules ? Object.fromEntries(
|
|
Object.entries(rules).flatMap(
|
|
([ruleId, opt]) => opt ? [[ruleId, opt]] : []
|
|
)
|
|
) : void 0,
|
|
...overrideConfig
|
|
};
|
|
this.engine = new CLIEngine(cliEngineOptions);
|
|
for (const [name, plugin] of Object.entries(pluginsMap || {})) {
|
|
this.engine.addPlugin(name, plugin);
|
|
}
|
|
}
|
|
static get version() {
|
|
return CLIEngine.version;
|
|
}
|
|
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
|
|
async lintText(...params) {
|
|
var _a;
|
|
const result = this.engine.executeOnText(params[0], (_a = params[1]) == null ? void 0 : _a.filePath);
|
|
return result.results;
|
|
}
|
|
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
|
|
async lintFiles(...params) {
|
|
const result = this.engine.executeOnFiles(
|
|
Array.isArray(params[0]) ? params[0] : [params[0]]
|
|
);
|
|
return result.results;
|
|
}
|
|
// eslint-disable-next-line @typescript-eslint/require-await -- ignore
|
|
static async outputFixes(...params) {
|
|
return CLIEngine.outputFixes({
|
|
results: params[0]
|
|
});
|
|
}
|
|
}
|
|
return LegacyESLintFromCLIEngine;
|
|
}
|
|
|
|
export { getESLint, getLegacyESLint };
|