@vue/typescript-plugin 2.0.29 → 2.1.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.d.ts CHANGED
@@ -1,2 +1,3 @@
1
- declare const plugin: import("typescript").server.PluginModuleFactory;
1
+ import type * as ts from 'typescript';
2
+ declare const plugin: ts.server.PluginModuleFactory;
2
3
  export = plugin;
package/index.js CHANGED
@@ -4,11 +4,11 @@ const vue = require("@vue/language-core");
4
4
  const common_1 = require("./lib/common");
5
5
  const server_1 = require("./lib/server");
6
6
  const windowsPathReg = /\\/g;
7
- const plugin = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)((ts, info) => {
7
+ const vueCompilerOptions = new WeakMap();
8
+ const basePlugin = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)((ts, info) => {
8
9
  const vueOptions = getVueCompilerOptions();
9
- const languagePlugin = vue.createVueLanguagePlugin2(ts, id => id, info.project.projectKind === ts.server.ProjectKind.Inferred
10
- ? () => true
11
- : vue.createRootFileChecker(info.languageServiceHost.getProjectVersion ? () => info.languageServiceHost.getProjectVersion() : undefined, () => createLanguageServicePlugin_1.externalFiles.get(info.project) ?? [], info.languageServiceHost.useCaseSensitiveFileNames?.() ?? false), info.languageServiceHost.getCompilationSettings(), vueOptions);
10
+ const languagePlugin = vue.createVueLanguagePlugin(ts, info.languageServiceHost.getCompilationSettings(), vueOptions, id => id);
11
+ vueCompilerOptions.set(info.project, vueOptions);
12
12
  return {
13
13
  languagePlugins: [languagePlugin],
14
14
  setup: language => {
@@ -36,5 +36,25 @@ const plugin = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)((t
36
36
  }
37
37
  }
38
38
  });
39
+ const plugin = mods => {
40
+ const pluginModule = basePlugin(mods);
41
+ return {
42
+ ...pluginModule,
43
+ getExternalFiles(proj, updateLevel = 0) {
44
+ const options = vueCompilerOptions.get(proj);
45
+ if (updateLevel >= 1 && options) {
46
+ try {
47
+ const libDir = require.resolve(`${options.lib}/package.json`, { paths: [proj.getCurrentDirectory()] })
48
+ .slice(0, -'package.json'.length);
49
+ const globalTypesPath = `${libDir}dist/__globalTypes_${options.target}_${options.strictTemplates}.d.ts`;
50
+ const globalTypesContents = vue.generateGlobalTypes(options.lib, options.target, options.strictTemplates);
51
+ proj.writeFile(globalTypesPath, globalTypesContents);
52
+ }
53
+ catch { }
54
+ }
55
+ return pluginModule.getExternalFiles?.(proj, updateLevel) ?? [];
56
+ },
57
+ };
58
+ };
39
59
  module.exports = plugin;
40
60
  //# sourceMappingURL=index.js.map
@@ -9,10 +9,7 @@ function collectExtractProps(fileName, templateCodeRange) {
9
9
  return;
10
10
  }
11
11
  const result = new Map();
12
- const program = languageService.getCurrentProgram();
13
- if (!program) {
14
- return;
15
- }
12
+ const program = languageService.getProgram();
16
13
  const sourceFile = program.getSourceFile(fileName);
17
14
  const checker = program.getTypeChecker();
18
15
  const script = volarFile.generated?.languagePlugin.typescript?.getServiceScript(volarFile.generated.root);
@@ -15,10 +15,7 @@ function getComponentProps(fileName, tag, requiredOnly = false) {
15
15
  return;
16
16
  }
17
17
  const vueCode = volarFile.generated.root;
18
- const program = languageService.getCurrentProgram();
19
- if (!program) {
20
- return;
21
- }
18
+ const program = languageService.getProgram();
22
19
  const checker = program.getTypeChecker();
23
20
  const components = getVariableType(ts, languageService, vueCode, '__VLS_components');
24
21
  if (!components) {
@@ -81,10 +78,7 @@ function getComponentEvents(fileName, tag) {
81
78
  return;
82
79
  }
83
80
  const vueCode = volarFile.generated.root;
84
- const program = languageService.getCurrentProgram();
85
- if (!program) {
86
- return;
87
- }
81
+ const program = languageService.getProgram();
88
82
  const checker = program.getTypeChecker();
89
83
  const components = getVariableType(ts, languageService, vueCode, '__VLS_components');
90
84
  if (!components) {
@@ -174,10 +168,7 @@ function getElementAttrs(fileName, tagName) {
174
168
  if (!(volarFile?.generated?.root instanceof vue.VueVirtualCode)) {
175
169
  return;
176
170
  }
177
- const program = languageService.getCurrentProgram();
178
- if (!program) {
179
- return;
180
- }
171
+ const program = languageService.getProgram();
181
172
  let tsSourceFile;
182
173
  if (tsSourceFile = program.getSourceFile(fileName)) {
183
174
  const typeNode = tsSourceFile.statements.find((node) => ts.isTypeAliasDeclaration(node) && node.name.getText() === '__VLS_IntrinsicElementsCompletion');
@@ -193,11 +184,8 @@ function getElementAttrs(fileName, tagName) {
193
184
  }
194
185
  return [];
195
186
  }
196
- function getVariableType(ts, tsLs, vueCode, name) {
197
- const program = tsLs.getCurrentProgram();
198
- if (!program) {
199
- return;
200
- }
187
+ function getVariableType(ts, languageService, vueCode, name) {
188
+ const program = languageService.getProgram();
201
189
  let tsSourceFile;
202
190
  if (tsSourceFile = program.getSourceFile(vueCode.fileName)) {
203
191
  const node = searchVariableDeclarationNode(ts, tsSourceFile, name);
@@ -31,10 +31,7 @@ function getPropertiesAtLocation(fileName, position) {
31
31
  position += file.snapshot.getLength();
32
32
  }
33
33
  }
34
- const program = languageService.getCurrentProgram();
35
- if (!program) {
36
- return;
37
- }
34
+ const program = languageService.getProgram();
38
35
  const sourceFile = program.getSourceFile(fileName);
39
36
  if (!sourceFile) {
40
37
  return;
package/lib/server.js CHANGED
@@ -19,25 +19,25 @@ async function startNamedPipeServer(ts, info, language, projectKind) {
19
19
  }
20
20
  const request = JSON.parse(text);
21
21
  const fileName = request.args[0];
22
+ const requestContext = {
23
+ typescript: ts,
24
+ languageService: info.languageService,
25
+ languageServiceHost: info.languageServiceHost,
26
+ language: language,
27
+ isTsPlugin: true,
28
+ getFileId: (fileName) => fileName,
29
+ };
22
30
  if (request.type === 'containsFile') {
23
31
  sendResponse(info.project.containsFile(ts.server.toNormalizedPath(fileName)));
24
32
  }
25
- if (request.type === 'projectInfo') {
33
+ else if (request.type === 'projectInfo') {
26
34
  sendResponse({
27
35
  name: info.project.getProjectName(),
28
36
  kind: info.project.projectKind,
29
37
  currentDirectory: info.project.getCurrentDirectory(),
30
38
  });
31
39
  }
32
- const requestContext = {
33
- typescript: ts,
34
- languageService: info.languageService,
35
- languageServiceHost: info.languageServiceHost,
36
- language: language,
37
- isTsPlugin: true,
38
- getFileId: (fileName) => fileName,
39
- };
40
- if (request.type === 'collectExtractProps') {
40
+ else if (request.type === 'collectExtractProps') {
41
41
  const result = collectExtractProps_1.collectExtractProps.apply(requestContext, request.args);
42
42
  sendResponse(result);
43
43
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/typescript-plugin",
3
- "version": "2.0.29",
3
+ "version": "2.1.2",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "**/*.js",
@@ -12,12 +12,12 @@
12
12
  "directory": "packages/typescript-plugin"
13
13
  },
14
14
  "dependencies": {
15
- "@volar/typescript": "~2.4.0-alpha.18",
16
- "@vue/language-core": "2.0.29",
15
+ "@volar/typescript": "~2.4.1",
16
+ "@vue/language-core": "2.1.2",
17
17
  "@vue/shared": "^3.4.0"
18
18
  },
19
19
  "devDependencies": {
20
20
  "@types/node": "latest"
21
21
  },
22
- "gitHead": "49ad9563e6f2677595878a000179dfea83fb910c"
22
+ "gitHead": "4e4b839ea20ae11a2aef7ee9206465cb60a4be53"
23
23
  }