UNPKG

rxact

Version:

an observable application management for Javascript apps

81 lines (59 loc) 1.98 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _isObservable = require('../utils/isObservable'); var _isObservable2 = _interopRequireDefault(_isObservable); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var defaultFactory = function defaultFactory(source) { return source; }; var source$Creator = function source$Creator(inputSource$, Observable, getState) { if (inputSource$ === undefined) { return Observable.of(getState()); } if ((0, _isObservable2.default)(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$ || !(0, _isObservable2.default)(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; }; exports.default = eventRunnerFactory;