| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232 |
- /* eslint-disable */
- /* prettier-ignore */
- // Generated by elegant-router
- // Read more: https://github.com/soybeanjs/elegant-router
- import type { RouteRecordRaw, RouteComponent } from 'vue-router';
- import type { ElegantConstRoute } from '@elegant-router/vue';
- import type { RouteMap, RouteKey, RoutePath } from '@elegant-router/types';
- /**
- * transform elegant const routes to vue routes
- * @param routes elegant const routes
- * @param layouts layout components
- * @param views view components
- */
- export function transformElegantRoutesToVueRoutes(
- routes: ElegantConstRoute[],
- layouts: Record<string, RouteComponent | (() => Promise<RouteComponent>)>,
- views: Record<string, RouteComponent | (() => Promise<RouteComponent>)>
- ) {
- return routes.flatMap(route => transformElegantRouteToVueRoute(route, layouts, views));
- }
- /**
- * transform elegant route to vue route
- * @param route elegant const route
- * @param layouts layout components
- * @param views view components
- */
- function transformElegantRouteToVueRoute(
- route: ElegantConstRoute,
- layouts: Record<string, RouteComponent | (() => Promise<RouteComponent>)>,
- views: Record<string, RouteComponent | (() => Promise<RouteComponent>)>
- ) {
- const LAYOUT_PREFIX = 'layout.';
- const VIEW_PREFIX = 'view.';
- const ROUTE_DEGREE_SPLITTER = '_';
- const FIRST_LEVEL_ROUTE_COMPONENT_SPLIT = '$';
- function isLayout(component: string) {
- return component.startsWith(LAYOUT_PREFIX);
- }
- function getLayoutName(component: string) {
- const layout = component.replace(LAYOUT_PREFIX, '');
- if(!layouts[layout]) {
- throw new Error(`Layout component "${layout}" not found`);
- }
- return layout;
- }
- function isView(component: string) {
- return component.startsWith(VIEW_PREFIX);
- }
- function getViewName(component: string) {
- const view = component.replace(VIEW_PREFIX, '');
- if(!views[view]) {
- throw new Error(`View component "${view}" not found`);
- }
- return view;
- }
- function isFirstLevelRoute(item: ElegantConstRoute) {
- return !item.name.includes(ROUTE_DEGREE_SPLITTER);
- }
- function isSingleLevelRoute(item: ElegantConstRoute) {
- return isFirstLevelRoute(item) && !item.children?.length;
- }
- function getSingleLevelRouteComponent(component: string) {
- const [layout, view] = component.split(FIRST_LEVEL_ROUTE_COMPONENT_SPLIT);
- return {
- layout: getLayoutName(layout),
- view: getViewName(view)
- };
- }
- const vueRoutes: RouteRecordRaw[] = [];
- // add props: true to route
- if (route.path.includes(':') && !route.props) {
- route.props = true;
- }
- const { name, path, component, children, ...rest } = route;
- const vueRoute = { name, path, ...rest } as RouteRecordRaw;
- try {
- if (component) {
- if (isSingleLevelRoute(route)) {
- const { layout, view } = getSingleLevelRouteComponent(component);
- const singleLevelRoute: RouteRecordRaw = {
- path,
- component: layouts[layout],
- meta: {
- title: route.meta?.title || ''
- },
- children: [
- {
- name,
- path: '',
- component: views[view],
- ...rest
- } as RouteRecordRaw
- ]
- };
- return [singleLevelRoute];
- }
- if (isLayout(component)) {
- const layoutName = getLayoutName(component);
- vueRoute.component = layouts[layoutName];
- }
- if (isView(component)) {
- const viewName = getViewName(component);
- vueRoute.component = views[viewName];
- }
- }
- } catch (error: any) {
- console.error(`Error transforming route "${route.name}": ${error.toString()}`);
- return [];
- }
- // add redirect to child
- if (children?.length && !vueRoute.redirect) {
- vueRoute.redirect = {
- name: children[0].name
- };
- }
- if (children?.length) {
- const childRoutes = children.flatMap(child => transformElegantRouteToVueRoute(child, layouts, views));
- if(isFirstLevelRoute(route)) {
- vueRoute.children = childRoutes;
- } else {
- vueRoutes.push(...childRoutes);
- }
- }
- vueRoutes.unshift(vueRoute);
- return vueRoutes;
- }
- /**
- * map of route name and route path
- */
- const routeMap: RouteMap = {
- "root": "/",
- "not-found": "/:pathMatch(.*)*",
- "exception": "/exception",
- "exception_403": "/exception/403",
- "exception_404": "/exception/404",
- "exception_500": "/exception/500",
- "document": "/document",
- "document_project": "/document/project",
- "document_project-link": "/document/project-link",
- "document_video": "/document/video",
- "document_vue": "/document/vue",
- "document_vite": "/document/vite",
- "document_unocss": "/document/unocss",
- "document_naive": "/document/naive",
- "document_pro-naive": "/document/pro-naive",
- "document_antd": "/document/antd",
- "document_alova": "/document/alova",
- "403": "/403",
- "404": "/404",
- "500": "/500",
- "goods-center": "/goods-center",
- "goods-center_store-goods": "/goods-center/store-goods",
- "goods-center_type-admin": "/goods-center/type-admin",
- "government": "/government",
- "government_government-list": "/government/government-list",
- "government_points": "/government/points",
- "government_user-list": "/government/user-list",
- "home": "/home",
- "iframe-page": "/iframe-page/:url",
- "login": "/login/:module(pwd-login|code-login|register|reset-pwd|bind-wechat)?",
- "manage": "/manage",
- "manage_config": "/manage/config",
- "manage_department": "/manage/department",
- "manage_dict": "/manage/dict",
- "manage_log": "/manage/log",
- "manage_menu": "/manage/menu",
- "manage_role": "/manage/role",
- "manage_schedule": "/manage/schedule",
- "manage_user": "/manage/user",
- "test": "/test",
- "user-center": "/user-center",
- "user-management": "/user-management",
- "user-management_user-list": "/user-management/user-list",
- "xsb-manage": "/xsb-manage",
- "xsb-manage_advertisement": "/xsb-manage/advertisement",
- "xsb-manage_fright-config": "/xsb-manage/fright-config",
- "xsb-manage_search": "/xsb-manage/search",
- "xsb-manage_store-info": "/xsb-manage/store-info"
- };
- /**
- * get route path by route name
- * @param name route name
- */
- export function getRoutePath<T extends RouteKey>(name: T) {
- return routeMap[name];
- }
- /**
- * get route name by route path
- * @param path route path
- */
- export function getRouteName(path: RoutePath) {
- const routeEntries = Object.entries(routeMap) as [RouteKey, RoutePath][];
- const routeName: RouteKey | null = routeEntries.find(([, routePath]) => routePath === path)?.[0] || null;
- return routeName;
- }
|