Skip to content

Commit

Permalink
enforce Rpc.fromTaggedRequest
Browse files Browse the repository at this point in the history
  • Loading branch information
tim-smart committed Feb 8, 2025
1 parent 4e68a8b commit 5f15c4d
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 15 deletions.
7 changes: 0 additions & 7 deletions packages/rpc/src/Rpc.ts
Original file line number Diff line number Diff line change
Expand Up @@ -421,13 +421,6 @@ export type ExcludeProvides<Env, R extends Any, Tag extends string> = Exclude<
ExtractProvides<R, Tag>
>

/**
* @since 1.0.0
* @category models
*/
export type FromInput<S extends AnyTaggedRequestSchema | Any> = S extends AnyTaggedRequestSchema ? From<S>
: S

/**
* @since 1.0.0
* @category models
Expand Down
14 changes: 7 additions & 7 deletions packages/rpc/src/RpcGroup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@ export interface RpcGroup<in out Rpcs extends Rpc.Any> extends Pipeable {
/**
* Add one or more procedures to the group.
*/
add<const Rpcs2 extends ReadonlyArray<Rpc.Any | Rpc.AnyTaggedRequestSchema>>(
add<const Rpcs2 extends ReadonlyArray<Rpc.Any>>(
...rpcs: Rpcs2
): RpcGroup<Rpcs | Rpc.FromInput<Rpcs2[number]>>
): RpcGroup<Rpcs | Rpcs2[number]>

/**
* Merge this group with another group.
Expand Down Expand Up @@ -226,10 +226,10 @@ const makeProto = <Rpcs extends Rpc.Any>(options: {
annotations: options.annotations
}) as any

const resolveInput = <Rpcs extends ReadonlyArray<Rpc.Any | Rpc.AnyTaggedRequestSchema>>(
const resolveInput = <Rpcs extends ReadonlyArray<Rpc.Any>>(
...rpcs: Rpcs
): ReadonlyMap<string, Rpc.FromInput<Rpcs[number]>> => {
const requests = new Map<string, Rpc.FromInput<Rpcs[number]>>()
): ReadonlyMap<string, Rpcs[number]> => {
const requests = new Map<string, Rpcs[number]>()
for (const rpc of rpcs) {
requests.set(rpc._tag, Schema.isSchema(rpc) ? Rpc.fromTaggedRequest(rpc as any) : rpc as any)
}
Expand All @@ -240,9 +240,9 @@ const resolveInput = <Rpcs extends ReadonlyArray<Rpc.Any | Rpc.AnyTaggedRequestS
* @since 1.0.0
* @category groups
*/
export const make = <const Rpcs extends ReadonlyArray<Rpc.Any | Rpc.AnyTaggedRequestSchema>>(
export const make = <const Rpcs extends ReadonlyArray<Rpc.Any>>(
...rpcs: Rpcs
): RpcGroup<Rpc.FromInput<Rpcs[number]>> =>
): RpcGroup<Rpcs[number]> =>
makeProto({
requests: resolveInput(...rpcs),
annotations: Context.empty()
Expand Down
2 changes: 1 addition & 1 deletion packages/rpc/test/fixtures/schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export const UserRpcs = RpcGroup
success: User,
payload: { id: Schema.String }
}),
StreamUsers,
Rpc.fromTaggedRequest(StreamUsers),
Rpc.make("GetInterrupts", {
success: Schema.Number
}),
Expand Down

0 comments on commit 5f15c4d

Please sign in to comment.