/**
 * @file 合併選項.js
 * @module 合併選項
 */
從 './obj' 導入 {each, isPlain};

/**
 * 遞歸合併兩個對象。
 *
 * 像這樣執行深度合併
 * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge},但僅合併
 * 普通對象(不是數組、元素或其他任何東西)。
 *
 * 非普通對象值將直接從最右邊複製
 * 爭論。
 *
 * @靜止的
 * @param {Object[]} 來源
 * 一個或多個對象合併成一個新的對象。
 *
 * @return {對象}
 * 一個新對象,它是所有源的合併結果。
 */
功能合併選項(...來源){
  常量結果 = {};

  sources.forEach(來源=>{
    如果(!來源){
      返回;
    }

    每個(源,(值,鍵)=> {
      如果(!isPlain(值)){
        結果[鍵] = 值;
        返回;
      }

      如果(!isPlain(結果[鍵])){
        結果[鍵] = {};
      }

      結果[鍵] = mergeOptions(結果[鍵], 值);
    });
  });

  返回結果;
}

導出默認合併選項;