@volar/typescript 1.8.1 → 1.8.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/languageServiceHost.js +7 -9
- package/out/serverPlugin.d.ts +1 -0
- package/out/serverPlugin.js +62 -15
- package/package.json +4 -4
|
@@ -134,15 +134,13 @@ function createLanguageServiceHost(ctx, ts, sys) {
|
|
|
134
134
|
directories: getVirtualFileDirectories(dirPath),
|
|
135
135
|
};
|
|
136
136
|
}, sys?.realpath ? (path => sys.realpath(path)) : (path => path));
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
});
|
|
145
|
-
}
|
|
137
|
+
matches = matches.map(match => {
|
|
138
|
+
const [_, source] = ctx.virtualFiles.getVirtualFile(match);
|
|
139
|
+
if (source) {
|
|
140
|
+
return source.fileName;
|
|
141
|
+
}
|
|
142
|
+
return match;
|
|
143
|
+
});
|
|
146
144
|
return [...new Set([
|
|
147
145
|
...matches,
|
|
148
146
|
...sys.readDirectory(dirName, extensions, excludes, includes, depth),
|
package/out/serverPlugin.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { VirtualFiles } from '@volar/language-core';
|
|
2
2
|
import type * as ts from 'typescript/lib/tsserverlibrary';
|
|
3
3
|
export declare function decorateLanguageServiceHost(virtualFiles: VirtualFiles, languageServiceHost: ts.LanguageServiceHost, ts: typeof import('typescript/lib/tsserverlibrary'), exts: string[]): void;
|
|
4
|
+
export declare function getExternalFiles(ts: typeof import('typescript/lib/tsserverlibrary'), project: ts.server.Project, exts: string[]): string[];
|
package/out/serverPlugin.js
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.decorateLanguageServiceHost = void 0;
|
|
3
|
+
exports.getExternalFiles = exports.decorateLanguageServiceHost = void 0;
|
|
4
4
|
const language_core_1 = require("@volar/language-core");
|
|
5
5
|
function decorateLanguageServiceHost(virtualFiles, languageServiceHost, ts, exts) {
|
|
6
6
|
let extraProjectVersion = 0;
|
|
7
7
|
const scripts = new Map();
|
|
8
|
+
const readDirectory = languageServiceHost.readDirectory?.bind(languageServiceHost);
|
|
8
9
|
const resolveModuleNameLiterals = languageServiceHost.resolveModuleNameLiterals?.bind(languageServiceHost);
|
|
9
10
|
const resolveModuleNames = languageServiceHost.resolveModuleNames?.bind(languageServiceHost);
|
|
10
11
|
const getProjectVersion = languageServiceHost.getProjectVersion?.bind(languageServiceHost);
|
|
11
|
-
const getScriptFileNames = languageServiceHost.getScriptFileNames.bind(languageServiceHost);
|
|
12
12
|
const getScriptSnapshot = languageServiceHost.getScriptSnapshot.bind(languageServiceHost);
|
|
13
|
+
const getScriptKind = languageServiceHost.getScriptKind?.bind(languageServiceHost);
|
|
14
|
+
// path completion
|
|
15
|
+
if (readDirectory) {
|
|
16
|
+
languageServiceHost.readDirectory = (path, extensions, exclude, include, depth) => {
|
|
17
|
+
if (extensions) {
|
|
18
|
+
for (const ext of exts) {
|
|
19
|
+
if (!extensions.includes(ext)) {
|
|
20
|
+
extensions = [...extensions, ...ext];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return readDirectory(path, extensions, exclude, include, depth);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
13
27
|
if (resolveModuleNameLiterals) {
|
|
14
28
|
languageServiceHost.resolveModuleNameLiterals = (moduleNames, containingFile, redirectedReference, options, ...rest) => {
|
|
15
29
|
const resolvedModules = resolveModuleNameLiterals(moduleNames, containingFile, redirectedReference, options, ...rest);
|
|
@@ -37,23 +51,37 @@ function decorateLanguageServiceHost(virtualFiles, languageServiceHost, ts, exts
|
|
|
37
51
|
return getProjectVersion() + ':' + extraProjectVersion;
|
|
38
52
|
};
|
|
39
53
|
}
|
|
40
|
-
languageServiceHost.getScriptFileNames = () => {
|
|
41
|
-
if (languageServiceHost.getCompilationSettings().composite) {
|
|
42
|
-
return [
|
|
43
|
-
...getScriptFileNames(),
|
|
44
|
-
...virtualFiles.allSources().map(source => source.fileName),
|
|
45
|
-
];
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
return getScriptFileNames();
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
54
|
languageServiceHost.getScriptSnapshot = (fileName) => {
|
|
52
|
-
if (
|
|
55
|
+
if (exts.some(ext => fileName.endsWith(ext))) {
|
|
53
56
|
updateScript(fileName);
|
|
57
|
+
return scripts.get(fileName)?.snapshot;
|
|
54
58
|
}
|
|
55
|
-
return
|
|
59
|
+
return getScriptSnapshot(fileName);
|
|
56
60
|
};
|
|
61
|
+
if (getScriptKind) {
|
|
62
|
+
languageServiceHost.getScriptKind = (fileName) => {
|
|
63
|
+
if (exts.some(ext => fileName.endsWith(ext))) {
|
|
64
|
+
updateScript(fileName);
|
|
65
|
+
const script = scripts.get(fileName);
|
|
66
|
+
if (script) {
|
|
67
|
+
if (script.extension.endsWith('.js')) {
|
|
68
|
+
return ts.ScriptKind.JS;
|
|
69
|
+
}
|
|
70
|
+
if (script.extension.endsWith('.jsx')) {
|
|
71
|
+
return ts.ScriptKind.JSX;
|
|
72
|
+
}
|
|
73
|
+
if (script.extension.endsWith('.ts')) {
|
|
74
|
+
return ts.ScriptKind.TS;
|
|
75
|
+
}
|
|
76
|
+
if (script.extension.endsWith('.tsx')) {
|
|
77
|
+
return ts.ScriptKind.TSX;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return ts.ScriptKind.Deferred;
|
|
81
|
+
}
|
|
82
|
+
return getScriptKind(fileName);
|
|
83
|
+
};
|
|
84
|
+
}
|
|
57
85
|
function resolveModuleName(name, containingFile, options, redirectedReference) {
|
|
58
86
|
const resolved = ts.resolveModuleName(name, containingFile, options, {
|
|
59
87
|
readFile(fileName) {
|
|
@@ -118,4 +146,23 @@ function decorateLanguageServiceHost(virtualFiles, languageServiceHost, ts, exts
|
|
|
118
146
|
}
|
|
119
147
|
}
|
|
120
148
|
exports.decorateLanguageServiceHost = decorateLanguageServiceHost;
|
|
149
|
+
function getExternalFiles(ts, project, exts) {
|
|
150
|
+
if (project.projectKind !== ts.server.ProjectKind.Configured) {
|
|
151
|
+
return [];
|
|
152
|
+
}
|
|
153
|
+
const configFile = project.getProjectName();
|
|
154
|
+
const config = ts.readJsonConfigFile(configFile, project.readFile.bind(project));
|
|
155
|
+
const parseHost = {
|
|
156
|
+
useCaseSensitiveFileNames: project.useCaseSensitiveFileNames(),
|
|
157
|
+
fileExists: project.fileExists.bind(project),
|
|
158
|
+
readFile: project.readFile.bind(project),
|
|
159
|
+
readDirectory: (...args) => {
|
|
160
|
+
args[1] = exts;
|
|
161
|
+
return project.readDirectory(...args);
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
const parsed = ts.parseJsonSourceFileConfigFileContent(config, parseHost, project.getCurrentDirectory());
|
|
165
|
+
return parsed.fileNames;
|
|
166
|
+
}
|
|
167
|
+
exports.getExternalFiles = getExternalFiles;
|
|
121
168
|
//# sourceMappingURL=serverPlugin.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@volar/typescript",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.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.8.
|
|
16
|
+
"@volar/language-core": "1.8.2"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@volar/language-service": "1.8.
|
|
19
|
+
"@volar/language-service": "1.8.2"
|
|
20
20
|
},
|
|
21
|
-
"gitHead": "
|
|
21
|
+
"gitHead": "b552c1f827294da5d36cbe4e7c1f7f2729b2b82e"
|
|
22
22
|
}
|