// Imports import { kebabCase } from 'lodash' import { leadingSlash, trailingSlash } from '@/util/helpers' export function abort(code = 404) { return { name: 'FourOhFour', path: '*', component: () => error(code), } } export function error(code = 404) { return import ( /* webpackChunkName: "error-[request]" */ `@/views/${code}.vue` ) } export function layout(layout = 'Default', children, path = '') { const dir = kebabCase(layout) return { children, component: () => import ( /* webpackChunkName: "layout-[request]" */ `@/layouts/${dir}/Index` ), path, } } export function redirect( path = '*', rhandler, ) { if (typeof path === 'function') { rhandler = path path = '*' } return { path, redirect: to => { const rpath = rhandler(to) const url = rpath !== '' ? leadingSlash(trailingSlash(rpath)) : rpath return `/${url}` }, } } export function route(name, component, path = '') { component = Object(component) === component ? component : { default: name.replace(' ', '') } const components = {} for (const [key, value] of Object.entries(component)) { components[key] = () => import ( /* webpackChunkName: "views-[request]" */ `@/views/${value}` ) } return { name, components, path, } }