@wordpress/edit-post
Version:
Edit Post module for WordPress.
44 lines (37 loc) • 961 B
JavaScript
/**
* 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;