| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | import { __read, __spreadArray, __values } from "tslib";import { isFunction } from './util/isFunction';import { UnsubscriptionError } from './util/UnsubscriptionError';import { arrRemove } from './util/arrRemove';var Subscription = (function () {    function Subscription(initialTeardown) {        this.initialTeardown = initialTeardown;        this.closed = false;        this._parentage = null;        this._finalizers = null;    }    Subscription.prototype.unsubscribe = function () {        var e_1, _a, e_2, _b;        var errors;        if (!this.closed) {            this.closed = true;            var _parentage = this._parentage;            if (_parentage) {                this._parentage = null;                if (Array.isArray(_parentage)) {                    try {                        for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {                            var parent_1 = _parentage_1_1.value;                            parent_1.remove(this);                        }                    }                    catch (e_1_1) { e_1 = { error: e_1_1 }; }                    finally {                        try {                            if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);                        }                        finally { if (e_1) throw e_1.error; }                    }                }                else {                    _parentage.remove(this);                }            }            var initialFinalizer = this.initialTeardown;            if (isFunction(initialFinalizer)) {                try {                    initialFinalizer();                }                catch (e) {                    errors = e instanceof UnsubscriptionError ? e.errors : [e];                }            }            var _finalizers = this._finalizers;            if (_finalizers) {                this._finalizers = null;                try {                    for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {                        var finalizer = _finalizers_1_1.value;                        try {                            execFinalizer(finalizer);                        }                        catch (err) {                            errors = errors !== null && errors !== void 0 ? errors : [];                            if (err instanceof UnsubscriptionError) {                                errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));                            }                            else {                                errors.push(err);                            }                        }                    }                }                catch (e_2_1) { e_2 = { error: e_2_1 }; }                finally {                    try {                        if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);                    }                    finally { if (e_2) throw e_2.error; }                }            }            if (errors) {                throw new UnsubscriptionError(errors);            }        }    };    Subscription.prototype.add = function (teardown) {        var _a;        if (teardown && teardown !== this) {            if (this.closed) {                execFinalizer(teardown);            }            else {                if (teardown instanceof Subscription) {                    if (teardown.closed || teardown._hasParent(this)) {                        return;                    }                    teardown._addParent(this);                }                (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);            }        }    };    Subscription.prototype._hasParent = function (parent) {        var _parentage = this._parentage;        return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));    };    Subscription.prototype._addParent = function (parent) {        var _parentage = this._parentage;        this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;    };    Subscription.prototype._removeParent = function (parent) {        var _parentage = this._parentage;        if (_parentage === parent) {            this._parentage = null;        }        else if (Array.isArray(_parentage)) {            arrRemove(_parentage, parent);        }    };    Subscription.prototype.remove = function (teardown) {        var _finalizers = this._finalizers;        _finalizers && arrRemove(_finalizers, teardown);        if (teardown instanceof Subscription) {            teardown._removeParent(this);        }    };    Subscription.EMPTY = (function () {        var empty = new Subscription();        empty.closed = true;        return empty;    })();    return Subscription;}());export { Subscription };export var EMPTY_SUBSCRIPTION = Subscription.EMPTY;export function isSubscription(value) {    return (value instanceof Subscription ||        (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));}function execFinalizer(finalizer) {    if (isFunction(finalizer)) {        finalizer();    }    else {        finalizer.unsubscribe();    }}//# sourceMappingURL=Subscription.js.map
 |