discourse/app/assets/javascripts/discourse-common/addon/utils/macro-alias.js
Robin Ward cbb27241c4
DEV: Make discourse-common an Ember addon. (#9578)
This is to help with the migration to Ember CLI. In the current running
version of Discourse everything should be the same as before, just with
a few extra files that are not used. However, using Ember CLI this can
be installed as an Ember addon.

Co-Authored-By: Jarek Radosz <jradosz@gmail.com>
2020-04-29 12:18:21 -04:00

25 lines
638 B
JavaScript

import isDescriptor from "discourse-common/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);
};
}
};
}