UNPKG

@e-group/utils

Version:

eGroup team utils that share across projects.

31 lines (30 loc) 1.6 kB
import { ActionFunctionAny, Action } from 'redux-actions'; import { ActionsObservable, StateObservable, Epic } from 'redux-observable'; import { Observable, OperatorFunction, ObservableInput } from 'rxjs'; import { mergeMap, switchMap } from 'rxjs/operators'; export declare type ObservableAction = ActionsObservable<Action<any>>; export declare type ObservableState = StateObservable<any>; export declare type Api = (payload: any) => Promise<any>; export interface Dependencies { apiErrorsHandler?: any; apis?: any; schema?: any; } export interface HandlerArgs extends Dependencies { action$: ObservableAction; state$: ObservableState; action: Action<any>; } export interface MakeBasicFetchEpicOptions { actionType: string; apiName: string; fetchRequest: ActionFunctionAny<Action<any>>; handleSuccess: (response: any, args: HandlerArgs) => ObservableInput<any>; handleFailure: (error: any, args: HandlerArgs) => ObservableInput<any>; debounceTime?: number; observableMap?: typeof switchMap | typeof mergeMap; handleTakeUntil?: (action$: ObservableAction) => OperatorFunction<any, any>; handleBeforeFetch?: (action: Action<any>, dependencies: Dependencies) => Observable<any>; handleAfterFetch?: (action: Action<any>, dependencies: Dependencies) => Observable<any>; } export default function makeBasicFetchEpic({ actionType, apiName, fetchRequest, handleSuccess, handleFailure, debounceTime: time, observableMap: customized$Map, handleTakeUntil, handleBeforeFetch, handleAfterFetch, }: MakeBasicFetchEpicOptions): Epic<any, any, any, any>;