@lspeasy/client 3.0.2 → 3.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.
Files changed (38) hide show
  1. package/dist/capability-guard.d.ts +78 -4
  2. package/dist/capability-guard.d.ts.map +1 -1
  3. package/dist/capability-guard.js +78 -4
  4. package/dist/capability-guard.js.map +1 -1
  5. package/dist/capability-proxy.js.map +1 -1
  6. package/dist/client.d.ts +215 -13
  7. package/dist/client.d.ts.map +1 -1
  8. package/dist/client.js +162 -14
  9. package/dist/client.js.map +1 -1
  10. package/dist/connection/health.d.ts +40 -0
  11. package/dist/connection/health.d.ts.map +1 -1
  12. package/dist/connection/health.js +40 -0
  13. package/dist/connection/health.js.map +1 -1
  14. package/dist/connection/heartbeat.d.ts +29 -0
  15. package/dist/connection/heartbeat.d.ts.map +1 -1
  16. package/dist/connection/heartbeat.js +29 -0
  17. package/dist/connection/heartbeat.js.map +1 -1
  18. package/dist/connection/partial-result-collector.js.map +1 -1
  19. package/dist/connection/registration-store.js.map +1 -1
  20. package/dist/connection/types.d.ts +46 -4
  21. package/dist/connection/types.d.ts.map +1 -1
  22. package/dist/connection/types.js +11 -3
  23. package/dist/connection/types.js.map +1 -1
  24. package/dist/index.d.ts +48 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +48 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/notifications/wait.d.ts +57 -2
  29. package/dist/notifications/wait.d.ts.map +1 -1
  30. package/dist/notifications/wait.js +44 -1
  31. package/dist/notifications/wait.js.map +1 -1
  32. package/dist/progress.js.map +1 -1
  33. package/dist/types.d.ts +51 -6
  34. package/dist/types.d.ts.map +1 -1
  35. package/dist/validation.d.ts +1 -1
  36. package/dist/validation.d.ts.map +1 -1
  37. package/dist/validation.js.map +1 -1
  38. package/package.json +6 -7
@@ -7,28 +7,102 @@
7
7
  import type { ClientCapabilities, ServerCapabilities } from '@lspeasy/core';
8
8
  import type { Logger } from '@lspeasy/core';
9
9
  /**
10
- * Validates that a request/notification can be sent based on
11
- * declared server capabilities
10
+ * Validates outgoing client requests and notifications against the server's
11
+ * declared capabilities.
12
+ *
13
+ * @remarks
14
+ * Created internally by `LSPClient` after a successful `initialize` handshake.
15
+ * In non-strict mode (default) violations are logged as warnings; in strict
16
+ * mode they throw.
17
+ *
18
+ * @useWhen
19
+ * You are implementing a custom client layer and need the same validation
20
+ * behaviour that `LSPClient` uses. Otherwise this is an internal detail.
21
+ *
22
+ * @see {@link ClientCapabilityGuard} for the companion guard that validates
23
+ * server-to-client handler registrations against client capabilities.
24
+ *
25
+ * @throws Error When `strict` is `true` and a method is not in the known
26
+ * method set or the required server capability has not been declared.
27
+ *
28
+ * @never
29
+ * NEVER construct `CapabilityGuard` before the `initialize` handshake completes.
30
+ * Server capabilities are only known after the `InitializeResult` is received;
31
+ * instantiating the guard too early will treat all methods as unsupported.
32
+ *
33
+ * @category Client
12
34
  */
13
35
  export declare class CapabilityGuard {
14
36
  private readonly capabilities;
15
37
  private readonly logger;
16
38
  private readonly strict;
17
39
  constructor(capabilities: Partial<ServerCapabilities>, logger: Logger, strict?: boolean);
40
+ /**
41
+ * Returns `true` if the server capability for `method` is declared.
42
+ *
43
+ * @param method - The LSP request method string to check (e.g. `'textDocument/hover'`).
44
+ * @returns `true` if allowed; `false` (non-strict) if the required server capability
45
+ * is missing.
46
+ *
47
+ * @throws Error In strict mode, throws if `method` is unknown or its required
48
+ * server capability has not been declared.
49
+ *
50
+ * @see {@link CapabilityGuard} for full class documentation.
51
+ */
18
52
  canSendRequest(method: string): boolean;
53
+ /**
54
+ * Returns `true` if the server capability for `method` is declared.
55
+ *
56
+ * @param method - The LSP notification method string to check.
57
+ * @returns `true` if allowed; `false` (or throws in strict mode) if the required
58
+ * server capability is missing.
59
+ */
19
60
  canSendNotification(method: string): boolean;
61
+ /**
62
+ * Returns a defensive copy of the server capabilities this guard was built from.
63
+ *
64
+ * @returns A shallow copy of the server capabilities object.
65
+ */
20
66
  getServerCapabilities(): Partial<ServerCapabilities>;
21
67
  }
22
68
  /**
23
- * Validates that handlers can be registered based on
24
- * declared client capabilities
69
+ * Validates that server-to-client handler registrations are backed by
70
+ * client capabilities declared in the `initialize` request.
71
+ *
72
+ * @remarks
73
+ * Created internally by `LSPClient`. In non-strict mode violations are logged
74
+ * as warnings; in strict mode they throw.
75
+ *
76
+ * @never
77
+ * NEVER register server-to-client handlers for capabilities not declared in
78
+ * the original `initialize` request — the server may send the corresponding
79
+ * requests, but without the capability declaration the client has no contract
80
+ * to handle them, leading to silent failures or unexpected errors.
81
+ *
82
+ * @category Client
25
83
  */
26
84
  export declare class ClientCapabilityGuard {
27
85
  private readonly capabilities;
28
86
  private readonly logger;
29
87
  private readonly strict;
30
88
  constructor(capabilities: Partial<ClientCapabilities>, logger: Logger, strict?: boolean);
89
+ /**
90
+ * Returns `true` if the client has declared the capability required to handle `method`.
91
+ *
92
+ * @param method - The LSP method string to validate against client capabilities.
93
+ * @returns `true` if the client capability is declared; `false` (non-strict) if missing.
94
+ *
95
+ * @throws Error In strict mode, throws if `method` is unknown or the required
96
+ * client capability was not declared in the `initialize` request.
97
+ *
98
+ * @see {@link ClientCapabilityGuard} for full class documentation.
99
+ */
31
100
  canRegisterHandler(method: string): boolean;
101
+ /**
102
+ * Returns a defensive copy of the client capabilities this guard was built from.
103
+ *
104
+ * @returns A shallow copy of the client capabilities object.
105
+ */
32
106
  getClientCapabilities(): Partial<ClientCapabilities>;
33
107
  }
34
108
  //# sourceMappingURL=capability-guard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capability-guard.d.ts","sourceRoot":"","sources":["../src/capability-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAa5C;;;GAGG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,YACmB,YAAY,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAe,EACtC;IAEJ,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWtC;IAED,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAW3C;IAED,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEnD;CACF;AAED;;;GAGG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,YACmB,YAAY,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAe,EACtC;IAEJ,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAgB1C;IAED,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEnD;CACF"}
1
+ {"version":3,"file":"capability-guard.d.ts","sourceRoot":"","sources":["../src/capability-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAa5C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,YACmB,YAAY,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAe,EACtC;IAEJ;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAWtC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAW3C;IAED;;;;OAIG;IACH,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEnD;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAqB;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHzB,YACmB,YAAY,EAAE,OAAO,CAAC,kBAAkB,CAAC,EACzC,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,OAAe,EACtC;IAEJ;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAgB1C;IAED;;;;OAIG;IACH,qBAAqB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAEnD;CACF"}
@@ -6,8 +6,30 @@
6
6
  */
7
7
  import { SERVER_METHODS, CLIENT_METHODS, checkMethod, getClientCapabilityForNotificationMethod, getClientCapabilityForRequestMethod, hasServerCapability, hasClientCapability, getCapabilityForNotificationMethod, getCapabilityForRequestMethod } from '@lspeasy/core';
8
8
  /**
9
- * Validates that a request/notification can be sent based on
10
- * declared server capabilities
9
+ * Validates outgoing client requests and notifications against the server's
10
+ * declared capabilities.
11
+ *
12
+ * @remarks
13
+ * Created internally by `LSPClient` after a successful `initialize` handshake.
14
+ * In non-strict mode (default) violations are logged as warnings; in strict
15
+ * mode they throw.
16
+ *
17
+ * @useWhen
18
+ * You are implementing a custom client layer and need the same validation
19
+ * behaviour that `LSPClient` uses. Otherwise this is an internal detail.
20
+ *
21
+ * @see {@link ClientCapabilityGuard} for the companion guard that validates
22
+ * server-to-client handler registrations against client capabilities.
23
+ *
24
+ * @throws Error When `strict` is `true` and a method is not in the known
25
+ * method set or the required server capability has not been declared.
26
+ *
27
+ * @never
28
+ * NEVER construct `CapabilityGuard` before the `initialize` handshake completes.
29
+ * Server capabilities are only known after the `InitializeResult` is received;
30
+ * instantiating the guard too early will treat all methods as unsupported.
31
+ *
32
+ * @category Client
11
33
  */
12
34
  export class CapabilityGuard {
13
35
  capabilities;
@@ -18,6 +40,18 @@ export class CapabilityGuard {
18
40
  this.logger = logger;
19
41
  this.strict = strict;
20
42
  }
43
+ /**
44
+ * Returns `true` if the server capability for `method` is declared.
45
+ *
46
+ * @param method - The LSP request method string to check (e.g. `'textDocument/hover'`).
47
+ * @returns `true` if allowed; `false` (non-strict) if the required server capability
48
+ * is missing.
49
+ *
50
+ * @throws Error In strict mode, throws if `method` is unknown or its required
51
+ * server capability has not been declared.
52
+ *
53
+ * @see {@link CapabilityGuard} for full class documentation.
54
+ */
21
55
  canSendRequest(method) {
22
56
  return checkMethod({
23
57
  method,
@@ -30,6 +64,13 @@ export class CapabilityGuard {
30
64
  strict: this.strict
31
65
  });
32
66
  }
67
+ /**
68
+ * Returns `true` if the server capability for `method` is declared.
69
+ *
70
+ * @param method - The LSP notification method string to check.
71
+ * @returns `true` if allowed; `false` (or throws in strict mode) if the required
72
+ * server capability is missing.
73
+ */
33
74
  canSendNotification(method) {
34
75
  return checkMethod({
35
76
  method,
@@ -42,13 +83,30 @@ export class CapabilityGuard {
42
83
  strict: this.strict
43
84
  });
44
85
  }
86
+ /**
87
+ * Returns a defensive copy of the server capabilities this guard was built from.
88
+ *
89
+ * @returns A shallow copy of the server capabilities object.
90
+ */
45
91
  getServerCapabilities() {
46
92
  return { ...this.capabilities };
47
93
  }
48
94
  }
49
95
  /**
50
- * Validates that handlers can be registered based on
51
- * declared client capabilities
96
+ * Validates that server-to-client handler registrations are backed by
97
+ * client capabilities declared in the `initialize` request.
98
+ *
99
+ * @remarks
100
+ * Created internally by `LSPClient`. In non-strict mode violations are logged
101
+ * as warnings; in strict mode they throw.
102
+ *
103
+ * @never
104
+ * NEVER register server-to-client handlers for capabilities not declared in
105
+ * the original `initialize` request — the server may send the corresponding
106
+ * requests, but without the capability declaration the client has no contract
107
+ * to handle them, leading to silent failures or unexpected errors.
108
+ *
109
+ * @category Client
52
110
  */
53
111
  export class ClientCapabilityGuard {
54
112
  capabilities;
@@ -59,6 +117,17 @@ export class ClientCapabilityGuard {
59
117
  this.logger = logger;
60
118
  this.strict = strict;
61
119
  }
120
+ /**
121
+ * Returns `true` if the client has declared the capability required to handle `method`.
122
+ *
123
+ * @param method - The LSP method string to validate against client capabilities.
124
+ * @returns `true` if the client capability is declared; `false` (non-strict) if missing.
125
+ *
126
+ * @throws Error In strict mode, throws if `method` is unknown or the required
127
+ * client capability was not declared in the `initialize` request.
128
+ *
129
+ * @see {@link ClientCapabilityGuard} for full class documentation.
130
+ */
62
131
  canRegisterHandler(method) {
63
132
  return checkMethod({
64
133
  method,
@@ -74,6 +143,11 @@ export class ClientCapabilityGuard {
74
143
  strict: this.strict
75
144
  });
76
145
  }
146
+ /**
147
+ * Returns a defensive copy of the client capabilities this guard was built from.
148
+ *
149
+ * @returns A shallow copy of the client capabilities object.
150
+ */
77
151
  getClientCapabilities() {
78
152
  return { ...this.capabilities };
79
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"capability-guard.js","sourceRoot":"","sources":["../src/capability-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,wCAAwC,EACxC,mCAAmC,EACnC,mBAAmB,EACnB,mBAAmB,EACnB,kCAAkC,EAClC,6BAA6B,EAC9B,MAAM,eAAe,CAAC;AAEvB;;;GAGG;AACH,MAAM,OAAO,eAAe;IAEP,YAAY;IACZ,MAAM;IACN,MAAM;IAHzB,YACmB,YAAyC,EACzC,MAAc,EACd,MAAM,GAAY,KAAK,EACxC;4BAHiB,YAAY;sBACZ,MAAM;sBACN,MAAM;IACtB,CAAC;IAEJ,cAAc,CAAC,MAAc,EAAW;QACtC,OAAO,WAAW,CAAC;YACjB,MAAM;YACN,UAAU,EAAE,cAAc;YAC1B,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,6BAA6B,CAAC,CAAQ,CAAC;YAChE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAU,CAAC;YAC1E,WAAW,EAAE,cAAc;YAC3B,eAAe,EAAE,mBAAmB;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IAAA,CACJ;IAED,mBAAmB,CAAC,MAAc,EAAW;QAC3C,OAAO,WAAW,CAAC;YACjB,MAAM;YACN,UAAU,EAAE,cAAc;YAC1B,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kCAAkC,CAAC,CAAQ,CAAC;YACrE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAU,CAAC;YAC1E,WAAW,EAAE,mBAAmB;YAChC,eAAe,EAAE,mBAAmB;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IAAA,CACJ;IAED,qBAAqB,GAAgC;QACnD,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAAA,CACjC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAEb,YAAY;IACZ,MAAM;IACN,MAAM;IAHzB,YACmB,YAAyC,EACzC,MAAc,EACd,MAAM,GAAY,KAAK,EACxC;4BAHiB,YAAY;sBACZ,MAAM;sBACN,MAAM;IACtB,CAAC;IAEJ,kBAAkB,CAAC,MAAc,EAAW;QAC1C,OAAO,WAAW,CAAC;YACjB,MAAM;YACN,UAAU,EAAE,cAAc;YAC1B,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;gBACvB,OAAO,CACL,mCAAmC,CAAC,CAAQ,CAAC;oBAC7C,wCAAwC,CAAC,CAAQ,CAAC,CACnD,CAAC;YAAA,CACH;YACD,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAU,CAAC;YAC1E,WAAW,EAAE,kBAAkB;YAC/B,eAAe,EAAE,mBAAmB;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IAAA,CACJ;IAED,qBAAqB,GAAgC;QACnD,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAAA,CACjC;CACF"}
1
+ {"version":3,"file":"capability-guard.js","sourceRoot":"","sources":["../src/capability-guard.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EACL,cAAc,EACd,cAAc,EACd,WAAW,EACX,wCAAwC,EACxC,mCAAmC,EACnC,mBAAmB,EACnB,mBAAmB,EACnB,kCAAkC,EAClC,6BAA6B,EAC9B,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,OAAO,eAAe;IAEP,YAAY;IACZ,MAAM;IACN,MAAM;IAHzB,YACmB,YAAyC,EACzC,MAAc,EACd,MAAM,GAAY,KAAK;4BAFvB,YAAY;sBACZ,MAAM;sBACN,MAAM;IACtB,CAAC;IAEJ;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,MAAc;QAC3B,OAAO,WAAW,CAAC;YACjB,MAAM;YACN,UAAU,EAAE,cAAc;YAC1B,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,6BAA6B,CAAC,CAAQ,CAAC;YAChE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAU,CAAC;YAC1E,WAAW,EAAE,cAAc;YAC3B,eAAe,EAAE,mBAAmB;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAc;QAChC,OAAO,WAAW,CAAC;YACjB,MAAM;YACN,UAAU,EAAE,cAAc;YAC1B,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kCAAkC,CAAC,CAAQ,CAAC;YACrE,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAU,CAAC;YAC1E,WAAW,EAAE,mBAAmB;YAChC,eAAe,EAAE,mBAAmB;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,qBAAqB;QACnB,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,qBAAqB;IAEb,YAAY;IACZ,MAAM;IACN,MAAM;IAHzB,YACmB,YAAyC,EACzC,MAAc,EACd,MAAM,GAAY,KAAK;4BAFvB,YAAY;sBACZ,MAAM;sBACN,MAAM;IACtB,CAAC;IAEJ;;;;;;;;;;OAUG;IACH,kBAAkB,CAAC,MAAc;QAC/B,OAAO,WAAW,CAAC;YACjB,MAAM;YACN,UAAU,EAAE,cAAc;YAC1B,gBAAgB,EAAE,CAAC,CAAC,EAAE,EAAE;gBACtB,OAAO,CACL,mCAAmC,CAAC,CAAQ,CAAC;oBAC7C,wCAAwC,CAAC,CAAQ,CAAC,CACnD,CAAC;YACJ,CAAC;YACD,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,EAAE,GAAU,CAAC;YAC1E,WAAW,EAAE,kBAAkB;YAC/B,eAAe,EAAE,mBAAmB;YACpC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACH,qBAAqB;QACnB,OAAO,EAAE,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;IAClC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"capability-proxy.js","sourceRoot":"","sources":["../src/capability-proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capability-proxy.js","sourceRoot":"","sources":["../src/capability-proxy.ts"],"names":[],"mappings":"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"}
package/dist/client.d.ts CHANGED
@@ -12,20 +12,66 @@ import type { ConnectionHealth, StateChangeEvent } from './connection/index.js';
12
12
  * These methods are added at runtime via capability-proxy.ts
13
13
  */
14
14
  /**
15
- * LSP Client for connecting to language servers
15
+ * Typed LSP client that connects to a language server, manages the LSP
16
+ * handshake, and exposes capability-aware request namespaces.
16
17
  *
17
- * This class dynamically extends with capability-aware methods based on server capabilities.
18
- * Use `.expect<ServerCaps>()` after initialization to get typed access to server capabilities.
18
+ * @remarks
19
+ * `LSPClient` handles the `initialize` / `initialized` handshake
20
+ * automatically on `connect()`. After connecting, call `expect<ServerCaps>()`
21
+ * to narrow the client type to the server's advertised capabilities, giving
22
+ * you typed access to namespaces like `client.textDocument.hover(params)`.
19
23
  *
20
- * @template ClientCaps - Client capabilities (defaults to ClientCapabilities)
24
+ * ### Capability-aware namespaces
25
+ * After `connect()`, `LSPClient` dynamically attaches namespaces reflecting
26
+ * the server's `InitializeResult.capabilities`. Use `expect<Caps>()` to make
27
+ * this visible in TypeScript without changing runtime behaviour.
28
+ *
29
+ * ### Dynamic registration
30
+ * The client handles `client/registerCapability` and
31
+ * `client/unregisterCapability` requests automatically, updating the
32
+ * capability-aware namespaces at runtime.
33
+ *
34
+ * @useWhen
35
+ * You are embedding an LSP client inside an editor extension, a CLI tool, a
36
+ * test harness, or any process that connects to a language server.
37
+ *
38
+ * @avoidWhen
39
+ * You need to build the server end — use `LSPServer` from `@lspeasy/server`.
40
+ *
41
+ * @never
42
+ * NEVER call `sendRequest` before `connect()` completes — the transport is not
43
+ * attached yet and the call throws.
44
+ *
45
+ * NEVER send requests after `disconnect()` is called — the transport has been
46
+ * closed; any pending promises will reject with a "Connection closed" error.
47
+ *
48
+ * NEVER share one `LSPClient` across two separate language server processes —
49
+ * each process is an independent JSON-RPC peer with its own ID sequence and
50
+ * lifecycle state.
21
51
  *
22
52
  * @example
23
- * // Create a client, then narrow server capabilities after connecting
24
- * const client = new LSPClient<MyClientCaps>();
53
+ * ```ts
54
+ * import { LSPClient } from '@lspeasy/client';
55
+ * import { WebSocketTransport } from '@lspeasy/core';
56
+ *
57
+ * const client = new LSPClient({
58
+ * name: 'my-editor',
59
+ * capabilities: { textDocument: { hover: {} } },
60
+ * });
61
+ *
62
+ * const transport = new WebSocketTransport({ url: 'ws://localhost:2087' });
25
63
  * await client.connect(transport);
26
- * const typed = client.expect<{ hoverProvider: true; completionProvider: {} }>();
27
- * // typed.textDocument.hover is available (typed)
28
- * // typed.textDocument.completion is available (typed)
64
+ *
65
+ * const typed = client.expect<{ hoverProvider: true }>();
66
+ * const hover = await typed.textDocument.hover({
67
+ * textDocument: { uri: 'file:///src/index.ts' },
68
+ * position: { line: 0, character: 5 },
69
+ * });
70
+ * console.log(hover?.contents);
71
+ * ```
72
+ *
73
+ * @template ClientCaps - Client capabilities shape, defaults to `ClientCapabilities`.
74
+ * @category Client
29
75
  */
30
76
  declare class BaseLSPClient<ClientCaps extends Partial<ClientCapabilities> = ClientCapabilities> {
31
77
  private transport?;
@@ -53,7 +99,22 @@ declare class BaseLSPClient<ClientCaps extends Partial<ClientCapabilities> = Cli
53
99
  readonly notebookDocument: NotebookDocumentNamespace;
54
100
  constructor(options?: ClientOptions<ClientCaps>);
55
101
  /**
56
- * Connect to server and complete initialization
102
+ * Connects to the language server and performs the LSP initialization
103
+ * handshake (`initialize` → `initialized`).
104
+ *
105
+ * @remarks
106
+ * Sends an `initialize` request with the client's declared capabilities,
107
+ * waits for the server's `InitializeResult`, then sends `initialized`.
108
+ * Throws and cleans up the transport on any failure during handshake.
109
+ *
110
+ * @param transport - The transport to use for the connection.
111
+ * @returns The server's `InitializeResult` including `capabilities` and
112
+ * optional `serverInfo`.
113
+ * @throws {Error} When already connected. Fix: call `disconnect()` first, then re-connect with a fresh transport instance.
114
+ * @throws {Error} When the server rejects the `initialize` request (e.g. unsupported protocol version, missing required capabilities). Fix: inspect the error message for the server's error code; match your `ClientCapabilities` to what the server advertises.
115
+ * @throws {Error} When the transport closes before `initialize` completes (server crash, TCP reset). Fix: subscribe to `onError` on the transport before calling `connect()` to detect the cause, then retry with a new transport.
116
+ *
117
+ * @category Lifecycle
57
118
  */
58
119
  connect(transport: Transport): Promise<InitializeResult>;
59
120
  /**
@@ -65,7 +126,18 @@ declare class BaseLSPClient<ClientCaps extends Partial<ClientCapabilities> = Cli
65
126
  */
66
127
  isConnected(): boolean;
67
128
  /**
68
- * Send a request to the server
129
+ * Send a request to the server and await its response.
130
+ *
131
+ * @param method - The LSP request method name.
132
+ * @param params - Optional request parameters.
133
+ * @param token - Optional cancellation token.
134
+ * @returns A promise resolving to the server's result for the given method.
135
+ * @throws {Error} When the client is not connected. Fix: ensure `connect()` has resolved before calling `sendRequest()`.
136
+ * @throws {Error} When the server returns a JSON-RPC error response (e.g. `MethodNotFound`, `InvalidParams`). Fix: check `error.code` against `JSONRPCErrorCode` — if `-32601` (MethodNotFound), the server capability was not declared; gate the call with `serverSupportsRequest()`.
137
+ * @throws {Error} When the request times out (if `requestTimeout` is configured). Fix: increase `ClientOptions.requestTimeout`, or use `sendCancellableRequest()` to abort early and retry.
138
+ * @throws {Error} When the token is already cancelled before the call. Fix: check `token.isCancellationRequested` before calling, or handle the rejection in `.catch()`.
139
+ *
140
+ * @category Client
69
141
  */
70
142
  sendRequest<K extends LSPRequestMethod<'clientToServer'>>(method: K, params?: ParamsForRequest<K>, token?: CancellationToken): Promise<ResultForRequest<K>>;
71
143
  /**
@@ -73,11 +145,76 @@ declare class BaseLSPClient<ClientCaps extends Partial<ClientCapabilities> = Cli
73
145
  */
74
146
  sendNotification<M extends LSPNotificationMethod<'clientToServer'>>(method: M, params?: ParamsForNotification<M>): Promise<void>;
75
147
  /**
76
- * Send a cancellable request
148
+ * Sends a request that can be cancelled via the returned `cancel()` function.
149
+ *
150
+ * @remarks
151
+ * Convenience wrapper that creates a `CancellationTokenSource` internally,
152
+ * attaches it to the request, and exposes `cancel()` on the result.
153
+ * Calling `cancel()` sends `$/cancelRequest` to the server and rejects
154
+ * `promise` with a cancellation error.
155
+ *
156
+ * @param method - The LSP request method string.
157
+ * @param params - Optional request parameters.
158
+ * @returns A `CancellableRequest` with `promise` and `cancel`.
159
+ *
160
+ * @never
161
+ * NEVER ignore the `CancellableRequest.promise` rejection after calling
162
+ * `cancel()`. Always attach a `.catch()` handler to avoid unhandled
163
+ * promise rejections.
164
+ *
165
+ * @example
166
+ * ```ts
167
+ * const req = client.sendCancellableRequest('textDocument/completion', params);
168
+ *
169
+ * // Cancel on user keystroke
170
+ * input.addEventListener('input', () => req.cancel());
171
+ *
172
+ * try {
173
+ * const result = await req.promise;
174
+ * } catch (e) {
175
+ * if (e.message.includes('cancel')) return; // User cancelled
176
+ * throw e;
177
+ * }
178
+ * ```
179
+ *
180
+ * @category Client
77
181
  */
78
182
  sendCancellableRequest<M extends LSPRequestMethod<'clientToServer'>>(method: M, params?: ParamsForRequest<M>): CancellableRequest<ResultForRequest<M>>;
79
183
  /**
80
- * Send a request with partial-result streaming support.
184
+ * Sends a request with partial-result streaming support (LSP
185
+ * `partialResultToken`).
186
+ *
187
+ * @remarks
188
+ * Attaches a `partialResultToken` to the outgoing request params, then
189
+ * collects `$/progress` notifications from the server as each partial
190
+ * result arrives. Returns a summary of all partial results plus the final
191
+ * result when the request completes.
192
+ *
193
+ * @param method - The LSP request method (must support `partialResultToken`).
194
+ * @param params - The request parameters (a `partialResultToken` is injected).
195
+ * @param options - Streaming options including an `onPartial` callback.
196
+ * @param token - Optional cancellation token.
197
+ * @returns A `PartialRequestResult` with `cancelled`, `partialResults`, and
198
+ * `finalResult` (undefined if cancelled).
199
+ *
200
+ * @useWhen
201
+ * The server supports incremental results for long-running operations like
202
+ * `textDocument/completion` or `workspace/symbol` with large result sets.
203
+ *
204
+ * @avoidWhen
205
+ * The server does not advertise partial result support — the token will be
206
+ * silently ignored and no `$/progress` notifications will arrive.
207
+ *
208
+ * @example
209
+ * ```ts
210
+ * const { partialResults, finalResult } = await client.sendRequestWithPartialResults(
211
+ * 'workspace/symbol',
212
+ * { query: 'MyClass' },
213
+ * { onPartial: (symbols) => updateUI(symbols) }
214
+ * );
215
+ * ```
216
+ *
217
+ * @category Client
81
218
  */
82
219
  sendRequestWithPartialResults<M extends LSPRequestMethod<'clientToServer'>, TPartial = unknown>(method: M, params: ParamsForRequest<M>, options: PartialRequestOptions<TPartial>, token?: CancellationToken): Promise<PartialRequestResult<TPartial, ResultForRequest<M>>>;
83
220
  /**
@@ -191,7 +328,72 @@ declare class BaseLSPClient<ClientCaps extends Partial<ClientCapabilities> = Cli
191
328
  private handleClose;
192
329
  private startHeartbeatIfConfigured;
193
330
  }
331
+ /**
332
+ * Typed LSP client that connects to a language server, manages the LSP
333
+ * handshake, and exposes capability-aware request namespaces.
334
+ *
335
+ * @remarks
336
+ * `LSPClient` handles the `initialize` / `initialized` handshake automatically
337
+ * on `connect()`. After connecting, call `expect<ServerCaps>()` to narrow the
338
+ * client type to the server's advertised capabilities, giving you typed access
339
+ * to namespaces like `client.textDocument.hover(params)`.
340
+ *
341
+ * @useWhen
342
+ * You are embedding an LSP client inside an editor extension, a CLI tool, a
343
+ * test harness, or any process that connects to a language server.
344
+ *
345
+ * @avoidWhen
346
+ * You need to build the server end — use `LSPServer` from `@lspeasy/server`.
347
+ *
348
+ * @never
349
+ * NEVER call `sendRequest` before `connect()` completes — the transport is not
350
+ * attached yet and the call throws.
351
+ *
352
+ * NEVER send requests after `disconnect()` is called — the transport has been
353
+ * closed; any pending promises will reject with a "Connection closed" error.
354
+ *
355
+ * NEVER share one `LSPClient` across two separate language server processes —
356
+ * each process is an independent JSON-RPC peer with its own ID sequence and
357
+ * lifecycle state.
358
+ *
359
+ * @throws Error When `connect()` is called while already connected.
360
+ * @throws Error When `sendRequest()` is called before `connect()` completes.
361
+ *
362
+ * @see {@link ClientOptions} for all configuration options.
363
+ * @see {@link ConnectionHealthTracker} for monitoring connection liveness.
364
+ *
365
+ * @example
366
+ * ```ts
367
+ * import { LSPClient } from '@lspeasy/client';
368
+ * import { WebSocketTransport } from '@lspeasy/core';
369
+ *
370
+ * const client = new LSPClient({
371
+ * name: 'my-editor',
372
+ * capabilities: { textDocument: { hover: {} } },
373
+ * });
374
+ *
375
+ * const transport = new WebSocketTransport({ url: 'ws://localhost:2087' });
376
+ * await client.connect(transport);
377
+ *
378
+ * const typed = client.expect<{ hoverProvider: true }>();
379
+ * const hover = await typed.textDocument.hover({
380
+ * textDocument: { uri: 'file:///src/index.ts' },
381
+ * position: { line: 0, character: 5 },
382
+ * });
383
+ * ```
384
+ *
385
+ * @template ClientCaps - Client capabilities shape, defaults to `ClientCapabilities`.
386
+ * @category Client
387
+ */
194
388
  export type LSPClient<ClientCaps extends Partial<ClientCapabilities> = ClientCapabilities> = BaseLSPClient<ClientCaps> & Client<ClientCaps, ServerCapabilities>;
389
+ /**
390
+ * Constructs an {@link LSPClient} instance.
391
+ *
392
+ * @param options - Optional {@link ClientOptions} to configure the client.
393
+ * @returns A new `LSPClient` instance.
394
+ *
395
+ * @category Client
396
+ */
195
397
  export declare const LSPClient: new <ClientCaps extends Partial<ClientCapabilities> = ClientCapabilities>(options?: ClientOptions<ClientCaps>) => LSPClient<ClientCaps>;
196
398
  export {};
197
399
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}