Vulcan/packages/nova-lib/lib/redux.js

36 lines
998 B
JavaScript

import { createStore, combineReducers, applyMiddleware, compose } from 'redux';
export const configureStore = (reducers, initialState = {}, middleware) => createStore(
// reducers
combineReducers(reducers),
// initial state
initialState,
// middleware
compose(
applyMiddleware(...middleware),
typeof window !== "undefined" && window.devToolsExtension ? window.devToolsExtension() : f => f
)
);
export let Actions = {};
export const addAction = addedAction => {
Actions = {...Actions, ...addedAction};
return Actions;
};
export let Reducers = {};
export const addReducer = addedReducer => {
Reducers = {...Reducers, ...addedReducer};
return Reducers;
};
export let Middleware = [];
export const addMiddleware = middlewareOrMiddlewareArray => {
const addedMiddleware = Array.isArray(middlewareOrMiddlewareArray) ? middlewareOrMiddlewareArray : [middlewareOrMiddlewareArray];
Middleware = [...Middleware, ...addedMiddleware];
return Middleware;
};