import { createStore, applyMiddleware, compose } from 'redux'; import thunk from 'redux-thunk'; import invariant from 'redux-immutable-state-invariant'; import devTools from 'remote-redux-devtools'; import reducer from '../reducers'; import { START_MONITORING, STOP_MONITORING, SEND_TO_MONITOR, } from '../actions/monitoring'; export default function configureStore(initialState) { const enhancer = compose( applyMiddleware(invariant(), thunk), devTools({ realtime: false, startOn: START_MONITORING, stopOn: STOP_MONITORING, sendOn: SEND_TO_MONITOR, sendOnError: 1, maxAge: 30, }), ); const store = createStore(reducer, initialState, enhancer); if (module.hot) { // Enable Webpack hot module replacement for reducers module.hot.accept('../reducers', () => { const nextReducer = require('../reducers').default; store.replaceReducer(nextReducer); }); } return store; }