rjweb-server
Version:
Easy and Robust Way to create a Web Server with Many Easy-to-use Features in NodeJS
24 lines (23 loc) • 785 B
JavaScript
function mergeClasses(target, ...sources) {
sources.forEach(({ prototype: source }) => {
const descriptors = Object.keys(source).reduce((descriptors2, key) => {
descriptors2[key] = Object.getOwnPropertyDescriptor(source, key);
return descriptors2;
}, {});
Object.getOwnPropertyNames(source).forEach((key) => {
descriptors[key] = Object.getOwnPropertyDescriptor(source, key);
return descriptors;
});
Object.getOwnPropertySymbols(source).forEach((sym) => {
const descriptor = Object.getOwnPropertyDescriptor(source, sym);
if (descriptor.enumerable) {
descriptors[sym] = descriptor;
}
});
Object.defineProperties(target.prototype, descriptors);
});
return target;
}
export {
mergeClasses as default
};