@olton/latte
Version:
Simple test framework for JavaScript and TypeScript with DOM supports
20 lines (16 loc) • 521 B
JavaScript
import { isObject } from './is-object.js'
export const merge = (target, ...sources) => {
if (!sources.length) return target
const source = sources.shift()
if (isObject(target) && isObject(source)) {
for (const key in source) {
if (isObject(source[key])) {
if (!target[key]) Object.assign(target, { [key]: {} })
merge(target[key], source[key])
} else {
Object.assign(target, { [key]: source[key] })
}
}
}
return merge(target, ...sources)
}