UNPKG

@johngw/stream

Version:

Reactive programming tools using the WHATWG Streams API.

41 lines 1.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.bufferCount = void 0; /** * Groups chunks together as an array of the specified size. * When required to flush, it will queue anything left over. * * @group Transformers * @example * ``` * --a----b------c------d------e--| * * chunks(2) * * -------[a,b]---------[c,d]--[e]- * ``` */ function bufferCount(length) { if (length < 1) throw new Error(`bufferCount() cannot be used with a count less than one. Got "${length}".`); if (!isFinite(length)) throw new Error('bufferCount() cannot be used with an infinite number.'); if (Math.round(length) !== length) throw new Error(`bufferCount() cannot be used with a floating point length. Got "${length}".`); let buffer = []; return new TransformStream({ transform(chunk, controller) { buffer.push(chunk); if (buffer.length === length) { controller.enqueue(buffer); buffer = []; } }, flush(controller) { if (buffer.length) controller.enqueue(buffer); }, }); } exports.bufferCount = bufferCount; //# sourceMappingURL=bufferCount.js.map