import { cloneDeep } from "lodash-es"; export function deepCopy(obj: T): T { return cloneDeep(obj); } export function clearObject(obj: Record) { for (const key in obj) { delete obj[key]; } } export function clearAndAssign(target: Record, source: Record) { clearObject(target); Object.assign(target, source); } export function unnest(obj: Record, key: string, prefix: string) { const { [key]: toFlatten, ...rest } = obj; const prefixed = Object.fromEntries(Object.entries(toFlatten).map(([k, v]) => [prefix.concat(k), v])); return { ...rest, ...prefixed }; }