Skip to content
Effect Days 2026 Get your ticket

RpcClient

15 exports Added in v1.0.0 Source

Client

FromGroup type

Added in v1.0.0 Source

Signature

type FromGroup<Group, E = never> = RpcClient<RpcGroup.Rpcs<Group>, E>

make

Added in v1.0.0 Source

Signature

declare const make: <Rpcs extends Rpc.Any, Flatten extends boolean = false>(group: RpcGroup.RpcGroup<Rpcs>, options?: {
readonly disableTracing?: boolean;
readonly flatten?: Flatten;
readonly generateRequestId?: () => RequestId;
readonly spanAttributes?: Record<string, unknown>;
readonly spanPrefix?: string;
}) => Effect.Effect<Flatten extends true ? RpcClient.Flat<Rpcs, RpcClientError> : RpcClient<Rpcs, RpcClientError>, never, Protocol | Rpc.MiddlewareClient<Rpcs> | Scope.Scope>

Signature

declare const makeNoSerialization: <Rpcs extends Rpc.Any, E, Flatten extends boolean = false>(group: RpcGroup.RpcGroup<Rpcs>, options: {
readonly disableTracing?: boolean;
readonly flatten?: Flatten;
readonly generateRequestId?: () => RequestId;
readonly onFromClient: (options: {
readonly context: Context.Context<never>;
readonly discard: boolean;
readonly message: FromClient<Rpcs>;
}) => Effect.Effect<void, E>;
readonly spanAttributes?: Record<string, unknown>;
readonly spanPrefix?: string;
readonly supportsAck?: boolean;
}) => Effect.Effect<{
readonly client: Flatten extends true ? RpcClient.Flat<Rpcs, E> : RpcClient<Rpcs, E>;
readonly write: (message: FromServer<Rpcs>) => Effect.Effect<void>;
}, never, Scope.Scope | Rpc.MiddlewareClient<Rpcs>>

RpcClient

Added in v1.0.0 Source

RpcClient type

Added in v1.0.0 Source

Signature

type RpcClient<Rpcs extends Rpc.Any, E = never> = Schema.Simplify<RpcClient.From<RpcClient.NonPrefixed<Rpcs>, E, ""> & { [CurrentPrefix in RpcClient.Prefixes<Rpcs>]: RpcClient.From<RpcClient.Prefixed<Rpcs, CurrentPrefix>, E, CurrentPrefix> }>

Headers

Signature

declare const currentHeaders: FiberRef.FiberRef<Headers.Headers>

withHeaders

Added in v1.0.0 Source

Signature

declare const withHeaders: {
(headers: Input): <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E, R>;
<A, E, R>(effect: Effect<A, E, R>, headers: Input): Effect<A, E, R>;
}

Signature

declare const withHeadersEffect: {
<E2, R2>(headers: Effect<Input, E2, R2>): <A, E, R>(effect: Effect<A, E, R>) => Effect<A, E2 | E, R2 | R>;
<A, E, R, E2, R2>(effect: Effect<A, E, R>, headers: Effect<Input, E2, R2>): Effect<A, E | E2, R | R2>;
}

Protocol

Signature

declare function layerProtocolHttp(options: {
readonly transformClient?: <E, R>(client: With<E, R>) => With<E, R>;
readonly url: string;
}): Layer<Protocol, never, any>

Signature

declare function layerProtocolSocket(options?: {
readonly retrySchedule?: Schedule<any, SocketError, never, never>;
readonly retryTransientErrors?: boolean;
}): Layer<Protocol, never, any>

Signature

declare function layerProtocolWorker(options: {
readonly concurrency?: number;
readonly size: number;
readonly targetUtilization?: number;
} | {
readonly concurrency?: number;
readonly maxSize: number;
readonly minSize: number;
readonly targetUtilization?: number;
readonly timeToLive: DurationInput;
}): Layer<Protocol, WorkerError, any>

Signature

declare function makeProtocolHttp(client: HttpClient): Effect<any, never, RpcSerialization>

Signature

declare function makeProtocolSocket(options?: {
readonly retrySchedule?: Schedule<any, SocketError, never, never>;
readonly retryTransientErrors?: boolean;
}): Effect<any, never, any>

Signature

declare function makeProtocolWorker(options: {
readonly concurrency?: number;
readonly size: number;
readonly targetUtilization?: number;
} | {
readonly concurrency?: number;
readonly maxSize: number;
readonly minSize: number;
readonly targetUtilization?: number;
readonly timeToLive: DurationInput;
}): Effect<any, WorkerError, any>

Protocol

Added in v1.0.0 Source

Signature

declare class Protocol extends any {
constructor();
static make: <EX, RX>(f: (write: any) => Effect<Omit<any, "run">, EX, RX>) => Effect<any, EX, RX>;
}