import isDescriptor from './utils/is-descriptor'; function handleDescriptor(target, property, desc, fn, params = []) { return { enumerable: desc.enumerable, configurable: desc.configurable, writable: desc.writable, initializer: function() { return fn(...params); } }; } export default function macroAlias(fn) { return function(...params) { if (isDescriptor(params[params.length - 1])) { return handleDescriptor(...params, fn); } else { return function(target, property, desc) { return handleDescriptor(target, property, desc, fn, params); }; } }; }