'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.withDefaultScheduler = withDefaultScheduler; exports.withScheduler = withScheduler; var _dispose = require('./disposable/dispose'); var dispose = _interopRequireWildcard(_dispose); var _defaultScheduler = require('./scheduler/defaultScheduler'); var _defaultScheduler2 = _interopRequireDefault(_defaultScheduler); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } /** @license MIT License (c) copyright 2010-2016 original author or authors */ /** @author Brian Cavalier */ /** @author John Hann */ function withDefaultScheduler(source) { return withScheduler(source, _defaultScheduler2.default); } function withScheduler(source, scheduler) { return new Promise(function (resolve, reject) { runSource(source, scheduler, resolve, reject); }); } function runSource(source, scheduler, resolve, reject) { var disposable = dispose.settable(); var observer = new Drain(resolve, reject, disposable); disposable.setDisposable(source.run(observer, scheduler)); } function Drain(end, error, disposable) { this._end = end; this._error = error; this._disposable = disposable; this.active = true; } Drain.prototype.event = function (t, x) {}; Drain.prototype.end = function (t, x) { if (!this.active) { return; } this.active = false; disposeThen(this._end, this._error, this._disposable, x); }; Drain.prototype.error = function (t, e) { this.active = false; disposeThen(this._error, this._error, this._disposable, e); }; function disposeThen(end, error, disposable, x) { Promise.resolve(disposable.dispose()).then(function () { end(x); }, error); }