type Pipe = { < T > ( source ) : T ; < T , A > ( source , a ) : A ; < T , A , B > ( source , a , b ) : B ; < T , A , B , C > ( source , a , b , c ) : C ; < T , A , B , C , D > ( source , a , b , c , d ) : D ; < T , A , B , C , D , E > ( source , a , b , c , d , e ) : E ; < T , A , B , C , D , E , F > ( source , a , b , c , d , e , f ) : F ; < T , A , B , C , D , E , F , G > ( source , a , b , c , d , e , f , g ) : G ; < T , A , B , C , D , E , F , G , H > ( source , a , b , c , d , e , f , g , h ) : H ; < T , A , B , C , D , E , F , G , H , I > ( source , a , b , c , d , e , f , g , h , i ) : I ; < T , A , B , C , D , E , F , G , H , I , J > ( source , a , b , c , d , e , f , g , h , i , j ) : J ; < T , A , B , C , D , E , F , G , H , I , J , K > ( source , a , b , c , d , e , f , g , h , i , j , k ) : K ; } ; /**
 * Pipes a value through a number of functions in the order that they appear.
 * Takes between 1 and 12 arguments. `pipe(x, a, b)` is equivalent to `b(a(x))`.
 */ export const pipe = ( source , ... project ) : unknown => project . reduce ( ( accumulator , element ) => element ( accumulator ) , source ) ;