UNPKG

947 BJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.readableFromArray = void 0;
4const js_lib_1 = require("@naturalcycles/js-lib");
5const stream_1 = require("stream");
6/**
7 * Create Readable from Array.
8 * Supports a `mapper` function (async) that you can use to e.g create a timer-emitting-readable.
9 *
10 * For simple cases use Readable.from(...) (Node.js 12+)
11 */
12function readableFromArray(items, mapper = js_lib_1._passthroughMapper, opt) {
13 const readable = new stream_1.Readable({
14 objectMode: true,
15 ...opt,
16 read() { },
17 });
18 void js_lib_1.pMap(items, async (item, index) => {
19 readable.push(await mapper(item, index));
20 }, { concurrency: 1 })
21 .then(() => {
22 readable.push(null); // done
23 })
24 .catch(err => {
25 console.error(err);
26 readable.push(err);
27 });
28 return readable;
29}
30exports.readableFromArray = readableFromArray;