UNPKG

react-form-action

Version:

State management helpers for the react form actions.

39 lines (37 loc) 1.73 kB
type InitialState<T> = { type: "initial"; data: T; error: null; validationError: null; }; type InvalidState<T> = { type: "invalid"; data: null; error: null; validationError: T; }; type FailureState<T> = { type: "failure"; data: null; error: T; validationError: null; }; type SuccessState<T> = { type: "success"; data: T; error: null; validationError: null; }; type ActionState<Data, Error, ValidationError = Record<string, never>> = InitialState<Data> | InvalidState<ValidationError> | FailureState<Error> | SuccessState<Data>; type FormAction<Data, Error = Data, ValidationError = Record<string, never>, Payload = FormData, Arguments extends unknown[] = []> = (...args: [ ...Arguments, state: ActionState<Data, Error, ValidationError>, payload: Payload ]) => Promise<ActionState<Data, Error, ValidationError>>; declare function initial<Data>(data: Data): InitialState<Data>; declare function createFormAction<Data, Error = Data, ValidationError = Record<string, never>, Payload = FormData, Arguments extends [...unknown[]] = []>(formAction: (params: { success: (data: Data) => SuccessState<Data>; failure: (error: Error) => FailureState<Error>; invalid: (validationError: ValidationError) => InvalidState<ValidationError>; }, ...args: Arguments) => FormAction<Data, Error, ValidationError, Payload>): (...args: [...Arguments, state: ActionState<Data, Error, ValidationError>, payload: Payload]) => Promise<ActionState<Data, Error, ValidationError>>; export { type ActionState as A, type FormAction as F, type InitialState as I, type SuccessState as S, type InvalidState as a, type FailureState as b, createFormAction as c, initial as i };