redux-dynamic-middlewares
Version:
Allow add or remove redux middlewares dynamically
77 lines (62 loc) • 2.52 kB
JavaScript
exports.__esModule = true;
exports.createDynamicMiddlewares = exports.resetMiddlewares = exports.removeMiddleware = exports.addMiddleware = undefined;
var _redux = require('redux');
var createDynamicMiddlewares = function createDynamicMiddlewares() {
var allDynamicMiddlewares = [];
var allApplyedDynamicMiddlewares = [];
var store = void 0;
var enhancer = function enhancer(_store) {
store = _store;
return function (next) {
return function (action) {
return _redux.compose.apply(undefined, allApplyedDynamicMiddlewares)(next)(action);
};
};
};
var addMiddleware = function addMiddleware() {
var _allApplyedDynamicMid, _allDynamicMiddleware;
for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
middlewares[_key] = arguments[_key];
}
(_allApplyedDynamicMid = allApplyedDynamicMiddlewares).push.apply(_allApplyedDynamicMid, middlewares.map(function (middleware) {
return middleware(store);
}));
(_allDynamicMiddleware = allDynamicMiddlewares).push.apply(_allDynamicMiddleware, middlewares);
};
var removeMiddleware = function removeMiddleware(middleware) {
var index = allDynamicMiddlewares.findIndex(function (d) {
return d === middleware;
});
if (index === -1) {
// eslint-disable-next-line no-console
console.error('Middleware does not exist!', middleware);
return;
}
allDynamicMiddlewares = allDynamicMiddlewares.filter(function (_, mdwIndex) {
return mdwIndex !== index;
});
allApplyedDynamicMiddlewares = allApplyedDynamicMiddlewares.filter(function (_, mdwIndex) {
return mdwIndex !== index;
});
};
var resetMiddlewares = function resetMiddlewares() {
allApplyedDynamicMiddlewares = [];
allDynamicMiddlewares = [];
};
return {
enhancer: enhancer,
addMiddleware: addMiddleware,
removeMiddleware: removeMiddleware,
resetMiddlewares: resetMiddlewares
};
};
var dynamicMiddlewaresInstance = createDynamicMiddlewares();
exports.default = dynamicMiddlewaresInstance.enhancer;
var addMiddleware = dynamicMiddlewaresInstance.addMiddleware,
removeMiddleware = dynamicMiddlewaresInstance.removeMiddleware,
resetMiddlewares = dynamicMiddlewaresInstance.resetMiddlewares;
exports.addMiddleware = addMiddleware;
exports.removeMiddleware = removeMiddleware;
exports.resetMiddlewares = resetMiddlewares;
exports.createDynamicMiddlewares = createDynamicMiddlewares;
;