@volar/typescript 2.1.2 → 2.1.4
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/lib/node/decorateProgram.js +3 -4
- package/lib/protocol/createSys.js +51 -19
- package/package.json +4 -4
|
@@ -12,11 +12,10 @@ function decorateProgram(files, program) {
|
|
|
12
12
|
// for tsc --noEmit --watch
|
|
13
13
|
// @ts-ignore
|
|
14
14
|
const getBindAndCheckDiagnostics = program.getBindAndCheckDiagnostics;
|
|
15
|
-
program.emit = (
|
|
16
|
-
const result = emit(
|
|
15
|
+
program.emit = (...args) => {
|
|
16
|
+
const result = emit(...args);
|
|
17
17
|
return {
|
|
18
|
-
|
|
19
|
-
emittedFiles: result.emittedFiles,
|
|
18
|
+
...result,
|
|
20
19
|
diagnostics: result.diagnostics
|
|
21
20
|
.map(d => (0, transform_1.transformDiagnostic)(files, d))
|
|
22
21
|
.filter(utils_1.notEmpty),
|
|
@@ -6,8 +6,11 @@ const utilities_1 = require("../typescript/utilities");
|
|
|
6
6
|
let currentCwd = '';
|
|
7
7
|
function createSys(ts, env, currentDirectory) {
|
|
8
8
|
let version = 0;
|
|
9
|
+
// sys is undefined in browser
|
|
9
10
|
const sys = ts.sys;
|
|
11
|
+
const caseSensitive = sys?.useCaseSensitiveFileNames ?? false;
|
|
10
12
|
const root = {
|
|
13
|
+
name: '',
|
|
11
14
|
dirs: new Map(),
|
|
12
15
|
files: new Map(),
|
|
13
16
|
requestedRead: false,
|
|
@@ -19,10 +22,11 @@ function createSys(ts, env, currentDirectory) {
|
|
|
19
22
|
const dirName = path.dirname(fileName);
|
|
20
23
|
const baseName = path.basename(fileName);
|
|
21
24
|
const dir = getDir(dirName);
|
|
22
|
-
if (dir.files.has(baseName)) { // is requested file
|
|
25
|
+
if (dir.files.has(baseName) || dir.requestedRead) { // is requested file or directory
|
|
23
26
|
version++;
|
|
24
27
|
if (change.type === 1 || change.type === 2) {
|
|
25
|
-
dir.files.set(baseName, {
|
|
28
|
+
dir.files.set(normalizeFileId(baseName), {
|
|
29
|
+
name: baseName,
|
|
26
30
|
stat: {
|
|
27
31
|
type: 1,
|
|
28
32
|
ctime: Date.now(),
|
|
@@ -30,10 +34,12 @@ function createSys(ts, env, currentDirectory) {
|
|
|
30
34
|
size: -1,
|
|
31
35
|
},
|
|
32
36
|
requestedStat: false,
|
|
37
|
+
requestedText: false,
|
|
33
38
|
});
|
|
34
39
|
}
|
|
35
40
|
else if (change.type === 3) {
|
|
36
|
-
dir.files.set(baseName, {
|
|
41
|
+
dir.files.set(normalizeFileId(baseName), {
|
|
42
|
+
name: baseName,
|
|
37
43
|
stat: undefined,
|
|
38
44
|
text: undefined,
|
|
39
45
|
requestedStat: true,
|
|
@@ -49,7 +55,7 @@ function createSys(ts, env, currentDirectory) {
|
|
|
49
55
|
},
|
|
50
56
|
args: sys?.args ?? [],
|
|
51
57
|
newLine: sys?.newLine ?? '\n',
|
|
52
|
-
useCaseSensitiveFileNames:
|
|
58
|
+
useCaseSensitiveFileNames: caseSensitive,
|
|
53
59
|
realpath: sys?.realpath,
|
|
54
60
|
write: sys?.write ?? (() => { }),
|
|
55
61
|
writeFile: sys?.writeFile ?? (() => { }),
|
|
@@ -99,7 +105,7 @@ function createSys(ts, env, currentDirectory) {
|
|
|
99
105
|
const dir = getDir(dirPath);
|
|
100
106
|
const name = path.basename(fileName);
|
|
101
107
|
readFileWorker(fileName, encoding, dir);
|
|
102
|
-
return dir.files.get(name)?.text;
|
|
108
|
+
return dir.files.get(normalizeFileId(name))?.text;
|
|
103
109
|
}
|
|
104
110
|
function directoryExists(dirName) {
|
|
105
111
|
dirName = resolvePath(dirName);
|
|
@@ -168,9 +174,13 @@ function createSys(ts, env, currentDirectory) {
|
|
|
168
174
|
const dirPath = path.dirname(fileName);
|
|
169
175
|
const baseName = path.basename(fileName);
|
|
170
176
|
const dir = getDir(dirPath);
|
|
171
|
-
let file = dir.files.get(baseName);
|
|
177
|
+
let file = dir.files.get(normalizeFileId(baseName));
|
|
172
178
|
if (!file) {
|
|
173
|
-
dir.files.set(baseName, file = {
|
|
179
|
+
dir.files.set(normalizeFileId(baseName), file = {
|
|
180
|
+
name: baseName,
|
|
181
|
+
requestedStat: false,
|
|
182
|
+
requestedText: false,
|
|
183
|
+
});
|
|
174
184
|
}
|
|
175
185
|
return file;
|
|
176
186
|
}
|
|
@@ -179,26 +189,36 @@ function createSys(ts, env, currentDirectory) {
|
|
|
179
189
|
dirName = resolvePath(dirName);
|
|
180
190
|
readDirectoryWorker(dirName);
|
|
181
191
|
const dir = getDir(dirName);
|
|
182
|
-
return [...dir.dirs.
|
|
192
|
+
return [...dir.dirs.values()]
|
|
193
|
+
.filter(dir => dir.exists)
|
|
194
|
+
.map(dir => dir.name);
|
|
183
195
|
}
|
|
184
196
|
function readDirectory(dirName, extensions, excludes, includes, depth) {
|
|
185
197
|
dirName = resolvePath(dirName);
|
|
186
|
-
const matches = (0, utilities_1.matchFiles)(dirName, extensions, excludes, includes,
|
|
198
|
+
const matches = (0, utilities_1.matchFiles)(dirName, extensions, excludes, includes, caseSensitive, currentDirectory, depth, dirPath => {
|
|
187
199
|
dirPath = resolvePath(dirPath);
|
|
188
200
|
readDirectoryWorker(dirPath);
|
|
189
201
|
const dir = getDir(dirPath);
|
|
190
202
|
return {
|
|
191
|
-
files: [...dir.files.
|
|
192
|
-
|
|
203
|
+
files: [...dir.files.values()]
|
|
204
|
+
.filter(file => file.stat?.type === 1)
|
|
205
|
+
.map(file => file.name),
|
|
206
|
+
directories: [...dir.dirs.values()]
|
|
207
|
+
.filter(dir => dir.exists)
|
|
208
|
+
.map(dir => dir.name),
|
|
193
209
|
};
|
|
194
210
|
}, sys?.realpath ? (path => sys.realpath(path)) : (path => path));
|
|
195
211
|
return [...new Set(matches)];
|
|
196
212
|
}
|
|
197
213
|
function readFileWorker(fileName, encoding, dir) {
|
|
198
214
|
const name = path.basename(fileName);
|
|
199
|
-
let file = dir.files.get(name);
|
|
215
|
+
let file = dir.files.get(normalizeFileId(name));
|
|
200
216
|
if (!file) {
|
|
201
|
-
dir.files.set(name, file = {
|
|
217
|
+
dir.files.set(normalizeFileId(name), file = {
|
|
218
|
+
name,
|
|
219
|
+
requestedStat: false,
|
|
220
|
+
requestedText: false,
|
|
221
|
+
});
|
|
202
222
|
}
|
|
203
223
|
if (file.requestedText) {
|
|
204
224
|
return;
|
|
@@ -259,9 +279,13 @@ function createSys(ts, env, currentDirectory) {
|
|
|
259
279
|
stat.then(stat => {
|
|
260
280
|
promises.delete(promise);
|
|
261
281
|
if (stat?.type === 1) {
|
|
262
|
-
let file = dir.files.get(name);
|
|
282
|
+
let file = dir.files.get(normalizeFileId(name));
|
|
263
283
|
if (!file) {
|
|
264
|
-
dir.files.set(name, file = {
|
|
284
|
+
dir.files.set(normalizeFileId(name), file = {
|
|
285
|
+
name,
|
|
286
|
+
requestedStat: false,
|
|
287
|
+
requestedText: false,
|
|
288
|
+
});
|
|
265
289
|
}
|
|
266
290
|
if (stat.type !== file.stat?.type || stat.mtime !== file.stat?.mtime) {
|
|
267
291
|
version++;
|
|
@@ -283,9 +307,13 @@ function createSys(ts, env, currentDirectory) {
|
|
|
283
307
|
}
|
|
284
308
|
}
|
|
285
309
|
if (fileType === 1) {
|
|
286
|
-
let file = dir.files.get(name);
|
|
310
|
+
let file = dir.files.get(normalizeFileId(name));
|
|
287
311
|
if (!file) {
|
|
288
|
-
dir.files.set(name, file = {
|
|
312
|
+
dir.files.set(normalizeFileId(name), file = {
|
|
313
|
+
name,
|
|
314
|
+
requestedStat: false,
|
|
315
|
+
requestedText: false,
|
|
316
|
+
});
|
|
289
317
|
}
|
|
290
318
|
if (!file.stat) {
|
|
291
319
|
file.stat = {
|
|
@@ -326,15 +354,19 @@ function createSys(ts, env, currentDirectory) {
|
|
|
326
354
|
return currentDir;
|
|
327
355
|
}
|
|
328
356
|
function getDirFromDir(dir, name) {
|
|
329
|
-
let target = dir.dirs.get(name);
|
|
357
|
+
let target = dir.dirs.get(normalizeFileId(name));
|
|
330
358
|
if (!target) {
|
|
331
|
-
dir.dirs.set(name, target = {
|
|
359
|
+
dir.dirs.set(normalizeFileId(name), target = {
|
|
360
|
+
name,
|
|
332
361
|
dirs: new Map(),
|
|
333
362
|
files: new Map(),
|
|
334
363
|
});
|
|
335
364
|
}
|
|
336
365
|
return target;
|
|
337
366
|
}
|
|
367
|
+
function normalizeFileId(fileName) {
|
|
368
|
+
return caseSensitive ? fileName : fileName.toLowerCase();
|
|
369
|
+
}
|
|
338
370
|
}
|
|
339
371
|
exports.createSys = createSys;
|
|
340
372
|
//# sourceMappingURL=createSys.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volar/typescript",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
"directory": "packages/typescript"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@volar/language-core": "2.1.
|
|
15
|
+
"@volar/language-core": "2.1.4",
|
|
16
16
|
"path-browserify": "^1.0.1"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
19
|
"@types/node": "latest",
|
|
20
20
|
"@types/path-browserify": "latest",
|
|
21
|
-
"@volar/language-service": "2.1.
|
|
21
|
+
"@volar/language-service": "2.1.4"
|
|
22
22
|
},
|
|
23
|
-
"gitHead": "
|
|
23
|
+
"gitHead": "cc46289ff6be015ee41a1896fdaef6aa68cee755"
|
|
24
24
|
}
|