@vrx-arco/app
Version:
<p align="center"> <img src="https://vrx-arco.github.io/arco-design-pro/favicon.svg" width="200" height="250"> </p>
129 lines (128 loc) • 3.61 kB
TypeScript
import * as vue3 from "vue";
import { Component, PropType } from "vue";
import * as vue_router0 from "vue-router";
import { RouteRecordName, RouteRecordRaw, RouterOptions } from "vue-router";
import * as pinia1 from "pinia";
//#region src/types.d.ts
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;
}
//#endregion
//#region src/pinia/usePermissionStore.d.ts
declare const usePermissionStore: pinia1.StoreDefinition<"vrx-permission", {
dynamicRoutesName: RouteRecordName[];
dynamicRoutes: RouteRecordRaw[];
permission: any;
}, {}, {
setDynamicRoutesName(routesName: Set<RouteRecordName>): void;
}>;
//#endregion
//#region src/permission/component.d.ts
declare const Permission: vue3.DefineComponent<vue3.ExtractPropTypes<{
data: PropType<any>;
destroyOnNoPermission: {
type: BooleanConstructor;
default: boolean;
};
}>, () => any[] | undefined, {}, {}, {}, vue3.ComponentOptionsMixin, vue3.ComponentOptionsMixin, {}, string, vue3.PublicProps, Readonly<vue3.ExtractPropTypes<{
data: PropType<any>;
destroyOnNoPermission: {
type: BooleanConstructor;
default: boolean;
};
}>> & Readonly<{}>, {
destroyOnNoPermission: boolean;
}, {}, {}, {}, string, vue3.ComponentProvideOptions, true, {}, any>;
//#endregion
//#region src/index.d.ts
declare const createVrxArcoApp: (options: IVrxArcoApp) => {
app: vue3.App<Element>;
router: vue_router0.Router;
pinia: pinia1.Pinia;
mount: () => Promise<vue3.ComponentPublicInstance<{}, {}, {}, {}, {}, {}, {}, {}, false, vue3.ComponentOptionsBase<any, any, any, any, any, any, any, any, any, {}, {}, string, {}, {}, {}, string, vue3.ComponentProvideOptions>, {}, {}, "", {}, any>>;
};
//#endregion
export { IVrxArcAuthentication, IVrxArcoApp, IVrxArcoCheckPermission, IVrxArcoRouter, Permission, createVrxArcoApp, usePermissionStore };