@volar/typescript 2.1.4 → 2.1.5-patch.1

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.
@@ -58,28 +58,24 @@ function decorateLanguageServiceHost(virtualFiles, languageServiceHost, ts) {
58
58
  };
59
59
  }
60
60
  languageServiceHost.getScriptSnapshot = fileName => {
61
- if (exts.some(ext => fileName.endsWith(ext))) {
62
- updateScript(fileName);
63
- return scripts.get(fileName)?.snapshot;
61
+ const virtualScript = updateVirtualScript(fileName);
62
+ if (virtualScript) {
63
+ return virtualScript.snapshot;
64
64
  }
65
65
  return getScriptSnapshot(fileName);
66
66
  };
67
67
  if (getScriptKind) {
68
68
  languageServiceHost.getScriptKind = fileName => {
69
- if (exts.some(ext => fileName.endsWith(ext))) {
70
- updateScript(fileName);
71
- const script = scripts.get(fileName);
72
- if (script) {
73
- return script.kind;
74
- }
75
- return ts.ScriptKind.Deferred;
69
+ const virtualScript = updateVirtualScript(fileName);
70
+ if (virtualScript) {
71
+ return virtualScript.kind;
76
72
  }
77
73
  return getScriptKind(fileName);
78
74
  };
79
75
  }
80
- function updateScript(fileName) {
76
+ function updateVirtualScript(fileName) {
81
77
  const version = languageServiceHost.getScriptVersion(fileName);
82
- if (version !== scripts.get(fileName)?.version) {
78
+ if (version !== scripts.get(fileName)?.[0]) {
83
79
  let extension = '.ts';
84
80
  let snapshotSnapshot;
85
81
  let scriptKind = ts.ScriptKind.TS;
@@ -106,14 +102,18 @@ function decorateLanguageServiceHost(virtualFiles, languageServiceHost, ts) {
106
102
  extraProjectVersion++;
107
103
  virtualFiles.delete(fileName);
108
104
  }
109
- scripts.set(fileName, {
110
- version,
111
- extension,
112
- snapshot: snapshotSnapshot,
113
- kind: scriptKind,
114
- });
105
+ if (snapshotSnapshot) {
106
+ scripts.set(fileName, [
107
+ version,
108
+ {
109
+ extension,
110
+ snapshot: snapshotSnapshot,
111
+ kind: scriptKind,
112
+ }
113
+ ]);
114
+ }
115
115
  }
116
- return scripts.get(fileName);
116
+ return scripts.get(fileName)?.[1];
117
117
  }
118
118
  }
119
119
  exports.decorateLanguageServiceHost = decorateLanguageServiceHost;
@@ -17,36 +17,31 @@ function createSys(ts, env, currentDirectory) {
17
17
  };
18
18
  const promises = new Set();
19
19
  const fileWatcher = env.onDidChangeWatchedFiles?.(({ changes }) => {
20
+ version++;
20
21
  for (const change of changes) {
21
22
  const fileName = env.typescript.uriToFileName(change.uri);
22
23
  const dirName = path.dirname(fileName);
23
24
  const baseName = path.basename(fileName);
24
- const dir = getDir(dirName);
25
- if (dir.files.has(baseName) || dir.requestedRead) { // is requested file or directory
26
- version++;
27
- if (change.type === 1 || change.type === 2) {
28
- dir.files.set(normalizeFileId(baseName), {
29
- name: baseName,
30
- stat: {
31
- type: 1,
32
- ctime: Date.now(),
33
- mtime: Date.now(),
34
- size: -1,
35
- },
36
- requestedStat: false,
37
- requestedText: false,
38
- });
39
- }
40
- else if (change.type === 3) {
41
- dir.files.set(normalizeFileId(baseName), {
42
- name: baseName,
43
- stat: undefined,
44
- text: undefined,
45
- requestedStat: true,
46
- requestedText: true,
47
- });
48
- }
49
- }
25
+ const fileExists = change.type === 1
26
+ || change.type === 2;
27
+ const dir = getDir(dirName, fileExists);
28
+ dir.files.set(normalizeFileId(baseName), fileExists ? {
29
+ name: baseName,
30
+ stat: {
31
+ type: 1,
32
+ ctime: Date.now(),
33
+ mtime: Date.now(),
34
+ size: -1,
35
+ },
36
+ requestedStat: false,
37
+ requestedText: false,
38
+ } : {
39
+ name: baseName,
40
+ stat: undefined,
41
+ text: undefined,
42
+ requestedStat: true,
43
+ requestedText: true,
44
+ });
50
45
  }
51
46
  });
52
47
  return {
@@ -335,7 +330,7 @@ function createSys(ts, env, currentDirectory) {
335
330
  }
336
331
  return updated;
337
332
  }
338
- function getDir(dirName) {
333
+ function getDir(dirName, markExists = false) {
339
334
  const dirNames = [];
340
335
  let currentDirPath = dirName;
341
336
  let currentDirName = path.basename(currentDirPath);
@@ -350,6 +345,10 @@ function createSys(ts, env, currentDirectory) {
350
345
  for (let i = dirNames.length - 1; i >= 0; i--) {
351
346
  const nextDirName = dirNames[i];
352
347
  currentDir = getDirFromDir(currentDir, nextDirName);
348
+ if (markExists && !currentDir.exists) {
349
+ currentDir.exists = true;
350
+ version++;
351
+ }
353
352
  }
354
353
  return currentDir;
355
354
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volar/typescript",
3
- "version": "2.1.4",
3
+ "version": "2.1.5-patch.1",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "**/*.js",
@@ -12,13 +12,12 @@
12
12
  "directory": "packages/typescript"
13
13
  },
14
14
  "dependencies": {
15
- "@volar/language-core": "2.1.4",
15
+ "@volar/language-core": "2.1.5",
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.4"
22
- },
23
- "gitHead": "cc46289ff6be015ee41a1896fdaef6aa68cee755"
21
+ "@volar/language-service": "2.1.5"
22
+ }
24
23
  }