const isObject = (obj: any) => obj && typeof obj === 'object'

export const deepMerge = (...objects: any[]) => {
  return objects.reduce((prev, obj) => {
    for (const key in obj) {
      if (isObject(prev[key]) && isObject(obj[key])) {
        prev[key] = deepMerge(prev[key], obj[key])
      } else {
        prev[key] = obj[key]
      }
    }
    return prev
  }, {})
}
