| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | 'use strict';var isExtendable = require('is-extendable');var forIn = require('for-in');function mixinDeep(target, objects) {  var len = arguments.length, i = 0;  while (++i < len) {    var obj = arguments[i];    if (isObject(obj)) {      forIn(obj, copy, target);    }  }  return target;}/** * Copy properties from the source object to the * target object. * * @param  {*} `val` * @param  {String} `key` */function copy(val, key) {  if (key === '__proto__') {    return;  }  var obj = this[key];  if (isObject(val) && isObject(obj)) {    mixinDeep(obj, val);  } else {    this[key] = val;  }}/** * Returns true if `val` is an object or function. * * @param  {any} val * @return {Boolean} */function isObject(val) {  return isExtendable(val) && !Array.isArray(val);}/** * Expose `mixinDeep` */module.exports = mixinDeep;
 |