// Overwrite types until this issue is fixed https://github.com/alanshaw/it-pipe/issues/4 // Original types contain // ``` // export function pipe (f1: any, ...rest: any[]): any // ``` // Which act as a @ts-ignore compromising type safety declare module "it-pipe" { type Source = AsyncIterable; type Sink = (source: Source) => TReturn; type Duplex = { sink: Sink; source: Source; }; export function pipe(f1: A | (() => A), f2: (source: A) => B): B; export function pipe(f1: A | (() => A), f2: (source: A) => B, f3: (source: B) => C): C; export function pipe( f1: A | (() => A), f2: (source: A) => B, f3: (source: B) => C, f4: (source: C) => D ): D; export function pipe( f1: A | (() => A), f2: (source: A) => B, f3: (source: B) => C, f4: (source: C) => D, f5: (source: D) => E ): E; export function pipe( f1: A | (() => A), f2: (source: A) => B, f3: (source: B) => C, f4: (source: C) => D, f5: (source: D) => E, f6: (source: E) => F ): F; export function pipe( f1: A | (() => A), f2: (source: A) => B, f3: (source: B) => C, f4: (source: C) => D, f5: (source: D) => E, f6: (source: E) => F, f7: (source: F) => G ): G; export function pipe( f1: A | (() => A), f2: (source: A) => B, f3: (source: B) => C, f4: (source: C) => D, f5: (source: D) => E, f6: (source: E) => F, f7: (source: F) => G, f8: (source: G) => H ): H; export function pipe( f1: A | (() => A), f2: (source: A) => B, f3: (source: B) => C, f4: (source: C) => D, f5: (source: D) => E, f6: (source: E) => F, f7: (source: F) => G, f8: (source: G) => H, f9: (source: H) => I ): I; // First argument is array export function pipe(f1: A[], f2: (source: AsyncIterable) => B): B; export function pipe(f1: A[], f2: (source: AsyncIterable) => B, f3: (source: B) => C): C; export function pipe( f1: A[], f2: (source: AsyncIterable) => B, f3: (source: B) => C, f4: (source: C) => D ): D; export function pipe( f1: A[], f2: (source: AsyncIterable) => B, f3: (source: B) => C, f4: (source: C) => D, f5: (source: D) => E ): E; // First argument is duplex export function pipe(f1: Duplex, f2: (source: AsyncIterable) => B): B; export function pipe(f1: Duplex, f2: (source: AsyncIterable) => B, f3: (source: B) => C): C; export function pipe( f1: Duplex, f2: (source: AsyncIterable) => B, f3: (source: B) => C, f4: (source: C) => D ): D; export function pipe( f1: Duplex, f2: (source: AsyncIterable) => B, f3: (source: B) => C, f4: (source: C) => D, f5: (source: D) => E ): E; export default pipe; }