You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							233 lines
						
					
					
						
							8.4 KiB
						
					
					
				
			
		
		
	
	
							233 lines
						
					
					
						
							8.4 KiB
						
					
					
				/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ | 
						|
import * as tslib_1 from "tslib"; | 
						|
import { isFunction } from './util/isFunction'; | 
						|
import { empty as emptyObserver } from './Observer'; | 
						|
import { Subscription } from './Subscription'; | 
						|
import { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber'; | 
						|
import { config } from './config'; | 
						|
import { hostReportError } from './util/hostReportError'; | 
						|
var Subscriber = /*@__PURE__*/ (function (_super) { | 
						|
    tslib_1.__extends(Subscriber, _super); | 
						|
    function Subscriber(destinationOrNext, error, complete) { | 
						|
        var _this = _super.call(this) || this; | 
						|
        _this.syncErrorValue = null; | 
						|
        _this.syncErrorThrown = false; | 
						|
        _this.syncErrorThrowable = false; | 
						|
        _this.isStopped = false; | 
						|
        switch (arguments.length) { | 
						|
            case 0: | 
						|
                _this.destination = emptyObserver; | 
						|
                break; | 
						|
            case 1: | 
						|
                if (!destinationOrNext) { | 
						|
                    _this.destination = emptyObserver; | 
						|
                    break; | 
						|
                } | 
						|
                if (typeof destinationOrNext === 'object') { | 
						|
                    if (destinationOrNext instanceof Subscriber) { | 
						|
                        _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable; | 
						|
                        _this.destination = destinationOrNext; | 
						|
                        destinationOrNext.add(_this); | 
						|
                    } | 
						|
                    else { | 
						|
                        _this.syncErrorThrowable = true; | 
						|
                        _this.destination = new SafeSubscriber(_this, destinationOrNext); | 
						|
                    } | 
						|
                    break; | 
						|
                } | 
						|
            default: | 
						|
                _this.syncErrorThrowable = true; | 
						|
                _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete); | 
						|
                break; | 
						|
        } | 
						|
        return _this; | 
						|
    } | 
						|
    Subscriber.prototype[rxSubscriberSymbol] = function () { return this; }; | 
						|
    Subscriber.create = function (next, error, complete) { | 
						|
        var subscriber = new Subscriber(next, error, complete); | 
						|
        subscriber.syncErrorThrowable = false; | 
						|
        return subscriber; | 
						|
    }; | 
						|
    Subscriber.prototype.next = function (value) { | 
						|
        if (!this.isStopped) { | 
						|
            this._next(value); | 
						|
        } | 
						|
    }; | 
						|
    Subscriber.prototype.error = function (err) { | 
						|
        if (!this.isStopped) { | 
						|
            this.isStopped = true; | 
						|
            this._error(err); | 
						|
        } | 
						|
    }; | 
						|
    Subscriber.prototype.complete = function () { | 
						|
        if (!this.isStopped) { | 
						|
            this.isStopped = true; | 
						|
            this._complete(); | 
						|
        } | 
						|
    }; | 
						|
    Subscriber.prototype.unsubscribe = function () { | 
						|
        if (this.closed) { | 
						|
            return; | 
						|
        } | 
						|
        this.isStopped = true; | 
						|
        _super.prototype.unsubscribe.call(this); | 
						|
    }; | 
						|
    Subscriber.prototype._next = function (value) { | 
						|
        this.destination.next(value); | 
						|
    }; | 
						|
    Subscriber.prototype._error = function (err) { | 
						|
        this.destination.error(err); | 
						|
        this.unsubscribe(); | 
						|
    }; | 
						|
    Subscriber.prototype._complete = function () { | 
						|
        this.destination.complete(); | 
						|
        this.unsubscribe(); | 
						|
    }; | 
						|
    Subscriber.prototype._unsubscribeAndRecycle = function () { | 
						|
        var _parentOrParents = this._parentOrParents; | 
						|
        this._parentOrParents = null; | 
						|
        this.unsubscribe(); | 
						|
        this.closed = false; | 
						|
        this.isStopped = false; | 
						|
        this._parentOrParents = _parentOrParents; | 
						|
        return this; | 
						|
    }; | 
						|
    return Subscriber; | 
						|
}(Subscription)); | 
						|
export { Subscriber }; | 
						|
var SafeSubscriber = /*@__PURE__*/ (function (_super) { | 
						|
    tslib_1.__extends(SafeSubscriber, _super); | 
						|
    function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) { | 
						|
        var _this = _super.call(this) || this; | 
						|
        _this._parentSubscriber = _parentSubscriber; | 
						|
        var next; | 
						|
        var context = _this; | 
						|
        if (isFunction(observerOrNext)) { | 
						|
            next = observerOrNext; | 
						|
        } | 
						|
        else if (observerOrNext) { | 
						|
            next = observerOrNext.next; | 
						|
            error = observerOrNext.error; | 
						|
            complete = observerOrNext.complete; | 
						|
            if (observerOrNext !== emptyObserver) { | 
						|
                context = Object.create(observerOrNext); | 
						|
                if (isFunction(context.unsubscribe)) { | 
						|
                    _this.add(context.unsubscribe.bind(context)); | 
						|
                } | 
						|
                context.unsubscribe = _this.unsubscribe.bind(_this); | 
						|
            } | 
						|
        } | 
						|
        _this._context = context; | 
						|
        _this._next = next; | 
						|
        _this._error = error; | 
						|
        _this._complete = complete; | 
						|
        return _this; | 
						|
    } | 
						|
    SafeSubscriber.prototype.next = function (value) { | 
						|
        if (!this.isStopped && this._next) { | 
						|
            var _parentSubscriber = this._parentSubscriber; | 
						|
            if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { | 
						|
                this.__tryOrUnsub(this._next, value); | 
						|
            } | 
						|
            else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) { | 
						|
                this.unsubscribe(); | 
						|
            } | 
						|
        } | 
						|
    }; | 
						|
    SafeSubscriber.prototype.error = function (err) { | 
						|
        if (!this.isStopped) { | 
						|
            var _parentSubscriber = this._parentSubscriber; | 
						|
            var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling; | 
						|
            if (this._error) { | 
						|
                if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { | 
						|
                    this.__tryOrUnsub(this._error, err); | 
						|
                    this.unsubscribe(); | 
						|
                } | 
						|
                else { | 
						|
                    this.__tryOrSetError(_parentSubscriber, this._error, err); | 
						|
                    this.unsubscribe(); | 
						|
                } | 
						|
            } | 
						|
            else if (!_parentSubscriber.syncErrorThrowable) { | 
						|
                this.unsubscribe(); | 
						|
                if (useDeprecatedSynchronousErrorHandling) { | 
						|
                    throw err; | 
						|
                } | 
						|
                hostReportError(err); | 
						|
            } | 
						|
            else { | 
						|
                if (useDeprecatedSynchronousErrorHandling) { | 
						|
                    _parentSubscriber.syncErrorValue = err; | 
						|
                    _parentSubscriber.syncErrorThrown = true; | 
						|
                } | 
						|
                else { | 
						|
                    hostReportError(err); | 
						|
                } | 
						|
                this.unsubscribe(); | 
						|
            } | 
						|
        } | 
						|
    }; | 
						|
    SafeSubscriber.prototype.complete = function () { | 
						|
        var _this = this; | 
						|
        if (!this.isStopped) { | 
						|
            var _parentSubscriber = this._parentSubscriber; | 
						|
            if (this._complete) { | 
						|
                var wrappedComplete = function () { return _this._complete.call(_this._context); }; | 
						|
                if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { | 
						|
                    this.__tryOrUnsub(wrappedComplete); | 
						|
                    this.unsubscribe(); | 
						|
                } | 
						|
                else { | 
						|
                    this.__tryOrSetError(_parentSubscriber, wrappedComplete); | 
						|
                    this.unsubscribe(); | 
						|
                } | 
						|
            } | 
						|
            else { | 
						|
                this.unsubscribe(); | 
						|
            } | 
						|
        } | 
						|
    }; | 
						|
    SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) { | 
						|
        try { | 
						|
            fn.call(this._context, value); | 
						|
        } | 
						|
        catch (err) { | 
						|
            this.unsubscribe(); | 
						|
            if (config.useDeprecatedSynchronousErrorHandling) { | 
						|
                throw err; | 
						|
            } | 
						|
            else { | 
						|
                hostReportError(err); | 
						|
            } | 
						|
        } | 
						|
    }; | 
						|
    SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) { | 
						|
        if (!config.useDeprecatedSynchronousErrorHandling) { | 
						|
            throw new Error('bad call'); | 
						|
        } | 
						|
        try { | 
						|
            fn.call(this._context, value); | 
						|
        } | 
						|
        catch (err) { | 
						|
            if (config.useDeprecatedSynchronousErrorHandling) { | 
						|
                parent.syncErrorValue = err; | 
						|
                parent.syncErrorThrown = true; | 
						|
                return true; | 
						|
            } | 
						|
            else { | 
						|
                hostReportError(err); | 
						|
                return true; | 
						|
            } | 
						|
        } | 
						|
        return false; | 
						|
    }; | 
						|
    SafeSubscriber.prototype._unsubscribe = function () { | 
						|
        var _parentSubscriber = this._parentSubscriber; | 
						|
        this._context = null; | 
						|
        this._parentSubscriber = null; | 
						|
        _parentSubscriber.unsubscribe(); | 
						|
    }; | 
						|
    return SafeSubscriber; | 
						|
}(Subscriber)); | 
						|
export { SafeSubscriber }; | 
						|
//# sourceMappingURL=Subscriber.js.map
 | 
						|
 |