UNPKG

cycle-most-adapter

Version:
77 lines (70 loc) 1.96 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _mostSubject = require('most-subject'); function logToConsoleError(err) { var target = err.stack || err; if (console && console.error) { console.error(target); } else if (console && console.log) { console.log(target); } } var MostAdapter = { adapt: function adapt(originStream, originStreamSubscribe) { if (this.isValidStream(originStream)) { return originStream; } var stream = (0, _mostSubject.subject)(); var dispose = originStreamSubscribe(originStream, { next: function next(x) { return stream.next(x); }, error: function error(err) { return stream.error(err); }, complete: function complete(x) { stream.complete(x); if (typeof dispose === 'function') { dispose(); } } }); return stream; }, dispose: function dispose(sinks, sinkProxies, sources) { Object.keys(sinkProxies).forEach(function (k) { sinkProxies[k].observer.complete(); }); }, makeHoldSubject: function makeHoldSubject() { var stream = (0, _mostSubject.holdSubject)(); var observer = { next: function next(x) { return stream.next(x); }, error: function error(err) { logToConsoleError(err); stream.error(err); }, complete: function complete(x) { return stream.complete(x); } }; return { stream: stream, observer: observer }; }, isValidStream: function isValidStream(stream) { return typeof stream.observe === 'function' && typeof stream.drain === 'function'; }, streamSubscribe: function streamSubscribe(stream, observer) { stream.observe(function (x) { return observer.next(x); }).then(function (x) { return observer.complete(x); }).catch(function (e) { return observer.error(e); }); } }; exports.default = MostAdapter;