stream-chain
Version:
Chain functions, generators, Node streams, and Web streams into a pipeline with backpressure support.
25 lines (21 loc) • 499 B
JavaScript
// @ts-self-types="./batch.d.ts"
import {none, flushable} from '../defs.js';
const batch = (n = 100) => {
let buffer = [];
return flushable(value => {
if (value === none) {
// clean up buffer
if (!buffer.length) return none;
const result = buffer;
buffer = null;
return result;
}
buffer.push(value);
if (buffer.length < n) return none;
const result = buffer;
buffer = [];
return result;
});
};
export default batch;
export {batch};