UNPKG

4.7 kBTypeScriptView Raw
1declare namespace pPipe {
2 type UnaryFunction<ValueType, ReturnType> = (
3 value: ValueType
4 ) => ReturnType | PromiseLike<ReturnType>;
5
6 type Pipeline<ValueType, ReturnType> = (
7 value: ValueType
8 ) => Promise<ReturnType>;
9}
10
11/**
12Compose promise-returning & async functions into a reusable pipeline.
13
14@param ...input - Iterated over sequentially when returned `function` is called.
15@returns The `input` functions are applied from left to right.
16
17@example
18```
19import pPipe = require('p-pipe');
20
21const addUnicorn = async string => `${string} Unicorn`;
22const addRainbow = async string => `${string} Rainbow`;
23
24const pipeline = pPipe(addUnicorn, addRainbow);
25
26(async () => {
27 console.log(await pipeline('❤️'));
28 //=> '❤️ Unicorn Rainbow'
29})();
30```
31*/
32declare function pPipe<ValueType, ReturnType>(
33 f1: pPipe.UnaryFunction<ValueType, ReturnType>
34): pPipe.Pipeline<ValueType, ReturnType>;
35declare function pPipe<ValueType, ResultValue1, ReturnType>(
36 f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
37 f2: pPipe.UnaryFunction<ResultValue1, ReturnType>
38): pPipe.Pipeline<ValueType, ReturnType>;
39declare function pPipe<ValueType, ResultValue1, ResultValue2, ReturnType>(
40 f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
41 f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
42 f3: pPipe.UnaryFunction<ResultValue2, ReturnType>
43): pPipe.Pipeline<ValueType, ReturnType>;
44declare function pPipe<
45 ValueType,
46 ResultValue1,
47 ResultValue2,
48 ResultValue3,
49 ReturnType
50>(
51 f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
52 f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
53 f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
54 f4: pPipe.UnaryFunction<ResultValue3, ReturnType>
55): pPipe.Pipeline<ValueType, ReturnType>;
56declare function pPipe<
57 ValueType,
58 ResultValue1,
59 ResultValue2,
60 ResultValue3,
61 ResultValue4,
62 ReturnType
63>(
64 f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
65 f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
66 f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
67 f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
68 f5: pPipe.UnaryFunction<ResultValue4, ReturnType>
69): pPipe.Pipeline<ValueType, ReturnType>;
70declare function pPipe<
71 ValueType,
72 ResultValue1,
73 ResultValue2,
74 ResultValue3,
75 ResultValue4,
76 ResultValue5,
77 ReturnType
78>(
79 f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
80 f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
81 f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
82 f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
83 f5: pPipe.UnaryFunction<ResultValue4, ResultValue5>,
84 f6: pPipe.UnaryFunction<ResultValue5, ReturnType>
85): pPipe.Pipeline<ValueType, ReturnType>;
86declare function pPipe<
87 ValueType,
88 ResultValue1,
89 ResultValue2,
90 ResultValue3,
91 ResultValue4,
92 ResultValue5,
93 ResultValue6,
94 ReturnType
95>(
96 f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
97 f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
98 f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
99 f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
100 f5: pPipe.UnaryFunction<ResultValue4, ResultValue5>,
101 f6: pPipe.UnaryFunction<ResultValue5, ResultValue6>,
102 f7: pPipe.UnaryFunction<ResultValue6, ReturnType>
103): pPipe.Pipeline<ValueType, ReturnType>;
104declare function pPipe<
105 ValueType,
106 ResultValue1,
107 ResultValue2,
108 ResultValue3,
109 ResultValue4,
110 ResultValue5,
111 ResultValue6,
112 ResultValue7,
113 ReturnType
114>(
115 f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
116 f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
117 f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
118 f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
119 f5: pPipe.UnaryFunction<ResultValue4, ResultValue5>,
120 f6: pPipe.UnaryFunction<ResultValue5, ResultValue6>,
121 f7: pPipe.UnaryFunction<ResultValue6, ResultValue7>,
122 f8: pPipe.UnaryFunction<ResultValue7, ReturnType>
123): pPipe.Pipeline<ValueType, ReturnType>;
124declare function pPipe<
125 ValueType,
126 ResultValue1,
127 ResultValue2,
128 ResultValue3,
129 ResultValue4,
130 ResultValue5,
131 ResultValue6,
132 ResultValue7,
133 ResultValue8,
134 ReturnType
135>(
136 f1: pPipe.UnaryFunction<ValueType, ResultValue1>,
137 f2: pPipe.UnaryFunction<ResultValue1, ResultValue2>,
138 f3: pPipe.UnaryFunction<ResultValue2, ResultValue3>,
139 f4: pPipe.UnaryFunction<ResultValue3, ResultValue4>,
140 f5: pPipe.UnaryFunction<ResultValue4, ResultValue5>,
141 f6: pPipe.UnaryFunction<ResultValue5, ResultValue6>,
142 f7: pPipe.UnaryFunction<ResultValue6, ResultValue7>,
143 f8: pPipe.UnaryFunction<ResultValue7, ResultValue8>,
144 f9: pPipe.UnaryFunction<ResultValue8, ReturnType>
145): pPipe.Pipeline<ValueType, ReturnType>;
146
147// Fallbacks if more than 9 functions are passed as input (not type-safe).
148declare function pPipe(
149 ...functions: (pPipe.UnaryFunction<any, unknown>)[]
150): pPipe.Pipeline<unknown, unknown>;
151
152export = pPipe;