typedux
Version:
Slightly adjusted Redux (awesome by default) for TS
40 lines • 1.73 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.configureMockStoreFactory = void 0;
const redux_1 = require("redux");
const ObservableStore_1 = require("../../store/ObservableStore");
const util_1 = require("../../util");
const Noop = (() => { });
/**
* Create a new factory with the provided middlewares
* to generate stores
*
* @param middlewares to install in the mock store
* @returns {MockStoreFactory}
*/
function mockStoreFactory(middlewares = [], stateArgs = [], actionFactories = []) {
return function (fromState, storeReducer = null, onStateChange = Noop, storeMixins = null) {
// First calculate the store state if a function was provided
let storeState = (util_1.isFunction(fromState)) ? fromState() : fromState;
function makeStore() {
const store = new ObservableStore_1.ObservableStore(ObservableStore_1.ObservableStore.makeSimpleReducers(...stateArgs), null, null, storeState);
if (storeMixins)
Object.assign(store, storeMixins);
actionFactories.forEach(factory => factory.setStore(store));
store.subscribe(onStateChange);
return store;
}
if (middlewares.length) {
const addMiddleware = redux_1.applyMiddleware(...middlewares)(makeStore);
return addMiddleware(storeReducer, fromState);
}
else {
return makeStore();
}
};
}
function configureMockStoreFactory(middlewares = [], stateArgs = [], actionFactories = []) {
return mockStoreFactory(middlewares, stateArgs, actionFactories);
}
exports.configureMockStoreFactory = configureMockStoreFactory;
//# sourceMappingURL=MockStore.js.map
;