diff options
Diffstat (limited to 'tools/node_modules/eslint/node_modules/rxjs/internal/Subscription.js')
-rw-r--r-- | tools/node_modules/eslint/node_modules/rxjs/internal/Subscription.js | 61 |
1 files changed, 36 insertions, 25 deletions
diff --git a/tools/node_modules/eslint/node_modules/rxjs/internal/Subscription.js b/tools/node_modules/eslint/node_modules/rxjs/internal/Subscription.js index 9f8f4f13c0..8902082e74 100644 --- a/tools/node_modules/eslint/node_modules/rxjs/internal/Subscription.js +++ b/tools/node_modules/eslint/node_modules/rxjs/internal/Subscription.js @@ -3,8 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); var isArray_1 = require("./util/isArray"); var isObject_1 = require("./util/isObject"); var isFunction_1 = require("./util/isFunction"); -var tryCatch_1 = require("./util/tryCatch"); -var errorObject_1 = require("./util/errorObject"); var UnsubscriptionError_1 = require("./util/UnsubscriptionError"); var Subscription = (function () { function Subscription(unsubscribe) { @@ -34,11 +32,12 @@ var Subscription = (function () { _parent = ++index < len && _parents[index] || null; } if (isFunction_1.isFunction(_unsubscribe)) { - var trial = tryCatch_1.tryCatch(_unsubscribe).call(this); - if (trial === errorObject_1.errorObject) { + try { + _unsubscribe.call(this); + } + catch (e) { hasErrors = true; - errors = errors || (errorObject_1.errorObject.e instanceof UnsubscriptionError_1.UnsubscriptionError ? - flattenUnsubscriptionErrors(errorObject_1.errorObject.e.errors) : [errorObject_1.errorObject.e]); + errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e]; } } if (isArray_1.isArray(_subscriptions)) { @@ -47,16 +46,17 @@ var Subscription = (function () { while (++index < len) { var sub = _subscriptions[index]; if (isObject_1.isObject(sub)) { - var trial = tryCatch_1.tryCatch(sub.unsubscribe).call(sub); - if (trial === errorObject_1.errorObject) { + try { + sub.unsubscribe(); + } + catch (e) { hasErrors = true; errors = errors || []; - var err = errorObject_1.errorObject.e; - if (err instanceof UnsubscriptionError_1.UnsubscriptionError) { - errors = errors.concat(flattenUnsubscriptionErrors(err.errors)); + if (e instanceof UnsubscriptionError_1.UnsubscriptionError) { + errors = errors.concat(flattenUnsubscriptionErrors(e.errors)); } else { - errors.push(err); + errors.push(e); } } } @@ -67,36 +67,40 @@ var Subscription = (function () { } }; Subscription.prototype.add = function (teardown) { - if (!teardown || (teardown === Subscription.EMPTY)) { - return Subscription.EMPTY; - } - if (teardown === this) { - return this; - } var subscription = teardown; switch (typeof teardown) { case 'function': subscription = new Subscription(teardown); case 'object': - if (subscription.closed || typeof subscription.unsubscribe !== 'function') { + if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') { return subscription; } else if (this.closed) { subscription.unsubscribe(); return subscription; } - else if (typeof subscription._addParent !== 'function') { + else if (!(subscription instanceof Subscription)) { var tmp = subscription; subscription = new Subscription(); subscription._subscriptions = [tmp]; } break; - default: + default: { + if (!teardown) { + return Subscription.EMPTY; + } throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); + } + } + if (subscription._addParent(this)) { + var subscriptions = this._subscriptions; + if (subscriptions) { + subscriptions.push(subscription); + } + else { + this._subscriptions = [subscription]; + } } - var subscriptions = this._subscriptions || (this._subscriptions = []); - subscriptions.push(subscription); - subscription._addParent(this); return subscription; }; Subscription.prototype.remove = function (subscription) { @@ -110,15 +114,22 @@ var Subscription = (function () { }; Subscription.prototype._addParent = function (parent) { var _a = this, _parent = _a._parent, _parents = _a._parents; - if (!_parent || _parent === parent) { + if (_parent === parent) { + return false; + } + else if (!_parent) { this._parent = parent; + return true; } else if (!_parents) { this._parents = [parent]; + return true; } else if (_parents.indexOf(parent) === -1) { _parents.push(parent); + return true; } + return false; }; Subscription.EMPTY = (function (empty) { empty.closed = true; |