UNPKG

redux-fluorine

Version:

A Redux enhancer to manage groups of actions as observables (agendas)

105 lines (73 loc) 2.77 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; exports.default = createAgendaEnhancer; var _symbolObservable = require('symbol-observable'); var _symbolObservable2 = _interopRequireDefault(_symbolObservable); var _isObservable = require('./util/isObservable'); var _isObservable2 = _interopRequireDefault(_isObservable); var _executeAgenda = require('./util/executeAgenda'); var _executeAgenda2 = _interopRequireDefault(_executeAgenda); var _wrapStateReducer = require('./util/wrapStateReducer'); var _wrapStateReducer2 = _interopRequireDefault(_wrapStateReducer); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _ref2() { return this; } function wrapStore(store) { var _extends2; function getState() { var _store$getState = store.getState(); var state = _store$getState.state; return state; } function dispatch(action) { if ((0, _isObservable2.default)(action)) { return (0, _executeAgenda2.default)(action, store); } return store.dispatch(action); } function replaceReducer(reducer) { store.replaceReducer((0, _wrapStateReducer2.default)(reducer)); } function _ref(observer) { if (typeof observer !== 'object') { throw new TypeError('Expected the observer to be an object.'); } function observeState() { observer.next && observer.next(getState()); } observeState(); var unsubscribe = store.subscribe(observeState); return { unsubscribe: unsubscribe }; } function observable() { var _ref3; return _ref3 = { subscribe: _ref }, _ref3[_symbolObservable2.default] = _ref2, _ref3; } return _extends({}, store, (_extends2 = { preAgendaStore: store, dispatch: dispatch, getState: getState, replaceReducer: replaceReducer }, _extends2[_symbolObservable2.default] = observable, _extends2)); } function _ref4(createStore) { return function (reducer, preloadedState, enhancer) { // Pass wrapped reducer to `createStore` instead var wrappedReducer = (0, _wrapStateReducer2.default)(reducer, preloadedState); var store = createStore(wrappedReducer, undefined, enhancer); if (store.preAgendaStore) { // Check whether this method was applied twice throw new Error('createAgendaEnhancer: The Redux Fluorine enhancer should only be applied once.'); } return wrapStore(store); }; } function createAgendaEnhancer() { return _ref4; }