@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.
Files changed (46) hide show
  1. package/index.d.ts +1 -1
  2. package/index.js +21 -15
  3. package/lib/{plugins/data.js → data.js} +31 -32
  4. package/lib/plugins/css.js +1 -1
  5. package/lib/plugins/typescript-semantic-tokens.d.ts +1 -1
  6. package/lib/plugins/typescript-semantic-tokens.js +3 -3
  7. package/lib/plugins/vue-autoinsert-dotvalue.d.ts +1 -1
  8. package/lib/plugins/vue-autoinsert-dotvalue.js +8 -19
  9. package/lib/plugins/vue-autoinsert-space.js +2 -6
  10. package/lib/plugins/vue-compiler-dom-errors.js +1 -1
  11. package/lib/plugins/vue-component-semantic-tokens.d.ts +1 -1
  12. package/lib/plugins/vue-component-semantic-tokens.js +4 -4
  13. package/lib/plugins/vue-document-drop.d.ts +1 -1
  14. package/lib/plugins/vue-document-drop.js +4 -7
  15. package/lib/plugins/vue-document-highlights.d.ts +1 -1
  16. package/lib/plugins/vue-document-highlights.js +19 -3
  17. package/lib/plugins/vue-extract-file.d.ts +1 -1
  18. package/lib/plugins/vue-extract-file.js +3 -3
  19. package/lib/plugins/vue-global-types-error.js +6 -3
  20. package/lib/plugins/vue-inlayhints.js +1 -1
  21. package/lib/plugins/vue-missing-props-hints.d.ts +1 -1
  22. package/lib/plugins/vue-missing-props-hints.js +5 -5
  23. package/lib/plugins/vue-scoped-class-links.js +1 -1
  24. package/lib/plugins/vue-sfc.js +2 -2
  25. package/lib/plugins/vue-suggest-define-assignment.js +1 -1
  26. package/lib/plugins/vue-template-ref-links.js +1 -1
  27. package/lib/plugins/vue-template.d.ts +1 -1
  28. package/lib/plugins/vue-template.js +19 -21
  29. package/lib/plugins/vue-twoslash-queries.d.ts +1 -1
  30. package/lib/plugins/vue-twoslash-queries.js +3 -3
  31. package/lib/{plugins/utils.d.ts → utils.d.ts} +0 -1
  32. package/lib/{plugins/utils.js → utils.js} +0 -4
  33. package/package.json +7 -7
  34. package/lib/plugins/vue-autoinsert-dotvalue.d copy.d.ts +0 -2
  35. package/lib/plugins/vue-autoinsert-dotvalue.d copy.js +0 -3
  36. package/lib/plugins/vue-complete-define-assignment.d.ts +0 -2
  37. package/lib/plugins/vue-complete-define-assignment.js +0 -84
  38. package/lib/plugins/vue-destructured-props-hints.d.ts +0 -7
  39. package/lib/plugins/vue-destructured-props-hints.js +0 -220
  40. package/lib/plugins/vue-diagnostic-global-types.d.ts +0 -1
  41. package/lib/plugins/vue-diagnostic-global-types.js +0 -3
  42. package/lib/plugins/vue-document-links.d.ts +0 -2
  43. package/lib/plugins/vue-document-links.js +0 -109
  44. package/lib/types.d.ts +0 -13
  45. package/lib/types.js +0 -34
  46. /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: import('@vue/typescript-plugin/lib/requests').Requests | undefined): import("@volar/language-service").LanguageServicePlugin<any>[];
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
- const plugins = [
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('../../data/template/ja.json');
11
+ data = require('../data/template/ja.json');
12
12
  }
13
13
  else if (lang === 'fr') {
14
- data = require('../../data/template/fr.json');
14
+ data = require('../data/template/fr.json');
15
15
  }
16
16
  else if (lang === 'ko') {
17
- data = require('../../data/template/ko.json');
17
+ data = require('../data/template/ko.json');
18
18
  }
19
19
  else if (lang === 'pt-br') {
20
- data = require('../../data/template/pt.json');
20
+ data = require('../data/template/pt.json');
21
21
  }
22
22
  else if (lang === 'zh-cn') {
23
- data = require('../../data/template/zh-cn.json');
23
+ data = require('../data/template/zh-cn.json');
24
24
  }
25
25
  else if (lang === 'zh-tw') {
26
- data = require('../../data/template/zh-hk.json');
26
+ data = require('../data/template/zh-hk.json');
27
27
  }
28
28
  else if (lang === 'it') {
29
- data = require('../../data/template/it.json');
29
+ data = require('../data/template/it.json');
30
30
  }
31
31
  else if (lang === 'cs') {
32
- data = require('../../data/template/cs.json');
32
+ data = require('../data/template/cs.json');
33
33
  }
34
34
  else if (lang === 'ru') {
35
- data = require('../../data/template/ru.json');
35
+ data = require('../data/template/ru.json');
36
36
  }
37
37
  else {
38
- data = require('../../data/template/en.json');
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('../../data/language-blocks/ja.json');
64
+ data = require('../data/language-blocks/ja.json');
66
65
  }
67
66
  else if (lang === 'fr') {
68
- data = require('../../data/language-blocks/fr.json');
67
+ data = require('../data/language-blocks/fr.json');
69
68
  }
70
69
  else if (lang === 'ko') {
71
- data = require('../../data/language-blocks/ko.json');
70
+ data = require('../data/language-blocks/ko.json');
72
71
  }
73
72
  else if (lang === 'pt-br') {
74
- data = require('../../data/language-blocks/pt.json');
73
+ data = require('../data/language-blocks/pt.json');
75
74
  }
76
75
  else if (lang === 'zh-cn') {
77
- data = require('../../data/language-blocks/zh-cn.json');
76
+ data = require('../data/language-blocks/zh-cn.json');
78
77
  }
79
78
  else if (lang === 'zh-tw') {
80
- data = require('../../data/language-blocks/zh-hk.json');
79
+ data = require('../data/language-blocks/zh-hk.json');
81
80
  }
82
81
  else if (lang === 'it') {
83
- data = require('../../data/language-blocks/it.json');
82
+ data = require('../data/language-blocks/it.json');
84
83
  }
85
84
  else if (lang === 'cs') {
86
- data = require('../../data/language-blocks/cs.json');
85
+ data = require('../data/language-blocks/cs.json');
87
86
  }
88
87
  else if (lang === 'ru') {
89
- data = require('../../data/language-blocks/ru.json');
88
+ data = require('../data/language-blocks/ru.json');
90
89
  }
91
90
  else {
92
- data = require('../../data/language-blocks/en.json');
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('../../data/model-modifiers/ja.json');
100
+ data = require('../data/model-modifiers/ja.json');
102
101
  }
103
102
  else if (lang === 'fr') {
104
- data = require('../../data/model-modifiers/fr.json');
103
+ data = require('../data/model-modifiers/fr.json');
105
104
  }
106
105
  else if (lang === 'ko') {
107
- data = require('../../data/model-modifiers/ko.json');
106
+ data = require('../data/model-modifiers/ko.json');
108
107
  }
109
108
  else if (lang === 'pt-br') {
110
- data = require('../../data/model-modifiers/pt.json');
109
+ data = require('../data/model-modifiers/pt.json');
111
110
  }
112
111
  else if (lang === 'zh-cn') {
113
- data = require('../../data/model-modifiers/zh-cn.json');
112
+ data = require('../data/model-modifiers/zh-cn.json');
114
113
  }
115
114
  else if (lang === 'zh-tw') {
116
- data = require('../../data/model-modifiers/zh-hk.json');
115
+ data = require('../data/model-modifiers/zh-hk.json');
117
116
  }
118
117
  else if (lang === 'it') {
119
- data = require('../../data/model-modifiers/it.json');
118
+ data = require('../data/model-modifiers/it.json');
120
119
  }
121
120
  else if (lang === 'cs') {
122
- data = require('../../data/model-modifiers/cs.json');
121
+ data = require('../data/model-modifiers/cs.json');
123
122
  }
124
123
  else if (lang === 'ru') {
125
- data = require('../../data/model-modifiers/ru.json');
124
+ data = require('../data/model-modifiers/ru.json');
126
125
  }
127
126
  else {
128
- data = require('../../data/model-modifiers/en.json');
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('../../data/locale.json');
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]) ?? [],
@@ -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("./utils");
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(tsPluginClient: import('@vue/typescript-plugin/lib/requests').Requests | undefined): LanguageServicePlugin;
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("./utils");
6
- function create(tsPluginClient) {
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 tsPluginClient?.getEncodedSemanticClassifications(root.fileName, span);
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'), tsPluginClient: import('@vue/typescript-plugin/lib/requests').Requests | undefined): LanguageServicePlugin;
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("./utils");
6
- function create(ts, tsPluginClient) {
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
- const req = ++currentReq;
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 blocks = [sfc.script, sfc.scriptSetup].filter(block => !!block);
43
- if (!blocks.length) {
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 blocks) {
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 tsPluginClient?.getPropertiesAtLocation(root.fileName, sourceOffset) ?? [];
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(context) {
13
+ create() {
14
14
  return {
15
- async provideAutoInsertSnippet(document, selection, change) {
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,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("./utils");
4
+ const utils_1 = require("../utils");
5
5
  function create() {
6
6
  return {
7
7
  name: 'vue-compiler-dom-errors',
@@ -1,2 +1,2 @@
1
1
  import type { LanguageServicePlugin } from '@volar/language-service';
2
- export declare function create(tsPluginClient: import('@vue/typescript-plugin/lib/requests').Requests | undefined): LanguageServicePlugin;
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("./utils");
6
- function create(tsPluginClient) {
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 tsPluginClient?.getComponentNames(root.fileName) ?? [];
33
- const elements = new Set(await tsPluginClient?.getElementNames(root.fileName) ?? []);
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'), tsPluginClient: import('@vue/typescript-plugin/lib/requests').Requests | undefined): LanguageServicePlugin;
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("./utils");
12
- function create(ts, tsPluginClient) {
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 (tsPluginClient && serviceScript) {
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
- const importPathRequest = await tsPluginClient.getImportPathForFile(root.fileName, incomingFileName, preferences);
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(tsPluginClient: import('@vue/typescript-plugin/lib/requests').Requests | undefined): LanguageServicePlugin;
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 utils_1 = require("./utils");
5
- function create(tsPluginClient) {
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 result = await tsPluginClient?.getDocumentHighlights(root.fileName, document.offsetAt(position));
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'), tsPluginClient: import('@vue/typescript-plugin/lib/requests').Requests | undefined): LanguageServicePlugin;
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("./utils");
8
+ const utils_1 = require("../utils");
9
9
  const unicodeReg = /\\u/g;
10
- function create(ts, tsPluginClient) {
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 tsPluginClient?.collectExtractProps(root.fileName, templateCodeRange) ?? [];
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("./utils");
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("./utils");
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(tsPluginClient: import('@vue/typescript-plugin/lib/requests').Requests | undefined): LanguageServicePlugin;
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("./utils");
8
- function create(tsPluginClient) {
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 tsPluginClient?.getComponentNames(root.fileName) ?? [];
33
+ const components = await getComponentNames(root.fileName) ?? [];
34
34
  const componentProps = {};
35
- intrinsicElementNames ??= new Set(await tsPluginClient?.getElementNames(root.fileName) ?? []);
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 tsPluginClient?.getComponentProps(root.fileName, checkTag) ?? [])
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("./utils");
5
+ const utils_1 = require("../utils");
6
6
  function create() {
7
7
  return {
8
8
  name: 'vue-scoped-class-links',
@@ -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("./data");
8
- const utils_1 = require("./utils");
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("./utils");
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("./utils");
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(mode: 'html' | 'pug', tsPluginClient: import('@vue/typescript-plugin/lib/requests').Requests | undefined): LanguageServicePlugin;
2
+ export declare function create(languageId: 'html' | 'jade', { getComponentNames, getElementAttrs, getComponentProps, getComponentEvents, getComponentDirectives, getComponentSlots, }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;