UNPKG

redux-factory

Version:

Composable, curried factory for creating Redux reducers and actions

32 lines (30 loc) 1.12 kB
var append = require('ramda/src/append') var curry = require('ramda/src/curry') var concat = require('ramda/src/concat') var cond = require('ramda/src/cond') var map = require('ramda/src/map') var T = require('ramda/src/T') var toPairs = require('ramda/src/toPairs') module.exports = curry(function(initialState, transforms, prefix) { return function(state, action) { return cond( append( [T, function() { return state || initialState }], map(function(transform) { var transformKey = transform[0] var transformVal = transform[1] var computedTransform = typeof transformVal == 'function' ? transformVal : transformVal.transform var keyType = (transformVal.prefix === false || prefix === false) ? transformKey : concat(prefix + '_', transformKey) return [ function() { return keyType == action.type }, function() { return computedTransform(state || initialState, action.payload, 2) } ] }, toPairs(transforms))) )(action) } })