Socket
Socket
Sign inDemoInstall

dva-core

Package Overview
Dependencies
18
Maintainers
1
Versions
29
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.1.0 to 1.2.0

59

lib/checkModel.js

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,21 +6,12 @@ Object.defineProperty(exports, "__esModule", {

});
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _typeof2 = require('babel-runtime/helpers/typeof');
var _typeof3 = _interopRequireDefault(_typeof2);
exports.default = checkModel;
var _invariant = require('invariant');
var _invariant = _interopRequireDefault(require("invariant"));
var _invariant2 = _interopRequireDefault(_invariant);
var _utils = require("./utils");
var _utils = require('./utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function checkModel(model, existModels) {

@@ -30,26 +21,22 @@ var namespace = model.namespace,

effects = model.effects,
subscriptions = model.subscriptions;
subscriptions = model.subscriptions; // namespace 必须被定义
// namespace 必须被定义
(0, _invariant.default)(namespace, "[app.model] namespace should be defined"); // 并且是字符串
(0, _invariant2.default)(namespace, '[app.model] namespace should be defined');
// 并且是字符串
(0, _invariant2.default)(typeof namespace === 'string', '[app.model] namespace should be string, but got ' + (typeof namespace === 'undefined' ? 'undefined' : (0, _typeof3.default)(namespace)));
// 并且唯一
(0, _invariant2.default)(!existModels.some(function (model) {
(0, _invariant.default)(typeof namespace === 'string', "[app.model] namespace should be string, but got ".concat(_typeof(namespace))); // 并且唯一
(0, _invariant.default)(!existModels.some(function (model) {
return model.namespace === namespace;
}), '[app.model] namespace should be unique');
}), "[app.model] namespace should be unique"); // state 可以为任意值
// reducers 可以为空,PlainObject 或者数组
// state 可以为任意值
// reducers 可以为空,PlainObject 或者数组
if (reducers) {
(0, _invariant2.default)((0, _utils.isPlainObject)(reducers) || (0, _utils.isArray)(reducers), '[app.model] reducers should be plain object or array, but got ' + (typeof reducers === 'undefined' ? 'undefined' : (0, _typeof3.default)(reducers)));
// 数组的 reducers 必须是 [Object, Function] 的格式
(0, _invariant2.default)(!(0, _utils.isArray)(reducers) || (0, _utils.isPlainObject)(reducers[0]) && (0, _utils.isFunction)(reducers[1]), '[app.model] reducers with array should be [Object, Function]');
}
(0, _invariant.default)((0, _utils.isPlainObject)(reducers) || (0, _utils.isArray)(reducers), "[app.model] reducers should be plain object or array, but got ".concat(_typeof(reducers))); // 数组的 reducers 必须是 [Object, Function] 的格式
// effects 可以为空,PlainObject
(0, _invariant.default)(!(0, _utils.isArray)(reducers) || (0, _utils.isPlainObject)(reducers[0]) && (0, _utils.isFunction)(reducers[1]), "[app.model] reducers with array should be [Object, Function]");
} // effects 可以为空,PlainObject
if (effects) {
(0, _invariant2.default)((0, _utils.isPlainObject)(effects), '[app.model] effects should be plain object, but got ' + (typeof effects === 'undefined' ? 'undefined' : (0, _typeof3.default)(effects)));
(0, _invariant.default)((0, _utils.isPlainObject)(effects), "[app.model] effects should be plain object, but got ".concat(_typeof(effects)));
}

@@ -59,6 +46,5 @@

// subscriptions 可以为空,PlainObject
(0, _invariant2.default)((0, _utils.isPlainObject)(subscriptions), '[app.model] subscriptions should be plain object, but got ' + (typeof subscriptions === 'undefined' ? 'undefined' : (0, _typeof3.default)(subscriptions)));
(0, _invariant.default)((0, _utils.isPlainObject)(subscriptions), "[app.model] subscriptions should be plain object, but got ".concat(_typeof(subscriptions))); // subscription 必须为函数
// subscription 必须为函数
(0, _invariant2.default)(isAllFunction(subscriptions), '[app.model] subscription should be function');
(0, _invariant.default)(isAllFunction(subscriptions), "[app.model] subscription should be function");
}

@@ -68,6 +54,5 @@ }

function isAllFunction(obj) {
return (0, _keys2.default)(obj).every(function (key) {
return Object.keys(obj).every(function (key) {
return (0, _utils.isFunction)(obj[key]);
});
}
module.exports = exports['default'];
}

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,2 +6,4 @@ Object.defineProperty(exports, "__esModule", {

});
var NAMESPACE_SEP = exports.NAMESPACE_SEP = '/';
exports.NAMESPACE_SEP = void 0;
var NAMESPACE_SEP = '/';
exports.NAMESPACE_SEP = NAMESPACE_SEP;

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,21 +6,20 @@ Object.defineProperty(exports, "__esModule", {

});
exports.default = createPromiseMiddleware;
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
var _constants = require("./constants");
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
var _promise = require('babel-runtime/core-js/promise');
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
var _promise2 = _interopRequireDefault(_promise);
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
exports.default = createPromiseMiddleware;
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var _constants = require('./constants');
function _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; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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; }
function createPromiseMiddleware(app) {
var map = {};
var middleware = function middleware() {
return function () {
return function (next) {

@@ -31,7 +30,7 @@ return function (action) {

if (isEffect(type)) {
return new _promise2.default(function (resolve, reject) {
map[type] = {
resolve: wrapped.bind(null, type, resolve),
reject: wrapped.bind(null, type, reject)
};
return new Promise(function (resolve, reject) {
next(_objectSpread({
__dva_resolve: resolve,
__dva_reject: reject
}, action));
});

@@ -46,4 +45,6 @@ } else {

function isEffect(type) {
if (!type || typeof type !== 'string') return false;
var _type$split = type.split(_constants.NAMESPACE_SEP),
_type$split2 = (0, _slicedToArray3.default)(_type$split, 1),
_type$split2 = _slicedToArray(_type$split, 1),
namespace = _type$split2[0];

@@ -54,2 +55,3 @@

})[0];
if (model) {

@@ -63,26 +65,2 @@ if (model.effects && model.effects[type]) {

}
function wrapped(type, fn, args) {
if (map[type]) delete map[type];
fn(args);
}
function resolve(type, args) {
if (map[type]) {
map[type].resolve(args);
}
}
function reject(type, args) {
if (map[type]) {
map[type].reject(args);
}
}
return {
middleware: middleware,
resolve: resolve,
reject: reject
};
}
module.exports = exports['default'];
}

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,12 +6,27 @@ Object.defineProperty(exports, "__esModule", {

});
exports.default = _default;
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _redux = require("redux");
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _flatten = _interopRequireDefault(require("flatten"));
var _typeof2 = require('babel-runtime/helpers/typeof');
var _invariant = _interopRequireDefault(require("invariant"));
var _typeof3 = _interopRequireDefault(_typeof2);
var _window = _interopRequireDefault(require("global/window"));
exports.default = function (_ref) {
var _utils = require("./utils");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
function _default(_ref) {
var reducers = _ref.reducers,

@@ -23,10 +38,8 @@ initialState = _ref.initialState,

_ref$createOpts$setup = _ref.createOpts.setupMiddlewares,
setupMiddlewares = _ref$createOpts$setup === undefined ? _utils.returnSelf : _ref$createOpts$setup;
setupMiddlewares = _ref$createOpts$setup === void 0 ? _utils.returnSelf : _ref$createOpts$setup;
// extra enhancers
var extraEnhancers = plugin.get('extraEnhancers');
(0, _invariant2.default)((0, _utils.isArray)(extraEnhancers), '[app.start] extraEnhancers should be array, but got ' + (typeof extraEnhancers === 'undefined' ? 'undefined' : (0, _typeof3.default)(extraEnhancers)));
(0, _invariant.default)((0, _utils.isArray)(extraEnhancers), "[app.start] extraEnhancers should be array, but got ".concat(_typeof(extraEnhancers)));
var extraMiddlewares = plugin.get('onAction');
var middlewares = setupMiddlewares([sagaMiddleware, promiseMiddleware].concat((0, _toConsumableArray3.default)((0, _flatten2.default)(extraMiddlewares))));
var middlewares = setupMiddlewares([promiseMiddleware, sagaMiddleware].concat(_toConsumableArray((0, _flatten.default)(extraMiddlewares))));

@@ -38,29 +51,9 @@ var devtools = function devtools() {

};
if (process.env.NODE_ENV !== 'production' && _window2.default.__REDUX_DEVTOOLS_EXTENSION__) {
devtools = _window2.default.__REDUX_DEVTOOLS_EXTENSION__;
if (process.env.NODE_ENV !== 'production' && _window.default.__REDUX_DEVTOOLS_EXTENSION__) {
devtools = _window.default.__REDUX_DEVTOOLS_EXTENSION__;
}
var enhancers = [_redux.applyMiddleware.apply(undefined, (0, _toConsumableArray3.default)(middlewares)), devtools(_window2.default.__REDUX_DEVTOOLS_EXTENSION__OPTIONS)].concat((0, _toConsumableArray3.default)(extraEnhancers));
return (0, _redux.createStore)(reducers, initialState, _redux.compose.apply(undefined, (0, _toConsumableArray3.default)(enhancers)));
};
var _redux = require('redux');
var _flatten = require('flatten');
var _flatten2 = _interopRequireDefault(_flatten);
var _invariant = require('invariant');
var _invariant2 = _interopRequireDefault(_invariant);
var _window = require('global/window');
var _window2 = _interopRequireDefault(_window);
var _utils = require('./utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = exports['default'];
var enhancers = [_redux.applyMiddleware.apply(void 0, _toConsumableArray(middlewares))].concat(_toConsumableArray(extraEnhancers), [devtools(_window.default.__REDUX_DEVTOOLS_EXTENSION__OPTIONS)]);
return (0, _redux.createStore)(reducers, initialState, _redux.compose.apply(void 0, _toConsumableArray(enhancers)));
}

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -8,17 +8,14 @@ Object.defineProperty(exports, "__esModule", {

var _handleActions = require('./handleActions');
var _handleActions = _interopRequireDefault(require("./handleActions"));
var _handleActions2 = _interopRequireDefault(_handleActions);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getReducer(reducers, state) {
function getReducer(reducers, state, handleActions) {
// Support reducer enhancer
// e.g. reducers: [realReducers, enhancer]
if (Array.isArray(reducers)) {
return reducers[1]((0, _handleActions2.default)(reducers[0], state));
return reducers[1]((handleActions || _handleActions.default)(reducers[0], state));
} else {
return (0, _handleActions2.default)(reducers || {}, state);
return (handleActions || _handleActions.default)(reducers || {}, state);
}
}
module.exports = exports['default'];
}

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,55 +6,42 @@ Object.defineProperty(exports, "__esModule", {

});
exports.default = getSaga;
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _invariant = _interopRequireDefault(require("invariant"));
var _getIterator3 = _interopRequireDefault(_getIterator2);
var sagaEffects = _interopRequireWildcard(require("redux-saga/lib/effects"));
var _extends2 = require('babel-runtime/helpers/extends');
var _warning = _interopRequireDefault(require("warning"));
var _extends3 = _interopRequireDefault(_extends2);
var _sagaHelpers = require("redux-saga/lib/internal/sagaHelpers");
var _toConsumableArray2 = require('babel-runtime/helpers/toConsumableArray');
var _constants = require("./constants");
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
var _prefixType = _interopRequireDefault(require("./prefixType"));
var _regenerator = require('babel-runtime/regenerator');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
var _regenerator2 = _interopRequireDefault(_regenerator);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = getSaga;
function _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; }
var _invariant = require('invariant');
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; }
var _invariant2 = _interopRequireDefault(_invariant);
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
var _effects = require('redux-saga/effects');
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
var sagaEffects = _interopRequireWildcard(_effects);
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
var _warning = require('warning');
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
var _warning2 = _interopRequireDefault(_warning);
var _sagaHelpers = require('redux-saga/lib/internal/sagaHelpers');
var _constants = require('./constants');
var _prefixType = require('./prefixType');
var _prefixType2 = _interopRequireDefault(_prefixType);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function getSaga(resolve, reject, effects, model, onError, onEffect) {
return (/*#__PURE__*/_regenerator2.default.mark(function _callee3() {
var _this = this;
function getSaga(effects, model, onError, onEffect) {
return (
/*#__PURE__*/
regeneratorRuntime.mark(function _callee3() {
var key;
return _regenerator2.default.wrap(function _callee3$(_context3) {
return regeneratorRuntime.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.t0 = _regenerator2.default.keys(effects);
_context3.t0 = regeneratorRuntime.keys(effects);

@@ -74,9 +61,11 @@ case 1:

return _context3.delegateYield( /*#__PURE__*/_regenerator2.default.mark(function _callee2() {
return _context3.delegateYield(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee2() {
var watcher, task;
return _regenerator2.default.wrap(function _callee2$(_context2) {
return regeneratorRuntime.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
watcher = getWatcher(resolve, reject, key, effects[key], model, onError, onEffect);
watcher = getWatcher(key, effects[key], model, onError, onEffect);
_context2.next = 3;

@@ -88,4 +77,6 @@ return sagaEffects.fork(watcher);

_context2.next = 6;
return sagaEffects.fork( /*#__PURE__*/_regenerator2.default.mark(function _callee() {
return _regenerator2.default.wrap(function _callee$(_context) {
return sagaEffects.fork(
/*#__PURE__*/
regeneratorRuntime.mark(function _callee() {
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {

@@ -95,3 +86,3 @@ switch (_context.prev = _context.next) {

_context.next = 2;
return sagaEffects.take(model.namespace + '/@@CANCEL_EFFECTS');
return sagaEffects.take("".concat(model.namespace, "/@@CANCEL_EFFECTS"));

@@ -103,3 +94,3 @@ case 2:

case 4:
case 'end':
case "end":
return _context.stop();

@@ -112,8 +103,8 @@ }

case 6:
case 'end':
case "end":
return _context2.stop();
}
}
}, _callee2, _this);
})(), 't2', 5);
}, _callee2, this);
})(), "t2", 5);

@@ -125,3 +116,3 @@ case 5:

case 7:
case 'end':
case "end":
return _context3.stop();

@@ -135,8 +126,10 @@ }

function getWatcher(resolve, reject, key, _effect, model, onError, onEffect) {
var _marked = /*#__PURE__*/_regenerator2.default.mark(sagaWithCatch);
function getWatcher(key, _effect, model, onError, onEffect) {
var _marked =
/*#__PURE__*/
regeneratorRuntime.mark(sagaWithCatch);
var effect = _effect;
var type = 'takeEvery';
var ms = void 0;
var ms;

@@ -146,12 +139,17 @@ if (Array.isArray(_effect)) {

var opts = _effect[1];
if (opts && opts.type) {
type = opts.type;
if (type === 'throttle') {
(0, _invariant2.default)(opts.ms, 'app.start: opts.ms should be defined if type is throttle');
(0, _invariant.default)(opts.ms, 'app.start: opts.ms should be defined if type is throttle');
ms = opts.ms;
}
}
(0, _invariant2.default)(['watcher', 'takeEvery', 'takeLatest', 'throttle'].indexOf(type) > -1, 'app.start: effect type should be takeEvery, takeLatest, throttle or watcher');
(0, _invariant.default)(['watcher', 'takeEvery', 'takeLatest', 'throttle'].indexOf(type) > -1, 'app.start: effect type should be takeEvery, takeLatest, throttle or watcher');
}
function noop() {}
function sagaWithCatch() {

@@ -161,46 +159,56 @@ var _len,

_key,
_ref,
_ref$__dva_resolve,
resolve,
_ref$__dva_reject,
reject,
ret,
_args4 = arguments;
return _regenerator2.default.wrap(function sagaWithCatch$(_context4) {
return regeneratorRuntime.wrap(function sagaWithCatch$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.prev = 0;
_context4.next = 3;
return sagaEffects.put({ type: '' + key + _constants.NAMESPACE_SEP + '@@start' });
case 3:
for (_len = _args4.length, args = Array(_len), _key = 0; _key < _len; _key++) {
for (_len = _args4.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = _args4[_key];
}
_context4.next = 6;
return effect.apply(undefined, (0, _toConsumableArray3.default)(args.concat(createEffects(model))));
_ref = args.length > 0 ? args[0] : {}, _ref$__dva_resolve = _ref.__dva_resolve, resolve = _ref$__dva_resolve === void 0 ? noop : _ref$__dva_resolve, _ref$__dva_reject = _ref.__dva_reject, reject = _ref$__dva_reject === void 0 ? noop : _ref$__dva_reject;
_context4.prev = 2;
_context4.next = 5;
return sagaEffects.put({
type: "".concat(key).concat(_constants.NAMESPACE_SEP, "@@start")
});
case 6:
case 5:
_context4.next = 7;
return effect.apply(void 0, _toConsumableArray(args.concat(createEffects(model))));
case 7:
ret = _context4.sent;
_context4.next = 9;
return sagaEffects.put({ type: '' + key + _constants.NAMESPACE_SEP + '@@end' });
_context4.next = 10;
return sagaEffects.put({
type: "".concat(key).concat(_constants.NAMESPACE_SEP, "@@end")
});
case 9:
resolve(key, ret);
_context4.next = 16;
case 10:
resolve(ret);
_context4.next = 17;
break;
case 12:
_context4.prev = 12;
_context4.t0 = _context4['catch'](0);
case 13:
_context4.prev = 13;
_context4.t0 = _context4["catch"](2);
onError(_context4.t0);
onError(_context4.t0);
if (!_context4.t0._dontReject) {
reject(key, _context4.t0);
reject(_context4.t0);
}
case 16:
case 'end':
case 17:
case "end":
return _context4.stop();
}
}
}, _marked, this, [[0, 12]]);
}, _marked, this, [[2, 13]]);
}

@@ -213,5 +221,8 @@

return sagaWithCatch;
case 'takeLatest':
return (/*#__PURE__*/_regenerator2.default.mark(function _callee4() {
return _regenerator2.default.wrap(function _callee4$(_context5) {
return (
/*#__PURE__*/
regeneratorRuntime.mark(function _callee4() {
return regeneratorRuntime.wrap(function _callee4$(_context5) {
while (1) {

@@ -224,3 +235,3 @@ switch (_context5.prev = _context5.next) {

case 2:
case 'end':
case "end":
return _context5.stop();

@@ -232,5 +243,8 @@ }

);
case 'throttle':
return (/*#__PURE__*/_regenerator2.default.mark(function _callee5() {
return _regenerator2.default.wrap(function _callee5$(_context6) {
return (
/*#__PURE__*/
regeneratorRuntime.mark(function _callee5() {
return regeneratorRuntime.wrap(function _callee5$(_context6) {
while (1) {

@@ -243,3 +257,3 @@ switch (_context6.prev = _context6.next) {

case 2:
case 'end':
case "end":
return _context6.stop();

@@ -251,5 +265,8 @@ }

);
default:
return (/*#__PURE__*/_regenerator2.default.mark(function _callee6() {
return _regenerator2.default.wrap(function _callee6$(_context7) {
return (
/*#__PURE__*/
regeneratorRuntime.mark(function _callee6() {
return regeneratorRuntime.wrap(function _callee6$(_context7) {
while (1) {

@@ -262,3 +279,3 @@ switch (_context7.prev = _context7.next) {

case 2:
case 'end':
case "end":
return _context7.stop();

@@ -275,15 +292,18 @@ }

function assertAction(type, name) {
(0, _invariant2.default)(type, 'dispatch: action should be a plain Object with type');
(0, _warning2.default)(type.indexOf('' + model.namespace + _constants.NAMESPACE_SEP) !== 0, '[' + name + '] ' + type + ' should not be prefixed with namespace ' + model.namespace);
(0, _invariant.default)(type, 'dispatch: action should be a plain Object with type');
(0, _warning.default)(type.indexOf("".concat(model.namespace).concat(_constants.NAMESPACE_SEP)) !== 0, "[".concat(name, "] ").concat(type, " should not be prefixed with namespace ").concat(model.namespace));
}
function put(action) {
var type = action.type;
assertAction(type, 'sagaEffects.put');
return sagaEffects.put((0, _extends3.default)({}, action, { type: (0, _prefixType2.default)(type, model) }));
return sagaEffects.put(_objectSpread({}, action, {
type: (0, _prefixType.default)(type, model)
}));
}
function take(type) {
if (typeof type === 'string') {
assertAction(type, 'sagaEffects.take');
return sagaEffects.take((0, _prefixType2.default)(type, model));
return sagaEffects.take((0, _prefixType.default)(type, model));
} else {

@@ -293,3 +313,7 @@ return sagaEffects.take(type);

}
return (0, _extends3.default)({}, sagaEffects, { put: put, take: take });
return _objectSpread({}, sagaEffects, {
put: put,
take: take
});
}

@@ -303,5 +327,4 @@

try {
for (var _iterator = (0, _getIterator3.default)(fns), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
for (var _iterator = fns[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var fn = _step.value;
effect = fn(effect, sagaEffects, model, key);

@@ -314,3 +337,3 @@ }

try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();

@@ -326,3 +349,2 @@ }

return effect;
}
module.exports = exports['default'];
}

@@ -6,13 +6,16 @@ "use strict";

});
exports.default = void 0;
var _toConsumableArray2 = require("babel-runtime/helpers/toConsumableArray");
var _invariant = _interopRequireDefault(require("invariant"));
var _toConsumableArray3 = _interopRequireDefault(_toConsumableArray2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _keys = require("babel-runtime/core-js/object/keys");
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
var _keys2 = _interopRequireDefault(_keys);
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
function identify(value) {

@@ -24,10 +27,11 @@ return value;

var reducer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : identify;
return function (state, action) {
var type = action.type;
(0, _invariant.default)(type, 'dispatch: action should be a plain Object with type');
if (type && actionType !== type) {
return state;
if (actionType === type) {
return reducer(state, action);
}
return reducer(state, action);
return state;
};

@@ -37,3 +41,3 @@ }

function reduceReducers() {
for (var _len = arguments.length, reducers = Array(_len), _key = 0; _key < _len; _key++) {
for (var _len = arguments.length, reducers = new Array(_len), _key = 0; _key < _len; _key++) {
reducers[_key] = arguments[_key];

@@ -50,9 +54,9 @@ }

function handleActions(handlers, defaultState) {
var reducers = (0, _keys2.default)(handlers).map(function (type) {
var reducers = Object.keys(handlers).map(function (type) {
return handleAction(type, handlers[type]);
});
var reducer = reduceReducers.apply(undefined, (0, _toConsumableArray3.default)(reducers));
var reducer = reduceReducers.apply(void 0, _toConsumableArray(reducers));
return function () {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
var action = arguments[1];
var action = arguments.length > 1 ? arguments[1] : undefined;
return reducer(state, action);

@@ -62,3 +66,3 @@ };

exports.default = handleActions;
module.exports = exports["default"];
var _default = handleActions;
exports.default = _default;

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,61 +6,36 @@ Object.defineProperty(exports, "__esModule", {

});
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _getIterator3 = _interopRequireDefault(_getIterator2);
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.create = create;
var _redux = require('redux');
var _redux = require("redux");
var _middleware = require('redux-saga/lib/internal/middleware');
var _middleware = _interopRequireDefault(require("redux-saga/lib/internal/middleware"));
var _middleware2 = _interopRequireDefault(_middleware);
var _invariant = _interopRequireDefault(require("invariant"));
var _invariant = require('invariant');
var _checkModel = _interopRequireDefault(require("./checkModel"));
var _invariant2 = _interopRequireDefault(_invariant);
var _prefixNamespace = _interopRequireDefault(require("./prefixNamespace"));
var _checkModel = require('./checkModel');
var _Plugin = _interopRequireWildcard(require("./Plugin"));
var _checkModel2 = _interopRequireDefault(_checkModel);
var _createStore = _interopRequireDefault(require("./createStore"));
var _prefixNamespace = require('./prefixNamespace');
var _getSaga = _interopRequireDefault(require("./getSaga"));
var _prefixNamespace2 = _interopRequireDefault(_prefixNamespace);
var _getReducer = _interopRequireDefault(require("./getReducer"));
var _Plugin = require('./Plugin');
var _createPromiseMiddleware = _interopRequireDefault(require("./createPromiseMiddleware"));
var _Plugin2 = _interopRequireDefault(_Plugin);
var _subscription = require("./subscription");
var _createStore = require('./createStore');
var _utils = require("./utils");
var _createStore2 = _interopRequireDefault(_createStore);
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
var _getSaga = require('./getSaga');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _getSaga2 = _interopRequireDefault(_getSaga);
function _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; }
var _getReducer = require('./getReducer');
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; }
var _getReducer2 = _interopRequireDefault(_getReducer);
var _createPromiseMiddleware = require('./createPromiseMiddleware');
var _createPromiseMiddleware2 = _interopRequireDefault(_createPromiseMiddleware);
var _subscription = require('./subscription');
var _utils = require('./utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
// Internal model to update global state when do unmodel

@@ -76,3 +51,2 @@ var dvaModel = {

};
/**

@@ -84,2 +58,3 @@ * Create dva-core instance.

*/
function create() {

@@ -90,10 +65,7 @@ var hooksAndOpts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

_createOpts$setupApp = createOpts.setupApp,
setupApp = _createOpts$setupApp === undefined ? _utils.noop : _createOpts$setupApp;
var plugin = new _Plugin2.default();
setupApp = _createOpts$setupApp === void 0 ? _utils.noop : _createOpts$setupApp;
var plugin = new _Plugin.default();
plugin.use((0, _Plugin.filterHooks)(hooksAndOpts));
var app = {
_models: [(0, _prefixNamespace2.default)((0, _extends3.default)({}, dvaModel))],
_models: [(0, _prefixNamespace.default)(_objectSpread({}, dvaModel))],
_store: null,

@@ -106,3 +78,2 @@ _plugin: plugin,

return app;
/**

@@ -113,9 +84,14 @@ * Register model before app is started.

*/
function model(m) {
if (process.env.NODE_ENV !== 'production') {
(0, _checkModel2.default)(m, app._models);
(0, _checkModel.default)(m, app._models);
}
app._models.push((0, _prefixNamespace2.default)(m));
var prefixedModel = (0, _prefixNamespace.default)(_objectSpread({}, m));
app._models.push(prefixedModel);
return prefixedModel;
}
/**

@@ -129,13 +105,14 @@ * Inject model after app is started.

*/
function injectModel(createReducer, onError, unlisteners, m) {
model(m);
m = model(m);
var store = app._store;
store.asyncReducers[m.namespace] = (0, _getReducer.default)(m.reducers, m.state, plugin._handleActions);
store.replaceReducer(createReducer(store.asyncReducers));
var store = app._store;
if (m.reducers) {
store.asyncReducers[m.namespace] = (0, _getReducer2.default)(m.reducers, m.state);
store.replaceReducer(createReducer(store.asyncReducers));
}
if (m.effects) {
store.runSaga(app._getSaga(m.effects, m, onError, plugin.get('onEffect')));
}
if (m.subscriptions) {

@@ -145,3 +122,2 @@ unlisteners[m.namespace] = (0, _subscription.run)(m.subscriptions, m, app, onError);

}
/**

@@ -158,18 +134,20 @@ * Unregister model.

*/
function unmodel(createReducer, reducers, unlisteners, namespace) {
var store = app._store;
var store = app._store; // Delete reducers
// Delete reducers
delete store.asyncReducers[namespace];
delete reducers[namespace];
store.replaceReducer(createReducer());
store.dispatch({ type: '@@dva/UPDATE' });
store.dispatch({
type: '@@dva/UPDATE'
}); // Cancel effects
// Cancel effects
store.dispatch({ type: namespace + '/@@CANCEL_EFFECTS' });
store.dispatch({
type: "".concat(namespace, "/@@CANCEL_EFFECTS")
}); // Unlisten subscrioptions
// Unlisten subscrioptions
(0, _subscription.unlisten)(unlisteners, namespace);
(0, _subscription.unlisten)(unlisteners, namespace); // Delete model from app._models
// Delete model from app._models
app._models = app._models.filter(function (model) {

@@ -179,3 +157,2 @@ return model.namespace !== namespace;

}
/**

@@ -186,2 +163,4 @@ * Start the app.

*/
function start() {

@@ -192,5 +171,7 @@ // Global error handler

if (typeof err === 'string') err = new Error(err);
err.preventDefault = function () {
err._dontReject = true;
};
plugin.apply('onError', function (err) {

@@ -202,13 +183,9 @@ throw new Error(err.stack || err);

var sagaMiddleware = (0, _middleware2.default)();
var sagaMiddleware = (0, _middleware.default)();
var promiseMiddleware = (0, _createPromiseMiddleware.default)(app);
app._getSaga = _getSaga.default.bind(null);
var sagas = [];
var _createPromiseMiddlew = (0, _createPromiseMiddleware2.default)(app),
promiseMiddleware = _createPromiseMiddlew.middleware,
resolve = _createPromiseMiddlew.resolve,
reject = _createPromiseMiddlew.reject;
var reducers = _objectSpread({}, initialReducer);
app._getSaga = _getSaga2.default.bind(null, resolve, reject);
var sagas = [];
var reducers = (0, _extends3.default)({}, initialReducer);
var _iteratorNormalCompletion = true;

@@ -219,6 +196,5 @@ var _didIteratorError = false;

try {
for (var _iterator = (0, _getIterator3.default)(app._models), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
for (var _iterator = app._models[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var m = _step.value;
reducers[m.namespace] = (0, _getReducer2.default)(m.reducers, m.state);
reducers[m.namespace] = (0, _getReducer.default)(m.reducers, m.state, plugin._handleActions);
if (m.effects) sagas.push(app._getSaga(m.effects, m, onError, plugin.get('onEffect')));

@@ -231,3 +207,3 @@ }

try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();

@@ -244,8 +220,8 @@ }

var extraReducers = plugin.get('extraReducers');
(0, _invariant2.default)((0, _keys2.default)(extraReducers).every(function (key) {
(0, _invariant.default)(Object.keys(extraReducers).every(function (key) {
return !(key in reducers);
}), '[app.start] extitraReducers is conflict with other reducers, reducers list: ' + (0, _keys2.default)(reducers).join(', '));
}), "[app.start] extraReducers is conflict with other reducers, reducers list: ".concat(Object.keys(reducers).join(', '))); // Create store
// Create store
var store = app._store = (0, _createStore2.default)({ // eslint-disable-line
var store = app._store = (0, _createStore.default)({
// eslint-disable-line
reducers: createReducer(),

@@ -257,9 +233,7 @@ initialState: hooksAndOpts.initialState || {},

promiseMiddleware: promiseMiddleware
});
}); // Extend store
// Extend store
store.runSaga = sagaMiddleware.run;
store.asyncReducers = {};
store.asyncReducers = {}; // Execute listeners when state is changed
// Execute listeners when state is changed
var listeners = plugin.get('onStateChange');

@@ -273,3 +247,2 @@ var _iteratorNormalCompletion2 = true;

var listener = _step2.value;
store.subscribe(function () {

@@ -280,7 +253,6 @@ listener(store.getState());

for (var _iterator2 = (0, _getIterator3.default)(listeners), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
for (var _iterator2 = listeners[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
_loop();
}
} // Run sagas
// Run sagas
} catch (err) {

@@ -291,3 +263,3 @@ _didIteratorError2 = true;

try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();

@@ -302,8 +274,6 @@ }

sagas.forEach(sagaMiddleware.run);
sagas.forEach(sagaMiddleware.run); // Setup app
// Setup app
setupApp(app);
setupApp(app); // Run subscriptions
// Run subscriptions
var unlisteners = {};

@@ -315,3 +285,3 @@ var _iteratorNormalCompletion3 = true;

try {
for (var _iterator3 = (0, _getIterator3.default)(this._models), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
for (var _iterator3 = this._models[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var _model = _step3.value;

@@ -322,5 +292,4 @@

}
}
} // Setup app.model and app.unmodel
// Setup app.model and app.unmodel
} catch (err) {

@@ -331,3 +300,3 @@ _didIteratorError3 = true;

try {
if (!_iteratorNormalCompletion3 && _iterator3.return) {
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
_iterator3.return();

@@ -344,3 +313,2 @@ }

app.unmodel = unmodel.bind(app, createReducer, reducers, unlisteners);
/**

@@ -351,6 +319,7 @@ * Create global reducer for redux.

*/
function createReducer() {
return reducerEnhancer((0, _redux.combineReducers)((0, _extends3.default)({}, reducers, extraReducers, app._store ? app._store.asyncReducers : {})));
return reducerEnhancer((0, _redux.combineReducers)(_objectSpread({}, reducers, extraReducers, app._store ? app._store.asyncReducers : {})));
}
}
}

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,40 +6,29 @@ Object.defineProperty(exports, "__esModule", {

});
exports.filterHooks = filterHooks;
exports.default = void 0;
var _extends2 = require('babel-runtime/helpers/extends');
var _invariant = _interopRequireDefault(require("invariant"));
var _extends3 = _interopRequireDefault(_extends2);
var _utils = require("./utils");
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _getIterator3 = _interopRequireDefault(_getIterator2);
function _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; }
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
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; }
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var _createClass2 = require('babel-runtime/helpers/createClass');
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); } }
var _createClass3 = _interopRequireDefault(_createClass2);
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
var _keys = require('babel-runtime/core-js/object/keys');
var hooks = ['onError', 'onStateChange', 'onAction', 'onHmr', 'onReducer', 'onEffect', 'extraReducers', 'extraEnhancers', '_handleActions'];
var _keys2 = _interopRequireDefault(_keys);
exports.filterHooks = filterHooks;
var _invariant = require('invariant');
var _invariant2 = _interopRequireDefault(_invariant);
var _utils = require('./utils');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var hooks = ['onError', 'onStateChange', 'onAction', 'onHmr', 'onReducer', 'onEffect', 'extraReducers', 'extraEnhancers'];
function filterHooks(obj) {
return (0, _keys2.default)(obj).reduce(function (memo, key) {
return Object.keys(obj).reduce(function (memo, key) {
if (hooks.indexOf(key) > -1) {
memo[key] = obj[key];
}
return memo;

@@ -49,6 +38,9 @@ }, {});

var Plugin = function () {
var Plugin =
/*#__PURE__*/
function () {
function Plugin() {
(0, _classCallCheck3.default)(this, Plugin);
_classCallCheck(this, Plugin);
this._handleActions = null;
this.hooks = hooks.reduce(function (memo, key) {

@@ -60,11 +52,15 @@ memo[key] = [];

(0, _createClass3.default)(Plugin, [{
key: 'use',
_createClass(Plugin, [{
key: "use",
value: function use(plugin) {
(0, _invariant2.default)((0, _utils.isPlainObject)(plugin), 'plugin.use: plugin should be plain object');
(0, _invariant.default)((0, _utils.isPlainObject)(plugin), 'plugin.use: plugin should be plain object');
var hooks = this.hooks;
for (var key in plugin) {
if (Object.prototype.hasOwnProperty.call(plugin, key)) {
(0, _invariant2.default)(hooks[key], 'plugin.use: unknown plugin property: ' + key);
if (key === 'extraEnhancers') {
(0, _invariant.default)(hooks[key], "plugin.use: unknown plugin property: ".concat(key));
if (key === '_handleActions') {
this._handleActions = plugin[key];
} else if (key === 'extraEnhancers') {
hooks[key] = plugin[key];

@@ -78,9 +74,8 @@ } else {

}, {
key: 'apply',
key: "apply",
value: function apply(key, defaultHandler) {
var hooks = this.hooks;
var validApplyHooks = ['onError', 'onHmr'];
(0, _invariant2.default)(validApplyHooks.indexOf(key) > -1, 'plugin.apply: hook ' + key + ' cannot be applied');
(0, _invariant.default)(validApplyHooks.indexOf(key) > -1, "plugin.apply: hook ".concat(key, " cannot be applied"));
var fns = hooks[key];
return function () {

@@ -93,6 +88,5 @@ if (fns.length) {

try {
for (var _iterator = (0, _getIterator3.default)(fns), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
for (var _iterator = fns[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var fn = _step.value;
fn.apply(undefined, arguments);
fn.apply(void 0, arguments);
}

@@ -104,3 +98,3 @@ } catch (err) {

try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();

@@ -115,3 +109,3 @@ }

} else if (defaultHandler) {
defaultHandler.apply(undefined, arguments);
defaultHandler.apply(void 0, arguments);
}

@@ -121,6 +115,7 @@ };

}, {
key: 'get',
key: "get",
value: function get(key) {
var hooks = this.hooks;
(0, _invariant2.default)(key in hooks, 'plugin.get: hook ' + key + ' cannot be got');
(0, _invariant.default)(key in hooks, "plugin.get: hook ".concat(key, " cannot be got"));
if (key === 'extraReducers') {

@@ -135,2 +130,3 @@ return getExtraReducers(hooks[key]);

}]);
return Plugin;

@@ -141,3 +137,2 @@ }();

function getExtraReducers(hook) {

@@ -150,6 +145,5 @@ var ret = {};

try {
for (var _iterator2 = (0, _getIterator3.default)(hook), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
for (var _iterator2 = hook[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var reducerObj = _step2.value;
ret = (0, _extends3.default)({}, ret, reducerObj);
ret = _objectSpread({}, ret, reducerObj);
}

@@ -161,3 +155,3 @@ } catch (err) {

try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
_iterator2.return();

@@ -182,5 +176,4 @@ }

try {
for (var _iterator3 = (0, _getIterator3.default)(hook), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
for (var _iterator3 = hook[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
var reducerEnhancer = _step3.value;
reducer = reducerEnhancer(reducer);

@@ -193,3 +186,3 @@ }

try {
if (!_iteratorNormalCompletion3 && _iterator3.return) {
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
_iterator3.return();

@@ -196,0 +189,0 @@ }

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,34 +6,27 @@ Object.defineProperty(exports, "__esModule", {

});
var _extends2 = require('babel-runtime/helpers/extends');
var _extends3 = _interopRequireDefault(_extends2);
exports.default = prefixedDispatch;
var _invariant = require('invariant');
var _invariant = _interopRequireDefault(require("invariant"));
var _invariant2 = _interopRequireDefault(_invariant);
var _warning = _interopRequireDefault(require("warning"));
var _warning = require('warning');
var _constants = require("./constants");
var _warning2 = _interopRequireDefault(_warning);
var _prefixType = _interopRequireDefault(require("./prefixType"));
var _constants = require('./constants');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _prefixType = require('./prefixType');
function _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; }
var _prefixType2 = _interopRequireDefault(_prefixType);
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; }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function prefixedDispatch(dispatch, model) {
return function (action) {
var type = action.type;
(0, _invariant2.default)(type, 'dispatch: action should be a plain Object with type');
(0, _warning2.default)(type.indexOf('' + model.namespace + _constants.NAMESPACE_SEP) !== 0, 'dispatch: ' + type + ' should not be prefixed with namespace ' + model.namespace);
return dispatch((0, _extends3.default)({}, action, { type: (0, _prefixType2.default)(type, model) }));
(0, _invariant.default)(type, 'dispatch: action should be a plain Object with type');
(0, _warning.default)(type.indexOf("".concat(model.namespace).concat(_constants.NAMESPACE_SEP)) !== 0, "dispatch: ".concat(type, " should not be prefixed with namespace ").concat(model.namespace));
return dispatch(_objectSpread({}, action, {
type: (0, _prefixType.default)(type, model)
}));
};
}
module.exports = exports['default'];
}

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,23 +6,16 @@ Object.defineProperty(exports, "__esModule", {

});
var _keys = require('babel-runtime/core-js/object/keys');
var _keys2 = _interopRequireDefault(_keys);
exports.default = prefixNamespace;
var _warning = require('warning');
var _warning = _interopRequireDefault(require("warning"));
var _warning2 = _interopRequireDefault(_warning);
var _utils = require("./utils");
var _utils = require('./utils');
var _constants = require("./constants");
var _constants = require('./constants');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function prefix(obj, namespace, type) {
return (0, _keys2.default)(obj).reduce(function (memo, key) {
(0, _warning2.default)(key.indexOf('' + namespace + _constants.NAMESPACE_SEP) !== 0, '[prefixNamespace]: ' + type + ' ' + key + ' should not be prefixed with namespace ' + namespace);
var newKey = '' + namespace + _constants.NAMESPACE_SEP + key;
return Object.keys(obj).reduce(function (memo, key) {
(0, _warning.default)(key.indexOf("".concat(namespace).concat(_constants.NAMESPACE_SEP)) !== 0, "[prefixNamespace]: ".concat(type, " ").concat(key, " should not be prefixed with namespace ").concat(namespace));
var newKey = "".concat(namespace).concat(_constants.NAMESPACE_SEP).concat(key);
memo[newKey] = obj[key];

@@ -38,3 +31,2 @@ return memo;

if (reducers) {

@@ -47,7 +39,8 @@ if ((0, _utils.isArray)(reducers)) {

}
if (effects) {
model.effects = prefix(effects, namespace, 'effect');
}
return model;
}
module.exports = exports['default'];
}

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -8,12 +8,13 @@ Object.defineProperty(exports, "__esModule", {

var _constants = require('./constants');
var _constants = require("./constants");
function prefixType(type, model) {
var prefixedType = '' + model.namespace + _constants.NAMESPACE_SEP + type;
var prefixedType = "".concat(model.namespace).concat(_constants.NAMESPACE_SEP).concat(type);
var typeWithoutAffix = prefixedType.replace(/\/@@[^/]+?$/, '');
if (model.reducers && model.reducers[typeWithoutAffix] || model.effects && model.effects[typeWithoutAffix]) {
return prefixedType;
}
return type;
}
module.exports = exports['default'];
}

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,20 +6,11 @@ Object.defineProperty(exports, "__esModule", {

});
var _getIterator2 = require('babel-runtime/core-js/get-iterator');
var _getIterator3 = _interopRequireDefault(_getIterator2);
exports.run = run;
exports.unlisten = unlisten;
var _warning = require('warning');
var _warning = _interopRequireDefault(require("warning"));
var _warning2 = _interopRequireDefault(_warning);
var _utils = require("./utils");
var _utils = require('./utils');
var _prefixedDispatch = _interopRequireDefault(require("./prefixedDispatch"));
var _prefixedDispatch = require('./prefixedDispatch');
var _prefixedDispatch2 = _interopRequireDefault(_prefixedDispatch);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

@@ -30,2 +21,3 @@

var nonFuncs = [];
for (var key in subs) {

@@ -35,5 +27,6 @@ if (Object.prototype.hasOwnProperty.call(subs, key)) {

var unlistener = sub({
dispatch: (0, _prefixedDispatch2.default)(app._store.dispatch, model),
dispatch: (0, _prefixedDispatch.default)(app._store.dispatch, model),
history: app._history
}, onError);
if ((0, _utils.isFunction)(unlistener)) {

@@ -46,3 +39,7 @@ funcs.push(unlistener);

}
return { funcs: funcs, nonFuncs: nonFuncs };
return {
funcs: funcs,
nonFuncs: nonFuncs
};
}

@@ -52,8 +49,6 @@

if (!unlisteners[namespace]) return;
var _unlisteners$namespac = unlisteners[namespace],
funcs = _unlisteners$namespac.funcs,
nonFuncs = _unlisteners$namespac.nonFuncs;
(0, _warning2.default)(nonFuncs.length === 0, '[app.unmodel] subscription should return unlistener function, check these subscriptions ' + nonFuncs.join(', '));
(0, _warning.default)(nonFuncs.length === 0, "[app.unmodel] subscription should return unlistener function, check these subscriptions ".concat(nonFuncs.join(', ')));
var _iteratorNormalCompletion = true;

@@ -64,5 +59,4 @@ var _didIteratorError = false;

try {
for (var _iterator = (0, _getIterator3.default)(funcs), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
for (var _iterator = funcs[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var unlistener = _step.value;
unlistener();

@@ -75,3 +69,3 @@ }

try {
if (!_iteratorNormalCompletion && _iterator.return) {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();

@@ -78,0 +72,0 @@ }

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,18 +6,31 @@ Object.defineProperty(exports, "__esModule", {

});
exports.noop = exports.returnSelf = exports.isFunction = exports.isArray = exports.isPlainObject = undefined;
Object.defineProperty(exports, "isPlainObject", {
enumerable: true,
get: function get() {
return _isPlainObject2.default;
}
});
exports.noop = exports.returnSelf = exports.isFunction = exports.isArray = void 0;
var _isPlainObject2 = require('is-plain-object');
var _isPlainObject2 = _interopRequireDefault(require("is-plain-object"));
var _isPlainObject3 = _interopRequireDefault(_isPlainObject2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.isPlainObject = _isPlainObject3.default;
var isArray = exports.isArray = Array.isArray.bind(Array);
var isFunction = exports.isFunction = function isFunction(o) {
var isArray = Array.isArray.bind(Array);
exports.isArray = isArray;
var isFunction = function isFunction(o) {
return typeof o === 'function';
};
var returnSelf = exports.returnSelf = function returnSelf(m) {
exports.isFunction = isFunction;
var returnSelf = function returnSelf(m) {
return m;
};
var noop = exports.noop = function noop() {};
exports.returnSelf = returnSelf;
var noop = function noop() {};
exports.noop = noop;
{
"name": "dva-core",
"version": "1.1.0",
"version": "1.2.0",
"description": "The core lightweight library for dva, based on redux and redux-saga.",

@@ -26,10 +26,4 @@ "repository": {

},
"scripts": {
"build": "ruban build",
"test": "ruban test",
"debug": "ruban debug",
"coveralls": "ruban coveralls"
},
"dependencies": {
"babel-runtime": "^6.26.0",
"@babel/runtime": "^7.0.0-beta.34",
"flatten": "^1.0.2",

@@ -40,3 +34,3 @@ "global": "^4.3.2",

"redux": "^3.7.1",
"redux-saga": "^0.15.4",
"redux-saga": "^0.16.0",
"warning": "^3.0.0"

@@ -43,0 +37,0 @@ },

@@ -1,1 +0,1 @@

module.exports = require('redux-saga');
module.exports = require('redux-saga/lib');
import { NAMESPACE_SEP } from './constants';
export default function createPromiseMiddleware(app) {
const map = {};
const middleware = () => next => (action) => {
return () => next => action => {
const { type } = action;
if (isEffect(type)) {
return new Promise((resolve, reject) => {
map[type] = {
resolve: wrapped.bind(null, type, resolve),
reject: wrapped.bind(null, type, reject),
};
next({
__dva_resolve: resolve,
__dva_reject: reject,
...action,
});
});

@@ -21,2 +20,3 @@ } else {

function isEffect(type) {
if (!type || typeof type !== 'string') return false;
const [namespace] = type.split(NAMESPACE_SEP);

@@ -32,25 +32,2 @@ const model = app._models.filter(m => m.namespace === namespace)[0];

}
function wrapped(type, fn, args) {
if (map[type]) delete map[type];
fn(args);
}
function resolve(type, args) {
if (map[type]) {
map[type].resolve(args);
}
}
function reject(type, args) {
if (map[type]) {
map[type].reject(args);
}
}
return {
middleware,
resolve,
reject,
};
}

@@ -7,3 +7,3 @@ import { createStore, applyMiddleware, compose } from 'redux';

export default function ({
export default function({
reducers,

@@ -14,5 +14,3 @@ initialState,

promiseMiddleware,
createOpts: {
setupMiddlewares = returnSelf,
},
createOpts: { setupMiddlewares = returnSelf },
}) {

@@ -23,3 +21,3 @@ // extra enhancers

isArray(extraEnhancers),
`[app.start] extraEnhancers should be array, but got ${typeof extraEnhancers}`,
`[app.start] extraEnhancers should be array, but got ${typeof extraEnhancers}`
);

@@ -29,4 +27,4 @@

const middlewares = setupMiddlewares([
promiseMiddleware,
sagaMiddleware,
promiseMiddleware,
...flatten(extraMiddlewares),

@@ -36,3 +34,6 @@ ]);

let devtools = () => noop => noop;
if (process.env.NODE_ENV !== 'production' && window.__REDUX_DEVTOOLS_EXTENSION__) {
if (
process.env.NODE_ENV !== 'production' &&
window.__REDUX_DEVTOOLS_EXTENSION__
) {
devtools = window.__REDUX_DEVTOOLS_EXTENSION__;

@@ -43,4 +44,4 @@ }

applyMiddleware(...middlewares),
...extraEnhancers,
devtools(window.__REDUX_DEVTOOLS_EXTENSION__OPTIONS),
...extraEnhancers,
];

@@ -47,0 +48,0 @@

@@ -1,11 +0,13 @@

import handleActions from './handleActions';
import defaultHandleActions from './handleActions';
export default function getReducer(reducers, state) {
export default function getReducer(reducers, state, handleActions) {
// Support reducer enhancer
// e.g. reducers: [realReducers, enhancer]
if (Array.isArray(reducers)) {
return reducers[1](handleActions(reducers[0], state));
return reducers[1](
(handleActions || defaultHandleActions)(reducers[0], state)
);
} else {
return handleActions(reducers || {}, state);
return (handleActions || defaultHandleActions)(reducers || {}, state);
}
}
import invariant from 'invariant';
import * as sagaEffects from 'redux-saga/effects';
import * as sagaEffects from 'redux-saga/lib/effects';
import warning from 'warning';

@@ -12,9 +12,9 @@ import {

export default function getSaga(resolve, reject, effects, model, onError, onEffect) {
return function *() {
export default function getSaga(effects, model, onError, onEffect) {
return function*() {
for (const key in effects) {
if (Object.prototype.hasOwnProperty.call(effects, key)) {
const watcher = getWatcher(resolve, reject, key, effects[key], model, onError, onEffect);
const watcher = getWatcher(key, effects[key], model, onError, onEffect);
const task = yield sagaEffects.fork(watcher);
yield sagaEffects.fork(function *() {
yield sagaEffects.fork(function*() {
yield sagaEffects.take(`${model.namespace}/@@CANCEL_EFFECTS`);

@@ -28,3 +28,3 @@ yield sagaEffects.cancel(task);

function getWatcher(resolve, reject, key, _effect, model, onError, onEffect) {
function getWatcher(key, _effect, model, onError, onEffect) {
let effect = _effect;

@@ -42,3 +42,3 @@ let type = 'takeEvery';

opts.ms,
'app.start: opts.ms should be defined if type is throttle',
'app.start: opts.ms should be defined if type is throttle'
);

@@ -50,7 +50,11 @@ ms = opts.ms;

['watcher', 'takeEvery', 'takeLatest', 'throttle'].indexOf(type) > -1,
'app.start: effect type should be takeEvery, takeLatest, throttle or watcher',
'app.start: effect type should be takeEvery, takeLatest, throttle or watcher'
);
}
function *sagaWithCatch(...args) {
function noop() {}
function* sagaWithCatch(...args) {
const { __dva_resolve: resolve = noop, __dva_reject: reject = noop } =
args.length > 0 ? args[0] : {};
try {

@@ -60,7 +64,7 @@ yield sagaEffects.put({ type: `${key}${NAMESPACE_SEP}@@start` });

yield sagaEffects.put({ type: `${key}${NAMESPACE_SEP}@@end` });
resolve(key, ret);
resolve(ret);
} catch (e) {
onError(e);
if (!e._dontReject) {
reject(key, e);
reject(e);
}

@@ -95,3 +99,5 @@ }

type.indexOf(`${model.namespace}${NAMESPACE_SEP}`) !== 0,
`[${name}] ${type} should not be prefixed with namespace ${model.namespace}`,
`[${name}] ${type} should not be prefixed with namespace ${
model.namespace
}`
);

@@ -98,0 +104,0 @@ }

@@ -0,1 +1,2 @@

import invariant from 'invariant';

@@ -9,6 +10,7 @@ function identify(value) {

const { type } = action;
if (type && actionType !== type) {
return state;
invariant(type, 'dispatch: action should be a plain Object with type');
if (actionType === type) {
return reducer(state, action);
}
return reducer(state, action);
return state;
};

@@ -19,10 +21,9 @@ }

return (previous, current) =>
reducers.reduce(
(p, r) => r(p, current),
previous,
);
reducers.reduce((p, r) => r(p, current), previous);
}
function handleActions(handlers, defaultState) {
const reducers = Object.keys(handlers).map(type => handleAction(type, handlers[type]));
const reducers = Object.keys(handlers).map(type =>
handleAction(type, handlers[type])
);
const reducer = reduceReducers(...reducers);

@@ -29,0 +30,0 @@ return (state = defaultState, action) => reducer(state, action);

@@ -22,3 +22,5 @@ import { combineReducers } from 'redux';

reducers: {
UPDATE(state) { return state + 1; },
UPDATE(state) {
return state + 1;
},
},

@@ -34,6 +36,3 @@ };

export function create(hooksAndOpts = {}, createOpts = {}) {
const {
initialReducer,
setupApp = noop,
} = createOpts;
const { initialReducer, setupApp = noop } = createOpts;

@@ -44,5 +43,3 @@ const plugin = new Plugin();

const app = {
_models: [
prefixNamespace({ ...dvaModel }),
],
_models: [prefixNamespace({ ...dvaModel })],
_store: null,

@@ -65,3 +62,5 @@ _plugin: plugin,

}
app._models.push(prefixNamespace(m));
const prefixedModel = prefixNamespace({ ...m });
app._models.push(prefixedModel);
return prefixedModel;
}

@@ -78,14 +77,23 @@

function injectModel(createReducer, onError, unlisteners, m) {
model(m);
m = model(m);
const store = app._store;
if (m.reducers) {
store.asyncReducers[m.namespace] = getReducer(m.reducers, m.state);
store.replaceReducer(createReducer(store.asyncReducers));
}
store.asyncReducers[m.namespace] = getReducer(
m.reducers,
m.state,
plugin._handleActions
);
store.replaceReducer(createReducer(store.asyncReducers));
if (m.effects) {
store.runSaga(app._getSaga(m.effects, m, onError, plugin.get('onEffect')));
store.runSaga(
app._getSaga(m.effects, m, onError, plugin.get('onEffect'))
);
}
if (m.subscriptions) {
unlisteners[m.namespace] = runSubscription(m.subscriptions, m, app, onError);
unlisteners[m.namespace] = runSubscription(
m.subscriptions,
m,
app,
onError
);
}

@@ -131,3 +139,3 @@ }

// Global error handler
const onError = (err) => {
const onError = err => {
if (err) {

@@ -138,3 +146,3 @@ if (typeof err === 'string') err = new Error(err);

};
plugin.apply('onError', (err) => {
plugin.apply('onError', err => {
throw new Error(err.stack || err);

@@ -146,8 +154,4 @@ })(err, app._store.dispatch);

const sagaMiddleware = createSagaMiddleware();
const {
middleware: promiseMiddleware,
resolve,
reject,
} = createPromiseMiddleware(app);
app._getSaga = getSaga.bind(null, resolve, reject);
const promiseMiddleware = createPromiseMiddleware(app);
app._getSaga = getSaga.bind(null);

@@ -157,4 +161,9 @@ const sagas = [];

for (const m of app._models) {
reducers[m.namespace] = getReducer(m.reducers, m.state);
if (m.effects) sagas.push(app._getSaga(m.effects, m, onError, plugin.get('onEffect')));
reducers[m.namespace] = getReducer(
m.reducers,
m.state,
plugin._handleActions
);
if (m.effects)
sagas.push(app._getSaga(m.effects, m, onError, plugin.get('onEffect')));
}

@@ -165,7 +174,10 @@ const reducerEnhancer = plugin.get('onReducer');

Object.keys(extraReducers).every(key => !(key in reducers)),
`[app.start] extitraReducers is conflict with other reducers, reducers list: ${Object.keys(reducers).join(', ')}`,
`[app.start] extraReducers is conflict with other reducers, reducers list: ${Object.keys(
reducers
).join(', ')}`
);
// Create store
const store = app._store = createStore({ // eslint-disable-line
const store = (app._store = createStore({
// eslint-disable-line
reducers: createReducer(),

@@ -177,3 +189,3 @@ initialState: hooksAndOpts.initialState || {},

promiseMiddleware,
});
}));

@@ -202,3 +214,8 @@ // Extend store

if (model.subscriptions) {
unlisteners[model.namespace] = runSubscription(model.subscriptions, model, app, onError);
unlisteners[model.namespace] = runSubscription(
model.subscriptions,
model,
app,
onError
);
}

@@ -217,9 +234,11 @@ }

function createReducer() {
return reducerEnhancer(combineReducers({
...reducers,
...extraReducers,
...(app._store ? app._store.asyncReducers : {}),
}));
return reducerEnhancer(
combineReducers({
...reducers,
...extraReducers,
...(app._store ? app._store.asyncReducers : {}),
})
);
}
}
}

@@ -13,2 +13,3 @@ import invariant from 'invariant';

'extraEnhancers',
'_handleActions',
];

@@ -27,2 +28,3 @@

constructor() {
this._handleActions = null;
this.hooks = hooks.reduce((memo, key) => {

@@ -35,3 +37,6 @@ memo[key] = [];

use(plugin) {
invariant(isPlainObject(plugin), 'plugin.use: plugin should be plain object');
invariant(
isPlainObject(plugin),
'plugin.use: plugin should be plain object'
);
const hooks = this.hooks;

@@ -41,3 +46,5 @@ for (const key in plugin) {

invariant(hooks[key], `plugin.use: unknown plugin property: ${key}`);
if (key === 'extraEnhancers') {
if (key === '_handleActions') {
this._handleActions = plugin[key];
} else if (key === 'extraEnhancers') {
hooks[key] = plugin[key];

@@ -54,3 +61,6 @@ } else {

const validApplyHooks = ['onError', 'onHmr'];
invariant(validApplyHooks.indexOf(key) > -1, `plugin.apply: hook ${key} cannot be applied`);
invariant(
validApplyHooks.indexOf(key) > -1,
`plugin.apply: hook ${key} cannot be applied`
);
const fns = hooks[key];

@@ -91,3 +101,3 @@

function getOnReducer(hook) {
return function (reducer) {
return function(reducer) {
for (const reducerEnhancer of hook) {

@@ -94,0 +104,0 @@ reducer = reducerEnhancer(reducer);

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc