tslint-to-eslint-config
Version:
Converts your TSLint configuration to the closest reasonable ESLint equivalent.
90 lines (89 loc) • 3.96 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