'use strict' var Readable = require('readable-stream').Readable ; /** * Create a new instance of StreamArray * * @access private * @param {Array} list */ function StreamArray(list) { if (!Array.isArray(list)) throw new TypeError('First argument must be an Array'); Readable.call(this, {objectMode:true}); this._i = 0; this._l = list.length; this._list = list; } StreamArray.prototype = Object.create(Readable.prototype, {constructor: {value: StreamArray}}); /** * Read the next item from the source Array and push into NodeJS stream * @access protected * @desc Read the next item from the source Array and push into NodeJS stream * @param {number} size The amount of data to read (ignored) */ StreamArray.prototype._read = function(size) { this.push(this._i < this._l ? this._list[this._i++] : null); }; /** * Create a new instance of StreamArray * * @module stream-array * @desc Push Array elements through a NodeJS stream * @type {function} * @param {Array} list An Array of objects, strings, numbers, etc */ module.exports = function(list) { return new StreamArray(list); };