Skip to content

lspeasy / server/src

server/src ​

LSP server package for hosting Language Server Protocol (LSP) servers.

Remarks ​

Use @lspeasy/server when you need to build the provider side of the Language Server Protocol — a daemon that editors and language-client tooling connect to in order to get diagnostics, completions, hover, go-to-definition, and other language intelligence features.

The primary entry point is LSPServer. Construct it with ServerOptions, call registerCapabilities(caps) to declare what the server supports, register handlers with onRequest / onNotification, then call listen(transport) to accept the first client connection.

Transport Decision Tree ​

Stdio (StdioTransport from @lspeasy/core/node) — Use when: the client spawns your server as a child process (the canonical VS Code extension pattern). No network, no port management. Failure mode: ConsoleLogger writes to stdout and corrupts the LSP stream — always use NullLogger or a file-based logger with stdio.

WebSocket (WebSocketTransport from @lspeasy/core) — Use when: multiple clients connect over a network, or the server must be browser-accessible. Each accepted WebSocket connection needs its own LSPServer instance. Failure mode: one client crash should not affect others — wrap each wss.on('connection') callback in try/catch and create a fresh LSPServer per socket.

TCP (TcpTransport from @lspeasy/core/node) — Use when: building a persistent local daemon (e.g. a formatting server shared across editor sessions). Failure mode: client disconnect fires close() on the server instance — use mode: 'server' and create a new LSPServer on each reconnect.

DedicatedWorkerTransport (DedicatedWorkerTransport from @lspeasy/core) — Use when: running the server logic in a Web Worker for in-process browser isolation. Zero serialization overhead. Failure mode: worker crash is silent from the server side — monitor the worker's onerror in the host.

Typed capability namespaces ​

After registerCapabilities({ hoverProvider: true }), TypeScript exposes server.textDocument.onHover(handler) — methods that are absent unless the corresponding capability is declared. This prevents accidentally registering handlers for capabilities the server never advertised.

Handler conventions ​

Handler ​

NameDescription
NotebookDocumentHandlerNamespaceNamespace for registering notebook-document lifecycle notification handlers.
NotificationContextContext provided to notification handlers alongside params.
RequestContextContext provided to request handlers alongside params and the cancellation token.
NotificationHandlerSignature for LSP notification handlers registered via LSPServer.onNotification.
RequestHandlerSignature for LSP request handlers registered via LSPServer.onRequest.

Lifecycle ​

EnumerationDescription
ServerStateLifecycle state of an LSPServer instance.

Other ​

CancellationToken ​

Renames and re-exports Transport


ClientCapabilities ​

Renames and re-exports Transport


CompletionItem ​

Renames and re-exports Transport


CompletionList ​

Renames and re-exports Transport


CompletionParams ​

Renames and re-exports Transport


ConsoleLogger ​

Renames and re-exports Transport


Definition ​

Renames and re-exports Transport


DefinitionParams ​

Renames and re-exports Transport


Hover ​

Renames and re-exports Transport


HoverParams ​

Renames and re-exports Transport


InitializeParams ​

Renames and re-exports Transport


InitializeResult ​

Renames and re-exports Transport


JSONRPCErrorCode ​

Renames and re-exports Transport


Logger ​

Renames and re-exports Transport


LogLevel ​

Renames and re-exports Transport


LSPNotificationMethod ​

Renames and re-exports Transport


LSPRequestMethod ​

Renames and re-exports Transport


ParamsForNotification ​

Renames and re-exports Transport


ParamsForRequest ​

Renames and re-exports Transport


ResponseError ​

Renames and re-exports Transport


ResultForRequest ​

Renames and re-exports Transport


Server ​

Renames and re-exports Transport


ServerCapabilities ​

Renames and re-exports Transport


Transport ​

Re-exports Transport

Server ​

NameDescription
MessageDispatcherRoutes incoming JSON-RPC requests and notifications to their registered handlers.
PartialResultSenderEmits typed $/progress partial-result batches from server-side request handlers.
ServerOptionsConfiguration for an LSPServer instance.
LSPServerFull-featured LSP server with automatic lifecycle management, typed handlers, capability-aware namespaces, and pluggable middleware.
LSPServerConstructs an LSPServer instance.

Released under the MIT License.