1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _defineProperty2 = require('babel-runtime/helpers/defineProperty');
|
8 |
|
9 | var _defineProperty3 = _interopRequireDefault(_defineProperty2);
|
10 |
|
11 | var _keys = require('babel-runtime/core-js/object/keys');
|
12 |
|
13 | var _keys2 = _interopRequireDefault(_keys);
|
14 |
|
15 | var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
16 |
|
17 | var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
18 |
|
19 | var _entries = require('babel-runtime/core-js/object/entries');
|
20 |
|
21 | var _entries2 = _interopRequireDefault(_entries);
|
22 |
|
23 | var _extends3 = require('babel-runtime/helpers/extends');
|
24 |
|
25 | var _extends4 = _interopRequireDefault(_extends3);
|
26 |
|
27 | exports.inject = inject;
|
28 | exports.attachReducers = attachReducers;
|
29 | exports.getStore = getStore;
|
30 | exports.default = createStore;
|
31 |
|
32 | var _lodash = require('lodash');
|
33 |
|
34 | var _lodash2 = _interopRequireDefault(_lodash);
|
35 |
|
36 | var _redux = require('redux');
|
37 |
|
38 | var _reactRouterRedux = require('react-router-redux');
|
39 |
|
40 | var _reduxPersist = require('redux-persist');
|
41 |
|
42 | var _clientMiddleware = require('./middleware/clientMiddleware');
|
43 |
|
44 | var _clientMiddleware2 = _interopRequireDefault(_clientMiddleware);
|
45 |
|
46 | function _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 |
|
54 | var store;
|
55 | function createReducers(asyncReducers) {
|
56 | return (0, _extends4.default)({
|
57 | router: _reactRouterRedux.routerReducer
|
58 | }, asyncReducers);
|
59 | }
|
60 | function combine(reducers, persistConfig) {
|
61 | if (persistConfig) {
|
62 | return (0, _reduxPersist.persistCombineReducers)(persistConfig, reducers);
|
63 | }
|
64 | return (0, _redux.combineReducers)(reducers);
|
65 | }
|
66 |
|
67 | function 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 | }
|
79 | function attachReducers(reducers) {}
|
80 | function getStore() {
|
81 | return store;
|
82 | }
|
83 |
|
84 | function 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 |
|
94 | function 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 |
|
139 |
|
140 |
|
141 |
|
142 |
|
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 |
|
\ | No newline at end of file |