UNPKG

tslint-to-eslint-config

Version:

Converts your TSLint configuration to the closest reasonable ESLint equivalent.

61 lines 3.66 kB
"use strict"; 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