@vue/typescript-plugin 3.0.8 → 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.
package/index.js
CHANGED
|
@@ -11,10 +11,7 @@ const getComponentSlots_1 = require("./lib/requests/getComponentSlots");
|
|
|
11
11
|
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
|
-
const getReactiveReferences_1 = require("./lib/requests/getReactiveReferences");
|
|
15
14
|
const isRefAtPosition_1 = require("./lib/requests/isRefAtPosition");
|
|
16
|
-
const windowsPathReg = /\\/g;
|
|
17
|
-
const project2Service = new WeakMap();
|
|
18
15
|
module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)((ts, info) => {
|
|
19
16
|
const vueOptions = getVueCompilerOptions();
|
|
20
17
|
const languagePlugin = vue.createVueLanguagePlugin(ts, info.languageServiceHost.getCompilationSettings(), vueOptions, id => id);
|
|
@@ -23,21 +20,14 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
|
|
|
23
20
|
return {
|
|
24
21
|
languagePlugins: [languagePlugin],
|
|
25
22
|
setup: language => {
|
|
26
|
-
project2Service.set(info.project, [language, info.languageServiceHost, info.languageService]);
|
|
27
23
|
info.languageService = (0, common_1.createVueLanguageServiceProxy)(ts, language, info.languageService, vueOptions, fileName => fileName);
|
|
28
|
-
|
|
29
|
-
const timer = setInterval(() => {
|
|
30
|
-
if (info.project['program']) {
|
|
31
|
-
clearInterval(timer);
|
|
32
|
-
info.project['program'].__vue__ = { language };
|
|
33
|
-
}
|
|
34
|
-
}, 50);
|
|
24
|
+
info.project.__vue__ = { language };
|
|
35
25
|
},
|
|
36
26
|
};
|
|
37
27
|
function getVueCompilerOptions() {
|
|
38
28
|
if (info.project.projectKind === ts.server.ProjectKind.Configured) {
|
|
39
29
|
const tsconfig = info.project.getProjectName();
|
|
40
|
-
return vue.createParsedCommandLine(ts, ts.sys, tsconfig.replace(
|
|
30
|
+
return vue.createParsedCommandLine(ts, ts.sys, tsconfig.replace(/\\/g, '/')).vueOptions;
|
|
41
31
|
}
|
|
42
32
|
else {
|
|
43
33
|
return vue.createParsedCommandLineByJson(ts, ts.sys, info.languageServiceHost.getCurrentDirectory(), {})
|
|
@@ -77,59 +67,53 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
|
|
|
77
67
|
});
|
|
78
68
|
session.addProtocolHandler('_vue:collectExtractProps', request => {
|
|
79
69
|
const [fileName, templateCodeRange] = request.arguments;
|
|
80
|
-
const {
|
|
81
|
-
return createResponse((0, collectExtractProps_1.collectExtractProps)(ts, language,
|
|
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));
|
|
82
72
|
});
|
|
83
73
|
session.addProtocolHandler('_vue:getImportPathForFile', request => {
|
|
84
74
|
const [fileName, incomingFileName, preferences] = request.arguments;
|
|
85
|
-
const {
|
|
86
|
-
return createResponse((0, getImportPathForFile_1.getImportPathForFile)(ts,
|
|
75
|
+
const { project } = getProject(fileName);
|
|
76
|
+
return createResponse((0, getImportPathForFile_1.getImportPathForFile)(ts, project, project.getLanguageService().getProgram(), fileName, incomingFileName, preferences));
|
|
87
77
|
});
|
|
88
78
|
session.addProtocolHandler('_vue:isRefAtPosition', request => {
|
|
89
79
|
const [fileName, position] = request.arguments;
|
|
90
|
-
const {
|
|
91
|
-
return createResponse((0, isRefAtPosition_1.isRefAtPosition)(ts, language,
|
|
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));
|
|
92
82
|
});
|
|
93
83
|
session.addProtocolHandler('_vue:getComponentDirectives', request => {
|
|
94
84
|
const [fileName] = request.arguments;
|
|
95
|
-
const {
|
|
96
|
-
return createResponse((0, getComponentDirectives_1.getComponentDirectives)(ts,
|
|
85
|
+
const { project } = getProject(fileName);
|
|
86
|
+
return createResponse((0, getComponentDirectives_1.getComponentDirectives)(ts, project.getLanguageService().getProgram(), fileName));
|
|
97
87
|
});
|
|
98
88
|
session.addProtocolHandler('_vue:getComponentEvents', request => {
|
|
99
89
|
const [fileName, tag] = request.arguments;
|
|
100
|
-
const {
|
|
101
|
-
return createResponse((0, getComponentEvents_1.getComponentEvents)(ts,
|
|
90
|
+
const { project } = getProject(fileName);
|
|
91
|
+
return createResponse((0, getComponentEvents_1.getComponentEvents)(ts, project.getLanguageService().getProgram(), fileName, tag));
|
|
102
92
|
});
|
|
103
93
|
session.addProtocolHandler('_vue:getComponentNames', request => {
|
|
104
94
|
const [fileName] = request.arguments;
|
|
105
|
-
const {
|
|
106
|
-
return createResponse((0, getComponentNames_1.getComponentNames)(ts,
|
|
95
|
+
const { project } = getProject(fileName);
|
|
96
|
+
return createResponse((0, getComponentNames_1.getComponentNames)(ts, project.getLanguageService().getProgram(), fileName));
|
|
107
97
|
});
|
|
108
98
|
session.addProtocolHandler('_vue:getComponentProps', request => {
|
|
109
99
|
const [fileName, tag] = request.arguments;
|
|
110
|
-
const {
|
|
111
|
-
return createResponse((0, getComponentProps_1.getComponentProps)(ts,
|
|
100
|
+
const { project } = getProject(fileName);
|
|
101
|
+
return createResponse((0, getComponentProps_1.getComponentProps)(ts, project.getLanguageService().getProgram(), fileName, tag));
|
|
112
102
|
});
|
|
113
103
|
session.addProtocolHandler('_vue:getComponentSlots', request => {
|
|
114
104
|
const [fileName] = request.arguments;
|
|
115
|
-
const {
|
|
116
|
-
return createResponse((0, getComponentSlots_1.getComponentSlots)(ts,
|
|
105
|
+
const { project, virtualCode } = getProjectAndVirtualCode(fileName);
|
|
106
|
+
return createResponse((0, getComponentSlots_1.getComponentSlots)(ts, project.getLanguageService().getProgram(), virtualCode));
|
|
117
107
|
});
|
|
118
108
|
session.addProtocolHandler('_vue:getElementAttrs', request => {
|
|
119
109
|
const [fileName, tag] = request.arguments;
|
|
120
|
-
const {
|
|
121
|
-
return createResponse((0, getElementAttrs_1.getElementAttrs)(ts,
|
|
110
|
+
const { project } = getProject(fileName);
|
|
111
|
+
return createResponse((0, getElementAttrs_1.getElementAttrs)(ts, project.getLanguageService().getProgram(), fileName, tag));
|
|
122
112
|
});
|
|
123
113
|
session.addProtocolHandler('_vue:getElementNames', request => {
|
|
124
114
|
const [fileName] = request.arguments;
|
|
125
|
-
const {
|
|
126
|
-
return createResponse((0, getElementNames_1.getElementNames)(ts,
|
|
127
|
-
});
|
|
128
|
-
session.addProtocolHandler('_vue:getReactiveReferences', request => {
|
|
129
|
-
const [fileName, position] = request.arguments;
|
|
130
|
-
const { language } = getLanguageService(fileName);
|
|
131
|
-
const sourceScript = language.scripts.get(fileName);
|
|
132
|
-
return createResponse((0, getReactiveReferences_1.getReactiveReferences)(ts, language, sourceScript, position, sourceScript.generated ? sourceScript.snapshot.getLength() : 0));
|
|
115
|
+
const { project } = getProject(fileName);
|
|
116
|
+
return createResponse((0, getElementNames_1.getElementNames)(ts, project.getLanguageService().getProgram(), fileName));
|
|
133
117
|
});
|
|
134
118
|
projectService.logger.info('Vue specific commands are successfully added.');
|
|
135
119
|
function createResponse(res) {
|
|
@@ -138,8 +122,8 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
|
|
|
138
122
|
responseRequired: true,
|
|
139
123
|
};
|
|
140
124
|
}
|
|
141
|
-
function
|
|
142
|
-
const service =
|
|
125
|
+
function getProjectAndVirtualCode(fileName) {
|
|
126
|
+
const service = getProject(fileName);
|
|
143
127
|
const sourceScript = service.language.scripts.get(fileName);
|
|
144
128
|
if (!sourceScript) {
|
|
145
129
|
throw new Error('No source script found for file: ' + fileName);
|
|
@@ -154,22 +138,17 @@ module.exports = (0, createLanguageServicePlugin_1.createLanguageServicePlugin)(
|
|
|
154
138
|
virtualCode,
|
|
155
139
|
};
|
|
156
140
|
}
|
|
157
|
-
function
|
|
158
|
-
|
|
159
|
-
const { project } = session.getFileAndProject({
|
|
141
|
+
function getProject(fileName) {
|
|
142
|
+
const { project } = session['getFileAndProject']({
|
|
160
143
|
file: fileName,
|
|
161
144
|
projectFileName: undefined,
|
|
162
145
|
});
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
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());
|
|
166
148
|
}
|
|
167
|
-
const [language, languageServiceHost, languageService] = service;
|
|
168
149
|
return {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
languageServiceHost,
|
|
172
|
-
language,
|
|
150
|
+
project,
|
|
151
|
+
language: project.__vue__.language,
|
|
173
152
|
};
|
|
174
153
|
}
|
|
175
154
|
}
|
package/lib/requests/index.d.ts
CHANGED
|
@@ -11,7 +11,6 @@ export interface Requests {
|
|
|
11
11
|
getComponentSlots(fileName: string): Response<ReturnType<typeof import('./getComponentSlots.js')['getComponentSlots']>>;
|
|
12
12
|
getElementAttrs(fileName: string, tag: string): Response<ReturnType<typeof import('./getElementAttrs.js')['getElementAttrs']>>;
|
|
13
13
|
getElementNames(fileName: string): Response<ReturnType<typeof import('./getElementNames.js')['getElementNames']>>;
|
|
14
|
-
getReactiveReferences(fileName: string, position: number): Response<ReturnType<typeof import('./getReactiveReferences.js')['getReactiveReferences']>>;
|
|
15
14
|
getDocumentHighlights(fileName: string, position: number): Response<ts.DocumentHighlights[]>;
|
|
16
15
|
getEncodedSemanticClassifications(fileName: string, span: ts.TextSpan): Response<ts.Classifications>;
|
|
17
16
|
getQuickInfoAtPosition(fileName: string, position: ts.LineAndCharacter): Response<string>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vue/typescript-plugin",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"files": [
|
|
6
6
|
"**/*.js",
|
|
@@ -14,14 +14,13 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@volar/typescript": "2.4.23",
|
|
17
|
-
"@vue/language-core": "3.0.
|
|
17
|
+
"@vue/language-core": "3.0.10",
|
|
18
18
|
"@vue/shared": "^3.5.0",
|
|
19
|
-
"laplacenoma": "^0.0.3",
|
|
20
19
|
"path-browserify": "^1.0.1"
|
|
21
20
|
},
|
|
22
21
|
"devDependencies": {
|
|
23
22
|
"@types/node": "^22.10.4",
|
|
24
23
|
"@types/path-browserify": "^1.0.1"
|
|
25
24
|
},
|
|
26
|
-
"gitHead": "
|
|
25
|
+
"gitHead": "0f57e1df7261ba537de6078811e971e8da1a3c79"
|
|
27
26
|
}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { type Language, type SourceScript } from '@vue/language-core';
|
|
2
|
-
export declare function getReactiveReferences(ts: typeof import('typescript'), language: Language<string>, sourceScript: SourceScript<string>, position: number, leadingOffset?: number): {
|
|
3
|
-
dependencyRanges: ts.TextRange[];
|
|
4
|
-
dependentRanges: ts.TextRange[];
|
|
5
|
-
} | undefined;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getReactiveReferences = getReactiveReferences;
|
|
4
|
-
const typescript_1 = require("@volar/typescript");
|
|
5
|
-
const laplacenoma_1 = require("laplacenoma");
|
|
6
|
-
const rulesVue = require("laplacenoma/rules/vue");
|
|
7
|
-
const analyzer = (0, laplacenoma_1.createAnalyzer)({
|
|
8
|
-
rules: rulesVue,
|
|
9
|
-
});
|
|
10
|
-
let currentVersion = -1;
|
|
11
|
-
let currentFileName = '';
|
|
12
|
-
let currentSnapshot;
|
|
13
|
-
let languageService;
|
|
14
|
-
let languageServiceHost;
|
|
15
|
-
function getReactiveReferences(ts, language, sourceScript, position, leadingOffset = 0) {
|
|
16
|
-
if (currentSnapshot !== sourceScript.snapshot || currentFileName !== sourceScript.id) {
|
|
17
|
-
currentSnapshot = sourceScript.snapshot;
|
|
18
|
-
currentFileName = sourceScript.id;
|
|
19
|
-
currentVersion++;
|
|
20
|
-
}
|
|
21
|
-
if (!languageService) {
|
|
22
|
-
languageServiceHost = {
|
|
23
|
-
getProjectVersion: () => currentVersion.toString(),
|
|
24
|
-
getScriptVersion: () => currentVersion.toString(),
|
|
25
|
-
getScriptFileNames: () => [currentFileName],
|
|
26
|
-
getScriptSnapshot: fileName => fileName === currentFileName ? currentSnapshot : undefined,
|
|
27
|
-
getCompilationSettings: () => ({ allowJs: true, allowNonTsExtensions: true }),
|
|
28
|
-
getCurrentDirectory: () => '',
|
|
29
|
-
getDefaultLibFileName: () => '',
|
|
30
|
-
readFile: () => undefined,
|
|
31
|
-
fileExists: fileName => fileName === currentFileName,
|
|
32
|
-
};
|
|
33
|
-
(0, typescript_1.decorateLanguageServiceHost)(ts, language, languageServiceHost);
|
|
34
|
-
const proxied = (0, typescript_1.createProxyLanguageService)(ts.createLanguageService(languageServiceHost));
|
|
35
|
-
proxied.initialize(language);
|
|
36
|
-
languageService = proxied.proxy;
|
|
37
|
-
}
|
|
38
|
-
const sourceFile = languageService.getProgram().getSourceFile(sourceScript.id);
|
|
39
|
-
const serviceScript = sourceScript.generated?.languagePlugin.typescript?.getServiceScript(sourceScript.generated.root);
|
|
40
|
-
const map = serviceScript ? language.maps.get(serviceScript.code, sourceScript) : undefined;
|
|
41
|
-
const toSourceRange = map
|
|
42
|
-
? (pos, end) => {
|
|
43
|
-
for (const [mappedStart, mappedEnd] of map.toSourceRange(pos - leadingOffset, end - leadingOffset, false)) {
|
|
44
|
-
return { pos: mappedStart, end: mappedEnd };
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
: (pos, end) => ({ pos, end });
|
|
48
|
-
return analyzer.analyze(sourceFile, position, {
|
|
49
|
-
typescript: ts,
|
|
50
|
-
languageService,
|
|
51
|
-
toSourceRange,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=getReactiveReferences.js.map
|