@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 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.proxyLanguageServiceForVue)(ts, language, info.languageService, vueOptions, fileName => fileName);
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
- getFileId: (fileName) => fileName,
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 proxyLanguageServiceForVue<T>(ts: typeof import('typescript'), language: Language<T>, languageService: ts.LanguageService, vueOptions: VueCompilerOptions, asScriptId: (fileName: string) => T): ts.LanguageService;
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.proxyLanguageServiceForVue = proxyLanguageServiceForVue;
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 proxyLanguageServiceForVue(ts, language, languageService, vueOptions, asScriptId) {
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, getFileId } = this;
7
- const sourceScript = language.scripts.get(getFileId(fileName));
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, getFileId } = this;
8
- const volarFile = language.scripts.get(getFileId(fileName));
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 => !['vBind', 'vIf', 'vOn', 'VOnce', 'vShow', 'VSlot'].includes(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, getFileId } = this;
8
- const volarFile = language.scripts.get(getFileId(fileName));
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, getFileId } = this;
9
- const volarFile = language.scripts.get(getFileId(fileName));
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, getFileId } = this;
8
- const volarFile = language.scripts.get(getFileId(fileName));
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, getFileId } = this;
8
- const volarFile = language.scripts.get(getFileId(fileName));
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, getFileId } = this;
9
- const volarFile = language.scripts.get(getFileId(fileName));
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, getFileId } = this;
7
+ const { languageService, language, typescript: ts, isTsPlugin, asScriptId } = this;
8
8
  // mapping
9
- const file = language.scripts.get(getFileId(fileName));
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) {
@@ -6,5 +6,5 @@ export interface RequestContext<T = any> {
6
6
  languageServiceHost: ts.LanguageServiceHost;
7
7
  language: Language<T>;
8
8
  isTsPlugin: boolean;
9
- getFileId: (fileName: string) => T;
9
+ asScriptId: (fileName: string) => T;
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/typescript-plugin",
3
- "version": "3.0.0-alpha.8",
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": "~2.4.13",
17
- "@vue/language-core": "3.0.0-alpha.8",
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": "d38cb93558fe8015c7ffe9ceacfdd3296e3692f6"
25
+ "gitHead": "ea40288f6fceebb65346732b6de5859c300cf1ee"
26
26
  }
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=getCurrentComponentSlots.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=getDefineSlotNames.js.map
@@ -1,2 +0,0 @@
1
- import type { RequestContext } from './types';
2
- export declare function getDefineSlots(this: RequestContext, fileName: string): string[] | undefined;
@@ -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