/**
* @file merge-options.js
* Opciones de combinación de @módulo
* /
import {each, isPlain} from './obj';
/ **
* Combinar dos objetos recursivamente.
*
* Realiza una fusión profunda como
* {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, pero solo se fusiona
* objetos simples (no arreglos, elementos o cualquier otra cosa).
*
* Los valores de objetos no simples se copiarán directamente desde el extremo derecho
* argumento.
*
* @estático
* @param {Objeto[]} fuentes
* Uno o más objetos para fusionar en un nuevo objeto.
*
* @return {Objeto}
* Un nuevo objeto que es el resultado combinado de todas las fuentes.
* /
función mergeOptions(...fuentes) {
resultado constante = {};
fuentes.forEach(fuente => {
si (!fuente) {
devolver;
}
each(fuente, (valor, clave) => {
si (! es simple (valor)) {
resultado[clave] = valor;
devolver;
}
if (!isPlain(resultado[clave])) {
resultado[clave] = {};
}
resultado[clave] = mergeOptions(resultado[clave], valor);
});
});
resultado devuelto;
}
exportar opciones de combinación predeterminadas;