<A, A1, L, In1 extends L, L1, E1, R1>(
f: (a: A) => Sink<A1, In1, L1, E1, R1>
): <In, E, R>(
self: Sink<A, In, L, E, R>
) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>
<A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(
self: Sink<A, In, L, E, R>,
f: (a: A) => Sink<A1, In1, L1, E1, R1>
): Sink<A1, In & In1, L | L1, E | E1, R | R1>Runs this sink until it yields a result, then uses that result to create another sink from the provided function which will continue to run until it yields a result.
When to use
Use to compose sinks when the next sink depends on the result produced by the previous sink.
Details
Leftovers from the first sink are fed to the sink returned by f before more
upstream input is pulled.
export const const flatMap: {
<A, A1, L, In1 extends L, L1, E1, R1>(
f: (a: A) => Sink<A1, In1, L1, E1, R1>
): <In, E, R>(
self: Sink<A, In, L, E, R>
) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>
<A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(
self: Sink<A, In, L, E, R>,
f: (a: A) => Sink<A1, In1, L1, E1, R1>
): Sink<A1, In & In1, L | L1, E | E1, R | R1>
}
Runs this sink until it yields a result, then uses that result to create
another sink from the provided function which will continue to run until it
yields a result.
When to use
Use to compose sinks when the next sink depends on the result produced by the
previous sink.
Details
Leftovers from the first sink are fed to the sink returned by f before more
upstream input is pulled.
flatMap: {
<function (type parameter) A in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>A, function (type parameter) A1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>A1, function (type parameter) L in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>L, function (type parameter) In1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>In1 extends function (type parameter) L in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>L, function (type parameter) L1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>L1, function (type parameter) E1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>E1, function (type parameter) R1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>R1>(
f: (a: A) => Sink<A1, In1, L1, E1, R1>f: (a: Aa: function (type parameter) A in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>A) => 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<function (type parameter) A1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>A1, function (type parameter) In1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>In1, function (type parameter) L1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>L1, function (type parameter) E1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>E1, function (type parameter) R1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>R1>
): <function (type parameter) In in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>In, function (type parameter) E in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>E, function (type parameter) R in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>R>(self: Sink<A, In, L, E, R>(parameter) self: {
transform: (upstream: Pull.Pull<NonEmptyReadonlyArray<In>, never, void>, scope: Scope.Scope) => Effect.Effect<End<A, L>, E, R>;
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; <…;
}
self: 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<function (type parameter) A in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>A, function (type parameter) In in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>In, function (type parameter) L in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>L, function (type parameter) E in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>E, function (type parameter) R in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | 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<function (type parameter) A1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>A1, function (type parameter) In in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>In & function (type parameter) In1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>In1, function (type parameter) L1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>L1 | function (type parameter) L in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>L, function (type parameter) E1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>E1 | function (type parameter) E in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>E, function (type parameter) R1 in <A, A1, L, In1 extends L, L1, E1, R1>(f: (a: A) => Sink<A1, In1, L1, E1, R1>): <In, E, R>(self: Sink<A, In, L, E, R>) => Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>R1 | function (type parameter) R in <In, E, R>(self: Sink<A, In, L, E, R>): Sink<A1, In & In1, L1 | L, E1 | E, R1 | R>R>
<function (type parameter) A in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A, function (type parameter) In in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In, function (type parameter) L in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L, function (type parameter) E in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E, function (type parameter) R in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R, function (type parameter) A1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A1, function (type parameter) In1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In1 extends function (type parameter) L in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L, function (type parameter) L1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L1, function (type parameter) E1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E1, function (type parameter) R1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R1>(
self: Sink<A, In, L, E, R>(parameter) self: {
transform: (upstream: Pull.Pull<NonEmptyReadonlyArray<In>, never, void>, scope: Scope.Scope) => Effect.Effect<End<A, L>, E, R>;
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; <…;
}
self: 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<function (type parameter) A in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A, function (type parameter) In in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In, function (type parameter) L in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L, function (type parameter) E in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E, function (type parameter) R in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R>,
f: (a: A) => Sink<A1, In1, L1, E1, R1>f: (a: Aa: function (type parameter) A in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A) => 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<function (type parameter) A1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A1, function (type parameter) In1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In1, function (type parameter) L1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L1, function (type parameter) E1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E1, function (type parameter) R1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R1>
): 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<function (type parameter) A1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A1, function (type parameter) In in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In & function (type parameter) In1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In1, function (type parameter) L in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L | function (type parameter) L1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L1, function (type parameter) E in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E | function (type parameter) E1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E1, function (type parameter) R in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R | function (type parameter) R1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R1>
} = import dualdual(2, <function (type parameter) A in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A, function (type parameter) In in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In, function (type parameter) L in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L, function (type parameter) E in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E, function (type parameter) R in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R, function (type parameter) A1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A1, function (type parameter) In1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In1 extends function (type parameter) L in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L, function (type parameter) L1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L1, function (type parameter) E1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E1, function (type parameter) R1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R1>(
self: Sink<A, In, L, E, R>(parameter) self: {
transform: (upstream: Pull.Pull<NonEmptyReadonlyArray<In>, never, void>, scope: Scope.Scope) => Effect.Effect<End<A, L>, E, R>;
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; <…;
}
self: 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<function (type parameter) A in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A, function (type parameter) In in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In, function (type parameter) L in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L, function (type parameter) E in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E, function (type parameter) R in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R>,
f: (a: A) => Sink<A1, In1, L1, E1, R1>f: (a: Aa: function (type parameter) A in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A) => 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<function (type parameter) A1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A1, function (type parameter) In1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In1, function (type parameter) L1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L1, function (type parameter) E1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E1, function (type parameter) R1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R1>
): 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<function (type parameter) A1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>A1, function (type parameter) In in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In & function (type parameter) In1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In1, function (type parameter) L in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L | function (type parameter) L1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>L1, function (type parameter) E in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E | function (type parameter) E1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>E1, function (type parameter) R in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R | function (type parameter) R1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>R1> =>
const fromTransform: <
In,
A,
E,
R,
L = never
>(
transform: (
upstream: Pull.Pull<
NonEmptyReadonlyArray<In>,
never,
void
>,
scope: Scope.Scope
) => Effect.Effect<End<A, L>, E, R>
) => Sink<A, In, L, E, R>
Creates a Sink from a low-level transform function.
Details
The transform receives the upstream pull of non-empty input arrays and the
active scope, and returns an effect that completes with the sink's End
value.
fromTransform((upstream: Pull.Pull<
readonly [In & In1, ...(In & In1)[]],
never,
void,
never
>
(parameter) upstream: {
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;
}
upstream, scope: Scope.Scope(parameter) scope: {
strategy: "sequential" | "parallel";
state: State.Open | State.Closed | State.Empty;
}
scope) => {
let let upstreamDone: booleanupstreamDone = false
const const pull: Effect.Effect<
readonly [In & In1, ...(In & In1)[]],
Cause.Done<void>,
never
>
const pull: {
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;
}
pull = import EffectEffect.catchCause(upstream: Pull.Pull<
readonly [In & In1, ...(In & In1)[]],
never,
void,
never
>
(parameter) upstream: {
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;
}
upstream, (cause: Cause.Cause<Cause.Done<void>>(parameter) cause: {
reasons: ReadonlyArray<Reason<E>>;
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;
}
cause) => {
let upstreamDone: booleanupstreamDone = true
return import EffectEffect.failCause(cause: Cause.Cause<Cause.Done<void>>(parameter) cause: {
reasons: ReadonlyArray<Reason<E>>;
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;
}
cause)
})
return import EffectEffect.flatMap(
self: Sink<A, In, L, E, R>(parameter) self: {
transform: (upstream: Pull.Pull<NonEmptyReadonlyArray<In>, never, void>, scope: Scope.Scope) => Effect.Effect<End<A, L>, E, R>;
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; <…;
}
self.Sink<A, In, L, E, R>.transform: (upstream: Pull.Pull<NonEmptyReadonlyArray<In>, never, void>, scope: Scope.Scope) => Effect.Effect<End<A, L>, E, R>transform(const pull: Effect.Effect<
readonly [In & In1, ...(In & In1)[]],
Cause.Done<void>,
never
>
const pull: {
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;
}
pull, scope: Scope.Scope(parameter) scope: {
strategy: "sequential" | "parallel";
state: State.Open | State.Closed | State.Empty;
}
scope),
([a: anya, leftover: anyleftover]) =>
f: (a: A) => Sink<A1, In1, L1, E1, R1>f(a: anya).Sink<A1, In1, L1, E1, R1>.transform: (upstream: Pull.Pull<NonEmptyReadonlyArray<In>, never, void>, scope: Scope.Scope) => Effect.Effect<End<A, L>, E, R>transform(
import EffectEffect.suspend(() => {
if (leftover: anyleftover) {
const const arr: Arr.NonEmptyReadonlyArray<In1>const arr: {
0: In1;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<In1>>): Array<In1>; (...items: Array<In1 | ConcatArray<In1>>): Array<In1> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<In1>;
indexOf: (searchElement: In1, fromIndex?: number) => number;
lastIndexOf: (searchElement: In1, fromIndex?: number) => number;
every: { (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any): boolean };
some: (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: In1, index: number, array: ReadonlyArray<In1>) => void, thisArg?: any) => void;
map: (callbackfn: (value: In1, index: number, array: ReadonlyArray<In1>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => value is S, thisArg?: any): Array<S>; (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any): Array<In1> };
reduce: { (callbackfn: (previousValue: In1, currentValue: In1, currentIndex: number, array: ReadonlyArray<In1>) => In1): In1; (callbackfn: (previousValue: In1, currentValue: In1, currentIndex: number, array: ReadonlyArray<In1>) => In1, initialValu…;
reduceRight: { (callbackfn: (previousValue: In1, currentValue: In1, currentIndex: number, array: ReadonlyArray<In1>) => In1): In1; (callbackfn: (previousValue: In1, currentValue: In1, currentIndex: number, array: ReadonlyArray<In1>) => In1, initialValu…;
find: { (predicate: (value: In1, index: number, obj: ReadonlyArray<In1>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In1, index: number, obj: ReadonlyArray<In1>) => unknown, thisArg?: any): In1 | undefined };
findIndex: (predicate: (value: In1, index: number, obj: ReadonlyArray<In1>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, In1]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<In1>;
includes: (searchElement: In1, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: In1, index: number, array: Array<In1>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => In1 | undefined;
findLast: { (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any): In1 | undefined };
findLastIndex: (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any) => number;
toReversed: () => Array<In1>;
toSorted: (compareFn?: ((a: In1, b: In1) => number) | undefined) => Array<In1>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<In1>): Array<In1>; (start: number, deleteCount?: number): Array<In1> };
with: (index: number, value: In1) => Array<In1>;
}
arr = leftover: any(parameter) leftover: {
0: L;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<L>>): Array<L>; (...items: Array<L | ConcatArray<L>>): Array<L> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<L>;
indexOf: (searchElement: L, fromIndex?: number) => number;
lastIndexOf: (searchElement: L, fromIndex?: number) => number;
every: { (predicate: (value: L, index: number, array: ReadonlyArray<L>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: L, index: number, array: ReadonlyArray<L>) => unknown, thisArg?: any): boolean };
some: (predicate: (value: L, index: number, array: ReadonlyArray<L>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: L, index: number, array: ReadonlyArray<L>) => void, thisArg?: any) => void;
map: (callbackfn: (value: L, index: number, array: ReadonlyArray<L>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: L, index: number, array: ReadonlyArray<L>) => value is S, thisArg?: any): Array<S>; (predicate: (value: L, index: number, array: ReadonlyArray<L>) => unknown, thisArg?: any): Array<L> };
reduce: { (callbackfn: (previousValue: L, currentValue: L, currentIndex: number, array: ReadonlyArray<L>) => L): L; (callbackfn: (previousValue: L, currentValue: L, currentIndex: number, array: ReadonlyArray<L>) => L, initialValue: L): L; (callbac…;
reduceRight: { (callbackfn: (previousValue: L, currentValue: L, currentIndex: number, array: ReadonlyArray<L>) => L): L; (callbackfn: (previousValue: L, currentValue: L, currentIndex: number, array: ReadonlyArray<L>) => L, initialValue: L): L; (callbac…;
find: { (predicate: (value: L, index: number, obj: ReadonlyArray<L>) => value is S, thisArg?: any): S | undefined; (predicate: (value: L, index: number, obj: ReadonlyArray<L>) => unknown, thisArg?: any): L | undefined };
findIndex: (predicate: (value: L, index: number, obj: ReadonlyArray<L>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, L]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<L>;
includes: (searchElement: L, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: L, index: number, array: Array<L>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => L | undefined;
findLast: { (predicate: (value: L, index: number, array: ReadonlyArray<L>) => value is S, thisArg?: any): S | undefined; (predicate: (value: L, index: number, array: ReadonlyArray<L>) => unknown, thisArg?: any): L | undefined };
findLastIndex: (predicate: (value: L, index: number, array: ReadonlyArray<L>) => unknown, thisArg?: any) => number;
toReversed: () => Array<L>;
toSorted: (compareFn?: ((a: L, b: L) => number) | undefined) => Array<L>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<L>): Array<L>; (start: number, deleteCount?: number): Array<L> };
with: (index: number, value: L) => Array<L>;
}
leftover as import ArrArr.type Arr.NonEmptyReadonlyArray = /*unresolved*/ anyNonEmptyReadonlyArray<function (type parameter) In1 in <A, In, L, E, R, A1, In1 extends L, L1, E1, R1>(self: Sink<A, In, L, E, R>, f: (a: A) => Sink<A1, In1, L1, E1, R1>): Sink<A1, In & In1, L | L1, E | E1, R | R1>In1>
leftover: anyleftover = var undefinedundefined
return import EffectEffect.succeed(const arr: Arr.NonEmptyReadonlyArray<In1>const arr: {
0: In1;
length: number;
toString: () => string;
toLocaleString: { (): string; (locales: string | string[], options?: Intl.NumberFormatOptions & Intl.DateTimeFormatOptions): string };
concat: { (...items: Array<ConcatArray<In1>>): Array<In1>; (...items: Array<In1 | ConcatArray<In1>>): Array<In1> };
join: (separator?: string) => string;
slice: (start?: number, end?: number) => Array<In1>;
indexOf: (searchElement: In1, fromIndex?: number) => number;
lastIndexOf: (searchElement: In1, fromIndex?: number) => number;
every: { (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => value is S, thisArg?: any): this is readonly S[]; (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any): boolean };
some: (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any) => boolean;
forEach: (callbackfn: (value: In1, index: number, array: ReadonlyArray<In1>) => void, thisArg?: any) => void;
map: (callbackfn: (value: In1, index: number, array: ReadonlyArray<In1>) => U, thisArg?: any) => Array<U>;
filter: { (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => value is S, thisArg?: any): Array<S>; (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any): Array<In1> };
reduce: { (callbackfn: (previousValue: In1, currentValue: In1, currentIndex: number, array: ReadonlyArray<In1>) => In1): In1; (callbackfn: (previousValue: In1, currentValue: In1, currentIndex: number, array: ReadonlyArray<In1>) => In1, initialValu…;
reduceRight: { (callbackfn: (previousValue: In1, currentValue: In1, currentIndex: number, array: ReadonlyArray<In1>) => In1): In1; (callbackfn: (previousValue: In1, currentValue: In1, currentIndex: number, array: ReadonlyArray<In1>) => In1, initialValu…;
find: { (predicate: (value: In1, index: number, obj: ReadonlyArray<In1>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In1, index: number, obj: ReadonlyArray<In1>) => unknown, thisArg?: any): In1 | undefined };
findIndex: (predicate: (value: In1, index: number, obj: ReadonlyArray<In1>) => unknown, thisArg?: any) => number;
entries: () => ArrayIterator<[number, In1]>;
keys: () => ArrayIterator<number>;
values: () => ArrayIterator<In1>;
includes: (searchElement: In1, fromIndex?: number) => boolean;
flatMap: (callback: (this: This, value: In1, index: number, array: Array<In1>) => U | ReadonlyArray<U>, thisArg?: This | undefined) => Array<U>;
flat: (this: A, depth?: D | undefined) => Array<FlatArray<A, D>>;
at: (index: number) => In1 | undefined;
findLast: { (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => value is S, thisArg?: any): S | undefined; (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any): In1 | undefined };
findLastIndex: (predicate: (value: In1, index: number, array: ReadonlyArray<In1>) => unknown, thisArg?: any) => number;
toReversed: () => Array<In1>;
toSorted: (compareFn?: ((a: In1, b: In1) => number) | undefined) => Array<In1>;
toSpliced: { (start: number, deleteCount: number, ...items: Array<In1>): Array<In1>; (start: number, deleteCount?: number): Array<In1> };
with: (index: number, value: In1) => Array<In1>;
}
arr)
} else if (let upstreamDone: booleanupstreamDone) {
return import CauseCause.done()
}
return upstream: Pull.Pull<
readonly [In & In1, ...(In & In1)[]],
never,
void,
never
>
(parameter) upstream: {
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;
}
upstream
}),
scope: Scope.Scope(parameter) scope: {
strategy: "sequential" | "parallel";
state: State.Open | State.Closed | State.Empty;
}
scope
)
)
}))