From beef295f9ad1340d9ef0789ccd0ea780155eeb1e Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Fri, 11 Jan 2019 14:23:01 -0800 Subject: [PATCH] Normalize the TS server path in logged TS server errors --- .../src/tsServer/server.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/extensions/typescript-language-features/src/tsServer/server.ts b/extensions/typescript-language-features/src/tsServer/server.ts index f6070274293..b657449ee32 100644 --- a/extensions/typescript-language-features/src/tsServer/server.ts +++ b/extensions/typescript-language-features/src/tsServer/server.ts @@ -17,6 +17,7 @@ import LogDirectoryProvider from '../utils/logDirectoryProvider'; import Logger from '../utils/logger'; import { TypeScriptPluginPathsProvider } from '../utils/pluginPathsProvider'; import { PluginManager } from '../utils/plugins'; +import { escapeRegExp } from '../utils/regexp'; import TelemetryReporter from '../utils/telemetry'; import Tracer from '../utils/tracer'; import { TypeScriptVersion, TypeScriptVersionProvider } from '../utils/versionProvider'; @@ -30,7 +31,20 @@ class TypeScriptServerError extends Error { version: TypeScriptVersion, public readonly response: Proto.Response, ) { - super(`TypeScript Server Error (${version.versionString})\n${response.message}`); + super(`TypeScript Server Error (${version.versionString})\n${TypeScriptServerError.normalizeMessageStack(version, response.message)}`); + } + + /** + * Try to replace full TS Server paths with 'tsserver.js' so that we don't have to post process the data as much + */ + private static normalizeMessageStack( + version: TypeScriptVersion, + message: string | undefined, + ) { + if (!message) { + return message; + } + return message.replace(new RegExp(`${escapeRegExp(version.path)}[/\\\\]tsserver.js:`, 'gi'), 'tsserver.js:'); } }