UNPKG

bdn-pocket

Version:

pocket tools for managing redux and redux-saga

99 lines (73 loc) 2.47 kB
'use strict'; exports.__esModule = true; var _isNil = require('ramda/src/isNil'); var _isNil2 = _interopRequireDefault(_isNil); var _propEq = require('ramda/src/propEq'); var _propEq2 = _interopRequireDefault(_propEq); var _find = require('ramda/src/find'); var _find2 = _interopRequireDefault(_find); var _is = require('@stamp/is'); var _is2 = _interopRequireDefault(_is); var _def_state = require('./def_state'); var _def_state2 = _interopRequireDefault(_def_state); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var UNALLOWED_KEYS = ['reducers', 'defaultState', 'merge']; var Messenger = _def_state2.default.deepConf({ Messages: [] }).statics({ merge: function merge(Messenger) { var Messages = Messenger.compose.deepConfiguration.Messages; var M = this; Messages.forEach(function (_ref) { var key = _ref.key, action = _ref.action, reducer = _ref.reducer; M = M.add({ key: key, action: action, reducer: reducer }); }); return M; }, add: function add(_ref2) { var key = _ref2.key, action = _ref2.action, reducer = _ref2.reducer; var Messages = this.compose.deepConfiguration.Messages; if ((0, _isNil2.default)(key)) { throw new Error('key must be defined'); } if (_is2.default.isString(key) === false) { throw new Error('key must be a string'); } if (UNALLOWED_KEYS.indexOf(key) >= 0) { throw new Error(UNALLOWED_KEYS.join(', ') + ' are reserved keys'); } if ((0, _find2.default)((0, _propEq2.default)('key', key), Messages)) { throw new Error(key + ' already present in messenger'); } if (!action.CONST) { throw new Error('action must have CONST prop'); } if (_is2.default.isFunction(reducer) === false) { throw new Error('reducer must be a function'); } return this.deepConf({ Messages: [{ key: key, reducer: reducer, action: action }] }); } }).init(function (o, _ref3) { var stamp = _ref3.stamp, instance = _ref3.instance; var Messages = stamp.compose.deepConfiguration.Messages; instance.reducers = {}; Messages.forEach(function (_ref4) { var key = _ref4.key, action = _ref4.action, reducer = _ref4.reducer; instance[key] = action; instance.reducers[action.CONST] = reducer.bind(instance); }); }); exports.default = Messenger;