javascript-typescript-langserver
Version:
Implementation of the Language Server Protocol for JavaScript and TypeScript
43 lines • 1.7 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const ts = require("typescript");
const vscode_languageserver_1 = require("vscode-languageserver");
/**
* Converts a TypeScript Diagnostic to an LSP Diagnostic
*/
function convertTsDiagnostic(diagnostic) {
const text = ts.flattenDiagnosticMessageText(diagnostic.messageText, '\n');
let range = { start: { character: 0, line: 0 }, end: { character: 0, line: 0 } };
if (diagnostic.file && diagnostic.start && diagnostic.length) {
range = {
start: diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start),
end: diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start + diagnostic.length),
};
}
return {
range,
message: text,
severity: convertDiagnosticCategory(diagnostic.category),
code: diagnostic.code,
source: diagnostic.source || 'ts',
};
}
exports.convertTsDiagnostic = convertTsDiagnostic;
/**
* Converts a diagnostic category to an LSP DiagnosticSeverity
*
* @param category The Typescript DiagnosticCategory
*/
function convertDiagnosticCategory(category) {
switch (category) {
case ts.DiagnosticCategory.Error:
return vscode_languageserver_1.DiagnosticSeverity.Error;
case ts.DiagnosticCategory.Warning:
return vscode_languageserver_1.DiagnosticSeverity.Warning;
case ts.DiagnosticCategory.Message:
return vscode_languageserver_1.DiagnosticSeverity.Information;
case ts.DiagnosticCategory.Suggestion:
return vscode_languageserver_1.DiagnosticSeverity.Hint;
}
}
//# sourceMappingURL=diagnostics.js.map
;