@modern-js/utils
Version:
A Progressive React Framework for modern web development.
37 lines (36 loc) • 1.6 kB
JavaScript
import { lodash } from "../compiled.mjs";
const { cloneDeep: cloneDeep } = lodash;
function filterRoutesForServer(routes) {
const clonedRoutes = cloneDeep(routes);
const newRoutes = clonedRoutes.map((route)=>{
if ('nested' !== route.type) return route;
if (route.children && route.children.length > 0) route.children = filterRoutesForServer(route.children);
if (route.inValidSSRRoute) return null;
return route;
}).filter((route)=>null !== route);
return newRoutes;
}
function filterRoutesLoader(routes) {
const clonedRoutes = cloneDeep(routes);
const newRoutes = clonedRoutes.map((route)=>{
if ('nested' !== route.type) return route;
if (route.children && route.children.length > 0) route.children = filterRoutesLoader(route.children);
if (route.inValidSSRRoute) {
delete route.loader;
delete route.data;
delete route.action;
}
return route;
}).filter((route)=>null !== route);
return newRoutes;
}
function markRoutes(routes, routeIds) {
return routes.map((route)=>{
if ('nested' !== route.type) return route;
if (route.children && route.children.length > 0) route.children = markRoutes(route.children, routeIds);
if (route.children && route.children.length > 0) route.inValidSSRRoute = route.children.every((child)=>child.inValidSSRRoute ?? false);
else if (route.id) route.inValidSSRRoute = !routeIds.includes(route.id);
return route;
});
}
export { filterRoutesForServer, filterRoutesLoader, markRoutes };