@effect-ts/system
Version:
Effect-TS is a zero dependency set of libraries to write highly productive, purely functional TypeScript at scale.
353 lines • 17.5 kB
TypeScript
import * as Chunk from "../Collections/Immutable/Chunk/core.js";
import type { Exit } from "../Exit/index.js";
import type { FiberContext } from "../Fiber/context.js";
import type * as Fiber from "../Fiber/core.js";
import type { Managed } from "../Managed/managed.js";
import type { ReleaseMap } from "../Managed/ReleaseMap/index.js";
import * as O from "../Option/index.js";
import type { Promise } from "../Promise/index.js";
import * as Q from "../Queue/core.js";
import { AtomicBoolean } from "../Support/AtomicBoolean/index.js";
import type { MutableQueue } from "../Support/MutableQueue/index.js";
import type { Effect, UIO } from "./effect.js";
import type { ExecutionStrategy } from "./ExecutionStrategy.js";
/**
* Applies the function `f` to each element of the `Iterable<A>` and
* returns the results in a new `readonly B[]`.
*
* For a parallel version of this method, see `forEachPar`.
* If you do not need the results, see `forEachUnit` for a more efficient implementation.
*/
export declare function forEach_<A, R, E, B>(as: Iterable<A>, f: (a: A) => Effect<R, E, B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Same as `forEach_`, except that the function `f` is supplied
* a second argument that corresponds to the index (starting from 0)
* of the current element being iterated over.
*/
export declare function forEachWithIndex_<A, R, E, B>(as: Iterable<A>, f: (a: A, i: number) => Effect<R, E, B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Applies the function `f` to each element of the `Iterable<A>` and
* returns the results in a new `readonly B[]`.
*
* For a parallel version of this method, see `forEachPar`.
* If you do not need the results, see `forEachUnit` for a more efficient implementation.
*
* @ets_data_first forEach_
*/
export declare function forEach<A, R, E, B>(f: (a: A) => Effect<R, E, B>, __trace?: string): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Same as `forEach`, except that the function `f` is supplied
* a second argument that corresponds to the index (starting from 0)
* of the current element being iterated over.
*
* @ets_data_first forEachWithIndex_
*/
export declare function forEachWithIndex<A, R, E, B>(f: (a: A, i: number) => Effect<R, E, B>, __trace?: string): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Applies the function `f` to each element of the `Iterable<A>` and runs
* produced effects sequentially.
*
* Equivalent to `asUnit(forEach(as, f))`, but without the cost of building
* the list of results.
*/
export declare function forEachUnit_<R, E, A, X>(as: Iterable<A>, f: (a: A) => Effect<R, E, X>, __trace?: string): Effect<R, E, void>;
/**
* Applies the function `f` to each element of the `Iterable<A>` and runs
* produced effects sequentially.
*
* Equivalent to `asUnit(forEach(as, f))`, but without the cost of building
* the list of results.
*
* @ets_data_first forEachUnit_
*/
export declare function forEachUnit<R, E, A, X>(f: (a: A) => Effect<R, E, X>, __trace?: string): (as: Iterable<A>) => Effect<R, E, void>;
/**
* Applies the function `f` to each element of the `Iterable<A>` and runs
* produced effects in parallel, discarding the results.
*
* For a sequential version of this method, see `forEach_`.
*
* Optimized to avoid keeping full tree of effects, so that method could be
* able to handle large input sequences.
* Behaves almost like this code:
*
* Additionally, interrupts all effects on any failure.
*/
export declare function forEachUnitPar_<R, E, A, X>(as: Iterable<A>, f: (a: A) => Effect<R, E, X>, __trace?: string): Effect<R, E, void>;
/**
* Forks the fiber in a `Managed`. Using the `Managed` value will
* execute the effect in the fiber, while ensuring its interruption when
* the effect supplied to `use` completes.
*/
export declare function forkManaged<R, E, A>(self: Effect<R, E, A>, __trace?: string): Managed<R, never, FiberContext<E, A>>;
/**
* Applies the function `f` to each element of the `Iterable<A>` and runs
* produced effects in parallel, discarding the results.
*
* For a sequential version of this method, see `forEach_`.
*
* Optimized to avoid keeping full tree of effects, so that method could be
* able to handle large input sequences.
* Behaves almost like this code:
*
* Additionally, interrupts all effects on any failure.
*
* @ets_data_first forEachUnitPar_
*/
export declare function forEachUnitPar<R, E, A, X>(f: (a: A) => Effect<R, E, X>, __trace?: string): (as: Iterable<A>) => Effect<R, E, void>;
/**
* Applies the function `f` to each element of the `Iterable<A>` in parallel,
* and returns the results in a new `readonly B[]`.
*
* For a sequential version of this method, see `forEach`.
*/
export declare function forEachPar_<R, E, A, B>(as: Iterable<A>, f: (a: A) => Effect<R, E, B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Same as `forEachPar_`, except that the function `f` is supplied
* a second argument that corresponds to the index (starting from 0)
* of the current element being iterated over.
*/
export declare function forEachParWithIndex_<R, E, A, B>(as: Iterable<A>, f: (a: A, i: number) => Effect<R, E, B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Applies the function `f` to each element of the `Iterable<A>` in parallel,
* and returns the results in a new `readonly B[]`.
*
* For a sequential version of this method, see `forEach`.
*
* @ets_data_first forEachPar_
*/
export declare function forEachPar<R, E, A, B>(f: (a: A) => Effect<R, E, B>, __trace?: string): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Same as `forEachPar`, except that the function `f` is supplied
* a second argument that corresponds to the index (starting from 0)
* of the current element being iterated over.
*/
export declare function forEachParWithIndex<R, E, A, B>(f: (a: A, i: number) => Effect<R, E, B>, __trace?: string): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Applies the function `f` to each element of the `Iterable[A]` and runs
* produced effects in parallel, discarding the results.
*
* Unlike `forEachUnitPar_`, this method will use at most up to `n` fibers.
*/
export declare function forEachUnitParN_<R, E, A, X>(as: Iterable<A>, n: number, f: (a: A) => Effect<R, E, X>, __trace?: string): Effect<R, E, void>;
/**
* Applies the function `f` to each element of the `Iterable[A]` and runs
* produced effects in parallel, discarding the results.
*
* Unlike `forEachUnitPar_`, this method will use at most up to `n` fibers.
*
* @ets_data_first forEachUnitParN_
*/
export declare function forEachUnitParN<R, E, A, X>(n: number, f: (a: A) => Effect<R, E, X>, __trace?: string): (as: Iterable<A>) => Effect<R, E, void>;
/**
* Applies the functionw `f` to each element of the `Iterable<A>` in parallel,
* and returns the results in a new `readonly B[]`.
*
* Unlike `forEachPar`, this method will use at most up to `n` fibers.
*/
export declare function forEachParN_<R, E, A, B>(as: Iterable<A>, n: number, f: (a: A) => Effect<R, E, B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Same as `forEachParN_`, except that the function `f` is supplied
* a second argument that corresponds to the index (starting from 0)
* of the current element being iterated over.
*/
export declare function forEachParWithIndexN_<R, E, A, B>(as: Iterable<A>, n: number, f: (a: A, i: number) => Effect<R, E, B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Applies the functionw `f` to each element of the `Iterable<A>` in parallel,
* and returns the results in a new `readonly B[]`.
*
* Unlike `forEachPar`, this method will use at most up to `n` fibers.
*
* @ets_data_first forEachParN_
*/
export declare function forEachParN<R, E, A, B>(n: number, f: (a: A) => Effect<R, E, B>, __trace?: string): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Same as `forEachParN`, except that the function `f` is supplied
* a second argument that corresponds to the index (starting from 0)
* of the current element being iterated over.
*
* @ets_data_first forEachParWithIndexN_
*/
export declare function forEachParWithIndexN<R, E, A, B>(n: number, f: (a: A, i: number) => Effect<R, E, B>, __trace?: string): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Applies the function `f` to each element of the `Iterable<A>` in parallel,
* and returns the results in a new `readonly B[]`.
*
* For a sequential version of this method, see `forEach`.
*/
export declare function forEachExec_<R, E, A, B>(as: Iterable<A>, es: ExecutionStrategy, f: (a: A) => Effect<R, E, B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Applies the function `f` to each element of the `Iterable<A>` in parallel,
* and returns the results in a new `readonly B[]`.
*
* For a sequential version of this method, see `forEach`.
*
* @ets_data_first forEachExec_
*/
export declare function forEachExec<R, E, A, B>(es: ExecutionStrategy, f: (a: A) => Effect<R, E, B>, __trace?: string): (as: Iterable<A>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Evaluate each effect in the structure from left to right, and collect the
* results. For a parallel version, see `collectAllPar`.
*/
export declare function collectAll<R, E, A>(as: Iterable<Effect<R, E, A>>, __trace?: string): Effect<R, E, Chunk.Chunk<A>>;
/**
* Evaluate each effect in the structure in parallel, and collect the
* results. For a sequential version, see `collectAll`.
*/
export declare function collectAllPar<R, E, A>(as: Iterable<Effect<R, E, A>>, __trace?: string): Effect<R, E, Chunk.Chunk<A>>;
/**
* Evaluate each effect in the structure in parallel, and collect the
* results. For a sequential version, see `collectAll`.
*
* Unlike `collectAllPar`, this method will use at most `n` fibers.
*
* @ets_data_first collectAllParN_
*/
export declare function collectAllParN(n: number, __trace?: string): <R, E, A>(as: Iterable<Effect<R, E, A>>) => Effect<R, E, Chunk.Chunk<A>>;
/**
* Evaluate each effect in the structure in parallel, and collect the
* results. For a sequential version, see `collectAll`.
*
* Unlike `collectAllPar`, this method will use at most `n` fibers.
*/
export declare function collectAllParN_<R, E, A>(as: Iterable<Effect<R, E, A>>, n: number, __trace?: string): Effect<R, E, Chunk.Chunk<A>>;
/**
* Evaluate each effect in the structure from left to right, and discard the
* results. For a parallel version, see `collectAllUnitPar`.
*/
export declare function collectAllUnit<R, E, A>(as: Iterable<Effect<R, E, A>>, __trace?: string): Effect<R, E, void>;
/**
* Evaluate each effect in the structure in parallel, and discard the
* results. For a sequential version, see `collectAllUnit`.
*/
export declare function collectAllUnitPar<R, E, A>(as: Iterable<Effect<R, E, A>>, __trace?: string): Effect<R, E, void>;
/**
* Evaluate each effect in the structure in parallel, and discard the
* results. For a sequential version, see `collectAllUnit`.
*
* Unlike `collectAllUnitPar`, this method will use at most `n` fibers.
*
* @ets_data_first collectAllUnitParN_
*/
export declare function collectAllUnitParN(n: number, __trace?: string): <R, E, A>(as: Iterable<Effect<R, E, A>>) => Effect<R, E, void>;
/**
* Evaluate each effect in the structure in parallel, and discard the
* results. For a sequential version, see `collectAllUnit`.
*
* Unlike `collectAllUnitPar`, this method will use at most `n` fibers.
*/
export declare function collectAllUnitParN_<R, E, A>(as: Iterable<Effect<R, E, A>>, n: number, __trace?: string): Effect<R, E, void>;
/**
* Evaluate each effect in the structure with `collectAll`, and collect
* the results with given partial function.
*/
export declare function collectAllWith_<R, E, A, B>(as: Iterable<Effect<R, E, A>>, pf: (a: A) => O.Option<B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Evaluate each effect in the structure with `collectAll`, and collect
* the results with given partial function.
*
* @ets_data_first collectAllWith_
*/
export declare function collectAllWith<A, B>(pf: (a: A) => O.Option<B>, __trace?: string): <R, E>(as: Iterable<Effect<R, E, A>>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Evaluate each effect in the structure with `collectAll`, and collect
* the results with given partial function.
*/
export declare function collectAllWithPar_<R, E, A, B>(as: Iterable<Effect<R, E, A>>, pf: (a: A) => O.Option<B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Evaluate each effect in the structure with `collectAll`, and collect
* the results with given partial function.
*
* @ets_data_first collectAllWithPar_
*/
export declare function collectAllWithPar<A, B>(pf: (a: A) => O.Option<B>, __trace?: string): <R, E>(as: Iterable<Effect<R, E, A>>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Evaluate each effect in the structure with `collectAllPar`, and collect
* the results with given partial function.
*
* Unlike `collectAllWithPar`, this method will use at most up to `n` fibers.
*/
export declare function collectAllWithParN_<R, E, A, B>(as: Iterable<Effect<R, E, A>>, n: number, pf: (a: A) => O.Option<B>, __trace?: string): Effect<R, E, Chunk.Chunk<B>>;
/**
* Evaluate each effect in the structure with `collectAllPar`, and collect
* the results with given partial function.
*
* Unlike `collectAllWithPar`, this method will use at most up to `n` fibers.
*
* @ets_data_first collectAllWithParN_
*/
export declare function collectAllWithParN<A, B>(n: number, pf: (a: A) => O.Option<B>, __trace?: string): <R, E>(as: Iterable<Effect<R, E, A>>) => Effect<R, E, Chunk.Chunk<B>>;
/**
* Evaluate and run each effect in the structure and collect discarding failed ones.
*/
export declare function collectAllSuccesses<R, E, A>(as: Iterable<Effect<R, E, A>>, __trace?: string): Effect<R, never, Chunk.Chunk<A>>;
/**
* Evaluate and run each effect in the structure in parallel, and collect discarding failed ones.
*/
export declare function collectAllSuccessesPar<R, E, A>(as: Iterable<Effect<R, E, A>>, __trace?: string): Effect<R, never, Chunk.Chunk<A>>;
/**
* Evaluate and run each effect in the structure in parallel, and collect discarding failed ones.
*
* Unlike `collectAllSuccessesPar`, this method will use at most up to `n` fibers.
*/
export declare function collectAllSuccessesParN_<R, E, A>(as: Iterable<Effect<R, E, A>>, n: number, __trace?: string): Effect<R, never, Chunk.Chunk<A>>;
/**
* Evaluate and run each effect in the structure in parallel, and collect discarding failed ones.
*
* Unlike `collectAllSuccessesPar`, this method will use at most up to `n` fibers.
*
* @ets_data_first collectAllSuccessesParN_
*/
export declare function collectAllSuccessesParN(n: number, __trace?: string): <R, E, A>(as: Iterable<Effect<R, E, A>>) => Effect<R, never, Chunk.Chunk<A>>;
/**
* Joins all fibers, awaiting their _successful_ completion.
* Attempting to join a fiber that has erred will result in
* a catchable error, _if_ that error does not result from interruption.
*/
export declare function fiberJoinAll<E, A>(as: Iterable<Fiber.Fiber<E, A>>, __trace?: string): Effect<unknown, E, Chunk.Chunk<A>>;
/**
* Awaits on all fibers to be completed, successfully or not.
*/
export declare function fiberWaitAll<E, A>(as: Iterable<Fiber.Fiber<E, A>>, __trace?: string): Effect<unknown, never, Exit<E, Chunk.Chunk<A>>>;
/**
* Releases all the finalizers in the releaseMap according to the ExecutionStrategy
*/
export declare function releaseMapReleaseAll(exit: Exit<any, any>, execStrategy: ExecutionStrategy, __trace?: string): (_: ReleaseMap) => UIO<any>;
/**
* Creates a `Managed` value that acquires the original resource in a fiber,
* and provides that fiber. The finalizer for this value will interrupt the fiber
* and run the original finalizer.
*/
export declare function managedFork<R, E, A>(self: Managed<R, E, A>, __trace?: string): Managed<R, never, FiberContext<E, A>>;
/**
* Run an effect while acquiring the resource before and releasing it after
*/
export declare function managedUse_<R, E, A, R2, E2, B>(self: Managed<R, E, A>, f: (a: A) => Effect<R2, E2, B>, __trace?: string): Effect<R & R2, E | E2, B>;
export declare class BackPressureStrategy<A> implements Q.Strategy<A> {
private putters;
handleSurplus(as: Chunk.Chunk<A>, queue: MutableQueue<A>, takers: MutableQueue<Promise<never, A>>, isShutdown: AtomicBoolean): UIO<boolean>;
unsafeRemove(p: Promise<never, boolean>): void;
unsafeOffer(as: Chunk.Chunk<A>, p: Promise<never, boolean>): void;
unsafeOnQueueEmptySpace(queue: MutableQueue<A>, takers: MutableQueue<Promise<never, A>>): void;
get shutdown(): UIO<void>;
get surplusSize(): number;
}
/**
* Creates a bounded queue
*/
export declare function makeBoundedQueue<A>(capacity: number, __trace?: string): UIO<Q.Queue<A>>;
/**
* Unsafely creates a queue
*/
export declare function unsafeCreateQueue<A>(queue: MutableQueue<A>, takers: MutableQueue<Promise<never, A>>, shutdownHook: Promise<never, void>, shutdownFlag: AtomicBoolean, strategy: Q.Strategy<A>): Q.Queue<A>;
/**
* Creates a queue
*/
export declare function createQueue_<A>(queue: MutableQueue<A>, strategy: Q.Strategy<A>, __trace?: string): Effect<unknown, never, Q.Queue<A>>;
/**
* Creates a queue
*
* @ets_data_first createQueue_
*/
export declare function createQueue<A>(strategy: Q.Strategy<A>, __trace?: string): (queue: MutableQueue<A>) => Effect<unknown, never, Q.Queue<A>>;
//# sourceMappingURL=excl-forEach.d.ts.map