GreyRook/gown.js

View on GitHub
src/utils/mixin.js

Summary

Maintainability
A
2 hrs
Test Coverage
/**
 * Utility functions
 *
 * @namespace GOWN.utils
 */

/**
 * Mixin utility
 *
 * @function GOWN.utils.mixin
 * @param destination Destination object {Object}
 * @param source Source object{Object}
 * @return {Object}
 */
module.exports = function(destination, source) {
    for (var key in source) {
        if (source.hasOwnProperty(key)) {
            if(key === 'defineProperty') {
                for (var name in source[key]) {
                    var data = source[key][name];
                    if (data.configurable === undefined) {
                         // We change our default case, so that we can
                         // overwrite properties later on
                        data.configurable = true;
                    }
                    Object.defineProperty(destination, name, data);
                }
            } else {
                destination[key] = source[key];
            }
        }
    }
    return destination;
};