@vue/language-service 3.1.4 → 3.1.5

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.
@@ -79,7 +79,7 @@
79
79
  "name": "v-text",
80
80
  "description": {
81
81
  "kind": "markdown",
82
- "value": "Обновление текстового содержимого элемента.\n\n- **Ожидает:** `string`\n\n- **Подробности**\n\n `v-text` работает путём установки свойства [textContent](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) элемента, поэтому он будет перезаписывать всё существующее содержимое внутри элемента. Если необходимо обновить часть `textContent`, то вместо этого следует использовать [текстовые интерполяции](https://ru.vuejs.org/guide/essentials/template-syntax.html#text-interpolation).\n\n- **Пример**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- тоже самое -->\n <span>{{msg}}</span>\n ```\n\n- **См. также** [Синтаксис шаблонов - Текстовые интерполяции](https://ru.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)"
82
+ "value": "Обновление текстового содержимого элемента.\n\n- **Ожидает:** `string`\n\n- **Подробности**\n\n `v-text` работает путём установки свойства [textContent](https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent) элемента, поэтому он будет перезаписывать всё существующее содержимое внутри элемента. Если необходимо обновить только часть `textContent`, то вместо этого следует использовать [текстовые интерполяции](https://ru.vuejs.org/guide/essentials/template-syntax.html#text-interpolation) (то есть <span v-pre>`<span>Оставьте это, но обновите {{dynamicPortion}}</span>`</span>).\n\n- **Пример**\n\n ```html\n <span v-text=\"msg\"></span>\n <!-- тоже самое -->\n <span>{{msg}}</span>\n ```\n\n- **См. также** [Синтаксис шаблонов - Текстовые интерполяции](https://ru.vuejs.org/guide/essentials/template-syntax.html#text-interpolation)"
83
83
  },
84
84
  "references": "api/built-in-directives.html#v-text"
85
85
  },
package/index.js CHANGED
@@ -50,7 +50,6 @@ function createVueLanguageServicePlugins(ts, client = new Proxy({}, {
50
50
  },
51
51
  })) {
52
52
  return [
53
- (0, css_1.create)(),
54
53
  (0, volar_service_json_1.create)(),
55
54
  (0, volar_service_pug_beautify_1.create)(),
56
55
  (0, vue_autoinsert_space_1.create)(),
@@ -72,6 +71,7 @@ function createVueLanguageServicePlugins(ts, client = new Proxy({}, {
72
71
  (0, syntactic_1.create)(ts),
73
72
  (0, vue_inlayhints_1.create)(ts),
74
73
  // type aware plugins
74
+ (0, css_1.create)(client),
75
75
  (0, typescript_semantic_tokens_1.create)(client),
76
76
  (0, vue_autoinsert_dotvalue_1.create)(ts, client),
77
77
  (0, vue_component_semantic_tokens_1.create)(client),
@@ -1,2 +1,2 @@
1
1
  import type { LanguageServicePlugin } from '@volar/language-service';
2
- export declare function create(): LanguageServicePlugin;
2
+ export declare function create({ resolveModuleName }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
@@ -4,17 +4,24 @@ 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
6
  const utils_1 = require("../utils");
7
- function create() {
8
- const base = (0, volar_service_css_1.create)({ scssDocumentSelector: ['scss', 'postcss'] });
7
+ function create({ resolveModuleName }) {
8
+ const baseService = (0, volar_service_css_1.create)({
9
+ getDocumentContext(context) {
10
+ return {
11
+ resolveReference: (0, utils_1.createReferenceResolver)(context, volar_service_css_1.resolveReference, resolveModuleName),
12
+ };
13
+ },
14
+ scssDocumentSelector: ['scss', 'postcss'],
15
+ });
9
16
  return {
10
- ...base,
17
+ ...baseService,
11
18
  create(context) {
12
- const baseInstance = base.create(context);
13
- const { 'css/languageService': getCssLs, 'css/stylesheet': getStylesheet, } = baseInstance.provide;
19
+ const baseServiceInstance = baseService.create(context);
20
+ const { 'css/languageService': getCssLs, 'css/stylesheet': getStylesheet, } = baseServiceInstance.provide;
14
21
  return {
15
- ...baseInstance,
22
+ ...baseServiceInstance,
16
23
  async provideDiagnostics(document, token) {
17
- let diagnostics = await baseInstance.provideDiagnostics?.(document, token) ?? [];
24
+ let diagnostics = await baseServiceInstance.provideDiagnostics?.(document, token) ?? [];
18
25
  if (document.languageId === 'postcss') {
19
26
  diagnostics = diagnostics.filter(diag => diag.code !== 'css-semicolonexpected'
20
27
  && diag.code !== 'css-ruleorselectorexpected'
@@ -1,2 +1,2 @@
1
1
  import type { LanguageServicePlugin } from '@volar/language-service';
2
- export declare function create(languageId: 'html' | 'jade', { getComponentNames, getElementAttrs, getComponentProps, getComponentEvents, getComponentDirectives, getComponentSlots, }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
2
+ export declare function create(languageId: 'html' | 'jade', { getComponentNames, getComponentProps, getComponentEvents, getComponentDirectives, getComponentSlots, getElementAttrs, resolveModuleName, }: import('@vue/typescript-plugin/lib/requests').Requests): LanguageServicePlugin;
@@ -25,7 +25,7 @@ const specialProps = new Set([
25
25
  ]);
26
26
  let builtInData;
27
27
  let modelData;
28
- function create(languageId, { getComponentNames, getElementAttrs, getComponentProps, getComponentEvents, getComponentDirectives, getComponentSlots, }) {
28
+ function create(languageId, { getComponentNames, getComponentProps, getComponentEvents, getComponentDirectives, getComponentSlots, getElementAttrs, resolveModuleName, }) {
29
29
  let customData = [];
30
30
  let extraCustomData = [];
31
31
  const onDidChangeCustomDataListeners = new Set();
@@ -51,6 +51,11 @@ function create(languageId, { getComponentNames, getElementAttrs, getComponentPr
51
51
  : (0, volar_service_html_1.create)({
52
52
  documentSelector: ['html', 'markdown'],
53
53
  useDefaultDataProvider: false,
54
+ getDocumentContext(context) {
55
+ return {
56
+ resolveReference: (0, utils_1.createReferenceResolver)(context, volar_service_html_1.resolveReference, resolveModuleName),
57
+ };
58
+ },
54
59
  getCustomData() {
55
60
  return [
56
61
  ...customData,
@@ -287,6 +292,22 @@ function create(languageId, { getComponentNames, getElementAttrs, getComponentPr
287
292
  }
288
293
  return baseServiceInstance.provideHover?.(document, position, token);
289
294
  },
295
+ async provideDocumentLinks(document, token) {
296
+ if (document.languageId !== languageId) {
297
+ return;
298
+ }
299
+ const info = (0, utils_1.resolveEmbeddedCode)(context, document.uri);
300
+ if (info?.code.id !== 'template') {
301
+ return;
302
+ }
303
+ const documentLinks = await baseServiceInstance.provideDocumentLinks?.(document, token) ?? [];
304
+ for (const link of documentLinks) {
305
+ if (link.target && (0, shared_1.isPromise)(link.target)) {
306
+ link.target = await link.target;
307
+ }
308
+ }
309
+ return documentLinks;
310
+ },
290
311
  };
291
312
  async function runWithVueData(sourceDocumentUri, root, fn) {
292
313
  // #4298: Precompute HTMLDocument before provideHtmlData to avoid parseHTMLDocument requesting component names from tsserver
package/lib/utils.d.ts CHANGED
@@ -6,3 +6,4 @@ export declare function resolveEmbeddedCode(context: LanguageServiceContext, uri
6
6
  code: import("@volar/language-service").VirtualCode;
7
7
  root: VueVirtualCode;
8
8
  } | undefined;
9
+ export declare function createReferenceResolver(context: LanguageServiceContext, resolveReference: typeof import('volar-service-html').resolveReference, resolveModuleName: import('@vue/typescript-plugin/lib/requests').Requests['resolveModuleName']): (ref: string, base: string) => Promise<string>;
package/lib/utils.js CHANGED
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.resolveEmbeddedCode = resolveEmbeddedCode;
4
+ exports.createReferenceResolver = createReferenceResolver;
4
5
  const vscode_uri_1 = require("vscode-uri");
5
6
  function resolveEmbeddedCode(context, uriStr) {
6
7
  const uri = vscode_uri_1.URI.parse(uriStr);
@@ -16,4 +17,18 @@ function resolveEmbeddedCode(context, uriStr) {
16
17
  root: sourceScript.generated.root,
17
18
  };
18
19
  }
20
+ function createReferenceResolver(context, resolveReference, resolveModuleName) {
21
+ return async (ref, base) => {
22
+ let uri = vscode_uri_1.URI.parse(base);
23
+ const decoded = context.decodeEmbeddedDocumentUri(uri);
24
+ if (decoded) {
25
+ uri = decoded[0];
26
+ }
27
+ let moduleName;
28
+ if (!ref.startsWith('./') && !ref.startsWith('../')) {
29
+ moduleName = await resolveModuleName(uri.fsPath, ref);
30
+ }
31
+ return moduleName ?? resolveReference(ref, uri, context.env.workspaceFolders);
32
+ };
33
+ }
19
34
  //# sourceMappingURL=utils.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/language-service",
3
- "version": "3.1.4",
3
+ "version": "3.1.5",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "data",
@@ -18,7 +18,7 @@
18
18
  },
19
19
  "dependencies": {
20
20
  "@volar/language-service": "2.4.23",
21
- "@vue/language-core": "3.1.4",
21
+ "@vue/language-core": "3.1.5",
22
22
  "@vue/shared": "^3.5.0",
23
23
  "path-browserify": "^1.0.1",
24
24
  "volar-service-css": "0.0.67",
@@ -37,8 +37,8 @@
37
37
  "@volar/kit": "2.4.23",
38
38
  "@volar/typescript": "2.4.23",
39
39
  "@vue/compiler-dom": "^3.5.0",
40
- "@vue/typescript-plugin": "3.1.4",
40
+ "@vue/typescript-plugin": "3.1.5",
41
41
  "vscode-css-languageservice": "^6.3.1"
42
42
  },
43
- "gitHead": "9670176c727993d16f9224f48406077e20972353"
43
+ "gitHead": "d124a88fbf169e793c39ae4248da2092098de92d"
44
44
  }