MCPcopy Create free account
hub / github.com/Acode-Foundation/Acode / connectClient

Function connectClient

src/cm/lsp/clientManager.ts:165–201  ·  view source on GitHub ↗
(
  client: ExtendedLSPClient,
  transport: Transport,
  initializationOptions?: Record<string, unknown>,
)

Source from the content-addressed store, hash-verified

163) => InternalLSPRequest<Result>;
164
165function connectClient(
166 client: ExtendedLSPClient,
167 transport: Transport,
168 initializationOptions?: Record<string, unknown>,
169): void {
170 if (!initializationOptions || !Object.keys(initializationOptions).length) {
171 client.connect(transport);
172 return;
173 }
174
175 const patchedClient = client as unknown as {
176 requestInner: RequestInnerFn;
177 };
178 const originalRequestInner = patchedClient.requestInner.bind(
179 patchedClient,
180 ) as RequestInnerFn;
181
182 patchedClient.requestInner = function patchedRequestInner<Params, Result>(
183 method: string,
184 params: Params,
185 mapped?: boolean,
186 ): InternalLSPRequest<Result> {
187 if (method === "initialize" && isPlainObject(params)) {
188 params = {
189 ...params,
190 initializationOptions,
191 } as Params;
192 }
193 return originalRequestInner<Params, Result>(method, params, mapped);
194 };
195
196 try {
197 client.connect(transport);
198 } finally {
199 patchedClient.requestInner = originalRequestInner;
200 }
201}
202
203interface BuiltinExtensionsResult {
204 extensions: Extension[];

Callers 1

#initializeClientMethod · 0.85

Calls 2

isPlainObjectFunction · 0.85
connectMethod · 0.65

Tested by

no test coverage detected