@lspeasy/core 2.1.2 → 2.2.0
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/index.d.ts +44 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +44 -1
- package/dist/index.js.map +1 -1
- package/dist/jsonrpc/framing.d.ts +28 -3
- package/dist/jsonrpc/framing.d.ts.map +1 -1
- package/dist/jsonrpc/framing.js +28 -3
- package/dist/jsonrpc/framing.js.map +1 -1
- package/dist/jsonrpc/messages.d.ts +105 -8
- package/dist/jsonrpc/messages.d.ts.map +1 -1
- package/dist/jsonrpc/messages.js +36 -0
- package/dist/jsonrpc/messages.js.map +1 -1
- package/dist/jsonrpc/reader.js.map +1 -1
- package/dist/jsonrpc/writer.d.ts +3 -0
- package/dist/jsonrpc/writer.d.ts.map +1 -1
- package/dist/jsonrpc/writer.js.map +1 -1
- package/dist/middleware/compose.d.ts +22 -0
- package/dist/middleware/compose.d.ts.map +1 -1
- package/dist/middleware/compose.js +22 -0
- package/dist/middleware/compose.js.map +1 -1
- package/dist/middleware/pipeline.d.ts +22 -0
- package/dist/middleware/pipeline.d.ts.map +1 -1
- package/dist/middleware/pipeline.js +22 -0
- package/dist/middleware/pipeline.js.map +1 -1
- package/dist/middleware/scoped.d.ts +28 -0
- package/dist/middleware/scoped.d.ts.map +1 -1
- package/dist/middleware/scoped.js +28 -0
- package/dist/middleware/scoped.js.map +1 -1
- package/dist/middleware/typed.d.ts +30 -0
- package/dist/middleware/typed.d.ts.map +1 -1
- package/dist/middleware/typed.js +30 -0
- package/dist/middleware/typed.js.map +1 -1
- package/dist/middleware/types.d.ts +173 -0
- package/dist/middleware/types.d.ts.map +1 -1
- package/dist/protocol/capabilities.d.ts +78 -12
- package/dist/protocol/capabilities.d.ts.map +1 -1
- package/dist/protocol/capabilities.js +78 -12
- package/dist/protocol/capabilities.js.map +1 -1
- package/dist/protocol/capability-methods.d.ts +70 -2
- package/dist/protocol/capability-methods.d.ts.map +1 -1
- package/dist/protocol/capability-methods.js +8 -0
- package/dist/protocol/capability-methods.js.map +1 -1
- package/dist/protocol/dynamic-registration.d.ts +34 -2
- package/dist/protocol/dynamic-registration.d.ts.map +1 -1
- package/dist/protocol/dynamic-registration.js +16 -2
- package/dist/protocol/dynamic-registration.js.map +1 -1
- package/dist/protocol/enums.js +40 -80
- package/dist/protocol/enums.js.map +1 -1
- package/dist/protocol/infer.d.ts +92 -4
- package/dist/protocol/infer.d.ts.map +1 -1
- package/dist/protocol/infer.js +46 -4
- package/dist/protocol/infer.js.map +1 -1
- package/dist/protocol/namespaces.d.ts +327 -327
- package/dist/protocol/namespaces.d.ts.map +1 -1
- package/dist/protocol/partial-results.d.ts +6 -0
- package/dist/protocol/partial-results.d.ts.map +1 -1
- package/dist/protocol/partial.d.ts +12 -3
- package/dist/protocol/partial.d.ts.map +1 -1
- package/dist/protocol/partial.js +12 -3
- package/dist/protocol/partial.js.map +1 -1
- package/dist/protocol/progress.d.ts +34 -4
- package/dist/protocol/progress.d.ts.map +1 -1
- package/dist/protocol/progress.js +34 -4
- package/dist/protocol/progress.js.map +1 -1
- package/dist/protocol/schemas.d.ts +4 -1
- package/dist/protocol/schemas.d.ts.map +1 -1
- package/dist/protocol/schemas.js +4 -1
- package/dist/protocol/schemas.js.map +1 -1
- package/dist/protocol/watching.d.ts +18 -7
- package/dist/protocol/watching.d.ts.map +1 -1
- package/dist/protocol/watching.js +14 -3
- package/dist/protocol/watching.js.map +1 -1
- package/dist/protocol/workspace.d.ts +10 -2
- package/dist/protocol/workspace.d.ts.map +1 -1
- package/dist/protocol/workspace.js +10 -2
- package/dist/protocol/workspace.js.map +1 -1
- package/dist/transport/dedicated-worker.js.map +1 -1
- package/dist/transport/events.js.map +1 -1
- package/dist/transport/ipc.js.map +1 -1
- package/dist/transport/shared-worker.js.map +1 -1
- package/dist/transport/stdio.js.map +1 -1
- package/dist/transport/tcp.js.map +1 -1
- package/dist/transport/transport.d.ts +91 -10
- package/dist/transport/transport.d.ts.map +1 -1
- package/dist/transport/websocket.d.ts +120 -19
- package/dist/transport/websocket.d.ts.map +1 -1
- package/dist/transport/websocket.js +95 -8
- package/dist/transport/websocket.js.map +1 -1
- package/dist/transport/worker-types.d.ts +16 -2
- package/dist/transport/worker-types.d.ts.map +1 -1
- package/dist/transport/worker-types.js +12 -2
- package/dist/transport/worker-types.js.map +1 -1
- package/dist/utils/cancellation.d.ts +75 -5
- package/dist/utils/cancellation.d.ts.map +1 -1
- package/dist/utils/cancellation.js +29 -1
- package/dist/utils/cancellation.js.map +1 -1
- package/dist/utils/capability-guard.d.ts +32 -1
- package/dist/utils/capability-guard.d.ts.map +1 -1
- package/dist/utils/capability-guard.js +32 -1
- package/dist/utils/capability-guard.js.map +1 -1
- package/dist/utils/disposable-event-emitter.d.ts +11 -0
- package/dist/utils/disposable-event-emitter.d.ts.map +1 -1
- package/dist/utils/disposable-event-emitter.js +11 -0
- package/dist/utils/disposable-event-emitter.js.map +1 -1
- package/dist/utils/disposable.d.ts +42 -3
- package/dist/utils/disposable.d.ts.map +1 -1
- package/dist/utils/disposable.js +34 -2
- package/dist/utils/disposable.js.map +1 -1
- package/dist/utils/document.d.ts +78 -3
- package/dist/utils/document.d.ts.map +1 -1
- package/dist/utils/document.js +73 -3
- package/dist/utils/document.js.map +1 -1
- package/dist/utils/errors.d.ts +87 -10
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +87 -10
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/handler-registry.js.map +1 -1
- package/dist/utils/logger.d.ts +79 -4
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +64 -5
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/pending-request-tracker.d.ts.map +1 -1
- package/dist/utils/pending-request-tracker.js.map +1 -1
- package/dist/utils/transport-attachment.js.map +1 -1
- package/package.json +6 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAqB5C,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACjC,MAAM,gBAAgB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/transport/websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Message } from '../jsonrpc/messages.js';
|
|
2
2
|
/** Lightweight event shape shared by worker and message port adapters. */
|
|
3
3
|
export interface WorkerMessageEventLike {
|
|
4
|
+
/** The raw payload received from the worker or message port. */
|
|
4
5
|
data: unknown;
|
|
5
6
|
}
|
|
6
7
|
/** Minimal worker contract required by dedicated worker transport. */
|
|
@@ -26,15 +27,28 @@ export interface MessagePortLike {
|
|
|
26
27
|
}
|
|
27
28
|
/** Shared worker wrapper exposing a message port. */
|
|
28
29
|
export interface SharedWorkerLike {
|
|
30
|
+
/** The dedicated message port for communicating with this shared worker. */
|
|
29
31
|
port: MessagePortLike;
|
|
30
32
|
}
|
|
31
33
|
/** Envelope used by shared worker transport to preserve client isolation. */
|
|
32
34
|
export interface WorkerTransportEnvelope {
|
|
35
|
+
/** Unique identifier for the client connection that sent or should receive this message. */
|
|
33
36
|
clientId: string;
|
|
37
|
+
/** The JSON-RPC message payload. */
|
|
34
38
|
message: Message;
|
|
35
39
|
}
|
|
36
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Runtime guard for JSON-RPC message envelopes.
|
|
42
|
+
*
|
|
43
|
+
* @param value - The unknown value to test.
|
|
44
|
+
* @returns `true` when `value` is an object with `jsonrpc: "2.0"`.
|
|
45
|
+
*/
|
|
37
46
|
export declare function isMessage(value: unknown): value is Message;
|
|
38
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Runtime guard for shared worker transport envelope payloads.
|
|
49
|
+
*
|
|
50
|
+
* @param value - The unknown value to test.
|
|
51
|
+
* @returns `true` when `value` is a `WorkerTransportEnvelope` with a valid `clientId` and `message`.
|
|
52
|
+
*/
|
|
39
53
|
export declare function isWorkerTransportEnvelope(value: unknown): value is WorkerTransportEnvelope;
|
|
40
54
|
//# sourceMappingURL=worker-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-types.d.ts","sourceRoot":"","sources":["../../src/transport/worker-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,OAAO,CAAC;CACf;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3F,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1E,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9F,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7E,SAAS,CAAC,IAAI,IAAI,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3F,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1E,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9F,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACpF,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7E,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED
|
|
1
|
+
{"version":3,"file":"worker-types.d.ts","sourceRoot":"","sources":["../../src/transport/worker-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB;IACrC,gEAAgE;IAChE,IAAI,EAAE,OAAO,CAAC;CACf;AAED,sEAAsE;AACtE,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3F,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1E,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9F,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7E,SAAS,CAAC,IAAI,IAAI,CAAC;CACpB;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC3F,gBAAgB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACjF,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1E,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,IAAI,GAAG,IAAI,CAAC;IAC9F,mBAAmB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IACpF,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7E,KAAK,CAAC,IAAI,IAAI,CAAC;IACf,KAAK,CAAC,IAAI,IAAI,CAAC;CAChB;AAED,qDAAqD;AACrD,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAO1D;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,uBAAuB,CAO1F"}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Runtime guard for JSON-RPC message envelopes.
|
|
3
|
+
*
|
|
4
|
+
* @param value - The unknown value to test.
|
|
5
|
+
* @returns `true` when `value` is an object with `jsonrpc: "2.0"`.
|
|
6
|
+
*/
|
|
2
7
|
export function isMessage(value) {
|
|
3
8
|
if (typeof value !== 'object' || value === null) {
|
|
4
9
|
return false;
|
|
@@ -6,7 +11,12 @@ export function isMessage(value) {
|
|
|
6
11
|
const candidate = value;
|
|
7
12
|
return candidate['jsonrpc'] === '2.0';
|
|
8
13
|
}
|
|
9
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Runtime guard for shared worker transport envelope payloads.
|
|
16
|
+
*
|
|
17
|
+
* @param value - The unknown value to test.
|
|
18
|
+
* @returns `true` when `value` is a `WorkerTransportEnvelope` with a valid `clientId` and `message`.
|
|
19
|
+
*/
|
|
10
20
|
export function isWorkerTransportEnvelope(value) {
|
|
11
21
|
if (typeof value !== 'object' || value === null) {
|
|
12
22
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-types.js","sourceRoot":"","sources":["../../src/transport/worker-types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker-types.js","sourceRoot":"","sources":["../../src/transport/worker-types.ts"],"names":[],"mappings":"AA6CA;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,KAAgC,CAAC;IACnD,OAAO,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACtF,CAAC"}
|
|
@@ -4,21 +4,91 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { Disposable } from './disposable.js';
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Read-only handle for observing cancellation state.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Pass a `CancellationToken` to long-running request handlers so they can
|
|
11
|
+
* honour client-initiated cancellation (`$/cancelRequest` notification).
|
|
12
|
+
* The token's `isCancellationRequested` property changes from `false` to
|
|
13
|
+
* `true` exactly once; it never resets.
|
|
14
|
+
*
|
|
15
|
+
* Use `CancellationTokenNone` (exported as a constant) when no cancellation
|
|
16
|
+
* support is needed — it is a singleton that is never cancelled.
|
|
17
|
+
*
|
|
18
|
+
* @useWhen
|
|
19
|
+
* You are implementing a `RequestHandler` that performs async work (file I/O,
|
|
20
|
+
* database queries, tree-sitter parsing) and want to stop early when the
|
|
21
|
+
* client cancels.
|
|
22
|
+
*
|
|
23
|
+
* @avoidWhen
|
|
24
|
+
* The handler is synchronous and returns in less than a few milliseconds.
|
|
25
|
+
* Polling `isCancellationRequested` in a tight loop has negligible benefit.
|
|
26
|
+
*
|
|
27
|
+
* @never
|
|
28
|
+
* NEVER ignore the cancellation token on long-running requests. If a client
|
|
29
|
+
* sends `$/cancelRequest` and the server does not stop processing, the client
|
|
30
|
+
* times out and receives no usable feedback. Always check
|
|
31
|
+
* `token.isCancellationRequested` at async yield points.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* import { LSPServer } from '@lspeasy/server';
|
|
36
|
+
*
|
|
37
|
+
* const server = new LSPServer();
|
|
38
|
+
* server.onRequest('textDocument/hover', async (params, token) => {
|
|
39
|
+
* const lines = await readLargeFile(params.textDocument.uri);
|
|
40
|
+
* if (token.isCancellationRequested) return null;
|
|
41
|
+
*
|
|
42
|
+
* // ... compute hover
|
|
43
|
+
* return { contents: { kind: 'plaintext', value: 'info' } };
|
|
44
|
+
* });
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @category Lifecycle
|
|
8
48
|
*/
|
|
9
49
|
export interface CancellationToken {
|
|
10
50
|
/**
|
|
11
|
-
*
|
|
51
|
+
* `true` once cancellation has been requested; never resets to `false`.
|
|
12
52
|
*/
|
|
13
53
|
readonly isCancellationRequested: boolean;
|
|
14
54
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
55
|
+
* Registers a callback invoked when (or immediately if already) cancelled.
|
|
56
|
+
*
|
|
57
|
+
* @param callback - Called when cancellation is requested.
|
|
58
|
+
* @returns A `Disposable` to unregister the callback.
|
|
17
59
|
*/
|
|
18
60
|
onCancellationRequested(callback: () => void): Disposable;
|
|
19
61
|
}
|
|
20
62
|
/**
|
|
21
|
-
*
|
|
63
|
+
* Controller that creates and manages a `CancellationToken`.
|
|
64
|
+
*
|
|
65
|
+
* @remarks
|
|
66
|
+
* Holds the mutable end of the cancellation pair: call `.cancel()` to signal
|
|
67
|
+
* cancellation; pass `.token` (read-only) to handlers and async operations.
|
|
68
|
+
* Always call `.dispose()` when the operation completes to free internal
|
|
69
|
+
* event-emitter resources, regardless of whether cancellation was requested.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```ts
|
|
73
|
+
* import { CancellationTokenSource } from '@lspeasy/core';
|
|
74
|
+
* import { LSPClient } from '@lspeasy/client';
|
|
75
|
+
*
|
|
76
|
+
* const source = new CancellationTokenSource();
|
|
77
|
+
* const promise = client.sendRequest('textDocument/hover', params, source.token);
|
|
78
|
+
*
|
|
79
|
+
* // Cancel from user interaction
|
|
80
|
+
* cancelButton.addEventListener('click', () => source.cancel());
|
|
81
|
+
*
|
|
82
|
+
* try {
|
|
83
|
+
* const result = await promise;
|
|
84
|
+
* } catch {
|
|
85
|
+
* // Cancelled
|
|
86
|
+
* } finally {
|
|
87
|
+
* source.dispose();
|
|
88
|
+
* }
|
|
89
|
+
* ```
|
|
90
|
+
*
|
|
91
|
+
* @category Lifecycle
|
|
22
92
|
*/
|
|
23
93
|
export declare class CancellationTokenSource {
|
|
24
94
|
private emitter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancellation.d.ts","sourceRoot":"","sources":["../../src/utils/cancellation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD
|
|
1
|
+
{"version":3,"file":"cancellation.d.ts","sourceRoot":"","sources":["../../src/utils/cancellation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAE1C;;;;;OAKG;IACH,uBAAuB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,UAAU,CAAC;CAC3D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAA+C;IAC9D,OAAO,CAAC,SAAS,CAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAE3C,cAyBC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED;;OAEG;IACH,MAAM,IAAI,IAAI,CAOb;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAEd;CACF;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB;IAC5B,IAAI,EAMC,iBAAiB;CACvB,CAAC"}
|
|
@@ -4,7 +4,35 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { DisposableEventEmitter } from './disposable-event-emitter.js';
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Controller that creates and manages a `CancellationToken`.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Holds the mutable end of the cancellation pair: call `.cancel()` to signal
|
|
11
|
+
* cancellation; pass `.token` (read-only) to handlers and async operations.
|
|
12
|
+
* Always call `.dispose()` when the operation completes to free internal
|
|
13
|
+
* event-emitter resources, regardless of whether cancellation was requested.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```ts
|
|
17
|
+
* import { CancellationTokenSource } from '@lspeasy/core';
|
|
18
|
+
* import { LSPClient } from '@lspeasy/client';
|
|
19
|
+
*
|
|
20
|
+
* const source = new CancellationTokenSource();
|
|
21
|
+
* const promise = client.sendRequest('textDocument/hover', params, source.token);
|
|
22
|
+
*
|
|
23
|
+
* // Cancel from user interaction
|
|
24
|
+
* cancelButton.addEventListener('click', () => source.cancel());
|
|
25
|
+
*
|
|
26
|
+
* try {
|
|
27
|
+
* const result = await promise;
|
|
28
|
+
* } catch {
|
|
29
|
+
* // Cancelled
|
|
30
|
+
* } finally {
|
|
31
|
+
* source.dispose();
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @category Lifecycle
|
|
8
36
|
*/
|
|
9
37
|
export class CancellationTokenSource {
|
|
10
38
|
emitter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../../src/utils/cancellation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"cancellation.js","sourceRoot":"","sources":["../../src/utils/cancellation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAiEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAO,uBAAuB;IAC1B,OAAO,CAA+C;IACtD,SAAS,CAAU;IACV,MAAM,CAAoB;IAE3C;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,sBAAsB,EAAE,CAAC;QAC5C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,kDAAkD;QAClD,IAAI,CAAC,MAAM,GAAG;YACZ,uBAAuB,EAAE,KAAK;YAC9B,uBAAuB,EAAE,CAAC,QAAoB,EAAc,EAAE;gBAC5D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,sCAAsC;oBACtC,QAAQ,EAAE,CAAC;oBACX,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;gBAC/B,CAAC;qBAAM,CAAC;oBACN,oEAAoE;oBACpE,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;SACF,CAAC;QAEF,2EAA2E;QAC3E,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,yBAAyB,EAAE;YAC5D,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS;YACzB,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,KAAK;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,IAAI,EAAE;QACJ,uBAAuB,EAAE,KAAK;QAC9B,uBAAuB,EAAE,GAAe,EAAE;YACxC,uBAAuB;YACvB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;QAC/B,CAAC;KACmB;CACvB,CAAC"}
|
|
@@ -3,14 +3,41 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { Logger } from './logger.js';
|
|
5
5
|
type CapabilityKey = 'ServerCapability' | 'ClientCapability';
|
|
6
|
+
/**
|
|
7
|
+
* Builds the full set of LSP methods and the subset that are always allowed
|
|
8
|
+
* (not gated by a capability) for a given capability key.
|
|
9
|
+
*
|
|
10
|
+
* @remarks
|
|
11
|
+
* Iterates every entry in {@link LSPRequest} and {@link LSPNotification} to
|
|
12
|
+
* collect method strings, then marks those without a corresponding capability
|
|
13
|
+
* entry as always-allowed (e.g. `initialize`, `shutdown`, `$/cancelRequest`).
|
|
14
|
+
*
|
|
15
|
+
* @param capabilityKey - Whether to index by `'ServerCapability'` or `'ClientCapability'`.
|
|
16
|
+
* @returns An object with `all` (every known method) and `alwaysAllowed`
|
|
17
|
+
* (methods that do not require a capability declaration).
|
|
18
|
+
*
|
|
19
|
+
* @category Utilities
|
|
20
|
+
*/
|
|
6
21
|
export declare function buildMethodSets(capabilityKey: CapabilityKey): {
|
|
7
22
|
all: Set<string>;
|
|
8
23
|
alwaysAllowed: Set<string>;
|
|
9
24
|
};
|
|
25
|
+
/**
|
|
26
|
+
* Pre-built method sets indexed by server capability.
|
|
27
|
+
* Used by `CapabilityGuard` in `@lspeasy/client` and `@lspeasy/server`.
|
|
28
|
+
*
|
|
29
|
+
* @category Utilities
|
|
30
|
+
*/
|
|
10
31
|
export declare const SERVER_METHODS: {
|
|
11
32
|
all: Set<string>;
|
|
12
33
|
alwaysAllowed: Set<string>;
|
|
13
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* Pre-built method sets indexed by client capability.
|
|
37
|
+
* Used by `ClientCapabilityGuard` in `@lspeasy/client` and `@lspeasy/server`.
|
|
38
|
+
*
|
|
39
|
+
* @category Utilities
|
|
40
|
+
*/
|
|
14
41
|
export declare const CLIENT_METHODS: {
|
|
15
42
|
all: Set<string>;
|
|
16
43
|
alwaysAllowed: Set<string>;
|
|
@@ -31,7 +58,11 @@ export interface CheckMethodOptions {
|
|
|
31
58
|
/**
|
|
32
59
|
* Shared validation logic for checking if a method is allowed based on capabilities.
|
|
33
60
|
*
|
|
34
|
-
* Returns true if allowed, false if disallowed
|
|
61
|
+
* Returns `true` if allowed, `false` if disallowed in non-strict mode, or throws in strict mode.
|
|
62
|
+
*
|
|
63
|
+
* @param opts - Validation options including the method, capability lookup helpers, and logger.
|
|
64
|
+
* @returns `true` when the method is allowed; `false` when disallowed in non-strict mode.
|
|
65
|
+
* @throws When the method is disallowed and `opts.strict` is `true`.
|
|
35
66
|
*/
|
|
36
67
|
export declare function checkMethod(opts: CheckMethodOptions): boolean;
|
|
37
68
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-guard.d.ts","sourceRoot":"","sources":["../../src/utils/capability-guard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,KAAK,aAAa,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAE7D,wBAAgB,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG;IAC7D,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B,CAyBA;AAED,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"capability-guard.d.ts","sourceRoot":"","sources":["../../src/utils/capability-guard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAG1C,KAAK,aAAa,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,aAAa,EAAE,aAAa,GAAG;IAC7D,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC5B,CAyBA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc;SAnCpB,GAAG,CAAC,MAAM,CAAC;mBACD,GAAG,CAAC,MAAM,CAAC;CAkCqC,CAAC;AAElE;;;;;GAKG;AACH,eAAO,MAAM,cAAc;SA3CpB,GAAG,CAAC,MAAM,CAAC;mBACD,GAAG,CAAC,MAAM,CAAC;CA0CqC,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE;QAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;KAAE,CAAC;IAC7D,gBAAgB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChE,aAAa,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAoD7D"}
|
|
@@ -2,6 +2,21 @@
|
|
|
2
2
|
* Shared capability validation logic used by both client and server packages
|
|
3
3
|
*/
|
|
4
4
|
import { LSPRequest, LSPNotification } from '../protocol/namespaces.js';
|
|
5
|
+
/**
|
|
6
|
+
* Builds the full set of LSP methods and the subset that are always allowed
|
|
7
|
+
* (not gated by a capability) for a given capability key.
|
|
8
|
+
*
|
|
9
|
+
* @remarks
|
|
10
|
+
* Iterates every entry in {@link LSPRequest} and {@link LSPNotification} to
|
|
11
|
+
* collect method strings, then marks those without a corresponding capability
|
|
12
|
+
* entry as always-allowed (e.g. `initialize`, `shutdown`, `$/cancelRequest`).
|
|
13
|
+
*
|
|
14
|
+
* @param capabilityKey - Whether to index by `'ServerCapability'` or `'ClientCapability'`.
|
|
15
|
+
* @returns An object with `all` (every known method) and `alwaysAllowed`
|
|
16
|
+
* (methods that do not require a capability declaration).
|
|
17
|
+
*
|
|
18
|
+
* @category Utilities
|
|
19
|
+
*/
|
|
5
20
|
export function buildMethodSets(capabilityKey) {
|
|
6
21
|
const all = new Set();
|
|
7
22
|
const alwaysAllowed = new Set();
|
|
@@ -25,12 +40,28 @@ export function buildMethodSets(capabilityKey) {
|
|
|
25
40
|
}
|
|
26
41
|
return { all, alwaysAllowed };
|
|
27
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Pre-built method sets indexed by server capability.
|
|
45
|
+
* Used by `CapabilityGuard` in `@lspeasy/client` and `@lspeasy/server`.
|
|
46
|
+
*
|
|
47
|
+
* @category Utilities
|
|
48
|
+
*/
|
|
28
49
|
export const SERVER_METHODS = buildMethodSets('ServerCapability');
|
|
50
|
+
/**
|
|
51
|
+
* Pre-built method sets indexed by client capability.
|
|
52
|
+
* Used by `ClientCapabilityGuard` in `@lspeasy/client` and `@lspeasy/server`.
|
|
53
|
+
*
|
|
54
|
+
* @category Utilities
|
|
55
|
+
*/
|
|
29
56
|
export const CLIENT_METHODS = buildMethodSets('ClientCapability');
|
|
30
57
|
/**
|
|
31
58
|
* Shared validation logic for checking if a method is allowed based on capabilities.
|
|
32
59
|
*
|
|
33
|
-
* Returns true if allowed, false if disallowed
|
|
60
|
+
* Returns `true` if allowed, `false` if disallowed in non-strict mode, or throws in strict mode.
|
|
61
|
+
*
|
|
62
|
+
* @param opts - Validation options including the method, capability lookup helpers, and logger.
|
|
63
|
+
* @returns `true` when the method is allowed; `false` when disallowed in non-strict mode.
|
|
64
|
+
* @throws When the method is disallowed and `opts.strict` is `true`.
|
|
34
65
|
*/
|
|
35
66
|
export function checkMethod(opts) {
|
|
36
67
|
const { method, methodSets, getCapabilityKey, hasCapability, actionLabel, capabilityLabel, logger, strict } = opts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-guard.js","sourceRoot":"","sources":["../../src/utils/capability-guard.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAIxE,MAAM,UAAU,eAAe,CAAC,aAA4B
|
|
1
|
+
{"version":3,"file":"capability-guard.js","sourceRoot":"","sources":["../../src/utils/capability-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,14 +11,25 @@ export declare class DisposableEventEmitter<TEvents extends Record<string, unkno
|
|
|
11
11
|
private disposed;
|
|
12
12
|
/**
|
|
13
13
|
* Register a listener and receive a disposable to unregister it.
|
|
14
|
+
*
|
|
15
|
+
* @param event - The event name to subscribe to.
|
|
16
|
+
* @param listener - Callback invoked each time `event` is emitted.
|
|
17
|
+
* @returns A {@link Disposable} — call `dispose()` to remove the listener.
|
|
14
18
|
*/
|
|
15
19
|
on<K extends keyof TEvents>(event: K, listener: Listener<TEvents, K>): Disposable;
|
|
16
20
|
/**
|
|
17
21
|
* Register a one-time listener that automatically unregisters after first emission.
|
|
22
|
+
*
|
|
23
|
+
* @param event - The event name to subscribe to.
|
|
24
|
+
* @param listener - Callback invoked once the next time `event` is emitted.
|
|
25
|
+
* @returns A {@link Disposable} — call `dispose()` to cancel before the event fires.
|
|
18
26
|
*/
|
|
19
27
|
once<K extends keyof TEvents>(event: K, listener: Listener<TEvents, K>): Disposable;
|
|
20
28
|
/**
|
|
21
29
|
* Emit an event to all registered listeners in registration order.
|
|
30
|
+
*
|
|
31
|
+
* @param event - The event name to emit.
|
|
32
|
+
* @param args - Arguments forwarded to each listener in the order they match `TEvents[K]`.
|
|
22
33
|
*/
|
|
23
34
|
emit<K extends keyof TEvents>(event: K, ...args: TEvents[K]): void;
|
|
24
35
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable-event-emitter.d.ts","sourceRoot":"","sources":["../../src/utils/disposable-event-emitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,KAAK,QAAQ,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM,OAAO,IAAI,CAClF,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAChB,IAAI,CAAC;AAEV;;GAEG;AACH,qBAAa,sBAAsB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAC3E,OAAO,CAAC,SAAS,CAA+D;IAChF,OAAO,CAAC,QAAQ,CAAS;IAEzB
|
|
1
|
+
{"version":3,"file":"disposable-event-emitter.d.ts","sourceRoot":"","sources":["../../src/utils/disposable-event-emitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAKlD,KAAK,QAAQ,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,SAAS,MAAM,OAAO,IAAI,CAClF,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAChB,IAAI,CAAC;AAEV;;GAEG;AACH,qBAAa,sBAAsB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IAC3E,OAAO,CAAC,SAAS,CAA+D;IAChF,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;OAMG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,UAAU,CAyBhF;IAED;;;;;;OAMG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,UAAU,CA0BlF;IAED;;;;;OAKG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAajE;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAMd;CACF"}
|
|
@@ -9,6 +9,10 @@ export class DisposableEventEmitter {
|
|
|
9
9
|
disposed = false;
|
|
10
10
|
/**
|
|
11
11
|
* Register a listener and receive a disposable to unregister it.
|
|
12
|
+
*
|
|
13
|
+
* @param event - The event name to subscribe to.
|
|
14
|
+
* @param listener - Callback invoked each time `event` is emitted.
|
|
15
|
+
* @returns A {@link Disposable} — call `dispose()` to remove the listener.
|
|
12
16
|
*/
|
|
13
17
|
on(event, listener) {
|
|
14
18
|
if (this.disposed) {
|
|
@@ -35,6 +39,10 @@ export class DisposableEventEmitter {
|
|
|
35
39
|
}
|
|
36
40
|
/**
|
|
37
41
|
* Register a one-time listener that automatically unregisters after first emission.
|
|
42
|
+
*
|
|
43
|
+
* @param event - The event name to subscribe to.
|
|
44
|
+
* @param listener - Callback invoked once the next time `event` is emitted.
|
|
45
|
+
* @returns A {@link Disposable} — call `dispose()` to cancel before the event fires.
|
|
38
46
|
*/
|
|
39
47
|
once(event, listener) {
|
|
40
48
|
if (this.disposed) {
|
|
@@ -62,6 +70,9 @@ export class DisposableEventEmitter {
|
|
|
62
70
|
}
|
|
63
71
|
/**
|
|
64
72
|
* Emit an event to all registered listeners in registration order.
|
|
73
|
+
*
|
|
74
|
+
* @param event - The event name to emit.
|
|
75
|
+
* @param args - Arguments forwarded to each listener in the order they match `TEvents[K]`.
|
|
65
76
|
*/
|
|
66
77
|
emit(event, ...args) {
|
|
67
78
|
if (this.disposed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable-event-emitter.js","sourceRoot":"","sources":["../../src/utils/disposable-event-emitter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACzB,SAAS,GAAG,IAAI,GAAG,EAAoD,CAAC;IACxE,QAAQ,GAAG,KAAK,CAAC;IAEzB
|
|
1
|
+
{"version":3,"file":"disposable-event-emitter.js","sourceRoot":"","sources":["../../src/utils/disposable-event-emitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,19 +3,58 @@
|
|
|
3
3
|
* Pattern: MCP SDK's disposable pattern
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
* Represents a
|
|
6
|
+
* Represents a resource that can be explicitly released.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* Every subscription, handler registration, and event listener in lspeasy
|
|
10
|
+
* returns a `Disposable`. Call `.dispose()` to unsubscribe and free memory.
|
|
11
|
+
* Use `DisposableStore` to collect and dispose multiple resources at once.
|
|
12
|
+
*
|
|
13
|
+
* @category Lifecycle
|
|
7
14
|
*/
|
|
8
15
|
export interface Disposable {
|
|
9
16
|
dispose(): void;
|
|
10
17
|
}
|
|
11
18
|
/**
|
|
12
|
-
*
|
|
19
|
+
* Collects multiple `Disposable` instances and releases them together.
|
|
20
|
+
*
|
|
21
|
+
* @remarks
|
|
22
|
+
* Ideal for managing handler registrations on a server that should all be
|
|
23
|
+
* torn down when a document is closed or a feature is disabled.
|
|
24
|
+
* Once `dispose()` is called on the store, any further `add()` calls
|
|
25
|
+
* immediately dispose the item rather than storing it.
|
|
26
|
+
*
|
|
27
|
+
* @useWhen
|
|
28
|
+
* You register multiple handlers (hover, completion, definition) that share
|
|
29
|
+
* the same lifetime — collect them all into one store and dispose the store
|
|
30
|
+
* on shutdown or feature toggle.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```ts
|
|
34
|
+
* import { DisposableStore } from '@lspeasy/core';
|
|
35
|
+
* import { LSPServer } from '@lspeasy/server';
|
|
36
|
+
*
|
|
37
|
+
* const server = new LSPServer();
|
|
38
|
+
* const disposables = new DisposableStore();
|
|
39
|
+
*
|
|
40
|
+
* disposables.add(server.onRequest('textDocument/hover', handleHover));
|
|
41
|
+
* disposables.add(server.onRequest('textDocument/completion', handleCompletion));
|
|
42
|
+
*
|
|
43
|
+
* // Later — unregister all handlers at once
|
|
44
|
+
* disposables.dispose();
|
|
45
|
+
* ```
|
|
46
|
+
*
|
|
47
|
+
* @category Lifecycle
|
|
13
48
|
*/
|
|
14
49
|
export declare class DisposableStore implements Disposable {
|
|
15
50
|
private disposables;
|
|
16
51
|
private disposed;
|
|
17
52
|
/**
|
|
18
|
-
* Add a disposable to the store
|
|
53
|
+
* Add a disposable to the store.
|
|
54
|
+
*
|
|
55
|
+
* @param disposable - The resource to track. If the store is already disposed,
|
|
56
|
+
* `disposable.dispose()` is called immediately.
|
|
57
|
+
* @returns The same `disposable` passed in, for fluent chaining.
|
|
19
58
|
*/
|
|
20
59
|
add<T extends Disposable>(disposable: T): T;
|
|
21
60
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable.d.ts","sourceRoot":"","sources":["../../src/utils/disposable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"disposable.d.ts","sourceRoot":"","sources":["../../src/utils/disposable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAChD,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,QAAQ,CAAS;IAEzB;;;;;;OAMG;IACH,GAAG,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAO1C;IAED;;OAEG;IACH,OAAO,IAAI,IAAI,CAgBd;IAED;;OAEG;IACH,UAAU,IAAI,OAAO,CAEpB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;CACF"}
|
package/dist/utils/disposable.js
CHANGED
|
@@ -3,13 +3,45 @@
|
|
|
3
3
|
* Pattern: MCP SDK's disposable pattern
|
|
4
4
|
*/
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* Collects multiple `Disposable` instances and releases them together.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* Ideal for managing handler registrations on a server that should all be
|
|
10
|
+
* torn down when a document is closed or a feature is disabled.
|
|
11
|
+
* Once `dispose()` is called on the store, any further `add()` calls
|
|
12
|
+
* immediately dispose the item rather than storing it.
|
|
13
|
+
*
|
|
14
|
+
* @useWhen
|
|
15
|
+
* You register multiple handlers (hover, completion, definition) that share
|
|
16
|
+
* the same lifetime — collect them all into one store and dispose the store
|
|
17
|
+
* on shutdown or feature toggle.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* import { DisposableStore } from '@lspeasy/core';
|
|
22
|
+
* import { LSPServer } from '@lspeasy/server';
|
|
23
|
+
*
|
|
24
|
+
* const server = new LSPServer();
|
|
25
|
+
* const disposables = new DisposableStore();
|
|
26
|
+
*
|
|
27
|
+
* disposables.add(server.onRequest('textDocument/hover', handleHover));
|
|
28
|
+
* disposables.add(server.onRequest('textDocument/completion', handleCompletion));
|
|
29
|
+
*
|
|
30
|
+
* // Later — unregister all handlers at once
|
|
31
|
+
* disposables.dispose();
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @category Lifecycle
|
|
7
35
|
*/
|
|
8
36
|
export class DisposableStore {
|
|
9
37
|
disposables = [];
|
|
10
38
|
disposed = false;
|
|
11
39
|
/**
|
|
12
|
-
* Add a disposable to the store
|
|
40
|
+
* Add a disposable to the store.
|
|
41
|
+
*
|
|
42
|
+
* @param disposable - The resource to track. If the store is already disposed,
|
|
43
|
+
* `disposable.dispose()` is called immediately.
|
|
44
|
+
* @returns The same `disposable` passed in, for fluent chaining.
|
|
13
45
|
*/
|
|
14
46
|
add(disposable) {
|
|
15
47
|
if (this.disposed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disposable.js","sourceRoot":"","sources":["../../src/utils/disposable.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"disposable.js","sourceRoot":"","sources":["../../src/utils/disposable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,OAAO,eAAe;IAClB,WAAW,GAAiB,EAAE,CAAC;IAC/B,QAAQ,GAAG,KAAK,CAAC;IAEzB;;;;;;OAMG;IACH,GAAG,CAAuB,UAAa;QACrC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAErB,2BAA2B;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAG,CAAC;YAC3C,IAAI,CAAC;gBACH,UAAU,CAAC,OAAO,EAAE,CAAC;YACvB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACxB,CAAC;CACF"}
|