patternplate-client
Version:
Universal javascript client application for patternplate
18 lines (14 loc) • 452 B
JavaScript
import {pick} from 'lodash';
export default function composeReducers(...args) {
const required = args.reduce((registry, arg) => {
const amend = arg.dependencies || [];
return [...registry, ...amend];
}, []);
const reducer = (state, action, dependencies) => {
return args.reduce((state, arg) => {
return arg(state, action, pick(dependencies, arg.dependencies || []));
}, state);
};
reducer.dependencies = required;
return reducer;
}