pankod/refine

View on GitHub
packages/strapi-v4/src/utils/normalizeData.ts

Summary

Maintainability
A
1 hr
Test Coverage
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;
};