caminho
Version:
Tool for creating efficient data pipelines in a JavaScript environment
36 lines • 1.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.pipe = pipe;
exports.valueBagGetterNoProvides = valueBagGetterNoProvides;
exports.valueBagGetterProvides = valueBagGetterProvides;
const rxjs_1 = require("rxjs");
const valueBag_1 = require("../utils/valueBag");
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 (0, rxjs_1.mergeMap)(wrappedStep, params?.maxConcurrency);
}
function valueBagGetterNoProvides() {
return function getValueBagWithProvides(valueBag) {
return valueBag;
};
}
function valueBagGetterProvides(provides) {
return function getValueBagWithProvides(valueBag, value) {
return (0, valueBag_1.getNewValueBag)(valueBag, provides, value);
};
}
//# sourceMappingURL=pipe.js.map