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

Function getRpcClientMiddleware

packages/effect/src/unstable/rpc/RpcClient.ts:505–538  ·  view source on GitHub ↗
(
    rpc: Rpc.AnyWithProps
  )

Source from the content-addressed store, hash-verified

503 })
504
505 const getRpcClientMiddleware = (
506 rpc: Rpc.AnyWithProps
507 ): (
508 send: (request: Request<Rpcs>) => Effect.Effect<any, E>,
509 request: Request<Rpcs>
510 ) => Effect.Effect<any, E> => {
511 const middlewares: Array<RpcMiddleware.RpcMiddlewareClient<any, any, any>> = []
512 for (const tag of rpc.middlewares.values()) {
513 const middleware = Context.getOrUndefinedUnsafe(services, `${tag.key}/Client`) as any
514 if (!middleware) continue
515 middlewares.push(middleware)
516 }
517
518 if (middlewares.length === 0) {
519 return (send, request) => send(request)
520 }
521
522 return function loop(
523 send: (request: Request<Rpcs>) => Effect.Effect<any, E>,
524 request: Request<Rpcs>,
525 index = middlewares.length - 1
526 ): Effect.Effect<any, E> {
527 if (index === -1) {
528 return send(request)
529 }
530 return middlewares[index]({
531 rpc,
532 request,
533 next(request) {
534 return loop(send, request, index - 1) as any
535 }
536 }) as Effect.Effect<any, E>
537 }
538 }
539
540 const sendInterrupt = (
541 requestId: RequestId,

Callers 1

onRequestFunction · 0.85

Calls 2

pushMethod · 0.80
sendFunction · 0.70

Tested by

no test coverage detected