import { Transform, type TransformCallback, type TransformOptions } from 'stream'; export interface AsyncTransformFunction { (chunkArg: TInput): Promise; } export function createTransformFunction( asyncFunction: AsyncTransformFunction, options?: TransformOptions ): Transform { const transformStream = new Transform({ ...options, objectMode: true, // Ensure we operate in object mode async transform(chunk: TInput, encoding: string, callback: TransformCallback) { try { const transformed = await asyncFunction(chunk); this.push(transformed); callback(); } catch (error) { callback(error instanceof Error ? error : new Error(String(error))); } } }); return transformStream; }