@vue/typescript-plugin 3.1.0 → 3.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.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  const createLanguageServicePlugin_1 = require("@volar/typescript/lib/quickstart/createLanguageServicePlugin");
3
- const vue = require("@vue/language-core");
3
+ const core = require("@vue/language-core");
4
4
  const common_1 = require("./lib/common");
5
5
  const collectExtractProps_1 = require("./lib/requests/collectExtractProps");
6
6
  const getComponentDirectives_1 = require("./lib/requests/getComponentDirectives");
@@ -12,34 +12,25 @@ const getElementAttrs_1 = require("./lib/requests/getElementAttrs");
12
12
  const getElementNames_1 = require("./lib/requests/getElementNames");
13
13
  const getImportPathForFile_1 = require("./lib/requests/getImportPathForFile");
14
14
  const isRefAtPosition_1 = require("./lib/requests/isRefAtPosition");
15
- const windowsPathReg = /\\/g;
16
- const project2Service = new WeakMap();
17
15
  module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)((ts, info) => {
18
16
  const vueOptions = getVueCompilerOptions();
19
- const languagePlugin = vue.createVueLanguagePlugin(ts, info.languageServiceHost.getCompilationSettings(), vueOptions, id => id);
20
- vue.writeGlobalTypes(vueOptions, ts.sys.writeFile);
17
+ const languagePlugin = core.createVueLanguagePlugin(ts, info.languageServiceHost.getCompilationSettings(), vueOptions, id => id);
18
+ vueOptions.globalTypesPath = core.createGlobalTypesWriter(vueOptions, ts.sys.writeFile);
21
19
  addVueCommands();
22
20
  return {
23
21
  languagePlugins: [languagePlugin],
24
22
  setup: language => {
25
- project2Service.set(info.project, [language, info.languageServiceHost, info.languageService]);
26
23
  info.languageService = (0, common_1.createVueLanguageServiceProxy)(ts, language, info.languageService, vueOptions, fileName => fileName);
27
- // #3963
28
- const timer = setInterval(() => {
29
- if (info.project['program']) {
30
- clearInterval(timer);
31
- info.project['program'].__vue__ = { language };
32
- }
33
- }, 50);
24
+ info.project.__vue__ = { language };
34
25
  },
35
26
  };
36
27
  function getVueCompilerOptions() {
37
28
  if (info.project.projectKind === ts.server.ProjectKind.Configured) {
38
29
  const tsconfig = info.project.getProjectName();
39
- return vue.createParsedCommandLine(ts, ts.sys, tsconfig.replace(windowsPathReg, '/')).vueOptions;
30
+ return core.createParsedCommandLine(ts, ts.sys, tsconfig.replace(/\\/g, '/')).vueOptions;
40
31
  }
41
32
  else {
42
- return vue.createParsedCommandLineByJson(ts, ts.sys, info.languageServiceHost.getCurrentDirectory(), {})
33
+ return core.createParsedCommandLineByJson(ts, ts.sys, info.languageServiceHost.getCurrentDirectory(), {})
43
34
  .vueOptions;
44
35
  }
45
36
  }
@@ -76,53 +67,53 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
76
67
  });
77
68
  session.addProtocolHandler('_vue:collectExtractProps', request => {
78
69
  const [fileName, templateCodeRange] = request.arguments;
79
- const { language, languageService, sourceScript, virtualCode } = getLanguageServiceAndVirtualCode(fileName);
80
- return createResponse((0, collectExtractProps_1.collectExtractProps)(ts, language, languageService.getProgram(), sourceScript, virtualCode, templateCodeRange, sourceScript.generated ? sourceScript.snapshot.getLength() : 0));
70
+ const { project, language, sourceScript, virtualCode } = getProjectAndVirtualCode(fileName);
71
+ return createResponse((0, collectExtractProps_1.collectExtractProps)(ts, language, project.getLanguageService().getProgram(), sourceScript, virtualCode, templateCodeRange, sourceScript.generated ? sourceScript.snapshot.getLength() : 0));
81
72
  });
82
73
  session.addProtocolHandler('_vue:getImportPathForFile', request => {
83
74
  const [fileName, incomingFileName, preferences] = request.arguments;
84
- const { languageServiceHost, languageService } = getLanguageService(fileName);
85
- return createResponse((0, getImportPathForFile_1.getImportPathForFile)(ts, languageServiceHost, languageService.getProgram(), fileName, incomingFileName, preferences));
75
+ const { project } = getProject(fileName);
76
+ return createResponse((0, getImportPathForFile_1.getImportPathForFile)(ts, project, project.getLanguageService().getProgram(), fileName, incomingFileName, preferences));
86
77
  });
87
78
  session.addProtocolHandler('_vue:isRefAtPosition', request => {
88
79
  const [fileName, position] = request.arguments;
89
- const { language, languageService, sourceScript, virtualCode } = getLanguageServiceAndVirtualCode(fileName);
90
- return createResponse((0, isRefAtPosition_1.isRefAtPosition)(ts, language, languageService.getProgram(), sourceScript, virtualCode, position, sourceScript.generated ? sourceScript.snapshot.getLength() : 0));
80
+ const { project, language, sourceScript, virtualCode } = getProjectAndVirtualCode(fileName);
81
+ return createResponse((0, isRefAtPosition_1.isRefAtPosition)(ts, language, project.getLanguageService().getProgram(), sourceScript, virtualCode, position, sourceScript.generated ? sourceScript.snapshot.getLength() : 0));
91
82
  });
92
83
  session.addProtocolHandler('_vue:getComponentDirectives', request => {
93
84
  const [fileName] = request.arguments;
94
- const { languageService } = getLanguageService(fileName);
95
- return createResponse((0, getComponentDirectives_1.getComponentDirectives)(ts, languageService.getProgram(), fileName));
85
+ const { project } = getProject(fileName);
86
+ return createResponse((0, getComponentDirectives_1.getComponentDirectives)(ts, project.getLanguageService().getProgram(), fileName));
96
87
  });
97
88
  session.addProtocolHandler('_vue:getComponentEvents', request => {
98
89
  const [fileName, tag] = request.arguments;
99
- const { languageService } = getLanguageService(fileName);
100
- return createResponse((0, getComponentEvents_1.getComponentEvents)(ts, languageService.getProgram(), fileName, tag));
90
+ const { project } = getProject(fileName);
91
+ return createResponse((0, getComponentEvents_1.getComponentEvents)(ts, project.getLanguageService().getProgram(), fileName, tag));
101
92
  });
102
93
  session.addProtocolHandler('_vue:getComponentNames', request => {
103
94
  const [fileName] = request.arguments;
104
- const { languageService } = getLanguageService(fileName);
105
- return createResponse((0, getComponentNames_1.getComponentNames)(ts, languageService.getProgram(), fileName));
95
+ const { project } = getProject(fileName);
96
+ return createResponse((0, getComponentNames_1.getComponentNames)(ts, project.getLanguageService().getProgram(), fileName));
106
97
  });
107
98
  session.addProtocolHandler('_vue:getComponentProps', request => {
108
99
  const [fileName, tag] = request.arguments;
109
- const { languageService } = getLanguageService(fileName);
110
- return createResponse((0, getComponentProps_1.getComponentProps)(ts, languageService.getProgram(), fileName, tag));
100
+ const { project } = getProject(fileName);
101
+ return createResponse((0, getComponentProps_1.getComponentProps)(ts, project.getLanguageService().getProgram(), fileName, tag));
111
102
  });
112
103
  session.addProtocolHandler('_vue:getComponentSlots', request => {
113
104
  const [fileName] = request.arguments;
114
- const { languageService, virtualCode } = getLanguageServiceAndVirtualCode(fileName);
115
- return createResponse((0, getComponentSlots_1.getComponentSlots)(ts, languageService.getProgram(), virtualCode));
105
+ const { project, virtualCode } = getProjectAndVirtualCode(fileName);
106
+ return createResponse((0, getComponentSlots_1.getComponentSlots)(ts, project.getLanguageService().getProgram(), virtualCode));
116
107
  });
117
108
  session.addProtocolHandler('_vue:getElementAttrs', request => {
118
109
  const [fileName, tag] = request.arguments;
119
- const { languageService } = getLanguageService(fileName);
120
- return createResponse((0, getElementAttrs_1.getElementAttrs)(ts, languageService.getProgram(), fileName, tag));
110
+ const { project } = getProject(fileName);
111
+ return createResponse((0, getElementAttrs_1.getElementAttrs)(ts, project.getLanguageService().getProgram(), fileName, tag));
121
112
  });
122
113
  session.addProtocolHandler('_vue:getElementNames', request => {
123
114
  const [fileName] = request.arguments;
124
- const { languageService } = getLanguageService(fileName);
125
- return createResponse((0, getElementNames_1.getElementNames)(ts, languageService.getProgram(), fileName));
115
+ const { project } = getProject(fileName);
116
+ return createResponse((0, getElementNames_1.getElementNames)(ts, project.getLanguageService().getProgram(), fileName));
126
117
  });
127
118
  projectService.logger.info('Vue specific commands are successfully added.');
128
119
  function createResponse(res) {
@@ -131,14 +122,14 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
131
122
  responseRequired: true,
132
123
  };
133
124
  }
134
- function getLanguageServiceAndVirtualCode(fileName) {
135
- const service = getLanguageService(fileName);
125
+ function getProjectAndVirtualCode(fileName) {
126
+ const service = getProject(fileName);
136
127
  const sourceScript = service.language.scripts.get(fileName);
137
128
  if (!sourceScript) {
138
129
  throw new Error('No source script found for file: ' + fileName);
139
130
  }
140
131
  const virtualCode = sourceScript.generated?.root;
141
- if (!(virtualCode instanceof vue.VueVirtualCode)) {
132
+ if (!(virtualCode instanceof core.VueVirtualCode)) {
142
133
  throw new Error('No virtual code found for file: ' + fileName);
143
134
  }
144
135
  return {
@@ -147,21 +138,17 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
147
138
  virtualCode,
148
139
  };
149
140
  }
150
- function getLanguageService(fileName) {
141
+ function getProject(fileName) {
151
142
  const { project } = session['getFileAndProject']({
152
143
  file: fileName,
153
144
  projectFileName: undefined,
154
145
  });
155
- const service = project2Service.get(project);
156
- if (!service) {
157
- throw new Error('No vue service for project: ' + project.getProjectName());
146
+ if (!('__vue__' in project)) {
147
+ throw new Error('No vue project info for project: ' + project.getProjectName());
158
148
  }
159
- const [language, languageServiceHost, languageService] = service;
160
149
  return {
161
- typescript: ts,
162
- languageService,
163
- languageServiceHost,
164
- language,
150
+ project,
151
+ language: project.__vue__.language,
165
152
  };
166
153
  }
167
154
  }
@@ -35,7 +35,10 @@ function isRefAtPosition(ts, language, program, sourceScript, virtualCode, posit
35
35
  const checker = program.getTypeChecker();
36
36
  const type = checker.getTypeAtLocation(node);
37
37
  const props = type.getProperties();
38
- return props.some(prop => prop.escapedName === 'value' && prop.flags & ts.SymbolFlags.Accessor);
38
+ return props.some(prop => prop.declarations?.some(decl => ts.isPropertySignature(decl)
39
+ && ts.isComputedPropertyName(decl.name)
40
+ && ts.isIdentifier(decl.name.expression)
41
+ && decl.name.expression.text === 'RefSymbol'));
39
42
  function findPositionIdentifier(sourceFile, node, offset) {
40
43
  let result;
41
44
  node.forEachChild(child => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/typescript-plugin",
3
- "version": "3.1.0",
3
+ "version": "3.1.2",
4
4
  "license": "MIT",
5
5
  "files": [
6
6
  "**/*.js",
@@ -14,7 +14,7 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@volar/typescript": "2.4.23",
17
- "@vue/language-core": "3.1.0",
17
+ "@vue/language-core": "3.1.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": "fa32cb67b68c4fd01a146c7e2a276ffa022df268"
25
+ "gitHead": "77db3d889305e8c02740f4c14793bff0156ccdb8"
26
26
  }