UNPKG

loose-ts-check

Version:

Run TS type-check and ignore certain errors in some files

59 lines (58 loc) 3.19 kB
"use strict"; 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;