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.
Files changed (54) hide show
  1. package/lib/{ts/index.d.ts → client.d.ts} +14 -4
  2. package/lib/client.d.ts.map +1 -0
  3. package/lib/{esm/index.js → client.js} +103 -21
  4. package/lib/client.js.map +1 -0
  5. package/lib/error.d.ts.map +1 -0
  6. package/lib/{esm/error.js → error.js} +7 -3
  7. package/lib/error.js.map +1 -0
  8. package/lib/index.d.ts +4 -0
  9. package/lib/index.d.ts.map +1 -0
  10. package/lib/index.js +3 -0
  11. package/lib/index.js.map +1 -0
  12. package/lib/protocol.d.ts +102 -0
  13. package/lib/protocol.d.ts.map +1 -0
  14. package/lib/protocol.js +37 -0
  15. package/lib/protocol.js.map +1 -0
  16. package/lib/transform.d.ts +44 -0
  17. package/lib/transform.d.ts.map +1 -0
  18. package/lib/{esm/util.js → transform.js} +178 -14
  19. package/lib/transform.js.map +1 -0
  20. package/lib/{ts/transport.d.ts → transport.d.ts} +12 -5
  21. package/lib/transport.d.ts.map +1 -0
  22. package/lib/{esm/transport.js → transport.js} +63 -21
  23. package/lib/transport.js.map +1 -0
  24. package/package.json +15 -20
  25. package/tsconfig.json +4 -4
  26. package/lib/cjs/error.js +0 -46
  27. package/lib/cjs/error.js.map +0 -1
  28. package/lib/cjs/index.js +0 -594
  29. package/lib/cjs/index.js.map +0 -1
  30. package/lib/cjs/protocol.js +0 -21
  31. package/lib/cjs/protocol.js.map +0 -1
  32. package/lib/cjs/transport.js +0 -269
  33. package/lib/cjs/transport.js.map +0 -1
  34. package/lib/cjs/util.js +0 -264
  35. package/lib/cjs/util.js.map +0 -1
  36. package/lib/esm/error.js.map +0 -1
  37. package/lib/esm/index.js.map +0 -1
  38. package/lib/esm/protocol.js +0 -15
  39. package/lib/esm/protocol.js.map +0 -1
  40. package/lib/esm/transport.js.map +0 -1
  41. package/lib/esm/util.js.map +0 -1
  42. package/lib/ts/error.d.ts.map +0 -1
  43. package/lib/ts/index.d.ts.map +0 -1
  44. package/lib/ts/protocol.d.ts +0 -80
  45. package/lib/ts/protocol.d.ts.map +0 -1
  46. package/lib/ts/transport.d.ts.map +0 -1
  47. package/lib/ts/util.d.ts +0 -21
  48. package/lib/ts/util.d.ts.map +0 -1
  49. package/src/error.ts +0 -48
  50. package/src/index.ts +0 -709
  51. package/src/protocol.ts +0 -129
  52. package/src/transport.ts +0 -337
  53. package/src/util.ts +0 -300
  54. /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 range = toMonacoRange(item.textEdit);
7
- // Determine insert text format (snippet vs plain)
8
- const insertTextFormat = item.insertTextFormat ?? 1; // 1 = PlainText, 2 = Snippet
9
- const isSnippet = insertTextFormat === 2;
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
- // Insert as snippet when requested
21
- insertTextRules: isSnippet ? monacoApi.languages.CompletionItemInsertTextRule.InsertAsSnippet : undefined, // 4 = InsertAsSnippet
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
- //# sourceMappingURL=util.js.map
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 fromWorker(worker: PostMessagePort): LspTransport;
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][0]) => void): this;
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][0]): this;
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][0], opts?: {
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][1]>>;
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 { JSONRPC_VERSION, makeRequest, makeNotification, isId, } from './protocol.js';
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 fromWorker(worker) {
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.fromWorker(endpoint);
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?.jsonrpc !== JSONRPC_VERSION || msg?.method !== '$/progress')
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?.jsonrpc !== JSONRPC_VERSION || msg?.method !== method)
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 || typeof raw !== 'object' || raw.jsonrpc !== JSONRPC_VERSION)
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 (raw.method === '$/progress' && raw.params) {
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 (Object.prototype.hasOwnProperty.call(raw, 'id')) {
242
- const id = raw.id;
243
- if (isId(id)) {
244
- const waiter = this.waiters.get(id);
245
- if (waiter) {
246
- // Claim and stop propagation to generic handlers
247
- this.waiters.delete(id);
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.2",
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/cjs/index.js",
13
- "types": "lib/ts/index.d.ts",
14
- "module": "lib/esm/index.js",
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/ts/index.d.ts",
20
- "import": "./lib/esm/index.js",
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": "npm run typecheck && npm run esm && npm run cjs",
43
+ "build": "tsc",
45
44
  "format": "prettier --write .",
46
- "esm": "tsc -p ./tsconfig.esm.json",
47
- "cjs": "tsc -p ./tsconfig.cjs.json",
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.17.5"
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.54.0",
59
- "esbuild": "^0.25.5",
60
- "jsr": "^0.13.4",
61
- "prettier": "^3.3.3",
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": true,
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/esm" /* Specify an output folder for all emitted files. */,
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