MCPcopy Create free account
hub / github.com/Effect-TS/effect / layerClient

Function layerClient

packages/effect/src/unstable/rpc/RpcMiddleware.ts:324–345  ·  view source on GitHub ↗
(
  tag: Context.Key<Id, S>,
  service:
    | RpcMiddlewareClient<Id[TypeId]["error"]["Type"], Id[TypeId]["clientError"], R>
    | Effect.Effect<RpcMiddlewareClient<Id[TypeId]["error"]["Type"], Id[TypeId]["clientError"], R>, EX, RX>
)

Source from the content-addressed store, hash-verified

322 * @since 4.0.0
323 */
324export const layerClient = <Id extends AnyId, S, R, EX = never, RX = never>(
325 tag: Context.Key<Id, S>,
326 service:
327 | RpcMiddlewareClient<Id[TypeId]["error"]["Type"], Id[TypeId]["clientError"], R>
328 | Effect.Effect<RpcMiddlewareClient<Id[TypeId]["error"]["Type"], Id[TypeId]["clientError"], R>, EX, RX>
329): Layer.Layer<ForClient<Id>, EX, R | Exclude<RX, Scope>> =>
330 Layer.effectContext(Effect.gen(function*() {
331 const services = (yield* Effect.context<R | Scope>()).pipe(
332 Context.omit(Scope)
333 ) as Context.Context<R>
334 const middleware = Effect.isEffect(service) ? yield* service : service
335 return Context.makeUnsafe(
336 new Map([[
337 `${tag.key}/Client`,
338 (options: any) =>
339 Effect.updateContext(
340 middleware(options),
341 (requestContext) => Context.merge(services, requestContext)
342 )
343 ]])
344 )
345 }))

Callers

nothing calls this directly

Calls 5

contextMethod · 0.80
mergeMethod · 0.80
middlewareFunction · 0.70
pipeMethod · 0.65
omitMethod · 0.65

Tested by

no test coverage detected