@vue/typescript-plugin 2.0.29 → 2.1.2
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.d.ts +2 -1
- package/index.js +24 -4
- package/lib/requests/collectExtractProps.js +1 -4
- package/lib/requests/componentInfos.js +5 -17
- package/lib/requests/getPropertiesAtLocation.js +1 -4
- package/lib/server.js +10 -10
- package/package.json +4 -4
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -4,11 +4,11 @@ const vue = require("@vue/language-core");
|
|
|
4
4
|
const common_1 = require("./lib/common");
|
|
5
5
|
const server_1 = require("./lib/server");
|
|
6
6
|
const windowsPathReg = /\\/g;
|
|
7
|
-
const
|
|
7
|
+
const vueCompilerOptions = new WeakMap();
|
|
8
|
+
const basePlugin = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)((ts, info) => {
|
|
8
9
|
const vueOptions = getVueCompilerOptions();
|
|
9
|
-
const languagePlugin = vue.
|
|
10
|
-
|
|
11
|
-
: vue.createRootFileChecker(info.languageServiceHost.getProjectVersion ? () => info.languageServiceHost.getProjectVersion() : undefined, () => createLanguageServicePlugin_1.externalFiles.get(info.project) ?? [], info.languageServiceHost.useCaseSensitiveFileNames?.() ?? false), info.languageServiceHost.getCompilationSettings(), vueOptions);
|
|
10
|
+
const languagePlugin = vue.createVueLanguagePlugin(ts, info.languageServiceHost.getCompilationSettings(), vueOptions, id => id);
|
|
11
|
+
vueCompilerOptions.set(info.project, vueOptions);
|
|
12
12
|
return {
|
|
13
13
|
languagePlugins: [languagePlugin],
|
|
14
14
|
setup: language => {
|
|
@@ -36,5 +36,25 @@ const plugin = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)((t
|
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
|
+
const plugin = mods => {
|
|
40
|
+
const pluginModule = basePlugin(mods);
|
|
41
|
+
return {
|
|
42
|
+
...pluginModule,
|
|
43
|
+
getExternalFiles(proj, updateLevel = 0) {
|
|
44
|
+
const options = vueCompilerOptions.get(proj);
|
|
45
|
+
if (updateLevel >= 1 && options) {
|
|
46
|
+
try {
|
|
47
|
+
const libDir = require.resolve(`${options.lib}/package.json`, { paths: [proj.getCurrentDirectory()] })
|
|
48
|
+
.slice(0, -'package.json'.length);
|
|
49
|
+
const globalTypesPath = `${libDir}dist/__globalTypes_${options.target}_${options.strictTemplates}.d.ts`;
|
|
50
|
+
const globalTypesContents = vue.generateGlobalTypes(options.lib, options.target, options.strictTemplates);
|
|
51
|
+
proj.writeFile(globalTypesPath, globalTypesContents);
|
|
52
|
+
}
|
|
53
|
+
catch { }
|
|
54
|
+
}
|
|
55
|
+
return pluginModule.getExternalFiles?.(proj, updateLevel) ?? [];
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
};
|
|
39
59
|
module.exports = plugin;
|
|
40
60
|
//# sourceMappingURL=index.js.map
|
|
@@ -9,10 +9,7 @@ function collectExtractProps(fileName, templateCodeRange) {
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
const result = new Map();
|
|
12
|
-
const program = languageService.
|
|
13
|
-
if (!program) {
|
|
14
|
-
return;
|
|
15
|
-
}
|
|
12
|
+
const program = languageService.getProgram();
|
|
16
13
|
const sourceFile = program.getSourceFile(fileName);
|
|
17
14
|
const checker = program.getTypeChecker();
|
|
18
15
|
const script = volarFile.generated?.languagePlugin.typescript?.getServiceScript(volarFile.generated.root);
|
|
@@ -15,10 +15,7 @@ function getComponentProps(fileName, tag, requiredOnly = false) {
|
|
|
15
15
|
return;
|
|
16
16
|
}
|
|
17
17
|
const vueCode = volarFile.generated.root;
|
|
18
|
-
const program = languageService.
|
|
19
|
-
if (!program) {
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
18
|
+
const program = languageService.getProgram();
|
|
22
19
|
const checker = program.getTypeChecker();
|
|
23
20
|
const components = getVariableType(ts, languageService, vueCode, '__VLS_components');
|
|
24
21
|
if (!components) {
|
|
@@ -81,10 +78,7 @@ function getComponentEvents(fileName, tag) {
|
|
|
81
78
|
return;
|
|
82
79
|
}
|
|
83
80
|
const vueCode = volarFile.generated.root;
|
|
84
|
-
const program = languageService.
|
|
85
|
-
if (!program) {
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
81
|
+
const program = languageService.getProgram();
|
|
88
82
|
const checker = program.getTypeChecker();
|
|
89
83
|
const components = getVariableType(ts, languageService, vueCode, '__VLS_components');
|
|
90
84
|
if (!components) {
|
|
@@ -174,10 +168,7 @@ function getElementAttrs(fileName, tagName) {
|
|
|
174
168
|
if (!(volarFile?.generated?.root instanceof vue.VueVirtualCode)) {
|
|
175
169
|
return;
|
|
176
170
|
}
|
|
177
|
-
const program = languageService.
|
|
178
|
-
if (!program) {
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
171
|
+
const program = languageService.getProgram();
|
|
181
172
|
let tsSourceFile;
|
|
182
173
|
if (tsSourceFile = program.getSourceFile(fileName)) {
|
|
183
174
|
const typeNode = tsSourceFile.statements.find((node) => ts.isTypeAliasDeclaration(node) && node.name.getText() === '__VLS_IntrinsicElementsCompletion');
|
|
@@ -193,11 +184,8 @@ function getElementAttrs(fileName, tagName) {
|
|
|
193
184
|
}
|
|
194
185
|
return [];
|
|
195
186
|
}
|
|
196
|
-
function getVariableType(ts,
|
|
197
|
-
const program =
|
|
198
|
-
if (!program) {
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
187
|
+
function getVariableType(ts, languageService, vueCode, name) {
|
|
188
|
+
const program = languageService.getProgram();
|
|
201
189
|
let tsSourceFile;
|
|
202
190
|
if (tsSourceFile = program.getSourceFile(vueCode.fileName)) {
|
|
203
191
|
const node = searchVariableDeclarationNode(ts, tsSourceFile, name);
|
|
@@ -31,10 +31,7 @@ function getPropertiesAtLocation(fileName, position) {
|
|
|
31
31
|
position += file.snapshot.getLength();
|
|
32
32
|
}
|
|
33
33
|
}
|
|
34
|
-
const program = languageService.
|
|
35
|
-
if (!program) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
34
|
+
const program = languageService.getProgram();
|
|
38
35
|
const sourceFile = program.getSourceFile(fileName);
|
|
39
36
|
if (!sourceFile) {
|
|
40
37
|
return;
|
package/lib/server.js
CHANGED
|
@@ -19,25 +19,25 @@ async function startNamedPipeServer(ts, info, language, projectKind) {
|
|
|
19
19
|
}
|
|
20
20
|
const request = JSON.parse(text);
|
|
21
21
|
const fileName = request.args[0];
|
|
22
|
+
const requestContext = {
|
|
23
|
+
typescript: ts,
|
|
24
|
+
languageService: info.languageService,
|
|
25
|
+
languageServiceHost: info.languageServiceHost,
|
|
26
|
+
language: language,
|
|
27
|
+
isTsPlugin: true,
|
|
28
|
+
getFileId: (fileName) => fileName,
|
|
29
|
+
};
|
|
22
30
|
if (request.type === 'containsFile') {
|
|
23
31
|
sendResponse(info.project.containsFile(ts.server.toNormalizedPath(fileName)));
|
|
24
32
|
}
|
|
25
|
-
if (request.type === 'projectInfo') {
|
|
33
|
+
else if (request.type === 'projectInfo') {
|
|
26
34
|
sendResponse({
|
|
27
35
|
name: info.project.getProjectName(),
|
|
28
36
|
kind: info.project.projectKind,
|
|
29
37
|
currentDirectory: info.project.getCurrentDirectory(),
|
|
30
38
|
});
|
|
31
39
|
}
|
|
32
|
-
|
|
33
|
-
typescript: ts,
|
|
34
|
-
languageService: info.languageService,
|
|
35
|
-
languageServiceHost: info.languageServiceHost,
|
|
36
|
-
language: language,
|
|
37
|
-
isTsPlugin: true,
|
|
38
|
-
getFileId: (fileName) => fileName,
|
|
39
|
-
};
|
|
40
|
-
if (request.type === 'collectExtractProps') {
|
|
40
|
+
else if (request.type === 'collectExtractProps') {
|
|
41
41
|
const result = collectExtractProps_1.collectExtractProps.apply(requestContext, request.args);
|
|
42
42
|
sendResponse(result);
|
|
43
43
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue/typescript-plugin",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"directory": "packages/typescript-plugin"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
15
|
-
"@volar/typescript": "~2.4.
|
|
16
|
-
"@vue/language-core": "2.
|
|
15
|
+
"@volar/typescript": "~2.4.1",
|
|
16
|
+
"@vue/language-core": "2.1.2",
|
|
17
17
|
"@vue/shared": "^3.4.0"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"@types/node": "latest"
|
|
21
21
|
},
|
|
22
|
-
"gitHead": "
|
|
22
|
+
"gitHead": "4e4b839ea20ae11a2aef7ee9206465cb60a4be53"
|
|
23
23
|
}
|