import repeatedGenerator from "./repeatedGenerator"; export default (it: Iterator, consumers: number): Iterator[] => { const buffers: IteratorResult[][] = []; const fill = () => { const res = it.next(); for (const buffer of buffers) { buffer.push(res); } }; return [ ...repeatedGenerator(consumers, (): Iterator => { const buffer: IteratorResult[] = []; buffers.push(buffer); return { next() { const bufRes = buffer.shift(); if (bufRes) { return bufRes; } fill(); return buffer.shift()!; }, }; }), ]; };