( n: number, acc: Chunk.Chunk<In> )
| 92 | |
| 93 | /** @internal */ |
| 94 | const collectAllNLoop = <In>( |
| 95 | n: number, |
| 96 | acc: Chunk.Chunk<In> |
| 97 | ): Channel.Channel<Chunk.Chunk<In>, Chunk.Chunk<In>, never, never, Chunk.Chunk<In>, unknown> => |
| 98 | core.readWithCause({ |
| 99 | onInput: (chunk: Chunk.Chunk<In>) => { |
| 100 | const [collected, leftovers] = Chunk.splitAt(chunk, n) |
| 101 | if (collected.length < n) { |
| 102 | return collectAllNLoop(n - collected.length, Chunk.appendAll(acc, collected)) |
| 103 | } |
| 104 | if (Chunk.isEmpty(leftovers)) { |
| 105 | return core.succeed(Chunk.appendAll(acc, collected)) |
| 106 | } |
| 107 | return core.flatMap(core.write(leftovers), () => core.succeed(Chunk.appendAll(acc, collected))) |
| 108 | }, |
| 109 | onFailure: core.failCause, |
| 110 | onDone: () => core.succeed(acc) |
| 111 | }) |
| 112 | |
| 113 | /** @internal */ |
| 114 | export const collectAllFrom = <A, In, L extends In, E, R>( |
no test coverage detected
searching dependent graphs…