/** * VGrove 标准化 Action 工具 * 提供基于 React Router v7+ action 模式的标准化表单处理和数据变更 * 替代原有的复杂中间件系统 */ import { type ActionFunction } from 'react-router'; import type { AuthCheck } from './loaders'; import type { BaseUser } from './types'; /** * 表单验证错误 */ export interface ValidationError { field: string; message: string; } /** * Action 响应类型 */ export interface ActionResponse { success: boolean; data?: T; errors?: ValidationError[]; message?: string; } /** * 表单验证函数类型 */ export type FormValidator = (formData: FormData) => Promise | ValidationError[]; /** * 数据处理函数类型 */ export type DataProcessor = (formData: FormData, user?: TUser) => Promise | TReturn; /** * Action 配置选项 */ export interface ActionOptions { /** 表单验证函数 */ validator?: FormValidator; /** 数据处理函数 */ processor?: DataProcessor; /** 成功后的重定向路径 */ successRedirect?: string; /** 失败后的重定向路径 */ errorRedirect?: string; /** 是否需要认证 */ requireAuth?: boolean; /** 需要的角色 */ requiredRoles?: string[]; /** 需要的权限 */ requiredPermissions?: string[]; /** 认证检查函数 */ authCheck?: AuthCheck; } /** * 配置全局 action 选项 */ export declare function configureActions(options: Partial>): void; /** * 创建基础 action * 处理表单提交的基础逻辑 */ export declare function createAction(options: ActionOptions): ActionFunction; /** * 创建登录 action */ export declare function createLoginAction(loginProcessor: (credentials: TCredentials) => Promise<{ user: TUser; token: string; }>, options?: Partial>): ActionFunction; /** * 创建注册 action */ export declare function createRegisterAction(registerProcessor: (userData: Record) => Promise<{ user: TUser; token: string; }>, options?: Partial>): ActionFunction; /** * 创建登出 action */ export declare function createLogoutAction(logoutProcessor?: () => Promise, options?: Partial>): ActionFunction; /** * 创建 CRUD action */ export declare function createCrudAction(operation: 'create' | 'update' | 'delete', processor: DataProcessor, options?: Partial>): ActionFunction; /** * 创建文件上传 action */ export declare function createFileUploadAction(uploadProcessor: (files: File[], formData: FormData, user?: TUser) => Promise<{ urls: string[]; }>, options?: Partial>): ActionFunction; /** * 组合多个 action * 按顺序执行多个 action 的处理逻辑 */ export declare function combineActions(...actions: ActionFunction[]): ActionFunction; //# sourceMappingURL=actions.d.ts.map