2022-03-07 14:28:32 +00:00
|
|
|
export const toFlatObject = (objectArg: object) => {
|
|
|
|
const returnObject: {[key: string]: any} = {};
|
|
|
|
const extractLayer = (subObject: {[key: string]: any}, pathArg: string, loopProtection: object[]) => {
|
2022-03-08 00:49:38 +00:00
|
|
|
if (loopProtection.indexOf(subObject) > -1) {
|
|
|
|
return;
|
|
|
|
}
|
2022-03-07 14:28:32 +00:00
|
|
|
if (subObject)
|
|
|
|
for (const key of Object.keys(subObject)) {
|
|
|
|
let localPathArg = pathArg;
|
2022-03-08 00:42:39 +00:00
|
|
|
if (typeof subObject[ key ] === 'object' && !(subObject[ key ] instanceof Array)) {
|
2022-03-07 14:28:32 +00:00
|
|
|
const newLoopbackArray = loopProtection.slice();
|
|
|
|
newLoopbackArray.push(subObject);
|
|
|
|
extractLayer(subObject[ key ], localPathArg ? localPathArg += `.${key}` : key, newLoopbackArray);
|
|
|
|
} else {
|
|
|
|
returnObject[localPathArg ? localPathArg += `.${key}` : key] = subObject[key];
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
extractLayer(objectArg, '', []);
|
|
|
|
return returnObject;
|
|
|
|
}
|