@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.
Files changed (3) hide show
  1. package/lib/types.d.ts +1 -0
  2. package/node.js +45 -35
  3. package/package.json +7 -7
package/lib/types.d.ts CHANGED
@@ -4,6 +4,7 @@ export type VueInitializationOptions = InitializationOptions & {
4
4
  tsdk: string;
5
5
  };
6
6
  vue?: {
7
+ hybridMode?: boolean;
7
8
  /**
8
9
  * @example ['vue1', 'vue2']
9
10
  */
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
- tsdk = (0, node_1.loadTsdkByPath)(options.typescript.tsdk, params.locale);
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
- const result = await exports.server.initialize(params, (0, node_1.createSimpleProjectProviderFactory)(), {
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), tsPluginClient);
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 [commandLine, vueOptions] = await parseCommandLine();
31
- const resolvedVueOptions = (0, language_core_1.resolveVueCompilerOptions)(vueOptions);
32
- const vueLanguagePlugin = (0, language_core_1.createVueLanguagePlugin)(tsdk.typescript, serviceEnv.typescript.uriToFileName, fileName => {
33
- if (projectContext.typescript?.sys.useCaseSensitiveFileNames ?? false) {
34
- return projectContext.typescript?.host.getScriptFileNames().includes(fileName) ?? false;
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
- }, commandLine?.options ?? {}, resolvedVueOptions, options.codegenStack);
46
- envToVueOptions.set(serviceEnv, resolvedVueOptions);
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
- if (commandLine) {
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
- // handle by tsserver + @vue/typescript-plugin
76
- result.capabilities.semanticTokensProvider = undefined;
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, tsPluginClient);
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, tsPluginClient);
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, tsPluginClient);
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 tsPluginClient.searchNamedPipeServerForFile(fileName);
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.6",
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.1.2",
19
- "@volar/language-server": "~2.1.2",
20
- "@vue/language-core": "2.0.6",
21
- "@vue/language-service": "2.0.6",
22
- "@vue/typescript-plugin": "2.0.6",
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": "feb990ccec85f6330bba37c8b1d1287f0980274c"
25
+ "gitHead": "a20a2ee950b63a949660b7e8faf0faed0e5bad33"
26
26
  }