import { UnaryFunction } from './types'; /** * Create a pipeline of unary functions * * @public */ export function pipe(): (x: T) => T; export function pipe(f1: UnaryFunction): (a: A) => R; export function pipe( f1: UnaryFunction, f2: UnaryFunction, ): (a: A1) => R2; export function pipe( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, ): (a: A1) => R3; export function pipe( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, f4: UnaryFunction, ): (a: A1) => R4; export function pipe( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, f4: UnaryFunction, f5: UnaryFunction, ): (a: A1) => R5; export function pipe(...fns: Array<(arg: any) => any>): (a: any) => any { return (arg) => fns.reduce((x, fn) => fn(x), arg); }