@vue/typescript-plugin 3.0.9 → 3.0.10

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 (2) hide show
  1. package/index.js +30 -44
  2. package/package.json +3 -3
package/index.js CHANGED
@@ -12,8 +12,6 @@ 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
17
  const languagePlugin = vue.createVueLanguagePlugin(ts, info.languageServiceHost.getCompilationSettings(), vueOptions, id => id);
@@ -22,21 +20,14 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
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 vue.createParsedCommandLine(ts, ts.sys, tsconfig.replace(/\\/g, '/')).vueOptions;
40
31
  }
41
32
  else {
42
33
  return vue.createParsedCommandLineByJson(ts, ts.sys, info.languageServiceHost.getCurrentDirectory(), {})
@@ -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,8 +122,8 @@ 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);
@@ -147,22 +138,17 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
147
138
  virtualCode,
148
139
  };
149
140
  }
150
- function getLanguageService(fileName) {
151
- // @ts-expect-error
152
- const { project } = session.getFileAndProject({
141
+ function getProject(fileName) {
142
+ const { project } = session['getFileAndProject']({
153
143
  file: fileName,
154
144
  projectFileName: undefined,
155
145
  });
156
- const service = project2Service.get(project);
157
- if (!service) {
158
- 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());
159
148
  }
160
- const [language, languageServiceHost, languageService] = service;
161
149
  return {
162
- typescript: ts,
163
- languageService,
164
- languageServiceHost,
165
- language,
150
+ project,
151
+ language: project.__vue__.language,
166
152
  };
167
153
  }
168
154
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vue/typescript-plugin",
3
- "version": "3.0.9",
3
+ "version": "3.0.10",
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.0.9",
17
+ "@vue/language-core": "3.0.10",
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": "f4e06e14c70650256bf875a579e8ceaf093dd60b"
25
+ "gitHead": "0f57e1df7261ba537de6078811e971e8da1a3c79"
26
26
  }