atom-languageclient
Version:
Integrate Language Servers with Atom
58 lines • 6.74 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
const languageclient_1 = require("../languageclient");
/** Adapts Atom's user notifications to those of the language server protocol. */
class LoggingConsoleAdapter {
/**
* Create a new {LoggingConsoleAdapter} that will listen for log messages via the supplied {LanguageClientConnection}.
*
* @param connection A {LanguageClientConnection} to the language server that will provide log messages.
*/
constructor(connection) {
this._consoles = new Set();
connection.onLogMessage(this.logMessage.bind(this));
}
/** Dispose this adapter ensuring any resources are freed and events unhooked. */
dispose() {
this.detachAll();
}
/**
* Public: Attach this {LoggingConsoleAdapter} to a given {atomIde.ConsoleApi}.
*
* @param console A {atomIde.ConsoleApi} that wants to receive messages.
*/
attach(console) {
this._consoles.add(console);
}
/** Public: Remove all {atomIde.ConsoleApi}'s attached to this adapter. */
detachAll() {
this._consoles.clear();
}
/**
* Log a message using the Atom IDE UI Console API.
*
* @param params The {LogMessageParams} received from the language server indicating the details of the message to be loggedd.
*/
logMessage(params) {
switch (params.type) {
case languageclient_1.MessageType.Error: {
this._consoles.forEach((c) => c.error(params.message));
return;
}
case languageclient_1.MessageType.Warning: {
this._consoles.forEach((c) => c.warn(params.message));
return;
}
case languageclient_1.MessageType.Info: {
this._consoles.forEach((c) => c.info(params.message));
return;
}
case languageclient_1.MessageType.Log: {
this._consoles.forEach((c) => c.log(params.message));
return;
}
}
}
}
exports.default = LoggingConsoleAdapter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy1jb25zb2xlLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvYWRhcHRlcnMvbG9nZ2luZy1jb25zb2xlLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxzREFBMkY7QUFFM0YsaUZBQWlGO0FBQ2pGLE1BQXFCLHFCQUFxQjtJQUd4Qzs7OztPQUlHO0lBQ0gsWUFBWSxVQUFvQztRQVB4QyxjQUFTLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUE7UUFRcEQsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFFRCxpRkFBaUY7SUFDMUUsT0FBTztRQUNaLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxPQUEyQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsMEVBQTBFO0lBQ25FLFNBQVM7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssVUFBVSxDQUFDLE1BQXdCO1FBQ3pDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNuQixLQUFLLDRCQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUN0RCxPQUFNO2FBQ1A7WUFDRCxLQUFLLDRCQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUNyRCxPQUFNO2FBQ1A7WUFDRCxLQUFLLDRCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUNyRCxPQUFNO2FBQ1A7WUFDRCxLQUFLLDRCQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUNwRCxPQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7Q0FDRjtBQXhERCx3Q0F3REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGF0b21JZGUgZnJvbSBcImF0b20taWRlLWJhc2VcIlxuaW1wb3J0IHsgTGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9uLCBMb2dNZXNzYWdlUGFyYW1zLCBNZXNzYWdlVHlwZSB9IGZyb20gXCIuLi9sYW5ndWFnZWNsaWVudFwiXG5cbi8qKiBBZGFwdHMgQXRvbSdzIHVzZXIgbm90aWZpY2F0aW9ucyB0byB0aG9zZSBvZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb3RvY29sLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0NvbnNvbGVBZGFwdGVyIHtcbiAgcHJpdmF0ZSBfY29uc29sZXM6IFNldDxhdG9tSWRlLkNvbnNvbGVBcGk+ID0gbmV3IFNldCgpXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB7TG9nZ2luZ0NvbnNvbGVBZGFwdGVyfSB0aGF0IHdpbGwgbGlzdGVuIGZvciBsb2cgbWVzc2FnZXMgdmlhIHRoZSBzdXBwbGllZCB7TGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9ufS5cbiAgICpcbiAgICogQHBhcmFtIGNvbm5lY3Rpb24gQSB7TGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9ufSB0byB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRoYXQgd2lsbCBwcm92aWRlIGxvZyBtZXNzYWdlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IExhbmd1YWdlQ2xpZW50Q29ubmVjdGlvbikge1xuICAgIGNvbm5lY3Rpb24ub25Mb2dNZXNzYWdlKHRoaXMubG9nTWVzc2FnZS5iaW5kKHRoaXMpKVxuICB9XG5cbiAgLyoqIERpc3Bvc2UgdGhpcyBhZGFwdGVyIGVuc3VyaW5nIGFueSByZXNvdXJjZXMgYXJlIGZyZWVkIGFuZCBldmVudHMgdW5ob29rZWQuICovXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWNoQWxsKClcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaWM6IEF0dGFjaCB0aGlzIHtMb2dnaW5nQ29uc29sZUFkYXB0ZXJ9IHRvIGEgZ2l2ZW4ge2F0b21JZGUuQ29uc29sZUFwaX0uXG4gICAqXG4gICAqIEBwYXJhbSBjb25zb2xlIEEge2F0b21JZGUuQ29uc29sZUFwaX0gdGhhdCB3YW50cyB0byByZWNlaXZlIG1lc3NhZ2VzLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaChjb25zb2xlOiBhdG9tSWRlLkNvbnNvbGVBcGkpOiB2b2lkIHtcbiAgICB0aGlzLl9jb25zb2xlcy5hZGQoY29uc29sZSlcbiAgfVxuXG4gIC8qKiBQdWJsaWM6IFJlbW92ZSBhbGwge2F0b21JZGUuQ29uc29sZUFwaX0ncyBhdHRhY2hlZCB0byB0aGlzIGFkYXB0ZXIuICovXG4gIHB1YmxpYyBkZXRhY2hBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5fY29uc29sZXMuY2xlYXIoKVxuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhIG1lc3NhZ2UgdXNpbmcgdGhlIEF0b20gSURFIFVJIENvbnNvbGUgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSB7TG9nTWVzc2FnZVBhcmFtc30gcmVjZWl2ZWQgZnJvbSB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGluZGljYXRpbmcgdGhlIGRldGFpbHMgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkZC5cbiAgICovXG4gIHByaXZhdGUgbG9nTWVzc2FnZShwYXJhbXM6IExvZ01lc3NhZ2VQYXJhbXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG4gICAgICBjYXNlIE1lc3NhZ2VUeXBlLkVycm9yOiB7XG4gICAgICAgIHRoaXMuX2NvbnNvbGVzLmZvckVhY2goKGMpID0+IGMuZXJyb3IocGFyYW1zLm1lc3NhZ2UpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhc2UgTWVzc2FnZVR5cGUuV2FybmluZzoge1xuICAgICAgICB0aGlzLl9jb25zb2xlcy5mb3JFYWNoKChjKSA9PiBjLndhcm4ocGFyYW1zLm1lc3NhZ2UpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhc2UgTWVzc2FnZVR5cGUuSW5mbzoge1xuICAgICAgICB0aGlzLl9jb25zb2xlcy5mb3JFYWNoKChjKSA9PiBjLmluZm8ocGFyYW1zLm1lc3NhZ2UpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhc2UgTWVzc2FnZVR5cGUuTG9nOiB7XG4gICAgICAgIHRoaXMuX2NvbnNvbGVzLmZvckVhY2goKGMpID0+IGMubG9nKHBhcmFtcy5tZXNzYWdlKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
;