@vue/language-service 3.0.4 → 3.0.6
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 +1 -1
- package/index.js +21 -15
- package/lib/{plugins/data.js → data.js} +31 -32
- package/lib/plugins/css.js +1 -1
- package/lib/plugins/typescript-semantic-tokens.d.ts +1 -1
- package/lib/plugins/typescript-semantic-tokens.js +3 -3
- package/lib/plugins/vue-autoinsert-dotvalue.d.ts +1 -1
- package/lib/plugins/vue-autoinsert-dotvalue.js +8 -19
- package/lib/plugins/vue-autoinsert-space.js +2 -6
- package/lib/plugins/vue-compiler-dom-errors.js +1 -1
- package/lib/plugins/vue-component-semantic-tokens.d.ts +1 -1
- package/lib/plugins/vue-component-semantic-tokens.js +4 -4
- package/lib/plugins/vue-document-drop.d.ts +1 -1
- package/lib/plugins/vue-document-drop.js +4 -7
- package/lib/plugins/vue-document-highlights.d.ts +1 -1
- package/lib/plugins/vue-document-highlights.js +19 -3
- package/lib/plugins/vue-extract-file.d.ts +1 -1
- package/lib/plugins/vue-extract-file.js +3 -3
- package/lib/plugins/vue-global-types-error.js +6 -3
- package/lib/plugins/vue-inlayhints.js +1 -1
- package/lib/plugins/vue-missing-props-hints.d.ts +1 -1
- package/lib/plugins/vue-missing-props-hints.js +5 -5
- package/lib/plugins/vue-scoped-class-links.js +1 -1
- package/lib/plugins/vue-sfc.js +2 -2
- package/lib/plugins/vue-suggest-define-assignment.js +1 -1
- package/lib/plugins/vue-template-ref-links.js +1 -1
- package/lib/plugins/vue-template.d.ts +1 -1
- package/lib/plugins/vue-template.js +19 -21
- package/lib/plugins/vue-twoslash-queries.d.ts +1 -1
- package/lib/plugins/vue-twoslash-queries.js +3 -3
- package/lib/{plugins/utils.d.ts → utils.d.ts} +0 -1
- package/lib/{plugins/utils.js → utils.js} +0 -4
- package/package.json +7 -7
- package/lib/plugins/vue-autoinsert-dotvalue.d copy.d.ts +0 -2
- package/lib/plugins/vue-autoinsert-dotvalue.d copy.js +0 -3
- package/lib/plugins/vue-complete-define-assignment.d.ts +0 -2
- package/lib/plugins/vue-complete-define-assignment.js +0 -84
- package/lib/plugins/vue-destructured-props-hints.d.ts +0 -7
- package/lib/plugins/vue-destructured-props-hints.js +0 -220
- package/lib/plugins/vue-diagnostic-global-types.d.ts +0 -1
- package/lib/plugins/vue-diagnostic-global-types.js +0 -3
- package/lib/plugins/vue-document-links.d.ts +0 -2
- package/lib/plugins/vue-document-links.js +0 -109
- package/lib/types.d.ts +0 -13
- package/lib/types.js +0 -34
- /package/lib/{plugins/data.d.ts → data.d.ts} +0 -0
package/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from '@volar/language-service';
|
|
2
2
|
export * from '@volar/language-service/lib/utils/featureWorkers';
|
|
3
|
-
export declare function createVueLanguageServicePlugins(ts: typeof import('typescript'), tsPluginClient
|
|
3
|
+
export declare function createVueLanguageServicePlugins(ts: typeof import('typescript'), tsPluginClient?: import('@vue/typescript-plugin/lib/requests').Requests): import("@volar/language-service").LanguageServicePlugin<any>[];
|
package/index.js
CHANGED
|
@@ -44,38 +44,44 @@ const vue_template_1 = require("./lib/plugins/vue-template");
|
|
|
44
44
|
const vue_template_ref_links_1 = require("./lib/plugins/vue-template-ref-links");
|
|
45
45
|
const vue_twoslash_queries_1 = require("./lib/plugins/vue-twoslash-queries");
|
|
46
46
|
function createVueLanguageServicePlugins(ts, tsPluginClient) {
|
|
47
|
-
|
|
47
|
+
tsPluginClient ??= new Proxy({}, {
|
|
48
|
+
get() {
|
|
49
|
+
return () => undefined;
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
return [
|
|
48
53
|
(0, css_1.create)(),
|
|
49
54
|
(0, volar_service_json_1.create)(),
|
|
50
55
|
(0, volar_service_pug_beautify_1.create)(),
|
|
51
|
-
(0, docCommentTemplate_1.create)(ts),
|
|
52
|
-
(0, typescript_semantic_tokens_1.create)(tsPluginClient),
|
|
53
|
-
(0, syntactic_1.create)(ts),
|
|
54
56
|
(0, vue_autoinsert_space_1.create)(),
|
|
55
|
-
(0, vue_autoinsert_dotvalue_1.create)(ts, tsPluginClient),
|
|
56
57
|
(0, vue_compiler_dom_errors_1.create)(),
|
|
57
|
-
(0, vue_component_semantic_tokens_1.create)(tsPluginClient),
|
|
58
|
-
(0, vue_document_drop_1.create)(ts, tsPluginClient),
|
|
59
|
-
(0, vue_document_highlights_1.create)(tsPluginClient),
|
|
60
58
|
(0, vue_directive_comments_1.create)(),
|
|
61
|
-
(0, vue_extract_file_1.create)(ts, tsPluginClient),
|
|
62
59
|
(0, vue_global_types_error_1.create)(),
|
|
63
|
-
(0, vue_inlayhints_1.create)(ts),
|
|
64
|
-
(0, vue_missing_props_hints_1.create)(tsPluginClient),
|
|
65
60
|
(0, vue_scoped_class_links_1.create)(),
|
|
66
61
|
(0, vue_sfc_1.create)(),
|
|
67
62
|
(0, vue_suggest_define_assignment_1.create)(),
|
|
68
|
-
(0, vue_template_1.create)('html', tsPluginClient),
|
|
69
|
-
(0, vue_template_1.create)('pug', tsPluginClient),
|
|
70
63
|
(0, vue_template_ref_links_1.create)(),
|
|
71
|
-
(0, vue_twoslash_queries_1.create)(tsPluginClient),
|
|
72
64
|
(0, volar_service_emmet_1.create)({
|
|
73
65
|
mappedLanguages: {
|
|
74
66
|
'vue-root-tags': 'html',
|
|
75
67
|
'postcss': 'scss',
|
|
76
68
|
},
|
|
77
69
|
}),
|
|
70
|
+
// TS related plugins
|
|
71
|
+
(0, docCommentTemplate_1.create)(ts),
|
|
72
|
+
(0, syntactic_1.create)(ts),
|
|
73
|
+
(0, vue_inlayhints_1.create)(ts),
|
|
74
|
+
// type aware plugins
|
|
75
|
+
(0, typescript_semantic_tokens_1.create)(tsPluginClient),
|
|
76
|
+
(0, vue_autoinsert_dotvalue_1.create)(ts, tsPluginClient),
|
|
77
|
+
(0, vue_component_semantic_tokens_1.create)(tsPluginClient),
|
|
78
|
+
(0, vue_document_drop_1.create)(ts, tsPluginClient),
|
|
79
|
+
(0, vue_document_highlights_1.create)(tsPluginClient),
|
|
80
|
+
(0, vue_extract_file_1.create)(ts, tsPluginClient),
|
|
81
|
+
(0, vue_missing_props_hints_1.create)(tsPluginClient),
|
|
82
|
+
(0, vue_template_1.create)('html', tsPluginClient),
|
|
83
|
+
(0, vue_template_1.create)('jade', tsPluginClient),
|
|
84
|
+
(0, vue_twoslash_queries_1.create)(tsPluginClient),
|
|
78
85
|
];
|
|
79
|
-
return plugins;
|
|
80
86
|
}
|
|
81
87
|
//# sourceMappingURL=index.js.map
|
|
@@ -8,37 +8,36 @@ function loadTemplateData(lang) {
|
|
|
8
8
|
lang = lang.toLowerCase();
|
|
9
9
|
let data;
|
|
10
10
|
if (lang === 'ja') {
|
|
11
|
-
data = require('
|
|
11
|
+
data = require('../data/template/ja.json');
|
|
12
12
|
}
|
|
13
13
|
else if (lang === 'fr') {
|
|
14
|
-
data = require('
|
|
14
|
+
data = require('../data/template/fr.json');
|
|
15
15
|
}
|
|
16
16
|
else if (lang === 'ko') {
|
|
17
|
-
data = require('
|
|
17
|
+
data = require('../data/template/ko.json');
|
|
18
18
|
}
|
|
19
19
|
else if (lang === 'pt-br') {
|
|
20
|
-
data = require('
|
|
20
|
+
data = require('../data/template/pt.json');
|
|
21
21
|
}
|
|
22
22
|
else if (lang === 'zh-cn') {
|
|
23
|
-
data = require('
|
|
23
|
+
data = require('../data/template/zh-cn.json');
|
|
24
24
|
}
|
|
25
25
|
else if (lang === 'zh-tw') {
|
|
26
|
-
data = require('
|
|
26
|
+
data = require('../data/template/zh-hk.json');
|
|
27
27
|
}
|
|
28
28
|
else if (lang === 'it') {
|
|
29
|
-
data = require('
|
|
29
|
+
data = require('../data/template/it.json');
|
|
30
30
|
}
|
|
31
31
|
else if (lang === 'cs') {
|
|
32
|
-
data = require('
|
|
32
|
+
data = require('../data/template/cs.json');
|
|
33
33
|
}
|
|
34
34
|
else if (lang === 'ru') {
|
|
35
|
-
data = require('
|
|
35
|
+
data = require('../data/template/ru.json');
|
|
36
36
|
}
|
|
37
37
|
else {
|
|
38
|
-
data = require('
|
|
38
|
+
data = require('../data/template/en.json');
|
|
39
39
|
}
|
|
40
40
|
resolveReferences(data);
|
|
41
|
-
// oxlint-disable-next-line no-useless-spread
|
|
42
41
|
for (const attr of [...data.globalAttributes ?? []]) {
|
|
43
42
|
if (!attr.name.startsWith('v-')) {
|
|
44
43
|
data.globalAttributes?.push({ ...attr, name: `:${attr.name}` }, { ...attr, name: `v-bind:${attr.name}` });
|
|
@@ -62,34 +61,34 @@ function loadLanguageBlocks(lang) {
|
|
|
62
61
|
lang = lang.toLowerCase();
|
|
63
62
|
let data;
|
|
64
63
|
if (lang === 'ja') {
|
|
65
|
-
data = require('
|
|
64
|
+
data = require('../data/language-blocks/ja.json');
|
|
66
65
|
}
|
|
67
66
|
else if (lang === 'fr') {
|
|
68
|
-
data = require('
|
|
67
|
+
data = require('../data/language-blocks/fr.json');
|
|
69
68
|
}
|
|
70
69
|
else if (lang === 'ko') {
|
|
71
|
-
data = require('
|
|
70
|
+
data = require('../data/language-blocks/ko.json');
|
|
72
71
|
}
|
|
73
72
|
else if (lang === 'pt-br') {
|
|
74
|
-
data = require('
|
|
73
|
+
data = require('../data/language-blocks/pt.json');
|
|
75
74
|
}
|
|
76
75
|
else if (lang === 'zh-cn') {
|
|
77
|
-
data = require('
|
|
76
|
+
data = require('../data/language-blocks/zh-cn.json');
|
|
78
77
|
}
|
|
79
78
|
else if (lang === 'zh-tw') {
|
|
80
|
-
data = require('
|
|
79
|
+
data = require('../data/language-blocks/zh-hk.json');
|
|
81
80
|
}
|
|
82
81
|
else if (lang === 'it') {
|
|
83
|
-
data = require('
|
|
82
|
+
data = require('../data/language-blocks/it.json');
|
|
84
83
|
}
|
|
85
84
|
else if (lang === 'cs') {
|
|
86
|
-
data = require('
|
|
85
|
+
data = require('../data/language-blocks/cs.json');
|
|
87
86
|
}
|
|
88
87
|
else if (lang === 'ru') {
|
|
89
|
-
data = require('
|
|
88
|
+
data = require('../data/language-blocks/ru.json');
|
|
90
89
|
}
|
|
91
90
|
else {
|
|
92
|
-
data = require('
|
|
91
|
+
data = require('../data/language-blocks/en.json');
|
|
93
92
|
}
|
|
94
93
|
resolveReferences(data);
|
|
95
94
|
return data;
|
|
@@ -98,40 +97,40 @@ function loadModelModifiersData(lang) {
|
|
|
98
97
|
lang = lang.toLowerCase();
|
|
99
98
|
let data;
|
|
100
99
|
if (lang === 'ja') {
|
|
101
|
-
data = require('
|
|
100
|
+
data = require('../data/model-modifiers/ja.json');
|
|
102
101
|
}
|
|
103
102
|
else if (lang === 'fr') {
|
|
104
|
-
data = require('
|
|
103
|
+
data = require('../data/model-modifiers/fr.json');
|
|
105
104
|
}
|
|
106
105
|
else if (lang === 'ko') {
|
|
107
|
-
data = require('
|
|
106
|
+
data = require('../data/model-modifiers/ko.json');
|
|
108
107
|
}
|
|
109
108
|
else if (lang === 'pt-br') {
|
|
110
|
-
data = require('
|
|
109
|
+
data = require('../data/model-modifiers/pt.json');
|
|
111
110
|
}
|
|
112
111
|
else if (lang === 'zh-cn') {
|
|
113
|
-
data = require('
|
|
112
|
+
data = require('../data/model-modifiers/zh-cn.json');
|
|
114
113
|
}
|
|
115
114
|
else if (lang === 'zh-tw') {
|
|
116
|
-
data = require('
|
|
115
|
+
data = require('../data/model-modifiers/zh-hk.json');
|
|
117
116
|
}
|
|
118
117
|
else if (lang === 'it') {
|
|
119
|
-
data = require('
|
|
118
|
+
data = require('../data/model-modifiers/it.json');
|
|
120
119
|
}
|
|
121
120
|
else if (lang === 'cs') {
|
|
122
|
-
data = require('
|
|
121
|
+
data = require('../data/model-modifiers/cs.json');
|
|
123
122
|
}
|
|
124
123
|
else if (lang === 'ru') {
|
|
125
|
-
data = require('
|
|
124
|
+
data = require('../data/model-modifiers/ru.json');
|
|
126
125
|
}
|
|
127
126
|
else {
|
|
128
|
-
data = require('
|
|
127
|
+
data = require('../data/model-modifiers/en.json');
|
|
129
128
|
}
|
|
130
129
|
resolveReferences(data);
|
|
131
130
|
return data;
|
|
132
131
|
}
|
|
133
132
|
function resolveReferences(data) {
|
|
134
|
-
locale ??= require('
|
|
133
|
+
locale ??= require('../data/locale.json');
|
|
135
134
|
for (const item of [
|
|
136
135
|
...data.globalAttributes ?? [],
|
|
137
136
|
...data.tags?.flatMap(tag => [tag, ...tag.attributes]) ?? [],
|
package/lib/plugins/css.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.create = create;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
const volar_service_css_1 = require("volar-service-css");
|
|
6
|
-
const utils_1 = require("
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
7
|
function create() {
|
|
8
8
|
const base = (0, volar_service_css_1.create)({ scssDocumentSelector: ['scss', 'postcss'] });
|
|
9
9
|
return {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LanguageServicePlugin } from '@volar/language-service';
|
|
2
|
-
export declare function create(
|
|
2
|
+
export declare function create({ getEncodedSemanticClassifications }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
4
|
const semanticTokens_1 = require("volar-service-typescript/lib/semanticFeatures/semanticTokens");
|
|
5
|
-
const utils_1 = require("
|
|
6
|
-
function create(
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
function create({ getEncodedSemanticClassifications }) {
|
|
7
7
|
return {
|
|
8
8
|
name: 'typescript-semantic-tokens',
|
|
9
9
|
capabilities: {
|
|
@@ -48,7 +48,7 @@ function create(tsPluginClient) {
|
|
|
48
48
|
start: start,
|
|
49
49
|
length: end - start,
|
|
50
50
|
};
|
|
51
|
-
const classifications = await
|
|
51
|
+
const classifications = await getEncodedSemanticClassifications(root.fileName, span);
|
|
52
52
|
if (classifications) {
|
|
53
53
|
return (0, semanticTokens_1.convertClassificationsToSemanticTokens)(document, span, legend, classifications);
|
|
54
54
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LanguageServicePlugin } from '@volar/language-service';
|
|
2
|
-
export declare function create(ts: typeof import('typescript'),
|
|
2
|
+
export declare function create(ts: typeof import('typescript'), { getPropertiesAtLocation }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
|
-
const utils_1 = require("
|
|
6
|
-
function create(ts,
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
function create(ts, { getPropertiesAtLocation }) {
|
|
7
7
|
return {
|
|
8
8
|
name: 'vue-autoinsert-dotvalue',
|
|
9
9
|
capabilities: {
|
|
@@ -13,7 +13,6 @@ function create(ts, tsPluginClient) {
|
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
create(context) {
|
|
16
|
-
let currentReq = 0;
|
|
17
16
|
return {
|
|
18
17
|
async provideAutoInsertSnippet(document, selection, change) {
|
|
19
18
|
const info = (0, utils_1.getEmbeddedInfo)(context, document, id => id.startsWith('script_'));
|
|
@@ -27,24 +26,14 @@ function create(ts, tsPluginClient) {
|
|
|
27
26
|
if (!isCharacterTyping(document, change)) {
|
|
28
27
|
return;
|
|
29
28
|
}
|
|
30
|
-
|
|
31
|
-
// Wait for tsserver to sync
|
|
32
|
-
await (0, utils_1.sleep)(250);
|
|
33
|
-
if (req !== currentReq) {
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
const enabled = await context.env.getConfiguration?.('vue.autoInsert.dotValue') ?? true;
|
|
37
|
-
if (!enabled) {
|
|
38
|
-
return;
|
|
39
|
-
}
|
|
29
|
+
let sourceOffset;
|
|
40
30
|
const { sourceScript, virtualCode, root } = info;
|
|
41
31
|
const { sfc } = root;
|
|
42
|
-
const
|
|
43
|
-
|
|
32
|
+
const scriptBlocks = [sfc.script, sfc.scriptSetup].filter(block => !!block);
|
|
33
|
+
const map = context.language.maps.get(virtualCode, sourceScript);
|
|
34
|
+
if (!scriptBlocks.length) {
|
|
44
35
|
return;
|
|
45
36
|
}
|
|
46
|
-
let sourceOffset;
|
|
47
|
-
const map = context.language.maps.get(virtualCode, sourceScript);
|
|
48
37
|
for (const [offset] of map.toSourceLocation(document.offsetAt(selection))) {
|
|
49
38
|
sourceOffset = offset;
|
|
50
39
|
break;
|
|
@@ -52,7 +41,7 @@ function create(ts, tsPluginClient) {
|
|
|
52
41
|
if (sourceOffset === undefined) {
|
|
53
42
|
return;
|
|
54
43
|
}
|
|
55
|
-
for (const { ast, startTagEnd, endTagStart } of
|
|
44
|
+
for (const { ast, startTagEnd, endTagStart } of scriptBlocks) {
|
|
56
45
|
if (sourceOffset < startTagEnd || sourceOffset > endTagStart) {
|
|
57
46
|
continue;
|
|
58
47
|
}
|
|
@@ -60,7 +49,7 @@ function create(ts, tsPluginClient) {
|
|
|
60
49
|
return;
|
|
61
50
|
}
|
|
62
51
|
}
|
|
63
|
-
const props = await
|
|
52
|
+
const props = await getPropertiesAtLocation(root.fileName, sourceOffset) ?? [];
|
|
64
53
|
if (props.some(prop => prop === 'value')) {
|
|
65
54
|
return '${1:.value}';
|
|
66
55
|
}
|
|
@@ -10,14 +10,10 @@ function create() {
|
|
|
10
10
|
configurationSections: ['vue.autoInsert.bracketSpacing'],
|
|
11
11
|
},
|
|
12
12
|
},
|
|
13
|
-
create(
|
|
13
|
+
create() {
|
|
14
14
|
return {
|
|
15
|
-
|
|
15
|
+
provideAutoInsertSnippet(document, selection, change) {
|
|
16
16
|
if (document.languageId === 'html' || document.languageId === 'jade') {
|
|
17
|
-
const enabled = await context.env.getConfiguration?.('vue.autoInsert.bracketSpacing') ?? true;
|
|
18
|
-
if (!enabled) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
17
|
if (change.text === '{}'
|
|
22
18
|
&& document.getText().slice(change.rangeOffset - 1, change.rangeOffset + 3) === '{{}}'
|
|
23
19
|
&& document.offsetAt(selection) === change.rangeOffset + 1) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LanguageServicePlugin } from '@volar/language-service';
|
|
2
|
-
export declare function create(
|
|
2
|
+
export declare function create({ getComponentNames, getElementNames }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
|
-
const utils_1 = require("
|
|
6
|
-
function create(
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
function create({ getComponentNames, getElementNames }) {
|
|
7
7
|
return {
|
|
8
8
|
name: 'vue-component-semantic-tokens',
|
|
9
9
|
capabilities: {
|
|
@@ -29,8 +29,8 @@ function create(tsPluginClient) {
|
|
|
29
29
|
const componentSpans = [];
|
|
30
30
|
const start = document.offsetAt(range.start);
|
|
31
31
|
const end = document.offsetAt(range.end);
|
|
32
|
-
const validComponentNames = await
|
|
33
|
-
const elements = new Set(await
|
|
32
|
+
const validComponentNames = await getComponentNames(root.fileName) ?? [];
|
|
33
|
+
const elements = new Set(await getElementNames(root.fileName) ?? []);
|
|
34
34
|
const components = new Set([
|
|
35
35
|
...validComponentNames,
|
|
36
36
|
...validComponentNames.map(language_core_1.hyphenateTag),
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LanguageServicePlugin } from '@volar/language-service';
|
|
2
|
-
export declare function create(ts: typeof import('typescript'),
|
|
2
|
+
export declare function create(ts: typeof import('typescript'), { getImportPathForFile }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
|
|
@@ -8,8 +8,8 @@ const getUserPreferences_1 = require("volar-service-typescript/lib/configs/getUs
|
|
|
8
8
|
const vscode_uri_1 = require("vscode-uri");
|
|
9
9
|
const nameCasing_1 = require("../nameCasing");
|
|
10
10
|
const vue_extract_file_1 = require("../plugins/vue-extract-file");
|
|
11
|
-
const utils_1 = require("
|
|
12
|
-
function create(ts,
|
|
11
|
+
const utils_1 = require("../utils");
|
|
12
|
+
function create(ts, { getImportPathForFile }) {
|
|
13
13
|
return {
|
|
14
14
|
name: 'vue-document-drop',
|
|
15
15
|
capabilities: {
|
|
@@ -46,14 +46,11 @@ function create(ts, tsPluginClient) {
|
|
|
46
46
|
const incomingFileName = vscode_uri_1.URI.parse(importUri).fsPath.replace(/\\/g, '/');
|
|
47
47
|
let importPath;
|
|
48
48
|
const serviceScript = sourceScript.generated.languagePlugin.typescript?.getServiceScript(root);
|
|
49
|
-
if (
|
|
49
|
+
if (serviceScript) {
|
|
50
50
|
const tsDocumentUri = context.encodeEmbeddedDocumentUri(sourceScript.id, serviceScript.code.id);
|
|
51
51
|
const tsDocument = context.documents.get(tsDocumentUri, serviceScript.code.languageId, serviceScript.code.snapshot);
|
|
52
52
|
const preferences = await (0, getUserPreferences_1.getUserPreferences)(context, tsDocument);
|
|
53
|
-
|
|
54
|
-
if (importPathRequest) {
|
|
55
|
-
importPath = importPathRequest;
|
|
56
|
-
}
|
|
53
|
+
importPath = (await getImportPathForFile(root.fileName, incomingFileName, preferences) ?? {}).path;
|
|
57
54
|
}
|
|
58
55
|
if (!importPath) {
|
|
59
56
|
importPath = path_browserify_1.posix.relative(path_browserify_1.posix.dirname(root.fileName), incomingFileName)
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LanguageServicePlugin } from '@volar/language-service';
|
|
2
|
-
export declare function create(
|
|
2
|
+
export declare function create({ getDocumentHighlights }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
|
-
const
|
|
5
|
-
|
|
4
|
+
const language_core_1 = require("@vue/language-core");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
function create({ getDocumentHighlights }) {
|
|
6
7
|
return {
|
|
7
8
|
name: 'vue-document-highlights',
|
|
8
9
|
capabilities: {
|
|
@@ -16,7 +17,22 @@ function create(tsPluginClient) {
|
|
|
16
17
|
return;
|
|
17
18
|
}
|
|
18
19
|
const { root } = info;
|
|
19
|
-
const
|
|
20
|
+
const { template } = root.sfc;
|
|
21
|
+
const offset = document.offsetAt(position);
|
|
22
|
+
if (template?.ast && offset >= template.startTagEnd && offset <= template.endTagStart) {
|
|
23
|
+
const pos = offset - template.startTagEnd;
|
|
24
|
+
for (const node of (0, language_core_1.forEachElementNode)(template.ast)) {
|
|
25
|
+
if (pos < node.loc.start.offset || pos > node.loc.end.offset) {
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
for (const tagOffset of (0, language_core_1.getElementTagOffsets)(node, template)) {
|
|
29
|
+
if (pos >= tagOffset && pos <= tagOffset + node.tag.length) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const result = await getDocumentHighlights(root.fileName, offset);
|
|
20
36
|
return result
|
|
21
37
|
?.filter(({ fileName }) => fileName === root.fileName)
|
|
22
38
|
.flatMap(({ highlightSpans }) => highlightSpans)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { LanguageServicePlugin } from '@volar/language-service';
|
|
2
2
|
import { type Sfc } from '@vue/language-core';
|
|
3
3
|
import type * as ts from 'typescript';
|
|
4
|
-
export declare function create(ts: typeof import('typescript'),
|
|
4
|
+
export declare function create(ts: typeof import('typescript'), { collectExtractProps }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
|
|
5
5
|
export declare function getLastImportNode(ts: typeof import('typescript'), sourceFile: ts.SourceFile): ts.Node | undefined;
|
|
6
6
|
export declare function createAddComponentToOptionEdit(ts: typeof import('typescript'), sfc: Sfc, ast: ts.SourceFile, componentName: string): {
|
|
7
7
|
range: import("@vue/language-core").TextRange;
|
|
@@ -5,9 +5,9 @@ exports.getLastImportNode = getLastImportNode;
|
|
|
5
5
|
exports.createAddComponentToOptionEdit = createAddComponentToOptionEdit;
|
|
6
6
|
const language_core_1 = require("@vue/language-core");
|
|
7
7
|
const vscode_uri_1 = require("vscode-uri");
|
|
8
|
-
const utils_1 = require("
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
9
|
const unicodeReg = /\\u/g;
|
|
10
|
-
function create(ts,
|
|
10
|
+
function create(ts, { collectExtractProps }) {
|
|
11
11
|
return {
|
|
12
12
|
name: 'vue-extract-file',
|
|
13
13
|
capabilities: {
|
|
@@ -70,7 +70,7 @@ function create(ts, tsPluginClient) {
|
|
|
70
70
|
if (!templateCodeRange) {
|
|
71
71
|
return codeAction;
|
|
72
72
|
}
|
|
73
|
-
const toExtract = await
|
|
73
|
+
const toExtract = await collectExtractProps(root.fileName, templateCodeRange) ?? [];
|
|
74
74
|
const templateInitialIndent = await context.env.getConfiguration('vue.format.template.initialIndent') ?? true;
|
|
75
75
|
const scriptInitialIndent = await context.env.getConfiguration('vue.format.script.initialIndent')
|
|
76
76
|
?? false;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
|
-
const utils_1 = require("
|
|
4
|
+
const utils_1 = require("../utils");
|
|
5
5
|
function create() {
|
|
6
6
|
return {
|
|
7
7
|
name: 'vue-global-types-error',
|
|
@@ -18,7 +18,10 @@ function create() {
|
|
|
18
18
|
if (!info) {
|
|
19
19
|
return;
|
|
20
20
|
}
|
|
21
|
-
const { root } = info;
|
|
21
|
+
const { sourceScript, root } = info;
|
|
22
|
+
if (sourceScript.id.scheme !== 'file') {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
22
25
|
const { vueCompilerOptions } = root;
|
|
23
26
|
const globalTypesPath = vueCompilerOptions.globalTypesPath(root.fileName);
|
|
24
27
|
if (globalTypesPath) {
|
|
@@ -38,7 +41,7 @@ Failed to write the global types file. Make sure that:
|
|
|
38
41
|
1. "node_modules" directory exists.
|
|
39
42
|
2. "${vueCompilerOptions.lib}" is installed as a direct dependency.
|
|
40
43
|
|
|
41
|
-
Alternatively, you can manually set "vueCompilerOptions.globalTypesPath" in your "tsconfig.json".
|
|
44
|
+
Alternatively, you can manually set "vueCompilerOptions.globalTypesPath" in your "tsconfig.json" or "jsconfig.json".
|
|
42
45
|
|
|
43
46
|
If all dependencies are installed, try running the "vue.action.restartServer" command to restart Vue and TS servers.
|
|
44
47
|
`.trim(),
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.create = create;
|
|
4
4
|
exports.findDestructuredProps = findDestructuredProps;
|
|
5
5
|
const language_core_1 = require("@vue/language-core");
|
|
6
|
-
const utils_1 = require("
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
7
|
function create(ts) {
|
|
8
8
|
return {
|
|
9
9
|
name: 'vue-inlayhints',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LanguageServicePlugin } from '@volar/language-service';
|
|
2
|
-
export declare function create(
|
|
2
|
+
export declare function create({ getComponentNames, getElementNames, getComponentProps }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
|
|
@@ -4,8 +4,8 @@ exports.create = create;
|
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
const html = require("vscode-html-languageservice");
|
|
6
6
|
const nameCasing_1 = require("../nameCasing");
|
|
7
|
-
const utils_1 = require("
|
|
8
|
-
function create(
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
function create({ getComponentNames, getElementNames, getComponentProps }) {
|
|
9
9
|
return {
|
|
10
10
|
name: 'vue-missing-props-hints',
|
|
11
11
|
capabilities: {
|
|
@@ -30,9 +30,9 @@ function create(tsPluginClient) {
|
|
|
30
30
|
}
|
|
31
31
|
const result = [];
|
|
32
32
|
const casing = await (0, nameCasing_1.checkCasing)(context, sourceScript.id);
|
|
33
|
-
const components = await
|
|
33
|
+
const components = await getComponentNames(root.fileName) ?? [];
|
|
34
34
|
const componentProps = {};
|
|
35
|
-
intrinsicElementNames ??= new Set(await
|
|
35
|
+
intrinsicElementNames ??= new Set(await getElementNames(root.fileName) ?? []);
|
|
36
36
|
let token;
|
|
37
37
|
let current;
|
|
38
38
|
while ((token = scanner.scan()) !== html.TokenType.EOS) {
|
|
@@ -55,7 +55,7 @@ function create(tsPluginClient) {
|
|
|
55
55
|
if (cancellationToken.isCancellationRequested) {
|
|
56
56
|
break;
|
|
57
57
|
}
|
|
58
|
-
componentProps[checkTag] = (await
|
|
58
|
+
componentProps[checkTag] = (await getComponentProps(root.fileName, checkTag) ?? [])
|
|
59
59
|
.filter(prop => prop.required)
|
|
60
60
|
.map(prop => prop.name);
|
|
61
61
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
|
-
const utils_1 = require("
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
6
|
function create() {
|
|
7
7
|
return {
|
|
8
8
|
name: 'vue-scoped-class-links',
|
package/lib/plugins/vue-sfc.js
CHANGED
|
@@ -4,8 +4,8 @@ exports.create = create;
|
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
5
|
const volar_service_html_1 = require("volar-service-html");
|
|
6
6
|
const html = require("vscode-html-languageservice");
|
|
7
|
-
const data_1 = require("
|
|
8
|
-
const utils_1 = require("
|
|
7
|
+
const data_1 = require("../data");
|
|
8
|
+
const utils_1 = require("../utils");
|
|
9
9
|
let sfcDataProvider;
|
|
10
10
|
function create() {
|
|
11
11
|
const htmlService = (0, volar_service_html_1.create)({
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
|
-
const utils_1 = require("
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
6
|
function create() {
|
|
7
7
|
return {
|
|
8
8
|
name: 'vue-suggest-define-assignment',
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.create = create;
|
|
4
4
|
const language_core_1 = require("@vue/language-core");
|
|
5
|
-
const utils_1 = require("
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
6
|
function create() {
|
|
7
7
|
return {
|
|
8
8
|
name: 'vue-template-ref-links',
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { LanguageServicePlugin } from '@volar/language-service';
|
|
2
|
-
export declare function create(
|
|
2
|
+
export declare function create(languageId: 'html' | 'jade', { getComponentNames, getElementAttrs, getComponentProps, getComponentEvents, getComponentDirectives, getComponentSlots, }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
|