UNPKG

@bartekbp/typescript-checkstyle

Version:

Library reporting tsc output in checkstyle format

52 lines 2.02 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const tsc_output_parser_1 = require("@aivenio/tsc-output-parser"); const checkstyle_formatter_1 = __importDefault(require("checkstyle-formatter")); const fp_1 = require("lodash/fp"); exports.default = (input) => { // parsing library doesnt support windows, so let's workaround it // by replacing windows line endings with linux const sanitizedInput = input.replace(/\r\n/g, '\n'); const lines = tsc_output_parser_1.parse(sanitizedInput); const errors = lines.map(line => { const details = line.value; const file = details.path.value; const position = details.cursor.value; const message = details.message.value; const errorCode = details.tsError.value.errorString; return { file, details: { cursor: { line: position.line, column: position.col, }, message, tsErrorCode: errorCode, } }; }); const errorsPerFile = fp_1.groupBy(line => line.file, errors); const sortedFiles = Object.keys(errorsPerFile); const fileEntries = sortedFiles.map(filename => { const errorDetails = errorsPerFile[filename] .map(error => error.details); const sortedDetails = fp_1.sortBy(['cursor.line', 'cursor.column'], errorDetails); const messages = sortedDetails.map(details => ({ line: details.cursor.line, column: details.cursor.column, severity: 'error', message: details.message.trim(), source: details.tsErrorCode })); return { filename, messages }; }); return checkstyle_formatter_1.default(fileEntries); }; //# sourceMappingURL=format.js.map