@vue/language-server 2.0.5 → 2.0.7

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 +31 -22
  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,14 +6,17 @@ 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;
19
+ const hybridMode = options.vue?.hybridMode ?? true;
17
20
  tsdk = (0, node_1.loadTsdkByPath)(options.typescript.tsdk, params.locale);
18
21
  const vueFileExtensions = ['vue'];
19
22
  if (options.vue?.additionalExtensions) {
@@ -21,14 +24,27 @@ exports.connection.onInitialize(async (params) => {
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],
26
37
  getServicePlugins() {
27
- return (0, language_service_1.createVueServicePlugins)(tsdk.typescript, env => envToVueOptions.get(env), tsPluginClient);
38
+ return (0, language_service_1.createVueServicePlugins)(tsdk.typescript, env => envToVueOptions.get(env), getTsPluginClient, hybridMode);
28
39
  },
29
40
  async getLanguagePlugins(serviceEnv, projectContext) {
30
- const [commandLine, vueOptions] = await parseCommandLine();
31
- const resolvedVueOptions = (0, language_core_1.resolveVueCompilerOptions)(vueOptions);
41
+ const commandLine = await parseCommandLine();
42
+ const vueOptions = commandLine?.vueOptions ?? (0, language_core_1.resolveVueCompilerOptions)({});
43
+ for (const ext of vueFileExtensions) {
44
+ if (vueOptions.extensions.includes(`.${ext}`)) {
45
+ vueOptions.extensions.push(`.${ext}`);
46
+ }
47
+ }
32
48
  const vueLanguagePlugin = (0, language_core_1.createVueLanguagePlugin)(tsdk.typescript, serviceEnv.typescript.uriToFileName, fileName => {
33
49
  if (projectContext.typescript?.sys.useCaseSensitiveFileNames ?? false) {
34
50
  return projectContext.typescript?.host.getScriptFileNames().includes(fileName) ?? false;
@@ -42,12 +58,11 @@ exports.connection.onInitialize(async (params) => {
42
58
  }
43
59
  return false;
44
60
  }
45
- }, commandLine?.options ?? {}, resolvedVueOptions, options.codegenStack);
46
- envToVueOptions.set(serviceEnv, resolvedVueOptions);
61
+ }, commandLine?.options ?? {}, vueOptions, options.codegenStack);
62
+ envToVueOptions.set(serviceEnv, vueOptions);
47
63
  return [vueLanguagePlugin];
48
64
  async function parseCommandLine() {
49
65
  let commandLine;
50
- let vueOptions = {};
51
66
  if (projectContext.typescript) {
52
67
  const { sys } = projectContext.typescript;
53
68
  let sysVersion;
@@ -60,20 +75,14 @@ exports.connection.onInitialize(async (params) => {
60
75
  newSysVersion = await sys.sync();
61
76
  }
62
77
  }
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];
78
+ return commandLine;
72
79
  }
73
80
  },
74
81
  });
75
- // handle by tsserver + @vue/typescript-plugin
76
- result.capabilities.semanticTokensProvider = undefined;
82
+ if (hybridMode) {
83
+ // handle by tsserver + @vue/typescript-plugin
84
+ result.capabilities.semanticTokensProvider = undefined;
85
+ }
77
86
  return result;
78
87
  });
79
88
  exports.connection.onInitialized(() => {
@@ -88,23 +97,23 @@ exports.connection.onRequest(protocol_1.ParseSFCRequest.type, params => {
88
97
  exports.connection.onRequest(protocol_1.DetectNameCasingRequest.type, async (params) => {
89
98
  const languageService = await getService(params.textDocument.uri);
90
99
  if (languageService) {
91
- return await (0, language_service_1.detect)(languageService.context, params.textDocument.uri, tsPluginClient);
100
+ return await (0, language_service_1.detect)(languageService.context, params.textDocument.uri, getTsPluginClient(languageService.context));
92
101
  }
93
102
  });
94
103
  exports.connection.onRequest(protocol_1.GetConvertTagCasingEditsRequest.type, async (params) => {
95
104
  const languageService = await getService(params.textDocument.uri);
96
105
  if (languageService) {
97
- return await (0, language_service_1.convertTagName)(languageService.context, params.textDocument.uri, params.casing, tsPluginClient);
106
+ return await (0, language_service_1.convertTagName)(languageService.context, params.textDocument.uri, params.casing, getTsPluginClient(languageService.context));
98
107
  }
99
108
  });
100
109
  exports.connection.onRequest(protocol_1.GetConvertAttrCasingEditsRequest.type, async (params) => {
101
110
  const languageService = await getService(params.textDocument.uri);
102
111
  if (languageService) {
103
- return await (0, language_service_1.convertAttrName)(languageService.context, params.textDocument.uri, params.casing, tsPluginClient);
112
+ return await (0, language_service_1.convertAttrName)(languageService.context, params.textDocument.uri, params.casing, getTsPluginClient(languageService.context));
104
113
  }
105
114
  });
106
115
  exports.connection.onRequest(protocol_2.GetConnectedNamedPipeServerRequest.type, async (fileName) => {
107
- const server = await tsPluginClient.searchNamedPipeServerForFile(fileName);
116
+ const server = await (0, utils_1.searchNamedPipeServerForFile)(fileName);
108
117
  if (server) {
109
118
  return server;
110
119
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/language-server",
3
- "version": "2.0.5",
3
+ "version": "2.0.7",
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.1",
19
- "@volar/language-server": "~2.1.1",
20
- "@vue/language-core": "2.0.5",
21
- "@vue/language-service": "2.0.5",
22
- "@vue/typescript-plugin": "2.0.5",
18
+ "@volar/language-core": "~2.1.3",
19
+ "@volar/language-server": "~2.1.3",
20
+ "@vue/language-core": "2.0.7",
21
+ "@vue/language-service": "2.0.7",
22
+ "@vue/typescript-plugin": "2.0.7",
23
23
  "vscode-languageserver-protocol": "^3.17.5"
24
24
  },
25
- "gitHead": "62b4fcb0d3f7153b5b2f5571af32f519117d8466"
25
+ "gitHead": "4a37e8f3ebcf31ecfd2ea627f7611d5990ec5df6"
26
26
  }