redux-boost
Version:
68 lines (45 loc) • 1.95 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
exports.default = configureStore;
var _redux = require('redux');
var _env = require('../utils/env');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var sagaMiddleware = void 0;
function enhanceWith() {
var middlewareArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var options = arguments[1];
var devtoolExtension = options.devtoolExtension,
reduxLogger = options.reduxLogger;
var composeEnhancers = _redux.compose;
var middlewares = middlewareArray;
if (_env.isDev) {
// eslint-disable-next-line no-underscore-dangle
var devtoolsCompose = global.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__;
if (devtoolExtension && devtoolsCompose) {
composeEnhancers = devtoolsCompose;
}
if (reduxLogger === true || reduxLogger === 'fallback' && !devtoolsCompose) {
var _require = require('redux-logger'),
createLogger = _require.createLogger;
middlewares.push(createLogger({ collapsed: true }));
}
}
var enhancers = [_redux.applyMiddleware.apply(undefined, (0, _toConsumableArray3.default)(middlewares))];
return composeEnhancers.apply(undefined, enhancers)(_redux.createStore);
}
function configureStore(options) {
var _options$initialState = options.initialState,
initialState = _options$initialState === undefined ? {} : _options$initialState,
middlewares = options.middlewares,
getReducer = options.getReducer;
var createStoreWithMiddleware = enhanceWith(middlewares, options);
var store = createStoreWithMiddleware(getReducer(), initialState);
if (middlewares.saga) {
store.runSaga = sagaMiddleware.run;
}
return store;
}
;