import { AsyncMapper, Mapper, _passNothingPredicate } from '@naturalcycles/js-lib' import { ReadableTyped, _pipeline } from '../../index' import { transformMap, TransformMapOptions } from '../transform/transformMap' /** * Convenience function to do `.forEach` over a Readable. * Typed! (unlike default Readable). * * @experimental */ export async function readableForEach( readable: ReadableTyped, mapper: AsyncMapper, opt: TransformMapOptions = {}, ): Promise { await _pipeline([ readable, transformMap(mapper, { ...opt, predicate: _passNothingPredicate }), ]) } /** * Convenience function to do `.forEach` over a Readable. * Typed! (unlike default Readable). * * @experimental */ export async function readableForEachSync( readable: ReadableTyped, mapper: Mapper, ): Promise { // async iteration let index = 0 for await (const item of readable) { mapper(item, index++) } }