All files / src/store index.js

95.24% Statements 20/21
87.5% Branches 7/8
100% Functions 2/2
94.44% Lines 17/18
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 327x 7x 7x 7x   7x 7x 1x 6x 5x   1x       13x 13x 13x       13x       26x 26x       7x  
// @flow
import merge from 'lodash/merge'
import {combineReducers} from 'redux'
import {routerReducer as routing} from 'react-router-redux'
 
let configureStore = null
if (process.env.NODE_ENV === 'production') {
  configureStore = require('./store.production')
} else if (process.env.NODE_ENV === 'test') {
  configureStore = require('./store.mock')
} else {
  configureStore = require('./store.development')
}
 
export default function createStore (reducers) {
  const configuredState = safeParse(process.env.STORE)
  const locallyStoredState = safeParse(window.localStorage ? window.localStorage.getItem('state') : {})
  const store = configureStore(
    combineReducers({routing, ...reducers}),
    merge(configuredState, locallyStoredState)
  )
  return store
}
 
function safeParse (str) {
  try {
    return JSON.parse(str) || {}
  } catch (e) {
    return {}
  }
}