103 lines
3.0 KiB
Plaintext
103 lines
3.0 KiB
Plaintext
|
'use strict';
|
||
|
|
||
|
const eslint = require('eslint');
|
||
|
const semver = require('semver');
|
||
|
const module$1 = require('module');
|
||
|
|
||
|
function _interopNamespaceCompat(e) {
|
||
|
if (e && typeof e === 'object' && 'default' in e) return e;
|
||
|
const n = Object.create(null);
|
||
|
if (e) {
|
||
|
for (const k in e) {
|
||
|
n[k] = e[k];
|
||
|
}
|
||
|
}
|
||
|
n.default = e;
|
||
|
return n;
|
||
|
}
|
||
|
|
||
|
const eslint__namespace = /*#__PURE__*/_interopNamespaceCompat(eslint);
|
||
|
const semver__namespace = /*#__PURE__*/_interopNamespaceCompat(semver);
|
||
|
|
||
|
function safeRequire(name) {
|
||
|
try {
|
||
|
return module$1.createRequire(`${process.cwd()}/__placeholder__.js`)(name);
|
||
|
} catch {
|
||
|
return void 0;
|
||
|
}
|
||
|
}
|
||
|
function safeRequireResolve(name) {
|
||
|
try {
|
||
|
return module$1.createRequire(`${process.cwd()}/__placeholder__.js`).resolve(name);
|
||
|
} catch {
|
||
|
return name;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function convertConfigToRc(config, linter) {
|
||
|
var _a, _b;
|
||
|
if (Array.isArray(config)) {
|
||
|
throw new Error("Array config is not supported.");
|
||
|
}
|
||
|
const {
|
||
|
languageOptions: originalLanguageOptions,
|
||
|
plugins,
|
||
|
...newConfig
|
||
|
} = config;
|
||
|
if (originalLanguageOptions) {
|
||
|
const {
|
||
|
parser,
|
||
|
globals,
|
||
|
parserOptions,
|
||
|
ecmaVersion,
|
||
|
sourceType,
|
||
|
...languageOptions
|
||
|
} = originalLanguageOptions;
|
||
|
newConfig.parserOptions = {
|
||
|
...!ecmaVersion || ecmaVersion === "latest" ? { ecmaVersion: getLatestEcmaVersion() } : { ecmaVersion },
|
||
|
...sourceType ? { sourceType } : { sourceType: "module" },
|
||
|
...languageOptions,
|
||
|
...parserOptions,
|
||
|
...newConfig.parserOptions
|
||
|
};
|
||
|
if (globals) {
|
||
|
newConfig.globals = {
|
||
|
...globals,
|
||
|
...newConfig.globals
|
||
|
};
|
||
|
}
|
||
|
if (parser && !newConfig.parser) {
|
||
|
const parserName = getParserName(parser);
|
||
|
newConfig.parser = parserName;
|
||
|
(_a = linter == null ? void 0 : linter.defineParser) == null ? void 0 : _a.call(linter, parserName, parser);
|
||
|
}
|
||
|
}
|
||
|
if (plugins) {
|
||
|
for (const [pluginName, plugin] of Object.entries(plugins)) {
|
||
|
for (const [ruleName, rule] of Object.entries(plugin.rules || {})) {
|
||
|
(_b = linter == null ? void 0 : linter.defineRule) == null ? void 0 : _b.call(linter, `${pluginName}/${ruleName}`, rule);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
newConfig.env = {
|
||
|
es6: true,
|
||
|
...newConfig.env
|
||
|
};
|
||
|
return newConfig;
|
||
|
}
|
||
|
function getParserName(parser) {
|
||
|
var _a;
|
||
|
const name = ((_a = parser.meta) == null ? void 0 : _a.name) || parser.name;
|
||
|
if (name === "typescript-eslint/parser") {
|
||
|
return safeRequireResolve("@typescript-eslint/parser");
|
||
|
} else if (name == null && parser === safeRequire("@typescript-eslint/parser"))
|
||
|
return safeRequireResolve("@typescript-eslint/parser");
|
||
|
return safeRequireResolve(name);
|
||
|
}
|
||
|
function getLatestEcmaVersion() {
|
||
|
const eslintVersion = eslint__namespace.Linter.version;
|
||
|
return semver__namespace.gte(eslintVersion, "8.0.0") ? "latest" : semver__namespace.gte(eslintVersion, "7.8.0") ? 2021 : semver__namespace.gte(eslintVersion, "6.2.0") ? 2020 : semver__namespace.gte(eslintVersion, "5.0.0") ? 2019 : 2018;
|
||
|
}
|
||
|
|
||
|
exports.convertConfigToRc = convertConfigToRc;
|