UNPKG

@gulibs/vgrove-ui

Version:

VGrove UI component library built with HeroUI and React

107 lines 4.8 kB
/** * VGrove 增强的 Loader 和 Action 创建器 * 集成中间件系统的高级路由处理功能 */ import { type LoaderFunctionArgs, type ActionFunctionArgs } from 'react-router'; import { type MiddlewareFunction, type GuardFailureConfig } from './middleware'; import type { AuthCheck } from './loaders'; import type { BaseUser } from './types'; /** * 增强的 Loader 配置 */ export interface EnhancedLoaderConfig<TUser extends BaseUser = BaseUser> { /** 原始 loader 函数 */ loader?: (args: LoaderFunctionArgs) => any; /** 中间件列表 */ middlewares?: MiddlewareFunction<TUser>[]; /** 认证检查函数 */ authCheck?: AuthCheck<TUser>; /** 必需的角色 */ requiredRoles?: string[]; /** 必需的权限 */ requiredPermissions?: string[]; /** 守卫失败配置 */ guardFailureConfig?: GuardFailureConfig; /** 是否跳过全局中间件 */ skipGlobalMiddlewares?: boolean; /** 自定义错误处理 */ errorHandler?: (error: any, args: LoaderFunctionArgs) => any; /** 数据转换器 */ dataTransformer?: (data: any) => any; /** 缓存配置 */ cache?: { enabled: boolean; ttl?: number; key?: (args: LoaderFunctionArgs) => string; }; } /** * 增强的 Action 配置 */ export interface EnhancedActionConfig<TUser extends BaseUser = BaseUser> { /** 原始 action 函数 */ action?: (args: ActionFunctionArgs) => any; /** 中间件列表 */ middlewares?: MiddlewareFunction<TUser>[]; /** 认证检查函数 */ authCheck?: AuthCheck<TUser>; /** 必需的角色 */ requiredRoles?: string[]; /** 必需的权限 */ requiredPermissions?: string[]; /** 守卫失败配置 */ guardFailureConfig?: GuardFailureConfig; /** 是否跳过全局中间件 */ skipGlobalMiddlewares?: boolean; /** 自定义错误处理 */ errorHandler?: (error: any, args: ActionFunctionArgs) => any; /** 数据验证器 */ validator?: (formData: FormData) => Promise<any> | any; /** 成功重定向路径 */ successRedirect?: string | ((result: any) => string); /** 失败重定向路径 */ failureRedirect?: string | ((error: any) => string); } /** * 创建增强的 Loader */ export declare function createEnhancedLoader<TUser extends BaseUser = BaseUser>(config: EnhancedLoaderConfig<TUser>): (args: LoaderFunctionArgs) => Promise<any>; /** * 创建增强的 Action */ export declare function createEnhancedAction<TUser extends BaseUser = BaseUser>(config: EnhancedActionConfig<TUser>): (args: ActionFunctionArgs) => Promise<any>; /** * 便捷函数:创建带认证的 Loader */ export declare function createAuthenticatedLoader<TUser extends BaseUser = BaseUser>(loader: (args: LoaderFunctionArgs) => any, authCheck: AuthCheck<TUser>, options?: Partial<EnhancedLoaderConfig<TUser>>): (args: LoaderFunctionArgs) => Promise<any>; /** * 便捷函数:创建带角色检查的 Loader */ export declare function createRoleBasedLoader<TUser extends BaseUser = BaseUser>(loader: (args: LoaderFunctionArgs) => any, requiredRoles: string[], authCheck: AuthCheck<TUser>, options?: Partial<EnhancedLoaderConfig<TUser>>): (args: LoaderFunctionArgs) => Promise<any>; /** * 便捷函数:创建带权限检查的 Loader */ export declare function createPermissionBasedLoader<TUser extends BaseUser = BaseUser>(loader: (args: LoaderFunctionArgs) => any, requiredPermissions: string[], authCheck: AuthCheck<TUser>, options?: Partial<EnhancedLoaderConfig<TUser>>): (args: LoaderFunctionArgs) => Promise<any>; /** * 便捷函数:创建带认证的 Action */ export declare function createAuthenticatedAction<TUser extends BaseUser = BaseUser>(action: (args: ActionFunctionArgs) => any, authCheck: AuthCheck<TUser>, options?: Partial<EnhancedActionConfig<TUser>>): (args: ActionFunctionArgs) => Promise<any>; /** * 便捷函数:创建带角色检查的 Action */ export declare function createRoleBasedAction<TUser extends BaseUser = BaseUser>(action: (args: ActionFunctionArgs) => any, requiredRoles: string[], authCheck: AuthCheck<TUser>, options?: Partial<EnhancedActionConfig<TUser>>): (args: ActionFunctionArgs) => Promise<any>; /** * 便捷函数:创建带权限检查的 Action */ export declare function createPermissionBasedAction<TUser extends BaseUser = BaseUser>(action: (args: ActionFunctionArgs) => any, requiredPermissions: string[], authCheck: AuthCheck<TUser>, options?: Partial<EnhancedActionConfig<TUser>>): (args: ActionFunctionArgs) => Promise<any>; /** * 清除所有缓存 */ export declare function clearAllCache(): void; /** * 获取缓存统计信息 */ export declare function getCacheStats(): { size: number; }; //# sourceMappingURL=enhanced-loaders.d.ts.map