@vue/language-server 2.0.6 → 2.0.10
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/types.d.ts +1 -0
- package/node.js +45 -35
- package/package.json +7 -7
package/lib/types.d.ts
CHANGED
package/node.js
CHANGED
|
@@ -6,48 +6,64 @@ const language_core_1 = require("@vue/language-core");
|
|
|
6
6
|
const language_service_1 = require("@vue/language-service");
|
|
7
7
|
const protocol_1 = require("./lib/protocol");
|
|
8
8
|
const tsPluginClient = require("@vue/typescript-plugin/lib/client");
|
|
9
|
+
const utils_1 = require("@vue/typescript-plugin/lib/utils");
|
|
9
10
|
const protocol_2 = require("./lib/protocol");
|
|
10
11
|
exports.connection = (0, node_1.createConnection)();
|
|
11
12
|
exports.server = (0, node_1.createServer)(exports.connection);
|
|
12
13
|
const envToVueOptions = new WeakMap();
|
|
13
14
|
let tsdk;
|
|
15
|
+
let getTsPluginClient;
|
|
14
16
|
exports.connection.listen();
|
|
15
17
|
exports.connection.onInitialize(async (params) => {
|
|
16
18
|
const options = params.initializationOptions;
|
|
17
|
-
|
|
19
|
+
const hybridMode = options.vue?.hybridMode ?? true;
|
|
18
20
|
const vueFileExtensions = ['vue'];
|
|
21
|
+
tsdk = (0, node_1.loadTsdkByPath)(options.typescript.tsdk, params.locale);
|
|
19
22
|
if (options.vue?.additionalExtensions) {
|
|
20
23
|
for (const additionalExtension of options.vue.additionalExtensions) {
|
|
21
24
|
vueFileExtensions.push(additionalExtension);
|
|
22
25
|
}
|
|
23
26
|
}
|
|
24
|
-
|
|
27
|
+
if (hybridMode) {
|
|
28
|
+
getTsPluginClient = () => tsPluginClient;
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
getTsPluginClient = (0, language_service_1.createDefaultGetTsPluginClient)(tsdk.typescript, env => envToVueOptions.get(env));
|
|
32
|
+
}
|
|
33
|
+
const result = await exports.server.initialize(params, hybridMode
|
|
34
|
+
? (0, node_1.createSimpleProjectProviderFactory)()
|
|
35
|
+
: (0, node_1.createTypeScriptProjectProviderFactory)(tsdk.typescript, tsdk.diagnosticMessages), {
|
|
25
36
|
watchFileExtensions: ['js', 'cjs', 'mjs', 'ts', 'cts', 'mts', 'jsx', 'tsx', 'json', ...vueFileExtensions],
|
|
37
|
+
getLanguageId(uri) {
|
|
38
|
+
if (vueFileExtensions.some(ext => uri.endsWith(`.${ext}`))) {
|
|
39
|
+
if (uri.endsWith('.html')) {
|
|
40
|
+
return 'html';
|
|
41
|
+
}
|
|
42
|
+
else if (uri.endsWith('.md')) {
|
|
43
|
+
return 'markdown';
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
return 'vue';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return (0, language_core_1.resolveCommonLanguageId)(uri);
|
|
50
|
+
},
|
|
26
51
|
getServicePlugins() {
|
|
27
|
-
return (0, language_service_1.createVueServicePlugins)(tsdk.typescript, env => envToVueOptions.get(env),
|
|
52
|
+
return (0, language_service_1.createVueServicePlugins)(tsdk.typescript, env => envToVueOptions.get(env), getTsPluginClient, hybridMode);
|
|
28
53
|
},
|
|
29
54
|
async getLanguagePlugins(serviceEnv, projectContext) {
|
|
30
|
-
const
|
|
31
|
-
const
|
|
32
|
-
const
|
|
33
|
-
if (
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
const lowerFileName = fileName.toLowerCase();
|
|
38
|
-
for (const rootFile of projectContext.typescript?.host.getScriptFileNames() ?? []) {
|
|
39
|
-
if (rootFile.toLowerCase() === lowerFileName) {
|
|
40
|
-
return true;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return false;
|
|
55
|
+
const commandLine = await parseCommandLine();
|
|
56
|
+
const vueOptions = commandLine?.vueOptions ?? (0, language_core_1.resolveVueCompilerOptions)({});
|
|
57
|
+
for (const ext of vueFileExtensions) {
|
|
58
|
+
if (!vueOptions.extensions.includes(`.${ext}`)) {
|
|
59
|
+
vueOptions.extensions.push(`.${ext}`);
|
|
44
60
|
}
|
|
45
|
-
}
|
|
46
|
-
|
|
61
|
+
}
|
|
62
|
+
const vueLanguagePlugin = (0, language_core_1.createVueLanguagePlugin)(tsdk.typescript, serviceEnv.typescript.uriToFileName, projectContext.typescript?.sys.useCaseSensitiveFileNames ?? false, () => projectContext.typescript?.host.getProjectVersion?.() ?? '', () => projectContext.typescript?.host.getScriptFileNames() ?? [], commandLine?.options ?? {}, vueOptions, options.codegenStack);
|
|
63
|
+
envToVueOptions.set(serviceEnv, vueOptions);
|
|
47
64
|
return [vueLanguagePlugin];
|
|
48
65
|
async function parseCommandLine() {
|
|
49
66
|
let commandLine;
|
|
50
|
-
let vueOptions = {};
|
|
51
67
|
if (projectContext.typescript) {
|
|
52
68
|
const { sys } = projectContext.typescript;
|
|
53
69
|
let sysVersion;
|
|
@@ -60,20 +76,14 @@ exports.connection.onInitialize(async (params) => {
|
|
|
60
76
|
newSysVersion = await sys.sync();
|
|
61
77
|
}
|
|
62
78
|
}
|
|
63
|
-
|
|
64
|
-
vueOptions = commandLine.vueOptions;
|
|
65
|
-
}
|
|
66
|
-
vueOptions.extensions = [
|
|
67
|
-
...vueOptions.extensions ?? ['.vue'],
|
|
68
|
-
...vueFileExtensions.map(ext => '.' + ext),
|
|
69
|
-
];
|
|
70
|
-
vueOptions.extensions = [...new Set(vueOptions.extensions)];
|
|
71
|
-
return [commandLine, vueOptions];
|
|
79
|
+
return commandLine;
|
|
72
80
|
}
|
|
73
81
|
},
|
|
74
82
|
});
|
|
75
|
-
|
|
76
|
-
|
|
83
|
+
if (hybridMode) {
|
|
84
|
+
// handle by tsserver + @vue/typescript-plugin
|
|
85
|
+
result.capabilities.semanticTokensProvider = undefined;
|
|
86
|
+
}
|
|
77
87
|
return result;
|
|
78
88
|
});
|
|
79
89
|
exports.connection.onInitialized(() => {
|
|
@@ -88,23 +98,23 @@ exports.connection.onRequest(protocol_1.ParseSFCRequest.type, params => {
|
|
|
88
98
|
exports.connection.onRequest(protocol_1.DetectNameCasingRequest.type, async (params) => {
|
|
89
99
|
const languageService = await getService(params.textDocument.uri);
|
|
90
100
|
if (languageService) {
|
|
91
|
-
return await (0, language_service_1.detect)(languageService.context, params.textDocument.uri,
|
|
101
|
+
return await (0, language_service_1.detect)(languageService.context, params.textDocument.uri, getTsPluginClient(languageService.context));
|
|
92
102
|
}
|
|
93
103
|
});
|
|
94
104
|
exports.connection.onRequest(protocol_1.GetConvertTagCasingEditsRequest.type, async (params) => {
|
|
95
105
|
const languageService = await getService(params.textDocument.uri);
|
|
96
106
|
if (languageService) {
|
|
97
|
-
return await (0, language_service_1.convertTagName)(languageService.context, params.textDocument.uri, params.casing,
|
|
107
|
+
return await (0, language_service_1.convertTagName)(languageService.context, params.textDocument.uri, params.casing, getTsPluginClient(languageService.context));
|
|
98
108
|
}
|
|
99
109
|
});
|
|
100
110
|
exports.connection.onRequest(protocol_1.GetConvertAttrCasingEditsRequest.type, async (params) => {
|
|
101
111
|
const languageService = await getService(params.textDocument.uri);
|
|
102
112
|
if (languageService) {
|
|
103
|
-
return await (0, language_service_1.convertAttrName)(languageService.context, params.textDocument.uri, params.casing,
|
|
113
|
+
return await (0, language_service_1.convertAttrName)(languageService.context, params.textDocument.uri, params.casing, getTsPluginClient(languageService.context));
|
|
104
114
|
}
|
|
105
115
|
});
|
|
106
116
|
exports.connection.onRequest(protocol_2.GetConnectedNamedPipeServerRequest.type, async (fileName) => {
|
|
107
|
-
const server = await
|
|
117
|
+
const server = await (0, utils_1.searchNamedPipeServerForFile)(fileName);
|
|
108
118
|
if (server) {
|
|
109
119
|
return server;
|
|
110
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.10",
|
|
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": "~2.
|
|
19
|
-
"@volar/language-server": "~2.
|
|
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.5",
|
|
19
|
+
"@volar/language-server": "~2.2.0-alpha.5",
|
|
20
|
+
"@vue/language-core": "2.0.10",
|
|
21
|
+
"@vue/language-service": "2.0.10",
|
|
22
|
+
"@vue/typescript-plugin": "2.0.10",
|
|
23
23
|
"vscode-languageserver-protocol": "^3.17.5"
|
|
24
24
|
},
|
|
25
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "a20a2ee950b63a949660b7e8faf0faed0e5bad33"
|
|
26
26
|
}
|