/* eslint-disable import/export */ export type UnaryFunction = ( value: ValueType ) => ReturnType | PromiseLike; export type Pipeline = ( value?: ValueType ) => Promise; /** Compose promise-returning & async functions into a reusable pipeline. @param ...input - Iterated over sequentially when returned `function` is called. @returns The `input` functions are applied from left to right. @example ``` import pPipe from 'p-pipe'; const addUnicorn = async string => `${string} Unicorn`; const addRainbow = async string => `${string} Rainbow`; const pipeline = pPipe(addUnicorn, addRainbow); console.log(await pipeline('❤️')); //=> '❤️ Unicorn Rainbow' ``` */ export default function pPipe( f1: UnaryFunction ): Pipeline; export default function pPipe( f1: UnaryFunction, f2: UnaryFunction ): Pipeline; export default function pPipe( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction ): Pipeline; export default function pPipe< ValueType, ResultValue1, ResultValue2, ResultValue3, ReturnType >( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, f4: UnaryFunction ): Pipeline; export default function pPipe< ValueType, ResultValue1, ResultValue2, ResultValue3, ResultValue4, ReturnType >( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, f4: UnaryFunction, f5: UnaryFunction ): Pipeline; export default function pPipe< ValueType, ResultValue1, ResultValue2, ResultValue3, ResultValue4, ResultValue5, ReturnType >( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, f4: UnaryFunction, f5: UnaryFunction, f6: UnaryFunction ): Pipeline; export default function pPipe< ValueType, ResultValue1, ResultValue2, ResultValue3, ResultValue4, ResultValue5, ResultValue6, ReturnType >( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, f4: UnaryFunction, f5: UnaryFunction, f6: UnaryFunction, f7: UnaryFunction ): Pipeline; export default function pPipe< ValueType, ResultValue1, ResultValue2, ResultValue3, ResultValue4, ResultValue5, ResultValue6, ResultValue7, ReturnType >( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, f4: UnaryFunction, f5: UnaryFunction, f6: UnaryFunction, f7: UnaryFunction, f8: UnaryFunction ): Pipeline; export default function pPipe< ValueType, ResultValue1, ResultValue2, ResultValue3, ResultValue4, ResultValue5, ResultValue6, ResultValue7, ResultValue8, ReturnType >( f1: UnaryFunction, f2: UnaryFunction, f3: UnaryFunction, f4: UnaryFunction, f5: UnaryFunction, f6: UnaryFunction, f7: UnaryFunction, f8: UnaryFunction, f9: UnaryFunction ): Pipeline; // Fallbacks if more than 9 functions are passed as input (not type-safe). export default function pPipe( ...functions: Array> ): Pipeline;