UNPKG

@wordpress/edit-post

Version:
44 lines (37 loc) 961 B
/** * External dependencies */ import { flowRight } from 'lodash'; import refx from 'refx'; /** * Internal dependencies */ import effects from './effects'; /** * Applies the custom middlewares used specifically in the editor module. * * @param {Object} store Store Object. * * @return {Object} Update Store Object. */ function applyMiddlewares( store ) { const middlewares = [ refx( effects ), ]; let enhancedDispatch = () => { throw new Error( 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.' ); }; let chain = []; const middlewareAPI = { getState: store.getState, dispatch: ( ...args ) => enhancedDispatch( ...args ), }; chain = middlewares.map( ( middleware ) => middleware( middlewareAPI ) ); enhancedDispatch = flowRight( ...chain )( store.dispatch ); store.dispatch = enhancedDispatch; return store; } export default applyMiddlewares;