index.js 870 Bytes
import user from './user';
import app from './app';
import { cloneDeep } from 'lodash';

const getRoutes = (routes, maps = {}) => {
  routes = routes.map(item => {
    if (item.auths) {
      maps[item.path] = item.auths;
    }
    if (item.routes) {
      item.routes = getRoutes(item.routes, maps).routes;
    }
    return item;
  });
  routes.push({
    component: '../pages/404',
  });
  return {
    routes,
    maps,
  };
};

const { routes, maps } = getRoutes([user, app]);

export const routeMaps = maps;

export const codeMappingForResource = (() => {
  let menu = cloneDeep([app]);
  let codeMapping = new Map();
  const getItem = arr => {
    arr.forEach(item => {
      codeMapping.set(item?.resourceCode, item);
      if (item.routes) {
        getItem(item.routes);
      }
    });
  };
  getItem(menu);
  return codeMapping;
})();

export default routes;