UNPKG

caminho

Version:

Tool for creating efficient data pipelines in a JavaScript environment

52 lines 2.23 kB
import { __awaiter, __generator, __read, __spreadArray } from "tslib"; import { bufferTime, filter, mergeAll, mergeMap } from 'rxjs'; import { getNewValueBag } from '../utils/valueBag'; export function batch(params, loggers) { var getBag = params.provides ? valueBagGetterBatchProvides(params.provides) : valueBagGetterBatchNoProvides(); function wrappedStep(valueBag) { return __awaiter(this, void 0, void 0, function () { var startTime, values, newValueBags, 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(__spreadArray([], __read(valueBag), false))]; case 2: values = _a.sent(); newValueBags = getBag(valueBag, values); loggers.onStepFinished(newValueBags, startTime); return [2, newValueBags]; case 3: err_1 = _a.sent(); loggers.onStepFinished(valueBag, startTime, err_1); throw err_1; case 4: return [2]; } }); }); } return function operatorApplier(observable) { return observable .pipe(bufferTime(params.batch.timeoutMs, undefined, params.batch.maxSize)) .pipe(filter(function (buffer) { return buffer.length > 0; })) .pipe(mergeMap(wrappedStep, params.maxConcurrency)) .pipe(mergeAll()); }; } export function valueBagGetterBatchNoProvides() { return function getValueBag(valueBag) { return valueBag; }; } export function valueBagGetterBatchProvides(provides) { return function getValueBagWithProvides(valueBags, values) { return valueBags.map(function (valueBag, index) { return getNewValueBag(valueBag, provides, values[index]); }); }; } //# sourceMappingURL=batch.js.map