@eknkc/dux
Advanced tools
Comparing version 3.2.0 to 3.3.0
142
build.js
@@ -6,7 +6,12 @@ 'use strict'; | ||
}); | ||
exports.createReducer = exports.createAction = exports.Immutable = undefined; | ||
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; }; | ||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
exports.createAction = createAction; | ||
exports.createThunk = createThunk; | ||
exports.createActions = createActions; | ||
exports.createReducer = createReducer; | ||
exports.combineReducers = combineReducers; | ||
@@ -23,2 +28,4 @@ exports.factory = factory; | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } | ||
@@ -34,5 +41,4 @@ | ||
}; | ||
var DUX_ACTION = Symbol(); | ||
function _createAction(name) { | ||
function createAction(name) { | ||
var _ref = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
@@ -44,54 +50,47 @@ | ||
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; | ||
var symbol = Symbol(name); | ||
if (typeof name === 'function') { | ||
action = function action(payload, meta) { | ||
var inner = name(payload, meta); | ||
var action = function action(payload, meta) { | ||
return { | ||
type: symbol, | ||
payload: map(payload), | ||
meta: mapMeta(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()); | ||
}); | ||
}; | ||
} | ||
action.type = symbol; | ||
return inner; | ||
}; | ||
return action; | ||
} | ||
action[DUX_ACTION] = { | ||
thunk: true, | ||
mapState: mapState, | ||
original: name | ||
}; | ||
} else { | ||
(function () { | ||
var symbol = Symbol(name); | ||
function createThunk(name, func) { | ||
var _ref2 = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; | ||
action = function action(payload, meta) { | ||
return { | ||
type: symbol, | ||
payload: map(payload), | ||
meta: mapMeta(meta) | ||
}; | ||
}; | ||
var _ref2$mapState = _ref2.mapState; | ||
var mapState = _ref2$mapState === undefined ? IDENTITY : _ref2$mapState; | ||
action.type = symbol; | ||
var subAction = createAction(name); | ||
action[DUX_ACTION] = { | ||
basic: true, | ||
type: symbol, | ||
name: name | ||
var action = function action(payload, meta) { | ||
var inner = func(payload, meta); | ||
if (typeof inner === 'function') { | ||
return function (dispatch, getState) { | ||
dispatch(subAction()); | ||
return inner(dispatch, function () { | ||
var root = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0]; | ||
return root ? getState() : mapState(getState()); | ||
}); | ||
}; | ||
})(); | ||
} | ||
} | ||
return inner; | ||
}; | ||
action.type = subAction.type; | ||
return action; | ||
} | ||
exports.createAction = _createAction; | ||
function createActions(options) { | ||
@@ -110,11 +109,14 @@ 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]; | ||
var combine = arguments[2]; | ||
var filter = arguments[3]; | ||
var _ref3 = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; | ||
var combine = _ref3.combine; | ||
var filter = _ref3.filter; | ||
if (combine) combine = combineReducers(combine); | ||
@@ -142,3 +144,2 @@ | ||
exports.createReducer = _createReducer; | ||
function combineReducers(reducers) { | ||
@@ -173,18 +174,39 @@ return function () { | ||
function factory(path) { | ||
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
var Factory = function () { | ||
function Factory(path) { | ||
var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1]; | ||
var mapper = getter(path); | ||
_classCallCheck(this, Factory); | ||
return { | ||
createAction: function createAction(name) { | ||
this.path = path; | ||
this.options = options; | ||
this.map = getter(path); | ||
} | ||
_createClass(Factory, [{ | ||
key: 'action', | ||
value: function action(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 | ||
}; | ||
return createAction([].concat(_toConsumableArray(this.path), [name]).join(':'), Object.assign({}, this.options, opt)); | ||
} | ||
}, { | ||
key: 'thunk', | ||
value: function thunk(name, func) { | ||
var opt = arguments.length <= 2 || arguments[2] === undefined ? {} : arguments[2]; | ||
return createThunk([].concat(_toConsumableArray(this.path), [name]).join(':'), func, Object.assign({ mapState: this.map }, this.options, opt)); | ||
} | ||
}, { | ||
key: 'reducer', | ||
value: function reducer(defState, reducers, options) { | ||
return createReducer(defState, reducers, options); | ||
} | ||
}]); | ||
return Factory; | ||
}(); | ||
function factory(path, options) { | ||
return new Factory(path, options); | ||
} | ||
@@ -191,0 +213,0 @@ |
85
index.js
@@ -6,45 +6,37 @@ import Immutable from 'seamless-immutable' | ||
const IDENTITY = x => x; | ||
const DUX_ACTION = Symbol() | ||
export function createAction(name, { map = IDENTITY, mapMeta = IDENTITY, mapState = IDENTITY } = {}) { | ||
let action; | ||
export function createAction(name, { map = IDENTITY, mapMeta = IDENTITY } = {}) { | ||
let symbol = Symbol(name); | ||
if (typeof name === 'function') { | ||
action = function(payload, meta) { | ||
let inner = name(payload, meta); | ||
let action = function(payload, meta) { | ||
return { | ||
type: symbol, | ||
payload: map(payload), | ||
meta: mapMeta(meta) | ||
} | ||
} | ||
if (typeof inner === 'function') { | ||
return function (dispatch, getState) { | ||
return inner(dispatch, (root = false) => root ? getState() : mapState(getState())) | ||
} | ||
} | ||
action.type = symbol; | ||
return inner; | ||
} | ||
return action; | ||
} | ||
action[DUX_ACTION] = { | ||
thunk: true, | ||
mapState: mapState, | ||
original: name | ||
}; | ||
} else { | ||
let symbol = Symbol(name); | ||
export function createThunk(name, func, { mapState = IDENTITY } = {}) { | ||
let subAction = createAction(name); | ||
action = function(payload, meta) { | ||
return { | ||
type: symbol, | ||
payload: map(payload), | ||
meta: mapMeta(meta) | ||
let action = function(payload, meta) { | ||
let inner = func(payload, meta); | ||
if (typeof inner === 'function') { | ||
return function (dispatch, getState) { | ||
dispatch(subAction()); | ||
return inner(dispatch, (root = false) => root ? getState() : mapState(getState())) | ||
} | ||
} | ||
action.type = symbol; | ||
action[DUX_ACTION] = { | ||
basic: true, | ||
type: symbol, | ||
name: name | ||
} | ||
return inner; | ||
} | ||
action.type = subAction.type; | ||
return action; | ||
@@ -64,3 +56,3 @@ } | ||
export function createReducer(defState, reducers = {}, combine, filter) { | ||
export function createReducer(defState, reducers = {}, { combine, filter } = {}) { | ||
if (combine) | ||
@@ -118,13 +110,26 @@ combine = combineReducers(combine); | ||
export function factory(path, options = {}) { | ||
let mapper = getter(path); | ||
class Factory { | ||
constructor(path, options = {}) { | ||
this.path = path; | ||
this.options = options; | ||
this.map = 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 | ||
action(name, opt = {}) { | ||
return createAction([...this.path, name].join(':'), Object.assign({}, this.options, opt)) | ||
} | ||
thunk(name, func, opt = {}) { | ||
return createThunk([...this.path, name].join(':'), func, Object.assign({ mapState: this.map }, this.options, opt)) | ||
} | ||
reducer(defState, reducers, options) { | ||
return createReducer(defState, reducers, options); | ||
} | ||
} | ||
export function factory(path, options) { | ||
return new Factory(path, options) | ||
} | ||
export function bindAction(action, dispatch, meta = {}) { | ||
@@ -131,0 +136,0 @@ return (payload, ameta = {}) => dispatch(action(payload, Object.assign({}, meta, ameta))); |
{ | ||
"name": "@eknkc/dux", | ||
"version": "3.2.0", | ||
"version": "3.3.0", | ||
"description": "Redux helpers", | ||
@@ -5,0 +5,0 @@ "main": "build.js", |
12872
291