acelga-bus
Version:
An extensible typescript message bus with support for middlewares
59 lines • 2.42 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
class Pipeline {
constructor(dispatcher) {
this.dispatcher = dispatcher;
}
executeStopOnError(events) {
return __awaiter(this, void 0, void 0, function* () {
for (let index = 0; index < events.length; index++) {
const event = events[index];
try {
yield this.dispatcher.trigger(event);
}
catch (error) {
return [{ error, event }, ...this.mapNotExecutedEvents(events, index + 1)];
}
}
});
}
executeContinueOnError(events) {
return __awaiter(this, void 0, void 0, function* () {
const errors = [];
for (const event of events) {
try {
yield this.dispatcher.trigger(event);
}
catch (error) {
errors.push({ error, event });
}
}
return errors.length ? errors : undefined;
});
}
mapNotExecutedEvents(events, index) {
return events.slice(index).map(remainingEvent => {
return {
error: new NotExecutedByOrderPresentation(),
event: remainingEvent,
};
});
}
}
exports.Pipeline = Pipeline;
class NotExecutedByOrderPresentation extends Error {
constructor() {
super();
this.message = 'The pipeline was configures to preserve the order of the execution. One item fail and block the order of the other items. You can retry or remove that item when you create the new pipeline.';
}
}
exports.NotExecutedByOrderPresentation = NotExecutedByOrderPresentation;
//# sourceMappingURL=pipeline.js.map