@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
28 lines (27 loc) • 1.18 kB
JavaScript
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 };
}