@gulibs/vgrove-ui
Version:
VGrove UI component library built with HeroUI and React
107 lines • 4.8 kB
TypeScript
/**
* 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