UNPKG

@nteract/myths

Version:

A redux-observable framework for better locality of dependencies

36 lines 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.makeConfigureStore = void 0; const redux_1 = require("redux"); const redux_observable_1 = require("redux-observable"); const operators_1 = require("rxjs/operators"); exports.makeConfigureStore = () => (definition) => { var _a, _b; const reducers = definition.packages .map(pkg => ({ [pkg.name]: pkg.rootReducer })) .reduce(Object.assign, {}); const rootReducer = redux_1.combineReducers(Object.assign((_a = definition.reducers) !== null && _a !== void 0 ? _a : {}, { __private__: redux_1.combineReducers(reducers), })); const epicMiddleware = redux_observable_1.createEpicMiddleware({ dependencies: (_b = definition.epicDependencies) !== null && _b !== void 0 ? _b : {}, }); const rootEpic = (action$, store$, dependencies) => { var _a; return redux_observable_1.combineEpics(...((_a = definition.epics) !== null && _a !== void 0 ? _a : []), ...definition.packages .map(pkg => pkg.makeRootEpic()))(action$, store$, dependencies).pipe(operators_1.catchError((error, source) => { console.error(error); return source; })); }; return ((initialState) => { var _a; const baseEnhancer = redux_1.applyMiddleware(epicMiddleware, ...((_a = definition.epicMiddleware) !== null && _a !== void 0 ? _a : [])); const store = redux_1.createStore(rootReducer, initialState, definition.enhancer ? definition.enhancer(baseEnhancer) : baseEnhancer); epicMiddleware.run(rootEpic); return store; }); }; //# sourceMappingURL=store.js.map