Skip to content
Effect 4.0 is here. One ecosystem. Zero dependencies.

Request

24 exports Since v2.0.0 Source

Constructors

Since v2.0.0

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
}> {}

Signature

declare const makeEntry: {}
Since v2.0.0

Constructs a new Request.

Signature

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

Constructs a new Request.

Signature

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

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

Since v2.0.0

Signature

declare const isEntry: {}

Models

Cache

interface
Since v2.0.0

Signature

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

Entry

interface
Since v2.0.0

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
Since v2.0.0

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;
}

Signature

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

Request

interface
Since v2.0.0

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

Since v2.0.0

Refinements

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

Signature

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

Request Completion

Since v2.0.0

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>;
}
Since v2.0.0

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>;
}

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>;
}
Since v2.0.0

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

Signature

declare const EntryTypeId: unique symbol
Since v2.0.0

Signature

type EntryTypeId = typeof EntryTypeId

Signature

declare const RequestTypeId: unique symbol
Since v2.0.0

Signature

type RequestTypeId = typeof RequestTypeId