| 123456789101112131415161718192021222324252627282930313233 | "use strict";var includes      = require("../array/#/contains")  , uniq          = require("../array/#/uniq")  , objForEach    = require("./for-each")  , isPlainObject = require("./is-plain-object")  , ensureValue   = require("./valid-value");var isArray = Array.isArray, slice = Array.prototype.slice;var deepAssign = function (target, source) {	if (isPlainObject(target)) {		if (!isPlainObject(source)) return source;		objForEach(source, function (value, key) {			target[key] = deepAssign(target[key], value);		});		return target;	}	if (isArray(target)) {		if (!isArray(source)) return source;		source.forEach(function (item) {			if (!includes.call(target, item)) target.push(item);		});		return target;	}	return source;};module.exports = function (target /*, ...objects*/) {	return uniq		.call([ensureValue(target)].concat(slice.call(arguments, 1).map(ensureValue)))		.reduce(deepAssign);};
 |