Skip to content
Effect Days 2026 Get your ticket

RpcMiddleware

14 exports Added in v1.0.0 Source

Client

layerClient

Added in v1.0.0 Source

Signature

declare function layerClient<Id, S, R, EX = never, RX = never>(tag: Tag<Id, S>, service: RpcMiddlewareClient<R> | Effect<RpcMiddlewareClient<R>, EX, RX>): Layer<ForClient<Id>, EX, R | Exclude<RX, Scope>>

Models

Any interface

Added in v1.0.0 Source

Signature

interface Any {
(options: {
readonly headers: Headers;
readonly next?: Effect<any, any, any>;
readonly payload: unknown;
readonly rpc: AnyWithProps;
}): Effect<any, any>;
}

ForClient interface

Added in v1.0.0 Source

Signature

interface ForClient<Id> {
readonly _: typeof _;
readonly id: Id;
}

RpcMiddleware interface

Added in v1.0.0 Source

Signature

interface RpcMiddleware<Provides, E> {
(options: {
readonly clientId: number;
readonly headers: Headers;
readonly payload: unknown;
readonly rpc: AnyWithProps;
}): Effect<Provides, E>;
}

RpcMiddlewareClient interface

Added in v1.0.0 Source

Signature

interface RpcMiddlewareClient<R = never> {
(options: {
readonly request: Request<Any>;
readonly rpc: AnyWithProps;
}): Effect<Request<Any>, never, R>;
}

RpcMiddlewareWrap interface

Added in v1.0.0 Source

Signature

interface RpcMiddlewareWrap<Provides, E> {
(options: {
readonly clientId: number;
readonly headers: Headers;
readonly next: Effect<SuccessValue, E, Provides>;
readonly payload: unknown;
readonly rpc: AnyWithProps;
}): Effect<SuccessValue, E>;
}

SuccessValue interface

Added in v1.0.0 Source

Signature

interface SuccessValue {
readonly _: typeof _;
}

TagClass

Added in v1.0.0 Source

TagClass interface

Added in v1.0.0 Source

Signature

interface TagClass<Self, Name extends string, Options> extends Base<Self, Name, Options, TagClass.Wrap<Options> extends true ? RpcMiddlewareWrap<TagClass.Provides<Options>, TagClass.Failure<Options>> : RpcMiddleware<TagClass.Service<Options>, TagClass.FailureService<Options>>> {
constructor(_: never);
}

TagClassAny interface

Added in v1.0.0 Source

Signature

interface TagClassAny extends Tag<any, any> {
readonly [TypeId]: typeof TypeId;
readonly failure: All;
readonly optional: boolean;
readonly provides?: any;
readonly requiredForClient: boolean;
readonly wrap: boolean;
}

TagClassAnyWithProps interface

Added in v1.0.0 Source

Signature

interface TagClassAnyWithProps extends Tag<any, RpcMiddleware<any, any> | RpcMiddlewareWrap<any, any>> {
readonly [TypeId]: typeof TypeId;
readonly failure: All;
readonly optional: boolean;
readonly provides?: any;
readonly requiredForClient: boolean;
readonly wrap: boolean;
}

Tags

Tag

Added in v1.0.0 Source

Signature

declare function Tag<Self>(): <Name extends string, Options extends {
readonly failure?: any;
readonly optional?: boolean;
readonly provides?: any;
readonly requiredForClient?: boolean;
readonly wrap?: boolean;
}>(id: Name, options?: Options) => TagClass<Self, Name, Options>

Type Ids

TypeId

Added in v1.0.0 Source

Signature

declare const TypeId: unique symbol

TypeId type

Added in v1.0.0 Source

Signature

type TypeId = typeof TypeId