@goyaro/bresdk-mvp
Version:
Business Rules Engine
74 lines (55 loc) • 2.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _models = _interopRequireDefault(require("./models"));
var _helpers = require("./helpers");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var BREHub =
/*#__PURE__*/
function () {
function BREHub() {
_classCallCheck(this, BREHub);
this.subscribers = [];
}
_createClass(BREHub, [{
key: "subscribe",
value: function subscribe(subscriber) {
this.subscribers.push(subscriber);
}
}, {
key: "handle",
value: function handle() {
var _this = this;
return function (event, context, callback) {
var eventTypes = Object.keys(_models["default"]);
var recievedEventType = event.eventType; // check if event exists in model
if (eventTypes.indexOf(recievedEventType) !== -1) {
// map recieved event to model, return mismatches
var eventModel = _models["default"][recievedEventType];
var transformResponse = (0, _helpers.mapModel)(eventModel, event);
var transformedEvent = transformResponse.data;
if (transformResponse.error) {
(0, _helpers.error)(callback, transformResponse.error);
throw new Error(transformResponse.error);
} // dispatch transformed event to subscribers
for (var i = 0; i < _this.subscribers.length; i++) {
_this.subscribers[i].handle(recievedEventType, transformedEvent);
} // return success
(0, _helpers.success)(callback, "".concat(recievedEventType, " event dispatched successfully."));
} else {
// could not find event model
var message = "Event of type ".concat(recievedEventType, " does not exist in the map.");
(0, _helpers.error)(callback, message);
throw new Error(message);
}
};
}
}]);
return BREHub;
}();
exports["default"] = BREHub;