UNPKG

redux-dynamic-middlewares

Version:
77 lines (62 loc) 2.52 kB
'use strict'; 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;