@eknkc/dux
Advanced tools
Comparing version 3.1.1 to 3.2.0
112
build.js
@@ -6,10 +6,9 @@ 'use strict'; | ||
}); | ||
exports.Immutable = undefined; | ||
exports.createReducer = exports.createAction = exports.Immutable = undefined; | ||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; }; | ||
exports.createAction = createAction; | ||
exports.createActions = createActions; | ||
exports.createReducer = createReducer; | ||
exports.combineReducers = combineReducers; | ||
exports.factory = factory; | ||
exports.bindAction = bindAction; | ||
@@ -29,25 +28,68 @@ exports.bindActions = bindActions; | ||
exports.Immutable = _seamlessImmutable2.default; | ||
function createAction(name) { | ||
var mapper = arguments.length <= 1 || arguments[1] === undefined ? function (x) { | ||
return x; | ||
} : arguments[1]; | ||
var metaMapper = arguments.length <= 2 || arguments[2] === undefined ? function (x) { | ||
return x; | ||
} : arguments[2]; | ||
var symbol = Symbol(name); | ||
var action = function action(payload, meta) { | ||
return { | ||
type: symbol, | ||
payload: mapper(payload), | ||
meta: metaMapper(meta) | ||
var IDENTITY = function IDENTITY(x) { | ||
return x; | ||
}; | ||
var DUX_ACTION = Symbol(); | ||
function _createAction(name) { | ||
var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
var _ref$map = _ref.map; | ||
var map = _ref$map === undefined ? IDENTITY : _ref$map; | ||
var _ref$mapMeta = _ref.mapMeta; | ||
var mapMeta = _ref$mapMeta === undefined ? IDENTITY : _ref$mapMeta; | ||
var _ref$mapState = _ref.mapState; | ||
var mapState = _ref$mapState === undefined ? IDENTITY : _ref$mapState; | ||
var action = void 0; | ||
if (typeof name === 'function') { | ||
action = function action(payload, meta) { | ||
var inner = name(payload, meta); | ||
if (typeof inner === 'function') { | ||
return function (dispatch, getState) { | ||
return inner(dispatch, function () { | ||
var root = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0]; | ||
return root ? getState() : mapState(getState()); | ||
}); | ||
}; | ||
} | ||
return inner; | ||
}; | ||
}; | ||
action.type = symbol; | ||
action[DUX_ACTION] = { | ||
thunk: true, | ||
mapState: mapState, | ||
original: name | ||
}; | ||
} else { | ||
(function () { | ||
var symbol = Symbol(name); | ||
action = function action(payload, meta) { | ||
return { | ||
type: symbol, | ||
payload: map(payload), | ||
meta: mapMeta(meta) | ||
}; | ||
}; | ||
action.type = symbol; | ||
action[DUX_ACTION] = { | ||
basic: true, | ||
type: symbol, | ||
name: name | ||
}; | ||
})(); | ||
} | ||
return action; | ||
} | ||
exports.createAction = _createAction; | ||
function createActions(options) { | ||
@@ -66,7 +108,7 @@ for (var _len = arguments.length, names = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
return names.reduce(function (actions, name) { | ||
return Object.assign(actions, _defineProperty({}, name, createAction(options.prefix + ":" + name))); | ||
return Object.assign(actions, _defineProperty({}, name, _createAction(options.prefix + ":" + name))); | ||
}, {}); | ||
} | ||
function createReducer(defState) { | ||
function _createReducer(defState) { | ||
var reducers = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
@@ -98,2 +140,3 @@ var combine = arguments[2]; | ||
exports.createReducer = _createReducer; | ||
function combineReducers(reducers) { | ||
@@ -117,2 +160,31 @@ return function () { | ||
function getter(path) { | ||
return function (obj) { | ||
for (var i = 0; i < path.length; i++) { | ||
if (typeof obj === 'undefined' || obj === null) return obj; | ||
obj = obj[path[i]]; | ||
} | ||
return obj; | ||
}; | ||
} | ||
function factory(path) { | ||
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
var mapper = getter(path); | ||
return { | ||
createAction: function createAction(name) { | ||
var opt = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
return _createAction(typeof name === 'string' ? [].concat(_toConsumableArray(path), [name]).join(':') : name, Object.assign({ mapState: mapper }, options, opt)); | ||
}, | ||
createReducer: function createReducer() { | ||
return _createReducer.apply(undefined, arguments); | ||
}, | ||
path: path, | ||
map: mapper | ||
}; | ||
} | ||
function bindAction(action, dispatch) { | ||
@@ -119,0 +191,0 @@ var meta = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; |
69
index.js
@@ -5,15 +5,46 @@ import Immutable from 'seamless-immutable' | ||
export function createAction(name, mapper = x => x, metaMapper = x => x) { | ||
var symbol = Symbol(name); | ||
const IDENTITY = x => x; | ||
const DUX_ACTION = Symbol() | ||
var action = function(payload, meta) { | ||
return { | ||
export function createAction(name, { map = IDENTITY, mapMeta = IDENTITY, mapState = IDENTITY } = {}) { | ||
let action; | ||
if (typeof name === 'function') { | ||
action = function(payload, meta) { | ||
let inner = name(payload, meta); | ||
if (typeof inner === 'function') { | ||
return function (dispatch, getState) { | ||
return inner(dispatch, (root = false) => root ? getState() : mapState(getState())) | ||
} | ||
} | ||
return inner; | ||
} | ||
action[DUX_ACTION] = { | ||
thunk: true, | ||
mapState: mapState, | ||
original: name | ||
}; | ||
} else { | ||
let symbol = Symbol(name); | ||
action = function(payload, meta) { | ||
return { | ||
type: symbol, | ||
payload: map(payload), | ||
meta: mapMeta(meta) | ||
} | ||
} | ||
action.type = symbol; | ||
action[DUX_ACTION] = { | ||
basic: true, | ||
type: symbol, | ||
payload: mapper(payload), | ||
meta: metaMapper(meta) | ||
name: name | ||
} | ||
} | ||
action.type = symbol; | ||
return action; | ||
@@ -75,2 +106,24 @@ } | ||
function getter(path) { | ||
return function(obj) { | ||
for (var i = 0; i < path.length; i++) { | ||
if (typeof obj === 'undefined' || obj === null) return obj; | ||
obj = obj[path[i]] | ||
} | ||
return obj; | ||
} | ||
} | ||
export function factory(path, options = {}) { | ||
let mapper = getter(path); | ||
return { | ||
createAction: (name, opt = {}) => createAction(typeof name === 'string' ? [...path, name].join(':') : name, Object.assign({ mapState: mapper }, options, opt)), | ||
createReducer: (...args) => createReducer(...args), | ||
path, | ||
map: mapper | ||
} | ||
} | ||
export function bindAction(action, dispatch, meta = {}) { | ||
@@ -77,0 +130,0 @@ return (payload, ameta = {}) => dispatch(action(payload, Object.assign({}, meta, ameta))); |
{ | ||
"name": "@eknkc/dux", | ||
"version": "3.1.1", | ||
"version": "3.2.0", | ||
"description": "Redux helpers", | ||
@@ -5,0 +5,0 @@ "main": "build.js", |
11561
279