typescript-language-server
Version:
Language Server Protocol (LSP) implementation for TypeScript using tsserver
53 lines • 2.4 kB
JavaScript
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
/*
* Copyright (C) 2022 TypeFox and others.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*/
export class TypeScriptServerError extends Error {
constructor(serverId, version, response, serverMessage, serverStack) {
super(`<${serverId}> TypeScript Server Error (${version.versionString})\n${serverMessage}\n${serverStack}`);
this.serverId = serverId;
this.version = version;
this.response = response;
this.serverMessage = serverMessage;
this.serverStack = serverStack;
}
static create(serverId, version, response) {
const parsedResult = TypeScriptServerError.parseErrorText(response);
return new TypeScriptServerError(serverId, version, response, parsedResult?.message, parsedResult?.stack);
}
get serverErrorText() {
return this.response.message;
}
get serverCommand() {
return this.response.command;
}
/**
* Given a `errorText` from a tsserver request indicating failure in handling a request.
*/
static parseErrorText(response) {
const errorText = response.message;
if (errorText) {
const errorPrefix = 'Error processing request. ';
if (errorText.startsWith(errorPrefix)) {
const prefixFreeErrorText = errorText.substr(errorPrefix.length);
const newlineIndex = prefixFreeErrorText.indexOf('\n');
if (newlineIndex >= 0) {
// Newline expected between message and stack.
const stack = prefixFreeErrorText.substring(newlineIndex + 1);
return {
message: prefixFreeErrorText.substring(0, newlineIndex),
stack,
};
}
}
}
return undefined;
}
}
//# sourceMappingURL=serverError.js.map