applyDecoratedDescriptor.js 800 B

12345678910111213141516171819202122232425262728
  1. export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
  2. var desc = {};
  3. Object.keys(descriptor).forEach(function (key) {
  4. desc[key] = descriptor[key];
  5. });
  6. desc.enumerable = !!desc.enumerable;
  7. desc.configurable = !!desc.configurable;
  8. if ('value' in desc || desc.initializer) {
  9. desc.writable = true;
  10. }
  11. desc = decorators.slice().reverse().reduce(function (desc, decorator) {
  12. return decorator(target, property, desc) || desc;
  13. }, desc);
  14. if (context && desc.initializer !== void 0) {
  15. desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
  16. desc.initializer = undefined;
  17. }
  18. if (desc.initializer === void 0) {
  19. Object.defineProperty(target, property, desc);
  20. desc = null;
  21. }
  22. return desc;
  23. }