import { Duplex, Readable, Writable } from 'node:stream'; import type { Asyncerator } from '../asyncerator'; export type PipelineSource = string | Readable | Iterable | AsyncIterable | Asyncerator; export type PipelineTransformer = Duplex | ((input: Asyncerator) => Asyncerator); export interface PipelineOptions { signal: AbortSignal; } /** * Unfortunately, the only known way to accurately type the pipeline function is a series of overloads. The return value * is defined by the type of the last parameter, and there are zero or more transform parameters in between the * source and the destination. Also, the output of each parameter in the pipeline must match the input type of the * later parameter. TBD if this can be typed using some cool variadic thing in the current latest (5.x) version * of Typescript. */ export default function (source: PipelineSource, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, transform9: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, transform9: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, transform9: PipelineTransformer, sink: Writable): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, transform9: PipelineTransformer, transform10: PipelineTransformer, sink: (input: Asyncerator) => Promise, options?: PipelineOptions): Promise; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, transform9: PipelineTransformer, transform10: PipelineTransformer, sink: Duplex | ((input: Asyncerator) => AsyncIterable)): Readable; export default function (source: PipelineSource, transform1: PipelineTransformer, transform2: PipelineTransformer, transform3: PipelineTransformer, transform4: PipelineTransformer, transform5: PipelineTransformer, transform6: PipelineTransformer, transform7: PipelineTransformer, transform8: PipelineTransformer, transform9: PipelineTransformer, transform10: PipelineTransformer, sink: Writable): Promise;