caminho
Version:
Tool for creating efficient data pipelines in a JavaScript environment
31 lines • 1.11 kB
JavaScript
import { mergeMap } from 'rxjs';
import { getNewValueBag } from '../utils/valueBag';
export function pipe(params, loggers) {
const getBag = params.provides ? valueBagGetterProvides(params.provides) : valueBagGetterNoProvides();
async function wrappedStep(valueBag) {
loggers.onStepStarted([valueBag]);
const startTime = new Date();
try {
const value = await params.fn({ ...valueBag });
const newBag = getBag(valueBag, value);
loggers.onStepFinished([newBag], startTime);
return newBag;
}
catch (err) {
loggers.onStepFinished([valueBag], startTime, err);
throw err;
}
}
return mergeMap(wrappedStep, params?.maxConcurrency);
}
export function valueBagGetterNoProvides() {
return function getValueBagWithProvides(valueBag) {
return valueBag;
};
}
export function valueBagGetterProvides(provides) {
return function getValueBagWithProvides(valueBag, value) {
return getNewValueBag(valueBag, provides, value);
};
}
//# sourceMappingURL=pipe.js.map