UNPKG

yax

Version:

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

66 lines (52 loc) 1.73 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.forEachValue = forEachValue; exports.isObject = isObject; exports.isPromise = isPromise; exports.assert = assert; exports.composeReducers = composeReducers; exports.mapReducers = mapReducers; exports.getNestedState = getNestedState; var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _redux = require("redux"); function forEachValue(obj, fn) { Object.keys(obj).forEach(function (key) { return fn(obj[key], key); }); } function isObject(obj) { return obj !== null && typeof obj === 'object'; } function isPromise(val) { return val && typeof val.then === 'function'; } function assert(condition, msg) { if (!condition) throw new Error("[yax] " + msg); } 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); }; } function mapReducers(reducers) { var combined = (0, _redux.combineReducers)(reducers); return function (state, action) { var reducer = function reducer(p, k) { var _extends2; return (0, _extends3["default"])({}, p, (_extends2 = {}, _extends2[k] = state[k], _extends2)); }; var combinedState = Object.keys(reducers).reduce(reducer, {}); return Object.assign({}, state, combined(combinedState, action)); }; } function getNestedState(state, path) { return path.length ? path.reduce(function (state, key) { return state[key]; }, state) : state; }