UNPKG

6.74 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const languageclient_1 = require("../languageclient");
4/** Adapts Atom's user notifications to those of the language server protocol. */
5class LoggingConsoleAdapter {
6 /**
7 * Create a new {LoggingConsoleAdapter} that will listen for log messages via the supplied {LanguageClientConnection}.
8 *
9 * @param connection A {LanguageClientConnection} to the language server that will provide log messages.
10 */
11 constructor(connection) {
12 this._consoles = new Set();
13 connection.onLogMessage(this.logMessage.bind(this));
14 }
15 /** Dispose this adapter ensuring any resources are freed and events unhooked. */
16 dispose() {
17 this.detachAll();
18 }
19 /**
20 * Public: Attach this {LoggingConsoleAdapter} to a given {atomIde.ConsoleApi}.
21 *
22 * @param console A {atomIde.ConsoleApi} that wants to receive messages.
23 */
24 attach(console) {
25 this._consoles.add(console);
26 }
27 /** Public: Remove all {atomIde.ConsoleApi}'s attached to this adapter. */
28 detachAll() {
29 this._consoles.clear();
30 }
31 /**
32 * Log a message using the Atom IDE UI Console API.
33 *
34 * @param params The {LogMessageParams} received from the language server indicating the details of the message to be loggedd.
35 */
36 logMessage(params) {
37 switch (params.type) {
38 case languageclient_1.MessageType.Error: {
39 this._consoles.forEach((c) => c.error(params.message));
40 return;
41 }
42 case languageclient_1.MessageType.Warning: {
43 this._consoles.forEach((c) => c.warn(params.message));
44 return;
45 }
46 case languageclient_1.MessageType.Info: {
47 this._consoles.forEach((c) => c.info(params.message));
48 return;
49 }
50 case languageclient_1.MessageType.Log: {
51 this._consoles.forEach((c) => c.log(params.message));
52 return;
53 }
54 }
55 }
56}
57exports.default = LoggingConsoleAdapter;
58//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2luZy1jb25zb2xlLWFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvYWRhcHRlcnMvbG9nZ2luZy1jb25zb2xlLWFkYXB0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFDQSxzREFBMkY7QUFFM0YsaUZBQWlGO0FBQ2pGLE1BQXFCLHFCQUFxQjtJQUd4Qzs7OztPQUlHO0lBQ0gsWUFBWSxVQUFvQztRQVB4QyxjQUFTLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUE7UUFRcEQsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQ3JELENBQUM7SUFFRCxpRkFBaUY7SUFDMUUsT0FBTztRQUNaLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUNsQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxPQUEyQjtRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM3QixDQUFDO0lBRUQsMEVBQTBFO0lBQ25FLFNBQVM7UUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssVUFBVSxDQUFDLE1BQXdCO1FBQ3pDLFFBQVEsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNuQixLQUFLLDRCQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUN0RCxPQUFNO2FBQ1A7WUFDRCxLQUFLLDRCQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUNyRCxPQUFNO2FBQ1A7WUFDRCxLQUFLLDRCQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUNyRCxPQUFNO2FBQ1A7WUFDRCxLQUFLLDRCQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFBO2dCQUNwRCxPQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7Q0FDRjtBQXhERCx3Q0F3REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSAqIGFzIGF0b21JZGUgZnJvbSBcImF0b20taWRlLWJhc2VcIlxuaW1wb3J0IHsgTGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9uLCBMb2dNZXNzYWdlUGFyYW1zLCBNZXNzYWdlVHlwZSB9IGZyb20gXCIuLi9sYW5ndWFnZWNsaWVudFwiXG5cbi8qKiBBZGFwdHMgQXRvbSdzIHVzZXIgbm90aWZpY2F0aW9ucyB0byB0aG9zZSBvZiB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHByb3RvY29sLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2luZ0NvbnNvbGVBZGFwdGVyIHtcbiAgcHJpdmF0ZSBfY29uc29sZXM6IFNldDxhdG9tSWRlLkNvbnNvbGVBcGk+ID0gbmV3IFNldCgpXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB7TG9nZ2luZ0NvbnNvbGVBZGFwdGVyfSB0aGF0IHdpbGwgbGlzdGVuIGZvciBsb2cgbWVzc2FnZXMgdmlhIHRoZSBzdXBwbGllZCB7TGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9ufS5cbiAgICpcbiAgICogQHBhcmFtIGNvbm5lY3Rpb24gQSB7TGFuZ3VhZ2VDbGllbnRDb25uZWN0aW9ufSB0byB0aGUgbGFuZ3VhZ2Ugc2VydmVyIHRoYXQgd2lsbCBwcm92aWRlIGxvZyBtZXNzYWdlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKGNvbm5lY3Rpb246IExhbmd1YWdlQ2xpZW50Q29ubmVjdGlvbikge1xuICAgIGNvbm5lY3Rpb24ub25Mb2dNZXNzYWdlKHRoaXMubG9nTWVzc2FnZS5iaW5kKHRoaXMpKVxuICB9XG5cbiAgLyoqIERpc3Bvc2UgdGhpcyBhZGFwdGVyIGVuc3VyaW5nIGFueSByZXNvdXJjZXMgYXJlIGZyZWVkIGFuZCBldmVudHMgdW5ob29rZWQuICovXG4gIHB1YmxpYyBkaXNwb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuZGV0YWNoQWxsKClcbiAgfVxuXG4gIC8qKlxuICAgKiBQdWJsaWM6IEF0dGFjaCB0aGlzIHtMb2dnaW5nQ29uc29sZUFkYXB0ZXJ9IHRvIGEgZ2l2ZW4ge2F0b21JZGUuQ29uc29sZUFwaX0uXG4gICAqXG4gICAqIEBwYXJhbSBjb25zb2xlIEEge2F0b21JZGUuQ29uc29sZUFwaX0gdGhhdCB3YW50cyB0byByZWNlaXZlIG1lc3NhZ2VzLlxuICAgKi9cbiAgcHVibGljIGF0dGFjaChjb25zb2xlOiBhdG9tSWRlLkNvbnNvbGVBcGkpOiB2b2lkIHtcbiAgICB0aGlzLl9jb25zb2xlcy5hZGQoY29uc29sZSlcbiAgfVxuXG4gIC8qKiBQdWJsaWM6IFJlbW92ZSBhbGwge2F0b21JZGUuQ29uc29sZUFwaX0ncyBhdHRhY2hlZCB0byB0aGlzIGFkYXB0ZXIuICovXG4gIHB1YmxpYyBkZXRhY2hBbGwoKTogdm9pZCB7XG4gICAgdGhpcy5fY29uc29sZXMuY2xlYXIoKVxuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhIG1lc3NhZ2UgdXNpbmcgdGhlIEF0b20gSURFIFVJIENvbnNvbGUgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0gcGFyYW1zIFRoZSB7TG9nTWVzc2FnZVBhcmFtc30gcmVjZWl2ZWQgZnJvbSB0aGUgbGFuZ3VhZ2Ugc2VydmVyIGluZGljYXRpbmcgdGhlIGRldGFpbHMgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgbG9nZ2VkZC5cbiAgICovXG4gIHByaXZhdGUgbG9nTWVzc2FnZShwYXJhbXM6IExvZ01lc3NhZ2VQYXJhbXMpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKHBhcmFtcy50eXBlKSB7XG4gICAgICBjYXNlIE1lc3NhZ2VUeXBlLkVycm9yOiB7XG4gICAgICAgIHRoaXMuX2NvbnNvbGVzLmZvckVhY2goKGMpID0+IGMuZXJyb3IocGFyYW1zLm1lc3NhZ2UpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhc2UgTWVzc2FnZVR5cGUuV2FybmluZzoge1xuICAgICAgICB0aGlzLl9jb25zb2xlcy5mb3JFYWNoKChjKSA9PiBjLndhcm4ocGFyYW1zLm1lc3NhZ2UpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhc2UgTWVzc2FnZVR5cGUuSW5mbzoge1xuICAgICAgICB0aGlzLl9jb25zb2xlcy5mb3JFYWNoKChjKSA9PiBjLmluZm8ocGFyYW1zLm1lc3NhZ2UpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNhc2UgTWVzc2FnZVR5cGUuTG9nOiB7XG4gICAgICAgIHRoaXMuX2NvbnNvbGVzLmZvckVhY2goKGMpID0+IGMubG9nKHBhcmFtcy5tZXNzYWdlKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
\No newline at end of file