UNPKG

anl

Version:
2 lines (1 loc) 2.17 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var r=require("../../../../tslib/tslib.es6.js"),e=require("./util/isFunction.js"),i=require("./util/UnsubscriptionError.js"),t=require("./util/arrRemove.js"),n=function(){function n(r){this.initialTeardown=r,this.closed=!1,this._parentage=null,this._finalizers=null}var a;return n.prototype.unsubscribe=function(){var t,n,a,o,u;if(!this.closed){this.closed=!0;var l=this._parentage;if(l)if(this._parentage=null,Array.isArray(l))try{for(var c=r.__values(l),f=c.next();!f.done;f=c.next()){f.value.remove(this)}}catch(r){t={error:r}}finally{try{f&&!f.done&&(n=c.return)&&n.call(c)}finally{if(t)throw t.error}}else l.remove(this);var h=this.initialTeardown;if(e.isFunction(h))try{h()}catch(r){u=r instanceof i.UnsubscriptionError?r.errors:[r]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var _=r.__values(p),d=_.next();!d.done;d=_.next()){var v=d.value;try{s(v)}catch(e){u=null!=u?u:[],e instanceof i.UnsubscriptionError?u=r.__spreadArray(r.__spreadArray([],r.__read(u)),r.__read(e.errors)):u.push(e)}}}catch(r){a={error:r}}finally{try{d&&!d.done&&(o=_.return)&&o.call(_)}finally{if(a)throw a.error}}}if(u)throw new i.UnsubscriptionError(u)}},n.prototype.add=function(r){var e;if(r&&r!==this)if(this.closed)s(r);else{if(r instanceof n){if(r.closed||r._hasParent(this))return;r._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(r)}},n.prototype._hasParent=function(r){var e=this._parentage;return e===r||Array.isArray(e)&&e.includes(r)},n.prototype._addParent=function(r){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(r),e):e?[e,r]:r},n.prototype._removeParent=function(r){var e=this._parentage;e===r?this._parentage=null:Array.isArray(e)&&t.arrRemove(e,r)},n.prototype.remove=function(r){var e=this._finalizers;e&&t.arrRemove(e,r),r instanceof n&&r._removeParent(this)},n.EMPTY=((a=new n).closed=!0,a),n}();function s(r){e.isFunction(r)?r():r.unsubscribe()}n.EMPTY,exports.Subscription=n,exports.isSubscription=function(r){return r instanceof n||r&&"closed"in r&&e.isFunction(r.remove)&&e.isFunction(r.add)&&e.isFunction(r.unsubscribe)};