| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 | 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';export class Observable {    constructor(subscribe) {        this._isScalar = false;        if (subscribe) {            this._subscribe = subscribe;        }    }    lift(operator) {        const observable = new Observable();        observable.source = this;        observable.operator = operator;        return observable;    }    subscribe(observerOrNext, error, complete) {        const { operator } = this;        const 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;    }    _trySubscribe(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);            }        }    }    forEach(next, promiseCtor) {        promiseCtor = getPromiseCtor(promiseCtor);        return new promiseCtor((resolve, reject) => {            let subscription;            subscription = this.subscribe((value) => {                try {                    next(value);                }                catch (err) {                    reject(err);                    if (subscription) {                        subscription.unsubscribe();                    }                }            }, reject, resolve);        });    }    _subscribe(subscriber) {        const { source } = this;        return source && source.subscribe(subscriber);    }    [Symbol_observable]() {        return this;    }    pipe(...operations) {        if (operations.length === 0) {            return this;        }        return pipeFromArray(operations)(this);    }    toPromise(promiseCtor) {        promiseCtor = getPromiseCtor(promiseCtor);        return new promiseCtor((resolve, reject) => {            let value;            this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value));        });    }}Observable.create = (subscribe) => {    return new Observable(subscribe);};function getPromiseCtor(promiseCtor) {    if (!promiseCtor) {        promiseCtor = config.Promise || Promise;    }    if (!promiseCtor) {        throw new Error('no Promise impl found');    }    return promiseCtor;}//# sourceMappingURL=Observable.js.map
 |