monaco-lsp-bridge 0.0.2 → 0.0.3
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/lib/cjs/error.js +7 -3
- package/lib/cjs/error.js.map +1 -1
- package/lib/cjs/index.js +13 -13
- package/lib/cjs/index.js.map +1 -1
- package/lib/cjs/protocol.js +28 -3
- package/lib/cjs/protocol.js.map +1 -1
- package/lib/cjs/{util.js → transform.js} +1 -1
- package/lib/cjs/transform.js.map +1 -0
- package/lib/cjs/transport.js +12 -18
- package/lib/cjs/transport.js.map +1 -1
- package/lib/esm/error.js +7 -3
- package/lib/esm/error.js.map +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/protocol.js +24 -2
- package/lib/esm/protocol.js.map +1 -1
- package/lib/esm/{util.js → transform.js} +1 -1
- package/lib/esm/transform.js.map +1 -0
- package/lib/esm/transport.js +13 -19
- package/lib/esm/transport.js.map +1 -1
- package/lib/ts/error.d.ts.map +1 -1
- package/lib/ts/protocol.d.ts +42 -33
- package/lib/ts/protocol.d.ts.map +1 -1
- package/lib/ts/{util.d.ts → transform.d.ts} +1 -1
- package/lib/ts/transform.d.ts.map +1 -0
- package/lib/ts/transport.d.ts +4 -4
- package/lib/ts/transport.d.ts.map +1 -1
- package/package.json +6 -1
- package/src/error.ts +9 -8
- package/src/index.ts +1 -1
- package/src/protocol.ts +59 -29
- package/src/transport.ts +25 -26
- package/lib/cjs/util.js.map +0 -1
- package/lib/esm/util.js.map +0 -1
- package/lib/ts/util.d.ts.map +0 -1
- /package/src/{util.ts → transform.ts} +0 -0
package/lib/esm/transport.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { makeRequest, makeNotification, isRpcMessage, isRpcRequestType, isRpcResponseType, } from './protocol.js';
|
|
2
2
|
import { LspError, LspErrorCode, toLspError, isCancellationError } from './error.js';
|
|
3
3
|
export class LspTransport {
|
|
4
4
|
sender;
|
|
@@ -50,8 +50,6 @@ export class LspTransport {
|
|
|
50
50
|
/** Listen for error responses and forward normalized errors */
|
|
51
51
|
onError(cb) {
|
|
52
52
|
const onMessage = (res) => {
|
|
53
|
-
if (res?.jsonrpc !== JSONRPC_VERSION)
|
|
54
|
-
return;
|
|
55
53
|
if (res?.error)
|
|
56
54
|
cb(toLspError(res.error));
|
|
57
55
|
};
|
|
@@ -66,7 +64,7 @@ export class LspTransport {
|
|
|
66
64
|
/** Register a callback for all $/progress notifications */
|
|
67
65
|
onProgressNotification(callback) {
|
|
68
66
|
const onMessage = (msg) => {
|
|
69
|
-
if (msg?.
|
|
67
|
+
if (msg?.method !== '$/progress')
|
|
70
68
|
return;
|
|
71
69
|
if (msg.params)
|
|
72
70
|
callback(msg.params);
|
|
@@ -77,7 +75,7 @@ export class LspTransport {
|
|
|
77
75
|
/** Listen for a specific server notification method */
|
|
78
76
|
onServerNotification(method, cb) {
|
|
79
77
|
const onMessage = (msg) => {
|
|
80
|
-
if (msg?.
|
|
78
|
+
if (msg?.method !== method)
|
|
81
79
|
return;
|
|
82
80
|
cb(msg.params);
|
|
83
81
|
};
|
|
@@ -219,10 +217,10 @@ export class LspTransport {
|
|
|
219
217
|
return;
|
|
220
218
|
}
|
|
221
219
|
// Early drop anything that isn't a proper JSON-RPC 2.0 message
|
|
222
|
-
if (!raw
|
|
220
|
+
if (!isRpcMessage(raw))
|
|
223
221
|
return;
|
|
224
222
|
// Handle $/progress notifications
|
|
225
|
-
if (
|
|
223
|
+
if (isRpcRequestType('$/progress', raw)) {
|
|
226
224
|
const params = raw.params;
|
|
227
225
|
const callback = this.progressCallbacks.get(params.token);
|
|
228
226
|
if (callback) {
|
|
@@ -238,19 +236,15 @@ export class LspTransport {
|
|
|
238
236
|
// Still fan out to subscribers for withProgress handlers
|
|
239
237
|
}
|
|
240
238
|
// If it's a response with an id and a waiting promise, resolve that first
|
|
241
|
-
if (
|
|
242
|
-
const
|
|
243
|
-
if (
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
try {
|
|
249
|
-
waiter(raw);
|
|
250
|
-
}
|
|
251
|
-
catch { }
|
|
252
|
-
return;
|
|
239
|
+
if (isRpcResponseType(raw)) {
|
|
240
|
+
const waiter = this.waiters.get(raw.id);
|
|
241
|
+
if (waiter) {
|
|
242
|
+
// Claim and stop propagation to generic handlers
|
|
243
|
+
this.waiters.delete(raw.id);
|
|
244
|
+
try {
|
|
245
|
+
waiter(raw);
|
|
253
246
|
}
|
|
247
|
+
catch { }
|
|
254
248
|
}
|
|
255
249
|
}
|
|
256
250
|
// Fan-out to generic subscribers (e.g. withHandlers / withError / withProgress)
|
package/lib/esm/transport.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"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"}
|
package/lib/ts/error.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IAEtB,UAAU,SAAS;IACnB,cAAc,SAAS;IACvB,cAAc,SAAS;IACvB,aAAa,SAAS;IACtB,aAAa,SAAS;IAGtB,eAAe,SAAS;IAGxB,gBAAgB,SAAS;IACzB,eAAe,SAAS;IACxB,eAAe,SAAS;IAGxB,OAAO,OAAO;IACd,QAAQ,OAAO;CAChB;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE7E,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;gBACF,KAAK,EAAE,aAAa;CAMjC;AAED,eAAO,MAAM,mBAAmB,GAAI,GAAG,OAAO,YAI2D,CAAA;AAEzG,eAAO,MAAM,UAAU,GAAI,GAAG,GAAG,KAAG,
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IAEtB,UAAU,SAAS;IACnB,cAAc,SAAS;IACvB,cAAc,SAAS;IACvB,aAAa,SAAS;IACtB,aAAa,SAAS;IAGtB,eAAe,SAAS;IAGxB,gBAAgB,SAAS;IACzB,eAAe,SAAS;IACxB,eAAe,SAAS;IAGxB,OAAO,OAAO;IACd,QAAQ,OAAO;CAChB;AAED,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAE7E,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,OAAO,CAAA;gBACF,KAAK,EAAE,aAAa;CAMjC;AAED,eAAO,MAAM,mBAAmB,GAAI,GAAG,OAAO,YAI2D,CAAA;AAEzG,eAAO,MAAM,UAAU,GAAI,GAAG,GAAG,KAAG,QAQnC,CAAA"}
|
package/lib/ts/protocol.d.ts
CHANGED
|
@@ -1,60 +1,65 @@
|
|
|
1
|
-
import { DidChangeTextDocumentNotification, DidChangeTextDocumentParams, DidCloseTextDocumentParams, DidCloseTextDocumentNotification, DidOpenTextDocumentNotification, DidOpenTextDocumentParams, CompletionRequest, CompletionParams, InitializeRequest, InitializeParams, InitializeResult, CompletionList, CompletionItem, CompletionResolveRequest, ProgressToken, PublishDiagnosticsNotification, PublishDiagnosticsParams, LogMessageNotification, LogMessageParams, DocumentFormattingRequest, DocumentFormattingParams, DocumentRangeFormattingRequest, DocumentRangeFormattingParams, DocumentOnTypeFormattingRequest, DocumentOnTypeFormattingParams, TextEdit, HoverRequest, HoverParams, Hover } from 'vscode-languageserver-protocol';
|
|
1
|
+
import type { DidChangeTextDocumentNotification, DidChangeTextDocumentParams, DidCloseTextDocumentParams, DidCloseTextDocumentNotification, DidOpenTextDocumentNotification, DidOpenTextDocumentParams, CompletionRequest, CompletionParams, InitializeRequest, InitializeParams, InitializeResult, CompletionList, CompletionItem, CompletionResolveRequest, ProgressToken, PublishDiagnosticsNotification, PublishDiagnosticsParams, LogMessageNotification, LogMessageParams, DocumentFormattingRequest, DocumentFormattingParams, DocumentRangeFormattingRequest, DocumentRangeFormattingParams, DocumentOnTypeFormattingRequest, DocumentOnTypeFormattingParams, TextEdit, HoverRequest, HoverParams, Hover } from 'vscode-languageserver-protocol';
|
|
2
2
|
import { LspErrorShape } from './error.js';
|
|
3
|
+
export declare const JSONRPC_VERSION = "2.0";
|
|
4
|
+
export type JSONRPC = typeof JSONRPC_VERSION;
|
|
3
5
|
export type Id = number | string;
|
|
4
6
|
export declare const isId: (id: unknown) => id is Id;
|
|
7
|
+
type RequestMapValue<P, R> = {
|
|
8
|
+
fields: {
|
|
9
|
+
params: P;
|
|
10
|
+
};
|
|
11
|
+
response: R;
|
|
12
|
+
};
|
|
5
13
|
export interface RequestMap {
|
|
6
|
-
[InitializeRequest.method]:
|
|
7
|
-
[CompletionResolveRequest.method]:
|
|
8
|
-
[CompletionRequest.method]:
|
|
9
|
-
[DocumentFormattingRequest.method]:
|
|
10
|
-
[DocumentRangeFormattingRequest.method]:
|
|
11
|
-
[DocumentOnTypeFormattingRequest.method]:
|
|
12
|
-
[HoverRequest.method]:
|
|
13
|
-
shutdown:
|
|
14
|
+
[InitializeRequest.method]: RequestMapValue<InitializeParams, InitializeResult>;
|
|
15
|
+
[CompletionResolveRequest.method]: RequestMapValue<CompletionItem, CompletionItem>;
|
|
16
|
+
[CompletionRequest.method]: RequestMapValue<CompletionParams, CompletionList | CompletionItem[] | null>;
|
|
17
|
+
[DocumentFormattingRequest.method]: RequestMapValue<DocumentFormattingParams, TextEdit[] | null>;
|
|
18
|
+
[DocumentRangeFormattingRequest.method]: RequestMapValue<DocumentRangeFormattingParams, TextEdit[] | null>;
|
|
19
|
+
[DocumentOnTypeFormattingRequest.method]: RequestMapValue<DocumentOnTypeFormattingParams, TextEdit[] | null>;
|
|
20
|
+
[HoverRequest.method]: RequestMapValue<HoverParams, Hover | null>;
|
|
21
|
+
shutdown: RequestMapValue<null, null>;
|
|
14
22
|
}
|
|
15
23
|
export interface ClientNotifMap {
|
|
16
|
-
[DidOpenTextDocumentNotification.method]:
|
|
17
|
-
[DidChangeTextDocumentNotification.method]:
|
|
18
|
-
[DidCloseTextDocumentNotification.method]:
|
|
19
|
-
'$/cancelRequest':
|
|
24
|
+
[DidOpenTextDocumentNotification.method]: RequestMapValue<DidOpenTextDocumentParams, void>;
|
|
25
|
+
[DidChangeTextDocumentNotification.method]: RequestMapValue<DidChangeTextDocumentParams, void>;
|
|
26
|
+
[DidCloseTextDocumentNotification.method]: RequestMapValue<DidCloseTextDocumentParams, void>;
|
|
27
|
+
'$/cancelRequest': RequestMapValue<{
|
|
20
28
|
id: Id;
|
|
21
|
-
}, void
|
|
22
|
-
exit:
|
|
29
|
+
}, void>;
|
|
30
|
+
exit: RequestMapValue<null, void>;
|
|
23
31
|
}
|
|
24
32
|
export interface ServerNotifMap {
|
|
25
|
-
'$/progress':
|
|
33
|
+
'$/progress': RequestMapValue<{
|
|
26
34
|
token: ProgressToken;
|
|
27
35
|
value: any;
|
|
28
|
-
}, void
|
|
29
|
-
[PublishDiagnosticsNotification.method]:
|
|
30
|
-
[LogMessageNotification.method]:
|
|
36
|
+
}, void>;
|
|
37
|
+
[PublishDiagnosticsNotification.method]: RequestMapValue<PublishDiagnosticsParams, void>;
|
|
38
|
+
[LogMessageNotification.method]: RequestMapValue<LogMessageParams, void>;
|
|
31
39
|
}
|
|
32
|
-
export
|
|
33
|
-
type JSONRPC = typeof JSONRPC_VERSION;
|
|
34
|
-
export type JsonRpcRequest<K, T> = {
|
|
40
|
+
export interface JsonRpcMessage {
|
|
35
41
|
jsonrpc: JSONRPC;
|
|
42
|
+
}
|
|
43
|
+
export interface JsonRpcRequest<K, T> extends JsonRpcMessage {
|
|
36
44
|
id: Id;
|
|
37
45
|
params: T;
|
|
38
46
|
method: K;
|
|
39
|
-
}
|
|
40
|
-
export type JsonRpcResponse<T> = {
|
|
41
|
-
jsonrpc: JSONRPC;
|
|
47
|
+
}
|
|
48
|
+
export type JsonRpcResponse<T> = (JsonRpcMessage & {
|
|
42
49
|
id: Id;
|
|
43
50
|
result: T;
|
|
44
51
|
error?: undefined;
|
|
45
|
-
} | {
|
|
46
|
-
jsonrpc: JSONRPC;
|
|
52
|
+
}) | (JsonRpcMessage & {
|
|
47
53
|
id: Id;
|
|
48
54
|
result?: undefined;
|
|
49
55
|
error: LspErrorShape;
|
|
50
|
-
};
|
|
51
|
-
export
|
|
52
|
-
jsonrpc: JSONRPC;
|
|
56
|
+
});
|
|
57
|
+
export interface JsonRpcNotification<K, T> extends JsonRpcMessage {
|
|
53
58
|
method: K;
|
|
54
59
|
params: T;
|
|
55
|
-
}
|
|
56
|
-
export declare const makeRequest: <K extends keyof RequestMap>(id: Id, method: K, params: RequestMap[K][
|
|
57
|
-
export declare const makeNotification: <K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K][
|
|
60
|
+
}
|
|
61
|
+
export declare const makeRequest: <K extends keyof RequestMap>(id: Id, method: K, params: RequestMap[K]["fields"]["params"]) => JsonRpcRequest<K, RequestMap[K]["fields"]["params"]>;
|
|
62
|
+
export declare const makeNotification: <K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K]["fields"]["params"]) => JsonRpcNotification<K, ClientNotifMap[K]["fields"]["params"]>;
|
|
58
63
|
export type ProgressPayload<T = any> = {
|
|
59
64
|
token: ProgressToken;
|
|
60
65
|
value: T;
|
|
@@ -76,5 +81,9 @@ export type WorkDoneProgressEnd = {
|
|
|
76
81
|
kind: 'end';
|
|
77
82
|
message?: string;
|
|
78
83
|
};
|
|
84
|
+
export declare const isRpcMessage: (msg: unknown) => msg is JsonRpcMessage;
|
|
85
|
+
type RequestMapType = RequestMap & ClientNotifMap & ServerNotifMap;
|
|
86
|
+
export declare const isRpcRequestType: <K extends keyof RequestMapType>(method: K, msg: unknown) => msg is JsonRpcRequest<K, RequestMapType[K]["fields"]["params"]>;
|
|
87
|
+
export declare const isRpcResponseType: <K extends keyof RequestMapType = keyof RequestMapType>(msg: unknown, method?: K) => msg is JsonRpcResponse<RequestMapType[K]["response"]>;
|
|
79
88
|
export {};
|
|
80
89
|
//# sourceMappingURL=protocol.d.ts.map
|
package/lib/ts/protocol.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,4 +18,4 @@ export declare const toMonacoMarkers: (monacoApi: typeof monaco, diagnostics: Di
|
|
|
18
18
|
export declare const toMonacoTextEdits: (edits: TextEdit[]) => monaco.languages.TextEdit[];
|
|
19
19
|
/** Convert LSP Hover to Monaco Hover */
|
|
20
20
|
export declare const lspHoverToMonaco: (hover: Hover) => monaco.languages.Hover;
|
|
21
|
-
//# sourceMappingURL=
|
|
21
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../../src/transform.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EAER,KAAK,EACL,QAAQ,EACR,UAAU,EAEV,KAAK,EAGN,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAK5C,8DAA8D;AAC9D,eAAO,MAAM,sBAAsB,GACjC,WAAW,OAAO,MAAM,EACxB,MAAM,cAAc,KACnB,MAAM,CAAC,SAAS,CAAC,cA+BnB,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,GAAI,MAAM,MAAM,CAAC,SAAS,CAAC,cAAc,KAAG,cAsB3E,CAAA;AAED,iDAAiD;AACjD,eAAO,MAAM,2BAA2B,GACtC,YAAY,MAAM,CAAC,SAAS,CAAC,cAAc,EAC3C,iBAAiB,cAAc,KAC9B,MAAM,CAAC,SAAS,CAAC,cA4CnB,CAAA;AA4CD,6DAA6D;AAC7D,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,CAAC,MAAM,KAAG,KAWjD,CAAA;AAED,+CAA+C;AAC/C,eAAO,MAAM,gBAAgB,GAAI,UAAU,QAAQ,KAAG,MAAM,CAAC,SAK5D,CAAA;AAED,+CAA+C;AAC/C,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,CAAC,SAAS,KAAG,QAK1D,CAAA;AAED,4CAA4C;AAC5C,eAAO,MAAM,eAAe,GAAI,WAAW,OAAO,MAAM,EAAE,aAAa,UAAU,EAAE,KAAG,MAAM,CAAC,MAAM,CAAC,WAAW,EAoD9G,CAAA;AAED,wCAAwC;AACxC,eAAO,MAAM,iBAAiB,GAAI,OAAO,QAAQ,EAAE,KAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,EAK9E,CAAA;AAED,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,GAAI,OAAO,KAAK,KAAG,MAAM,CAAC,SAAS,CAAC,KAkChE,CAAA"}
|
package/lib/ts/transport.d.ts
CHANGED
|
@@ -51,20 +51,20 @@ export declare class LspTransport {
|
|
|
51
51
|
/** Register a callback for all $/progress notifications */
|
|
52
52
|
onProgressNotification(callback: (params: ProgressPayload) => void): this;
|
|
53
53
|
/** Listen for a specific server notification method */
|
|
54
|
-
onServerNotification<K extends keyof ServerNotifMap>(method: K, cb: (params: ServerNotifMap[K][
|
|
54
|
+
onServerNotification<K extends keyof ServerNotifMap>(method: K, cb: (params: ServerNotifMap[K]['fields']['params']) => void): this;
|
|
55
55
|
/** Dispose all resources and reject in-flight requests */
|
|
56
56
|
dispose(): void;
|
|
57
57
|
/** Send a client-to-server notification (no response expected) */
|
|
58
|
-
sendNotification<K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K][
|
|
58
|
+
sendNotification<K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K]['fields']['params']): this;
|
|
59
59
|
/** Send an async request with timeout, cancellation and progress support */
|
|
60
|
-
sendRequest<K extends keyof RequestMap>(method: K, params: RequestMap[K][
|
|
60
|
+
sendRequest<K extends keyof RequestMap>(method: K, params: RequestMap[K]['fields']['params'], opts?: {
|
|
61
61
|
timeoutMs?: number;
|
|
62
62
|
signal?: AbortSignal;
|
|
63
63
|
workDoneToken?: ProgressToken;
|
|
64
64
|
partialResultToken?: ProgressToken;
|
|
65
65
|
onProgress?: ProgressHandler;
|
|
66
66
|
onPartialResult?: PartialResultHandler;
|
|
67
|
-
}): Promise<MaybeCancelled<RequestMap[K][
|
|
67
|
+
}): Promise<MaybeCancelled<RequestMap[K]['response']>>;
|
|
68
68
|
/** Subscribe to all inbound JSON-RPC messages */
|
|
69
69
|
private subscribe;
|
|
70
70
|
/** Ingest an incoming frame and dispatch to listeners/waiters */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAE5C,OAAO,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monaco-lsp-bridge",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "Lightweight Monaco–LSP bridge with JSON-RPC transport",
|
|
5
5
|
"author": "Dan Beaven <dm.beaven@gmail.com>",
|
|
6
6
|
"repository": {
|
|
@@ -19,6 +19,11 @@
|
|
|
19
19
|
"types": "./lib/ts/index.d.ts",
|
|
20
20
|
"import": "./lib/esm/index.js",
|
|
21
21
|
"require": "./lib/cjs/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./protocol": {
|
|
24
|
+
"types": "./lib/ts/protocol.d.ts",
|
|
25
|
+
"import": "./lib/esm/protocol.js",
|
|
26
|
+
"require": "./lib/cjs/protocol.js"
|
|
22
27
|
}
|
|
23
28
|
},
|
|
24
29
|
"files": [
|
package/src/error.ts
CHANGED
|
@@ -38,11 +38,12 @@ export const isCancellationError = (e: unknown) =>
|
|
|
38
38
|
'code' in (e as any) &&
|
|
39
39
|
((e as any).code === LspErrorCode.RequestCancelled || (e as any).code === LspErrorCode.ServerCancelled)
|
|
40
40
|
|
|
41
|
-
export const toLspError = (e: any): LspError =>
|
|
42
|
-
e instanceof LspError
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
41
|
+
export const toLspError = (e: any): LspError => {
|
|
42
|
+
if (e instanceof LspError) return e
|
|
43
|
+
if (typeof e === 'string') return new LspError({ code: LspErrorCode.InternalError, message: e })
|
|
44
|
+
return new LspError({
|
|
45
|
+
code: Number(e?.code ?? LspErrorCode.InternalError),
|
|
46
|
+
message: String(e?.message ?? 'Error'),
|
|
47
|
+
data: e?.data,
|
|
48
|
+
})
|
|
49
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
toMonacoMarkers,
|
|
18
18
|
toMonacoTextEdits,
|
|
19
19
|
lspHoverToMonaco,
|
|
20
|
-
} from './
|
|
20
|
+
} from './transform.js'
|
|
21
21
|
import { LspTransport, Transport } from './transport.js'
|
|
22
22
|
import type { MaybeCancelled } from './transport.js'
|
|
23
23
|
import { ProgressPayload } from './protocol.js'
|
package/src/protocol.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {
|
|
2
2
|
DidChangeTextDocumentNotification,
|
|
3
3
|
DidChangeTextDocumentParams,
|
|
4
4
|
DidCloseTextDocumentParams,
|
|
@@ -32,53 +32,57 @@ import {
|
|
|
32
32
|
|
|
33
33
|
import { LspErrorShape } from './error.js'
|
|
34
34
|
|
|
35
|
+
export const JSONRPC_VERSION = '2.0'
|
|
36
|
+
export type JSONRPC = typeof JSONRPC_VERSION
|
|
37
|
+
|
|
35
38
|
export type Id = number | string
|
|
36
39
|
export const isId = (id: unknown): id is Id => typeof id === 'number' || typeof id === 'string'
|
|
37
40
|
|
|
41
|
+
type RequestMapValue<P, R> = { fields: { params: P }; response: R }
|
|
42
|
+
|
|
38
43
|
// Requests (bidirectional, have responses)
|
|
39
44
|
export interface RequestMap {
|
|
40
|
-
[InitializeRequest.method]:
|
|
41
|
-
[CompletionResolveRequest.method]:
|
|
42
|
-
[CompletionRequest.method]:
|
|
43
|
-
[DocumentFormattingRequest.method]:
|
|
44
|
-
[DocumentRangeFormattingRequest.method]:
|
|
45
|
-
[DocumentOnTypeFormattingRequest.method]:
|
|
46
|
-
[HoverRequest.method]:
|
|
47
|
-
shutdown:
|
|
45
|
+
[InitializeRequest.method]: RequestMapValue<InitializeParams, InitializeResult>
|
|
46
|
+
[CompletionResolveRequest.method]: RequestMapValue<CompletionItem, CompletionItem>
|
|
47
|
+
[CompletionRequest.method]: RequestMapValue<CompletionParams, CompletionList | CompletionItem[] | null>
|
|
48
|
+
[DocumentFormattingRequest.method]: RequestMapValue<DocumentFormattingParams, TextEdit[] | null>
|
|
49
|
+
[DocumentRangeFormattingRequest.method]: RequestMapValue<DocumentRangeFormattingParams, TextEdit[] | null>
|
|
50
|
+
[DocumentOnTypeFormattingRequest.method]: RequestMapValue<DocumentOnTypeFormattingParams, TextEdit[] | null>
|
|
51
|
+
[HoverRequest.method]: RequestMapValue<HoverParams, Hover | null>
|
|
52
|
+
shutdown: RequestMapValue<null, null>
|
|
48
53
|
}
|
|
49
54
|
|
|
50
55
|
// Client-to-server notifications (no response expected)
|
|
51
56
|
export interface ClientNotifMap {
|
|
52
|
-
[DidOpenTextDocumentNotification.method]:
|
|
53
|
-
[DidChangeTextDocumentNotification.method]:
|
|
54
|
-
[DidCloseTextDocumentNotification.method]:
|
|
55
|
-
'$/cancelRequest':
|
|
56
|
-
exit:
|
|
57
|
+
[DidOpenTextDocumentNotification.method]: RequestMapValue<DidOpenTextDocumentParams, void>
|
|
58
|
+
[DidChangeTextDocumentNotification.method]: RequestMapValue<DidChangeTextDocumentParams, void>
|
|
59
|
+
[DidCloseTextDocumentNotification.method]: RequestMapValue<DidCloseTextDocumentParams, void>
|
|
60
|
+
'$/cancelRequest': RequestMapValue<{ id: Id }, void>
|
|
61
|
+
exit: RequestMapValue<null, void>
|
|
57
62
|
}
|
|
58
63
|
|
|
59
64
|
// Server-to-client notifications (no response expected)
|
|
60
65
|
export interface ServerNotifMap {
|
|
61
|
-
'$/progress':
|
|
62
|
-
[PublishDiagnosticsNotification.method]:
|
|
63
|
-
[LogMessageNotification.method]:
|
|
66
|
+
'$/progress': RequestMapValue<{ token: ProgressToken; value: any }, void>
|
|
67
|
+
[PublishDiagnosticsNotification.method]: RequestMapValue<PublishDiagnosticsParams, void>
|
|
68
|
+
[LogMessageNotification.method]: RequestMapValue<LogMessageParams, void>
|
|
64
69
|
}
|
|
65
70
|
|
|
66
|
-
export
|
|
67
|
-
type JSONRPC = typeof JSONRPC_VERSION
|
|
68
|
-
|
|
69
|
-
export type JsonRpcRequest<K, T> = {
|
|
71
|
+
export interface JsonRpcMessage {
|
|
70
72
|
jsonrpc: JSONRPC
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface JsonRpcRequest<K, T> extends JsonRpcMessage {
|
|
71
76
|
id: Id
|
|
72
77
|
params: T
|
|
73
78
|
method: K
|
|
74
79
|
}
|
|
75
80
|
|
|
76
81
|
export type JsonRpcResponse<T> =
|
|
77
|
-
|
|
|
78
|
-
|
|
|
82
|
+
| (JsonRpcMessage & { id: Id; result: T; error?: undefined })
|
|
83
|
+
| (JsonRpcMessage & { id: Id; result?: undefined; error: LspErrorShape })
|
|
79
84
|
|
|
80
|
-
export
|
|
81
|
-
jsonrpc: JSONRPC
|
|
85
|
+
export interface JsonRpcNotification<K, T> extends JsonRpcMessage {
|
|
82
86
|
method: K
|
|
83
87
|
params: T
|
|
84
88
|
}
|
|
@@ -86,8 +90,8 @@ export type JsonRpcNotification<K, T> = {
|
|
|
86
90
|
export const makeRequest = <K extends keyof RequestMap>(
|
|
87
91
|
id: Id,
|
|
88
92
|
method: K,
|
|
89
|
-
params: RequestMap[K][
|
|
90
|
-
): JsonRpcRequest<K, RequestMap[K][
|
|
93
|
+
params: RequestMap[K]['fields']['params'],
|
|
94
|
+
): JsonRpcRequest<K, RequestMap[K]['fields']['params']> => ({
|
|
91
95
|
jsonrpc: JSONRPC_VERSION,
|
|
92
96
|
id,
|
|
93
97
|
method,
|
|
@@ -96,8 +100,8 @@ export const makeRequest = <K extends keyof RequestMap>(
|
|
|
96
100
|
|
|
97
101
|
export const makeNotification = <K extends keyof ClientNotifMap>(
|
|
98
102
|
method: K,
|
|
99
|
-
params: ClientNotifMap[K][
|
|
100
|
-
): JsonRpcNotification<K, ClientNotifMap[K][
|
|
103
|
+
params: ClientNotifMap[K]['fields']['params'],
|
|
104
|
+
): JsonRpcNotification<K, ClientNotifMap[K]['fields']['params']> => ({
|
|
101
105
|
jsonrpc: JSONRPC_VERSION,
|
|
102
106
|
method,
|
|
103
107
|
params,
|
|
@@ -127,3 +131,29 @@ export type WorkDoneProgressEnd = {
|
|
|
127
131
|
kind: 'end'
|
|
128
132
|
message?: string
|
|
129
133
|
}
|
|
134
|
+
|
|
135
|
+
export const isRpcMessage = (msg: unknown): msg is JsonRpcMessage => {
|
|
136
|
+
if (typeof msg !== 'object' || msg === null) return false
|
|
137
|
+
if (!('jsonrpc' in msg) || msg.jsonrpc !== JSONRPC_VERSION) return false
|
|
138
|
+
return true
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
type RequestMapType = RequestMap & ClientNotifMap & ServerNotifMap
|
|
142
|
+
export const isRpcRequestType = <K extends keyof RequestMapType>(
|
|
143
|
+
method: K,
|
|
144
|
+
msg: unknown,
|
|
145
|
+
): msg is JsonRpcRequest<K, RequestMapType[K]['fields']['params']> => {
|
|
146
|
+
if (!isRpcMessage(msg)) return false
|
|
147
|
+
if ((msg as any).method !== method) return false
|
|
148
|
+
return true
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
export const isRpcResponseType = <K extends keyof RequestMapType = keyof RequestMapType>(
|
|
152
|
+
msg: unknown,
|
|
153
|
+
method?: K,
|
|
154
|
+
): msg is JsonRpcResponse<RequestMapType[K]['response']> => {
|
|
155
|
+
if (!isRpcMessage(msg)) return false
|
|
156
|
+
if (!Object.prototype.hasOwnProperty.call(msg, 'id') || !isId((msg as any).id)) return false
|
|
157
|
+
if (method && (msg as any).method !== method) return false
|
|
158
|
+
return true
|
|
159
|
+
}
|
package/src/transport.ts
CHANGED
|
@@ -2,7 +2,6 @@ import type { ProgressToken } from 'vscode-languageserver-protocol'
|
|
|
2
2
|
import type * as monaco from 'monaco-editor'
|
|
3
3
|
|
|
4
4
|
import {
|
|
5
|
-
JSONRPC_VERSION,
|
|
6
5
|
makeRequest,
|
|
7
6
|
makeNotification,
|
|
8
7
|
JsonRpcRequest,
|
|
@@ -12,8 +11,10 @@ import {
|
|
|
12
11
|
JsonRpcResponse,
|
|
13
12
|
JsonRpcNotification,
|
|
14
13
|
ProgressPayload,
|
|
14
|
+
isRpcMessage,
|
|
15
|
+
isRpcRequestType,
|
|
16
|
+
isRpcResponseType,
|
|
15
17
|
Id,
|
|
16
|
-
isId,
|
|
17
18
|
} from './protocol.js'
|
|
18
19
|
import { LspError, LspErrorCode, toLspError, isCancellationError } from './error.js'
|
|
19
20
|
|
|
@@ -96,7 +97,6 @@ export class LspTransport {
|
|
|
96
97
|
/** Listen for error responses and forward normalized errors */
|
|
97
98
|
onError(cb: (error: LspError) => void) {
|
|
98
99
|
const onMessage = (res: JsonRpcResponse<any>) => {
|
|
99
|
-
if (res?.jsonrpc !== JSONRPC_VERSION) return
|
|
100
100
|
if (res?.error) cb(toLspError(res.error))
|
|
101
101
|
}
|
|
102
102
|
this.disposables.add(this.subscribe(onMessage))
|
|
@@ -112,7 +112,7 @@ export class LspTransport {
|
|
|
112
112
|
/** Register a callback for all $/progress notifications */
|
|
113
113
|
onProgressNotification(callback: (params: ProgressPayload) => void) {
|
|
114
114
|
const onMessage = (msg: any) => {
|
|
115
|
-
if (msg?.
|
|
115
|
+
if (msg?.method !== '$/progress') return
|
|
116
116
|
if (msg.params) callback(msg.params)
|
|
117
117
|
}
|
|
118
118
|
this.disposables.add(this.subscribe(onMessage))
|
|
@@ -120,10 +120,13 @@ export class LspTransport {
|
|
|
120
120
|
}
|
|
121
121
|
|
|
122
122
|
/** Listen for a specific server notification method */
|
|
123
|
-
onServerNotification<K extends keyof ServerNotifMap>(
|
|
123
|
+
onServerNotification<K extends keyof ServerNotifMap>(
|
|
124
|
+
method: K,
|
|
125
|
+
cb: (params: ServerNotifMap[K]['fields']['params']) => void,
|
|
126
|
+
) {
|
|
124
127
|
const onMessage = (msg: any) => {
|
|
125
|
-
if (msg?.
|
|
126
|
-
cb(msg.params as ServerNotifMap[K][
|
|
128
|
+
if (msg?.method !== method) return
|
|
129
|
+
cb(msg.params as ServerNotifMap[K]['fields']['params'])
|
|
127
130
|
}
|
|
128
131
|
this.disposables.add(this.subscribe(onMessage))
|
|
129
132
|
return this
|
|
@@ -152,7 +155,7 @@ export class LspTransport {
|
|
|
152
155
|
// -------- Core API
|
|
153
156
|
|
|
154
157
|
/** Send a client-to-server notification (no response expected) */
|
|
155
|
-
sendNotification<K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K][
|
|
158
|
+
sendNotification<K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K]['fields']['params']) {
|
|
156
159
|
this.sender(makeNotification(method, params))
|
|
157
160
|
return this
|
|
158
161
|
}
|
|
@@ -160,7 +163,7 @@ export class LspTransport {
|
|
|
160
163
|
/** Send an async request with timeout, cancellation and progress support */
|
|
161
164
|
sendRequest<K extends keyof RequestMap>(
|
|
162
165
|
method: K,
|
|
163
|
-
params: RequestMap[K][
|
|
166
|
+
params: RequestMap[K]['fields']['params'],
|
|
164
167
|
opts?: {
|
|
165
168
|
timeoutMs?: number
|
|
166
169
|
signal?: AbortSignal
|
|
@@ -169,7 +172,7 @@ export class LspTransport {
|
|
|
169
172
|
onProgress?: ProgressHandler
|
|
170
173
|
onPartialResult?: PartialResultHandler
|
|
171
174
|
},
|
|
172
|
-
): Promise<MaybeCancelled<RequestMap[K][
|
|
175
|
+
): Promise<MaybeCancelled<RequestMap[K]['response']>> {
|
|
173
176
|
const id = this.nextId++
|
|
174
177
|
|
|
175
178
|
// Generate tokens if callbacks provided but tokens not specified
|
|
@@ -203,7 +206,7 @@ export class LspTransport {
|
|
|
203
206
|
|
|
204
207
|
this.sender(m)
|
|
205
208
|
|
|
206
|
-
return new Promise<MaybeCancelled<RequestMap[K][
|
|
209
|
+
return new Promise<MaybeCancelled<RequestMap[K]['response']>>((resolve, reject) => {
|
|
207
210
|
const resolveCancelled = (code: LspErrorCode.RequestCancelled | LspErrorCode.ServerCancelled) => {
|
|
208
211
|
cleanup()
|
|
209
212
|
resolve({ cancelled: true, code })
|
|
@@ -292,11 +295,11 @@ export class LspTransport {
|
|
|
292
295
|
}
|
|
293
296
|
|
|
294
297
|
// Early drop anything that isn't a proper JSON-RPC 2.0 message
|
|
295
|
-
if (!raw
|
|
298
|
+
if (!isRpcMessage(raw)) return
|
|
296
299
|
|
|
297
300
|
// Handle $/progress notifications
|
|
298
|
-
if (
|
|
299
|
-
const params = raw.params
|
|
301
|
+
if (isRpcRequestType('$/progress', raw)) {
|
|
302
|
+
const params = raw.params
|
|
300
303
|
const callback = this.progressCallbacks.get(params.token)
|
|
301
304
|
if (callback) {
|
|
302
305
|
try {
|
|
@@ -312,18 +315,14 @@ export class LspTransport {
|
|
|
312
315
|
}
|
|
313
316
|
|
|
314
317
|
// If it's a response with an id and a waiting promise, resolve that first
|
|
315
|
-
if (
|
|
316
|
-
const
|
|
317
|
-
if (
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
waiter(raw)
|
|
324
|
-
} catch {}
|
|
325
|
-
return
|
|
326
|
-
}
|
|
318
|
+
if (isRpcResponseType(raw)) {
|
|
319
|
+
const waiter = this.waiters.get(raw.id)
|
|
320
|
+
if (waiter) {
|
|
321
|
+
// Claim and stop propagation to generic handlers
|
|
322
|
+
this.waiters.delete(raw.id)
|
|
323
|
+
try {
|
|
324
|
+
waiter(raw)
|
|
325
|
+
} catch {}
|
|
327
326
|
}
|
|
328
327
|
}
|
|
329
328
|
|