import type { IStreamBuilder, PipedOperator } from '../types.js' // Don't judge, this is the only way to type this function. // rxjs has very similar code to type its pipe function // https://github.com/ReactiveX/rxjs/blob/master/packages/rxjs/src/internal/util/pipe.ts // We go to 20 operators deep, because surely that's enough for anyone... // A user can always split the pipe into multiple pipes to get around this. export function pipe(o1: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator, o13: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator, o13: PipedOperator, o14: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator, o13: PipedOperator, o14: PipedOperator, o15: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator, o13: PipedOperator, o14: PipedOperator, o15: PipedOperator, o16: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator, o13: PipedOperator, o14: PipedOperator, o15: PipedOperator, o16: PipedOperator, o17: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator, o13: PipedOperator, o14: PipedOperator, o15: PipedOperator, o16: PipedOperator, o17: PipedOperator, o18: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator, o13: PipedOperator, o14: PipedOperator, o15: PipedOperator, o16: PipedOperator, o17: PipedOperator, o18: PipedOperator, o19: PipedOperator): PipedOperator // prettier-ignore export function pipe(o1: PipedOperator, o2: PipedOperator, o3: PipedOperator, o4: PipedOperator, o5: PipedOperator, o6: PipedOperator, o7: PipedOperator, o8: PipedOperator, o9: PipedOperator, o10: PipedOperator, o11: PipedOperator, o12: PipedOperator, o13: PipedOperator, o14: PipedOperator, o15: PipedOperator, o16: PipedOperator, o17: PipedOperator, o18: PipedOperator, o19: PipedOperator, o20: PipedOperator): PipedOperator /** * Creates a new stream by piping the input stream through a series of operators */ export function pipe(...operators: Array>) { return (stream: IStreamBuilder): IStreamBuilder => { return stream.pipe(...operators) } }