UNPKG

yax

Version:

Yet another store using redux. (Inspired by vuex and dva)

45 lines (42 loc) 1.36 kB
import _extends from "@babel/runtime/helpers/extends"; import { combineReducers } from 'redux'; export function forEachValue(obj, fn) { Object.keys(obj).forEach(function (key) { return fn(obj[key], key); }); } export function isObject(obj) { return obj !== null && typeof obj === 'object'; } export function isPromise(val) { return val && typeof val.then === 'function'; } export function assert(condition, msg) { if (!condition) throw new Error("[yax] " + msg); } export function composeReducers() { for (var _len = arguments.length, reducers = new Array(_len), _key = 0; _key < _len; _key++) { reducers[_key] = arguments[_key]; } return function (state, action) { return reducers.reduce(function (p, r) { return r(p, action); }, state); }; } export function mapReducers(reducers) { var combined = combineReducers(reducers); return function (state, action) { var reducer = function reducer(p, k) { var _extends2; return _extends({}, p, (_extends2 = {}, _extends2[k] = state[k], _extends2)); }; var combinedState = Object.keys(reducers).reduce(reducer, {}); return Object.assign({}, state, combined(combinedState, action)); }; } export function getNestedState(state, path) { return path.length ? path.reduce(function (state, key) { return state[key]; }, state) : state; }