/**
* @Datei merge-options.js
* @modul zusammenführen-optionen
* /
importiere {each, isPlain} von './obj';
/**
* Zwei Objekte rekursiv zusammenführen.
*
* Führt eine tiefe Zusammenführung durch wie
* {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, führt aber nur zusammen
* einfache Objekte (keine Arrays, Elemente oder sonstiges).
*
* Werte, die nicht in der Ebene liegen, werden direkt von der rechten Seite des Objekts kopiert
* argument.
*
* @static
* @param {Object[]} sources
* Ein oder mehrere Objekte, die zu einem neuen Objekt zusammengeführt werden sollen.
*
* @return {Object}
* Ein neues Objekt, das das zusammengefasste Ergebnis aller Quellen ist.
* /
function mergeOptions(...sources) {
const result = {};
sources.forEach(source => {
if (!Quelle) {
rückkehr;
}
each(Quelle, (Wert, Schlüssel) => {
if (!isPlain(value)) {
ergebnis[Schlüssel] = Wert;
rückkehr;
}
if (!isPlain(result[key])) {
result[key] = {};
}
result[key] = mergeOptions(result[key], value);
});
});
ergebnis zurückgeben;
}
export default mergeOptions;