From 5c9c2ea1f1dc398a9225e7ccd5ed50e9aa1392fd Mon Sep 17 00:00:00 2001 From: Tomas Hubelbauer Date: Thu, 4 Mar 2021 22:39:20 +0100 Subject: [PATCH 1/2] Strip ?search query off module names --- src/compiler/program.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/compiler/program.ts b/src/compiler/program.ts index 8cf16a806ecfd..efdf6276d488a 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -517,12 +517,20 @@ namespace ts { const resolutions: T[] = []; const cache = new Map(); for (const name of names) { + let _name = name; + + // Remove URL search path from module name if present (`./mod?test` becomes `./mod`) + const match = _name.match(/^(.*?)\?.*$/); + if (match) { + _name = match[1]; + } + let result: T; - if (cache.has(name)) { - result = cache.get(name)!; + if (cache.has(_name)) { + result = cache.get(_name)!; } else { - cache.set(name, result = loader(name, containingFile, redirectedReference)); + cache.set(_name, result = loader(_name, containingFile, redirectedReference)); } resolutions.push(result); } @@ -1804,7 +1812,7 @@ namespace ts { } function getCachedSemanticDiagnostics(sourceFile?: SourceFile): readonly Diagnostic[] | undefined { - return sourceFile + return sourceFile ? cachedBindAndCheckDiagnosticsForFile.perFile?.get(sourceFile.path) : cachedBindAndCheckDiagnosticsForFile.allDiagnostics; } From 533ed5cb270c53fa38a2d04846f4c2581ba84661 Mon Sep 17 00:00:00 2001 From: Tomas Hubelbauer Date: Fri, 5 Mar 2021 19:37:18 +0100 Subject: [PATCH 2/2] Redirect logger to hard-coded location for inspection --- src/tsserver/nodeServer.ts | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/src/tsserver/nodeServer.ts b/src/tsserver/nodeServer.ts index 212a22e356d90..35f9fec7d59ff 100644 --- a/src/tsserver/nodeServer.ts +++ b/src/tsserver/nodeServer.ts @@ -25,7 +25,7 @@ namespace ts.server { write(data: string, encoding: string): boolean; } - function parseLoggingEnvironmentString(logEnvStr: string | undefined): LogOptions { + void function parseLoggingEnvironmentString(logEnvStr: string | undefined): LogOptions { if (!logEnvStr) { return {}; } @@ -233,7 +233,7 @@ namespace ts.server { // Override sys.write because fs.writeSync is not reliable on Node 4 sys.write = (s: string) => writeMessage(sys.bufferFrom!(s, "utf8") as globalThis.Buffer); - // REVIEW: for now this implementation uses polling. + // REVIEW: for now this implementation uses polling. // The advantage of polling is that it works reliably // on all os and with network mounted files. // For 90 referenced files, the average time to detect @@ -300,22 +300,7 @@ namespace ts.server { // TSS_LOG "{ level: "normal | verbose | terse", file?: string}" function createLogger() { - const cmdLineLogFileName = findArgument("--logFile"); - const cmdLineVerbosity = getLogLevel(findArgument("--logVerbosity")); - const envLogOptions = parseLoggingEnvironmentString(process.env.TSS_LOG); - - const unsubstitutedLogFileName = cmdLineLogFileName - ? stripQuotes(cmdLineLogFileName) - : envLogOptions.logToFile - ? envLogOptions.file || (__dirname + "/.log" + process.pid.toString()) - : undefined; - - const substitutedLogFileName = unsubstitutedLogFileName - ? unsubstitutedLogFileName.replace("PID", process.pid.toString()) - : undefined; - - const logVerbosity = cmdLineVerbosity || envLogOptions.detailLevel; - return new Logger(substitutedLogFileName!, envLogOptions.traceToConsole!, logVerbosity!); // TODO: GH#18217 + return new Logger('/Users/tomashubelbauer/Desktop/ts-esm-search/tsserver.log', false, LogLevel.verbose); // TODO: GH#18217 } function writeMessage(buf: Buffer) {