tsd
Version:
Check TypeScript type definitions
45 lines (44 loc) • 1.77 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const eslint_formatter_pretty_1 = __importDefault(require("eslint-formatter-pretty"));
const jest_diff_1 = require("jest-diff");
/**
* Format the TypeScript diagnostics to a human readable output.
*
* @param diagnostics - List of TypeScript diagnostics.
* @param showDiff - Display difference between expected and received types.
* @returns Beautiful diagnostics output
*/
exports.default = (diagnostics, showDiff = false) => {
const fileMap = new Map();
for (const diagnostic of diagnostics) {
let entry = fileMap.get(diagnostic.fileName);
if (!entry) {
entry = {
filePath: diagnostic.fileName,
errorCount: 0,
warningCount: 0,
messages: []
};
fileMap.set(diagnostic.fileName, entry);
}
if (showDiff && diagnostic.diff) {
let difference = (0, jest_diff_1.diffStringsUnified)(diagnostic.diff.expected, diagnostic.diff.received, { omitAnnotationLines: true });
if (difference) {
difference = difference.split('\n').map(line => ` ${line}`).join('\n');
diagnostic.message = `${diagnostic.message}\n\n${difference}`;
}
}
if (diagnostic.severity === 'error') {
entry.errorCount++;
}
else if (diagnostic.severity === 'warning') {
entry.warningCount++;
}
entry.messages.push(diagnostic);
}
return String((0, eslint_formatter_pretty_1.default)([...fileMap.values()]));
};
;