Skip to content

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;