@volar/typescript 1.9.0 → 1.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/serverPlugin.js +8 -2
- package/out/sys.js +50 -41
- package/package.json +4 -4
package/out/serverPlugin.js
CHANGED
|
@@ -29,7 +29,10 @@ function decorateLanguageServiceHost(virtualFiles, languageServiceHost, ts, exts
|
|
|
29
29
|
const resolvedModules = resolveModuleNameLiterals(moduleNames, containingFile, redirectedReference, options, ...rest);
|
|
30
30
|
return moduleNames.map((name, i) => {
|
|
31
31
|
if (exts.some(ext => name.text.endsWith(ext))) {
|
|
32
|
-
|
|
32
|
+
const resolved = resolveModuleName(name.text, containingFile, options, redirectedReference);
|
|
33
|
+
if (resolved.resolvedModule) {
|
|
34
|
+
return resolved;
|
|
35
|
+
}
|
|
33
36
|
}
|
|
34
37
|
return resolvedModules[i];
|
|
35
38
|
});
|
|
@@ -40,7 +43,10 @@ function decorateLanguageServiceHost(virtualFiles, languageServiceHost, ts, exts
|
|
|
40
43
|
const resolvedModules = resolveModuleNames(moduleNames, containingFile, reusedNames, redirectedReference, options, containingSourceFile);
|
|
41
44
|
return moduleNames.map((name, i) => {
|
|
42
45
|
if (exts.some(ext => name.endsWith(ext))) {
|
|
43
|
-
|
|
46
|
+
const resolved = resolveModuleName(name, containingFile, options, redirectedReference);
|
|
47
|
+
if (resolved.resolvedModule) {
|
|
48
|
+
return resolved.resolvedModule;
|
|
49
|
+
}
|
|
44
50
|
}
|
|
45
51
|
return resolvedModules[i];
|
|
46
52
|
});
|
package/out/sys.js
CHANGED
|
@@ -6,12 +6,12 @@ const utilities_1 = require("./typescript/utilities");
|
|
|
6
6
|
let currentCwd = '';
|
|
7
7
|
function createSys(ts, env) {
|
|
8
8
|
let version = 0;
|
|
9
|
-
const rootPath = env.uriToFileName(env.
|
|
9
|
+
const rootPath = env.uriToFileName(env.workspaceUri.toString());
|
|
10
10
|
const sys = ts.sys;
|
|
11
11
|
const root = {
|
|
12
12
|
dirs: {},
|
|
13
13
|
files: {},
|
|
14
|
-
|
|
14
|
+
requestedRead: false,
|
|
15
15
|
};
|
|
16
16
|
const promises = new Set();
|
|
17
17
|
const fileWatcher = env.onDidChangeWatchedFiles?.(({ changes }) => {
|
|
@@ -22,14 +22,24 @@ function createSys(ts, env) {
|
|
|
22
22
|
const dir = getDir(dirName);
|
|
23
23
|
if (dir.files[baseName]) { // is requested file
|
|
24
24
|
version++;
|
|
25
|
-
if (change.type === 1) {
|
|
26
|
-
dir.files[baseName] = {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
if (change.type === 1 || change.type === 2) {
|
|
26
|
+
dir.files[baseName] = {
|
|
27
|
+
stat: {
|
|
28
|
+
type: 1,
|
|
29
|
+
ctime: Date.now(),
|
|
30
|
+
mtime: Date.now(),
|
|
31
|
+
size: -1,
|
|
32
|
+
},
|
|
33
|
+
requestedStat: false,
|
|
34
|
+
};
|
|
30
35
|
}
|
|
31
36
|
else if (change.type === 3) {
|
|
32
|
-
dir.files[baseName] = {
|
|
37
|
+
dir.files[baseName] = {
|
|
38
|
+
stat: undefined,
|
|
39
|
+
text: undefined,
|
|
40
|
+
requestedStat: true,
|
|
41
|
+
requestedText: true,
|
|
42
|
+
};
|
|
33
43
|
}
|
|
34
44
|
}
|
|
35
45
|
}
|
|
@@ -117,20 +127,24 @@ function createSys(ts, env) {
|
|
|
117
127
|
function getModifiedTime(fileName) {
|
|
118
128
|
fileName = resolvePath(fileName);
|
|
119
129
|
const file = getFile(fileName);
|
|
120
|
-
if (file.
|
|
121
|
-
file.
|
|
130
|
+
if (!file.requestedStat) {
|
|
131
|
+
file.requestedStat = true;
|
|
122
132
|
handleStat(fileName, file);
|
|
123
133
|
}
|
|
124
|
-
return file.
|
|
134
|
+
return file.stat ? new Date(file.stat.mtime) : new Date(0);
|
|
125
135
|
}
|
|
126
136
|
function fileExists(fileName) {
|
|
127
137
|
fileName = resolvePath(fileName);
|
|
128
138
|
const file = getFile(fileName);
|
|
129
|
-
|
|
130
|
-
|
|
139
|
+
const exists = () => file.text !== undefined || file.stat?.type === 1;
|
|
140
|
+
if (exists()) {
|
|
141
|
+
return true;
|
|
142
|
+
}
|
|
143
|
+
if (!file.requestedStat) {
|
|
144
|
+
file.requestedStat = true;
|
|
131
145
|
handleStat(fileName, file);
|
|
132
146
|
}
|
|
133
|
-
return
|
|
147
|
+
return exists();
|
|
134
148
|
}
|
|
135
149
|
function handleStat(fileName, file) {
|
|
136
150
|
const result = env.fs?.stat(env.fileNameToUri(fileName));
|
|
@@ -139,21 +153,14 @@ function createSys(ts, env) {
|
|
|
139
153
|
promises.add(promise);
|
|
140
154
|
result.then(result => {
|
|
141
155
|
promises.delete(promise);
|
|
142
|
-
file.
|
|
143
|
-
if (result) {
|
|
144
|
-
file.modifiedTime = new Date(result.mtime);
|
|
145
|
-
}
|
|
146
|
-
if (file.exists) {
|
|
147
|
-
file.requested = false;
|
|
156
|
+
if (file.stat?.type !== result?.type || file.stat?.mtime !== result?.mtime) {
|
|
148
157
|
version++;
|
|
149
158
|
}
|
|
159
|
+
file.stat = result;
|
|
150
160
|
});
|
|
151
161
|
}
|
|
152
162
|
else {
|
|
153
|
-
file.
|
|
154
|
-
if (result) {
|
|
155
|
-
file.modifiedTime = new Date(result.mtime);
|
|
156
|
-
}
|
|
163
|
+
file.stat = result;
|
|
157
164
|
}
|
|
158
165
|
}
|
|
159
166
|
function getFile(fileName) {
|
|
@@ -178,7 +185,7 @@ function createSys(ts, env) {
|
|
|
178
185
|
readDirectoryWorker(dirPath);
|
|
179
186
|
const dir = getDir(dirPath);
|
|
180
187
|
return {
|
|
181
|
-
files: [...Object.entries(dir.files)].filter(([_, file]) => file.
|
|
188
|
+
files: [...Object.entries(dir.files)].filter(([_, file]) => file.stat?.type === 1).map(([name]) => name),
|
|
182
189
|
directories: [...Object.entries(dir.dirs)].filter(([_, dir]) => dir.exists).map(([name]) => name),
|
|
183
190
|
};
|
|
184
191
|
}, sys?.realpath ? (path => sys.realpath(path)) : (path => path));
|
|
@@ -188,10 +195,10 @@ function createSys(ts, env) {
|
|
|
188
195
|
const name = path_1.posix.basename(fileName);
|
|
189
196
|
dir.files[name] ??= {};
|
|
190
197
|
const file = dir.files[name];
|
|
191
|
-
if (file.
|
|
198
|
+
if (file.requestedText) {
|
|
192
199
|
return;
|
|
193
200
|
}
|
|
194
|
-
file.
|
|
201
|
+
file.requestedText = true;
|
|
195
202
|
const uri = env.fileNameToUri(fileName);
|
|
196
203
|
const result = env.fs?.readFile(uri, encoding);
|
|
197
204
|
if (typeof result === 'object' && 'then' in result) {
|
|
@@ -200,29 +207,24 @@ function createSys(ts, env) {
|
|
|
200
207
|
result.then(result => {
|
|
201
208
|
promises.delete(promise);
|
|
202
209
|
if (result !== undefined) {
|
|
203
|
-
file.exists = true;
|
|
204
210
|
file.text = result;
|
|
211
|
+
if (file.stat) {
|
|
212
|
+
file.stat.mtime++;
|
|
213
|
+
}
|
|
205
214
|
version++;
|
|
206
215
|
}
|
|
207
|
-
else {
|
|
208
|
-
file.exists = false;
|
|
209
|
-
}
|
|
210
216
|
});
|
|
211
217
|
}
|
|
212
218
|
else if (result !== undefined) {
|
|
213
|
-
file.exists = true;
|
|
214
219
|
file.text = result;
|
|
215
220
|
}
|
|
216
|
-
else {
|
|
217
|
-
file.exists = false;
|
|
218
|
-
}
|
|
219
221
|
}
|
|
220
222
|
function readDirectoryWorker(dirName) {
|
|
221
223
|
const dir = getDir(dirName);
|
|
222
|
-
if (dir.
|
|
224
|
+
if (dir.requestedRead) {
|
|
223
225
|
return;
|
|
224
226
|
}
|
|
225
|
-
dir.
|
|
227
|
+
dir.requestedRead = true;
|
|
226
228
|
const result = env.fs?.readDirectory(env.fileNameToUri(dirName || '.'));
|
|
227
229
|
if (typeof result === 'object' && 'then' in result) {
|
|
228
230
|
const promise = result;
|
|
@@ -253,10 +255,12 @@ function createSys(ts, env) {
|
|
|
253
255
|
promises.delete(promise);
|
|
254
256
|
if (stat?.type === 1) {
|
|
255
257
|
dir.files[name] ??= {};
|
|
256
|
-
|
|
257
|
-
|
|
258
|
+
const file = dir.files[name];
|
|
259
|
+
if (stat.type !== file.stat?.type || stat.mtime !== file.stat.mtime) {
|
|
258
260
|
version++;
|
|
259
261
|
}
|
|
262
|
+
file.stat = stat;
|
|
263
|
+
file.requestedStat = true;
|
|
260
264
|
}
|
|
261
265
|
else if (stat?.type === 2) {
|
|
262
266
|
const childDir = getDirFromDir(dir, name);
|
|
@@ -273,8 +277,13 @@ function createSys(ts, env) {
|
|
|
273
277
|
}
|
|
274
278
|
if (fileType === 1) {
|
|
275
279
|
dir.files[name] ??= {};
|
|
276
|
-
if (!dir.files[name].
|
|
277
|
-
dir.files[name].
|
|
280
|
+
if (!dir.files[name].stat) {
|
|
281
|
+
dir.files[name].stat = {
|
|
282
|
+
type: 1,
|
|
283
|
+
mtime: 0,
|
|
284
|
+
ctime: 0,
|
|
285
|
+
size: 0,
|
|
286
|
+
};
|
|
278
287
|
updated = true;
|
|
279
288
|
}
|
|
280
289
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volar/typescript",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.2",
|
|
4
4
|
"main": "out/index.js",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"directory": "packages/typescript"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@volar/language-core": "1.9.
|
|
16
|
+
"@volar/language-core": "1.9.2"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@volar/language-service": "1.9.
|
|
19
|
+
"@volar/language-service": "1.9.2"
|
|
20
20
|
},
|
|
21
|
-
"gitHead": "
|
|
21
|
+
"gitHead": "c838ba22be287308e3fcf27f65af672749816df4"
|
|
22
22
|
}
|