monaco-lsp-bridge 0.0.2 → 0.0.4
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/{ts/index.d.ts → client.d.ts} +14 -4
- package/lib/client.d.ts.map +1 -0
- package/lib/{esm/index.js → client.js} +103 -21
- package/lib/client.js.map +1 -0
- package/lib/error.d.ts.map +1 -0
- package/lib/{esm/error.js → error.js} +7 -3
- package/lib/error.js.map +1 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +3 -0
- package/lib/index.js.map +1 -0
- package/lib/protocol.d.ts +102 -0
- package/lib/protocol.d.ts.map +1 -0
- package/lib/protocol.js +37 -0
- package/lib/protocol.js.map +1 -0
- package/lib/transform.d.ts +44 -0
- package/lib/transform.d.ts.map +1 -0
- package/lib/{esm/util.js → transform.js} +178 -14
- package/lib/transform.js.map +1 -0
- package/lib/{ts/transport.d.ts → transport.d.ts} +12 -5
- package/lib/transport.d.ts.map +1 -0
- package/lib/{esm/transport.js → transport.js} +63 -21
- package/lib/transport.js.map +1 -0
- package/package.json +15 -20
- package/tsconfig.json +4 -4
- package/lib/cjs/error.js +0 -46
- package/lib/cjs/error.js.map +0 -1
- package/lib/cjs/index.js +0 -594
- package/lib/cjs/index.js.map +0 -1
- package/lib/cjs/protocol.js +0 -21
- package/lib/cjs/protocol.js.map +0 -1
- package/lib/cjs/transport.js +0 -269
- package/lib/cjs/transport.js.map +0 -1
- package/lib/cjs/util.js +0 -264
- package/lib/cjs/util.js.map +0 -1
- package/lib/esm/error.js.map +0 -1
- package/lib/esm/index.js.map +0 -1
- package/lib/esm/protocol.js +0 -15
- package/lib/esm/protocol.js.map +0 -1
- package/lib/esm/transport.js.map +0 -1
- package/lib/esm/util.js.map +0 -1
- package/lib/ts/error.d.ts.map +0 -1
- package/lib/ts/index.d.ts.map +0 -1
- package/lib/ts/protocol.d.ts +0 -80
- package/lib/ts/protocol.d.ts.map +0 -1
- package/lib/ts/transport.d.ts.map +0 -1
- package/lib/ts/util.d.ts +0 -21
- package/lib/ts/util.d.ts.map +0 -1
- package/src/error.ts +0 -48
- package/src/index.ts +0 -709
- package/src/protocol.ts +0 -129
- package/src/transport.ts +0 -337
- package/src/util.ts +0 -300
- /package/lib/{ts/error.d.ts → error.d.ts} +0 -0
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
/** Store original LSP item on Monaco completion item */
|
|
2
2
|
const LSP_ITEM_KEY = Symbol.for('__lsp_completion_item__');
|
|
3
3
|
/** Convert LSP CompletionItem to Monaco and stash original */
|
|
4
|
-
export const toMonacoCompletionItem = (monacoApi, item) => {
|
|
4
|
+
export const toMonacoCompletionItem = (monacoApi, model, position, item) => {
|
|
5
5
|
const insertText = getInsertText(item);
|
|
6
|
-
const
|
|
7
|
-
//
|
|
8
|
-
const
|
|
9
|
-
|
|
6
|
+
const isSnippet = (item.insertTextFormat ?? 1) === 2;
|
|
7
|
+
// If LSP provided a textEdit range, convert it (support insert/replace if you have both)
|
|
8
|
+
const lspRange = toMonacoRange(item.textEdit); // return IRange or {insert, replace} | undefined
|
|
9
|
+
// Fallback range must contain `position`
|
|
10
|
+
const word = model.getWordUntilPosition(position);
|
|
11
|
+
const fallbackRange = new monacoApi.Range(position.lineNumber, word.startColumn, position.lineNumber, position.column);
|
|
10
12
|
const result = {
|
|
11
13
|
label: item.label,
|
|
12
14
|
insertText,
|
|
@@ -17,14 +19,9 @@ export const toMonacoCompletionItem = (monacoApi, item) => {
|
|
|
17
19
|
filterText: item.filterText,
|
|
18
20
|
commitCharacters: item.commitCharacters,
|
|
19
21
|
additionalTextEdits: item.additionalTextEdits?.map(toMonacoTextEdit),
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
insertTextRules: isSnippet ? monacoApi.languages.CompletionItemInsertTextRule.InsertAsSnippet : undefined,
|
|
23
|
+
range: lspRange ?? fallbackRange,
|
|
22
24
|
};
|
|
23
|
-
// Set explicit range only when provided by LSP
|
|
24
|
-
if (range !== undefined) {
|
|
25
|
-
result.range = range;
|
|
26
|
-
}
|
|
27
|
-
// Keep original for resolve
|
|
28
25
|
result[LSP_ITEM_KEY] = item;
|
|
29
26
|
return result;
|
|
30
27
|
};
|
|
@@ -194,9 +191,11 @@ export const toMonacoMarkers = (monacoApi, diagnostics) => {
|
|
|
194
191
|
endColumn: ri.location.range.end.character + 1,
|
|
195
192
|
}));
|
|
196
193
|
};
|
|
194
|
+
// LSP >=3.18 allows MarkupContent messages; Monaco markers only take strings
|
|
195
|
+
const toMessage = (msg) => (typeof msg === 'string' ? msg : msg.value);
|
|
197
196
|
return diagnostics.map((d) => ({
|
|
198
197
|
severity: toSeverity(d.severity),
|
|
199
|
-
message: d.message,
|
|
198
|
+
message: toMessage(d.message),
|
|
200
199
|
code: typeof d.code === 'string' ? d.code : typeof d.code === 'number' ? String(d.code) : undefined,
|
|
201
200
|
source: d.source,
|
|
202
201
|
tags: toTags(d.tags),
|
|
@@ -249,4 +248,169 @@ export const lspHoverToMonaco = (hover) => {
|
|
|
249
248
|
result.range = toMonacoIRange(hover.range);
|
|
250
249
|
return result;
|
|
251
250
|
};
|
|
252
|
-
|
|
251
|
+
/** Convert LSP markup/string to a Monaco markdown string */
|
|
252
|
+
const toMonacoMarkup = (doc) => doc === undefined ? undefined : typeof doc === 'string' ? doc : { value: doc.value };
|
|
253
|
+
// ---------------- Navigation ----------------
|
|
254
|
+
const isLocationLink = (l) => 'targetUri' in l;
|
|
255
|
+
/** Convert a single LSP Location to Monaco */
|
|
256
|
+
export const toMonacoLocation = (monacoApi, loc) => ({
|
|
257
|
+
uri: monacoApi.Uri.parse(loc.uri),
|
|
258
|
+
range: toMonacoIRange(loc.range),
|
|
259
|
+
});
|
|
260
|
+
const toMonacoLocationLink = (monacoApi, l) => ({
|
|
261
|
+
uri: monacoApi.Uri.parse(l.targetUri),
|
|
262
|
+
range: toMonacoIRange(l.targetRange),
|
|
263
|
+
targetSelectionRange: toMonacoIRange(l.targetSelectionRange),
|
|
264
|
+
...(l.originSelectionRange ? { originSelectionRange: toMonacoIRange(l.originSelectionRange) } : {}),
|
|
265
|
+
});
|
|
266
|
+
/** Convert an LSP definition result (Location, Location[] or LocationLink[]) to Monaco */
|
|
267
|
+
export const toMonacoLocations = (monacoApi, result) => {
|
|
268
|
+
if (!result)
|
|
269
|
+
return [];
|
|
270
|
+
const items = Array.isArray(result) ? result : [result];
|
|
271
|
+
const [first] = items;
|
|
272
|
+
if (!first)
|
|
273
|
+
return [];
|
|
274
|
+
// LSP guarantees homogeneous arrays of either Location or LocationLink
|
|
275
|
+
return isLocationLink(first)
|
|
276
|
+
? items.map((l) => toMonacoLocationLink(monacoApi, l))
|
|
277
|
+
: items.map((l) => toMonacoLocation(monacoApi, l));
|
|
278
|
+
};
|
|
279
|
+
/** Convert LSP document highlights to Monaco (kind is 1-based -> 0-based) */
|
|
280
|
+
export const toMonacoHighlights = (monacoApi, highlights) => highlights.map((h) => ({
|
|
281
|
+
range: toMonacoIRange(h.range),
|
|
282
|
+
kind: h.kind ? (h.kind - 1) : monacoApi.languages.DocumentHighlightKind.Text,
|
|
283
|
+
}));
|
|
284
|
+
/** Convert LSP signature help to Monaco */
|
|
285
|
+
export const toMonacoSignatureHelp = (help) => ({
|
|
286
|
+
signatures: (help.signatures ?? []).map((s) => ({
|
|
287
|
+
label: s.label,
|
|
288
|
+
documentation: toMonacoMarkup(s.documentation),
|
|
289
|
+
parameters: (s.parameters ?? []).map((p) => ({ label: p.label, documentation: toMonacoMarkup(p.documentation) })),
|
|
290
|
+
...(s.activeParameter != null ? { activeParameter: s.activeParameter } : {}),
|
|
291
|
+
})),
|
|
292
|
+
activeSignature: help.activeSignature ?? 0,
|
|
293
|
+
activeParameter: help.activeParameter ?? 0,
|
|
294
|
+
});
|
|
295
|
+
// ---------------- Symbols / folding ----------------
|
|
296
|
+
const isSymbolInformation = (s) => 'location' in s;
|
|
297
|
+
/** Convert LSP document symbols (hierarchical or flat) to Monaco (kind 1-based -> 0-based) */
|
|
298
|
+
export const toMonacoSymbols = (symbols) => symbols.map(toMonacoSymbol);
|
|
299
|
+
const toMonacoSymbol = (s) => {
|
|
300
|
+
const range = toMonacoIRange(isSymbolInformation(s) ? s.location.range : s.range);
|
|
301
|
+
return {
|
|
302
|
+
name: s.name,
|
|
303
|
+
detail: isSymbolInformation(s) ? '' : (s.detail ?? ''),
|
|
304
|
+
kind: (s.kind - 1),
|
|
305
|
+
tags: (s.tags ?? []),
|
|
306
|
+
containerName: isSymbolInformation(s) ? s.containerName : undefined,
|
|
307
|
+
range,
|
|
308
|
+
selectionRange: isSymbolInformation(s) ? range : toMonacoIRange(s.selectionRange),
|
|
309
|
+
children: !isSymbolInformation(s) && s.children ? s.children.map(toMonacoSymbol) : undefined,
|
|
310
|
+
};
|
|
311
|
+
};
|
|
312
|
+
/** Convert LSP folding ranges to Monaco (lines 0-based -> 1-based) */
|
|
313
|
+
export const toMonacoFoldingRanges = (monacoApi, ranges) => ranges.map((r) => ({
|
|
314
|
+
start: r.startLine + 1,
|
|
315
|
+
end: r.endLine + 1,
|
|
316
|
+
kind: foldingKind(monacoApi, r.kind),
|
|
317
|
+
}));
|
|
318
|
+
const foldingKind = (monacoApi, kind) => {
|
|
319
|
+
switch (kind) {
|
|
320
|
+
case 'comment':
|
|
321
|
+
return monacoApi.languages.FoldingRangeKind.Comment;
|
|
322
|
+
case 'imports':
|
|
323
|
+
return monacoApi.languages.FoldingRangeKind.Imports;
|
|
324
|
+
case 'region':
|
|
325
|
+
return monacoApi.languages.FoldingRangeKind.Region;
|
|
326
|
+
default:
|
|
327
|
+
return undefined;
|
|
328
|
+
}
|
|
329
|
+
};
|
|
330
|
+
// ---------------- Workspace edits / rename / code actions ----------------
|
|
331
|
+
/** Convert an LSP WorkspaceEdit to Monaco (text edits only; file operations are skipped) */
|
|
332
|
+
export const toMonacoWorkspaceEdit = (monacoApi, edit) => {
|
|
333
|
+
const edits = [];
|
|
334
|
+
const push = (uri, textEdits, versionId) => {
|
|
335
|
+
const resource = monacoApi.Uri.parse(uri);
|
|
336
|
+
for (const te of textEdits)
|
|
337
|
+
edits.push({ resource, textEdit: toMonacoTextEdit(te), versionId });
|
|
338
|
+
};
|
|
339
|
+
if (edit.changes) {
|
|
340
|
+
for (const [uri, textEdits] of Object.entries(edit.changes))
|
|
341
|
+
push(uri, textEdits, undefined);
|
|
342
|
+
}
|
|
343
|
+
if (edit.documentChanges) {
|
|
344
|
+
for (const dc of edit.documentChanges) {
|
|
345
|
+
if ('textDocument' in dc && 'edits' in dc)
|
|
346
|
+
push(dc.textDocument.uri, dc.edits, dc.textDocument.version ?? undefined);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
return { edits };
|
|
350
|
+
};
|
|
351
|
+
/** Convert an LSP prepareRename result to a Monaco rename location (or rejection) */
|
|
352
|
+
export const toMonacoRenameLocation = (monacoApi, model, position, result) => {
|
|
353
|
+
const wordRange = () => {
|
|
354
|
+
const word = model.getWordAtPosition(position);
|
|
355
|
+
const range = word
|
|
356
|
+
? new monacoApi.Range(position.lineNumber, word.startColumn, position.lineNumber, word.endColumn)
|
|
357
|
+
: new monacoApi.Range(position.lineNumber, position.column, position.lineNumber, position.column);
|
|
358
|
+
return { range, text: word?.word ?? '' };
|
|
359
|
+
};
|
|
360
|
+
if (!result)
|
|
361
|
+
return { ...wordRange(), rejectReason: 'You cannot rename this element.' };
|
|
362
|
+
if ('placeholder' in result)
|
|
363
|
+
return { range: toMonacoIRange(result.range), text: result.placeholder };
|
|
364
|
+
if ('defaultBehavior' in result)
|
|
365
|
+
return wordRange();
|
|
366
|
+
const range = toMonacoIRange(result);
|
|
367
|
+
return { range, text: model.getValueInRange(range) };
|
|
368
|
+
};
|
|
369
|
+
/** Store the original LSP code action for codeAction/resolve */
|
|
370
|
+
const LSP_CODE_ACTION_KEY = Symbol.for('__lsp_code_action__');
|
|
371
|
+
export const getLspCodeAction = (a) => a[LSP_CODE_ACTION_KEY];
|
|
372
|
+
const isCommandResult = (a) => typeof a.command === 'string';
|
|
373
|
+
const toMonacoCommand = (c) => ({
|
|
374
|
+
id: c.command,
|
|
375
|
+
title: c.title,
|
|
376
|
+
arguments: c.arguments,
|
|
377
|
+
});
|
|
378
|
+
/** Convert a single LSP code action or command to Monaco */
|
|
379
|
+
export const toMonacoCodeAction = (monacoApi, a) => {
|
|
380
|
+
if (isCommandResult(a))
|
|
381
|
+
return { title: a.title, command: toMonacoCommand(a) };
|
|
382
|
+
const result = {
|
|
383
|
+
title: a.title,
|
|
384
|
+
kind: a.kind,
|
|
385
|
+
isPreferred: a.isPreferred,
|
|
386
|
+
disabled: a.disabled?.reason,
|
|
387
|
+
edit: a.edit ? toMonacoWorkspaceEdit(monacoApi, a.edit) : undefined,
|
|
388
|
+
command: a.command ? toMonacoCommand(a.command) : undefined,
|
|
389
|
+
};
|
|
390
|
+
result[LSP_CODE_ACTION_KEY] = a;
|
|
391
|
+
return result;
|
|
392
|
+
};
|
|
393
|
+
/** Convert LSP code action results to Monaco */
|
|
394
|
+
export const toMonacoCodeActions = (monacoApi, actions) => actions.map((a) => toMonacoCodeAction(monacoApi, a));
|
|
395
|
+
/** Map Monaco markers back to LSP diagnostics (lossy; used for codeAction context) */
|
|
396
|
+
export const toLspDiagnostics = (monacoApi, markers) => markers.map((m) => ({
|
|
397
|
+
range: toLspRange(m),
|
|
398
|
+
message: m.message,
|
|
399
|
+
severity: fromMarkerSeverity(monacoApi, m.severity),
|
|
400
|
+
code: typeof m.code === 'object' ? m.code.value : m.code,
|
|
401
|
+
source: m.source,
|
|
402
|
+
tags: m.tags ? m.tags.map((t) => (t === monacoApi.MarkerTag.Unnecessary ? 1 : 2)) : undefined,
|
|
403
|
+
}));
|
|
404
|
+
const fromMarkerSeverity = (monacoApi, s) => {
|
|
405
|
+
switch (s) {
|
|
406
|
+
case monacoApi.MarkerSeverity.Error:
|
|
407
|
+
return 1;
|
|
408
|
+
case monacoApi.MarkerSeverity.Warning:
|
|
409
|
+
return 2;
|
|
410
|
+
case monacoApi.MarkerSeverity.Info:
|
|
411
|
+
return 3;
|
|
412
|
+
default:
|
|
413
|
+
return 4;
|
|
414
|
+
}
|
|
415
|
+
};
|
|
416
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,10 +36,11 @@ export declare class LspTransport {
|
|
|
36
36
|
private subs;
|
|
37
37
|
private waiters;
|
|
38
38
|
private progressCallbacks;
|
|
39
|
+
private serverRequestHandlers;
|
|
39
40
|
/** Construct a binding over a sender/receiver transport */
|
|
40
41
|
constructor(sender: (message: JsonRpcRequest<keyof RequestMap, any> | JsonRpcNotification<any, any> | Array<any>) => void, receiver: (cb: (message: any) => void) => Disposable, defaultTimeoutMs?: number);
|
|
41
42
|
/** Create a binding from a Worker-like endpoint */
|
|
42
|
-
static
|
|
43
|
+
static fromPort(worker: PostMessagePort): LspTransport;
|
|
43
44
|
/** Infer a binding from either a worker or an existing binding */
|
|
44
45
|
static infer(endpoint: Transport): LspTransport;
|
|
45
46
|
/** Track a Monaco disposable for cleanup */
|
|
@@ -50,23 +51,29 @@ export declare class LspTransport {
|
|
|
50
51
|
onProgress(token: ProgressToken, callback: ProgressHandler): Disposable;
|
|
51
52
|
/** Register a callback for all $/progress notifications */
|
|
52
53
|
onProgressNotification(callback: (params: ProgressPayload) => void): this;
|
|
54
|
+
/** Register a handler that replies to a server-to-client request method */
|
|
55
|
+
onServerRequest(method: string, handler: (params: any) => unknown | Promise<unknown>): Disposable;
|
|
53
56
|
/** Listen for a specific server notification method */
|
|
54
|
-
onServerNotification<K extends keyof ServerNotifMap>(method: K, cb: (params: ServerNotifMap[K][
|
|
57
|
+
onServerNotification<K extends keyof ServerNotifMap>(method: K, cb: (params: ServerNotifMap[K]['fields']['params']) => void): this;
|
|
55
58
|
/** Dispose all resources and reject in-flight requests */
|
|
56
59
|
dispose(): void;
|
|
57
60
|
/** Send a client-to-server notification (no response expected) */
|
|
58
|
-
sendNotification<K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K][
|
|
61
|
+
sendNotification<K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K]['fields']['params']): this;
|
|
59
62
|
/** Send an async request with timeout, cancellation and progress support */
|
|
60
|
-
sendRequest<K extends keyof RequestMap>(method: K, params: RequestMap[K][
|
|
63
|
+
sendRequest<K extends keyof RequestMap>(method: K, params: RequestMap[K]['fields']['params'], opts?: {
|
|
61
64
|
timeoutMs?: number;
|
|
62
65
|
signal?: AbortSignal;
|
|
63
66
|
workDoneToken?: ProgressToken;
|
|
64
67
|
partialResultToken?: ProgressToken;
|
|
65
68
|
onProgress?: ProgressHandler;
|
|
66
69
|
onPartialResult?: PartialResultHandler;
|
|
67
|
-
}): Promise<MaybeCancelled<RequestMap[K][
|
|
70
|
+
}): Promise<MaybeCancelled<RequestMap[K]['response']>>;
|
|
68
71
|
/** Subscribe to all inbound JSON-RPC messages */
|
|
69
72
|
private subscribe;
|
|
73
|
+
/** Send a JSON-RPC response frame for a server-to-client request */
|
|
74
|
+
private sendResponse;
|
|
75
|
+
/** Reply to a server-to-client request using a registered handler or a safe default */
|
|
76
|
+
private handleServerRequest;
|
|
70
77
|
/** Ingest an incoming frame and dispatch to listeners/waiters */
|
|
71
78
|
private ingest;
|
|
72
79
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { makeRequest, makeNotification, isRpcMessage, isRpcRequestType, isRpcResponseType, isId, JSONRPC_VERSION, } from './protocol.js';
|
|
2
2
|
import { LspError, LspErrorCode, toLspError, isCancellationError } from './error.js';
|
|
3
|
+
/** Default replies for common server-to-client requests, to avoid stalling the server */
|
|
4
|
+
const SERVER_REQUEST_DEFAULTS = {
|
|
5
|
+
'workspace/configuration': (params) => (params?.items ?? []).map(() => null),
|
|
6
|
+
'client/registerCapability': () => null,
|
|
7
|
+
'client/unregisterCapability': () => null,
|
|
8
|
+
'window/workDoneProgress/create': () => null,
|
|
9
|
+
'window/showMessageRequest': () => null,
|
|
10
|
+
'workspace/applyEdit': () => ({ applied: false }),
|
|
11
|
+
};
|
|
3
12
|
export class LspTransport {
|
|
4
13
|
sender;
|
|
5
14
|
receiver;
|
|
@@ -17,6 +26,8 @@ export class LspTransport {
|
|
|
17
26
|
waiters = new Map();
|
|
18
27
|
// Progress tracking (both work done progress and partial results use $/progress)
|
|
19
28
|
progressCallbacks = new Map();
|
|
29
|
+
// Handlers for server-to-client requests (override SERVER_REQUEST_DEFAULTS)
|
|
30
|
+
serverRequestHandlers = new Map();
|
|
20
31
|
/** Construct a binding over a sender/receiver transport */
|
|
21
32
|
constructor(sender, receiver, defaultTimeoutMs = 15_000) {
|
|
22
33
|
this.sender = sender;
|
|
@@ -28,7 +39,7 @@ export class LspTransport {
|
|
|
28
39
|
}
|
|
29
40
|
// ---------------- Constructors ----------------
|
|
30
41
|
/** Create a binding from a Worker-like endpoint */
|
|
31
|
-
static
|
|
42
|
+
static fromPort(worker) {
|
|
32
43
|
const sender = (message) => worker.postMessage(message);
|
|
33
44
|
const receiver = (cb) => {
|
|
34
45
|
const handler = (e) => cb(e.data);
|
|
@@ -39,7 +50,7 @@ export class LspTransport {
|
|
|
39
50
|
}
|
|
40
51
|
/** Infer a binding from either a worker or an existing binding */
|
|
41
52
|
static infer(endpoint) {
|
|
42
|
-
return endpoint instanceof LspTransport ? endpoint : LspTransport.
|
|
53
|
+
return endpoint instanceof LspTransport ? endpoint : LspTransport.fromPort(endpoint);
|
|
43
54
|
}
|
|
44
55
|
// -------- Helpers
|
|
45
56
|
/** Track a Monaco disposable for cleanup */
|
|
@@ -50,8 +61,6 @@ export class LspTransport {
|
|
|
50
61
|
/** Listen for error responses and forward normalized errors */
|
|
51
62
|
onError(cb) {
|
|
52
63
|
const onMessage = (res) => {
|
|
53
|
-
if (res?.jsonrpc !== JSONRPC_VERSION)
|
|
54
|
-
return;
|
|
55
64
|
if (res?.error)
|
|
56
65
|
cb(toLspError(res.error));
|
|
57
66
|
};
|
|
@@ -66,7 +75,7 @@ export class LspTransport {
|
|
|
66
75
|
/** Register a callback for all $/progress notifications */
|
|
67
76
|
onProgressNotification(callback) {
|
|
68
77
|
const onMessage = (msg) => {
|
|
69
|
-
if (msg?.
|
|
78
|
+
if (msg?.method !== '$/progress')
|
|
70
79
|
return;
|
|
71
80
|
if (msg.params)
|
|
72
81
|
callback(msg.params);
|
|
@@ -74,10 +83,15 @@ export class LspTransport {
|
|
|
74
83
|
this.disposables.add(this.subscribe(onMessage));
|
|
75
84
|
return this;
|
|
76
85
|
}
|
|
86
|
+
/** Register a handler that replies to a server-to-client request method */
|
|
87
|
+
onServerRequest(method, handler) {
|
|
88
|
+
this.serverRequestHandlers.set(method, handler);
|
|
89
|
+
return () => this.serverRequestHandlers.delete(method);
|
|
90
|
+
}
|
|
77
91
|
/** Listen for a specific server notification method */
|
|
78
92
|
onServerNotification(method, cb) {
|
|
79
93
|
const onMessage = (msg) => {
|
|
80
|
-
if (msg?.
|
|
94
|
+
if (msg?.method !== method)
|
|
81
95
|
return;
|
|
82
96
|
cb(msg.params);
|
|
83
97
|
};
|
|
@@ -102,6 +116,7 @@ export class LspTransport {
|
|
|
102
116
|
this.waiters.clear();
|
|
103
117
|
this.subs.clear();
|
|
104
118
|
this.progressCallbacks.clear();
|
|
119
|
+
this.serverRequestHandlers.clear();
|
|
105
120
|
}
|
|
106
121
|
// -------- Core API
|
|
107
122
|
/** Send a client-to-server notification (no response expected) */
|
|
@@ -210,6 +225,32 @@ export class LspTransport {
|
|
|
210
225
|
this.subs.add(cb);
|
|
211
226
|
return () => this.subs.delete(cb);
|
|
212
227
|
}
|
|
228
|
+
/** Send a JSON-RPC response frame for a server-to-client request */
|
|
229
|
+
sendResponse(id, body) {
|
|
230
|
+
const frame = 'error' in body
|
|
231
|
+
? {
|
|
232
|
+
jsonrpc: JSONRPC_VERSION,
|
|
233
|
+
id,
|
|
234
|
+
error: { code: body.error.code, message: body.error.message, data: body.error.data },
|
|
235
|
+
}
|
|
236
|
+
: { jsonrpc: JSONRPC_VERSION, id, result: body.result };
|
|
237
|
+
this.sender(frame);
|
|
238
|
+
}
|
|
239
|
+
/** Reply to a server-to-client request using a registered handler or a safe default */
|
|
240
|
+
handleServerRequest = async (req) => {
|
|
241
|
+
const handler = this.serverRequestHandlers.get(req.method) ?? SERVER_REQUEST_DEFAULTS[req.method];
|
|
242
|
+
if (!handler) {
|
|
243
|
+
return this.sendResponse(req.id, {
|
|
244
|
+
error: new LspError({ code: LspErrorCode.MethodNotFound, message: `Unhandled server request: ${req.method}` }),
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
try {
|
|
248
|
+
this.sendResponse(req.id, { result: await handler(req.params) });
|
|
249
|
+
}
|
|
250
|
+
catch (e) {
|
|
251
|
+
this.sendResponse(req.id, { error: toLspError(e) });
|
|
252
|
+
}
|
|
253
|
+
};
|
|
213
254
|
/** Ingest an incoming frame and dispatch to listeners/waiters */
|
|
214
255
|
ingest = (raw) => {
|
|
215
256
|
// Batch: process each frame independently
|
|
@@ -219,10 +260,15 @@ export class LspTransport {
|
|
|
219
260
|
return;
|
|
220
261
|
}
|
|
221
262
|
// Early drop anything that isn't a proper JSON-RPC 2.0 message
|
|
222
|
-
if (!raw
|
|
263
|
+
if (!isRpcMessage(raw))
|
|
264
|
+
return;
|
|
265
|
+
// Server-to-client request: has both an id and a method. Reply so the server doesn't stall.
|
|
266
|
+
if (isId(raw.id) && typeof raw.method === 'string') {
|
|
267
|
+
this.handleServerRequest(raw);
|
|
223
268
|
return;
|
|
269
|
+
}
|
|
224
270
|
// Handle $/progress notifications
|
|
225
|
-
if (
|
|
271
|
+
if (isRpcRequestType('$/progress', raw)) {
|
|
226
272
|
const params = raw.params;
|
|
227
273
|
const callback = this.progressCallbacks.get(params.token);
|
|
228
274
|
if (callback) {
|
|
@@ -238,19 +284,15 @@ export class LspTransport {
|
|
|
238
284
|
// Still fan out to subscribers for withProgress handlers
|
|
239
285
|
}
|
|
240
286
|
// 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;
|
|
287
|
+
if (isRpcResponseType(raw)) {
|
|
288
|
+
const waiter = this.waiters.get(raw.id);
|
|
289
|
+
if (waiter) {
|
|
290
|
+
// Claim and stop propagation to generic handlers
|
|
291
|
+
this.waiters.delete(raw.id);
|
|
292
|
+
try {
|
|
293
|
+
waiter(raw);
|
|
253
294
|
}
|
|
295
|
+
catch { }
|
|
254
296
|
}
|
|
255
297
|
}
|
|
256
298
|
// Fan-out to generic subscribers (e.g. withHandlers / withError / withProgress)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","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.4",
|
|
4
4
|
"description": "Lightweight Monaco–LSP bridge with JSON-RPC transport",
|
|
5
5
|
"author": "Dan Beaven <dm.beaven@gmail.com>",
|
|
6
6
|
"repository": {
|
|
@@ -9,24 +9,23 @@
|
|
|
9
9
|
},
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"type": "module",
|
|
12
|
-
"main": "lib/
|
|
13
|
-
"types": "lib/
|
|
14
|
-
"module": "lib/
|
|
12
|
+
"main": "lib/index.js",
|
|
13
|
+
"types": "lib/index.d.ts",
|
|
14
|
+
"module": "lib/index.js",
|
|
15
15
|
"sideEffects": false,
|
|
16
16
|
"exports": {
|
|
17
17
|
"./package.json": "./package.json",
|
|
18
18
|
".": {
|
|
19
|
-
"types": "./lib/
|
|
20
|
-
"import": "./lib/
|
|
21
|
-
"require": "./lib/cjs/index.js"
|
|
19
|
+
"types": "./lib/index.d.ts",
|
|
20
|
+
"import": "./lib/index.js"
|
|
22
21
|
}
|
|
23
22
|
},
|
|
24
23
|
"files": [
|
|
25
24
|
"lib",
|
|
26
|
-
"src",
|
|
27
25
|
"README.md",
|
|
28
26
|
"package.json",
|
|
29
27
|
"!**/*.test.*",
|
|
28
|
+
"!src/test-utils.ts",
|
|
30
29
|
"tsconfig.json"
|
|
31
30
|
],
|
|
32
31
|
"keywords": [
|
|
@@ -41,26 +40,22 @@
|
|
|
41
40
|
"formatting"
|
|
42
41
|
],
|
|
43
42
|
"scripts": {
|
|
44
|
-
"build": "
|
|
43
|
+
"build": "tsc",
|
|
45
44
|
"format": "prettier --write .",
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"typecheck": "tsc --noEmit",
|
|
49
|
-
"test": "vitest"
|
|
45
|
+
"test": "vitest run 'src'",
|
|
46
|
+
"test:watch": "vitest"
|
|
50
47
|
},
|
|
51
48
|
"dependencies": {
|
|
52
|
-
"vscode-languageserver-protocol": "^3.
|
|
49
|
+
"vscode-languageserver-protocol": "^3.18.0"
|
|
53
50
|
},
|
|
54
51
|
"peerDependencies": {
|
|
55
52
|
"monaco-editor": ">=0.35.0"
|
|
56
53
|
},
|
|
57
54
|
"devDependencies": {
|
|
58
|
-
"monaco-editor": "^0.
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"typescript": "^5.6.3",
|
|
63
|
-
"vitest": "^3.0.5"
|
|
55
|
+
"monaco-editor": "^0.55.1",
|
|
56
|
+
"prettier": "^3.8.4",
|
|
57
|
+
"typescript": "^6.0.3",
|
|
58
|
+
"vitest": "^4.1.9"
|
|
64
59
|
},
|
|
65
60
|
"prettier": {
|
|
66
61
|
"semi": false,
|
package/tsconfig.json
CHANGED
|
@@ -10,12 +10,11 @@
|
|
|
10
10
|
"moduleResolution": "nodenext" /* Specify how TypeScript looks up a file from a given module specifier. */,
|
|
11
11
|
|
|
12
12
|
/* Emit */
|
|
13
|
-
"noEmit":
|
|
13
|
+
"noEmit": false,
|
|
14
14
|
"declaration": true /* Generate .d.ts files from TypeScript and JavaScript files in your project. */,
|
|
15
15
|
"declarationMap": true /* Create sourcemaps for d.ts files. */,
|
|
16
16
|
"sourceMap": true /* Create source map files for emitted JavaScript files. */,
|
|
17
|
-
"outDir": "lib
|
|
18
|
-
"declarationDir": "lib/ts",
|
|
17
|
+
"outDir": "lib" /* Specify an output folder for all emitted files. */,
|
|
19
18
|
|
|
20
19
|
/* Interop Constraints */
|
|
21
20
|
"isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */,
|
|
@@ -45,5 +44,6 @@
|
|
|
45
44
|
/* Completeness */
|
|
46
45
|
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
|
47
46
|
},
|
|
48
|
-
"include": ["src/**/*"]
|
|
47
|
+
"include": ["src/**/*"],
|
|
48
|
+
"exclude": ["src/**/*.test.ts", "src/test-utils.ts"]
|
|
49
49
|
}
|
package/lib/cjs/error.js
DELETED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toLspError = exports.isCancellationError = exports.LspError = exports.LspErrorCode = void 0;
|
|
4
|
-
var LspErrorCode;
|
|
5
|
-
(function (LspErrorCode) {
|
|
6
|
-
// JSON-RPC predefined errors (-32700 to -32600)
|
|
7
|
-
LspErrorCode[LspErrorCode["ParseError"] = -32700] = "ParseError";
|
|
8
|
-
LspErrorCode[LspErrorCode["InvalidRequest"] = -32600] = "InvalidRequest";
|
|
9
|
-
LspErrorCode[LspErrorCode["MethodNotFound"] = -32601] = "MethodNotFound";
|
|
10
|
-
LspErrorCode[LspErrorCode["InvalidParams"] = -32602] = "InvalidParams";
|
|
11
|
-
LspErrorCode[LspErrorCode["InternalError"] = -32603] = "InternalError";
|
|
12
|
-
// JSON-RPC reserved server error range (-32000 to -32099)
|
|
13
|
-
LspErrorCode[LspErrorCode["ServerErrorBase"] = -32000] = "ServerErrorBase";
|
|
14
|
-
// LSP-specific errors (-32900 to -32800)
|
|
15
|
-
LspErrorCode[LspErrorCode["RequestCancelled"] = -32800] = "RequestCancelled";
|
|
16
|
-
LspErrorCode[LspErrorCode["ContentModified"] = -32801] = "ContentModified";
|
|
17
|
-
LspErrorCode[LspErrorCode["ServerCancelled"] = -32802] = "ServerCancelled";
|
|
18
|
-
// Client-local errors (positive codes to avoid reserved range conflicts)
|
|
19
|
-
LspErrorCode[LspErrorCode["Timeout"] = 1001] = "Timeout";
|
|
20
|
-
LspErrorCode[LspErrorCode["Disposed"] = 1002] = "Disposed";
|
|
21
|
-
})(LspErrorCode || (exports.LspErrorCode = LspErrorCode = {}));
|
|
22
|
-
class LspError extends Error {
|
|
23
|
-
code;
|
|
24
|
-
data;
|
|
25
|
-
constructor(shape) {
|
|
26
|
-
super(shape.message);
|
|
27
|
-
this.code = shape.code;
|
|
28
|
-
this.data = shape.data;
|
|
29
|
-
this.name = 'LspError';
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
exports.LspError = LspError;
|
|
33
|
-
const isCancellationError = (e) => typeof e === 'object' &&
|
|
34
|
-
e !== null &&
|
|
35
|
-
'code' in e &&
|
|
36
|
-
(e.code === LspErrorCode.RequestCancelled || e.code === LspErrorCode.ServerCancelled);
|
|
37
|
-
exports.isCancellationError = isCancellationError;
|
|
38
|
-
const toLspError = (e) => e instanceof LspError
|
|
39
|
-
? e
|
|
40
|
-
: new LspError({
|
|
41
|
-
code: Number(e?.code ?? LspErrorCode.InternalError),
|
|
42
|
-
message: String(e?.message ?? 'Error'),
|
|
43
|
-
data: e?.data,
|
|
44
|
-
});
|
|
45
|
-
exports.toLspError = toLspError;
|
|
46
|
-
//# sourceMappingURL=error.js.map
|