caminho
Version:
Tool for creating efficient data pipelines in a JavaScript environment
44 lines • 1.82 kB
JavaScript
import { __assign, __awaiter, __generator } from "tslib";
import { mergeMap } from 'rxjs';
import { getNewValueBag } from '../utils/valueBag';
export function pipe(params, loggers) {
var getBag = params.provides ? valueBagGetterProvides(params.provides) : valueBagGetterNoProvides();
function wrappedStep(valueBag) {
return __awaiter(this, void 0, void 0, function () {
var startTime, value, newBag, err_1;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
loggers.onStepStarted([valueBag]);
startTime = new Date();
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4, params.fn(__assign({}, valueBag))];
case 2:
value = _a.sent();
newBag = getBag(valueBag, value);
loggers.onStepFinished([newBag], startTime);
return [2, newBag];
case 3:
err_1 = _a.sent();
loggers.onStepFinished([valueBag], startTime, err_1);
throw err_1;
case 4: return [2];
}
});
});
}
return mergeMap(wrappedStep, params === null || params === void 0 ? void 0 : 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