/**
* @파일 병합 옵션.js
* @module 병합 옵션
*/
import {each, isPlain} from './obj';
/**
* 재귀적으로 두 개체를 병합합니다.
*
* 다음과 같은 깊은 병합을 수행합니다.
* {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, 병합만 가능
* 일반 객체(배열, 요소 등이 아님).
*
* 일반 개체 값이 아닌 개체 값은 맨 오른쪽에서 직접 복사됩니다.
* 논쟁.
*
* @정적
* @param {객체[]} 소스
* 하나 이상의 개체를 새 개체로 병합합니다.
*
* @return {객체}
* 모든 소스의 병합 결과인 새 개체입니다.
*/
함수 mergeOptions(...소스) {
const 결과 = {};
sources.forEach(소스 => {
경우 (! 소스) {
반품;
}
각각(소스, (값, 키) => {
if (!isPlain(값)) {
결과[키] = 값;
반품;
}
if (!isPlain(결과[키])) {
결과[키] = {};
}
result[키] = mergeOptions(결과[키], 값);
});
});
반환 결과;
}
기본 mergeOptions 내보내기;