mirror of
https://github.com/CorentinTh/it-tools.git
synced 2025-04-24 00:36:14 -04:00
41 lines
1.2 KiB
TypeScript
41 lines
1.2 KiB
TypeScript
import { createRouter, createWebHistory } from 'vue-router';
|
|
import { layouts } from './layouts/index';
|
|
import HomePage from './pages/Home.page.vue';
|
|
import NotFound from './pages/404.page.vue';
|
|
import { tools } from './tools';
|
|
import { config } from './config';
|
|
import { routes as demoRoutes } from './ui/demo/demo.routes';
|
|
|
|
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(config.app.baseUrl),
|
|
routes: [
|
|
{
|
|
path: '/',
|
|
name: 'home',
|
|
component: HomePage,
|
|
},
|
|
{
|
|
path: '/about',
|
|
name: 'about',
|
|
component: () => import('./pages/About.vue'),
|
|
},
|
|
...toolsRoutes,
|
|
...toolsRedirectRoutes,
|
|
...(config.app.env === 'development' ? demoRoutes : []),
|
|
{ path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },
|
|
],
|
|
});
|
|
|
|
export default router;
|