import { route as defineRouter } from 'quasar/wrappers'; import { createRouter, createMemoryHistory, createWebHistory, createWebHashHistory, } from 'vue-router'; import routes from './routes'; import { useState } from 'src/composables/useState'; import { navigationGuard, setPageTitle, stateQueryGuard } from './hooks'; const webHistory = process.env.VUE_ROUTER_MODE === 'history' ? createWebHistory : createWebHashHistory; const createHistory = process.env.SERVER ? createMemoryHistory : webHistory; const Router = createRouter({ scrollBehavior: () => ({ left: 0, top: 0 }), routes, history: createHistory(process.env.VUE_ROUTER_BASE), }); export { Router }; export default defineRouter(() => { const state = useState(); Router.beforeEach((to, from, next) => navigationGuard(to, from, next, Router, state)); Router.beforeEach(stateQueryGuard); Router.afterEach(setPageTitle); Router.onError(({ message }) => { const errorMessages = [ 'Failed to fetch dynamically imported module', 'Importing a module script failed', ]; state.set( 'error', errorMessages.some((error) => message.startsWith(error)), ); }); return Router; });