@vue/language-server 3.0.0-beta.4 → 3.0.0

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/index.js CHANGED
@@ -11,7 +11,13 @@ const reactionsAnalyze_1 = require("./lib/reactionsAnalyze");
11
11
  const reactionsAnalyzeLS_1 = require("./lib/reactionsAnalyzeLS");
12
12
  const connection = (0, node_1.createConnection)();
13
13
  const server = (0, node_1.createServer)(connection);
14
+ const tsserverRequestHandlers = new Map();
15
+ let tsserverRequestId = 0;
14
16
  connection.listen();
17
+ connection.onNotification('tsserver/response', ([id, res]) => {
18
+ tsserverRequestHandlers.get(id)?.(res);
19
+ tsserverRequestHandlers.delete(id);
20
+ });
15
21
  connection.onInitialize(params => {
16
22
  const tsconfigProjects = (0, language_service_1.createUriMap)();
17
23
  const file2ProjectInfo = new Map();
@@ -25,13 +31,7 @@ connection.onInitialize(params => {
25
31
  }
26
32
  }
27
33
  });
28
- let simpleLs;
29
- let tsserverRequestId = 0;
30
- const tsserverRequestHandlers = new Map();
31
- connection.onNotification('tsserver/response', ([id, res]) => {
32
- tsserverRequestHandlers.get(id)?.(res);
33
- tsserverRequestHandlers.delete(id);
34
- });
34
+ let simpleLanguageService;
35
35
  return server.initialize(params, {
36
36
  setup() { },
37
37
  async getLanguageService(uri) {
@@ -39,7 +39,7 @@ connection.onInitialize(params => {
39
39
  const fileName = uri.fsPath.replace(/\\/g, '/');
40
40
  let projectInfoPromise = file2ProjectInfo.get(fileName);
41
41
  if (!projectInfoPromise) {
42
- projectInfoPromise = sendTsRequest('_vue:' + ts.server.protocol.CommandTypes.ProjectInfo, {
42
+ projectInfoPromise = sendTsServerRequest('_vue:' + ts.server.protocol.CommandTypes.ProjectInfo, {
43
43
  file: fileName,
44
44
  needFileNameList: false,
45
45
  });
@@ -48,69 +48,69 @@ connection.onInitialize(params => {
48
48
  const projectInfo = await projectInfoPromise;
49
49
  if (projectInfo) {
50
50
  const { configFileName } = projectInfo;
51
- let ls = tsconfigProjects.get(vscode_uri_1.URI.file(configFileName));
52
- if (!ls) {
53
- ls = createLs(server, configFileName);
54
- tsconfigProjects.set(vscode_uri_1.URI.file(configFileName), ls);
51
+ let languageService = tsconfigProjects.get(vscode_uri_1.URI.file(configFileName));
52
+ if (!languageService) {
53
+ languageService = createProjectLanguageService(server, configFileName);
54
+ tsconfigProjects.set(vscode_uri_1.URI.file(configFileName), languageService);
55
55
  }
56
- return ls;
56
+ return languageService;
57
57
  }
58
58
  }
59
- return simpleLs ??= createLs(server, undefined);
59
+ return simpleLanguageService ??= createProjectLanguageService(server, undefined);
60
60
  },
61
61
  getExistingLanguageServices() {
62
62
  return Promise.all([
63
63
  ...tsconfigProjects.values(),
64
- simpleLs,
64
+ simpleLanguageService,
65
65
  ].filter(promise => !!promise));
66
66
  },
67
67
  reload() {
68
- for (const ls of tsconfigProjects.values()) {
69
- ls.dispose();
68
+ for (const languageService of tsconfigProjects.values()) {
69
+ languageService.dispose();
70
70
  }
71
71
  tsconfigProjects.clear();
72
- if (simpleLs) {
73
- simpleLs.dispose();
74
- simpleLs = undefined;
72
+ if (simpleLanguageService) {
73
+ simpleLanguageService.dispose();
74
+ simpleLanguageService = undefined;
75
75
  }
76
76
  },
77
77
  }, (0, language_service_1.createVueLanguageServicePlugins)(ts, {
78
78
  collectExtractProps(...args) {
79
- return sendTsRequest('_vue:collectExtractProps', args);
79
+ return sendTsServerRequest('_vue:collectExtractProps', args);
80
80
  },
81
81
  getComponentDirectives(...args) {
82
- return sendTsRequest('_vue:getComponentDirectives', args);
82
+ return sendTsServerRequest('_vue:getComponentDirectives', args);
83
83
  },
84
84
  getComponentEvents(...args) {
85
- return sendTsRequest('_vue:getComponentEvents', args);
85
+ return sendTsServerRequest('_vue:getComponentEvents', args);
86
86
  },
87
87
  getComponentNames(...args) {
88
- return sendTsRequest('_vue:getComponentNames', args);
88
+ return sendTsServerRequest('_vue:getComponentNames', args);
89
89
  },
90
90
  getComponentProps(...args) {
91
- return sendTsRequest('_vue:getComponentProps', args);
91
+ return sendTsServerRequest('_vue:getComponentProps', args);
92
92
  },
93
93
  getElementAttrs(...args) {
94
- return sendTsRequest('_vue:getElementAttrs', args);
94
+ return sendTsServerRequest('_vue:getElementAttrs', args);
95
95
  },
96
96
  getElementNames(...args) {
97
- return sendTsRequest('_vue:getElementNames', args);
97
+ return sendTsServerRequest('_vue:getElementNames', args);
98
98
  },
99
99
  getImportPathForFile(...args) {
100
- return sendTsRequest('_vue:getImportPathForFile', args);
100
+ return sendTsServerRequest('_vue:getImportPathForFile', args);
101
101
  },
102
102
  getPropertiesAtLocation(...args) {
103
- return sendTsRequest('_vue:getPropertiesAtLocation', args);
103
+ return sendTsServerRequest('_vue:getPropertiesAtLocation', args);
104
104
  },
105
105
  getDocumentHighlights(fileName, position) {
106
- return sendTsRequest('_vue:documentHighlights-full', {
106
+ return sendTsServerRequest('_vue:documentHighlights-full', {
107
107
  file: fileName,
108
108
  ...{ position },
109
109
  filesToSearch: [fileName],
110
110
  });
111
111
  },
112
112
  async getQuickInfoAtPosition(fileName, { line, character }) {
113
- const result = await sendTsRequest('_vue:' + ts.server.protocol.CommandTypes.Quickinfo, {
113
+ const result = await sendTsServerRequest('_vue:' + ts.server.protocol.CommandTypes.Quickinfo, {
114
114
  file: fileName,
115
115
  line: line + 1,
116
116
  offset: character + 1,
@@ -118,14 +118,14 @@ connection.onInitialize(params => {
118
118
  return ts.displayPartsToString(result?.displayParts ?? []);
119
119
  },
120
120
  }));
121
- async function sendTsRequest(command, args) {
121
+ async function sendTsServerRequest(command, args) {
122
122
  return await new Promise(resolve => {
123
123
  const requestId = ++tsserverRequestId;
124
124
  tsserverRequestHandlers.set(requestId, resolve);
125
125
  connection.sendNotification('tsserver/request', [requestId, command, args]);
126
126
  });
127
127
  }
128
- function createLs(server, tsconfig) {
128
+ function createProjectLanguageService(server, tsconfig) {
129
129
  const commonLine = tsconfig
130
130
  ? (0, language_core_1.createParsedCommandLine)(ts, ts.sys, tsconfig)
131
131
  : {
package/lib/types.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from '@volar/language-server/lib/types';
2
+ export * from '@vue/language-service/lib/types';
package/lib/types.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("@volar/language-server/lib/types"), exports);
18
+ __exportStar(require("@vue/language-service/lib/types"), exports);
19
+ //# sourceMappingURL=types.js.map
package/node.d.ts ADDED
@@ -0,0 +1 @@
1
+ export { };
package/node.js ADDED
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const simpleProject_1 = require("@volar/language-server/lib/project/simpleProject");
4
+ const node_1 = require("@volar/language-server/node");
5
+ const language_core_1 = require("@vue/language-core");
6
+ const language_service_1 = require("@vue/language-service");
7
+ const ts = require("typescript");
8
+ const vscode_uri_1 = require("vscode-uri");
9
+ const connection = (0, node_1.createConnection)();
10
+ const server = (0, node_1.createServer)(connection);
11
+ connection.listen();
12
+ connection.onInitialize(params => {
13
+ const tsconfigProjects = (0, language_service_1.createUriMap)();
14
+ const file2ProjectInfo = new Map();
15
+ server.fileWatcher.onDidChangeWatchedFiles(({ changes }) => {
16
+ for (const change of changes) {
17
+ const changeUri = vscode_uri_1.URI.parse(change.uri);
18
+ if (tsconfigProjects.has(changeUri)) {
19
+ tsconfigProjects.get(changeUri).dispose();
20
+ tsconfigProjects.delete(changeUri);
21
+ file2ProjectInfo.clear();
22
+ }
23
+ }
24
+ });
25
+ let simpleLs;
26
+ let tsserverRequestId = 0;
27
+ const tsserverRequestHandlers = new Map();
28
+ connection.onNotification('tsserver/response', ([id, res]) => {
29
+ tsserverRequestHandlers.get(id)?.(res);
30
+ tsserverRequestHandlers.delete(id);
31
+ });
32
+ return server.initialize(params, {
33
+ setup() { },
34
+ async getLanguageService(uri) {
35
+ if (uri.scheme === 'file') {
36
+ const fileName = uri.fsPath.replace(/\\/g, '/');
37
+ let projectInfoPromise = file2ProjectInfo.get(fileName);
38
+ if (!projectInfoPromise) {
39
+ projectInfoPromise = sendTsRequest(ts.server.protocol.CommandTypes.ProjectInfo, {
40
+ file: fileName,
41
+ needFileNameList: false,
42
+ });
43
+ file2ProjectInfo.set(fileName, projectInfoPromise);
44
+ }
45
+ const projectInfo = await projectInfoPromise;
46
+ if (projectInfo) {
47
+ const { configFileName } = projectInfo;
48
+ let ls = tsconfigProjects.get(vscode_uri_1.URI.file(configFileName));
49
+ if (!ls) {
50
+ ls = createLs(server, configFileName);
51
+ tsconfigProjects.set(vscode_uri_1.URI.file(configFileName), ls);
52
+ }
53
+ return ls;
54
+ }
55
+ }
56
+ return simpleLs ??= createLs(server, undefined);
57
+ },
58
+ getExistingLanguageServices() {
59
+ return Promise.all([
60
+ ...tsconfigProjects.values(),
61
+ simpleLs,
62
+ ].filter(promise => !!promise));
63
+ },
64
+ reload() {
65
+ for (const ls of tsconfigProjects.values()) {
66
+ ls.dispose();
67
+ }
68
+ tsconfigProjects.clear();
69
+ if (simpleLs) {
70
+ simpleLs.dispose();
71
+ simpleLs = undefined;
72
+ }
73
+ },
74
+ }, (0, language_service_1.getHybridModeLanguageServicePlugins)(ts, {
75
+ collectExtractProps(...args) {
76
+ return sendTsRequest('vue:collectExtractProps', args);
77
+ },
78
+ getComponentDirectives(...args) {
79
+ return sendTsRequest('vue:getComponentDirectives', args);
80
+ },
81
+ getComponentEvents(...args) {
82
+ return sendTsRequest('vue:getComponentEvents', args);
83
+ },
84
+ getComponentNames(...args) {
85
+ return sendTsRequest('vue:getComponentNames', args);
86
+ },
87
+ getComponentProps(...args) {
88
+ return sendTsRequest('vue:getComponentProps', args);
89
+ },
90
+ getElementAttrs(...args) {
91
+ return sendTsRequest('vue:getElementAttrs', args);
92
+ },
93
+ getElementNames(...args) {
94
+ return sendTsRequest('vue:getElementNames', args);
95
+ },
96
+ getImportPathForFile(...args) {
97
+ return sendTsRequest('vue:getImportPathForFile', args);
98
+ },
99
+ getPropertiesAtLocation(...args) {
100
+ return sendTsRequest('vue:getPropertiesAtLocation', args);
101
+ },
102
+ getDocumentHighlights(fileName, position) {
103
+ return sendTsRequest('documentHighlights-full', // internal command
104
+ {
105
+ file: fileName,
106
+ ...{ position },
107
+ filesToSearch: [fileName],
108
+ });
109
+ },
110
+ async getQuickInfoAtPosition(fileName, { line, character }) {
111
+ const result = await sendTsRequest(ts.server.protocol.CommandTypes.Quickinfo, {
112
+ file: fileName,
113
+ line: line + 1,
114
+ offset: character + 1,
115
+ });
116
+ return ts.displayPartsToString(result?.displayParts ?? []);
117
+ },
118
+ }));
119
+ async function sendTsRequest(command, args) {
120
+ return await new Promise(resolve => {
121
+ const requestId = ++tsserverRequestId;
122
+ tsserverRequestHandlers.set(requestId, resolve);
123
+ connection.sendNotification('tsserver/request', [requestId, command, args]);
124
+ });
125
+ }
126
+ function createLs(server, tsconfig) {
127
+ const commonLine = tsconfig
128
+ ? (0, language_core_1.createParsedCommandLine)(ts, ts.sys, tsconfig)
129
+ : {
130
+ options: ts.getDefaultCompilerOptions(),
131
+ vueOptions: (0, language_core_1.getDefaultCompilerOptions)(),
132
+ };
133
+ const language = (0, language_core_1.createLanguage)([
134
+ {
135
+ getLanguageId: uri => server.documents.get(uri)?.languageId,
136
+ },
137
+ (0, language_core_1.createVueLanguagePlugin)(ts, commonLine.options, commonLine.vueOptions, uri => uri.fsPath.replace(/\\/g, '/')),
138
+ ], (0, language_service_1.createUriMap)(), uri => {
139
+ const document = server.documents.get(uri);
140
+ if (document) {
141
+ language.scripts.set(uri, document.getSnapshot(), document.languageId);
142
+ }
143
+ else {
144
+ language.scripts.delete(uri);
145
+ }
146
+ });
147
+ return (0, language_service_1.createLanguageService)(language, server.languageServicePlugins, (0, simpleProject_1.createLanguageServiceEnvironment)(server, [...server.workspaceFolders.all]), { vue: { compilerOptions: commonLine.vueOptions } });
148
+ }
149
+ });
150
+ connection.onInitialized(server.initialized);
151
+ connection.onShutdown(server.shutdown);
152
+ //# sourceMappingURL=node.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/language-server",
3
- "version": "3.0.0-beta.4",
3
+ "version": "3.0.0",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "**/*.js",
@@ -16,10 +16,10 @@
16
16
  "directory": "packages/language-server"
17
17
  },
18
18
  "dependencies": {
19
- "@volar/language-server": "2.4.15",
20
- "@vue/language-core": "3.0.0-beta.4",
21
- "@vue/language-service": "3.0.0-beta.4",
22
- "@vue/typescript-plugin": "3.0.0-beta.4",
19
+ "@volar/language-server": "2.4.16",
20
+ "@vue/language-core": "3.0.0",
21
+ "@vue/language-service": "3.0.0",
22
+ "@vue/typescript-plugin": "3.0.0",
23
23
  "vscode-uri": "^3.0.8"
24
24
  },
25
25
  "peerDependencies": {
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "devDependencies": {
29
29
  "@typescript/server-harness": "latest",
30
- "@volar/test-utils": "2.4.15"
30
+ "@volar/test-utils": "2.4.16"
31
31
  },
32
- "gitHead": "5cb41faacbfe2d9e2d64637c6c1ae8769d9cba3f"
32
+ "gitHead": "620f050fd494cccd215781907c950e17dae4fd58"
33
33
  }
package/protocol.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from '@volar/language-server/protocol';
package/protocol.js ADDED
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("@volar/language-server/protocol"), exports);
18
+ //# sourceMappingURL=protocol.js.map