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

RequestBlock

12 exports Since v2.0.0 Source

Constructors

Since v2.0.0

Signature

declare const empty: RequestBlock

Signature

declare const mapRequestResolvers: <A>(self: RequestBlock, f: (dataSource: RequestResolver.RequestResolver<A>) => RequestResolver.RequestResolver<A>) => RequestBlock
Since v2.0.0

Signature

declare const parallel: (self: RequestBlock, that: RequestBlock) => RequestBlock
Since v2.0.0

Signature

declare const reduce: <Z>(self: RequestBlock, reducer: RequestBlock.Reducer<Z>) => Z

Signature

declare const sequential: (self: RequestBlock, that: RequestBlock) => RequestBlock
Since v2.0.0

Signature

declare const single: <A>(dataSource: RequestResolver.RequestResolver<A>, blockedRequest: Request.Entry<A>) => RequestBlock

Models

Empty

interface
Since v2.0.0

Signature

interface Empty {
readonly _tag: "Empty";
}

Par

interface
Since v2.0.0

Signature

interface Par {
readonly _tag: "Par";
readonly left: RequestBlock;
readonly right: RequestBlock;
}
Since v2.0.0

RequestBlock captures a collection of blocked requests as a data structure. By doing this the library is able to preserve information about which requests must be performed sequentially and which can be performed in parallel, allowing for maximum possible batching and pipelining while preserving ordering guarantees.

Signature

type RequestBlock = Empty | Par | Seq | Single

Seq

interface
Since v2.0.0

Signature

interface Seq {
readonly _tag: "Seq";
readonly left: RequestBlock;
readonly right: RequestBlock;
}

Single

interface
Since v2.0.0

Signature

interface Single {
readonly _tag: "Single";
readonly blockedRequest: Entry<unknown>;
readonly dataSource: RequestResolver<unknown>;
}