vue-bag-admin
Version:
Unified entry package for the Vue Bag Admin runtime ecosystem.
43 lines (42 loc) • 1.98 kB
TypeScript
import type { App } from 'vue';
import type { RouteLocationNormalized, RouteLocationRaw, Router, RouterHistory } from 'vue-router';
import { type AdminPlugin, type AdminRouteRecordRaw, type PluginStateProvider } from '../../core/index';
import { useUserStore } from '../stores/user';
import { type HostUiConfig } from './host-ui';
import { type HostNavigationConfig } from './navigation';
export interface CreateHostRouterOptions {
routes: AdminRouteRecordRaw[];
history?: RouterHistory;
navigation?: Partial<HostNavigationConfig>;
auth?: HostAuthOption;
}
export type HostProfileErrorAction = 'logout' | 'ignore' | 'throw';
export interface HostAuthGuardContext {
to: RouteLocationNormalized;
router: Router;
user: ReturnType<typeof useUserStore>;
}
export type HostUnauthenticatedHandler = (context: HostAuthGuardContext) => RouteLocationRaw | false | void | Promise<RouteLocationRaw | false | void>;
export type HostProfileErrorHandler = (context: HostAuthGuardContext & {
error: unknown;
}) => HostProfileErrorAction | RouteLocationRaw | false | void | Promise<HostProfileErrorAction | RouteLocationRaw | false | void>;
export interface HostAuthConfig extends Partial<HostNavigationConfig> {
enabled?: boolean;
onUnauthenticated?: HostUnauthenticatedHandler;
onProfileError?: HostProfileErrorHandler;
}
export type HostAuthOption = boolean | HostAuthConfig;
export declare const createHostRouter: ({ routes, history, navigation, auth }: CreateHostRouterOptions) => Router;
export interface BootstrapPluginsOptions {
app: App;
router: Router;
plugins?: AdminPlugin[];
i18n?: {
global: {
mergeLocaleMessage: (locale: string, message: Record<string, unknown>) => void;
};
};
ui?: HostUiConfig;
pluginStateProvider?: PluginStateProvider;
}
export declare function bootstrapPlugins({ app, router, plugins, i18n, ui, pluginStateProvider }: BootstrapPluginsOptions): Promise<void>;