Skip to content

Commit 2526406

Browse files
feat(core): increase number of steps in pipe (#107)
1 parent 56a570c commit 2526406

File tree

2 files changed

+282
-0
lines changed

2 files changed

+282
-0
lines changed

packages/bautajs-core/src/decorators/__tests__/pipeline.test.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,34 @@ describe('pipe tests', () => {
3939
expect(pipeline(null, ctx, {} as BautaJSInstance)).toStrictEqual(expected);
4040
});
4141

42+
test('should allow for up to 16 steps in a pipeline', async () => {
43+
const expected = "Let's sing: LA LA LA LA LA LA LA LA LA LA LA LA LA LA LA ";
44+
const firstValue = 'LA ';
45+
const myStep = (prev: string) => `${prev}${firstValue}`;
46+
47+
const pipeline = pipe(
48+
() => "Let's sing: ",
49+
myStep,
50+
myStep,
51+
myStep,
52+
myStep,
53+
myStep,
54+
myStep,
55+
myStep,
56+
myStep,
57+
myStep,
58+
myStep,
59+
myStep,
60+
myStep,
61+
myStep,
62+
myStep,
63+
myStep
64+
);
65+
const ctx = createContext({});
66+
67+
expect(pipeline(null, ctx, {} as BautaJSInstance)).toStrictEqual(expected);
68+
});
69+
4270
test('should allow pipelines on pipe method', async () => {
4371
const expected = 'this will be showed';
4472
const pipeline1 = pipe(() => expected);

packages/bautajs-core/src/decorators/pipeline.ts

Lines changed: 254 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,28 +28,33 @@ function compose<T, R>(
2828
export function pipe<ValueType, ReturnType>(
2929
f1: Pipeline.StepFunction<ValueType, ReturnType>
3030
): Pipeline.PipelineFunction<ValueType, ReturnType>;
31+
3132
export function pipe<ValueType, ResultValue1, ReturnType>(
3233
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
3334
f2: Pipeline.StepFunction<ResultValue1, ReturnType>
3435
): Pipeline.PipelineFunction<ValueType, ReturnType>;
36+
3537
export function pipe<ValueType, ResultValue1, ResultValue2, ReturnType>(
3638
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
3739
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
3840
f3: Pipeline.StepFunction<ResultValue2, ReturnType>
3941
): Pipeline.PipelineFunction<ValueType, ReturnType>;
42+
4043
export function pipe<ValueType, ResultValue1, ResultValue2, ResultValue3, ReturnType>(
4144
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
4245
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
4346
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
4447
f4: Pipeline.StepFunction<ResultValue3, ReturnType>
4548
): Pipeline.PipelineFunction<ValueType, ReturnType>;
49+
4650
export function pipe<ValueType, ResultValue1, ResultValue2, ResultValue3, ResultValue4, ReturnType>(
4751
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
4852
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
4953
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
5054
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
5155
f5: Pipeline.StepFunction<ResultValue4, ReturnType>
5256
): Pipeline.PipelineFunction<ValueType, ReturnType>;
57+
5358
export function pipe<
5459
ValueType,
5560
ResultValue1,
@@ -66,6 +71,7 @@ export function pipe<
6671
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
6772
f6: Pipeline.StepFunction<ResultValue5, ReturnType>
6873
): Pipeline.PipelineFunction<ValueType, ReturnType>;
74+
6975
export function pipe<
7076
ValueType,
7177
ResultValue1,
@@ -84,6 +90,7 @@ export function pipe<
8490
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
8591
f7: Pipeline.StepFunction<ResultValue6, ReturnType>
8692
): Pipeline.PipelineFunction<ValueType, ReturnType>;
93+
8794
export function pipe<
8895
ValueType,
8996
ResultValue1,
@@ -104,6 +111,7 @@ export function pipe<
104111
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
105112
f8: Pipeline.StepFunction<ResultValue7, ReturnType>
106113
): Pipeline.PipelineFunction<ValueType, ReturnType>;
114+
107115
export function pipe<
108116
ValueType,
109117
ResultValue1,
@@ -127,6 +135,252 @@ export function pipe<
127135
f9: Pipeline.StepFunction<ResultValue8, ReturnType>
128136
): Pipeline.PipelineFunction<ValueType, ReturnType>;
129137

138+
export function pipe<
139+
ValueType,
140+
ResultValue1,
141+
ResultValue2,
142+
ResultValue3,
143+
ResultValue4,
144+
ResultValue5,
145+
ResultValue6,
146+
ResultValue7,
147+
ResultValue8,
148+
ResultValue9,
149+
ReturnType
150+
>(
151+
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
152+
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
153+
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
154+
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
155+
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
156+
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
157+
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
158+
f8: Pipeline.StepFunction<ResultValue7, ResultValue8>,
159+
f9: Pipeline.StepFunction<ResultValue8, ResultValue9>,
160+
f10: Pipeline.StepFunction<ResultValue9, ReturnType>
161+
): Pipeline.PipelineFunction<ValueType, ReturnType>;
162+
163+
export function pipe<
164+
ValueType,
165+
ResultValue1,
166+
ResultValue2,
167+
ResultValue3,
168+
ResultValue4,
169+
ResultValue5,
170+
ResultValue6,
171+
ResultValue7,
172+
ResultValue8,
173+
ResultValue9,
174+
ResultValue10,
175+
ReturnType
176+
>(
177+
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
178+
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
179+
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
180+
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
181+
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
182+
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
183+
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
184+
f8: Pipeline.StepFunction<ResultValue7, ResultValue8>,
185+
f9: Pipeline.StepFunction<ResultValue8, ResultValue9>,
186+
f10: Pipeline.StepFunction<ResultValue9, ResultValue10>,
187+
f11: Pipeline.StepFunction<ResultValue10, ReturnType>
188+
): Pipeline.PipelineFunction<ValueType, ReturnType>;
189+
190+
export function pipe<
191+
ValueType,
192+
ResultValue1,
193+
ResultValue2,
194+
ResultValue3,
195+
ResultValue4,
196+
ResultValue5,
197+
ResultValue6,
198+
ResultValue7,
199+
ResultValue8,
200+
ResultValue9,
201+
ResultValue10,
202+
ResultValue11,
203+
ReturnType
204+
>(
205+
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
206+
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
207+
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
208+
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
209+
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
210+
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
211+
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
212+
f8: Pipeline.StepFunction<ResultValue7, ResultValue8>,
213+
f9: Pipeline.StepFunction<ResultValue8, ResultValue9>,
214+
f10: Pipeline.StepFunction<ResultValue9, ResultValue10>,
215+
f11: Pipeline.StepFunction<ResultValue10, ResultValue11>,
216+
f12: Pipeline.StepFunction<ResultValue11, ReturnType>
217+
): Pipeline.PipelineFunction<ValueType, ReturnType>;
218+
219+
export function pipe<
220+
ValueType,
221+
ResultValue1,
222+
ResultValue2,
223+
ResultValue3,
224+
ResultValue4,
225+
ResultValue5,
226+
ResultValue6,
227+
ResultValue7,
228+
ResultValue8,
229+
ResultValue9,
230+
ResultValue10,
231+
ResultValue11,
232+
ReturnType
233+
>(
234+
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
235+
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
236+
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
237+
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
238+
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
239+
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
240+
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
241+
f8: Pipeline.StepFunction<ResultValue7, ResultValue8>,
242+
f9: Pipeline.StepFunction<ResultValue8, ResultValue9>,
243+
f10: Pipeline.StepFunction<ResultValue9, ResultValue10>,
244+
f11: Pipeline.StepFunction<ResultValue10, ResultValue11>,
245+
f12: Pipeline.StepFunction<ResultValue11, ReturnType>
246+
): Pipeline.PipelineFunction<ValueType, ReturnType>;
247+
248+
export function pipe<
249+
ValueType,
250+
ResultValue1,
251+
ResultValue2,
252+
ResultValue3,
253+
ResultValue4,
254+
ResultValue5,
255+
ResultValue6,
256+
ResultValue7,
257+
ResultValue8,
258+
ResultValue9,
259+
ResultValue10,
260+
ResultValue11,
261+
ResultValue12,
262+
ReturnType
263+
>(
264+
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
265+
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
266+
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
267+
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
268+
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
269+
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
270+
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
271+
f8: Pipeline.StepFunction<ResultValue7, ResultValue8>,
272+
f9: Pipeline.StepFunction<ResultValue8, ResultValue9>,
273+
f10: Pipeline.StepFunction<ResultValue9, ResultValue10>,
274+
f11: Pipeline.StepFunction<ResultValue10, ResultValue11>,
275+
f12: Pipeline.StepFunction<ResultValue11, ResultValue12>,
276+
f13: Pipeline.StepFunction<ResultValue12, ReturnType>
277+
): Pipeline.PipelineFunction<ValueType, ReturnType>;
278+
279+
export function pipe<
280+
ValueType,
281+
ResultValue1,
282+
ResultValue2,
283+
ResultValue3,
284+
ResultValue4,
285+
ResultValue5,
286+
ResultValue6,
287+
ResultValue7,
288+
ResultValue8,
289+
ResultValue9,
290+
ResultValue10,
291+
ResultValue11,
292+
ResultValue12,
293+
ResultValue13,
294+
ReturnType
295+
>(
296+
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
297+
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
298+
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
299+
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
300+
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
301+
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
302+
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
303+
f8: Pipeline.StepFunction<ResultValue7, ResultValue8>,
304+
f9: Pipeline.StepFunction<ResultValue8, ResultValue9>,
305+
f10: Pipeline.StepFunction<ResultValue9, ResultValue10>,
306+
f11: Pipeline.StepFunction<ResultValue10, ResultValue11>,
307+
f12: Pipeline.StepFunction<ResultValue11, ResultValue12>,
308+
f13: Pipeline.StepFunction<ResultValue12, ResultValue13>,
309+
f14: Pipeline.StepFunction<ResultValue13, ReturnType>
310+
): Pipeline.PipelineFunction<ValueType, ReturnType>;
311+
312+
export function pipe<
313+
ValueType,
314+
ResultValue1,
315+
ResultValue2,
316+
ResultValue3,
317+
ResultValue4,
318+
ResultValue5,
319+
ResultValue6,
320+
ResultValue7,
321+
ResultValue8,
322+
ResultValue9,
323+
ResultValue10,
324+
ResultValue11,
325+
ResultValue12,
326+
ResultValue13,
327+
ResultValue14,
328+
ReturnType
329+
>(
330+
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
331+
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
332+
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
333+
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
334+
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
335+
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
336+
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
337+
f8: Pipeline.StepFunction<ResultValue7, ResultValue8>,
338+
f9: Pipeline.StepFunction<ResultValue8, ResultValue9>,
339+
f10: Pipeline.StepFunction<ResultValue9, ResultValue10>,
340+
f11: Pipeline.StepFunction<ResultValue10, ResultValue11>,
341+
f12: Pipeline.StepFunction<ResultValue11, ResultValue12>,
342+
f13: Pipeline.StepFunction<ResultValue12, ResultValue13>,
343+
f14: Pipeline.StepFunction<ResultValue13, ResultValue14>,
344+
f15: Pipeline.StepFunction<ResultValue14, ReturnType>
345+
): Pipeline.PipelineFunction<ValueType, ReturnType>;
346+
347+
export function pipe<
348+
ValueType,
349+
ResultValue1,
350+
ResultValue2,
351+
ResultValue3,
352+
ResultValue4,
353+
ResultValue5,
354+
ResultValue6,
355+
ResultValue7,
356+
ResultValue8,
357+
ResultValue9,
358+
ResultValue10,
359+
ResultValue11,
360+
ResultValue12,
361+
ResultValue13,
362+
ResultValue14,
363+
ResultValue15,
364+
ReturnType
365+
>(
366+
f1: Pipeline.StepFunction<ValueType, ResultValue1>,
367+
f2: Pipeline.StepFunction<ResultValue1, ResultValue2>,
368+
f3: Pipeline.StepFunction<ResultValue2, ResultValue3>,
369+
f4: Pipeline.StepFunction<ResultValue3, ResultValue4>,
370+
f5: Pipeline.StepFunction<ResultValue4, ResultValue5>,
371+
f6: Pipeline.StepFunction<ResultValue5, ResultValue6>,
372+
f7: Pipeline.StepFunction<ResultValue6, ResultValue7>,
373+
f8: Pipeline.StepFunction<ResultValue7, ResultValue8>,
374+
f9: Pipeline.StepFunction<ResultValue8, ResultValue9>,
375+
f10: Pipeline.StepFunction<ResultValue9, ResultValue10>,
376+
f11: Pipeline.StepFunction<ResultValue10, ResultValue11>,
377+
f12: Pipeline.StepFunction<ResultValue11, ResultValue12>,
378+
f13: Pipeline.StepFunction<ResultValue12, ResultValue13>,
379+
f14: Pipeline.StepFunction<ResultValue13, ResultValue14>,
380+
f15: Pipeline.StepFunction<ResultValue14, ResultValue15>,
381+
f16: Pipeline.StepFunction<ResultValue15, ReturnType>
382+
): Pipeline.PipelineFunction<ValueType, ReturnType>;
383+
130384
/**
131385
* Create a pipeline of Pipeline.StepFunctions executing one after the other.
132386
* @export

0 commit comments

Comments
 (0)