UNPKG

remob

Version:

Rethinking of Redux and MobX

36 lines (29 loc) 917 B
import mapValues from 'lodash/mapValues'; import isObject from 'lodash/isObject'; import Reducer from './Reducer'; export const registeredRemobs = {}; const defaultCombiner = () => { throw new Error('You forgot to combineReducers'); }; let combineReducers; export const setCombiner = combiner => { combineReducers = combiner; }; /** * combineRemob gathers reducers from simple reducers and remobs * @method * @param {Object} remobs stores */ export default remobs => { const reducers = mapValues(remobs, (Remob, remobName) => { if (isObject(Remob) && Remob instanceof Reducer) { if (registeredRemobs[remobName]) { throw new Error(`remob ${remobName} already registered, for safety reasons pls use another name`); } registeredRemobs[remobName] = Remob; return Remob.reducer; } return Remob; }); return (combineReducers || defaultCombiner)(reducers); };