loose-ts-check
Version:
Run TS type-check and ignore certain errors in some files
59 lines (58 loc) • 3.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.program = void 0;
const chalk = require("chalk");
const file_path_matcher_1 = require("../file-path-matcher");
const tsc_errors_1 = require("../tsc-errors");
const config_1 = require("./config");
const reporting_1 = require("./reporting");
const program = (cliDependencies, programInput) => {
const readResult = (0, config_1.readConfig)(cliDependencies);
if (!readResult) {
return { error: true };
}
const { ignoredErrorCodesArray, looselyTypeCheckedFilePathsArray } = readResult;
const ignoredErrorCodes = new Set(ignoredErrorCodesArray);
const validationErrors = (0, tsc_errors_1.validateTscErrorCodes)(ignoredErrorCodes);
if (validationErrors.length > 0) {
cliDependencies.log(`Invalid TSC error codes in ${cliDependencies.cliOptions['ignored-error-codes']}`);
validationErrors.forEach(cliDependencies.log);
return { error: true };
}
const looselyTypeCheckedFilePathMatcher = new file_path_matcher_1.FilePathMatcher(looselyTypeCheckedFilePathsArray);
const tscErrors = (0, tsc_errors_1.parseTscErrors)(programInput);
if (tscErrors.length === 0) {
cliDependencies.log(chalk.green('No TSC errors detected'));
return;
}
cliDependencies.log(`${chalk.red(tscErrors.length)} errors detected`);
if (cliDependencies.cliOptions.init) {
(0, config_1.initializeConfigurationFiles)(cliDependencies, tscErrors);
return;
}
const { ignoredTscErrors, unignoredTscErrors, tscErrorsThatCouldBeIgnored, validTscErrors, } = (0, tsc_errors_1.partitionTscErrors)({
tscErrors,
ignoredErrorCodes,
looselyTypeCheckedFilePathMatcher,
});
cliDependencies.log(`${chalk.yellow(ignoredTscErrors.length)} errors have been ignored`);
if (unignoredTscErrors.length > 0) {
cliDependencies.log(`${chalk.red(unignoredTscErrors.length)} errors were not ignored`);
}
const updatedLooselyTypeCheckedFilePaths = new Set(looselyTypeCheckedFilePathsArray);
const updatedIgnoredErrorCodes = new Set(ignoredErrorCodes);
const reportingResult = (0, reporting_1.aggregateReportingResults)([
(0, reporting_1.reportTscErrorsThatCouldBeIgnored)(cliDependencies, tscErrorsThatCouldBeIgnored),
(0, reporting_1.reportLooselyTypeCheckedFilePathsWithoutErrors)(cliDependencies, looselyTypeCheckedFilePathMatcher, updatedLooselyTypeCheckedFilePaths, tscErrors),
(0, reporting_1.reportValidTscErrors)(cliDependencies, validTscErrors),
(0, reporting_1.reportIgnoredErrorsThatDidNotOccur)(cliDependencies, tscErrors, updatedIgnoredErrorCodes),
]);
if (cliDependencies.cliOptions['auto-update']) {
(0, config_1.updateLooselyTypeCheckedFilePaths)(cliDependencies, new Set(looselyTypeCheckedFilePathsArray), updatedLooselyTypeCheckedFilePaths);
(0, config_1.updateIgnoredErrorCodes)(cliDependencies, ignoredErrorCodes, updatedIgnoredErrorCodes);
}
if (reportingResult === null || reportingResult === void 0 ? void 0 : reportingResult.shouldFail) {
return { error: true };
}
};
exports.program = program;