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

Function toRpcGroup

packages/effect/src/unstable/cluster/EntityProxy.ts:64–93  ·  view source on GitHub ↗
(
  entity: Entity.Entity<Type, Rpcs>
)

Source from the content-addressed store, hash-verified

62 * @since 4.0.0
63 */
64export const toRpcGroup = <Type extends string, Rpcs extends Rpc.Any>(
65 entity: Entity.Entity<Type, Rpcs>
66): RpcGroup.RpcGroup<ConvertRpcs<Rpcs, Type>> => {
67 const rpcs: Array<Rpc.Any> = []
68 for (const parentRpc_ of entity.protocol.requests.values()) {
69 const parentRpc = parentRpc_ as any as Rpc.AnyWithProps
70 const payloadSchema = Schema.Struct({
71 entityId: Schema.String,
72 payload: parentRpc.payloadSchema
73 })
74 const oldMake = payloadSchema.make
75 payloadSchema.make = (input: any, options?: Schema.MakeOptions) => {
76 return oldMake({
77 entityId: input.entityId,
78 payload: parentRpc.payloadSchema.make(input.payload, options)
79 }, options)
80 }
81 const rpc = Rpc.make(`${entity.type}.${parentRpc._tag}`, {
82 payload: payloadSchema,
83 error: Schema.Union([parentRpc.errorSchema, ...requestErrors]),
84 success: parentRpc.successSchema
85 }).annotateMerge(parentRpc.annotations)
86 const rpcDiscard = Rpc.make(`${entity.type}.${parentRpc._tag}Discard`, {
87 payload: payloadSchema,
88 error: Schema.Union(clientErrors)
89 }).annotateMerge(parentRpc.annotations)
90 rpcs.push(rpc, rpcDiscard)
91 }
92 return RpcGroup.make(...rpcs) as any as RpcGroup.RpcGroup<ConvertRpcs<Rpcs, Type>>
93}
94
95/**
96 * Type-level conversion used by `toRpcGroup`.

Callers

nothing calls this directly

Calls 3

pushMethod · 0.80
makeMethod · 0.65
annotateMergeMethod · 0.65

Tested by

no test coverage detected