@vrx-arco/app
Version:
<p align="center"> <img src="https://vrx-arco.github.io/arco-design-pro/favicon.svg" width="200" height="250"> </p>
126 lines (120 loc) • 3.63 kB
TypeScript
import * as pinia from 'pinia';
import * as vue_router from 'vue-router';
import { RouteRecordRaw, RouterOptions, RouteRecordName } from 'vue-router';
import * as vue from 'vue';
import { Component, PropType } from 'vue';
type IVrxArcoCheckPermission = (permission: any, data: any) => boolean;
interface IVrxArcoRouter {
/**
* 静态路由部分
*/
routes: Readonly<RouteRecordRaw[]>;
/**
* 自定义路由创建参数
* ```ts
* createRouter({...options})
* ```
*/
options?: Omit<Partial<RouterOptions>, 'routes'>;
/**
* 动态路由部分
*/
dynamicRoutes?: RouteRecordRaw[];
/**
* 根据从远程获取的权限,筛选每个路由
* @param route
* @param permission
*/
filterDynamicRoutes?: (route: RouteRecordRaw, permission: any) => boolean;
/**
* 登陆过期重定向路由 name
*/
loginExpiredRedirect: string;
/**
* 未登陆时 路由通过 name 白名单
*/
whiteList?: string[];
/**
* 页面未找到 路由
*/
pageNotFound: Omit<RouteRecordRaw, 'path'>;
}
interface IVrxArcAuthentication {
/**
* 判断是否已登陆
*/
isLogin?: () => boolean | Promise<boolean>;
/**
* 登陆过期回调
* 从远程获取权限报错,也会触发该方法
*/
onLoginExpired?: () => any;
/**
* 从远程获取权限
*/
getPermission?: () => Promise<any> | any;
/**
* 用于自定义局部鉴权
*/
checkPermission?: IVrxArcoCheckPermission;
}
interface IVrxArcoApp {
/**
* 根组件
*/
rootComponent: Component;
/**
* 根组件 props
*/
rootProps?: Record<string, any>;
/**
* 渲染根节点
*/
rootContainer: Element | string;
/**
* 路由配置
*/
router: IVrxArcoRouter;
/**
* 路由遍历前后,添加加载状态控制
* @param value
*/
loading?: (value: boolean) => any;
authentication?: IVrxArcAuthentication;
/**
* 是否立即初始化 vue app
*
* 设置为 false 可以取消默认的 vue app 初始化行为
* @default true
*/
immediate?: boolean;
}
declare const usePermissionStore: pinia.StoreDefinition<"vrx-permission", {
dynamicRoutesName: RouteRecordName[];
dynamicRoutes: RouteRecordRaw[];
permission: any;
}, {}, {
setDynamicRoutesName(routesName: Set<RouteRecordName>): void;
}>;
declare const Permission: vue.DefineComponent<vue.ExtractPropTypes<{
data: PropType<any>;
destroyOnNoPermission: {
type: BooleanConstructor;
default: boolean;
};
}>, () => any[] | undefined, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
data: PropType<any>;
destroyOnNoPermission: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{}>, {
destroyOnNoPermission: boolean;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
declare const createVrxArcoApp: (options: IVrxArcoApp) => {
app: vue.App<Element>;
router: vue_router.Router;
pinia: pinia.Pinia;
mount: () => Promise<vue.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, vue.ComponentProvideOptions>, {}, {}, "", {}, any>>;
};
export { type IVrxArcAuthentication, type IVrxArcoApp, type IVrxArcoCheckPermission, type IVrxArcoRouter, Permission, createVrxArcoApp, usePermissionStore };