UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

28 lines (27 loc) 1.18 kB
import { isPlainObject } from 'lodash-es'; export function splitRecursive(object) { if (isPlainObject(object) && typeof object === 'object' && object !== null) { const { _user, _date, ...rest } = object; const defaultOverwrites = { _user, _date }; for (const key in rest) { const { rawDelta, defaultOverwrites: innerDefaultOverwrites } = splitRecursive(rest[key]); rest[key] = rawDelta; if (innerDefaultOverwrites) defaultOverwrites[key] = innerDefaultOverwrites; } return { rawDelta: rest, defaultOverwrites }; } else if (Array.isArray(object)) { const rest = []; const defaultOverwrites = []; for (const key in object) { const { rawDelta, defaultOverwrites: innerDefaultOverwrites } = splitRecursive(object[key]); rest[key] = rawDelta; if (innerDefaultOverwrites) defaultOverwrites[key] = innerDefaultOverwrites; } object.map((value) => splitRecursive(value)); return { rawDelta: rest, defaultOverwrites }; } return { rawDelta: object, defaultOverwrites: undefined }; }