49 lines
No EOL
1.7 KiB
TypeScript
49 lines
No EOL
1.7 KiB
TypeScript
// @ts-check
|
|
const ts = require("../../lib/typescript");
|
|
const log = require("fancy-log"); // was `require("gulp-util").log (see https://github.com/gulpjs/gulp-util)
|
|
|
|
/** @type {FormatDiagnosticsHost} */
|
|
const formatDiagnosticsHost = exports.formatDiagnosticsHost = {
|
|
getCanonicalFileName: fileName => fileName,
|
|
getCurrentDirectory: () => process.cwd(),
|
|
getNewLine: () => ts.sys.newLine
|
|
};
|
|
|
|
/**
|
|
* @param {Diagnostic[]} diagnostics
|
|
* @param {{ cwd?: string, pretty?: boolean }} [options]
|
|
*/
|
|
function formatDiagnostics(diagnostics, options) {
|
|
return options && options.pretty
|
|
? ts.formatDiagnosticsWithColorAndContext(diagnostics, getFormatDiagnosticsHost(options && options.cwd))
|
|
: ts.formatDiagnostics(diagnostics, getFormatDiagnosticsHost(options && options.cwd));
|
|
}
|
|
exports.formatDiagnostics = formatDiagnostics;
|
|
|
|
/**
|
|
* @param {Diagnostic[]} diagnostics
|
|
* @param {{ cwd?: string }} [options]
|
|
*/
|
|
function reportDiagnostics(diagnostics, options) {
|
|
log(formatDiagnostics(diagnostics, { cwd: options && options.cwd, pretty: process.stdout.isTTY }));
|
|
}
|
|
exports.reportDiagnostics = reportDiagnostics;
|
|
|
|
/**
|
|
* @param {string | undefined} cwd
|
|
* @returns {FormatDiagnosticsHost}
|
|
*/
|
|
function getFormatDiagnosticsHost(cwd) {
|
|
if (!cwd || cwd === process.cwd()) return formatDiagnosticsHost;
|
|
return {
|
|
getCanonicalFileName: formatDiagnosticsHost.getCanonicalFileName,
|
|
getCurrentDirectory: () => cwd,
|
|
getNewLine: formatDiagnosticsHost.getNewLine
|
|
};
|
|
}
|
|
|
|
/**
|
|
* @typedef {import("../../lib/typescript").FormatDiagnosticsHost} FormatDiagnosticsHost
|
|
* @typedef {import("../../lib/typescript").Diagnostic} Diagnostic
|
|
*/
|
|
void 0; |