Skip to content

Request

24 exports Added in v2.0.0 Source

Constructors

Class

Added in v2.0.0 Source

Provides a constructor for a Request Class.

Signature

declare const Class: <Success, Error, A extends Record<string, any>>(
  args: Types.Equals<Omit<A, keyof Request<unknown, unknown>>, {}> extends true
    ? void
    : { [P in keyof A]: A[P] },
) => Request<Success, Error> & Readonly<A>;

Example

import { Request } from "effect"

type Success = string
type Error = never

class MyRequest extends Request.Class<
  Success,
  Error,
  {
    readonly id: string
  }
> {}

makeEntry

Added in v2.0.0 Source

Signature

declare const makeEntry: {};

of

Added in v2.0.0 Source

Constructs a new Request.

Signature

declare const of: <R extends Request<any, any>>() => Request.Constructor<R>;

tagged

Added in v2.0.0 Source

Constructs a new Request.

Signature

declare const tagged: <
  R extends Request<any, any> & {
    _tag: string;
  },
>(
  tag: R["_tag"],
) => Request.Constructor<R, "_tag">;

TaggedClass

Added in v2.0.0 Source

Provides a Tagged constructor for a Request Class.

Signature

declare const TaggedClass: <Tag extends string>(
  tag: Tag,
) => <Success, Error, A extends Record<string, any>>(
  args: Types.Equals<Omit<A, keyof Request<unknown, unknown>>, {}> extends true
    ? void
    : { [P in keyof A]: A[P] },
) => Request<Success, Error> &
  Readonly<A> & {
    readonly _tag: Tag;
  };

Example

import { Request } from "effect"

type Success = string
type Error = never

class MyRequest extends Request.TaggedClass("MyRequest")<
  Success,
  Error,
  {
    readonly name: string
  }
> {}

Guards

isEntry

Added in v2.0.0 Source

Signature

declare const isEntry: {};

Models

Cache interface

Added in v2.0.0 Source

Signature

interface Cache extends ConsumerCache<
  Request<any, any>,
  {
    handle: Deferred<unknown, unknown>;
    listeners: Listeners;
  }
> {}

Entry

Added in v2.0.0 Source

Entry interface

Added in v2.0.0 Source

A Entry<A> keeps track of a request of type A along with a Ref containing the result of the request, existentially hiding the result type. This is used internally by the library to support data sources that return different result types for different requests while guaranteeing that results will be of the type requested.

Signature

interface Entry<out R> extends Variance<R> {
  readonly listeners: Listeners;
  readonly ownerId: FiberId;
  readonly request: R;
  readonly result: Deferred<
    [R] extends [Request<_A, _E>] ? _A : never,
    [R] extends [Request<_A, _E>] ? _E : never
  >;
  readonly state: {
    completed: boolean;
  };
}

Listeners interface

Added in v2.0.0 Source

Signature

interface Listeners {
  readonly count: number;
  interrupted: boolean;
  readonly observers: Set<(count: number) => void>;
  addObserver(f: (count: number) => void): void;
  decrement(): void;
  increment(): void;
  removeObserver(f: (count: number) => void): void;
}

makeCache

Added in v2.0.0 Source

Signature

declare function makeCache(options: {
  readonly capacity: number;
  readonly timeToLive: DurationInput;
}): Effect<Cache>;

Request interface

Added in v2.0.0 Source

A Request<A, E> is a request from a data source for a value of type A that may fail with an E.

Signature

interface Request<out A, out E = never> extends Variance<A, E> {}

Other

Request

Added in v2.0.0 Source

Refinements

isRequest

Added in v2.0.0 Source

Returns true if the specified value is a Request, false otherwise.

Signature

declare const isRequest: (u: unknown) => u is Request<unknown, unknown>;

Request Completion

complete

Added in v2.0.0 Source

Complete a Request with the specified result.

Signature

declare const complete: {
  <A extends Request<any, any>>(result: Result<A>): (self: A) => Effect<void>;
  <A extends Request<any, any>>(self: A, result: Result<A>): Effect<void>;
};

Complete a Request with the specified effectful computation, failing the request with the error from the effect workflow if it fails, and completing the request with the value of the effect workflow if it succeeds.

Signature

declare const completeEffect: {
  <A extends Request<any, any>, R>(
    effect: Effect<Success<A>, Error<A>, R>,
  ): (self: A) => Effect<void, never, R>;
  <A extends Request<any, any>, R>(
    self: A,
    effect: Effect<Success<A>, Error<A>, R>,
  ): Effect<void, never, R>;
};

fail

Added in v2.0.0 Source

Complete a Request with the specified error.

Signature

declare const fail: {
  <A extends Request<any, any>>(error: Error<A>): (self: A) => Effect<void>;
  <A extends Request<any, any>>(self: A, error: Error<A>): Effect<void>;
};

failCause

Added in v2.0.0 Source

Complete a Request with the specified cause.

Signature

declare const failCause: {
  <A extends Request<any, any>>(cause: Cause<Error<A>>): (self: A) => Effect<void>;
  <A extends Request<any, any>>(self: A, cause: Cause<Error<A>>): Effect<void>;
};

Interrupts the child effect when requests are no longer needed

Signature

declare const interruptWhenPossible: {
  (all: Iterable<Request<any, any>>): <A, E, R>(self: Effect<A, E, R>) => Effect<void, E, R>;
  <A, E, R>(self: Effect<A, E, R>, all: Iterable<Request<any, any>>): Effect<void, E, R>;
};

succeed

Added in v2.0.0 Source

Complete a Request with the specified value.

Signature

declare const succeed: {
  <A extends Request<any, any>>(value: Success<A>): (self: A) => Effect<void>;
  <A extends Request<any, any>>(self: A, value: Success<A>): Effect<void>;
};

Symbols

EntryTypeId

Added in v2.0.0 Source

Signature

declare const EntryTypeId: unique symbol;

EntryTypeId type

Added in v2.0.0 Source

Signature

type EntryTypeId = typeof EntryTypeId;

Signature

declare const RequestTypeId: unique symbol;

RequestTypeId type

Added in v2.0.0 Source

Signature

type RequestTypeId = typeof RequestTypeId;