javascript-decorators
Version:
50 lines (44 loc) • 1.22 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports._after = undefined;
var _validationHelpers = require('./validationHelpers');
var _helpers = require('./helpers');
/**
* Base decorator function for immutability
*
* @method _basefunc
*
*
* @return { function } decorator function
*/
/**
* @after decorator
*
* @author Avraam Mavridis <avr.mav@gmail.com>
*
*/
var _after = exports._after = function after(afterFunc) {
if (!(0, _validationHelpers._isFunction)(afterFunc)) {
throw Error('a function should be passed to the @after decorator');
}
return function afterTarget(target, key, descriptor) {
var func = descriptor.value;
(0, _helpers.descriptorIsFunc)(key, func);
descriptor.value = function descriptorValue() {
for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
var res = func.apply(this, args);
var afterFuncRes = afterFunc();
if ((0, _validationHelpers._isPromise)(afterFuncRes)) {
return afterFuncRes.then(function () {
return res;
});
}
return res;
};
return descriptor;
};
};
;