UNPKG

@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
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 };