32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { layouts } from './layouts/index';
 | |
| import { createRouter, createWebHistory } from 'vue-router';
 | |
| import HomePage from './pages/Home.page.vue';
 | |
| import NotFound from './pages/404.page.vue';
 | |
| import { tools } from './tools';
 | |
| 
 | |
| const toolsRoutes = tools.map(({ path, name, component, ...config }) => ({ path, name, component, meta: { isTool: true, layout: layouts.toolLayout, name, ...config } }));
 | |
| const toolsRedirectRoutes = tools
 | |
|   .filter(({ redirectFrom }) => redirectFrom && redirectFrom.length > 0)
 | |
|   .flatMap(({ path, redirectFrom }) => redirectFrom?.map((redirectSource) => ({ path: redirectSource, redirect: path })) ?? []);
 | |
| 
 | |
| const router = createRouter({
 | |
|   history: createWebHistory(import.meta.env.BASE_URL),
 | |
|   routes: [
 | |
|     {
 | |
|       path: '/',
 | |
|       name: 'home',
 | |
|       component: HomePage,
 | |
|     },
 | |
|     {
 | |
|       path: '/about',
 | |
|       name: 'about',
 | |
|       component: () => import('./pages/About.vue'),
 | |
|     },
 | |
|     ...toolsRoutes,
 | |
|     ...toolsRedirectRoutes,
 | |
|     { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },
 | |
|   ],
 | |
| });
 | |
| 
 | |
| export default router;
 |