@vue/language-server 2.0.10 → 2.0.12
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/hybridModeProject.d.ts +3 -0
- package/lib/hybridModeProject.js +114 -0
- package/node.js +5 -5
- package/package.json +7 -7
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createHybridModeProjectProviderFactory = void 0;
|
|
4
|
+
const simpleProject_1 = require("@volar/language-server/lib/project/simpleProject");
|
|
5
|
+
const simpleProjectProvider_1 = require("@volar/language-server/lib/project/simpleProjectProvider");
|
|
6
|
+
const language_core_1 = require("@vue/language-core");
|
|
7
|
+
const language_service_1 = require("@vue/language-service");
|
|
8
|
+
const utils_1 = require("@vue/typescript-plugin/lib/utils");
|
|
9
|
+
function createHybridModeProjectProviderFactory(sys) {
|
|
10
|
+
return (context, servicePlugins, getLanguagePlugins) => {
|
|
11
|
+
const serviceEnvs = new language_core_1.FileMap(sys.useCaseSensitiveFileNames);
|
|
12
|
+
const tsconfigProjects = new language_core_1.FileMap(sys.useCaseSensitiveFileNames);
|
|
13
|
+
const simpleProjects = new language_core_1.FileMap(sys.useCaseSensitiveFileNames);
|
|
14
|
+
context.onDidChangeWatchedFiles(({ changes }) => {
|
|
15
|
+
for (const change of changes) {
|
|
16
|
+
if (tsconfigProjects.has(change.uri)) {
|
|
17
|
+
tsconfigProjects.get(change.uri)?.then(project => project.dispose());
|
|
18
|
+
tsconfigProjects.delete(change.uri);
|
|
19
|
+
context.reloadDiagnostics();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
return {
|
|
24
|
+
async getProject(uri) {
|
|
25
|
+
const workspaceFolder = (0, simpleProjectProvider_1.getWorkspaceFolder)(uri, context.workspaceFolders);
|
|
26
|
+
let serviceEnv = serviceEnvs.get(workspaceFolder);
|
|
27
|
+
if (!serviceEnv) {
|
|
28
|
+
serviceEnv = (0, simpleProjectProvider_1.createServiceEnvironment)(context, workspaceFolder);
|
|
29
|
+
serviceEnvs.set(workspaceFolder, serviceEnv);
|
|
30
|
+
}
|
|
31
|
+
const fileName = serviceEnv.typescript.uriToFileName(uri);
|
|
32
|
+
const projectInfo = (await (0, utils_1.searchNamedPipeServerForFile)(fileName))?.projectInfo;
|
|
33
|
+
if (projectInfo?.kind === 1) {
|
|
34
|
+
const tsconfig = projectInfo.name;
|
|
35
|
+
const tsconfigUri = serviceEnv.typescript.fileNameToUri(tsconfig);
|
|
36
|
+
if (!tsconfigProjects.has(tsconfigUri)) {
|
|
37
|
+
tsconfigProjects.set(tsconfigUri, (async () => {
|
|
38
|
+
const languagePlugins = await getLanguagePlugins(serviceEnv, {
|
|
39
|
+
typescript: {
|
|
40
|
+
configFileName: tsconfig,
|
|
41
|
+
host: {
|
|
42
|
+
getScriptFileNames() {
|
|
43
|
+
return [];
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
sys: {
|
|
47
|
+
...sys,
|
|
48
|
+
version: 0,
|
|
49
|
+
async sync() {
|
|
50
|
+
return 0;
|
|
51
|
+
},
|
|
52
|
+
dispose() { },
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
return createTSConfigProject(context, serviceEnv, languagePlugins, servicePlugins);
|
|
57
|
+
})());
|
|
58
|
+
}
|
|
59
|
+
return await tsconfigProjects.get(tsconfigUri);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
if (!simpleProjects.has(workspaceFolder)) {
|
|
63
|
+
simpleProjects.set(workspaceFolder, (() => {
|
|
64
|
+
return (0, simpleProject_1.createSimpleServerProject)(context, serviceEnv, servicePlugins, getLanguagePlugins);
|
|
65
|
+
})());
|
|
66
|
+
}
|
|
67
|
+
return await simpleProjects.get(workspaceFolder);
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
async getProjects() {
|
|
71
|
+
return Promise.all([
|
|
72
|
+
...tsconfigProjects.values(),
|
|
73
|
+
...simpleProjects.values(),
|
|
74
|
+
]);
|
|
75
|
+
},
|
|
76
|
+
async reloadProjects() {
|
|
77
|
+
for (const project of [
|
|
78
|
+
...tsconfigProjects.values(),
|
|
79
|
+
...simpleProjects.values(),
|
|
80
|
+
]) {
|
|
81
|
+
(await project).dispose();
|
|
82
|
+
}
|
|
83
|
+
tsconfigProjects.clear();
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
function createTSConfigProject(context, serviceEnv, languagePlugins, servicePlugins) {
|
|
87
|
+
let languageService;
|
|
88
|
+
return {
|
|
89
|
+
getLanguageService,
|
|
90
|
+
getLanguageServiceDontCreate: () => languageService,
|
|
91
|
+
dispose() {
|
|
92
|
+
languageService?.dispose();
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
function getLanguageService() {
|
|
96
|
+
if (!languageService) {
|
|
97
|
+
const language = (0, language_core_1.createLanguage)(languagePlugins, false, uri => {
|
|
98
|
+
const script = context.documents.get(uri);
|
|
99
|
+
if (script) {
|
|
100
|
+
language.scripts.set(uri, script.languageId, script.getSnapshot());
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
language.scripts.delete(uri);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
languageService = (0, language_service_1.createLanguageService)(language, servicePlugins, serviceEnv);
|
|
107
|
+
}
|
|
108
|
+
return languageService;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
exports.createHybridModeProjectProviderFactory = createHybridModeProjectProviderFactory;
|
|
114
|
+
//# sourceMappingURL=hybridModeProject.js.map
|
package/node.js
CHANGED
|
@@ -4,10 +4,10 @@ exports.server = exports.connection = void 0;
|
|
|
4
4
|
const node_1 = require("@volar/language-server/node");
|
|
5
5
|
const language_core_1 = require("@vue/language-core");
|
|
6
6
|
const language_service_1 = require("@vue/language-service");
|
|
7
|
-
const protocol_1 = require("./lib/protocol");
|
|
8
7
|
const tsPluginClient = require("@vue/typescript-plugin/lib/client");
|
|
9
8
|
const utils_1 = require("@vue/typescript-plugin/lib/utils");
|
|
10
|
-
const
|
|
9
|
+
const hybridModeProject_1 = require("./lib/hybridModeProject");
|
|
10
|
+
const protocol_1 = require("./lib/protocol");
|
|
11
11
|
exports.connection = (0, node_1.createConnection)();
|
|
12
12
|
exports.server = (0, node_1.createServer)(exports.connection);
|
|
13
13
|
const envToVueOptions = new WeakMap();
|
|
@@ -31,7 +31,7 @@ exports.connection.onInitialize(async (params) => {
|
|
|
31
31
|
getTsPluginClient = (0, language_service_1.createDefaultGetTsPluginClient)(tsdk.typescript, env => envToVueOptions.get(env));
|
|
32
32
|
}
|
|
33
33
|
const result = await exports.server.initialize(params, hybridMode
|
|
34
|
-
? (0,
|
|
34
|
+
? (0, hybridModeProject_1.createHybridModeProjectProviderFactory)(tsdk.typescript.sys)
|
|
35
35
|
: (0, node_1.createTypeScriptProjectProviderFactory)(tsdk.typescript, tsdk.diagnosticMessages), {
|
|
36
36
|
watchFileExtensions: ['js', 'cjs', 'mjs', 'ts', 'cts', 'mts', 'jsx', 'tsx', 'json', ...vueFileExtensions],
|
|
37
37
|
getLanguageId(uri) {
|
|
@@ -113,8 +113,8 @@ exports.connection.onRequest(protocol_1.GetConvertAttrCasingEditsRequest.type, a
|
|
|
113
113
|
return await (0, language_service_1.convertAttrName)(languageService.context, params.textDocument.uri, params.casing, getTsPluginClient(languageService.context));
|
|
114
114
|
}
|
|
115
115
|
});
|
|
116
|
-
exports.connection.onRequest(
|
|
117
|
-
const server = await (0, utils_1.searchNamedPipeServerForFile)(fileName);
|
|
116
|
+
exports.connection.onRequest(protocol_1.GetConnectedNamedPipeServerRequest.type, async (fileName) => {
|
|
117
|
+
const server = (await (0, utils_1.searchNamedPipeServerForFile)(fileName))?.server;
|
|
118
118
|
if (server) {
|
|
119
119
|
return server;
|
|
120
120
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue/language-server",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.12",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
"directory": "packages/language-server"
|
|
16
16
|
},
|
|
17
17
|
"dependencies": {
|
|
18
|
-
"@volar/language-core": "
|
|
19
|
-
"@volar/language-server": "
|
|
20
|
-
"@vue/language-core": "2.0.
|
|
21
|
-
"@vue/language-service": "2.0.
|
|
22
|
-
"@vue/typescript-plugin": "2.0.
|
|
18
|
+
"@volar/language-core": "2.2.0-alpha.7",
|
|
19
|
+
"@volar/language-server": "2.2.0-alpha.7",
|
|
20
|
+
"@vue/language-core": "2.0.12",
|
|
21
|
+
"@vue/language-service": "2.0.12",
|
|
22
|
+
"@vue/typescript-plugin": "2.0.12",
|
|
23
23
|
"vscode-languageserver-protocol": "^3.17.5"
|
|
24
24
|
},
|
|
25
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "c1c4e1a2a6c32da59351641bd41bf7f5db0cac69"
|
|
26
26
|
}
|