UNPKG

@gulibs/vgrove-ui

Version:

VGrove UI component library built with HeroUI and React

99 lines 3.6 kB
/** * 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<T = unknown> { success: boolean; data?: T; errors?: ValidationError[]; message?: string; } /** * 表单验证函数类型 */ export type FormValidator = (formData: FormData) => Promise<ValidationError[]> | ValidationError[]; /** * 数据处理函数类型 */ export type DataProcessor<TUser extends BaseUser = BaseUser, TReturn = unknown> = (formData: FormData, user?: TUser) => Promise<TReturn> | TReturn; /** * Action 配置选项 */ export interface ActionOptions<TUser extends BaseUser = BaseUser, TReturn = unknown> { /** 表单验证函数 */ validator?: FormValidator; /** 数据处理函数 */ processor?: DataProcessor<TUser, TReturn>; /** 成功后的重定向路径 */ successRedirect?: string; /** 失败后的重定向路径 */ errorRedirect?: string; /** 是否需要认证 */ requireAuth?: boolean; /** 需要的角色 */ requiredRoles?: string[]; /** 需要的权限 */ requiredPermissions?: string[]; /** 认证检查函数 */ authCheck?: AuthCheck<TUser>; } /** * 配置全局 action 选项 */ export declare function configureActions<TUser extends BaseUser = BaseUser>(options: Partial<ActionOptions<TUser>>): void; /** * 创建基础 action * 处理表单提交的基础逻辑 */ export declare function createAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(options: ActionOptions<TUser, TReturn>): ActionFunction; /** * 创建登录 action */ export declare function createLoginAction<TUser extends BaseUser = BaseUser, TCredentials = { username: string; password: string; }, TReturn = unknown>(loginProcessor: (credentials: TCredentials) => Promise<{ user: TUser; token: string; }>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction; /** * 创建注册 action */ export declare function createRegisterAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(registerProcessor: (userData: Record<string, unknown>) => Promise<{ user: TUser; token: string; }>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction; /** * 创建登出 action */ export declare function createLogoutAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(logoutProcessor?: () => Promise<void>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction; /** * 创建 CRUD action */ export declare function createCrudAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(operation: 'create' | 'update' | 'delete', processor: DataProcessor<TUser, TReturn>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction; /** * 创建文件上传 action */ export declare function createFileUploadAction<TUser extends BaseUser = BaseUser, TReturn = unknown>(uploadProcessor: (files: File[], formData: FormData, user?: TUser) => Promise<{ urls: string[]; }>, options?: Partial<ActionOptions<TUser, TReturn>>): ActionFunction; /** * 组合多个 action * 按顺序执行多个 action 的处理逻辑 */ export declare function combineActions(...actions: ActionFunction[]): ActionFunction; //# sourceMappingURL=actions.d.ts.map