"use strict";
|
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
exports.__esModule = true;
|
exports.default = merge;
|
|
var _has = _interopRequireDefault(require("lodash/has"));
|
|
var _isSchema = _interopRequireDefault(require("./isSchema"));
|
|
var isObject = function isObject(obj) {
|
return Object.prototype.toString.call(obj) === '[object Object]';
|
};
|
|
function merge(target, source) {
|
for (var key in source) {
|
if ((0, _has.default)(source, key)) {
|
var targetVal = target[key],
|
sourceVal = source[key];
|
if (sourceVal === undefined) continue;
|
|
if ((0, _isSchema.default)(sourceVal)) {
|
target[key] = (0, _isSchema.default)(targetVal) ? targetVal.concat(sourceVal) : sourceVal;
|
} else if (isObject(sourceVal)) {
|
target[key] = isObject(targetVal) ? merge(targetVal, sourceVal) : sourceVal;
|
} else if (Array.isArray(sourceVal)) {
|
target[key] = Array.isArray(targetVal) ? targetVal.concat(sourceVal) : sourceVal;
|
} else target[key] = source[key];
|
}
|
}
|
|
return target;
|
}
|
|
module.exports = exports["default"];
|