UNPKG

1.04 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.readableFromArray = void 0;
4const node_stream_1 = require("node:stream");
5const js_lib_1 = require("@naturalcycles/js-lib");
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 let i = -1;
14 return new node_stream_1.Readable({
15 objectMode: true,
16 ...opt,
17 async read() {
18 i++;
19 if (i < items.length) {
20 try {
21 this.push(await mapper(items[i], i));
22 }
23 catch (err) {
24 console.error(err);
25 this.destroy(err);
26 }
27 }
28 else {
29 this.push(null); // end
30 }
31 },
32 });
33}
34exports.readableFromArray = readableFromArray;