@naturalcycles/nodejs-lib
Version:
Standard library for Node.js
35 lines (34 loc) • 1.02 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.readableFromArray = void 0;
const stream_1 = require("stream");
const js_lib_1 = require("@naturalcycles/js-lib");
/**
* Create Readable from Array.
* Supports a `mapper` function (async) that you can use to e.g create a timer-emitting-readable.
*
* For simple cases use Readable.from(...) (Node.js 12+)
*/
function readableFromArray(items, mapper = js_lib_1._passthroughMapper, opt) {
let i = -1;
return new stream_1.Readable({
objectMode: true,
...opt,
async read() {
i++;
if (i < items.length) {
try {
this.push(await mapper(items[i], i));
}
catch (err) {
console.error(err);
this.destroy(err);
}
}
else {
this.push(null); // end
}
},
});
}
exports.readableFromArray = readableFromArray;