typescript-language-server 1.2.0 → 2.0.1
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/CHANGELOG.md +26 -0
- package/README.md +28 -2
- package/lib/cli.js +6 -6
- package/lib/cli.js.map +1 -1
- package/lib/completion.d.ts +1 -2
- package/lib/completion.d.ts.map +1 -1
- package/lib/completion.js +38 -26
- package/lib/completion.js.map +1 -1
- package/lib/configuration-manager.js +1 -1
- package/lib/configuration-manager.js.map +1 -1
- package/lib/diagnostic-queue.d.ts +1 -1
- package/lib/diagnostic-queue.d.ts.map +1 -1
- package/lib/lsp-connection.d.ts +5 -5
- package/lib/lsp-connection.d.ts.map +1 -1
- package/lib/lsp-connection.js +2 -3
- package/lib/lsp-connection.js.map +1 -1
- package/lib/lsp-server.d.ts +5 -6
- package/lib/lsp-server.d.ts.map +1 -1
- package/lib/lsp-server.js +16 -31
- package/lib/lsp-server.js.map +1 -1
- package/lib/lsp-server.spec.js +319 -96
- package/lib/lsp-server.spec.js.map +1 -1
- package/lib/test-utils.d.ts +3 -1
- package/lib/test-utils.d.ts.map +1 -1
- package/lib/test-utils.js +19 -8
- package/lib/test-utils.js.map +1 -1
- package/lib/ts-protocol.d.ts +27 -7
- package/lib/ts-protocol.d.ts.map +1 -1
- package/lib/ts-protocol.js +7 -1
- package/lib/ts-protocol.js.map +1 -1
- package/lib/tsServer/cancellation.d.ts +7 -4
- package/lib/tsServer/cancellation.d.ts.map +1 -1
- package/lib/tsServer/cancellation.js +7 -8
- package/lib/tsServer/cancellation.js.map +1 -1
- package/lib/tsServer/logDirectoryProvider.d.ts +13 -0
- package/lib/tsServer/logDirectoryProvider.d.ts.map +1 -0
- package/lib/tsServer/logDirectoryProvider.js +49 -0
- package/lib/tsServer/logDirectoryProvider.js.map +1 -0
- package/lib/tsServer/server.d.ts +3 -1
- package/lib/tsServer/server.d.ts.map +1 -1
- package/lib/tsServer/server.js +8 -7
- package/lib/tsServer/server.js.map +1 -1
- package/lib/tsServer/serverProcess.js +1 -2
- package/lib/tsServer/serverProcess.js.map +1 -1
- package/lib/tsServer/spawner.d.ts +7 -2
- package/lib/tsServer/spawner.d.ts.map +1 -1
- package/lib/tsServer/spawner.js +28 -20
- package/lib/tsServer/spawner.js.map +1 -1
- package/lib/tsServer/tracer.d.ts +26 -0
- package/lib/tsServer/tracer.d.ts.map +1 -0
- package/lib/tsServer/tracer.js +80 -0
- package/lib/tsServer/tracer.js.map +1 -0
- package/lib/tsServer/versionProvider.d.ts +7 -7
- package/lib/tsServer/versionProvider.d.ts.map +1 -1
- package/lib/tsServer/versionProvider.js +26 -20
- package/lib/tsServer/versionProvider.js.map +1 -1
- package/lib/tsp-client.d.ts +8 -3
- package/lib/tsp-client.d.ts.map +1 -1
- package/lib/tsp-client.js +4 -5
- package/lib/tsp-client.js.map +1 -1
- package/lib/tsp-client.spec.js +15 -5
- package/lib/tsp-client.spec.js.map +1 -1
- package/lib/utils/configuration.d.ts +17 -8
- package/lib/utils/configuration.d.ts.map +1 -1
- package/lib/utils/configuration.js +43 -1
- package/lib/utils/configuration.js.map +1 -1
- package/lib/utils/logger.d.ts +65 -0
- package/lib/utils/logger.d.ts.map +1 -0
- package/lib/utils/logger.js +189 -0
- package/lib/utils/logger.js.map +1 -0
- package/package.json +14 -14
- package/lib/logger.d.ts +0 -48
- package/lib/logger.d.ts.map +0 -1
- package/lib/logger.js +0 -106
- package/lib/logger.js.map +0 -1
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/*
|
|
6
|
+
* Copyright (C) 2017, 2018 TypeFox and others.
|
|
7
|
+
*
|
|
8
|
+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
|
|
9
|
+
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*/
|
|
11
|
+
/* eslint-disable @typescript-eslint/no-unnecessary-qualifier */
|
|
12
|
+
import lsp from 'vscode-languageserver';
|
|
13
|
+
export var LogLevel;
|
|
14
|
+
(function (LogLevel) {
|
|
15
|
+
LogLevel[LogLevel["Error"] = 0] = "Error";
|
|
16
|
+
LogLevel[LogLevel["Warning"] = 1] = "Warning";
|
|
17
|
+
LogLevel[LogLevel["Info"] = 2] = "Info";
|
|
18
|
+
LogLevel[LogLevel["Log"] = 3] = "Log";
|
|
19
|
+
})(LogLevel = LogLevel || (LogLevel = {}));
|
|
20
|
+
(function (LogLevel) {
|
|
21
|
+
function fromString(value) {
|
|
22
|
+
switch (value?.toLowerCase()) {
|
|
23
|
+
case 'log':
|
|
24
|
+
return LogLevel.Log;
|
|
25
|
+
case 'info':
|
|
26
|
+
return LogLevel.Info;
|
|
27
|
+
case 'warning':
|
|
28
|
+
return LogLevel.Warning;
|
|
29
|
+
case 'error':
|
|
30
|
+
default:
|
|
31
|
+
return LogLevel.Error;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
LogLevel.fromString = fromString;
|
|
35
|
+
function toString(level) {
|
|
36
|
+
switch (level) {
|
|
37
|
+
case LogLevel.Error:
|
|
38
|
+
return 'error';
|
|
39
|
+
case LogLevel.Warning:
|
|
40
|
+
return 'warning';
|
|
41
|
+
case LogLevel.Info:
|
|
42
|
+
return 'info';
|
|
43
|
+
case LogLevel.Log:
|
|
44
|
+
return 'log';
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
LogLevel.toString = toString;
|
|
48
|
+
})(LogLevel = LogLevel || (LogLevel = {}));
|
|
49
|
+
export class LspClientLogger {
|
|
50
|
+
constructor(client, level) {
|
|
51
|
+
this.client = client;
|
|
52
|
+
this.level = level;
|
|
53
|
+
}
|
|
54
|
+
sendMessage(severity, messageObjects, options) {
|
|
55
|
+
if (this.level >= severity || options?.overrideLevel) {
|
|
56
|
+
const message = messageObjects.map(p => {
|
|
57
|
+
if (typeof p === 'object') {
|
|
58
|
+
return JSON.stringify(p, null, 2);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return p;
|
|
62
|
+
}
|
|
63
|
+
}).join(' ');
|
|
64
|
+
this.client.logMessage({
|
|
65
|
+
type: severity,
|
|
66
|
+
message: message,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
logLevelToLspMessageType(level) {
|
|
71
|
+
switch (level) {
|
|
72
|
+
case LogLevel.Log:
|
|
73
|
+
return lsp.MessageType.Log;
|
|
74
|
+
case LogLevel.Info:
|
|
75
|
+
return lsp.MessageType.Info;
|
|
76
|
+
case LogLevel.Warning:
|
|
77
|
+
return lsp.MessageType.Warning;
|
|
78
|
+
case LogLevel.Error:
|
|
79
|
+
return lsp.MessageType.Error;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
error(...args) {
|
|
83
|
+
this.sendMessage(lsp.MessageType.Error, args);
|
|
84
|
+
}
|
|
85
|
+
warn(...args) {
|
|
86
|
+
this.sendMessage(lsp.MessageType.Warning, args);
|
|
87
|
+
}
|
|
88
|
+
info(...args) {
|
|
89
|
+
this.sendMessage(lsp.MessageType.Info, args);
|
|
90
|
+
}
|
|
91
|
+
log(...args) {
|
|
92
|
+
this.sendMessage(lsp.MessageType.Log, args);
|
|
93
|
+
}
|
|
94
|
+
logIgnoringVerbosity(level, ...args) {
|
|
95
|
+
this.sendMessage(this.logLevelToLspMessageType(level), args, { overrideLevel: true });
|
|
96
|
+
}
|
|
97
|
+
trace(level, message, data) {
|
|
98
|
+
this.logIgnoringVerbosity(LogLevel.Log, `[${level} - ${now()}] ${message}`);
|
|
99
|
+
if (data) {
|
|
100
|
+
this.logIgnoringVerbosity(LogLevel.Log, data2String(data));
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export class ConsoleLogger {
|
|
105
|
+
constructor(level = LogLevel.Error) {
|
|
106
|
+
this.level = level;
|
|
107
|
+
}
|
|
108
|
+
print(level, args, options) {
|
|
109
|
+
if (this.level >= level || options?.overrideLevel) {
|
|
110
|
+
// All messages logged to stderr as stdout is reserved for LSP communication.
|
|
111
|
+
console.error(`[${LogLevel.toString(level)}]`, ...this.toStrings(...args));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
toStrings(...args) {
|
|
115
|
+
return args.map(a => {
|
|
116
|
+
if (typeof a === 'string') {
|
|
117
|
+
return a;
|
|
118
|
+
}
|
|
119
|
+
return JSON.stringify(a, null, 2);
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
error(...args) {
|
|
123
|
+
this.print(LogLevel.Error, args);
|
|
124
|
+
}
|
|
125
|
+
warn(...args) {
|
|
126
|
+
this.print(LogLevel.Warning, args);
|
|
127
|
+
}
|
|
128
|
+
info(...args) {
|
|
129
|
+
this.print(LogLevel.Info, args);
|
|
130
|
+
}
|
|
131
|
+
log(...args) {
|
|
132
|
+
this.print(LogLevel.Log, args);
|
|
133
|
+
}
|
|
134
|
+
logIgnoringVerbosity(level, ...args) {
|
|
135
|
+
this.print(level, args, { overrideLevel: true });
|
|
136
|
+
}
|
|
137
|
+
trace(level, message, data) {
|
|
138
|
+
this.logIgnoringVerbosity(LogLevel.Log, `[${level} - ${now()}] ${message}`);
|
|
139
|
+
if (data) {
|
|
140
|
+
this.logIgnoringVerbosity(LogLevel.Log, data2String(data));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
export class PrefixingLogger {
|
|
145
|
+
constructor(logger, prefix) {
|
|
146
|
+
this.logger = logger;
|
|
147
|
+
this.prefix = prefix;
|
|
148
|
+
}
|
|
149
|
+
error(...args) {
|
|
150
|
+
this.logger.error(this.prefix, ...args);
|
|
151
|
+
}
|
|
152
|
+
warn(...args) {
|
|
153
|
+
this.logger.warn(this.prefix, ...args);
|
|
154
|
+
}
|
|
155
|
+
info(...args) {
|
|
156
|
+
this.logger.info(this.prefix, ...args);
|
|
157
|
+
}
|
|
158
|
+
log(...args) {
|
|
159
|
+
this.logger.log(this.prefix, ...args);
|
|
160
|
+
}
|
|
161
|
+
logIgnoringVerbosity(level, ...args) {
|
|
162
|
+
this.logger.logIgnoringVerbosity(level, this.prefix, ...args);
|
|
163
|
+
}
|
|
164
|
+
trace(level, message, data) {
|
|
165
|
+
this.logIgnoringVerbosity(LogLevel.Log, this.prefix, `[${level} - ${now()}] ${message}`);
|
|
166
|
+
if (data) {
|
|
167
|
+
this.logIgnoringVerbosity(LogLevel.Log, this.prefix, data2String(data));
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function now() {
|
|
172
|
+
const now = new Date();
|
|
173
|
+
return padLeft(`${now.getUTCHours()}`, 2, '0')
|
|
174
|
+
+ ':' + padLeft(`${now.getMinutes()}`, 2, '0')
|
|
175
|
+
+ ':' + padLeft(`${now.getUTCSeconds()}`, 2, '0') + `.${now.getMilliseconds()}`;
|
|
176
|
+
}
|
|
177
|
+
function padLeft(s, n, pad = ' ') {
|
|
178
|
+
return pad.repeat(Math.max(0, n - s.length)) + s;
|
|
179
|
+
}
|
|
180
|
+
function data2String(data) {
|
|
181
|
+
if (data instanceof Error) {
|
|
182
|
+
return data.stack || data.message;
|
|
183
|
+
}
|
|
184
|
+
if (data.success === false && data.message) {
|
|
185
|
+
return data.message;
|
|
186
|
+
}
|
|
187
|
+
return data.toString();
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typescript-language-server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"description": "Language Server Protocol (LSP) implementation for TypeScript using tsserver",
|
|
5
5
|
"author": "TypeFox and others",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"clean": "rimraf lib *.tsbuildinfo",
|
|
23
|
-
"test": "cross-env CONSOLE_LOG_LEVEL=
|
|
24
|
-
"test:watch": "cross-env CONSOLE_LOG_LEVEL=
|
|
25
|
-
"test:compiled": "cross-env CONSOLE_LOG_LEVEL=
|
|
23
|
+
"test": "cross-env CONSOLE_LOG_LEVEL=warning TS_NODE_PROJECT=./tsconfig.json mocha",
|
|
24
|
+
"test:watch": "cross-env CONSOLE_LOG_LEVEL=warning TS_NODE_PROJECT=./tsconfig.json mocha --watch",
|
|
25
|
+
"test:compiled": "cross-env CONSOLE_LOG_LEVEL=warning mocha \"./lib/**/*.spec.js\"",
|
|
26
26
|
"lint": "eslint --ext \".js,.ts\" src",
|
|
27
27
|
"fix": "eslint --ext \".js,.ts\" --fix src",
|
|
28
28
|
"build": "concurrently -n compile,lint -c blue,green \"yarn compile\" \"yarn lint\"",
|
|
@@ -41,38 +41,38 @@
|
|
|
41
41
|
}
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"commander": "^9.4.
|
|
44
|
+
"commander": "^9.4.1",
|
|
45
45
|
"deepmerge": "^4.2.2",
|
|
46
46
|
"fs-extra": "^10.1.0",
|
|
47
47
|
"p-debounce": "^4.0.0",
|
|
48
48
|
"pkg-up": "^4.0.0",
|
|
49
|
-
"semver": "^7.3.
|
|
49
|
+
"semver": "^7.3.8",
|
|
50
50
|
"tempy": "^3.0.0",
|
|
51
51
|
"vscode-languageserver": "^8.0.2",
|
|
52
52
|
"vscode-languageserver-protocol": "^3.17.2",
|
|
53
53
|
"vscode-languageserver-textdocument": "1.0.7",
|
|
54
|
-
"vscode-uri": "^3.0.
|
|
54
|
+
"vscode-uri": "^3.0.6",
|
|
55
55
|
"which": "^2.0.2"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@types/chai": "^4.3.3",
|
|
59
59
|
"@types/deepmerge": "^2.2.0",
|
|
60
60
|
"@types/fs-extra": "^9.0.13",
|
|
61
|
-
"@types/mocha": "^
|
|
62
|
-
"@types/node": "^16.11.
|
|
61
|
+
"@types/mocha": "^10.0.0",
|
|
62
|
+
"@types/node": "^16.11.64",
|
|
63
63
|
"@types/semver": "^7.3.12",
|
|
64
64
|
"@types/which": "^2.0.1",
|
|
65
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
66
|
-
"@typescript-eslint/parser": "^5.
|
|
65
|
+
"@typescript-eslint/eslint-plugin": "^5.39.0",
|
|
66
|
+
"@typescript-eslint/parser": "^5.39.0",
|
|
67
67
|
"chai": "^4.3.6",
|
|
68
|
-
"concurrently": "^7.
|
|
68
|
+
"concurrently": "^7.4.0",
|
|
69
69
|
"cross-env": "^7.0.3",
|
|
70
|
-
"eslint": "^8.
|
|
70
|
+
"eslint": "^8.24.0",
|
|
71
71
|
"husky": "4.x",
|
|
72
72
|
"mocha": "^10.0.0",
|
|
73
73
|
"rimraf": "^3.0.2",
|
|
74
74
|
"source-map-support": "^0.5.21",
|
|
75
75
|
"ts-node": "^10.9.1",
|
|
76
|
-
"typescript": "^4.8.
|
|
76
|
+
"typescript": "^4.8.4"
|
|
77
77
|
}
|
|
78
78
|
}
|
package/lib/logger.d.ts
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { LspClient } from './lsp-client.js';
|
|
2
|
-
import * as lsp from 'vscode-languageserver';
|
|
3
|
-
/**
|
|
4
|
-
* the logger type
|
|
5
|
-
*/
|
|
6
|
-
export interface Logger {
|
|
7
|
-
error(...arg: any[]): void;
|
|
8
|
-
warn(...arg: any[]): void;
|
|
9
|
-
info(...arg: any[]): void;
|
|
10
|
-
log(...arg: any[]): void;
|
|
11
|
-
}
|
|
12
|
-
export declare class LspClientLogger implements Logger {
|
|
13
|
-
protected client: LspClient;
|
|
14
|
-
protected level: lsp.MessageType;
|
|
15
|
-
constructor(client: LspClient, level: lsp.MessageType);
|
|
16
|
-
protected sendMessage(severity: lsp.MessageType, messageObjects: any[]): void;
|
|
17
|
-
error(...arg: any[]): void;
|
|
18
|
-
warn(...arg: any[]): void;
|
|
19
|
-
info(...arg: any[]): void;
|
|
20
|
-
log(...arg: any[]): void;
|
|
21
|
-
}
|
|
22
|
-
export declare enum ConsoleLogLevel {
|
|
23
|
-
error = "error",
|
|
24
|
-
warn = "warn",
|
|
25
|
-
info = "warn",
|
|
26
|
-
verbose = "verbose"
|
|
27
|
-
}
|
|
28
|
-
export declare class ConsoleLogger implements Logger {
|
|
29
|
-
private level;
|
|
30
|
-
constructor(level?: lsp.MessageType);
|
|
31
|
-
static toMessageTypeLevel(type?: string): lsp.MessageType;
|
|
32
|
-
private print;
|
|
33
|
-
private toStrings;
|
|
34
|
-
error(...arg: any[]): void;
|
|
35
|
-
warn(...arg: any[]): void;
|
|
36
|
-
info(...arg: any[]): void;
|
|
37
|
-
log(...arg: any[]): void;
|
|
38
|
-
}
|
|
39
|
-
export declare class PrefixingLogger implements Logger {
|
|
40
|
-
private logger;
|
|
41
|
-
private prefix;
|
|
42
|
-
constructor(logger: Logger, prefix: string);
|
|
43
|
-
error(...arg: any[]): void;
|
|
44
|
-
warn(...arg: any[]): void;
|
|
45
|
-
info(...arg: any[]): void;
|
|
46
|
-
log(...arg: any[]): void;
|
|
47
|
-
}
|
|
48
|
-
//# sourceMappingURL=logger.d.ts.map
|
package/lib/logger.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,uBAAuB,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,MAAM;IACnB,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC3B,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1B,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,eAAgB,YAAW,MAAM;IAC9B,SAAS,CAAC,MAAM,EAAE,SAAS;IAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,WAAW;gBAAnD,MAAM,EAAE,SAAS,EAAY,KAAK,EAAE,GAAG,CAAC,WAAW;IAEzE,SAAS,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,EAAE,GAAG,IAAI;IAiB7E,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAIzB,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAIzB,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAG3B;AAED,oBAAY,eAAe;IACvB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;CACtB;AAED,qBAAa,aAAc,YAAW,MAAM;IAC5B,OAAO,CAAC,KAAK;gBAAL,KAAK,GAAE,GAAG,CAAC,WAAkC;IAEjE,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,WAAW;IAczD,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,SAAS;IAIjB,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAG1B,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAGzB,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAGzB,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAG3B;AAED,qBAAa,eAAgB,YAAW,MAAM;IAC9B,OAAO,CAAC,MAAM;IAAU,OAAO,CAAC,MAAM;gBAA9B,MAAM,EAAE,MAAM,EAAU,MAAM,EAAE,MAAM;IAE1D,KAAK,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAIzB,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;IAIzB,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;CAG3B"}
|
package/lib/logger.js
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (C) 2017, 2018 TypeFox and others.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
|
|
5
|
-
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
-
*/
|
|
7
|
-
import * as lsp from 'vscode-languageserver';
|
|
8
|
-
export class LspClientLogger {
|
|
9
|
-
constructor(client, level) {
|
|
10
|
-
this.client = client;
|
|
11
|
-
this.level = level;
|
|
12
|
-
}
|
|
13
|
-
sendMessage(severity, messageObjects) {
|
|
14
|
-
if (this.level >= severity) {
|
|
15
|
-
const message = messageObjects.map(p => {
|
|
16
|
-
if (typeof p === 'object') {
|
|
17
|
-
return JSON.stringify(p, null, 2);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return p;
|
|
21
|
-
}
|
|
22
|
-
}).join(' ');
|
|
23
|
-
this.client.logMessage({
|
|
24
|
-
type: severity,
|
|
25
|
-
message: message,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
error(...arg) {
|
|
30
|
-
this.sendMessage(lsp.MessageType.Error, arg);
|
|
31
|
-
}
|
|
32
|
-
warn(...arg) {
|
|
33
|
-
this.sendMessage(lsp.MessageType.Warning, arg);
|
|
34
|
-
}
|
|
35
|
-
info(...arg) {
|
|
36
|
-
this.sendMessage(lsp.MessageType.Info, arg);
|
|
37
|
-
}
|
|
38
|
-
log(...arg) {
|
|
39
|
-
this.sendMessage(lsp.MessageType.Log, arg);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export var ConsoleLogLevel;
|
|
43
|
-
(function (ConsoleLogLevel) {
|
|
44
|
-
ConsoleLogLevel["error"] = "error";
|
|
45
|
-
ConsoleLogLevel["warn"] = "warn";
|
|
46
|
-
ConsoleLogLevel["info"] = "warn";
|
|
47
|
-
ConsoleLogLevel["verbose"] = "verbose";
|
|
48
|
-
})(ConsoleLogLevel = ConsoleLogLevel || (ConsoleLogLevel = {}));
|
|
49
|
-
export class ConsoleLogger {
|
|
50
|
-
constructor(level = lsp.MessageType.Info) {
|
|
51
|
-
this.level = level;
|
|
52
|
-
}
|
|
53
|
-
static toMessageTypeLevel(type) {
|
|
54
|
-
switch (type) {
|
|
55
|
-
case 'error':
|
|
56
|
-
return lsp.MessageType.Error;
|
|
57
|
-
case 'warn':
|
|
58
|
-
return lsp.MessageType.Warning;
|
|
59
|
-
case 'log':
|
|
60
|
-
return lsp.MessageType.Log;
|
|
61
|
-
case 'info':
|
|
62
|
-
default:
|
|
63
|
-
return lsp.MessageType.Info;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
print(type, level, ...arg) {
|
|
67
|
-
if (this.level >= level) {
|
|
68
|
-
// eslint-disable-next-line no-console
|
|
69
|
-
console[type](...this.toStrings(arg));
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
toStrings(...arg) {
|
|
73
|
-
return arg.map(a => JSON.stringify(a, null, 2));
|
|
74
|
-
}
|
|
75
|
-
error(...arg) {
|
|
76
|
-
this.print('error', lsp.MessageType.Error, arg);
|
|
77
|
-
}
|
|
78
|
-
warn(...arg) {
|
|
79
|
-
this.print('error', lsp.MessageType.Warning, arg);
|
|
80
|
-
}
|
|
81
|
-
info(...arg) {
|
|
82
|
-
this.print('error', lsp.MessageType.Info, arg);
|
|
83
|
-
}
|
|
84
|
-
log(...arg) {
|
|
85
|
-
this.print('error', lsp.MessageType.Log, arg);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
export class PrefixingLogger {
|
|
89
|
-
constructor(logger, prefix) {
|
|
90
|
-
this.logger = logger;
|
|
91
|
-
this.prefix = prefix;
|
|
92
|
-
}
|
|
93
|
-
error(...arg) {
|
|
94
|
-
this.logger.error(this.prefix, ...arg);
|
|
95
|
-
}
|
|
96
|
-
warn(...arg) {
|
|
97
|
-
this.logger.warn(this.prefix, ...arg);
|
|
98
|
-
}
|
|
99
|
-
info(...arg) {
|
|
100
|
-
this.logger.info(this.prefix, ...arg);
|
|
101
|
-
}
|
|
102
|
-
log(...arg) {
|
|
103
|
-
this.logger.log(this.prefix, ...arg);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=logger.js.map
|
package/lib/logger.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"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"}
|