import { Transform, TransformOptions } from "stream"; export function filter( predicate: | ((chunk: T, encoding: string) => boolean) | ((chunk: T, encoding: string) => Promise), options?: TransformOptions, ) { return new Transform({ ...options, async transform(chunk: T, encoding?: any, callback?: any) { const result = await predicate(chunk, encoding); if (result === true) { callback(null, chunk); } else { callback(); } }, }); }