demeine
Version:
DDDD - Distributed Domain Driven Design
44 lines (43 loc) • 1.45 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "DefaultEventHandler", {
enumerable: true,
get: function() {
return DefaultEventHandler;
}
});
var _stringUtils = require("../utils/stringUtils");
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
var DefaultEventHandler = /*#__PURE__*/ function() {
"use strict";
function DefaultEventHandler() {
_classCallCheck(this, DefaultEventHandler);
}
var _proto = DefaultEventHandler.prototype;
_proto.handle = function handle(aggregate, event) {
var type = event.type;
var key = this._extractKey(type);
var funcName = "apply".concat((0, _stringUtils.capitalize)(key));
var applier = aggregate[funcName];
if (applier) {
return applier.bind(aggregate)(event);
} else {
throw new Error("Unable to apply event ".concat(type, " || ").concat(funcName));
}
};
_proto._extractKey = function _extractKey(type) {
var parts = type.split(".");
var filteredParts = [];
for(var i = 1; i < parts.length - 1; i++){
filteredParts.push(parts[i]);
}
return (0, _stringUtils.camelCase)(filteredParts.join("_"));
};
return DefaultEventHandler;
}();