<In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<
void,
In,
never,
E,
R
>Runs an effectful function for each input element while it returns true.
Details
The sink stops consuming input when the function returns false or when the
upstream stream ends, and completes with void.
export const const forEachWhile: <In, E, R>(
f: (input: In) => Effect.Effect<boolean, E, R>
) => Sink<void, In, never, E, R>
Runs an effectful function for each input element while it returns true.
Details
The sink stops consuming input when the function returns false or when the
upstream stream ends, and completes with void.
forEachWhile = <function (type parameter) In in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>In, function (type parameter) E in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>E, function (type parameter) R in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>R>(
f: (
input: In
) => Effect.Effect<boolean, E, R>
f: (input: Ininput: function (type parameter) In in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>In) => import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<boolean, function (type parameter) E in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>E, function (type parameter) R in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>R>
): interface Sink<out A, in In = unknown, out L = never, out E = never, out R = never>A Sink<A, In, L, E, R> is used to consume elements produced by a Stream.
You can think of a sink as a function that will consume a variable amount of
In elements (could be 0, 1, or many), might fail with an error of type E,
and will eventually yield a value of type A together with a remainder of
type L (i.e. any leftovers).
Example (Running a sink with a stream)
import { Effect, Sink, Stream } from "effect"
// Create a simple sink that always succeeds with a value
const sink: Sink.Sink<number> = Sink.succeed(42)
// Use the sink to consume a stream
const stream = Stream.make(1, 2, 3)
const program = Stream.run(stream, sink)
Effect.runPromise(program).then(console.log)
// Output: 42
Namespace containing types and interfaces for Sink variance and type relationships.
Sink<void, function (type parameter) In in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>In, never, function (type parameter) E in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>E, function (type parameter) R in <In, E, R>(f: (input: In) => Effect.Effect<boolean, E, R>): Sink<void, In, never, E, R>R> =>
const forEachWhileArray: <In, E, R>(
f: (
input: NonEmptyReadonlyArray<In>
) => Effect.Effect<boolean, E, R>
) => Sink<void, In, never, E, R>
Runs an effectful function for each non-empty input array while it returns
true.
Details
The sink stops consuming input when the function returns false or when the
upstream stream ends, and completes with void.
forEachWhileArray(import EffectEffect.fnUntraced(function*(input: any(parameter) input: {
0: In;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<In>>): Array<In>; (...items: Array<In | ConcatArray<In>>): Array<In> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<In>;
indexOf: (searchElement: In, fromIndex?: number) => number;
lastIndexOf: (searchElement: In, fromIndex?: number) => number;
every: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): boolean };
some: (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: In, index: number, array: ReadonlyArray<In>) => void, thisArg?: any) => void;
map: (callbackfn: (value: In, index: number, array: ReadonlyArray<In>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): Array<S>; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): Array<In> };
reduce: { (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In): In; (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In, initialValue: In): I…;
reduceRight: { (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In): In; (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In, initialValue: In): I…;
find: { (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => unknown, thisArg?: any): In | undefined };
findIndex: (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, In]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<In>;
includes: (searchElement: In, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: In, index: number, array: Array<In>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => In | undefined;
findLast: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): In | undefined };
findLastIndex: (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any) => number;
toReversed: () => Array<In>;
toSorted: (compareFn?: ((a: In, b: In) => number) | undefined) => Array<In>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<In>): Array<In>; (start: number, deleteCount?: number): Array<In> };
with: (index: number, value: In) => Array<In>;
}
input) {
for (let let i: numberi = 0; let i: numberi < input: any(parameter) input: {
0: In;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<In>>): Array<In>; (...items: Array<In | ConcatArray<In>>): Array<In> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<In>;
indexOf: (searchElement: In, fromIndex?: number) => number;
lastIndexOf: (searchElement: In, fromIndex?: number) => number;
every: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): boolean };
some: (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: In, index: number, array: ReadonlyArray<In>) => void, thisArg?: any) => void;
map: (callbackfn: (value: In, index: number, array: ReadonlyArray<In>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): Array<S>; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): Array<In> };
reduce: { (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In): In; (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In, initialValue: In): I…;
reduceRight: { (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In): In; (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In, initialValue: In): I…;
find: { (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => unknown, thisArg?: any): In | undefined };
findIndex: (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, In]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<In>;
includes: (searchElement: In, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: In, index: number, array: Array<In>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => In | undefined;
findLast: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): In | undefined };
findLastIndex: (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any) => number;
toReversed: () => Array<In>;
toSorted: (compareFn?: ((a: In, b: In) => number) | undefined) => Array<In>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<In>): Array<In>; (start: number, deleteCount?: number): Array<In> };
with: (index: number, value: In) => Array<In>;
}
input.length; let i: numberi++) {
const const cont: anycont = yield* f: (
input: In
) => Effect.Effect<boolean, E, R>
f(input: any(parameter) input: {
0: In;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<In>>): Array<In>; (...items: Array<In | ConcatArray<In>>): Array<In> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<In>;
indexOf: (searchElement: In, fromIndex?: number) => number;
lastIndexOf: (searchElement: In, fromIndex?: number) => number;
every: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): boolean };
some: (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: In, index: number, array: ReadonlyArray<In>) => void, thisArg?: any) => void;
map: (callbackfn: (value: In, index: number, array: ReadonlyArray<In>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): Array<S>; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): Array<In> };
reduce: { (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In): In; (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In, initialValue: In): I…;
reduceRight: { (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In): In; (callbackfn: (previousValue: In, currentValue: In, currentIndex: number, array: ReadonlyArray<In>) => In, initialValue: In): I…;
find: { (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => unknown, thisArg?: any): In | undefined };
findIndex: (predicate: (value: In, index: number, obj: ReadonlyArray<In>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, In]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<In>;
includes: (searchElement: In, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: In, index: number, array: Array<In>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => In | undefined;
findLast: { (predicate: (value: In, index: number, array: ReadonlyArray<In>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any): In | undefined };
findLastIndex: (predicate: (value: In, index: number, array: ReadonlyArray<In>) => unknown, thisArg?: any) => number;
toReversed: () => Array<In>;
toSorted: (compareFn?: ((a: In, b: In) => number) | undefined) => Array<In>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<In>): Array<In>; (start: number, deleteCount?: number): Array<In> };
with: (index: number, value: In) => Array<In>;
}
input[let i: numberi])
if (!const cont: anycont) return false
}
return true
}))