| 'use strict'; |
| |
| var isObject = require('is-extendable'); |
| var forIn = require('for-in'); |
| |
| function mixin(target, objects) { |
| if (!isObject(target)) { |
| throw new TypeError('mixin-object expects the first argument to be an object.'); |
| } |
| 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 {*} `value` |
| * @param {String} `key` |
| */ |
| |
| function copy(value, key) { |
| this[key] = value; |
| } |
| |
| /** |
| * Expose `mixin` |
| */ |
| |
| module.exports = mixin; |