( entity: Entity.Entity<Type, Rpcs> )
| 45 | * @category Constructors |
| 46 | */ |
| 47 | export const toRpcGroup = <Type extends string, Rpcs extends Rpc.Any>( |
| 48 | entity: Entity.Entity<Type, Rpcs> |
| 49 | ): RpcGroup.RpcGroup<ConvertRpcs<Rpcs, Type>> => { |
| 50 | const rpcs: Array<Rpc.Any> = [] |
| 51 | for (const parentRpc_ of entity.protocol.requests.values()) { |
| 52 | const parentRpc = parentRpc_ as any as Rpc.AnyWithProps |
| 53 | const payloadSchema = Schema.Struct({ |
| 54 | entityId: Schema.String, |
| 55 | payload: parentRpc.payloadSchema |
| 56 | }) |
| 57 | const oldMake = payloadSchema.make |
| 58 | payloadSchema.make = (input: any, options?: Schema.MakeOptions) => { |
| 59 | return oldMake({ |
| 60 | entityId: input.entityId, |
| 61 | payload: parentRpc.payloadSchema.make ? parentRpc.payloadSchema.make(input.payload, options) : input.payload |
| 62 | }, options) |
| 63 | } |
| 64 | const rpc = Rpc.make(`${entity.type}.${parentRpc._tag}`, { |
| 65 | payload: payloadSchema, |
| 66 | error: Schema.Union(parentRpc.errorSchema, ...clientErrors), |
| 67 | success: parentRpc.successSchema |
| 68 | }).annotateContext(parentRpc.annotations) |
| 69 | const rpcDiscard = Rpc.make(`${entity.type}.${parentRpc._tag}Discard`, { |
| 70 | payload: payloadSchema, |
| 71 | error: Schema.Union(...clientErrors) |
| 72 | }).annotateContext(parentRpc.annotations) |
| 73 | rpcs.push(rpc, rpcDiscard) |
| 74 | } |
| 75 | return RpcGroup.make(...rpcs) as any as RpcGroup.RpcGroup<ConvertRpcs<Rpcs, Type>> |
| 76 | } |
| 77 | |
| 78 | /** |
| 79 | * @since 1.0.0 |
nothing calls this directly
no test coverage detected