Skip to content

lspeasy / core/src / clientSupportsRequest

Function: clientSupportsRequest()

ts
function clientSupportsRequest<M, T>(method, capabilities): capabilities is T & ConditionalSimplifyDeep<UnionToIntersection<{ [P in "window.workDoneProgress" | "window.showDocument.support" | "window.showMessage" | "workspace.workspaceFolders" | "workspace.configuration" | "workspace.semanticTokens.refreshSupport" | "workspace.inlineValue.refreshSupport" | "workspace.inlayHint.refreshSupport" | "workspace.diagnostics.refreshSupport" | "workspace.codeLens" | "workspace.applyEdit"]: { [KeyType in string | number | symbol]: PickDeepObject<ClientCapabilities, P>[KeyType] } }[ClientCapabilityForRequest<M>]>, NonRecursiveType | ReadonlyMap<unknown, unknown> | WeakMap<WeakKey, unknown> | ReadonlySet<unknown> | WeakSet<WeakKey>, object>;

Defined in: packages/core/src/protocol/capabilities.ts:120

Type-guarding predicate that narrows capabilities to include the specific client capability key required for the given server-to-client request method.

Type Parameters

Type Parameter
M extends | "client/registerCapability" | "client/unregisterCapability" | "window/workDoneProgress/create" | "window/showDocument" | "window/showMessageRequest" | "workspace/workspaceFolders" | "workspace/configuration" | "workspace/semanticTokens/refresh" | "workspace/inlineValue/refresh" | "workspace/inlayHint/refresh" | "workspace/diagnostic/refresh" | "workspace/codeLens/refresh" | "workspace/applyEdit"
T extends Partial<ClientCapabilities>

Parameters

ParameterTypeDescription
methodMThe LSP request method string (e.g. 'client/registerCapability').
capabilitiesTThe ClientCapabilities object to test.

Returns

capabilities is T & ConditionalSimplifyDeep<UnionToIntersection<{ [P in "window.workDoneProgress" | "window.showDocument.support" | "window.showMessage" | "workspace.workspaceFolders" | "workspace.configuration" | "workspace.semanticTokens.refreshSupport" | "workspace.inlineValue.refreshSupport" | "workspace.inlayHint.refreshSupport" | "workspace.diagnostics.refreshSupport" | "workspace.codeLens" | "workspace.applyEdit"]: { [KeyType in string | number | symbol]: PickDeepObject<ClientCapabilities, P>[KeyType] } }[ClientCapabilityForRequest<M>]>, NonRecursiveType | ReadonlyMap<unknown, unknown> | WeakMap<WeakKey, unknown> | ReadonlySet<unknown> | WeakSet<WeakKey>, object>

true when the client has declared support for the method.

Released under the MIT License.