@lewin671/lsp-client 0.1.0
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/LICENSE +21 -0
- package/README.md +64 -0
- package/lib/common/Feature.d.ts +192 -0
- package/lib/common/Feature.js +159 -0
- package/lib/common/Feature.js.map +1 -0
- package/lib/common/LanguageClient.d.ts +230 -0
- package/lib/common/LanguageClient.js +512 -0
- package/lib/common/LanguageClient.js.map +1 -0
- package/lib/common/features/CompletionFeature.d.ts +23 -0
- package/lib/common/features/CompletionFeature.js +101 -0
- package/lib/common/features/CompletionFeature.js.map +1 -0
- package/lib/common/features/DefinitionFeature.d.ts +23 -0
- package/lib/common/features/DefinitionFeature.js +49 -0
- package/lib/common/features/DefinitionFeature.js.map +1 -0
- package/lib/common/features/DiagnosticFeature.d.ts +15 -0
- package/lib/common/features/DiagnosticFeature.js +39 -0
- package/lib/common/features/DiagnosticFeature.js.map +1 -0
- package/lib/common/features/DocumentSymbolFeature.d.ts +23 -0
- package/lib/common/features/DocumentSymbolFeature.js +87 -0
- package/lib/common/features/DocumentSymbolFeature.js.map +1 -0
- package/lib/common/features/FormattingFeature.d.ts +32 -0
- package/lib/common/features/FormattingFeature.js +72 -0
- package/lib/common/features/FormattingFeature.js.map +1 -0
- package/lib/common/features/HoverFeature.d.ts +23 -0
- package/lib/common/features/HoverFeature.js +49 -0
- package/lib/common/features/HoverFeature.js.map +1 -0
- package/lib/common/features/ReferencesFeature.d.ts +23 -0
- package/lib/common/features/ReferencesFeature.js +48 -0
- package/lib/common/features/ReferencesFeature.js.map +1 -0
- package/lib/common/features/RenameFeature.d.ts +37 -0
- package/lib/common/features/RenameFeature.js +72 -0
- package/lib/common/features/RenameFeature.js.map +1 -0
- package/lib/common/features/index.d.ts +8 -0
- package/lib/common/features/index.js +21 -0
- package/lib/common/features/index.js.map +1 -0
- package/lib/common/utils/index.d.ts +2 -0
- package/lib/common/utils/index.js +19 -0
- package/lib/common/utils/index.js.map +1 -0
- package/lib/common/utils/is.d.ts +15 -0
- package/lib/common/utils/is.js +56 -0
- package/lib/common/utils/is.js.map +1 -0
- package/lib/common/utils/uuid.d.ts +17 -0
- package/lib/common/utils/uuid.js +87 -0
- package/lib/common/utils/uuid.js.map +1 -0
- package/lib/demo/custom-lsp/client.d.ts +1 -0
- package/lib/demo/custom-lsp/client.js +86 -0
- package/lib/demo/custom-lsp/client.js.map +1 -0
- package/lib/demo/custom-lsp/server.d.ts +1 -0
- package/lib/demo/custom-lsp/server.js +64 -0
- package/lib/demo/custom-lsp/server.js.map +1 -0
- package/lib/demo/go-demo/client.d.ts +14 -0
- package/lib/demo/go-demo/client.js +697 -0
- package/lib/demo/go-demo/client.js.map +1 -0
- package/lib/demo/typescript-demo/client.d.ts +14 -0
- package/lib/demo/typescript-demo/client.js +680 -0
- package/lib/demo/typescript-demo/client.js.map +1 -0
- package/lib/demo/typescript-demo/sample-project/src/index.d.ts +9 -0
- package/lib/demo/typescript-demo/sample-project/src/index.js +65 -0
- package/lib/demo/typescript-demo/sample-project/src/index.js.map +1 -0
- package/lib/demo/typescript-demo/sample-project/src/math.d.ts +38 -0
- package/lib/demo/typescript-demo/sample-project/src/math.js +63 -0
- package/lib/demo/typescript-demo/sample-project/src/math.js.map +1 -0
- package/lib/demo/typescript-demo/sample-project/src/models/person.d.ts +41 -0
- package/lib/demo/typescript-demo/sample-project/src/models/person.js +53 -0
- package/lib/demo/typescript-demo/sample-project/src/models/person.js.map +1 -0
- package/lib/demo/typescript-demo/sample-project/src/services/calculator.d.ts +39 -0
- package/lib/demo/typescript-demo/sample-project/src/services/calculator.js +69 -0
- package/lib/demo/typescript-demo/sample-project/src/services/calculator.js.map +1 -0
- package/lib/demo/typescript-demo/sample-project/src/services/user-service.d.ts +40 -0
- package/lib/demo/typescript-demo/sample-project/src/services/user-service.js +88 -0
- package/lib/demo/typescript-demo/sample-project/src/services/user-service.js.map +1 -0
- package/lib/index.d.ts +8 -0
- package/lib/index.js +32 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces/IHost.d.ts +19 -0
- package/lib/interfaces/IHost.js +3 -0
- package/lib/interfaces/IHost.js.map +1 -0
- package/lib/transports/ITransport.d.ts +8 -0
- package/lib/transports/ITransport.js +3 -0
- package/lib/transports/ITransport.js.map +1 -0
- package/lib/transports/StdioTransport.d.ts +13 -0
- package/lib/transports/StdioTransport.js +27 -0
- package/lib/transports/StdioTransport.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RenameFeature = exports.FormattingFeature = exports.DocumentSymbolFeature = exports.ReferencesFeature = exports.DefinitionFeature = exports.HoverFeature = exports.DiagnosticFeature = exports.CompletionFeature = void 0;
|
|
4
|
+
// Feature exports
|
|
5
|
+
var CompletionFeature_1 = require("./CompletionFeature");
|
|
6
|
+
Object.defineProperty(exports, "CompletionFeature", { enumerable: true, get: function () { return CompletionFeature_1.CompletionFeature; } });
|
|
7
|
+
var DiagnosticFeature_1 = require("./DiagnosticFeature");
|
|
8
|
+
Object.defineProperty(exports, "DiagnosticFeature", { enumerable: true, get: function () { return DiagnosticFeature_1.DiagnosticFeature; } });
|
|
9
|
+
var HoverFeature_1 = require("./HoverFeature");
|
|
10
|
+
Object.defineProperty(exports, "HoverFeature", { enumerable: true, get: function () { return HoverFeature_1.HoverFeature; } });
|
|
11
|
+
var DefinitionFeature_1 = require("./DefinitionFeature");
|
|
12
|
+
Object.defineProperty(exports, "DefinitionFeature", { enumerable: true, get: function () { return DefinitionFeature_1.DefinitionFeature; } });
|
|
13
|
+
var ReferencesFeature_1 = require("./ReferencesFeature");
|
|
14
|
+
Object.defineProperty(exports, "ReferencesFeature", { enumerable: true, get: function () { return ReferencesFeature_1.ReferencesFeature; } });
|
|
15
|
+
var DocumentSymbolFeature_1 = require("./DocumentSymbolFeature");
|
|
16
|
+
Object.defineProperty(exports, "DocumentSymbolFeature", { enumerable: true, get: function () { return DocumentSymbolFeature_1.DocumentSymbolFeature; } });
|
|
17
|
+
var FormattingFeature_1 = require("./FormattingFeature");
|
|
18
|
+
Object.defineProperty(exports, "FormattingFeature", { enumerable: true, get: function () { return FormattingFeature_1.FormattingFeature; } });
|
|
19
|
+
var RenameFeature_1 = require("./RenameFeature");
|
|
20
|
+
Object.defineProperty(exports, "RenameFeature", { enumerable: true, get: function () { return RenameFeature_1.RenameFeature; } });
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/features/index.ts"],"names":[],"mappings":";;;AAAA,kBAAkB;AAClB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,iEAAgE;AAAvD,8HAAA,qBAAqB,OAAA;AAC9B,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,iDAAgD;AAAvC,8GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./is"), exports);
|
|
18
|
+
__exportStar(require("./uuid"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/common/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uCAAqB;AACrB,yCAAuB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type checking utilities (mirrored from vscode-languageserver-node)
|
|
3
|
+
*/
|
|
4
|
+
export declare function boolean(value: any): value is boolean;
|
|
5
|
+
export declare function string(value: any): value is string;
|
|
6
|
+
export declare function number(value: any): value is number;
|
|
7
|
+
export declare function error(value: any): value is Error;
|
|
8
|
+
export declare function func(value: any): value is Function;
|
|
9
|
+
export declare function array<T>(value: any): value is T[];
|
|
10
|
+
export declare function stringArray(value: any): value is string[];
|
|
11
|
+
export declare function typedArray<T>(value: any, check: (value: any) => boolean): value is T[];
|
|
12
|
+
export declare function thenable<T>(value: any): value is Thenable<T>;
|
|
13
|
+
export declare function asPromise<T>(value: Promise<T>): Promise<T>;
|
|
14
|
+
export declare function asPromise<T>(value: Thenable<T>): Promise<T>;
|
|
15
|
+
export declare function asPromise<T>(value: T): Promise<T>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Type checking utilities (mirrored from vscode-languageserver-node)
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.boolean = boolean;
|
|
7
|
+
exports.string = string;
|
|
8
|
+
exports.number = number;
|
|
9
|
+
exports.error = error;
|
|
10
|
+
exports.func = func;
|
|
11
|
+
exports.array = array;
|
|
12
|
+
exports.stringArray = stringArray;
|
|
13
|
+
exports.typedArray = typedArray;
|
|
14
|
+
exports.thenable = thenable;
|
|
15
|
+
exports.asPromise = asPromise;
|
|
16
|
+
function boolean(value) {
|
|
17
|
+
return value === true || value === false;
|
|
18
|
+
}
|
|
19
|
+
function string(value) {
|
|
20
|
+
return typeof value === 'string' || value instanceof String;
|
|
21
|
+
}
|
|
22
|
+
function number(value) {
|
|
23
|
+
return typeof value === 'number' || value instanceof Number;
|
|
24
|
+
}
|
|
25
|
+
function error(value) {
|
|
26
|
+
return value instanceof Error;
|
|
27
|
+
}
|
|
28
|
+
function func(value) {
|
|
29
|
+
return typeof value === 'function';
|
|
30
|
+
}
|
|
31
|
+
function array(value) {
|
|
32
|
+
return Array.isArray(value);
|
|
33
|
+
}
|
|
34
|
+
function stringArray(value) {
|
|
35
|
+
return array(value) && value.every(elem => string(elem));
|
|
36
|
+
}
|
|
37
|
+
function typedArray(value, check) {
|
|
38
|
+
return Array.isArray(value) && value.every(check);
|
|
39
|
+
}
|
|
40
|
+
function thenable(value) {
|
|
41
|
+
return value && func(value.then);
|
|
42
|
+
}
|
|
43
|
+
function asPromise(value) {
|
|
44
|
+
if (value instanceof Promise) {
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
else if (thenable(value)) {
|
|
48
|
+
return new Promise((resolve, reject) => {
|
|
49
|
+
value.then((resolved) => resolve(resolved), (error) => reject(error));
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
return Promise.resolve(value);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=is.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is.js","sourceRoot":"","sources":["../../../src/common/utils/is.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,0BAEC;AAED,wBAEC;AAED,wBAEC;AAED,sBAEC;AAED,oBAEC;AAED,sBAEC;AAED,kCAEC;AAED,gCAEC;AAED,4BAEC;AAKD,8BAUC;AAjDD,SAAgB,OAAO,CAAC,KAAU;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC;AAC7C,CAAC;AAED,SAAgB,MAAM,CAAC,KAAU;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,CAAC;AAChE,CAAC;AAED,SAAgB,MAAM,CAAC,KAAU;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM,CAAC;AAChE,CAAC;AAED,SAAgB,KAAK,CAAC,KAAU;IAC5B,OAAO,KAAK,YAAY,KAAK,CAAC;AAClC,CAAC;AAED,SAAgB,IAAI,CAAC,KAAU;IAC3B,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC;AACvC,CAAC;AAED,SAAgB,KAAK,CAAI,KAAU;IAC/B,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,WAAW,CAAC,KAAU;IAClC,OAAO,KAAK,CAAC,KAAK,CAAC,IAAY,KAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAgB,UAAU,CAAI,KAAU,EAAE,KAA8B;IACpE,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAY,KAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,QAAQ,CAAI,KAAU;IAClC,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAKD,SAAgB,SAAS,CAAC,KAAU;IAChC,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;SAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACP,CAAC;SAAM,CAAC;QACJ,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UUID generation utilities (mirrored from vscode-languageserver-node)
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Represents a UUID as defined by rfc4122.
|
|
6
|
+
*/
|
|
7
|
+
export interface UUID {
|
|
8
|
+
/**
|
|
9
|
+
* @returns the canonical representation in sets of hexadecimal numbers separated by dashes.
|
|
10
|
+
*/
|
|
11
|
+
asHex(): string;
|
|
12
|
+
equals(other: UUID): boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function v4(): UUID;
|
|
15
|
+
export declare function isUUID(value: string): boolean;
|
|
16
|
+
export declare function parse(value: string): UUID;
|
|
17
|
+
export declare function generateUuid(): string;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UUID generation utilities (mirrored from vscode-languageserver-node)
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.v4 = v4;
|
|
7
|
+
exports.isUUID = isUUID;
|
|
8
|
+
exports.parse = parse;
|
|
9
|
+
exports.generateUuid = generateUuid;
|
|
10
|
+
class ValueUUID {
|
|
11
|
+
constructor(_value) {
|
|
12
|
+
this._value = _value;
|
|
13
|
+
}
|
|
14
|
+
asHex() {
|
|
15
|
+
return this._value;
|
|
16
|
+
}
|
|
17
|
+
equals(other) {
|
|
18
|
+
return this.asHex() === other.asHex();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
class V4UUID extends ValueUUID {
|
|
22
|
+
static _oneOf(array) {
|
|
23
|
+
return array[Math.floor(array.length * Math.random())];
|
|
24
|
+
}
|
|
25
|
+
static _randomHex() {
|
|
26
|
+
return V4UUID._oneOf(V4UUID._chars);
|
|
27
|
+
}
|
|
28
|
+
constructor() {
|
|
29
|
+
super([
|
|
30
|
+
V4UUID._randomHex(),
|
|
31
|
+
V4UUID._randomHex(),
|
|
32
|
+
V4UUID._randomHex(),
|
|
33
|
+
V4UUID._randomHex(),
|
|
34
|
+
V4UUID._randomHex(),
|
|
35
|
+
V4UUID._randomHex(),
|
|
36
|
+
V4UUID._randomHex(),
|
|
37
|
+
V4UUID._randomHex(),
|
|
38
|
+
'-',
|
|
39
|
+
V4UUID._randomHex(),
|
|
40
|
+
V4UUID._randomHex(),
|
|
41
|
+
V4UUID._randomHex(),
|
|
42
|
+
V4UUID._randomHex(),
|
|
43
|
+
'-',
|
|
44
|
+
'4',
|
|
45
|
+
V4UUID._randomHex(),
|
|
46
|
+
V4UUID._randomHex(),
|
|
47
|
+
V4UUID._randomHex(),
|
|
48
|
+
'-',
|
|
49
|
+
V4UUID._oneOf(V4UUID._timeHighBits),
|
|
50
|
+
V4UUID._randomHex(),
|
|
51
|
+
V4UUID._randomHex(),
|
|
52
|
+
V4UUID._randomHex(),
|
|
53
|
+
'-',
|
|
54
|
+
V4UUID._randomHex(),
|
|
55
|
+
V4UUID._randomHex(),
|
|
56
|
+
V4UUID._randomHex(),
|
|
57
|
+
V4UUID._randomHex(),
|
|
58
|
+
V4UUID._randomHex(),
|
|
59
|
+
V4UUID._randomHex(),
|
|
60
|
+
V4UUID._randomHex(),
|
|
61
|
+
V4UUID._randomHex(),
|
|
62
|
+
V4UUID._randomHex(),
|
|
63
|
+
V4UUID._randomHex(),
|
|
64
|
+
V4UUID._randomHex(),
|
|
65
|
+
V4UUID._randomHex(),
|
|
66
|
+
].join(''));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
V4UUID._chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
|
|
70
|
+
V4UUID._timeHighBits = ['8', '9', 'a', 'b'];
|
|
71
|
+
function v4() {
|
|
72
|
+
return new V4UUID();
|
|
73
|
+
}
|
|
74
|
+
const _UUIDPattern = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
75
|
+
function isUUID(value) {
|
|
76
|
+
return _UUIDPattern.test(value);
|
|
77
|
+
}
|
|
78
|
+
function parse(value) {
|
|
79
|
+
if (!isUUID(value)) {
|
|
80
|
+
throw new Error('invalid uuid');
|
|
81
|
+
}
|
|
82
|
+
return new ValueUUID(value);
|
|
83
|
+
}
|
|
84
|
+
function generateUuid() {
|
|
85
|
+
return v4().asHex();
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=uuid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../../src/common/utils/uuid.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA+EH,gBAEC;AAID,wBAEC;AAED,sBAKC;AAED,oCAEC;AArFD,MAAM,SAAS;IACX,YAAmB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE9B,KAAK;QACR,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;IAEM,MAAM,CAAC,KAAW;QACrB,OAAO,IAAI,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;CACJ;AAED,MAAM,MAAO,SAAQ,SAAS;IAIlB,MAAM,CAAC,MAAM,CAAC,KAAe;QACjC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEO,MAAM,CAAC,UAAU;QACrB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;QACI,KAAK,CAAC;YACF,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,GAAG;YACH,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,GAAG;YACH,GAAG;YACH,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,GAAG;YACH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC;YACnC,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,GAAG;YACH,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;YACnB,MAAM,CAAC,UAAU,EAAE;SACtB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAChB,CAAC;;AAlDc,aAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1F,oBAAa,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAoDxD,SAAgB,EAAE;IACd,OAAO,IAAI,MAAM,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,YAAY,GAAG,iEAAiE,CAAC;AAEvF,SAAgB,MAAM,CAAC,KAAa;IAChC,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC;AAED,SAAgB,KAAK,CAAC,KAAa;IAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY;IACxB,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const path = require("path");
|
|
4
|
+
const LanguageClient_1 = require("../../common/LanguageClient");
|
|
5
|
+
const CompletionFeature_1 = require("../../common/features/CompletionFeature");
|
|
6
|
+
const DiagnosticFeature_1 = require("../../common/features/DiagnosticFeature");
|
|
7
|
+
const StdioTransport_1 = require("../../transports/StdioTransport");
|
|
8
|
+
class ConsoleWindow {
|
|
9
|
+
showMessage(type, message) {
|
|
10
|
+
console.log(`[Window] ${message}`);
|
|
11
|
+
}
|
|
12
|
+
async showMessageRequest(type, message, actions) {
|
|
13
|
+
console.log(`[Window Request] ${message}`);
|
|
14
|
+
if (actions) {
|
|
15
|
+
console.log(`[Window Request Actions] ${JSON.stringify(actions)}`);
|
|
16
|
+
}
|
|
17
|
+
return undefined;
|
|
18
|
+
}
|
|
19
|
+
logMessage(type, message) {
|
|
20
|
+
console.log(`[Log] ${message}`);
|
|
21
|
+
}
|
|
22
|
+
publishDiagnostics(uri, diagnostics) {
|
|
23
|
+
console.log(`[Diagnostics] ${uri}: ${JSON.stringify(diagnostics)}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
class SimpleWorkspace {
|
|
27
|
+
constructor() {
|
|
28
|
+
this.rootUri = null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
class SimpleConfiguration {
|
|
32
|
+
get(section) {
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
class ConsoleHost {
|
|
37
|
+
constructor() {
|
|
38
|
+
this.window = new ConsoleWindow();
|
|
39
|
+
this.workspace = new SimpleWorkspace();
|
|
40
|
+
this.configuration = new SimpleConfiguration();
|
|
41
|
+
}
|
|
42
|
+
dispose() { }
|
|
43
|
+
}
|
|
44
|
+
async function main() {
|
|
45
|
+
const serverPath = path.join(__dirname, 'server.js');
|
|
46
|
+
console.log(`Starting server at ${serverPath}`);
|
|
47
|
+
const transport = new StdioTransport_1.StdioTransport('node', [serverPath, '--stdio']);
|
|
48
|
+
const host = new ConsoleHost();
|
|
49
|
+
const client = new LanguageClient_1.LanguageClient(host, transport);
|
|
50
|
+
// Register features
|
|
51
|
+
const completionFeature = new CompletionFeature_1.CompletionFeature(client);
|
|
52
|
+
client.registerFeature(completionFeature);
|
|
53
|
+
const diagnosticFeature = new DiagnosticFeature_1.DiagnosticFeature(client);
|
|
54
|
+
client.registerFeature(diagnosticFeature);
|
|
55
|
+
try {
|
|
56
|
+
await client.start();
|
|
57
|
+
console.log('Client started successfully');
|
|
58
|
+
// Simulate opening a document
|
|
59
|
+
client.didOpen({
|
|
60
|
+
textDocument: {
|
|
61
|
+
uri: 'file:///test.txt',
|
|
62
|
+
languageId: 'plaintext',
|
|
63
|
+
version: 1,
|
|
64
|
+
text: 'Hello World'
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
// Request completion
|
|
68
|
+
console.log('Requesting completion...');
|
|
69
|
+
const items = await completionFeature.provideCompletion({
|
|
70
|
+
textDocument: { uri: 'file:///test.txt' },
|
|
71
|
+
position: { line: 0, character: 5 }
|
|
72
|
+
});
|
|
73
|
+
console.log('Completion items:', JSON.stringify(items, null, 2));
|
|
74
|
+
// Keep alive for a bit to receive messages
|
|
75
|
+
setTimeout(async () => {
|
|
76
|
+
await client.stop();
|
|
77
|
+
console.log('Client stopped');
|
|
78
|
+
}, 3000);
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
console.error('Client failed to start', e);
|
|
82
|
+
process.exit(1);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
main();
|
|
86
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/demo/custom-lsp/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const node_1 = require("vscode-languageserver/node");
|
|
4
|
+
// Create a connection for the server, using Node's IPC as a transport.
|
|
5
|
+
// Also include all preview / proposed LSP features.
|
|
6
|
+
const connection = (0, node_1.createConnection)(node_1.ProposedFeatures.all);
|
|
7
|
+
connection.onInitialize((params) => {
|
|
8
|
+
const result = {
|
|
9
|
+
capabilities: {
|
|
10
|
+
textDocumentSync: node_1.TextDocumentSyncKind.Incremental,
|
|
11
|
+
// Tell the client that this server supports code completion.
|
|
12
|
+
completionProvider: {
|
|
13
|
+
resolveProvider: true
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
return result;
|
|
18
|
+
});
|
|
19
|
+
connection.onInitialized(() => {
|
|
20
|
+
connection.window.showInformationMessage('Hello from LSP Server!');
|
|
21
|
+
connection.console.log('Server initialized!');
|
|
22
|
+
// Send a diagnostic
|
|
23
|
+
connection.sendDiagnostics({
|
|
24
|
+
uri: 'file:///test.txt',
|
|
25
|
+
diagnostics: [
|
|
26
|
+
{
|
|
27
|
+
range: {
|
|
28
|
+
start: { line: 0, character: 0 },
|
|
29
|
+
end: { line: 0, character: 5 }
|
|
30
|
+
},
|
|
31
|
+
message: 'This is a test diagnostic',
|
|
32
|
+
severity: 1,
|
|
33
|
+
source: 'LSP Demo Server'
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
connection.onCompletion((_textDocumentPosition) => {
|
|
39
|
+
return [
|
|
40
|
+
{
|
|
41
|
+
label: 'TypeScript',
|
|
42
|
+
kind: node_1.CompletionItemKind.Text,
|
|
43
|
+
data: 1
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
label: 'JavaScript',
|
|
47
|
+
kind: node_1.CompletionItemKind.Text,
|
|
48
|
+
data: 2
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
});
|
|
52
|
+
connection.onCompletionResolve((item) => {
|
|
53
|
+
if (item.data === 1) {
|
|
54
|
+
item.detail = 'TypeScript details';
|
|
55
|
+
item.documentation = 'TypeScript documentation';
|
|
56
|
+
}
|
|
57
|
+
else if (item.data === 2) {
|
|
58
|
+
item.detail = 'JavaScript details';
|
|
59
|
+
item.documentation = 'JavaScript documentation';
|
|
60
|
+
}
|
|
61
|
+
return item;
|
|
62
|
+
});
|
|
63
|
+
connection.listen();
|
|
64
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/demo/custom-lsp/server.ts"],"names":[],"mappings":";;AAAA,qDAWoC;AAKpC,uEAAuE;AACvE,oDAAoD;AACpD,MAAM,UAAU,GAAG,IAAA,uBAAgB,EAAC,uBAAgB,CAAC,GAAG,CAAC,CAAC;AAE1D,UAAU,CAAC,YAAY,CAAC,CAAC,MAAwB,EAAE,EAAE;IACjD,MAAM,MAAM,GAAqB;QAC7B,YAAY,EAAE;YACV,gBAAgB,EAAE,2BAAoB,CAAC,WAAW;YAClD,6DAA6D;YAC7D,kBAAkB,EAAE;gBAChB,eAAe,EAAE,IAAI;aACxB;SACJ;KACJ,CAAC;IACF,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE;IAC1B,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,CAAC;IACnE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAE9C,oBAAoB;IACpB,UAAU,CAAC,eAAe,CAAC;QACvB,GAAG,EAAE,kBAAkB;QACvB,WAAW,EAAE;YACT;gBACI,KAAK,EAAE;oBACH,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;oBAChC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;iBACjC;gBACD,OAAO,EAAE,2BAA2B;gBACpC,QAAQ,EAAE,CAAC;gBACX,MAAM,EAAE,iBAAiB;aAC5B;SACJ;KACJ,CAAC,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,UAAU,CAAC,YAAY,CACnB,CAAC,qBAAiD,EAAoB,EAAE;IACpE,OAAO;QACH;YACI,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,yBAAkB,CAAC,IAAI;YAC7B,IAAI,EAAE,CAAC;SACV;QACD;YACI,KAAK,EAAE,YAAY;YACnB,IAAI,EAAE,yBAAkB,CAAC,IAAI;YAC7B,IAAI,EAAE,CAAC;SACV;KACJ,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,UAAU,CAAC,mBAAmB,CAC1B,CAAC,IAAoB,EAAkB,EAAE;IACrC,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,0BAA0B,CAAC;IACpD,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,0BAA0B,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CACJ,CAAC;AAEF,UAAU,CAAC,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Go LSP Demo Client
|
|
3
|
+
*
|
|
4
|
+
* This demo shows how to use the lsp-client library to interact with
|
|
5
|
+
* Go Language Server (gopls) and test various LSP features:
|
|
6
|
+
* - Hover
|
|
7
|
+
* - Completion
|
|
8
|
+
* - Go to Definition
|
|
9
|
+
* - Find References
|
|
10
|
+
* - Document Symbols
|
|
11
|
+
* - Rename
|
|
12
|
+
* - Diagnostics
|
|
13
|
+
*/
|
|
14
|
+
export {};
|