UNPKG

1.13 kBPlain TextView Raw
1import type { StoreEnhancer } from 'redux'
2import type { AutoBatchOptions } from './autoBatchEnhancer'
3import { autoBatchEnhancer } from './autoBatchEnhancer'
4import { Tuple } from './utils'
5import type { Middlewares } from './configureStore'
6import type { ExtractDispatchExtensions } from './tsHelpers'
7
8type GetDefaultEnhancersOptions = {
9 autoBatch?: boolean | AutoBatchOptions
10}
11
12export type GetDefaultEnhancers<M extends Middlewares<any>> = (
13 options?: GetDefaultEnhancersOptions,
14) => Tuple<[StoreEnhancer<{ dispatch: ExtractDispatchExtensions<M> }>]>
15
16export const buildGetDefaultEnhancers = <M extends Middlewares<any>>(
17 middlewareEnhancer: StoreEnhancer<{ dispatch: ExtractDispatchExtensions<M> }>,
18): GetDefaultEnhancers<M> =>
19 function getDefaultEnhancers(options) {
20 const { autoBatch = true } = options ?? {}
21
22 let enhancerArray = new Tuple<StoreEnhancer[]>(middlewareEnhancer)
23 if (autoBatch) {
24 enhancerArray.push(
25 autoBatchEnhancer(
26 typeof autoBatch === 'object' ? autoBatch : undefined,
27 ),
28 )
29 }
30 return enhancerArray as any
31 }