UNPKG

rxact

Version:

an observable application management for Javascript apps

73 lines (53 loc) 1.7 kB
import isObservable from '../utils/isObservable'; var defaultFactory = function defaultFactory(source) { return source; }; var source$Creator = function source$Creator(inputSource$, Observable, getState) { if (inputSource$ === undefined) { return Observable.of(getState()); } if (isObservable(inputSource$)) { return inputSource$; } return Observable.of(inputSource$); }; var eventRunnerFactory = function eventRunnerFactory(Observable, getState) { var eventRunner = function eventRunner(factory, inputSource$) { var source$ = source$Creator(inputSource$, Observable, getState); if (factory === null || factory === undefined) { factory = defaultFactory; } if (typeof factory !== 'function') { throw new Error('Expected first parameter of eventRunner to be a function.'); } var outputSource$ = factory(source$); if (!outputSource$ || !isObservable(outputSource$)) { throw new Error('Expected an Observable object returned by factory in eventRunner'); } var output = void 0; var next = void 0; var subscription = void 0; var stream$ = new Observable(function (observer) { if (output !== undefined) { observer.next(output); } next = function next(value) { return observer.next(value); }; return { unsubscribe: function unsubscribe() { subscription.unsubscribe(); } }; }); subscription = outputSource$.subscribe(function (value) { if (typeof next === 'function') { next(value); } output = value; }); return stream$; }; return eventRunner; }; export default eventRunnerFactory;