UNPKG

5.71 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6
7var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
8
9var _defineProperty3 = _interopRequireDefault(_defineProperty2);
10
11var _keys = require('babel-runtime/core-js/object/keys');
12
13var _keys2 = _interopRequireDefault(_keys);
14
15var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
16
17var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
18
19var _entries = require('babel-runtime/core-js/object/entries');
20
21var _entries2 = _interopRequireDefault(_entries);
22
23var _extends3 = require('babel-runtime/helpers/extends');
24
25var _extends4 = _interopRequireDefault(_extends3);
26
27exports.inject = inject;
28exports.attachReducers = attachReducers;
29exports.getStore = getStore;
30exports.default = createStore;
31
32var _lodash = require('lodash');
33
34var _lodash2 = _interopRequireDefault(_lodash);
35
36var _redux = require('redux');
37
38var _reactRouterRedux = require('react-router-redux');
39
40var _reduxPersist = require('redux-persist');
41
42var _clientMiddleware = require('./middleware/clientMiddleware');
43
44var _clientMiddleware2 = _interopRequireDefault(_clientMiddleware);
45
46function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
47
48(function () {
49 var enterModule = require('react-hot-loader').enterModule;
50
51 enterModule && enterModule(module);
52})();
53
54var store;
55function createReducers(asyncReducers) {
56 return (0, _extends4.default)({
57 router: _reactRouterRedux.routerReducer
58 }, asyncReducers);
59}
60function combine(reducers, persistConfig) {
61 if (persistConfig) {
62 return (0, _reduxPersist.persistCombineReducers)(persistConfig, reducers);
63 }
64 return (0, _redux.combineReducers)(reducers);
65}
66
67function inject(store, reducers, persistConfig) {
68 (0, _entries2.default)(reducers).forEach(function (_ref) {
69 var _ref2 = (0, _slicedToArray3.default)(_ref, 2),
70 name = _ref2[0],
71 reducer = _ref2[1];
72
73 if (store.asyncReducers[name]) return;
74 store.asyncReducers[name] = reducer.__esModule ? reducer.default : reducer;
75 });
76
77 store.replaceReducer(combine(createReducers(store.asyncReducers), persistConfig));
78}
79function attachReducers(reducers) {}
80function getStore() {
81 return store;
82}
83
84function getNoopReducers(reducers, data) {
85 if (!data) return {};
86 return (0, _keys2.default)(data).reduce(function (prev, next) {
87 return reducers[next] ? prev : (0, _extends4.default)({}, prev, (0, _defineProperty3.default)({}, next, function () {
88 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
89 return state;
90 }));
91 }, {});
92}
93
94function createStore(_ref3) {
95 var history = _ref3.history,
96 data = _ref3.data,
97 helpers = _ref3.helpers,
98 persistConfig = _ref3.persistConfig,
99 reducer = _ref3.reducer;
100
101 var middleware = [(0, _clientMiddleware2.default)(helpers), (0, _reactRouterRedux.routerMiddleware)(history)];
102
103 if (__CLIENT__ && __DEVELOPMENT__) {
104 var logger = require('redux-logger').createLogger({
105 collapsed: true
106 });
107 middleware.push(logger.__esModule ? logger.default : logger);
108 }
109
110 var enhancers = [_redux.applyMiddleware.apply(undefined, middleware)];
111
112 if (__CLIENT__ && __DEVTOOLS__) {
113 var _require = require('redux-devtools'),
114 persistState = _require.persistState;
115
116 var DevTools = require('../helpers/DevTools/DevTools');
117
118 Array.prototype.push.apply(enhancers, [window.devToolsExtension ? window.devToolsExtension() : DevTools.instrument(), persistState(window.location.href.match(/[?&]debug_session=([^&]+)\b/))]);
119 }
120
121 var finalCreateStore = _redux.compose.apply(undefined, enhancers)(_redux.createStore);
122 var reducers = createReducers();
123
124 var noopReducers = getNoopReducers(reducers, data);
125 var asyncReducers = (0, _extends4.default)({}, noopReducers, reducers, reducer);
126 store = finalCreateStore(combine(asyncReducers, persistConfig), data);
127 store.asyncReducers = asyncReducers;
128 store.inject = _lodash2.default.partial(inject, store, _lodash2.default, persistConfig);
129
130 if (persistConfig) {
131 var persistoid = (0, _reduxPersist.createPersistoid)(persistConfig);
132 store.subscribe(function () {
133 persistoid.update(store.getState());
134 });
135 store.dispatch({ type: _reduxPersist.REGISTER });
136 }
137
138 // if (__DEVELOPMENT__ && module.hot) {
139 // module.hot.accept('./reducer', () => {
140 // let reducer = require('./reducer');
141 // reducer = combine((reducer.__esModule ? reducer.default : reducer)(store.asyncReducers), persistConfig);
142 // store.replaceReducer(reducer);
143 // });
144 // }
145
146 return store;
147}
148;
149
150(function () {
151 var reactHotLoader = require('react-hot-loader').default;
152
153 var leaveModule = require('react-hot-loader').leaveModule;
154
155 if (!reactHotLoader) {
156 return;
157 }
158
159 reactHotLoader.register(store, 'store', '../../src/redux/create.js');
160 reactHotLoader.register(createReducers, 'createReducers', '../../src/redux/create.js');
161 reactHotLoader.register(combine, 'combine', '../../src/redux/create.js');
162 reactHotLoader.register(inject, 'inject', '../../src/redux/create.js');
163 reactHotLoader.register(attachReducers, 'attachReducers', '../../src/redux/create.js');
164 reactHotLoader.register(getStore, 'getStore', '../../src/redux/create.js');
165 reactHotLoader.register(getNoopReducers, 'getNoopReducers', '../../src/redux/create.js');
166 reactHotLoader.register(createStore, 'createStore', '../../src/redux/create.js');
167 leaveModule(module);
168})();
169
170;
171//# sourceMappingURL=create.js.map
\No newline at end of file