src/decorators/shadowPropertyHelper.js
import isPlainObject from "lodash.isplainobject";
export default function shadowPropertyHelper(target, name, descriptor, bindProperty=false) {
if (isPlainObject(target)) {
// mixin method
if (!target.__shadowDescriptors__) {
target.__shadowDescriptors__ = {};
}
addDescriptor(target.__shadowDescriptors__, name, descriptor, bindProperty);
} else {
// Property subclass method
const ctor = target.constructor;
if (!ctor.shadowDescriptors) {
ctor.shadowDescriptors = {};
}
addDescriptor(ctor.shadowDescriptors, name, descriptor, bindProperty);
}
}
function addDescriptor(shadowDescriptors, name, descriptor, bindProperty) {
shadowDescriptors[name] = { descriptor, bindProperty };
}