import { Duplex, Readable, Writable } from 'node:stream'; import type { Asyncerator } from '../asyncerator.ts'; export type PipelineSource = string | Readable | Iterable | AsyncIterable | Asyncerator; export type PipelineTransformer = Duplex | ((input: Asyncerator) => Asyncerator); export interface PipelineOptions { signal: AbortSignal; } /** * Overloads connect element types between function stages and infer the return type from the sink. * The overloads cover up to ten transforms. Node stream stages do not preserve these element-type guarantees * because their chunk types are not generic. Options are exposed only for promise-returning function sinks. */ 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;