UNPKG

5.21 kBJavaScriptView Raw
1"use strict";
2
3exports.__esModule = true;
4exports.default = createActions;
5
6var _invariant = _interopRequireDefault(require("invariant"));
7
8var _isPlainObject = _interopRequireDefault(require("./utils/isPlainObject"));
9
10var _isFunction = _interopRequireDefault(require("./utils/isFunction"));
11
12var _identity = _interopRequireDefault(require("./utils/identity"));
13
14var _isArray = _interopRequireDefault(require("./utils/isArray"));
15
16var _isString = _interopRequireDefault(require("./utils/isString"));
17
18var _isNil = _interopRequireDefault(require("./utils/isNil"));
19
20var _getLastElement = _interopRequireDefault(require("./utils/getLastElement"));
21
22var _camelCase = _interopRequireDefault(require("./utils/camelCase"));
23
24var _arrayToObject = _interopRequireDefault(require("./utils/arrayToObject"));
25
26var _flattenActionMap = _interopRequireDefault(require("./utils/flattenActionMap"));
27
28var _unflattenActionCreators = _interopRequireDefault(require("./utils/unflattenActionCreators"));
29
30var _createAction = _interopRequireDefault(require("./createAction"));
31
32var _constants = require("./constants");
33
34function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
35
36function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }
37
38function _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; }
39
40function createActions(actionMap) {
41 for (var _len = arguments.length, identityActions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
42 identityActions[_key - 1] = arguments[_key];
43 }
44
45 var options = (0, _isPlainObject.default)((0, _getLastElement.default)(identityActions)) ? identityActions.pop() : {};
46 (0, _invariant.default)(identityActions.every(_isString.default) && ((0, _isString.default)(actionMap) || (0, _isPlainObject.default)(actionMap)), 'Expected optional object followed by string action types');
47
48 if ((0, _isString.default)(actionMap)) {
49 return actionCreatorsFromIdentityActions([actionMap].concat(identityActions), options);
50 }
51
52 return _objectSpread({}, actionCreatorsFromActionMap(actionMap, options), actionCreatorsFromIdentityActions(identityActions, options));
53}
54
55function actionCreatorsFromActionMap(actionMap, options) {
56 var flatActionMap = (0, _flattenActionMap.default)(actionMap, options);
57 var flatActionCreators = actionMapToActionCreators(flatActionMap);
58 return (0, _unflattenActionCreators.default)(flatActionCreators, options);
59}
60
61function actionMapToActionCreators(actionMap, _temp) {
62 var _ref = _temp === void 0 ? {} : _temp,
63 prefix = _ref.prefix,
64 _ref$namespace = _ref.namespace,
65 namespace = _ref$namespace === void 0 ? _constants.DEFAULT_NAMESPACE : _ref$namespace;
66
67 function isValidActionMapValue(actionMapValue) {
68 if ((0, _isFunction.default)(actionMapValue) || (0, _isNil.default)(actionMapValue)) {
69 return true;
70 }
71
72 if ((0, _isArray.default)(actionMapValue)) {
73 var _actionMapValue$ = actionMapValue[0],
74 payload = _actionMapValue$ === void 0 ? _identity.default : _actionMapValue$,
75 meta = actionMapValue[1];
76 return (0, _isFunction.default)(payload) && (0, _isFunction.default)(meta);
77 }
78
79 return false;
80 }
81
82 return (0, _arrayToObject.default)(Object.keys(actionMap), function (partialActionCreators, type) {
83 var _objectSpread2;
84
85 var actionMapValue = actionMap[type];
86 (0, _invariant.default)(isValidActionMapValue(actionMapValue), 'Expected function, undefined, null, or array with payload and meta ' + ("functions for " + type));
87 var prefixedType = prefix ? "" + prefix + namespace + type : type;
88 var actionCreator = (0, _isArray.default)(actionMapValue) ? _createAction.default.apply(void 0, [prefixedType].concat(actionMapValue)) : (0, _createAction.default)(prefixedType, actionMapValue);
89 return _objectSpread({}, partialActionCreators, (_objectSpread2 = {}, _objectSpread2[type] = actionCreator, _objectSpread2));
90 });
91}
92
93function actionCreatorsFromIdentityActions(identityActions, options) {
94 var actionMap = (0, _arrayToObject.default)(identityActions, function (partialActionMap, type) {
95 var _objectSpread3;
96
97 return _objectSpread({}, partialActionMap, (_objectSpread3 = {}, _objectSpread3[type] = _identity.default, _objectSpread3));
98 });
99 var actionCreators = actionMapToActionCreators(actionMap, options);
100 return (0, _arrayToObject.default)(Object.keys(actionCreators), function (partialActionCreators, type) {
101 var _objectSpread4;
102
103 return _objectSpread({}, partialActionCreators, (_objectSpread4 = {}, _objectSpread4[(0, _camelCase.default)(type)] = actionCreators[type], _objectSpread4));
104 });
105}
\No newline at end of file