@vue/typescript-plugin 3.0.0-alpha.8 → 3.0.0-beta.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.js +2 -2
- package/lib/common.d.ts +1 -1
- package/lib/common.js +28 -4
- package/lib/requests/collectExtractProps.js +2 -2
- package/lib/requests/getComponentDirectives.js +11 -3
- package/lib/requests/getComponentEvents.js +2 -2
- package/lib/requests/getComponentNames.js +2 -2
- package/lib/requests/getComponentProps.js +2 -2
- package/lib/requests/getElementAttrs.js +2 -2
- package/lib/requests/getElementNames.js +2 -2
- package/lib/requests/getPropertiesAtLocation.js +2 -2
- package/lib/requests/types.d.ts +1 -1
- package/package.json +4 -4
- package/lib/requests/getCurrentComponentSlots.d.ts +0 -1
- package/lib/requests/getCurrentComponentSlots.js +0 -3
- package/lib/requests/getDefineSlotNames.d.ts +0 -1
- package/lib/requests/getDefineSlotNames.js +0 -3
- package/lib/requests/getDefineSlots.d.ts +0 -2
- package/lib/requests/getDefineSlots.js +0 -16
package/index.js
CHANGED
|
@@ -21,7 +21,7 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
|
|
|
21
21
|
languagePlugins: [languagePlugin],
|
|
22
22
|
setup: language => {
|
|
23
23
|
project2Service.set(info.project, [language, info.languageServiceHost, info.languageService]);
|
|
24
|
-
info.languageService = (0, common_1.
|
|
24
|
+
info.languageService = (0, common_1.createVueLanguageServiceProxy)(ts, language, info.languageService, vueOptions, fileName => fileName);
|
|
25
25
|
// #3963
|
|
26
26
|
const timer = setInterval(() => {
|
|
27
27
|
if (info.project['program']) {
|
|
@@ -120,7 +120,7 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
|
|
|
120
120
|
languageServiceHost: service[1],
|
|
121
121
|
language: service[0],
|
|
122
122
|
isTsPlugin: true,
|
|
123
|
-
|
|
123
|
+
asScriptId: (fileName) => fileName,
|
|
124
124
|
};
|
|
125
125
|
}
|
|
126
126
|
});
|
package/lib/common.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { type Language, type VueCompilerOptions } from '@vue/language-core';
|
|
2
2
|
import type * as ts from 'typescript';
|
|
3
|
-
export declare function
|
|
3
|
+
export declare function createVueLanguageServiceProxy<T>(ts: typeof import('typescript'), language: Language<T>, languageService: ts.LanguageService, vueOptions: VueCompilerOptions, asScriptId: (fileName: string) => T): ts.LanguageService;
|
package/lib/common.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createVueLanguageServiceProxy = createVueLanguageServiceProxy;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
const shared_1 = require("@vue/shared");
|
|
6
6
|
const getComponentNames_1 = require("./requests/getComponentNames");
|
|
7
7
|
const getElementNames_1 = require("./requests/getElementNames");
|
|
8
8
|
const windowsPathReg = /\\/g;
|
|
9
|
-
function
|
|
9
|
+
function createVueLanguageServiceProxy(ts, language, languageService, vueOptions, asScriptId) {
|
|
10
10
|
const proxyCache = new Map();
|
|
11
11
|
const getProxyMethod = (target, p) => {
|
|
12
12
|
switch (p) {
|
|
13
|
-
case 'getCompletionsAtPosition': return getCompletionsAtPosition(vueOptions, target[p]);
|
|
13
|
+
case 'getCompletionsAtPosition': return getCompletionsAtPosition(ts, language, vueOptions, asScriptId, target[p]);
|
|
14
14
|
case 'getCompletionEntryDetails': return getCompletionEntryDetails(language, asScriptId, target[p]);
|
|
15
15
|
case 'getCodeFixesAtPosition': return getCodeFixesAtPosition(target[p]);
|
|
16
16
|
case 'getDefinitionAndBoundSpan': return getDefinitionAndBoundSpan(ts, language, languageService, vueOptions, asScriptId, target[p]);
|
|
@@ -37,7 +37,7 @@ function proxyLanguageServiceForVue(ts, language, languageService, vueOptions, a
|
|
|
37
37
|
},
|
|
38
38
|
});
|
|
39
39
|
}
|
|
40
|
-
function getCompletionsAtPosition(vueOptions, getCompletionsAtPosition) {
|
|
40
|
+
function getCompletionsAtPosition(ts, language, vueOptions, asScriptId, getCompletionsAtPosition) {
|
|
41
41
|
return (filePath, position, options, formattingSettings) => {
|
|
42
42
|
const fileName = filePath.replace(windowsPathReg, '/');
|
|
43
43
|
const result = getCompletionsAtPosition(fileName, position, options, formattingSettings);
|
|
@@ -45,6 +45,30 @@ function getCompletionsAtPosition(vueOptions, getCompletionsAtPosition) {
|
|
|
45
45
|
// filter __VLS_
|
|
46
46
|
result.entries = result.entries.filter(entry => !entry.name.includes('__VLS_')
|
|
47
47
|
&& !entry.labelDetails?.description?.includes('__VLS_'));
|
|
48
|
+
// filter global variables in template and styles
|
|
49
|
+
const sourceScript = language.scripts.get(asScriptId(fileName));
|
|
50
|
+
const root = sourceScript?.generated?.root;
|
|
51
|
+
if (root instanceof language_core_1.VueVirtualCode) {
|
|
52
|
+
const blocks = [
|
|
53
|
+
root.sfc.template,
|
|
54
|
+
...root.sfc.styles,
|
|
55
|
+
];
|
|
56
|
+
const ranges = blocks.filter(Boolean).map(block => [
|
|
57
|
+
block.startTagEnd,
|
|
58
|
+
block.endTagStart,
|
|
59
|
+
]);
|
|
60
|
+
if (ranges.some(([start, end]) => position >= start && position <= end)) {
|
|
61
|
+
const globalsOrKeywords = ts.Completions.SortText.GlobalsOrKeywords;
|
|
62
|
+
const sortTexts = new Set([
|
|
63
|
+
globalsOrKeywords,
|
|
64
|
+
'z' + globalsOrKeywords,
|
|
65
|
+
globalsOrKeywords + '1',
|
|
66
|
+
]);
|
|
67
|
+
result.entries = result.entries.filter(entry => !(entry.kind === 'const' && entry.name in vueOptions.macros) && (entry.kind !== 'var' && entry.kind !== 'function'
|
|
68
|
+
|| !sortTexts.has(entry.sortText)
|
|
69
|
+
|| (0, shared_1.isGloballyAllowed)(entry.name)));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
48
72
|
// modify label
|
|
49
73
|
for (const item of result.entries) {
|
|
50
74
|
if (item.source) {
|
|
@@ -3,8 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.collectExtractProps = collectExtractProps;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
function collectExtractProps(fileName, templateCodeRange) {
|
|
6
|
-
const { typescript: ts, languageService, language, isTsPlugin,
|
|
7
|
-
const sourceScript = language.scripts.get(
|
|
6
|
+
const { typescript: ts, languageService, language, isTsPlugin, asScriptId } = this;
|
|
7
|
+
const sourceScript = language.scripts.get(asScriptId(fileName));
|
|
8
8
|
if (!sourceScript?.generated) {
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
@@ -3,9 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getComponentDirectives = getComponentDirectives;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
|
+
const builtInDirectives = new Set([
|
|
7
|
+
'vBind',
|
|
8
|
+
'vIf',
|
|
9
|
+
'vOn',
|
|
10
|
+
'vOnce',
|
|
11
|
+
'vShow',
|
|
12
|
+
'vSlot',
|
|
13
|
+
]);
|
|
6
14
|
function getComponentDirectives(fileName) {
|
|
7
|
-
const { typescript: ts, language, languageService,
|
|
8
|
-
const volarFile = language.scripts.get(
|
|
15
|
+
const { typescript: ts, language, languageService, asScriptId } = this;
|
|
16
|
+
const volarFile = language.scripts.get(asScriptId(fileName));
|
|
9
17
|
if (!(volarFile?.generated?.root instanceof language_core_1.VueVirtualCode)) {
|
|
10
18
|
return;
|
|
11
19
|
}
|
|
@@ -17,6 +25,6 @@ function getComponentDirectives(fileName) {
|
|
|
17
25
|
return directives.type.getProperties()
|
|
18
26
|
.map(({ name }) => name)
|
|
19
27
|
.filter(name => name.startsWith('v') && name.length >= 2 && name[1] === name[1].toUpperCase())
|
|
20
|
-
.filter(name => !
|
|
28
|
+
.filter(name => !builtInDirectives.has(name));
|
|
21
29
|
}
|
|
22
30
|
//# sourceMappingURL=getComponentDirectives.js.map
|
|
@@ -4,8 +4,8 @@ exports.getComponentEvents = getComponentEvents;
|
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
function getComponentEvents(fileName, tag) {
|
|
7
|
-
const { typescript: ts, language, languageService,
|
|
8
|
-
const volarFile = language.scripts.get(
|
|
7
|
+
const { typescript: ts, language, languageService, asScriptId } = this;
|
|
8
|
+
const volarFile = language.scripts.get(asScriptId(fileName));
|
|
9
9
|
if (!(volarFile?.generated?.root instanceof language_core_1.VueVirtualCode)) {
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
@@ -5,8 +5,8 @@ exports._getComponentNames = _getComponentNames;
|
|
|
5
5
|
const language_core_1 = require("@vue/language-core");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
7
|
function getComponentNames(fileName) {
|
|
8
|
-
const { typescript: ts, language, languageService,
|
|
9
|
-
const volarFile = language.scripts.get(
|
|
8
|
+
const { typescript: ts, language, languageService, asScriptId } = this;
|
|
9
|
+
const volarFile = language.scripts.get(asScriptId(fileName));
|
|
10
10
|
if (!(volarFile?.generated?.root instanceof language_core_1.VueVirtualCode)) {
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
@@ -4,8 +4,8 @@ exports.getComponentProps = getComponentProps;
|
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
function getComponentProps(fileName, tag) {
|
|
7
|
-
const { typescript: ts, language, languageService,
|
|
8
|
-
const volarFile = language.scripts.get(
|
|
7
|
+
const { typescript: ts, language, languageService, asScriptId } = this;
|
|
8
|
+
const volarFile = language.scripts.get(asScriptId(fileName));
|
|
9
9
|
if (!(volarFile?.generated?.root instanceof language_core_1.VueVirtualCode)) {
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
@@ -4,8 +4,8 @@ exports.getElementAttrs = getElementAttrs;
|
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
const utils_1 = require("./utils");
|
|
6
6
|
function getElementAttrs(fileName, tagName) {
|
|
7
|
-
const { typescript: ts, language, languageService,
|
|
8
|
-
const volarFile = language.scripts.get(
|
|
7
|
+
const { typescript: ts, language, languageService, asScriptId } = this;
|
|
8
|
+
const volarFile = language.scripts.get(asScriptId(fileName));
|
|
9
9
|
if (!(volarFile?.generated?.root instanceof language_core_1.VueVirtualCode)) {
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
@@ -5,8 +5,8 @@ exports._getElementNames = _getElementNames;
|
|
|
5
5
|
const language_core_1 = require("@vue/language-core");
|
|
6
6
|
const utils_1 = require("./utils");
|
|
7
7
|
function getElementNames(fileName) {
|
|
8
|
-
const { typescript: ts, language, languageService,
|
|
9
|
-
const volarFile = language.scripts.get(
|
|
8
|
+
const { typescript: ts, language, languageService, asScriptId } = this;
|
|
9
|
+
const volarFile = language.scripts.get(asScriptId(fileName));
|
|
10
10
|
if (!(volarFile?.generated?.root instanceof language_core_1.VueVirtualCode)) {
|
|
11
11
|
return;
|
|
12
12
|
}
|
|
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.getPropertiesAtLocation = getPropertiesAtLocation;
|
|
5
5
|
const language_core_1 = require("@vue/language-core");
|
|
6
6
|
function getPropertiesAtLocation(fileName, position) {
|
|
7
|
-
const { languageService, language, typescript: ts, isTsPlugin,
|
|
7
|
+
const { languageService, language, typescript: ts, isTsPlugin, asScriptId } = this;
|
|
8
8
|
// mapping
|
|
9
|
-
const file = language.scripts.get(
|
|
9
|
+
const file = language.scripts.get(asScriptId(fileName));
|
|
10
10
|
if (file?.generated) {
|
|
11
11
|
const virtualScript = file.generated.languagePlugin.typescript?.getServiceScript(file.generated.root);
|
|
12
12
|
if (!virtualScript) {
|
package/lib/requests/types.d.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue/typescript-plugin",
|
|
3
|
-
"version": "3.0.0-
|
|
3
|
+
"version": "3.0.0-beta.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"directory": "packages/typescript-plugin"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@volar/typescript": "
|
|
17
|
-
"@vue/language-core": "3.0.0-
|
|
16
|
+
"@volar/typescript": "2.4.14",
|
|
17
|
+
"@vue/language-core": "3.0.0-beta.2",
|
|
18
18
|
"@vue/shared": "^3.5.0",
|
|
19
19
|
"path-browserify": "^1.0.1"
|
|
20
20
|
},
|
|
@@ -22,5 +22,5 @@
|
|
|
22
22
|
"@types/node": "^22.10.4",
|
|
23
23
|
"@types/path-browserify": "^1.0.1"
|
|
24
24
|
},
|
|
25
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "ea40288f6fceebb65346732b6de5859c300cf1ee"
|
|
26
26
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDefineSlots = getDefineSlots;
|
|
4
|
-
const language_core_1 = require("@vue/language-core");
|
|
5
|
-
const utils_1 = require("./utils");
|
|
6
|
-
function getDefineSlots(fileName) {
|
|
7
|
-
const { typescript: ts, language, languageService, getFileId } = this;
|
|
8
|
-
const volarFile = language.scripts.get(getFileId(fileName));
|
|
9
|
-
if (!(volarFile?.generated?.root instanceof language_core_1.VueVirtualCode)) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
const vueCode = volarFile.generated.root;
|
|
13
|
-
const slots = (0, utils_1.getTypeAliasType)(ts, languageService, vueCode, '__VLS_Slots');
|
|
14
|
-
return slots?.type.getProperties().map(prop => prop.getName());
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=getDefineSlots.js.map
|