Request
Constructors
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: {};Constructs a new Request.
Signature
declare const of: <R extends Request<any, any>>() => Request.Constructor<R>;Constructs a new Request.
Signature
declare const tagged: <
R extends Request<any, any> & {
_tag: string;
},
>(
tag: R["_tag"],
) => Request.Constructor<R, "_tag">;TaggedClass
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
Models
Signature
interface Cache extends ConsumerCache<
Request<any, any>,
{
handle: Deferred<unknown, unknown>;
listeners: Listeners;
}
> {}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;
};
}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>;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
Refinements
Request Completion
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>;
};completeEffect
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>;
};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>;
};interruptWhenPossible
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>;
};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
Signature
declare const EntryTypeId: unique symbol;EntryTypeId type
Signature
type EntryTypeId = typeof EntryTypeId;RequestTypeId
Signature
declare const RequestTypeId: unique symbol;RequestTypeId type
Signature
type RequestTypeId = typeof RequestTypeId;
Provides a constructor for a Request Class.