|
@@ -1,15 +1,16 @@
|
|
|
-import {cowValueModel} from './cow-value-model';
|
|
|
+import {decow, deget} from './cow-value-model';
|
|
|
|
|
|
export const subReducer = (key, reducer, ...otherKeys) => {
|
|
|
- const value = cowValueModel(key),
|
|
|
- otherParts = otherKeys.map(each => cowValueModel(each));
|
|
|
+ const selector = deget(key),
|
|
|
+ modifier = decow(key),
|
|
|
+ otherParts = otherKeys.map(deget);
|
|
|
|
|
|
return (state, action) => {
|
|
|
- let newSubState = reducer(value(state), action, ...otherParts.map(value => value(state)));
|
|
|
+ let newSubState = reducer(selector(state), action, ...otherParts.map(eachSelector => eachSelector(state)));
|
|
|
if (typeof newSubState === "undefined") {
|
|
|
throw new Error(`The '${key}' reducer must not return undefined.`);
|
|
|
}
|
|
|
- return value(state, newSubState);
|
|
|
+ return modifier(newSubState)(state);
|
|
|
};
|
|
|
};
|
|
|
|
|
@@ -17,10 +18,10 @@ export const composeReducers = (...reducers) => (state, action) =>
|
|
|
reducers.reduce((x, r) => r(x, action), state);
|
|
|
|
|
|
export const subMiddleware = (keyOrSelectorFn, middleware) => {
|
|
|
- const cow = typeof keyOrSelectorFn === "function" ? keyOrSelectorFn : cowValueModel(keyOrSelectorFn);
|
|
|
+ const selector = typeof keyOrSelectorFn === "function" ? keyOrSelectorFn : deget(keyOrSelectorFn);
|
|
|
return (store, ...rest) => {
|
|
|
const {getState} = store;
|
|
|
- return middleware({...store, getState: () => cow(getState())}, ...rest);
|
|
|
+ return middleware({...store, getState: () => selector(getState())}, ...rest);
|
|
|
};
|
|
|
};
|
|
|
|