UNPKG

@naturalcycles/nodejs-lib

Version:
31 lines (27 loc) 846 B
import { Transform } from 'node:stream' import type { ProgressLoggerCfg } from '../progressLogger.js' import { progressLogger } from '../progressLogger.js' import type { TransformOptions, TransformTyped } from '../stream.model.js' export interface TransformLogProgressOptions<IN = any> extends ProgressLoggerCfg<IN>, TransformOptions {} /** * Pass-through transform that optionally logs progress. */ export function transformLogProgress<IN = any>( opt: TransformLogProgressOptions = {}, ): TransformTyped<IN, IN> { const { objectMode = true, highWaterMark = 1 } = opt const progress = progressLogger(opt) return new Transform({ objectMode, highWaterMark, transform(chunk: IN, _, cb) { progress.log(chunk) cb(null, chunk) // pass-through }, final(cb) { progress.done() cb() }, }) }