import { combine } from '../combinators' import { Effects } from '../Effect' import { Fiber, FiberFailure } from './Fiber' import { join, Join } from './join' export function* joinAll>>( ...fibers: A ): Effects> { const values = yield* combine[]>(...fibers.map(join)) return values as JoinAll } export type JoinAll>> = { readonly [K in keyof A]: A[K] extends Fiber ? R : never }