packages/strapi-v4/src/utils/normalizeData.ts
const flatten = (data: any) => {
if (!data.attributes) return data;
return {
id: data.id,
...data.attributes,
};
};
const isObject = (data: any) =>
Object.prototype.toString.call(data) === "[object Object]";
export const normalizeData = (data: any): any => {
if (Array.isArray(data)) {
return data.map((item) => normalizeData(item));
}
if (isObject(data)) {
if (Array.isArray(data.data)) {
data = [...data.data];
} else if (isObject(data.data)) {
data = flatten({ ...data.data });
} else if (data.data === null) {
data = null;
} else {
data = flatten(data);
}
for (const key in data) {
data[key] = normalizeData(data[key]);
}
return data;
}
return data;
};