Skip to content

Commit d636a2e

Browse files
committed
Speed up sanitizeLibFileText
1 parent a2ffa94 commit d636a2e

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

src/harness/harnessIO.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -233,24 +233,27 @@ export namespace Compiler {
233233
export const es2015DefaultLibFileName = "lib.es2015.d.ts";
234234

235235
// Cache of lib files from "built/local"
236-
export let libFileNameSourceFileMap: Map<string, ts.SourceFile> | undefined;
236+
export let libFileNameSourceFileMap: Map<string, { file: ts.SourceFile; stringified: string; }> | undefined;
237237

238238
export function getDefaultLibrarySourceFile(fileName: string = defaultLibFileName): ts.SourceFile | undefined {
239239
if (!isDefaultLibraryFile(fileName)) {
240240
return undefined;
241241
}
242242

243243
if (!libFileNameSourceFileMap) {
244+
const file = createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + "lib.es5.d.ts")!, /*languageVersion*/ ts.ScriptTarget.Latest);
244245
libFileNameSourceFileMap = new Map(Object.entries({
245-
[defaultLibFileName]: createSourceFileAndAssertInvariants(defaultLibFileName, IO.readFile(libFolder + "lib.es5.d.ts")!, /*languageVersion*/ ts.ScriptTarget.Latest),
246+
[defaultLibFileName]: { file, stringified: JSON.stringify(file.text) },
246247
}));
247248
}
248249

249250
let sourceFile = libFileNameSourceFileMap.get(fileName);
250251
if (!sourceFile) {
251-
libFileNameSourceFileMap.set(fileName, sourceFile = createSourceFileAndAssertInvariants(fileName, IO.readFile(libFolder + fileName)!, ts.ScriptTarget.Latest));
252+
const file = createSourceFileAndAssertInvariants(fileName, IO.readFile(libFolder + fileName)!, ts.ScriptTarget.Latest)
253+
sourceFile = { file, stringified: JSON.stringify(file.text) };
254+
libFileNameSourceFileMap.set(fileName, sourceFile);
252255
}
253-
return sourceFile;
256+
return sourceFile.file;
254257
}
255258

256259
export function getDefaultLibFileName(options: ts.CompilerOptions): string {

src/harness/tsserverLogger.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,8 @@ function sanitizeHarnessLSException(s: string) {
144144

145145
export function sanitizeLibFileText(s: string): string {
146146
Compiler.libFileNameSourceFileMap?.forEach((lib, fileName) => {
147-
s = replaceAll(s, JSON.stringify(lib.text), `${fileName}-Text`);
148-
s = replaceAll(s, lib.text, `${fileName}-Text`);
147+
s = replaceAll(s, lib.stringified, `${fileName}-Text`);
148+
s = replaceAll(s, lib.file.text, `${fileName}-Text`);
149149
});
150150
return s;
151151
}

0 commit comments

Comments
 (0)