iter-tools-es
Version:
The iterable toolbox
32 lines (26 loc) • 689 B
JavaScript
const {
iterableCurry
} = require('../../internal/iterable.js');
const {
CircularBuffer,
ReadOnlyCircularBuffer
} = require('../../internal/circular-buffer.js');
function* __window(source, size) {
const buffer = new CircularBuffer(size);
const bufferReadProxy = new ReadOnlyCircularBuffer(buffer);
for (const value of source) {
buffer.push(value);
if (buffer.isFull()) {
yield bufferReadProxy;
}
}
}
exports.__window = __window;
const window = /*#__PURE__*/iterableCurry(__window, {
validateArgs(args) {
if (typeof args[1] !== 'number') {
throw new Error(`${'window'} must be passed a numeric size`);
}
}
});
exports.window = window;