UNPKG

typescript-language-server

Version:

Language Server Protocol (LSP) implementation for TypeScript using tsserver

53 lines 2.4 kB
/*--------------------------------------------------------------------------------------------- * 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