UNPKG

kwc-redux-observable

Version:

RxJS based middleware for Redux. Compose and cancel async actions and more.

59 lines (45 loc) 1.78 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.createEpicMiddleware = createEpicMiddleware; var _Subject = require('rxjs/Subject'); var _BehaviorSubject = require('rxjs/BehaviorSubject'); var _from = require('rxjs/observable/from'); var _switchMap = require('rxjs/operator/switchMap'); var _ActionsObservable = require('./ActionsObservable'); var _EPIC_END = require('./EPIC_END'); function createEpicMiddleware(epic) { var actionsSubject = new _Subject.Subject(); var action$ = new _ActionsObservable.ActionsObservable(actionsSubject); var epic$ = new _BehaviorSubject.BehaviorSubject(epic); var store = void 0; var epicMiddleware = function epicMiddleware(_store) { store = _store; return function (next) { if (typeof epic === 'function') { _switchMap.switchMap.call(epic$, function (epic) { return epic(action$, store); }).subscribe(store.dispatch); } return function (action) { if (typeof action === 'function') { if (typeof console !== 'undefined' && typeof console.warn !== 'undefined') { console.warn('DEPRECATION: Using thunkservables with redux-observable is now deprecated in favor of the new "Epics" feature. See http://redux-observable.js.org/docs/FAQ.html#why-were-thunkservables-deprecated'); } var out$ = (0, _from.from)(action(action$, store)); return out$.subscribe(store.dispatch); } else { var result = next(action); actionsSubject.next(action); return result; } }; }; }; epicMiddleware.replaceEpic = function (epic) { store.dispatch({ type: _EPIC_END.EPIC_END }); epic$.next(epic); }; return epicMiddleware; }