All files / pipe pipe.ts

100% Statements 4/4
100% Branches 0/0
100% Functions 3/3
100% Lines 2/2

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19                              1x 42x    
import {UnaryFunction} from '../fnxt-types';
 
type Fn<E, R> = UnaryFunction<E, R>;
 
export function pipe<A>(): Fn<A, A>;
export function pipe<A, B>(a: Fn<A, B>): Fn<A, B>;
export function pipe<A, B, C>(a: Fn<A, B>, b: Fn<B, C>): Fn<A, C>;
export function pipe<A, B, C, D>(a: Fn<A, B>, b: Fn<B, C>, c: Fn<C, D>,): Fn<A, D>;
export function pipe<A, B, C, D, E>(a: Fn<A, B>, b: Fn<B, C>, c: Fn<C, D>, d: Fn<D, E>): Fn<A, E>;
export function pipe<A, B, C, D, E, F>(a: Fn<A, B>, b: Fn<B, C>, c: Fn<C, D>, d: Fn<D, E>, e: Fn<E, F>): Fn<A, F>;
export function pipe<A, B, C, D, E, F, G>(a: Fn<A, B>, b: Fn<B, C>, c: Fn<C, D>, d: Fn<D, E>, e: Fn<E, F>, f: Fn<F, G>): Fn<A, G>;
export function pipe<A, B, C, D, E, F, G, H>(a: Fn<A, B>, b: Fn<B, C>, c: Fn<C, D>, d: Fn<D, E>, e: Fn<E, F>, f: Fn<F, G>, g: Fn<G, H>): Fn<A, H>;
export function pipe<A, B, C, D, E, F, G, H, I>(a: Fn<A, B>, b: Fn<B, C>, c: Fn<C, D>, d: Fn<D, E>, e: Fn<E, F>, f: Fn<F, G>, g: Fn<G, H>, h: Fn<H, I>): Fn<A, I>;
export function pipe<A, B, C, D, E, F, G, H, I>(a: Fn<A, B>, b: Fn<B, C>, c: Fn<C, D>, d: Fn<D, E>, e: Fn<E, F>, f: Fn<F, G>, g: Fn<G, H>, h: Fn<H, I>,): Fn<A, I>;
 
export function pipe(...fns: UnaryFunction<unknown, unknown>[]): Fn<unknown, unknown> {
  return (v) => fns.reduce((val, fn) => fn(val), v);
}