tslint-to-eslint-config
Version:
Converts your TSLint configuration to the closest reasonable ESLint equivalent.
61 lines • 3.66 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.reportConfigConversionResults = void 0;
const chalk_1 = __importDefault(require("chalk"));
const os_1 = require("os");
const reporting_1 = require("../../../reporting");
const reportConfigConversionResults = async (dependencies, outputPath, ruleConversionResults) => {
if (ruleConversionResults.converted.size !== 0) {
(0, reporting_1.logSuccessfulConversions)("rule", "replaced", ruleConversionResults.converted.size, dependencies.logger);
logNotices(ruleConversionResults.converted, dependencies.logger);
}
if (ruleConversionResults.failed.length !== 0) {
(0, reporting_1.logFailedConversions)(ruleConversionResults.failed.map((fail) => fail.getSummary()), dependencies.logger);
}
if (ruleConversionResults.missing.length !== 0) {
(0, reporting_1.logMissingConversionTarget)("rule", (setting) => setting.ruleName, ruleConversionResults.missing, dependencies.logger, [
`The "@typescript-eslint/tslint/config" section of ${outputPath} configures eslint-plugin-tslint to run ${ruleConversionResults.missing.length === 1 ? "it" : "them"} in TSLint within ESLint.`,
]);
}
if (ruleConversionResults.obsolete.size !== 0) {
(0, reporting_1.logObsoleteRules)(Array.from(ruleConversionResults.obsolete), dependencies.logger);
}
if (!ruleConversionResults.extends.join("").includes("prettier")) {
logPrettierExtension(dependencies.logger);
}
};
exports.reportConfigConversionResults = reportConfigConversionResults;
const logNotices = (converted, logger) => {
const rulesWithNotices = Array.from(converted.values()).filter((ruleOptions) => ruleOptions.notices && ruleOptions.notices.length >= 1);
if (rulesWithNotices.length === 0) {
return;
}
const behavior = rulesWithNotices.length === 1
? " behaves differently from its TSLint counterpart"
: "s behave differently from their TSLint counterparts";
logger.stdout.write(chalk_1.default.blueBright(`${os_1.EOL}❗ ${rulesWithNotices.length}`));
logger.stdout.write(chalk_1.default.blue(` ESLint rule${behavior} `));
logger.stdout.write(chalk_1.default.blueBright(`❗${os_1.EOL}`));
logger.stdout.write(chalk_1.default.blue(` Check ${logger.debugFileName} for details.${os_1.EOL}`));
logger.info.write(`${rulesWithNotices.length} ESLint rule${behavior}:${os_1.EOL}`);
for (const rule of rulesWithNotices) {
logger.info.write(` * ${rule.ruleName}:${os_1.EOL}`);
for (const notice of rule.notices) {
logger.info.write(` - ${notice}${os_1.EOL}`);
}
}
logger.info.write(os_1.EOL);
};
const logPrettierExtension = (logger) => {
logger.stdout.write(chalk_1.default.redBright(`${os_1.EOL}☠ Prettier`));
logger.stdout.write(chalk_1.default.red(` plugins are missing from your configuration. `));
logger.stdout.write(chalk_1.default.redBright(`☠${os_1.EOL}`));
logger.stdout.write(chalk_1.default.red(` We highly recommend running `));
logger.stdout.write(chalk_1.default.redBright(`tslint-to-eslint-config --prettier`));
logger.stdout.write(chalk_1.default.red(` to disable formatting ESLint rules.${os_1.EOL}`));
logger.stdout.write(chalk_1.default.red(` See https://github.com/typescript-eslint/tslint-to-eslint-config/blob/master/docs/FAQs.md#should-i-use-prettier.${os_1.EOL}`));
};
//# sourceMappingURL=reportConfigConversionResults.js.map