/** * @tsplus static effect/core/stream/Channel.Aspects mapOutEffect * @tsplus pipeable effect/core/stream/Channel mapOutEffect */ export function mapOutEffect( f: (o: OutElem) => Effect ) { return ( self: Channel ): Channel => self >> mapOutEffectReader(f) } function mapOutEffectReader( f: (o: OutElem) => Effect ): Channel { return Channel.readWith( (outElem) => Channel.fromEffect(f(outElem)).flatMap((out) => Channel.write(out)).flatMap(() => mapOutEffectReader(f) ), (outErr) => Channel.fail(outErr), (outDone) => Channel.succeed(outDone) ) }