@bfehub/vuepress-theme-vmi
Version:
Vmi theme of VuePress
25 lines (24 loc) • 811 B
JavaScript
import { isFunction, isString } from '@vuepress/shared';
import { useRouter } from 'vue-router';
/**
* Resolve a route with redirection
*/
export const useResolveRouteWithRedirect = (...args) => {
const router = useRouter();
const route = router.resolve(...args);
const lastMatched = route.matched[route.matched.length - 1];
if (!lastMatched?.redirect) {
return route;
}
const { redirect } = lastMatched;
const resolvedRedirect = isFunction(redirect) ? redirect(route) : redirect;
const resolvedRedirectObj = isString(resolvedRedirect)
? { path: resolvedRedirect }
: resolvedRedirect;
return useResolveRouteWithRedirect({
hash: route.hash,
query: route.query,
params: route.params,
...resolvedRedirectObj,
});
};