22 lines
618 B
TypeScript
22 lines
618 B
TypeScript
import flow from 'lodash/flow';
|
|
|
|
export function then<T, V>(fn: (r: T) => V) {
|
|
return (p: Promise<T>) => Promise.resolve(p).then(fn);
|
|
}
|
|
|
|
const filterPromiseSymbol = Symbol('filterPromiseSymbol');
|
|
|
|
export function onlySuccessfulPromises(promises: Promise<unknown>[]) {
|
|
return Promise.all(promises.map(p => p.catch(() => filterPromiseSymbol))).then(results =>
|
|
results.filter(result => result !== filterPromiseSymbol),
|
|
);
|
|
}
|
|
|
|
function wrapFlowAsync(fn: Function) {
|
|
return async (arg: unknown) => fn(await arg);
|
|
}
|
|
|
|
export function flowAsync(fns: Function[]) {
|
|
return flow(fns.map(fn => wrapFlowAsync(fn)));
|
|
}
|