magner
Version:
Universal admin panel magnetic to any backend
29 lines (24 loc) • 679 B
text/typescript
import {
createRouter,
createWebHistory,
Router,
RouteRecordRaw,
} from 'vue-router';
import type { RoutingConfig } from 'lib/types/configs/routing';
import makeRoutes from './make-routes';
export interface RoutingFinalConfig {
router: Router,
routing: RoutingConfig,
}
export type RouterController = () => RoutingFinalConfig;
export const routerController = <ROLE extends string>(config: RoutingConfig): RouterController => () => {
const routes = makeRoutes(config.routes);
const router = createRouter({
history: createWebHistory(config.global.suffixUrl),
routes: routes as RouteRecordRaw[],
});
return {
router,
routing: config,
};
};