/**
* @file merge-options.js
* @module merge-options
*/
import {each, isPlain} de './obj' ;
/**
* Fusionner deux objets de manière récursive.
*
* Effectue une fusion en profondeur comme
* {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, mais ne fait que fusionner
* des objets simples (pas des tableaux, des éléments ou quoi que ce soit d'autre).
*
* Les valeurs des objets non plats seront copiées directement à partir de l'objet le plus à droite
* argument.
*
* @statique
* @param {Object[]} sources
* Un ou plusieurs objets à fusionner dans un nouvel objet.
*
* @return {Object}
* Un nouvel objet qui est le résultat de la fusion de toutes les sources.
*/
function mergeOptions(...sources) {
const result = {} ;
sources.forEach(source => {
if (!source) {
retour ;
}
each(source, (value, key) => {
if (!isPlain(value)) {
résultat[clé] = valeur ;
retour ;
}
if (!isPlain(result[key])) {
result[key] = {} ;
}
result[key] = mergeOptions(result[key], value) ;
}) ;
}) ;
retourner le résultat ;
}
export default mergeOptions ;