123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230 |
- declare namespace pWaterfall {
- type Task<ValueType, ReturnType> = (
- previousValue: ValueType
- ) => ReturnType | PromiseLike<ReturnType>;
- type InitialTask<ReturnType> = () => ReturnType | PromiseLike<ReturnType>;
- }
- declare const pWaterfall: {
- /**
- Run promise-returning & async functions in series, each passing its result to the next.
- @param tasks - Functions are expected to return a value. If a `Promise` is returned, it's awaited before continuing with the next task.
- @param initialValue - Value to use as `previousValue` in the first task.
- @returns Resolves when all promises returned from calling the functions in `tasks` are fulfilled, or rejects if any of the promises reject. The fulfilled value is the value returned from the last task.
- @example
- ```
- import pWaterfall = require('p-waterfall');
- (async () => {
- const tasks = [
- initialValue => getEmoji(initialValue),
- previousValue => `I ❤️ ${previousValue}`
- ];
- console.log(await pWaterfall(tasks, 'unicorn'));
- //=> 'I ❤️ 🦄'
- })();
- ```
- */
- <ReturnType>(
- tasks: readonly [
- pWaterfall.InitialTask<ReturnType>
- ]
- ): Promise<ReturnType>;
- <ValueType1, ReturnType>(
- tasks: readonly [
- pWaterfall.InitialTask<ValueType1>,
- pWaterfall.Task<ValueType1, ReturnType>
- ]
- ): Promise<ReturnType>;
- <ValueType1, ValueType2, ReturnType>(
- tasks: readonly [
- pWaterfall.InitialTask<ValueType1>,
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ReturnType>
- ]
- ): Promise<ReturnType>;
- <ValueType1, ValueType2, ValueType3, ReturnType>(
- tasks: readonly [
- pWaterfall.InitialTask<ValueType1>,
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ReturnType>
- ]
- ): Promise<ReturnType>;
- <ValueType1, ValueType2, ValueType3, ValueType4, ReturnType>(
- tasks: readonly [
- pWaterfall.InitialTask<ValueType1>,
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ReturnType>
- ]
- ): Promise<ReturnType>;
- <ValueType1, ValueType2, ValueType3, ValueType4, ValueType5, ReturnType>(
- tasks: readonly [
- pWaterfall.InitialTask<ValueType1>,
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ValueType5>,
- pWaterfall.Task<ValueType5, ReturnType>
- ]
- ): Promise<ReturnType>;
- <
- ValueType1,
- ValueType2,
- ValueType3,
- ValueType4,
- ValueType5,
- ValueType6,
- ReturnType
- >(
- tasks: readonly [
- pWaterfall.InitialTask<ValueType1>,
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ValueType5>,
- pWaterfall.Task<ValueType5, ValueType6>,
- pWaterfall.Task<ValueType6, ReturnType>
- ]
- ): Promise<ReturnType>;
- <
- ValueType1,
- ValueType2,
- ValueType3,
- ValueType4,
- ValueType5,
- ValueType6,
- ValueType7,
- ReturnType
- >(
- tasks: readonly [
- pWaterfall.InitialTask<ValueType1>,
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ValueType5>,
- pWaterfall.Task<ValueType5, ValueType6>,
- pWaterfall.Task<ValueType6, ValueType7>,
- pWaterfall.Task<ValueType7, ReturnType>
- ]
- ): Promise<ReturnType>;
- <ValueType1, ReturnType>(
- tasks: readonly [
- pWaterfall.Task<ValueType1, ReturnType>
- ],
- initialValue: ValueType1
- ): Promise<ReturnType>;
- <ValueType1, ValueType2, ReturnType>(
- tasks: readonly [
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ReturnType>
- ],
- initialValue: ValueType1
- ): Promise<ReturnType>;
- <ValueType1, ValueType2, ValueType3, ReturnType>(
- tasks: readonly [
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ReturnType>
- ],
- initialValue: ValueType1
- ): Promise<ReturnType>;
- <ValueType1, ValueType2, ValueType3, ValueType4, ReturnType>(
- tasks: readonly [
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ReturnType>
- ],
- initialValue: ValueType1
- ): Promise<ReturnType>;
- <ValueType1, ValueType2, ValueType3, ValueType4, ValueType5, ReturnType>(
- tasks: readonly [
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ValueType5>,
- pWaterfall.Task<ValueType5, ReturnType>
- ],
- initialValue: ValueType1
- ): Promise<ReturnType>;
- <
- ValueType1,
- ValueType2,
- ValueType3,
- ValueType4,
- ValueType5,
- ValueType6,
- ReturnType
- >(
- tasks: readonly [
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ValueType5>,
- pWaterfall.Task<ValueType5, ValueType6>,
- pWaterfall.Task<ValueType6, ReturnType>
- ],
- initialValue: ValueType1
- ): Promise<ReturnType>;
- <
- ValueType1,
- ValueType2,
- ValueType3,
- ValueType4,
- ValueType5,
- ValueType6,
- ValueType7,
- ReturnType
- >(
- tasks: readonly [
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ValueType5>,
- pWaterfall.Task<ValueType5, ValueType6>,
- pWaterfall.Task<ValueType6, ValueType7>,
- pWaterfall.Task<ValueType7, ReturnType>
- ],
- initialValue: ValueType1
- ): Promise<ReturnType>;
- <
- ValueType1,
- ValueType2,
- ValueType3,
- ValueType4,
- ValueType5,
- ValueType6,
- ValueType7,
- ValueType8,
- ReturnType
- >(
- tasks: readonly [
- pWaterfall.Task<ValueType1, ValueType2>,
- pWaterfall.Task<ValueType2, ValueType3>,
- pWaterfall.Task<ValueType3, ValueType4>,
- pWaterfall.Task<ValueType4, ValueType5>,
- pWaterfall.Task<ValueType5, ValueType6>,
- pWaterfall.Task<ValueType6, ValueType7>,
- pWaterfall.Task<ValueType7, ValueType8>,
- pWaterfall.Task<ValueType8, ReturnType>
- ],
- initialValue: ValueType1
- ): Promise<ReturnType>;
- (
- tasks: Iterable<pWaterfall.Task<unknown, unknown>>,
- initialValue?: unknown
- ): Promise<unknown>;
- // TODO: Remove this for the next major release
- default: typeof pWaterfall;
- };
- export = pWaterfall;
|