UNPKG

@oxlint/migrate

Version:

Generates a `.oxlintrc.json` from a existing eslint flat config

92 lines (91 loc) 3.03 kB
import { removeGlobalsWithAreCoveredByEnv, transformBoolGlobalToString, ES_VERSIONS, cleanUpUselessOverridesEnv } from "./env_globals.mjs"; import { replaceTypescriptAliasRules, replaceNodePluginName, cleanUpRulesWhichAreCoveredByCategory, cleanUpUselessOverridesRules, cleanUpUselessOverridesPlugins } from "./plugins_rules.mjs"; import { isEqualDeep } from "./utilities.mjs"; const TS_ESLINT_DEFAULT_OVERRIDE = { files: ["**/*.ts", "**/*.tsx", "**/*.mts", "**/*.cts"], rules: { "no-class-assign": "off", "no-const-assign": "off", "no-dupe-class-members": "off", "no-dupe-keys": "off", "no-func-assign": "off", "no-import-assign": "off", "no-new-native-nonconstructor": "off", "no-obj-calls": "off", "no-redeclare": "off", "no-setter-return": "off", "no-this-before-super": "off", "no-unsafe-negation": "off", "no-var": "error", "prefer-rest-params": "error", "prefer-spread": "error" } }; const cleanUpDefaultTypeScriptOverridesForEslint = (config) => { if (config.overrides === void 0) { return; } const indexesToDelete = []; for (const index in config.overrides) { const override = config.overrides[index]; if (isEqualDeep(override, TS_ESLINT_DEFAULT_OVERRIDE)) { indexesToDelete.push(index); } } indexesToDelete.forEach((index) => delete config.overrides[index]); config.overrides = config.overrides.filter( (overrides) => Object.keys(overrides).length > 0 ); if (Object.keys(config.overrides).length === 0) { delete config.overrides; } }; const cleanUpUselessOverridesEntries = (config) => { cleanUpDefaultTypeScriptOverridesForEslint(config); cleanUpUselessOverridesRules(config); cleanUpUselessOverridesPlugins(config); cleanUpUselessOverridesEnv(config); if (config.overrides === void 0) { return; } for (const overrideIndex in config.overrides) { if (Object.keys(config.overrides[overrideIndex]).length === 1) { delete config.overrides[overrideIndex]; } } config.overrides = config.overrides.filter( (overrides) => Object.keys(overrides).length > 0 ); if (config.overrides.length === 0) { delete config.overrides; } }; const cleanUpOxlintConfig = (config) => { removeGlobalsWithAreCoveredByEnv(config); transformBoolGlobalToString(config); replaceTypescriptAliasRules(config); replaceNodePluginName(config); cleanUpRulesWhichAreCoveredByCategory(config); if (config.globals !== void 0 && Object.keys(config.globals).length === 0) { delete config.globals; } if (config.env !== void 0) { delete config.env.es3; delete config.env.es5; delete config.env.es2015; let detected = false; for (const esVersion of [...ES_VERSIONS].reverse()) { if (detected) { delete config.env[`es${esVersion}`]; } else if (config.env[`es${esVersion}`] === true) { detected = true; } } } if (!("files" in config)) { cleanUpUselessOverridesEntries(config); } }; export { cleanUpOxlintConfig };