UNPKG

@bhupinderanand/react-redux-saga-boilerplate

Version:
47 lines (37 loc) 1.26 kB
import { applyMiddleware, compose, createStore, Middleware, Store } from 'redux'; import { persistCombineReducers, persistStore } from 'redux-persist'; import autoMergeLevel2 from 'redux-persist/lib/stateReconciler/autoMergeLevel2'; import storage from 'redux-persist/lib/storage'; import reducers from 'reducers'; import rootSaga from 'sagas'; import { RootState } from 'types'; import middleware, { sagaMiddleware } from './middleware'; const rootReducer = persistCombineReducers<RootState>( { key: 'rrsb', stateReconciler: autoMergeLevel2, storage, blacklist: ['alerts'], timeout: 0, }, reducers, ); const composeEnhancer = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose; /* istanbul ignore next */ export const configStore = (initialState: any = {}, additionalMiddleware: Middleware[] = []) => { const store: Store = createStore( rootReducer, initialState, composeEnhancer(applyMiddleware(...additionalMiddleware, ...middleware)), ); sagaMiddleware.run(rootSaga); if (module.hot) { module.hot.accept('reducers', () => { store.replaceReducer(rootReducer); }); } return { persistor: persistStore(store), store, }; };