aboutsummaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/node_modules/rxjs/internal/Subscription.js
diff options
context:
space:
mode:
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.js61
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;