import { operate } from '../util/lift'; import { createOperatorSubscriber } from './OperatorSubscriber'; import { arrRemove } from '../util/arrRemove'; export function bufferCount(bufferSize, startBufferEvery = null) { startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize; return operate((source, subscriber) => { let buffers = []; let count = 0; source.subscribe(createOperatorSubscriber(subscriber, (value) => { let toEmit = null; if (count++ % startBufferEvery === 0) { buffers.push([]); } for (const buffer of buffers) { buffer.push(value); if (bufferSize <= buffer.length) { toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : []; toEmit.push(buffer); } } if (toEmit) { for (const buffer of toEmit) { arrRemove(buffers, buffer); subscriber.next(buffer); } } }, () => { for (const buffer of buffers) { subscriber.next(buffer); } subscriber.complete(); }, undefined, () => { buffers = null; })); }); } //# sourceMappingURL=bufferCount.js.map