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

Function handleEncode

packages/effect/src/unstable/rpc/RpcServer.ts:628–646  ·  view source on GitHub ↗
(
    client: Client,
    requestId: RequestId,
    encodeDefect: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError>,
    collector: Transferable.Collector["Service"] | undefined,
    effect: Effect.Effect<A, Schema.SchemaError, R>,
    onSuccess: (a: A) => FromServerEncoded
  )

Source from the content-addressed store, hash-verified

626 const clients = new Map<number, Client>()
627
628 const handleEncode = <A, R>(
629 client: Client,
630 requestId: RequestId,
631 encodeDefect: (u: unknown) => Effect.Effect<unknown, Schema.SchemaError>,
632 collector: Transferable.Collector["Service"] | undefined,
633 effect: Effect.Effect<A, Schema.SchemaError, R>,
634 onSuccess: (a: A) => FromServerEncoded
635 ) =>
636 (collector ? Effect.provideService(effect, Transferable.Collector, collector) : effect).pipe(
637 Effect.flatMap((a) => send(client.id, onSuccess(a), collector && collector.clearUnsafe())),
638 Effect.catchCause((cause) => {
639 client.schemas.delete(requestId)
640 const defect = Cause.squash(Cause.map(cause, (e) => SchemaIssue.defaultFormatter(e.issue)))
641 return Effect.andThen(
642 sendRequestDefect(client, requestId, encodeDefect, defect),
643 server.write(client.id, { _tag: "Interrupt", requestId, interruptors: [] })
644 )
645 })
646 )
647
648 const sendRequestDefect = (
649 client: Client,

Callers 1

onFromServerFunction · 0.85

Calls 7

sendRequestDefectFunction · 0.85
clearUnsafeMethod · 0.80
sendFunction · 0.70
pipeMethod · 0.65
writeMethod · 0.65
onSuccessFunction · 0.50
mapMethod · 0.45

Tested by

no test coverage detected