UNPKG

javascript-decorators

Version:
50 lines (44 loc) 1.22 kB
'use strict'; 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; }; };