@lspeasy/server 4.0.2 → 4.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/dist/server.d.ts CHANGED
@@ -5,18 +5,75 @@ import type { Transport, Disposable, ServerCapabilities, ClientCapabilities, LSP
5
5
  import type { ServerOptions, RequestHandler, NotificationHandler, NotebookDocumentHandlerNamespace } from './types.js';
6
6
  import { ServerState } from './types.js';
7
7
  /**
8
- * LSP Server class with dynamic capability-aware typing
8
+ * Full-featured LSP server with automatic lifecycle management, typed handlers,
9
+ * capability-aware namespaces, and pluggable middleware.
9
10
  *
10
- * This class dynamically provides handler registration and send methods based on capabilities.
11
- * Methods are type-safe and conditionally available based on the Capabilities type parameter.
11
+ * @remarks
12
+ * `LSPServer` manages the complete LSP lifecycle (`initialize` / `initialized`
13
+ * / `shutdown` / `exit`) automatically. Register your handlers with
14
+ * `onRequest` / `onNotification`, declare capabilities with
15
+ * `registerCapabilities`, then start the server with `listen(transport)`.
12
16
  *
13
- * @template Capabilities - Server capabilities (defaults to ServerCapabilities)
17
+ * ### Capability-aware namespaces
18
+ *
19
+ * After calling `registerCapabilities(caps)`, the server exposes typed
20
+ * namespaces — e.g. `server.textDocument.onHover(handler)` — that are only
21
+ * present when the corresponding capability is declared. TypeScript enforces
22
+ * this at compile time so you cannot accidentally register a handler for a
23
+ * capability you never advertised.
24
+ *
25
+ * ### Transport selection
26
+ *
27
+ * - **Browser / universal**: `WebSocketTransport` (from `@lspeasy/core`)
28
+ * - **Node.js**: `StdioTransport`, `TcpTransport`, `IpcTransport` (from `@lspeasy/core/node`)
29
+ * - **Web Workers**: `DedicatedWorkerTransport`, `SharedWorkerTransport` (from `@lspeasy/core`)
30
+ *
31
+ * @useWhen
32
+ * You are building an LSP language server that editors and language-client
33
+ * tooling will connect to. `LSPServer` is the primary entry point for all
34
+ * server implementations.
35
+ *
36
+ * @avoidWhen
37
+ * You need a bare JSON-RPC layer without LSP semantics — use the transport
38
+ * and framing utilities directly instead.
39
+ *
40
+ * @never
41
+ * NEVER call `server.shutdown()` or `server.close()` from inside a request
42
+ * or notification handler — doing so attempts to close the transport while it
43
+ * is actively dispatching, causing a deadlock.
44
+ *
45
+ * NEVER mutate `ServerCapabilities` after `initialized` has been received.
46
+ * The client cached the `InitializeResult` at handshake time; runtime changes
47
+ * are invisible to it.
48
+ *
49
+ * NEVER share one `LSPServer` instance across multiple transports or
50
+ * connections. Each connection requires its own server instance to maintain
51
+ * independent protocol state (lifecycle phase, pending request IDs, etc.).
52
+ *
53
+ * NEVER send a server-to-client notification before the `initialize` response
54
+ * has been dispatched. Use the `initialized` notification handler as the
55
+ * earliest safe point for server-initiated messages.
14
56
  *
15
57
  * @example
16
- * // Create a server with specific capabilities
17
- * type MyCaps = { hoverProvider: true; completionProvider: { triggerCharacters: ['.'] } };
18
- * const server = new LSPServer<MyCaps>();
19
- * server.registerCapabilities({ hoverProvider: true, completionProvider: { triggerCharacters: ['.'] } });
58
+ * ```ts
59
+ * import { LSPServer } from '@lspeasy/server';
60
+ * // Node.js: import { StdioTransport } from '@lspeasy/core/node';
61
+ * // Browser: import { WebSocketTransport } from '@lspeasy/core';
62
+ *
63
+ * const server = new LSPServer({ name: 'my-lsp', version: '1.0.0' })
64
+ * .registerCapabilities({ hoverProvider: true });
65
+ *
66
+ * server.textDocument.onHover(async (params, token) => {
67
+ * if (token.isCancellationRequested) return null;
68
+ * return { contents: { kind: 'plaintext', value: 'Hello from my-lsp' } };
69
+ * });
70
+ *
71
+ * const transport = new StdioTransport();
72
+ * await server.listen(transport);
73
+ * ```
74
+ *
75
+ * @template Capabilities - Shape of the server capabilities, defaults to `ServerCapabilities`.
76
+ * @category Server
20
77
  */
21
78
  export declare class BaseLSPServer<Capabilities extends Partial<ServerCapabilities> = ServerCapabilities> {
22
79
  private readonly logger;
@@ -104,19 +161,56 @@ export declare class BaseLSPServer<Capabilities extends Partial<ServerCapabiliti
104
161
  */
105
162
  expect<C extends Partial<ClientCapabilities>>(): this & Server<C, Capabilities>;
106
163
  /**
107
- * Send a server-to-client request.
164
+ * Send a server-to-client request and await the client's response.
165
+ *
166
+ * @param method - The LSP request method name (server-to-client direction).
167
+ * @param params - Optional request parameters.
168
+ * @returns A promise resolving to the client's result.
169
+ * @throws {Error} When not listening (transport not attached). Fix: only call `sendRequest` from inside a handler or after the `listening` event fires.
170
+ * @throws {Error} When the client returns a JSON-RPC error response. Fix: catch and inspect `error.code`; `window/showMessageRequest` rejections are user-initiated (user dismissed), not bugs.
171
+ * @throws {Error} When the request times out (if `requestTimeout` is configured). Fix: increase `ServerOptions.requestTimeout` for slow UI interactions like `window/showMessageRequest`.
172
+ *
173
+ * @category Server
108
174
  */
109
175
  sendRequest<Method extends LSPRequestMethod<'serverToClient'>>(method: Method, params?: ParamsForRequest<Method>): Promise<ResultForRequest<Method>>;
110
176
  /**
111
- * Send a server-to-client notification.
177
+ * Send a server-to-client notification (fire-and-forget).
178
+ *
179
+ * @param method - The LSP notification method name (server-to-client direction).
180
+ * @param params - Optional notification parameters.
181
+ * @throws {Error} When not listening. Fix: only send notifications after `listen()` resolves and before `shutdown()` is called; guard with `isListening()`.
182
+ * @throws {Error} When the transport's underlying `send()` fails (e.g. broken socket). Fix: subscribe to `server.onError()` to catch transport-level write failures.
183
+ *
184
+ * @category Server
112
185
  */
113
186
  sendNotification<Method extends LSPNotificationMethod<'serverToClient'>>(method: Method, params?: ParamsForNotification<Method>): Promise<void>;
114
187
  /**
115
- * Start listening on a transport
188
+ * Attaches the server to a transport and begins processing messages.
189
+ *
190
+ * @remarks
191
+ * After `listen()` returns the server is ready to receive the `initialize`
192
+ * request from the client. The LSP handshake proceeds automatically.
193
+ *
194
+ * @param transport - The transport to listen on.
195
+ * @throws {Error} When already listening. Fix: call `close()` then create a fresh `LSPServer` instance — do not reuse a single instance across connections.
196
+ *
197
+ * @category Lifecycle
116
198
  */
117
199
  listen(transport: Transport): Promise<void>;
118
200
  /**
119
- * Graceful shutdown
201
+ * Initiates graceful shutdown, waits for in-flight handlers, then closes
202
+ * the transport.
203
+ *
204
+ * @remarks
205
+ * Waits up to `timeout` ms for pending handlers to complete, then
206
+ * cancels any remaining in-flight requests before closing. Use this method
207
+ * to shut down in response to an OS signal or editor session end.
208
+ *
209
+ * @param timeout - Maximum milliseconds to wait for in-flight handlers before
210
+ * force-cancelling them.
211
+ * @defaultValue 5000
212
+ *
213
+ * @category Lifecycle
120
214
  */
121
215
  shutdown(timeout?: number): Promise<void>;
122
216
  /**
@@ -165,6 +259,68 @@ export declare class BaseLSPServer<Capabilities extends Partial<ServerCapabiliti
165
259
  */
166
260
  private handleResponse;
167
261
  }
262
+ /**
263
+ * Full-featured LSP server with automatic lifecycle management, typed handlers,
264
+ * capability-aware namespaces, and pluggable middleware.
265
+ *
266
+ * @remarks
267
+ * `LSPServer` manages the complete LSP lifecycle (`initialize` / `initialized`
268
+ * / `shutdown` / `exit`) automatically. Register handlers with `onRequest` /
269
+ * `onNotification`, declare capabilities with `registerCapabilities`, then
270
+ * start with `listen(transport)`.
271
+ *
272
+ * ### Capability-aware namespaces
273
+ * After `registerCapabilities({ hoverProvider: true })`, TypeScript exposes
274
+ * `server.textDocument.onHover(handler)` — methods absent unless the
275
+ * corresponding capability is declared.
276
+ *
277
+ * @useWhen
278
+ * You are building an LSP language server that editors and language-client
279
+ * tooling will connect to.
280
+ *
281
+ * @avoidWhen
282
+ * You need a bare JSON-RPC layer without LSP semantics — use the transport
283
+ * and framing utilities from `@lspeasy/core` directly.
284
+ *
285
+ * @never
286
+ * NEVER call `server.shutdown()` or `server.close()` from inside a request
287
+ * or notification handler — doing so attempts to close the transport while it
288
+ * is actively dispatching, causing a deadlock.
289
+ *
290
+ * NEVER mutate `ServerCapabilities` after `initialized` has been received.
291
+ * The client cached the `InitializeResult` at handshake time; runtime changes
292
+ * are invisible to it.
293
+ *
294
+ * NEVER share one `LSPServer` instance across multiple transports or connections.
295
+ * Each connection requires its own server instance to maintain independent state.
296
+ *
297
+ * @example
298
+ * ```ts
299
+ * import { LSPServer } from '@lspeasy/server';
300
+ * import { StdioTransport } from '@lspeasy/core/node';
301
+ *
302
+ * const server = new LSPServer({ name: 'my-lsp', version: '1.0.0' })
303
+ * .registerCapabilities({ hoverProvider: true });
304
+ *
305
+ * server.textDocument.onHover(async (params, token) => {
306
+ * if (token.isCancellationRequested) return null;
307
+ * return { contents: { kind: 'plaintext', value: 'Hello from my-lsp' } };
308
+ * });
309
+ *
310
+ * await server.listen(new StdioTransport());
311
+ * ```
312
+ *
313
+ * @template ServerCaps - Shape of the server capabilities.
314
+ * @category Server
315
+ */
168
316
  export type LSPServer<ServerCaps extends Partial<ServerCapabilities> = ServerCapabilities> = BaseLSPServer<ServerCaps> & Server<ClientCapabilities, ServerCaps>;
317
+ /**
318
+ * Constructs an {@link LSPServer} instance.
319
+ *
320
+ * @param options - Optional {@link ServerOptions} to configure the server.
321
+ * @returns A new `LSPServer` instance.
322
+ *
323
+ * @category Server
324
+ */
169
325
  export declare const LSPServer: new <ServerCaps extends Partial<ServerCapabilities> = ServerCapabilities>(options?: ServerOptions<ServerCaps>) => LSPServer<ServerCaps>;
170
326
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -11,18 +11,75 @@ import { validateParams } from './validation.js';
11
11
  import { CapabilityGuard, ClientCapabilityGuard } from './capability-guard.js';
12
12
  import { initializeServerHandlerMethods, initializeServerSendMethods } from './capability-proxy.js';
13
13
  /**
14
- * LSP Server class with dynamic capability-aware typing
14
+ * Full-featured LSP server with automatic lifecycle management, typed handlers,
15
+ * capability-aware namespaces, and pluggable middleware.
15
16
  *
16
- * This class dynamically provides handler registration and send methods based on capabilities.
17
- * Methods are type-safe and conditionally available based on the Capabilities type parameter.
17
+ * @remarks
18
+ * `LSPServer` manages the complete LSP lifecycle (`initialize` / `initialized`
19
+ * / `shutdown` / `exit`) automatically. Register your handlers with
20
+ * `onRequest` / `onNotification`, declare capabilities with
21
+ * `registerCapabilities`, then start the server with `listen(transport)`.
18
22
  *
19
- * @template Capabilities - Server capabilities (defaults to ServerCapabilities)
23
+ * ### Capability-aware namespaces
24
+ *
25
+ * After calling `registerCapabilities(caps)`, the server exposes typed
26
+ * namespaces — e.g. `server.textDocument.onHover(handler)` — that are only
27
+ * present when the corresponding capability is declared. TypeScript enforces
28
+ * this at compile time so you cannot accidentally register a handler for a
29
+ * capability you never advertised.
30
+ *
31
+ * ### Transport selection
32
+ *
33
+ * - **Browser / universal**: `WebSocketTransport` (from `@lspeasy/core`)
34
+ * - **Node.js**: `StdioTransport`, `TcpTransport`, `IpcTransport` (from `@lspeasy/core/node`)
35
+ * - **Web Workers**: `DedicatedWorkerTransport`, `SharedWorkerTransport` (from `@lspeasy/core`)
36
+ *
37
+ * @useWhen
38
+ * You are building an LSP language server that editors and language-client
39
+ * tooling will connect to. `LSPServer` is the primary entry point for all
40
+ * server implementations.
41
+ *
42
+ * @avoidWhen
43
+ * You need a bare JSON-RPC layer without LSP semantics — use the transport
44
+ * and framing utilities directly instead.
45
+ *
46
+ * @never
47
+ * NEVER call `server.shutdown()` or `server.close()` from inside a request
48
+ * or notification handler — doing so attempts to close the transport while it
49
+ * is actively dispatching, causing a deadlock.
50
+ *
51
+ * NEVER mutate `ServerCapabilities` after `initialized` has been received.
52
+ * The client cached the `InitializeResult` at handshake time; runtime changes
53
+ * are invisible to it.
54
+ *
55
+ * NEVER share one `LSPServer` instance across multiple transports or
56
+ * connections. Each connection requires its own server instance to maintain
57
+ * independent protocol state (lifecycle phase, pending request IDs, etc.).
58
+ *
59
+ * NEVER send a server-to-client notification before the `initialize` response
60
+ * has been dispatched. Use the `initialized` notification handler as the
61
+ * earliest safe point for server-initiated messages.
20
62
  *
21
63
  * @example
22
- * // Create a server with specific capabilities
23
- * type MyCaps = { hoverProvider: true; completionProvider: { triggerCharacters: ['.'] } };
24
- * const server = new LSPServer<MyCaps>();
25
- * server.registerCapabilities({ hoverProvider: true, completionProvider: { triggerCharacters: ['.'] } });
64
+ * ```ts
65
+ * import { LSPServer } from '@lspeasy/server';
66
+ * // Node.js: import { StdioTransport } from '@lspeasy/core/node';
67
+ * // Browser: import { WebSocketTransport } from '@lspeasy/core';
68
+ *
69
+ * const server = new LSPServer({ name: 'my-lsp', version: '1.0.0' })
70
+ * .registerCapabilities({ hoverProvider: true });
71
+ *
72
+ * server.textDocument.onHover(async (params, token) => {
73
+ * if (token.isCancellationRequested) return null;
74
+ * return { contents: { kind: 'plaintext', value: 'Hello from my-lsp' } };
75
+ * });
76
+ *
77
+ * const transport = new StdioTransport();
78
+ * await server.listen(transport);
79
+ * ```
80
+ *
81
+ * @template Capabilities - Shape of the server capabilities, defaults to `ServerCapabilities`.
82
+ * @category Server
26
83
  */
27
84
  export class BaseLSPServer {
28
85
  logger;
@@ -165,7 +222,16 @@ export class BaseLSPServer {
165
222
  return this;
166
223
  }
167
224
  /**
168
- * Send a server-to-client request.
225
+ * Send a server-to-client request and await the client's response.
226
+ *
227
+ * @param method - The LSP request method name (server-to-client direction).
228
+ * @param params - Optional request parameters.
229
+ * @returns A promise resolving to the client's result.
230
+ * @throws {Error} When not listening (transport not attached). Fix: only call `sendRequest` from inside a handler or after the `listening` event fires.
231
+ * @throws {Error} When the client returns a JSON-RPC error response. Fix: catch and inspect `error.code`; `window/showMessageRequest` rejections are user-initiated (user dismissed), not bugs.
232
+ * @throws {Error} When the request times out (if `requestTimeout` is configured). Fix: increase `ServerOptions.requestTimeout` for slow UI interactions like `window/showMessageRequest`.
233
+ *
234
+ * @category Server
169
235
  */
170
236
  async sendRequest(method, params) {
171
237
  if (!this.transport) {
@@ -199,7 +265,14 @@ export class BaseLSPServer {
199
265
  return promise;
200
266
  }
201
267
  /**
202
- * Send a server-to-client notification.
268
+ * Send a server-to-client notification (fire-and-forget).
269
+ *
270
+ * @param method - The LSP notification method name (server-to-client direction).
271
+ * @param params - Optional notification parameters.
272
+ * @throws {Error} When not listening. Fix: only send notifications after `listen()` resolves and before `shutdown()` is called; guard with `isListening()`.
273
+ * @throws {Error} When the transport's underlying `send()` fails (e.g. broken socket). Fix: subscribe to `server.onError()` to catch transport-level write failures.
274
+ *
275
+ * @category Server
203
276
  */
204
277
  async sendNotification(method, params) {
205
278
  if (!this.transport) {
@@ -224,7 +297,16 @@ export class BaseLSPServer {
224
297
  });
225
298
  }
226
299
  /**
227
- * Start listening on a transport
300
+ * Attaches the server to a transport and begins processing messages.
301
+ *
302
+ * @remarks
303
+ * After `listen()` returns the server is ready to receive the `initialize`
304
+ * request from the client. The LSP handshake proceeds automatically.
305
+ *
306
+ * @param transport - The transport to listen on.
307
+ * @throws {Error} When already listening. Fix: call `close()` then create a fresh `LSPServer` instance — do not reuse a single instance across connections.
308
+ *
309
+ * @category Lifecycle
228
310
  */
229
311
  async listen(transport) {
230
312
  if (this.transport) {
@@ -248,7 +330,19 @@ export class BaseLSPServer {
248
330
  this.events.emit('listening');
249
331
  }
250
332
  /**
251
- * Graceful shutdown
333
+ * Initiates graceful shutdown, waits for in-flight handlers, then closes
334
+ * the transport.
335
+ *
336
+ * @remarks
337
+ * Waits up to `timeout` ms for pending handlers to complete, then
338
+ * cancels any remaining in-flight requests before closing. Use this method
339
+ * to shut down in response to an OS signal or editor session end.
340
+ *
341
+ * @param timeout - Maximum milliseconds to wait for in-flight handlers before
342
+ * force-cancelling them.
343
+ * @defaultValue 5000
344
+ *
345
+ * @category Lifecycle
252
346
  */
253
347
  async shutdown(timeout = 5000) {
254
348
  if (this.state === ServerState.Shutdown) {
@@ -521,6 +615,14 @@ export class BaseLSPServer {
521
615
  this.pendingRequests.reject(String(id), new Error('Invalid response message'));
522
616
  }
523
617
  }
618
+ /**
619
+ * Constructs an {@link LSPServer} instance.
620
+ *
621
+ * @param options - Optional {@link ServerOptions} to configure the server.
622
+ * @returns A new `LSPServer` instance.
623
+ *
624
+ * @category Server
625
+ */
524
626
  // Generic constructor that preserves type parameters
525
627
  export const LSPServer = BaseLSPServer;
526
628
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -9,7 +9,14 @@ import type { ResponseErrorInterface } from '@lspeasy/core';
9
9
  */
10
10
  export type { Server } from '@lspeasy/core';
11
11
  /**
12
- * Server initialization options
12
+ * Configuration for an `LSPServer` instance.
13
+ *
14
+ * @remarks
15
+ * Passed to the `LSPServer` constructor. All fields are optional; the server
16
+ * works with zero configuration and sensible defaults.
17
+ *
18
+ * @config
19
+ * @category Server
13
20
  */
14
21
  export interface ServerOptions<Capabilities extends Partial<ServerCapabilities> = ServerCapabilities> {
15
22
  /**
@@ -57,41 +64,99 @@ export interface ServerOptions<Capabilities extends Partial<ServerCapabilities>
57
64
  middleware?: Array<Middleware | ScopedMiddleware>;
58
65
  }
59
66
  /**
60
- * Context provided to request handlers
67
+ * Context provided to request handlers alongside params and the cancellation token.
68
+ *
69
+ * @remarks
70
+ * Use `id` for correlating log entries to specific requests, and
71
+ * `clientCapabilities` to conditionally include capability-dependent data in
72
+ * the response (e.g. include `commitCharacters` only when the client supports
73
+ * `completionItem.commitCharactersSupport`).
74
+ *
75
+ * @category Handler
61
76
  */
62
77
  export interface RequestContext {
63
78
  /**
64
- * Request ID for correlation
79
+ * JSON-RPC request ID for correlation.
80
+ *
81
+ * @remarks
82
+ * May be a `string` or a `number` — never coerce to integer.
65
83
  */
66
84
  id: number | string;
67
85
  /**
68
- * Method name
86
+ * LSP method string, e.g. `'textDocument/hover'`.
69
87
  */
70
88
  method: string;
71
89
  /**
72
- * Client capabilities (available after initialization)
90
+ * Client capabilities received during `initialize`.
91
+ * Available after the first `initialize` request.
73
92
  */
74
93
  clientCapabilities?: ClientCapabilities | undefined;
75
94
  }
76
95
  /**
77
- * Context provided to notification handlers
96
+ * Context provided to notification handlers alongside params.
97
+ *
98
+ * @category Handler
78
99
  */
79
100
  export interface NotificationContext {
80
101
  /**
81
- * Method name
102
+ * LSP method string, e.g. `'textDocument/didOpen'`.
82
103
  */
83
104
  method: string;
84
105
  /**
85
- * Client capabilities (available after initialization)
106
+ * Client capabilities received during `initialize`.
107
+ * Available after the `initialize` handshake.
86
108
  */
87
109
  clientCapabilities?: ClientCapabilities | undefined;
88
110
  }
89
111
  /**
90
- * Request handler function type
112
+ * Signature for LSP request handlers registered via `LSPServer.onRequest`.
113
+ *
114
+ * @remarks
115
+ * Handlers are async by default — returning `Promise<Result>` is fine.
116
+ * Throw a `ResponseError` to send a structured JSON-RPC error response.
117
+ * Throw any other `Error` to send a generic `-32603 InternalError` response.
118
+ *
119
+ * Check `token.isCancellationRequested` at async yield points to stop
120
+ * early when the client sends `$/cancelRequest`.
121
+ *
122
+ * @never
123
+ * NEVER call `server.close()` or `server.shutdown()` from inside a handler —
124
+ * the server is processing messages on the transport at that point, and
125
+ * closing the transport from within a handler causes a deadlock: the handler
126
+ * awaits the close, but the close waits for all handlers to finish.
127
+ *
128
+ * NEVER mutate server capabilities inside a handler. Capabilities are
129
+ * negotiated once during `initialize`; changing them at runtime has no effect
130
+ * on the client, which cached the `InitializeResult` at startup.
131
+ *
132
+ * @throws {@link ResponseError} A structured JSON-RPC error (preferred for protocol errors).
133
+ * @throws Error Any `Error` subclass is converted to a `-32603 InternalError` response.
134
+ *
135
+ * @see {@link NotificationHandler} for the fire-and-forget counterpart.
136
+ * @see {@link RequestContext} for the third parameter shape.
137
+ *
138
+ * @typeParam Params - The request params type, inferred from the method name.
139
+ * @typeParam Result - The response result type, inferred from the method name.
140
+ * @category Handler
91
141
  */
92
142
  export type RequestHandler<Params = unknown, Result = unknown> = (params: Params, token: CancellationToken, context: RequestContext) => Promise<Result> | Result;
93
143
  /**
94
- * Notification handler function type
144
+ * Signature for LSP notification handlers registered via
145
+ * `LSPServer.onNotification`.
146
+ *
147
+ * @remarks
148
+ * Notifications are fire-and-forget — the framework does not wait for the
149
+ * returned promise in any protocol-observable way, but unhandled rejections
150
+ * are forwarded to `server.onError()`.
151
+ *
152
+ * @never
153
+ * NEVER send a server-to-client notification inside a handler for the LSP
154
+ * `initialize` request. The `initialize` response has not yet been sent at
155
+ * that point; notifications sent before the response are discarded by clients.
156
+ * Use the `initialized` notification handler for post-handshake setup instead.
157
+ *
158
+ * @typeParam Params - The notification params type, inferred from method name.
159
+ * @category Handler
95
160
  */
96
161
  export type NotificationHandler<Params = unknown> = (params: Params, context: NotificationContext) => void | Promise<void>;
97
162
  /**
@@ -102,7 +167,19 @@ export interface HandlerRegistration {
102
167
  isRequest: boolean;
103
168
  }
104
169
  /**
105
- * Server state enum
170
+ * Lifecycle state of an `LSPServer` instance.
171
+ *
172
+ * @remarks
173
+ * State transitions:
174
+ * `Created` → `Initializing` (on `initialize` request)
175
+ * → `Initialized` (after `initialize` response sent)
176
+ * → `ShuttingDown` (on `shutdown` request)
177
+ * → `Shutdown` (transport closed).
178
+ *
179
+ * Non-lifecycle requests received before `Initialized` are automatically
180
+ * rejected with `ServerNotInitialized (-32002)`.
181
+ *
182
+ * @category Lifecycle
106
183
  */
107
184
  export declare enum ServerState {
108
185
  Created = "created",
@@ -111,16 +188,30 @@ export declare enum ServerState {
111
188
  ShuttingDown = "shutting_down",
112
189
  Shutdown = "shutdown"
113
190
  }
191
+ /**
192
+ * Namespace for registering notebook-document lifecycle notification handlers.
193
+ *
194
+ * @remarks
195
+ * Available on `server.notebookDocument`. Mirrors the standard LSP
196
+ * `notebookDocument/*` notification methods for servers that support
197
+ * `notebookDocumentSync` capability.
198
+ *
199
+ * @category Handler
200
+ */
114
201
  export interface NotebookDocumentHandlerNamespace {
202
+ /** Register a handler for `notebookDocument/didOpen` notifications. */
115
203
  onDidOpen(handler: NotificationHandler<DidOpenNotebookDocumentParams>): {
116
204
  dispose(): void;
117
205
  };
206
+ /** Register a handler for `notebookDocument/didChange` notifications. */
118
207
  onDidChange(handler: NotificationHandler<DidChangeNotebookDocumentParams>): {
119
208
  dispose(): void;
120
209
  };
210
+ /** Register a handler for `notebookDocument/didSave` notifications. */
121
211
  onDidSave(handler: NotificationHandler<DidSaveNotebookDocumentParams>): {
122
212
  dispose(): void;
123
213
  };
214
+ /** Register a handler for `notebookDocument/didClose` notifications. */
124
215
  onDidClose(handler: NotificationHandler<DidCloseNotebookDocumentParams>): {
125
216
  dispose(): void;
126
217
  };