UNPKG

tinper-mirrorx

Version:
62 lines (46 loc) 1.7 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.actions = undefined; exports.addActions = addActions; exports.resolveReducers = resolveReducers; var _middleware = require('./middleware'); var _defaults = require('./defaults'); var SEP = '/'; var actions = exports.actions = {}; function addActions(modelName) { var reducers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; var effects = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; if (Object.keys(reducers).length || Object.keys(effects).length) { actions[modelName] = actions[modelName] || {}; } each(reducers, function (actionName) { actions[modelName][actionName] = actionCreator(modelName, actionName); }); each(effects, function (effectName) { if (actions[modelName][effectName]) { throw new Error('Action name "' + effectName + '" has been used! Please select another name as effect name!'); } _defaults.options.addEffect('' + modelName + SEP + effectName, effects[effectName]); actions[modelName][effectName] = actionCreator(modelName, effectName); }); } function resolveReducers(modelName) { var reducers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; return Object.keys(reducers).reduce(function (acc, cur) { acc['' + modelName + SEP + cur] = reducers[cur]; return acc; }, {}); } function each(obj, callback) { Object.keys(obj).forEach(callback); } function actionCreator(modelName, actionName) { return function (data) { return (0, _middleware.dispatch)({ type: '' + modelName + SEP + actionName, data: data }); }; }