monaco-lsp-bridge 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,80 @@
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';
2
+ import { LspErrorShape } from './error.js';
3
+ export type Id = number | string;
4
+ export declare const isId: (id: unknown) => id is Id;
5
+ export interface RequestMap {
6
+ [InitializeRequest.method]: [InitializeParams, InitializeResult];
7
+ [CompletionResolveRequest.method]: [CompletionItem, CompletionItem];
8
+ [CompletionRequest.method]: [CompletionParams, CompletionList | CompletionItem[] | null];
9
+ [DocumentFormattingRequest.method]: [DocumentFormattingParams, TextEdit[] | null];
10
+ [DocumentRangeFormattingRequest.method]: [DocumentRangeFormattingParams, TextEdit[] | null];
11
+ [DocumentOnTypeFormattingRequest.method]: [DocumentOnTypeFormattingParams, TextEdit[] | null];
12
+ [HoverRequest.method]: [HoverParams, Hover | null];
13
+ shutdown: [null, null];
14
+ }
15
+ export interface ClientNotifMap {
16
+ [DidOpenTextDocumentNotification.method]: [DidOpenTextDocumentParams, void];
17
+ [DidChangeTextDocumentNotification.method]: [DidChangeTextDocumentParams, void];
18
+ [DidCloseTextDocumentNotification.method]: [DidCloseTextDocumentParams, void];
19
+ '$/cancelRequest': [{
20
+ id: Id;
21
+ }, void];
22
+ exit: [null, void];
23
+ }
24
+ export interface ServerNotifMap {
25
+ '$/progress': [{
26
+ token: ProgressToken;
27
+ value: any;
28
+ }, void];
29
+ [PublishDiagnosticsNotification.method]: [PublishDiagnosticsParams, void];
30
+ [LogMessageNotification.method]: [LogMessageParams, void];
31
+ }
32
+ export declare const JSONRPC_VERSION = "2.0";
33
+ type JSONRPC = typeof JSONRPC_VERSION;
34
+ export type JsonRpcRequest<K, T> = {
35
+ jsonrpc: JSONRPC;
36
+ id: Id;
37
+ params: T;
38
+ method: K;
39
+ };
40
+ export type JsonRpcResponse<T> = {
41
+ jsonrpc: JSONRPC;
42
+ id: Id;
43
+ result: T;
44
+ error?: undefined;
45
+ } | {
46
+ jsonrpc: JSONRPC;
47
+ id: Id;
48
+ result?: undefined;
49
+ error: LspErrorShape;
50
+ };
51
+ export type JsonRpcNotification<K, T> = {
52
+ jsonrpc: JSONRPC;
53
+ method: K;
54
+ params: T;
55
+ };
56
+ export declare const makeRequest: <K extends keyof RequestMap>(id: Id, method: K, params: RequestMap[K][0]) => JsonRpcRequest<K, RequestMap[K][0]>;
57
+ export declare const makeNotification: <K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K][0]) => JsonRpcNotification<K, ClientNotifMap[K][0]>;
58
+ export type ProgressPayload<T = any> = {
59
+ token: ProgressToken;
60
+ value: T;
61
+ };
62
+ export type WorkDoneProgressBegin = {
63
+ kind: 'begin';
64
+ title: string;
65
+ cancellable?: boolean;
66
+ message?: string;
67
+ percentage?: number;
68
+ };
69
+ export type WorkDoneProgressReport = {
70
+ kind: 'report';
71
+ cancellable?: boolean;
72
+ message?: string;
73
+ percentage?: number;
74
+ };
75
+ export type WorkDoneProgressEnd = {
76
+ kind: 'end';
77
+ message?: string;
78
+ };
79
+ export {};
80
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import type { ProgressToken } from 'vscode-languageserver-protocol';
2
+ import type * as monaco from 'monaco-editor';
3
+ import { JsonRpcRequest, RequestMap, ClientNotifMap, ServerNotifMap, JsonRpcNotification, ProgressPayload } from './protocol.js';
4
+ import { LspError, LspErrorCode } from './error.js';
5
+ export type Transport = PostMessagePort | LspTransport;
6
+ export interface PostMessagePort {
7
+ postMessage(message: any): void;
8
+ addEventListener(type: 'message', listener: (event: {
9
+ data: any;
10
+ }) => void): void;
11
+ removeEventListener(type: 'message', listener: (event: {
12
+ data: any;
13
+ }) => void): void;
14
+ }
15
+ type Disposable = () => void;
16
+ export type Cancelled = {
17
+ cancelled: true;
18
+ code: LspErrorCode.RequestCancelled | LspErrorCode.ServerCancelled;
19
+ };
20
+ export type MaybeCancelled<T> = {
21
+ cancelled: false;
22
+ result: T;
23
+ } | Cancelled;
24
+ export type ProgressHandler<T = any> = (value: T) => void;
25
+ export type PartialResultHandler<T = any> = (partialResult: T) => void;
26
+ export declare class LspTransport {
27
+ private readonly sender;
28
+ private readonly receiver;
29
+ private readonly defaultTimeoutMs;
30
+ private nextId;
31
+ private nextTokenId;
32
+ private disposables;
33
+ private pending;
34
+ private timeouts;
35
+ private rejectors;
36
+ private subs;
37
+ private waiters;
38
+ private progressCallbacks;
39
+ /** Construct a binding over a sender/receiver transport */
40
+ constructor(sender: (message: JsonRpcRequest<keyof RequestMap, any> | JsonRpcNotification<any, any> | Array<any>) => void, receiver: (cb: (message: any) => void) => Disposable, defaultTimeoutMs?: number);
41
+ /** Create a binding from a Worker-like endpoint */
42
+ static fromWorker(worker: PostMessagePort): LspTransport;
43
+ /** Infer a binding from either a worker or an existing binding */
44
+ static infer(endpoint: Transport): LspTransport;
45
+ /** Track a Monaco disposable for cleanup */
46
+ addDisposable(d: monaco.IDisposable): this;
47
+ /** Listen for error responses and forward normalized errors */
48
+ onError(cb: (error: LspError) => void): this;
49
+ /** Register a progress callback for a specific token */
50
+ onProgress(token: ProgressToken, callback: ProgressHandler): Disposable;
51
+ /** Register a callback for all $/progress notifications */
52
+ onProgressNotification(callback: (params: ProgressPayload) => void): this;
53
+ /** Listen for a specific server notification method */
54
+ onServerNotification<K extends keyof ServerNotifMap>(method: K, cb: (params: ServerNotifMap[K][0]) => void): this;
55
+ /** Dispose all resources and reject in-flight requests */
56
+ dispose(): void;
57
+ /** Send a client-to-server notification (no response expected) */
58
+ sendNotification<K extends keyof ClientNotifMap>(method: K, params: ClientNotifMap[K][0]): this;
59
+ /** Send an async request with timeout, cancellation and progress support */
60
+ sendRequest<K extends keyof RequestMap>(method: K, params: RequestMap[K][0], opts?: {
61
+ timeoutMs?: number;
62
+ signal?: AbortSignal;
63
+ workDoneToken?: ProgressToken;
64
+ partialResultToken?: ProgressToken;
65
+ onProgress?: ProgressHandler;
66
+ onPartialResult?: PartialResultHandler;
67
+ }): Promise<MaybeCancelled<RequestMap[K][1]>>;
68
+ /** Subscribe to all inbound JSON-RPC messages */
69
+ private subscribe;
70
+ /** Ingest an incoming frame and dispatch to listeners/waiters */
71
+ private ingest;
72
+ }
73
+ export {};
74
+ //# sourceMappingURL=transport.d.ts.map
@@ -0,0 +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,EAIL,cAAc,EACd,UAAU,EACV,cAAc,EACd,cAAc,EAEd,mBAAmB,EACnB,eAAe,EAGhB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAmC,MAAM,YAAY,CAAA;AAEpF,MAAM,MAAM,SAAS,GAAG,eAAe,GAAG,YAAY,CAAA;AAEtD,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,CAAA;IAC/B,gBAAgB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAA;IACjF,mBAAmB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,GAAG,IAAI,CAAA;CACrF;AAED,KAAK,UAAU,GAAG,MAAM,IAAI,CAAA;AAE5B,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,IAAI,CAAA;IACf,IAAI,EAAE,YAAY,CAAC,gBAAgB,GAAG,YAAY,CAAC,eAAe,CAAA;CACnE,CAAA;AAED,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,GAAG,SAAS,CAAA;AAE3E,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAA;AACzD,MAAM,MAAM,oBAAoB,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,IAAI,CAAA;AAEtE,qBAAa,YAAY;IAqBrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAGvB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IAxBnC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,WAAW,CAAI;IACvB,OAAO,CAAC,WAAW,CAA6B;IAGhD,OAAO,CAAC,OAAO,CAAuD;IAGtE,OAAO,CAAC,QAAQ,CAA+C;IAC/D,OAAO,CAAC,SAAS,CAAyC;IAG1D,OAAO,CAAC,IAAI,CAAoC;IAChD,OAAO,CAAC,OAAO,CAAqD;IAGpE,OAAO,CAAC,iBAAiB,CAA4C;IAErE,2DAA2D;gBAExC,MAAM,EAAE,CACvB,OAAO,EAAE,cAAc,CAAC,MAAM,UAAU,EAAE,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KACxF,IAAI,EACQ,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,KAAK,UAAU,EACpD,gBAAgB,GAAE,MAAe;IAQpD,mDAAmD;IACnD,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY;IAUxD,kEAAkE;IAClE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,GAAG,YAAY;IAK/C,4CAA4C;IAC5C,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW;IAKnC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI;IASrC,wDAAwD;IACxD,UAAU,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,GAAG,UAAU;IAKvE,2DAA2D;IAC3D,sBAAsB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI;IASlE,uDAAuD;IACvD,oBAAoB,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;IAS1G,0DAA0D;IAC1D,OAAO;IAqBP,kEAAkE;IAClE,gBAAgB,CAAC,CAAC,SAAS,MAAM,cAAc,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAKxF,4EAA4E;IAC5E,WAAW,CAAC,CAAC,SAAS,MAAM,UAAU,EACpC,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACxB,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,MAAM,CAAC,EAAE,WAAW,CAAA;QACpB,aAAa,CAAC,EAAE,aAAa,CAAA;QAC7B,kBAAkB,CAAC,EAAE,aAAa,CAAA;QAClC,UAAU,CAAC,EAAE,eAAe,CAAA;QAC5B,eAAe,CAAC,EAAE,oBAAoB,CAAA;KACvC,GACA,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IA4G5C,iDAAiD;IACjD,OAAO,CAAC,SAAS;IAKjB,iEAAiE;IACjE,OAAO,CAAC,MAAM,CAiDb;CACF"}
@@ -0,0 +1,21 @@
1
+ import type { CompletionItem, TextEdit, Range, Position, Diagnostic, Hover } from 'vscode-languageserver-protocol';
2
+ import type * as monaco from 'monaco-editor';
3
+ /** Convert LSP CompletionItem to Monaco and stash original */
4
+ export declare const toMonacoCompletionItem: (monacoApi: typeof monaco, item: CompletionItem) => monaco.languages.CompletionItem;
5
+ /** Convert Monaco CompletionItem to LSP, preferring original */
6
+ export declare const toLspCompletionItem: (item: monaco.languages.CompletionItem) => CompletionItem;
7
+ /** Merge resolved LSP fields into Monaco item */
8
+ export declare const mergeResolvedCompletionItem: (monacoItem: monaco.languages.CompletionItem, resolvedLspItem: CompletionItem) => monaco.languages.CompletionItem;
9
+ /** Convert Monaco IRange to LSP Range (1-based → 0-based) */
10
+ export declare const toLspRange: (range: monaco.IRange) => Range;
11
+ /** Convert LSP Position to Monaco IPosition */
12
+ export declare const toMonacoPosition: (position: Position) => monaco.IPosition;
13
+ /** Convert Monaco IPosition to LSP Position */
14
+ export declare const toLspPosition: (position: monaco.IPosition) => Position;
15
+ /** Map LSP diagnostics to Monaco markers */
16
+ export declare const toMonacoMarkers: (monacoApi: typeof monaco, diagnostics: Diagnostic[]) => monaco.editor.IMarkerData[];
17
+ /** Map LSP TextEdits to Monaco edits */
18
+ export declare const toMonacoTextEdits: (edits: TextEdit[]) => monaco.languages.TextEdit[];
19
+ /** Convert LSP Hover to Monaco Hover */
20
+ export declare const lspHoverToMonaco: (hover: Hover) => monaco.languages.Hover;
21
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.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/package.json ADDED
@@ -0,0 +1,68 @@
1
+ {
2
+ "name": "monaco-lsp-bridge",
3
+ "version": "0.0.1",
4
+ "description": "Lightweight Monaco–LSP bridge with JSON-RPC transport",
5
+ "author": "Dan Beaven <dm.beaven@gmail.com>",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/Pingid/monaco-lsp-bridge.git"
9
+ },
10
+ "license": "MIT",
11
+ "type": "module",
12
+ "main": "lib/cjs/index.js",
13
+ "types": "lib/ts/index.d.ts",
14
+ "module": "lib/esm/index.js",
15
+ "sideEffects": false,
16
+ "exports": {
17
+ "./package.json": "./package.json",
18
+ ".": {
19
+ "types": "./lib/ts/index.d.ts",
20
+ "import": "./lib/esm/index.js",
21
+ "require": "./lib/cjs/index.js"
22
+ }
23
+ },
24
+ "files": [
25
+ "lib",
26
+ "src",
27
+ "README.md",
28
+ "package.json",
29
+ "!**/*.test.*",
30
+ "tsconfig.json"
31
+ ],
32
+ "keywords": [
33
+ "monaco",
34
+ "lsp",
35
+ "language-server",
36
+ "json-rpc",
37
+ "editor",
38
+ "diagnostics",
39
+ "completion",
40
+ "hover",
41
+ "formatting"
42
+ ],
43
+ "scripts": {
44
+ "build": "npm run typecheck && npm run esm && npm run cjs",
45
+ "format": "prettier --write .",
46
+ "esm": "tsc -p ./tsconfig.esm.json",
47
+ "cjs": "tsc -p ./tsconfig.cjs.json",
48
+ "typecheck": "tsc --noEmit",
49
+ "test": "vitest"
50
+ },
51
+ "dependencies": {
52
+ "monaco-editor": "^0.54.0",
53
+ "vscode-languageserver-protocol": "^3.17.5"
54
+ },
55
+ "devDependencies": {
56
+ "esbuild": "^0.25.5",
57
+ "jsr": "^0.13.4",
58
+ "prettier": "^3.3.3",
59
+ "typescript": "^5.6.3",
60
+ "vitest": "^3.0.5"
61
+ },
62
+ "prettier": {
63
+ "semi": false,
64
+ "singleQuote": true,
65
+ "printWidth": 120,
66
+ "trailingComma": "all"
67
+ }
68
+ }
package/src/error.ts ADDED
@@ -0,0 +1,48 @@
1
+ export enum LspErrorCode {
2
+ // JSON-RPC predefined errors (-32700 to -32600)
3
+ ParseError = -32700,
4
+ InvalidRequest = -32600,
5
+ MethodNotFound = -32601,
6
+ InvalidParams = -32602,
7
+ InternalError = -32603,
8
+
9
+ // JSON-RPC reserved server error range (-32000 to -32099)
10
+ ServerErrorBase = -32000,
11
+
12
+ // LSP-specific errors (-32900 to -32800)
13
+ RequestCancelled = -32800,
14
+ ContentModified = -32801,
15
+ ServerCancelled = -32802,
16
+
17
+ // Client-local errors (positive codes to avoid reserved range conflicts)
18
+ Timeout = 1001,
19
+ Disposed = 1002,
20
+ }
21
+
22
+ export type LspErrorShape = { code: number; message: string; data?: unknown }
23
+
24
+ export class LspError extends Error {
25
+ code: number
26
+ data?: unknown
27
+ constructor(shape: LspErrorShape) {
28
+ super(shape.message)
29
+ this.code = shape.code
30
+ this.data = shape.data
31
+ this.name = 'LspError'
32
+ }
33
+ }
34
+
35
+ export const isCancellationError = (e: unknown) =>
36
+ typeof e === 'object' &&
37
+ e !== null &&
38
+ 'code' in (e as any) &&
39
+ ((e as any).code === LspErrorCode.RequestCancelled || (e as any).code === LspErrorCode.ServerCancelled)
40
+
41
+ export const toLspError = (e: any): LspError =>
42
+ e instanceof LspError
43
+ ? e
44
+ : new LspError({
45
+ code: Number(e?.code ?? LspErrorCode.InternalError),
46
+ message: String(e?.message ?? 'Error'),
47
+ data: e?.data,
48
+ })