apollo-language-server
Version:
A language server for Apollo GraphQL projects
45 lines • 1.97 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.LanguageServerLoadingHandler = void 0;
const vscode_languageserver_1 = require("vscode-languageserver");
class LanguageServerLoadingHandler {
constructor(connection) {
this.connection = connection;
this.latestLoadingToken = 0;
}
async handle(message, value) {
const token = this.latestLoadingToken;
this.latestLoadingToken += 1;
this.connection.sendNotification(new vscode_languageserver_1.NotificationType("apollographql/loading"), { message, token });
try {
const ret = await value;
this.connection.sendNotification(new vscode_languageserver_1.NotificationType("apollographql/loadingComplete"), token);
return ret;
}
catch (e) {
this.connection.sendNotification(new vscode_languageserver_1.NotificationType("apollographql/loadingComplete"), token);
this.showError(`Error in "${message}": ${e}`);
throw e;
}
}
handleSync(message, value) {
const token = this.latestLoadingToken;
this.latestLoadingToken += 1;
this.connection.sendNotification(new vscode_languageserver_1.NotificationType("apollographql/loading"), { message, token });
try {
const ret = value();
this.connection.sendNotification(new vscode_languageserver_1.NotificationType("apollographql/loadingComplete"), token);
return ret;
}
catch (e) {
this.connection.sendNotification(new vscode_languageserver_1.NotificationType("apollographql/loadingComplete"), token);
this.showError(`Error in "${message}": ${e}`);
throw e;
}
}
showError(message) {
this.connection.window.showErrorMessage(message);
}
}
exports.LanguageServerLoadingHandler = LanguageServerLoadingHandler;
//# sourceMappingURL=loadingHandler.js.map
;