UNPKG

1.48 kBTypeScriptView Raw
1import type { UnknownAction } from 'redux';
2import type { ThunkMiddleware } from 'redux-thunk';
3import type { ActionCreatorInvariantMiddlewareOptions } from './actionCreatorInvariantMiddleware';
4import type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware';
5import type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware';
6import type { ExcludeFromTuple } from './tsHelpers';
7import { Tuple } from './utils';
8interface ThunkOptions<E = any> {
9 extraArgument: E;
10}
11interface GetDefaultMiddlewareOptions {
12 thunk?: boolean | ThunkOptions;
13 immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions;
14 serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions;
15 actionCreatorCheck?: boolean | ActionCreatorInvariantMiddlewareOptions;
16}
17export type ThunkMiddlewareFor<S, O extends GetDefaultMiddlewareOptions = {}> = O extends {
18 thunk: false;
19} ? never : O extends {
20 thunk: {
21 extraArgument: infer E;
22 };
23} ? ThunkMiddleware<S, UnknownAction, E> : ThunkMiddleware<S, UnknownAction>;
24export type GetDefaultMiddleware<S = any> = <O extends GetDefaultMiddlewareOptions = {
25 thunk: true;
26 immutableCheck: true;
27 serializableCheck: true;
28 actionCreatorCheck: true;
29}>(options?: O) => Tuple<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>>;
30export declare const buildGetDefaultMiddleware: <S = any>() => GetDefaultMiddleware<S>;
31export {};