Mirror: 馃帺 A tiny but capable push & pull stream library for TypeScript and Flow
at v4.0.8 4.5 kB view raw
1import { sourceT as Source } from '../Wonka_types.gen'; 2 3interface UnaryFn<T, R> { 4 (source: T): R; 5} 6 7/* pipe definitions for source + operators composition */ 8 9function pipe<T, A>(source: Source<T>, op1: UnaryFn<Source<T>, Source<A>>): Source<A>; 10 11function pipe<T, A, B>( 12 source: Source<T>, 13 op1: UnaryFn<Source<T>, Source<A>>, 14 op2: UnaryFn<Source<A>, Source<B>> 15): Source<B>; 16 17function pipe<T, A, B, C>( 18 source: Source<T>, 19 op1: UnaryFn<Source<T>, Source<A>>, 20 op2: UnaryFn<Source<A>, Source<B>>, 21 op3: UnaryFn<Source<B>, Source<C>> 22): Source<C>; 23 24function pipe<T, A, B, C, D>( 25 source: Source<T>, 26 op1: UnaryFn<Source<T>, Source<A>>, 27 op2: UnaryFn<Source<A>, Source<B>>, 28 op3: UnaryFn<Source<B>, Source<C>>, 29 op4: UnaryFn<Source<C>, Source<D>> 30): Source<D>; 31 32function pipe<T, A, B, C, D, E>( 33 source: Source<T>, 34 op1: UnaryFn<Source<T>, Source<A>>, 35 op2: UnaryFn<Source<A>, Source<B>>, 36 op3: UnaryFn<Source<B>, Source<C>>, 37 op4: UnaryFn<Source<C>, Source<D>>, 38 op5: UnaryFn<Source<D>, Source<E>> 39): Source<E>; 40 41function pipe<T, A, B, C, D, E, F>( 42 source: Source<T>, 43 op1: UnaryFn<Source<T>, Source<A>>, 44 op2: UnaryFn<Source<A>, Source<B>>, 45 op3: UnaryFn<Source<B>, Source<C>>, 46 op4: UnaryFn<Source<C>, Source<D>>, 47 op5: UnaryFn<Source<D>, Source<E>>, 48 op6: UnaryFn<Source<E>, Source<F>> 49): Source<F>; 50 51function pipe<T, A, B, C, D, E, F, G>( 52 source: Source<T>, 53 op1: UnaryFn<Source<T>, Source<A>>, 54 op2: UnaryFn<Source<A>, Source<B>>, 55 op3: UnaryFn<Source<B>, Source<C>>, 56 op4: UnaryFn<Source<C>, Source<D>>, 57 op5: UnaryFn<Source<D>, Source<E>>, 58 op6: UnaryFn<Source<E>, Source<F>>, 59 op7: UnaryFn<Source<F>, Source<G>> 60): Source<G>; 61 62function pipe<T, A, B, C, D, E, F, G, H>( 63 source: Source<T>, 64 op1: UnaryFn<Source<T>, Source<A>>, 65 op2: UnaryFn<Source<A>, Source<B>>, 66 op3: UnaryFn<Source<B>, Source<C>>, 67 op4: UnaryFn<Source<C>, Source<D>>, 68 op5: UnaryFn<Source<D>, Source<E>>, 69 op6: UnaryFn<Source<E>, Source<F>>, 70 op7: UnaryFn<Source<F>, Source<G>>, 71 op8: UnaryFn<Source<G>, Source<H>> 72): Source<H>; 73 74/* pipe definitions for source + operators + consumer composition */ 75 76function pipe<T, R>(source: Source<T>, consumer: UnaryFn<Source<T>, R>): R; 77 78function pipe<T, A, R>( 79 source: Source<T>, 80 op1: UnaryFn<Source<T>, Source<A>>, 81 consumer: UnaryFn<Source<A>, R> 82): R; 83 84function pipe<T, A, B, R>( 85 source: Source<T>, 86 op1: UnaryFn<Source<T>, Source<A>>, 87 op2: UnaryFn<Source<A>, Source<B>>, 88 consumer: UnaryFn<Source<B>, R> 89): R; 90 91function pipe<T, A, B, C, R>( 92 source: Source<T>, 93 op1: UnaryFn<Source<T>, Source<A>>, 94 op2: UnaryFn<Source<A>, Source<B>>, 95 op3: UnaryFn<Source<B>, Source<C>>, 96 consumer: UnaryFn<Source<C>, R> 97): R; 98 99function pipe<T, A, B, C, D, R>( 100 source: Source<T>, 101 op1: UnaryFn<Source<T>, Source<A>>, 102 op2: UnaryFn<Source<A>, Source<B>>, 103 op3: UnaryFn<Source<B>, Source<C>>, 104 op4: UnaryFn<Source<C>, Source<D>>, 105 consumer: UnaryFn<Source<D>, R> 106): R; 107 108function pipe<T, A, B, C, D, E, R>( 109 source: Source<T>, 110 op1: UnaryFn<Source<T>, Source<A>>, 111 op2: UnaryFn<Source<A>, Source<B>>, 112 op3: UnaryFn<Source<B>, Source<C>>, 113 op4: UnaryFn<Source<C>, Source<D>>, 114 op5: UnaryFn<Source<D>, Source<E>>, 115 consumer: UnaryFn<Source<E>, R> 116): R; 117 118function pipe<T, A, B, C, D, E, F, R>( 119 source: Source<T>, 120 op1: UnaryFn<Source<T>, Source<A>>, 121 op2: UnaryFn<Source<A>, Source<B>>, 122 op3: UnaryFn<Source<B>, Source<C>>, 123 op4: UnaryFn<Source<C>, Source<D>>, 124 op5: UnaryFn<Source<D>, Source<E>>, 125 op6: UnaryFn<Source<E>, Source<F>>, 126 consumer: UnaryFn<Source<F>, R> 127): R; 128 129function pipe<T, A, B, C, D, E, F, G, R>( 130 source: Source<T>, 131 op1: UnaryFn<Source<T>, Source<A>>, 132 op2: UnaryFn<Source<A>, Source<B>>, 133 op3: UnaryFn<Source<B>, Source<C>>, 134 op4: UnaryFn<Source<C>, Source<D>>, 135 op5: UnaryFn<Source<D>, Source<E>>, 136 op6: UnaryFn<Source<E>, Source<F>>, 137 op7: UnaryFn<Source<F>, Source<G>>, 138 consumer: UnaryFn<Source<G>, R> 139): R; 140 141function pipe<T, A, B, C, D, E, F, G, H, R>( 142 source: Source<T>, 143 op1: UnaryFn<Source<T>, Source<A>>, 144 op2: UnaryFn<Source<A>, Source<B>>, 145 op3: UnaryFn<Source<B>, Source<C>>, 146 op4: UnaryFn<Source<C>, Source<D>>, 147 op5: UnaryFn<Source<D>, Source<E>>, 148 op6: UnaryFn<Source<E>, Source<F>>, 149 op7: UnaryFn<Source<F>, Source<G>>, 150 op8: UnaryFn<Source<G>, Source<H>>, 151 consumer: UnaryFn<Source<H>, R> 152): R; 153 154function pipe() { 155 let x = arguments[0]; 156 for (let i = 1, l = arguments.length; i < l; i++) 157 x = arguments[i](x); 158 return x; 159} 160 161export { pipe };