<A extends Request.Any>(
f: (
entry: Request.Entry<A>
) => Effect.Effect<Request.Success<A>, Request.Error<A>>
): RequestResolver<A>Constructs a request resolver from an effectual function.
Example (Creating a resolver from an effectful function)
import { Effect, Request, RequestResolver } from "effect"
interface GetUserFromAPIRequest extends Request.Request<string> {
readonly _tag: "GetUserFromAPIRequest"
readonly id: number
}
const GetUserFromAPIRequest = Request.tagged<GetUserFromAPIRequest>(
"GetUserFromAPIRequest"
)
// Create a resolver that uses effects (like HTTP calls)
const UserAPIResolver = RequestResolver.fromEffect<GetUserFromAPIRequest>(
(entry) =>
Effect.gen(function*() {
// Simulate an API call
yield* Effect.sleep("100 millis")
// Just return the result without error handling for simplicity
return `User ${entry.request.id} from API`
})
)
// Usage
const getUserEffect = Effect.request(
GetUserFromAPIRequest({ id: 123 }),
UserAPIResolver
)export const const fromEffect: <A extends Request.Any>(
f: (
entry: Request.Entry<A>
) => Effect.Effect<
Request.Success<A>,
Request.Error<A>
>
) => RequestResolver<A>
Constructs a request resolver from an effectual function.
Example (Creating a resolver from an effectful function)
import { Effect, Request, RequestResolver } from "effect"
interface GetUserFromAPIRequest extends Request.Request<string> {
readonly _tag: "GetUserFromAPIRequest"
readonly id: number
}
const GetUserFromAPIRequest = Request.tagged<GetUserFromAPIRequest>(
"GetUserFromAPIRequest"
)
// Create a resolver that uses effects (like HTTP calls)
const UserAPIResolver = RequestResolver.fromEffect<GetUserFromAPIRequest>(
(entry) =>
Effect.gen(function*() {
// Simulate an API call
yield* Effect.sleep("100 millis")
// Just return the result without error handling for simplicity
return `User ${entry.request.id} from API`
})
)
// Usage
const getUserEffect = Effect.request(
GetUserFromAPIRequest({ id: 123 }),
UserAPIResolver
)
fromEffect = <function (type parameter) A in <A extends Request.Any>(f: (entry: Request.Entry<A>) => Effect.Effect<Request.Success<A>, Request.Error<A>>): RequestResolver<A>A extends import RequestRequest.type Request.Any = /*unresolved*/ anyAny>(
f: (
entry: Request.Entry<A>
) => Effect.Effect<
Request.Success<A>,
Request.Error<A>
>
f: (entry: Request.Entry<A>(parameter) entry: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request.Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request.Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
entry: import RequestRequest.type Request.Entry = /*unresolved*/ anyEntry<function (type parameter) A in <A extends Request.Any>(f: (entry: Request.Entry<A>) => Effect.Effect<Request.Success<A>, Request.Error<A>>): RequestResolver<A>A>) => import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<import RequestRequest.type Request.Success = /*unresolved*/ anySuccess<function (type parameter) A in <A extends Request.Any>(f: (entry: Request.Entry<A>) => Effect.Effect<Request.Success<A>, Request.Error<A>>): RequestResolver<A>A>, import RequestRequest.type Request.Error = /*unresolved*/ anyError<function (type parameter) A in <A extends Request.Any>(f: (entry: Request.Entry<A>) => Effect.Effect<Request.Success<A>, Request.Error<A>>): RequestResolver<A>A>>
): interface RequestResolver<in A extends Request.Any>A resolver that executes and completes batched Request entries.
Details
A resolver controls how requests are grouped, delayed, optionally
pre-checked, and finally run. Its runAll method receives a non-empty batch
of Request.Entry values for a single batch key and must complete every
received entry, usually by calling completeUnsafe or one of the Request
completion helpers.
Gotchas
If a resolver finishes without completing an entry, the waiting request fails
because the resolver did not supply a result.
Example (Defining a request resolver)
import { Effect, Exit, RequestResolver } from "effect"
import type { Request } from "effect"
interface GetUserRequest extends Request.Request<string, Error> {
readonly _tag: "GetUserRequest"
readonly id: number
}
// In practice, you would typically use RequestResolver.make() instead
const resolver = RequestResolver.make<GetUserRequest>((entries) =>
Effect.sync(() => {
for (const entry of entries) {
entry.completeUnsafe(Exit.succeed(`User ${entry.request.id}`))
}
})
)
Namespace containing type-level helpers associated with RequestResolver.
RequestResolver<function (type parameter) A in <A extends Request.Any>(f: (entry: Request.Entry<A>) => Effect.Effect<Request.Success<A>, Request.Error<A>>): RequestResolver<A>A> => {
import effecteffect.function interruptChildrenPatch(): voidinterruptChildrenPatch() // ensure middleware is registered
return const make: <A extends Request.Any>(
runAll: (
entries: NonEmptyArray<Request.Entry<A>>,
key: unknown
) => Effect.Effect<void, Request.Error<A>>
) => RequestResolver<A>
Constructs a request resolver with the specified method to run requests.
Example (Creating a request resolver)
import { Effect, Exit, Request, RequestResolver } from "effect"
// Define a request type
interface GetUserRequest extends Request.Request<string, Error> {
readonly _tag: "GetUserRequest"
readonly id: number
}
const GetUserRequest = Request.tagged<GetUserRequest>("GetUserRequest")
// Create a resolver that handles the requests
const UserResolver = RequestResolver.make<GetUserRequest>((entries) =>
Effect.sync(() => {
for (const entry of entries) {
// Complete each request with a result
entry.completeUnsafe(Exit.succeed(`User ${entry.request.id}`))
}
})
)
// Use the resolver to handle requests
const getUserEffect = Effect.request(GetUserRequest({ id: 123 }), UserResolver)
make((entries: NonEmptyArray<Request.Entry<A>>(parameter) entries: {
0: Request.Entry<A>;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
pop: () => Request.Entry<A> | undefined;
push: (...items: Array<Request.Entry<A>>) => number;
concat: { (...items: Array<ConcatArray<Request.Entry<A>>>): Array<Request.Entry<A>>; (...items: Array<Request.Entry<A> | ConcatArray<Request.Entry<A>>>): Array<Request.Entry<A>> };
join: (separator?: string) => string;
reverse: () => Array<Request.Entry<A>>;
shift: () => Request.Entry<A> | undefined;
slice: (start?: number, end?: number) => Array<Request.Entry<A>>;
sort: (compareFn?: ((a: Request.Entry<A>, b: Request.Entry<A>) => number) | undefined) => [Request.Entry<A>, ...Request.Entry<A>[]];
splice: { (start: number, deleteCount?: number): Array<Request.Entry<A>>; (start: number, deleteCount: number, ...items: Array<Request.Entry<A>>): Array<Request.Entry<A>> };
unshift: (...items: Array<Request.Entry<A>>) => number;
indexOf: (searchElement: Request.Entry<A>, fromIndex?: number) => number;
lastIndexOf: (searchElement: Request.Entry<A>, fromIndex?: number) => number;
every: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): this is S[]; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: a…;
some: (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => void, thisArg?: any) => void;
map: (callbackfn: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): Array<S>; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any)…;
reduce: { (callbackfn: (previousValue: Request.Entry<A>, currentValue: Request.Entry<A>, currentIndex: number, array: Array<Request.Entry<A>>) => Request.Entry<A>): Request.Entry<A>; (callbackfn: (previousValue: Request.Entry<A>, currentValue: Req…;
reduceRight: { (callbackfn: (previousValue: Request.Entry<A>, currentValue: Request.Entry<A>, currentIndex: number, array: Array<Request.Entry<A>>) => Request.Entry<A>): Request.Entry<A>; (callbackfn: (previousValue: Request.Entry<A>, currentValue: Req…;
find: { (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => unknown, thisArg?: any…;
findIndex: (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => unknown, thisArg?: any) => number;
fill: (value: Request.Entry<A>, start?: number, end?: number) => [Request.Entry<A>, ...Request.Entry<A>[]];
copyWithin: (target: number, start: number, end?: number) => [Request.Entry<A>, ...Request.Entry<A>[]];
entries: () => ArrayIterator<[number, Request.Entry<A>]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<Request.Entry<A>>;
includes: (searchElement: Request.Entry<A>, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => Request.Entry<A> | undefined;
findLast: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?:…;
findLastIndex: (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any) => number;
toReversed: () => Array<Request.Entry<A>>;
toSorted: (compareFn?: ((a: Request.Entry<A>, b: Request.Entry<A>) => number) | undefined) => Array<Request.Entry<A>>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<Request.Entry<A>>): Array<Request.Entry<A>>; (start: number, deleteCount?: number): Array<Request.Entry<A>> };
with: (index: number, value: Request.Entry<A>) => Array<Request.Entry<A>>;
}
entries) =>
import EffectEffect.callback<void>((resume: anyresume) => {
const const parent: Fiber<any, any>const parent: {
id: number;
currentOpCount: number;
getRef: <A>(ref: Context.Reference<A>) => A;
context: Context.Context<never>;
setContext: (context: Context.Context<never>) => void;
currentScheduler: Scheduler;
currentDispatcher: SchedulerDispatcher;
currentSpan: AnySpan | undefined;
currentLogLevel: LogLevel;
minimumLogLevel: LogLevel;
currentStackFrame: StackFrame | undefined;
maxOpsBeforeYield: number;
currentPreventYield: boolean;
addObserver: (cb: (exit: Exit<A, E>) => void) => () => void;
interruptUnsafe: (fiberId?: number | undefined, annotations?: Context.Context<never> | undefined) => void;
pollUnsafe: () => Exit<A, E> | undefined;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
}
parent = import effecteffect.const getCurrentFiber: () =>
| Fiber.Fiber<any, any>
| undefined
getCurrentFiber()!
let let done: numberdone = 0
for (let let i: numberi = 0; let i: numberi < entries: NonEmptyArray<Request.Entry<A>>(parameter) entries: {
0: Request.Entry<A>;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
pop: () => Request.Entry<A> | undefined;
push: (...items: Array<Request.Entry<A>>) => number;
concat: { (...items: Array<ConcatArray<Request.Entry<A>>>): Array<Request.Entry<A>>; (...items: Array<Request.Entry<A> | ConcatArray<Request.Entry<A>>>): Array<Request.Entry<A>> };
join: (separator?: string) => string;
reverse: () => Array<Request.Entry<A>>;
shift: () => Request.Entry<A> | undefined;
slice: (start?: number, end?: number) => Array<Request.Entry<A>>;
sort: (compareFn?: ((a: Request.Entry<A>, b: Request.Entry<A>) => number) | undefined) => [Request.Entry<A>, ...Request.Entry<A>[]];
splice: { (start: number, deleteCount?: number): Array<Request.Entry<A>>; (start: number, deleteCount: number, ...items: Array<Request.Entry<A>>): Array<Request.Entry<A>> };
unshift: (...items: Array<Request.Entry<A>>) => number;
indexOf: (searchElement: Request.Entry<A>, fromIndex?: number) => number;
lastIndexOf: (searchElement: Request.Entry<A>, fromIndex?: number) => number;
every: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): this is S[]; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: a…;
some: (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => void, thisArg?: any) => void;
map: (callbackfn: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): Array<S>; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any)…;
reduce: { (callbackfn: (previousValue: Request.Entry<A>, currentValue: Request.Entry<A>, currentIndex: number, array: Array<Request.Entry<A>>) => Request.Entry<A>): Request.Entry<A>; (callbackfn: (previousValue: Request.Entry<A>, currentValue: Req…;
reduceRight: { (callbackfn: (previousValue: Request.Entry<A>, currentValue: Request.Entry<A>, currentIndex: number, array: Array<Request.Entry<A>>) => Request.Entry<A>): Request.Entry<A>; (callbackfn: (previousValue: Request.Entry<A>, currentValue: Req…;
find: { (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => unknown, thisArg?: any…;
findIndex: (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => unknown, thisArg?: any) => number;
fill: (value: Request.Entry<A>, start?: number, end?: number) => [Request.Entry<A>, ...Request.Entry<A>[]];
copyWithin: (target: number, start: number, end?: number) => [Request.Entry<A>, ...Request.Entry<A>[]];
entries: () => ArrayIterator<[number, Request.Entry<A>]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<Request.Entry<A>>;
includes: (searchElement: Request.Entry<A>, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => Request.Entry<A> | undefined;
findLast: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?:…;
findLastIndex: (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any) => number;
toReversed: () => Array<Request.Entry<A>>;
toSorted: (compareFn?: ((a: Request.Entry<A>, b: Request.Entry<A>) => number) | undefined) => Array<Request.Entry<A>>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<Request.Entry<A>>): Array<Request.Entry<A>>; (start: number, deleteCount?: number): Array<Request.Entry<A>> };
with: (index: number, value: Request.Entry<A>) => Array<Request.Entry<A>>;
}
entries.length; let i: numberi++) {
const const entry: Request.Entry<A>const entry: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request.Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request.Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
entry = entries: NonEmptyArray<Request.Entry<A>>(parameter) entries: {
0: Request.Entry<A>;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
pop: () => Request.Entry<A> | undefined;
push: (...items: Array<Request.Entry<A>>) => number;
concat: { (...items: Array<ConcatArray<Request.Entry<A>>>): Array<Request.Entry<A>>; (...items: Array<Request.Entry<A> | ConcatArray<Request.Entry<A>>>): Array<Request.Entry<A>> };
join: (separator?: string) => string;
reverse: () => Array<Request.Entry<A>>;
shift: () => Request.Entry<A> | undefined;
slice: (start?: number, end?: number) => Array<Request.Entry<A>>;
sort: (compareFn?: ((a: Request.Entry<A>, b: Request.Entry<A>) => number) | undefined) => [Request.Entry<A>, ...Request.Entry<A>[]];
splice: { (start: number, deleteCount?: number): Array<Request.Entry<A>>; (start: number, deleteCount: number, ...items: Array<Request.Entry<A>>): Array<Request.Entry<A>> };
unshift: (...items: Array<Request.Entry<A>>) => number;
indexOf: (searchElement: Request.Entry<A>, fromIndex?: number) => number;
lastIndexOf: (searchElement: Request.Entry<A>, fromIndex?: number) => number;
every: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): this is S[]; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: a…;
some: (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => void, thisArg?: any) => void;
map: (callbackfn: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): Array<S>; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any)…;
reduce: { (callbackfn: (previousValue: Request.Entry<A>, currentValue: Request.Entry<A>, currentIndex: number, array: Array<Request.Entry<A>>) => Request.Entry<A>): Request.Entry<A>; (callbackfn: (previousValue: Request.Entry<A>, currentValue: Req…;
reduceRight: { (callbackfn: (previousValue: Request.Entry<A>, currentValue: Request.Entry<A>, currentIndex: number, array: Array<Request.Entry<A>>) => Request.Entry<A>): Request.Entry<A>; (callbackfn: (previousValue: Request.Entry<A>, currentValue: Req…;
find: { (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => unknown, thisArg?: any…;
findIndex: (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => unknown, thisArg?: any) => number;
fill: (value: Request.Entry<A>, start?: number, end?: number) => [Request.Entry<A>, ...Request.Entry<A>[]];
copyWithin: (target: number, start: number, end?: number) => [Request.Entry<A>, ...Request.Entry<A>[]];
entries: () => ArrayIterator<[number, Request.Entry<A>]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<Request.Entry<A>>;
includes: (searchElement: Request.Entry<A>, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => Request.Entry<A> | undefined;
findLast: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?:…;
findLastIndex: (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any) => number;
toReversed: () => Array<Request.Entry<A>>;
toSorted: (compareFn?: ((a: Request.Entry<A>, b: Request.Entry<A>) => number) | undefined) => Array<Request.Entry<A>>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<Request.Entry<A>>): Array<Request.Entry<A>>; (start: number, deleteCount?: number): Array<Request.Entry<A>> };
with: (index: number, value: Request.Entry<A>) => Array<Request.Entry<A>>;
}
entries[let i: numberi]
const const fiber: effect.FiberImpl<
Request.Success<A>,
Request.Error<A>
>
const fiber: {
id: number;
interruptible: boolean;
currentOpCount: number;
currentLoopCount: number;
_stack: Array<Primitive>;
_observers: Array<(exit: Exit.Exit<A, E>) => void>;
_exit: Exit.Exit<A, E> | undefined;
_currentExit: Exit.Exit<A, E> | undefined;
_children: Set<FiberImpl<any, any>> | undefined;
_interruptedCause: Cause.Cause<never> | undefined;
_yielded: Exit.Exit<any, any> | (() => void) | undefined;
context: Context.Context<never>;
currentScheduler: Scheduler.Scheduler;
currentTracerContext: Tracer.Tracer["context"];
currentSpan: Tracer.AnySpan | undefined;
currentLogLevel: LogLevel.LogLevel;
minimumLogLevel: LogLevel.LogLevel;
currentStackFrame: StackFrame | undefined;
runtimeMetrics: Metric.FiberRuntimeMetricsService | undefined;
maxOpsBeforeYield: number;
currentPreventYield: boolean;
_dispatcher: Scheduler.SchedulerDispatcher | undefined;
currentDispatcher: SchedulerDispatcher;
getRef: <X>(ref: Context.Reference<X>) => X;
addObserver: (cb: (exit: Exit.Exit<Request.Success<A>, Request.Error<A>>) => void) => () => void;
interruptUnsafe: (fiberId?: number | undefined, annotations?: Context.Context<never> | undefined) => void;
pollUnsafe: () => Exit.Exit<Request.Success<A>, Request.Error<A>> | undefined;
evaluate: (effect: Primitive) => void;
runLoop: (effect: Primitive) => Exit.Exit<Request.Success<A>, Request.Error<A>> | typeof Yield;
getCont: <S extends contA | contE>(symbol: S) => (Primitive & Record<S, (value: any, fiber: effect.FiberImpl) => Primitive>) | undefined;
yieldWith: (value: Exit.Exit<any, any> | (() => void)) => Yield;
children: () => Set<Fiber.Fiber<any, any>>;
pipe: () => unknown;
setContext: (context: Context.Context<never>) => void;
currentSpanLocal: Tracer.Span | undefined;
}
fiber = import effecteffect.const forkUnsafe: <FA, FE, A, E, R>(
parent: Fiber.Fiber<FA, FE>,
effect: Effect.Effect<A, E, R>,
immediate?: boolean,
daemon?: boolean,
uninterruptible?: boolean | "inherit"
) => FiberImpl<A, E>
forkUnsafe(const parent: Fiber<any, any>const parent: {
id: number;
currentOpCount: number;
getRef: <A>(ref: Context.Reference<A>) => A;
context: Context.Context<never>;
setContext: (context: Context.Context<never>) => void;
currentScheduler: Scheduler;
currentDispatcher: SchedulerDispatcher;
currentSpan: AnySpan | undefined;
currentLogLevel: LogLevel;
minimumLogLevel: LogLevel;
currentStackFrame: StackFrame | undefined;
maxOpsBeforeYield: number;
currentPreventYield: boolean;
addObserver: (cb: (exit: Exit<A, E>) => void) => () => void;
interruptUnsafe: (fiberId?: number | undefined, annotations?: Context.Context<never> | undefined) => void;
pollUnsafe: () => Exit<A, E> | undefined;
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
}
parent as any, f: (
entry: Request.Entry<A>
) => Effect.Effect<
Request.Success<A>,
Request.Error<A>
>
f(const entry: Request.Entry<A>const entry: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request.Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request.Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
entry), true)
const fiber: effect.FiberImpl<
Request.Success<A>,
Request.Error<A>
>
const fiber: {
id: number;
interruptible: boolean;
currentOpCount: number;
currentLoopCount: number;
_stack: Array<Primitive>;
_observers: Array<(exit: Exit.Exit<A, E>) => void>;
_exit: Exit.Exit<A, E> | undefined;
_currentExit: Exit.Exit<A, E> | undefined;
_children: Set<FiberImpl<any, any>> | undefined;
_interruptedCause: Cause.Cause<never> | undefined;
_yielded: Exit.Exit<any, any> | (() => void) | undefined;
context: Context.Context<never>;
currentScheduler: Scheduler.Scheduler;
currentTracerContext: Tracer.Tracer["context"];
currentSpan: Tracer.AnySpan | undefined;
currentLogLevel: LogLevel.LogLevel;
minimumLogLevel: LogLevel.LogLevel;
currentStackFrame: StackFrame | undefined;
runtimeMetrics: Metric.FiberRuntimeMetricsService | undefined;
maxOpsBeforeYield: number;
currentPreventYield: boolean;
_dispatcher: Scheduler.SchedulerDispatcher | undefined;
currentDispatcher: SchedulerDispatcher;
getRef: <X>(ref: Context.Reference<X>) => X;
addObserver: (cb: (exit: Exit.Exit<Request.Success<A>, Request.Error<A>>) => void) => () => void;
interruptUnsafe: (fiberId?: number | undefined, annotations?: Context.Context<never> | undefined) => void;
pollUnsafe: () => Exit.Exit<Request.Success<A>, Request.Error<A>> | undefined;
evaluate: (effect: Primitive) => void;
runLoop: (effect: Primitive) => Exit.Exit<Request.Success<A>, Request.Error<A>> | typeof Yield;
getCont: <S extends contA | contE>(symbol: S) => (Primitive & Record<S, (value: any, fiber: effect.FiberImpl) => Primitive>) | undefined;
yieldWith: (value: Exit.Exit<any, any> | (() => void)) => Yield;
children: () => Set<Fiber.Fiber<any, any>>;
pipe: () => unknown;
setContext: (context: Context.Context<never>) => void;
currentSpanLocal: Tracer.Span | undefined;
}
fiber.FiberImpl<unknown, unknown>.addObserver(cb: (exit: Exit.Exit<unknown, unknown>) => void): () => voidaddObserver((exit: Exit.Exit<
Request.Success<A>,
Request.Error<A>
>
exit) => {
const entry: Request.Entry<A>const entry: {
request: R;
context: Context.Context<[R] extends [Request<infer _A, infer _E, infer _R>] ? _R : never>;
uninterruptible: boolean;
completeUnsafe: (exit: Exit.Exit<[A] extends [Request.Request<infer _A, infer _E, infer _R>] ? _A : never, [A] extends [Request.Request<infer _A, infer _E, infer _R>] ? _E : never>) => void;
}
entry.completeUnsafe(exit: Exit.Exit<
Request.Success<A>,
Request.Error<A>
>
exit)
let done: numberdone++
if (let done: numberdone === entries: NonEmptyArray<Request.Entry<A>>(parameter) entries: {
0: Request.Entry<A>;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
pop: () => Request.Entry<A> | undefined;
push: (...items: Array<Request.Entry<A>>) => number;
concat: { (...items: Array<ConcatArray<Request.Entry<A>>>): Array<Request.Entry<A>>; (...items: Array<Request.Entry<A> | ConcatArray<Request.Entry<A>>>): Array<Request.Entry<A>> };
join: (separator?: string) => string;
reverse: () => Array<Request.Entry<A>>;
shift: () => Request.Entry<A> | undefined;
slice: (start?: number, end?: number) => Array<Request.Entry<A>>;
sort: (compareFn?: ((a: Request.Entry<A>, b: Request.Entry<A>) => number) | undefined) => [Request.Entry<A>, ...Request.Entry<A>[]];
splice: { (start: number, deleteCount?: number): Array<Request.Entry<A>>; (start: number, deleteCount: number, ...items: Array<Request.Entry<A>>): Array<Request.Entry<A>> };
unshift: (...items: Array<Request.Entry<A>>) => number;
indexOf: (searchElement: Request.Entry<A>, fromIndex?: number) => number;
lastIndexOf: (searchElement: Request.Entry<A>, fromIndex?: number) => number;
every: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): this is S[]; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: a…;
some: (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => void, thisArg?: any) => void;
map: (callbackfn: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): Array<S>; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any)…;
reduce: { (callbackfn: (previousValue: Request.Entry<A>, currentValue: Request.Entry<A>, currentIndex: number, array: Array<Request.Entry<A>>) => Request.Entry<A>): Request.Entry<A>; (callbackfn: (previousValue: Request.Entry<A>, currentValue: Req…;
reduceRight: { (callbackfn: (previousValue: Request.Entry<A>, currentValue: Request.Entry<A>, currentIndex: number, array: Array<Request.Entry<A>>) => Request.Entry<A>): Request.Entry<A>; (callbackfn: (previousValue: Request.Entry<A>, currentValue: Req…;
find: { (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => unknown, thisArg?: any…;
findIndex: (predicate: (value: Request.Entry<A>, index: number, obj: Array<Request.Entry<A>>) => unknown, thisArg?: any) => number;
fill: (value: Request.Entry<A>, start?: number, end?: number) => [Request.Entry<A>, ...Request.Entry<A>[]];
copyWithin: (target: number, start: number, end?: number) => [Request.Entry<A>, ...Request.Entry<A>[]];
entries: () => ArrayIterator<[number, Request.Entry<A>]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<Request.Entry<A>>;
includes: (searchElement: Request.Entry<A>, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => Request.Entry<A> | undefined;
findLast: { (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => value is S, thisArg?: any): S | undefined; (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?:…;
findLastIndex: (predicate: (value: Request.Entry<A>, index: number, array: Array<Request.Entry<A>>) => unknown, thisArg?: any) => number;
toReversed: () => Array<Request.Entry<A>>;
toSorted: (compareFn?: ((a: Request.Entry<A>, b: Request.Entry<A>) => number) | undefined) => Array<Request.Entry<A>>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<Request.Entry<A>>): Array<Request.Entry<A>>; (start: number, deleteCount?: number): Array<Request.Entry<A>> };
with: (index: number, value: Request.Entry<A>) => Array<Request.Entry<A>>;
}
entries.length) {
resume: anyresume(import effecteffect.const void: Effect.Effect<void, never, never>(alias) const void: {
pipe: { <A>(this: A): A; <A, B = never>(this: A, ab: (_: A) => B): B; <A, B = never, C = never>(this: A, ab: (_: A) => B, bc: (_: B) => C): C; <A, B = never, C = never, D = never>(this: A, ab: (_: A) => B, bc: (_: B) => C, cd: (_: C) => D): D; <…;
toString: () => string;
toJSON: () => unknown;
}
void)
}
})
}
})
)
}