Skip to content

Commit 404c5dc

Browse files
committed
refactor(typescript): simplify snapshot retrieval in language service plugins
1 parent 15f8750 commit 404c5dc

File tree

2 files changed

+28
-24
lines changed

2 files changed

+28
-24
lines changed

packages/typescript/lib/quickstart/createAsyncLanguageServicePlugin.ts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export function createAsyncLanguageServicePlugin(
4040
if (extensions.some(ext => fileName.endsWith(ext))) {
4141
return emptySnapshot;
4242
}
43-
if (info.project.getScriptInfo(fileName)?.isScriptOpen()) {
43+
if (getScriptInfo(fileName)?.isScriptOpen()) {
4444
return emptySnapshot;
4545
}
4646
}
@@ -51,7 +51,7 @@ export function createAsyncLanguageServicePlugin(
5151
if (extensions.some(ext => fileName.endsWith(ext))) {
5252
return 'initializing...';
5353
}
54-
if (info.project.getScriptInfo(fileName)?.isScriptOpen()) {
54+
if (getScriptInfo(fileName)?.isScriptOpen()) {
5555
return getScriptVersion(fileName) + ',initializing...';
5656
}
5757
}
@@ -92,17 +92,12 @@ export function createAsyncLanguageServicePlugin(
9292
],
9393
new FileMap(ts.sys.useCaseSensitiveFileNames),
9494
fileName => {
95-
let snapshot: ts.IScriptSnapshot | undefined;
96-
97-
try { // getSnapshot could be crashed if the file is too large
98-
snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
99-
if (!snapshot) {
100-
// trigger projectService.getOrCreateScriptInfoNotOpenedByClient
101-
info.project.getScriptVersion(fileName);
102-
snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
103-
}
104-
} catch { }
105-
95+
let snapshot = getScriptInfo(fileName)?.getSnapshot();
96+
if (!snapshot) {
97+
// trigger projectService.getOrCreateScriptInfoNotOpenedByClient
98+
info.project.getScriptVersion(fileName);
99+
snapshot = getScriptInfo(fileName)?.getSnapshot();
100+
}
106101
if (snapshot) {
107102
language.scripts.set(fileName, snapshot);
108103
}
@@ -124,6 +119,13 @@ export function createAsyncLanguageServicePlugin(
124119
}
125120

126121
return info.languageService;
122+
123+
function getScriptInfo(fileName: string) {
124+
// getSnapshot could be crashed if the file is too large
125+
try {
126+
return info.project.getScriptInfo(fileName);
127+
} catch { }
128+
}
127129
},
128130
getExternalFiles(project, updateLevel = 0) {
129131
if (

packages/typescript/lib/quickstart/createLanguageServicePlugin.ts

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -41,17 +41,12 @@ export function createLanguageServicePlugin(
4141
],
4242
new FileMap(ts.sys.useCaseSensitiveFileNames),
4343
fileName => {
44-
let snapshot: ts.IScriptSnapshot | undefined;
45-
46-
try { // getSnapshot could be crashed if the file is too large
47-
snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
48-
if (!snapshot) {
49-
// trigger projectService.getOrCreateScriptInfoNotOpenedByClient
50-
info.project.getScriptVersion(fileName);
51-
snapshot = info.project.getScriptInfo(fileName)?.getSnapshot();
52-
}
53-
} catch { }
54-
44+
let snapshot = getScriptInfo(fileName)?.getSnapshot();
45+
if (!snapshot) {
46+
// trigger projectService.getOrCreateScriptInfoNotOpenedByClient
47+
info.project.getScriptVersion(fileName);
48+
snapshot = getScriptInfo(fileName)?.getSnapshot();
49+
}
5550
if (snapshot) {
5651
language.scripts.set(fileName, snapshot);
5752
}
@@ -69,6 +64,13 @@ export function createLanguageServicePlugin(
6964
}
7065

7166
return info.languageService;
67+
68+
function getScriptInfo(fileName: string) {
69+
// getSnapshot could be crashed if the file is too large
70+
try {
71+
return info.project.getScriptInfo(fileName);
72+
} catch { }
73+
}
7274
},
7375
getExternalFiles(project, updateLevel = 0) {
7476
if (

0 commit comments

Comments
 (0)