UNPKG

react-chrome-redux

Version:

A set of utilities for building Redux applications in Google Chrome Extensions.

60 lines (48 loc) 1.74 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = applyMiddleware; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } // Function taken from redux source // https://github.com/reactjs/redux/blob/master/src/compose.js function compose() { for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) { funcs[_key] = arguments[_key]; } if (funcs.length === 0) { return function (arg) { return arg; }; } if (funcs.length === 1) { return funcs[0]; } return funcs.reduce(function (a, b) { return function () { return a(b.apply(undefined, arguments)); }; }); } // Based on redux implementation of applyMiddleware to support all standard // redux middlewares function applyMiddleware(store) { for (var _len2 = arguments.length, middlewares = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { middlewares[_key2 - 1] = arguments[_key2]; } var _dispatch = function dispatch() { throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.'); }; var middlewareAPI = { getState: store.getState.bind(store), dispatch: function dispatch() { return _dispatch.apply(undefined, arguments); } }; middlewares = (middlewares || []).map(function (middleware) { return middleware(middlewareAPI); }); _dispatch = compose.apply(undefined, _toConsumableArray(middlewares))(store.dispatch); store.dispatch = _dispatch; return store; }