UNPKG

981 BPlain TextView Raw
1import { AsyncMapper, Mapper, _passNothingPredicate } from '@naturalcycles/js-lib'
2import { ReadableTyped, _pipeline } from '../../index'
3import { transformMap, TransformMapOptions } from '../transform/transformMap'
4
5/**
6 * Convenience function to do `.forEach` over a Readable.
7 * Typed! (unlike default Readable).
8 *
9 * @experimental
10 */
11export async function readableForEach<T>(
12 readable: ReadableTyped<T>,
13 mapper: AsyncMapper<T, void>,
14 opt: TransformMapOptions<T, void> = {},
15): Promise<void> {
16 await _pipeline([
17 readable,
18 transformMap<T, void>(mapper, { ...opt, predicate: _passNothingPredicate }),
19 ])
20}
21
22/**
23 * Convenience function to do `.forEach` over a Readable.
24 * Typed! (unlike default Readable).
25 *
26 * @experimental
27 */
28export async function readableForEachSync<T>(
29 readable: ReadableTyped<T>,
30 mapper: Mapper<T, void>,
31): Promise<void> {
32 // async iteration
33 let index = 0
34 for await (const item of readable) {
35 mapper(item, index++)
36 }
37}