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 extends ProgressLoggerCfg, TransformOptions {} /** * Pass-through transform that optionally logs progress. */ export function transformLogProgress( opt: TransformLogProgressOptions = {}, ): TransformTyped { 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() }, }) }