| /** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ |
| import { canReportError } from './util/canReportError'; |
| import { toSubscriber } from './util/toSubscriber'; |
| import { observable as Symbol_observable } from './symbol/observable'; |
| import { pipeFromArray } from './util/pipe'; |
| import { config } from './config'; |
| var Observable = /*@__PURE__*/ (function () { |
| function Observable(subscribe) { |
| this._isScalar = false; |
| if (subscribe) { |
| this._subscribe = subscribe; |
| } |
| } |
| Observable.prototype.lift = function (operator) { |
| var observable = new Observable(); |
| observable.source = this; |
| observable.operator = operator; |
| return observable; |
| }; |
| Observable.prototype.subscribe = function (observerOrNext, error, complete) { |
| var operator = this.operator; |
| var sink = toSubscriber(observerOrNext, error, complete); |
| if (operator) { |
| sink.add(operator.call(sink, this.source)); |
| } |
| else { |
| sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ? |
| this._subscribe(sink) : |
| this._trySubscribe(sink)); |
| } |
| if (config.useDeprecatedSynchronousErrorHandling) { |
| if (sink.syncErrorThrowable) { |
| sink.syncErrorThrowable = false; |
| if (sink.syncErrorThrown) { |
| throw sink.syncErrorValue; |
| } |
| } |
| } |
| return sink; |
| }; |
| Observable.prototype._trySubscribe = function (sink) { |
| try { |
| return this._subscribe(sink); |
| } |
| catch (err) { |
| if (config.useDeprecatedSynchronousErrorHandling) { |
| sink.syncErrorThrown = true; |
| sink.syncErrorValue = err; |
| } |
| if (canReportError(sink)) { |
| sink.error(err); |
| } |
| else { |
| console.warn(err); |
| } |
| } |
| }; |
| Observable.prototype.forEach = function (next, promiseCtor) { |
| var _this = this; |
| promiseCtor = getPromiseCtor(promiseCtor); |
| return new promiseCtor(function (resolve, reject) { |
| var subscription; |
| subscription = _this.subscribe(function (value) { |
| try { |
| next(value); |
| } |
| catch (err) { |
| reject(err); |
| if (subscription) { |
| subscription.unsubscribe(); |
| } |
| } |
| }, reject, resolve); |
| }); |
| }; |
| Observable.prototype._subscribe = function (subscriber) { |
| var source = this.source; |
| return source && source.subscribe(subscriber); |
| }; |
| Observable.prototype[Symbol_observable] = function () { |
| return this; |
| }; |
| Observable.prototype.pipe = function () { |
| var operations = []; |
| for (var _i = 0; _i < arguments.length; _i++) { |
| operations[_i] = arguments[_i]; |
| } |
| if (operations.length === 0) { |
| return this; |
| } |
| return pipeFromArray(operations)(this); |
| }; |
| Observable.prototype.toPromise = function (promiseCtor) { |
| var _this = this; |
| promiseCtor = getPromiseCtor(promiseCtor); |
| return new promiseCtor(function (resolve, reject) { |
| var value; |
| _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); }); |
| }); |
| }; |
| Observable.create = function (subscribe) { |
| return new Observable(subscribe); |
| }; |
| return Observable; |
| }()); |
| export { Observable }; |
| function getPromiseCtor(promiseCtor) { |
| if (!promiseCtor) { |
| promiseCtor = config.Promise || Promise; |
| } |
| if (!promiseCtor) { |
| throw new Error('no Promise impl found'); |
| } |
| return promiseCtor; |
| } |
| //# sourceMappingURL=Observable.js.map |