text: /**
   * Create the store with asynchronously loaded reducers
   */
  
  import { createStore, applyMiddleware } from 'redux';
  import { fromJS } from 'immutable';
  import { composeWithDevTools } from 'redux-devtools-extension';
  import { routerMiddleware } from 'react-router-redux';
  import createSagaMiddleware from 'redux-saga';
  import createReducer from './reducers';
  
  const sagaMiddleware = createSagaMiddleware();
  
  export default function configureStore(initialState = {}, history) {
    // Create the store with two middlewares
    // 1. sagaMiddleware: Makes redux-sagas work
    // 2. routerMiddleware: Syncs the location/URL path to the state
    const middlewares = [
      sagaMiddleware,
      routerMiddleware(history),
    ];
  
    const composeEnhancers = composeWithDevTools({
      name: 'App', actionsBlacklist: ['REDUX_STORAGE_SAVE'],
    });
  
    const store = createStore(
      createReducer(),
      fromJS(initialState),
      composeEnhancers(applyMiddleware(...middlewares))
    );
  
    // Extensions
    store.runSaga = sagaMiddleware.run;
    store.asyncReducers = {}; // Async reducer registry
  
    // Make reducers hot reloadable, see http://mxs.is/googmo
    /* istanbul ignore next */
    if (module.hot) {
      module.hot.accept('./reducers', () => {
        System.import('./reducers').then((reducerModule) => {
          const createReducers = reducerModule.default;
          const nextReducers = createReducers(store.asyncReducers);
  
          store.replaceReducer(nextReducers);
        });
      });
    }
  
    return store;
  }
  