Skip to content

Commit 9355131

Browse files
committed
fix(typescript-plugin): enable responseRequired in custom requests
1 parent 4bcd8f2 commit 9355131

File tree

1 file changed

+21
-30
lines changed

1 file changed

+21
-30
lines changed

packages/typescript-plugin/index.ts

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -103,79 +103,70 @@ export = createLanguageServicePlugin(
103103
request => {
104104
const [fileName, templateCodeRange]: Parameters<Requests['collectExtractProps']> = request.arguments;
105105
const { language, program, sourceScript, virtualCode } = getLanguageServiceAndVirtualCode(fileName);
106-
return {
107-
response: collectExtractProps(ts, language, program, sourceScript, virtualCode, templateCodeRange, true),
108-
};
106+
return createResponse(
107+
collectExtractProps(ts, language, program, sourceScript, virtualCode, templateCodeRange, true),
108+
);
109109
},
110110
);
111111
session.addProtocolHandler('_vue:getImportPathForFile', request => {
112112
const [fileName, incomingFileName, preferences]: Parameters<Requests['getImportPathForFile']> =
113113
request.arguments;
114114
const { languageServiceHost, program } = getLanguageService(fileName);
115-
return {
116-
response: getImportPathForFile(ts, languageServiceHost, program, fileName, incomingFileName, preferences),
117-
};
115+
return createResponse(
116+
getImportPathForFile(ts, languageServiceHost, program, fileName, incomingFileName, preferences),
117+
);
118118
});
119119
session.addProtocolHandler('_vue:isRefAtLocation', request => {
120120
const [fileName, position]: Parameters<Requests['isRefAtLocation']> = request.arguments;
121121
const { language, program, sourceScript, virtualCode } = getLanguageServiceAndVirtualCode(fileName);
122-
return {
123-
response: isRefAtLocation(ts, language, program, sourceScript, virtualCode, position, true),
124-
};
122+
return createResponse(isRefAtLocation(ts, language, program, sourceScript, virtualCode, position, true));
125123
});
126124
session.addProtocolHandler('_vue:getComponentDirectives', request => {
127125
const [fileName]: Parameters<Requests['getComponentDirectives']> = request.arguments;
128126
const { program } = getLanguageService(fileName);
129-
return {
130-
response: getComponentDirectives(ts, program, fileName),
131-
};
127+
return createResponse(getComponentDirectives(ts, program, fileName));
132128
});
133129
session.addProtocolHandler('_vue:getComponentEvents', request => {
134130
const [fileName, tag]: Parameters<Requests['getComponentEvents']> = request.arguments;
135131
const { program } = getLanguageService(fileName);
136-
return {
137-
response: getComponentEvents(ts, program, fileName, tag),
138-
};
132+
return createResponse(getComponentEvents(ts, program, fileName, tag));
139133
});
140134
session.addProtocolHandler('_vue:getComponentNames', request => {
141135
const [fileName]: Parameters<Requests['getComponentNames']> = request.arguments;
142136
const { program } = getLanguageService(fileName);
143-
return {
144-
response: getComponentNames(ts, program, fileName),
145-
};
137+
return createResponse(getComponentNames(ts, program, fileName));
146138
});
147139
session.addProtocolHandler('_vue:getComponentProps', request => {
148140
const [fileName, tag]: Parameters<Requests['getComponentProps']> = request.arguments;
149141
const { program } = getLanguageService(fileName);
150-
return {
151-
response: getComponentProps(ts, program, fileName, tag),
152-
};
142+
return createResponse(getComponentProps(ts, program, fileName, tag));
153143
});
154144
session.addProtocolHandler('_vue:getComponentSlots', request => {
155145
const [fileName]: Parameters<Requests['getComponentSlots']> = request.arguments;
156146
const { program, virtualCode } = getLanguageServiceAndVirtualCode(fileName);
157-
return {
158-
response: getComponentSlots(ts, program, virtualCode),
159-
};
147+
return createResponse(getComponentSlots(ts, program, virtualCode));
160148
});
161149
session.addProtocolHandler('_vue:getElementAttrs', request => {
162150
const [fileName, tag]: Parameters<Requests['getElementAttrs']> = request.arguments;
163151
const { program } = getLanguageService(fileName);
164-
return {
165-
response: getElementAttrs(ts, program, fileName, tag),
166-
};
152+
return createResponse(getElementAttrs(ts, program, fileName, tag));
167153
});
168154
session.addProtocolHandler('_vue:getElementNames', request => {
169155
const [fileName]: Parameters<Requests['getElementNames']> = request.arguments;
170156
const { program } = getLanguageService(fileName);
171-
return {
172-
response: getElementNames(ts, program, fileName),
173-
};
157+
return createResponse(getElementNames(ts, program, fileName));
174158
});
175159

176160
projectService.logger.info('Vue specific commands are successfully added.');
177161
}
178162

163+
function createResponse<T extends object>(res: T): ts.server.HandlerResponse {
164+
return {
165+
response: res,
166+
responseRequired: true,
167+
};
168+
}
169+
179170
function getLanguageServiceAndVirtualCode(fileName: string) {
180171
const service = getLanguageService(fileName);
181172
const sourceScript = service?.language.scripts.get(fileName);

0 commit comments

Comments
 (0)