"use strict"; 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 UnsubscriptionError_1 = require("./util/UnsubscriptionError"); var Subscription = (function () { function Subscription(unsubscribe) { this.closed = false; this._parentOrParents = null; this._subscriptions = null; if (unsubscribe) { this._ctorUnsubscribe = true; this._unsubscribe = unsubscribe; } } Subscription.prototype.unsubscribe = function () { var errors; if (this.closed) { return; } var _a = this, _parentOrParents = _a._parentOrParents, _ctorUnsubscribe = _a._ctorUnsubscribe, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions; this.closed = true; this._parentOrParents = null; this._subscriptions = null; if (_parentOrParents instanceof Subscription) { _parentOrParents.remove(this); } else if (_parentOrParents !== null) { for (var index = 0; index < _parentOrParents.length; ++index) { var parent_1 = _parentOrParents[index]; parent_1.remove(this); } } if (isFunction_1.isFunction(_unsubscribe)) { if (_ctorUnsubscribe) { this._unsubscribe = undefined; } try { _unsubscribe.call(this); } catch (e) { errors = e instanceof UnsubscriptionError_1.UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e]; } } if (isArray_1.isArray(_subscriptions)) { var index = -1; var len = _subscriptions.length; while (++index < len) { var sub = _subscriptions[index]; if (isObject_1.isObject(sub)) { try { sub.unsubscribe(); } catch (e) { errors = errors || []; if (e instanceof UnsubscriptionError_1.UnsubscriptionError) { errors = errors.concat(flattenUnsubscriptionErrors(e.errors)); } else { errors.push(e); } } } } } if (errors) { throw new UnsubscriptionError_1.UnsubscriptionError(errors); } }; Subscription.prototype.add = function (teardown) { var subscription = teardown; if (!teardown) { return Subscription.EMPTY; } switch (typeof teardown) { case 'function': subscription = new Subscription(teardown); case 'object': if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') { return subscription; } else if (this.closed) { subscription.unsubscribe(); return subscription; } else if (!(subscription instanceof Subscription)) { var tmp = subscription; subscription = new Subscription(); subscription._subscriptions = [tmp]; } break; default: { throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); } } var _parentOrParents = subscription._parentOrParents; if (_parentOrParents === null) { subscription._parentOrParents = this; } else if (_parentOrParents instanceof Subscription) { if (_parentOrParents === this) { return subscription; } subscription._parentOrParents = [_parentOrParents, this]; } else if (_parentOrParents.indexOf(this) === -1) { _parentOrParents.push(this); } else { return subscription; } var subscriptions = this._subscriptions; if (subscriptions === null) { this._subscriptions = [subscription]; } else { subscriptions.push(subscription); } return subscription; }; Subscription.prototype.remove = function (subscription) { var subscriptions = this._subscriptions; if (subscriptions) { var subscriptionIndex = subscriptions.indexOf(subscription); if (subscriptionIndex !== -1) { subscriptions.splice(subscriptionIndex, 1); } } }; Subscription.EMPTY = (function (empty) { empty.closed = true; return empty; }(new Subscription())); return Subscription; }()); exports.Subscription = Subscription; function flattenUnsubscriptionErrors(errors) { return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError_1.UnsubscriptionError) ? err.errors : err); }, []); } //# sourceMappingURL=Subscription.js.map
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
observable | Folder | 0755 |
|
|
operators | Folder | 0755 |
|
|
scheduled | Folder | 0755 |
|
|
scheduler | Folder | 0755 |
|
|
symbol | Folder | 0755 |
|
|
testing | Folder | 0755 |
|
|
util | Folder | 0755 |
|
|
AsyncSubject.d.ts | File | 640 B | 0644 |
|
AsyncSubject.js | File | 2.17 KB | 0644 |
|
AsyncSubject.js.map | File | 1.11 KB | 0644 |
|
BehaviorSubject.d.ts | File | 597 B | 0644 |
|
BehaviorSubject.js | File | 2.01 KB | 0644 |
|
BehaviorSubject.js.map | File | 894 B | 0644 |
|
InnerSubscriber.d.ts | File | 532 B | 0644 |
|
InnerSubscriber.js | File | 1.59 KB | 0644 |
|
InnerSubscriber.js.map | File | 801 B | 0644 |
|
Notification.d.ts | File | 3.37 KB | 0644 |
|
Notification.js | File | 2.72 KB | 0644 |
|
Notification.js.map | File | 2.09 KB | 0644 |
|
Observable.d.ts | File | 5.93 KB | 0644 |
|
Observable.js | File | 3.96 KB | 0644 |
|
Observable.js.map | File | 2.98 KB | 0644 |
|
Observer.d.ts | File | 79 B | 0644 |
|
Observer.js | File | 523 B | 0644 |
|
Observer.js.map | File | 380 B | 0644 |
|
Operator.d.ts | File | 185 B | 0644 |
|
Operator.js | File | 113 B | 0644 |
|
Operator.js.map | File | 102 B | 0644 |
|
OuterSubscriber.d.ts | File | 509 B | 0644 |
|
OuterSubscriber.js | File | 1.41 KB | 0644 |
|
OuterSubscriber.js.map | File | 543 B | 0644 |
|
ReplaySubject.d.ts | File | 982 B | 0644 |
|
ReplaySubject.js | File | 4.84 KB | 0644 |
|
ReplaySubject.js.map | File | 3.4 KB | 0644 |
|
Rx.d.ts | File | 8.91 KB | 0644 |
|
Rx.js | File | 9.22 KB | 0644 |
|
Rx.js.map | File | 2.86 KB | 0644 |
|
Scheduler.d.ts | File | 2.4 KB | 0644 |
|
Scheduler.js | File | 633 B | 0644 |
|
Scheduler.js.map | File | 537 B | 0644 |
|
Subject.d.ts | File | 2.19 KB | 0644 |
|
Subject.js | File | 5.9 KB | 0644 |
|
Subject.js.map | File | 3.82 KB | 0644 |
|
SubjectSubscription.d.ts | File | 444 B | 0644 |
|
SubjectSubscription.js | File | 1.7 KB | 0644 |
|
SubjectSubscription.js.map | File | 863 B | 0644 |
|
Subscriber.d.ts | File | 3.67 KB | 0644 |
|
Subscriber.js | File | 9.04 KB | 0644 |
|
Subscriber.js.map | File | 5.86 KB | 0644 |
|
Subscription.d.ts | File | 2.72 KB | 0644 |
|
Subscription.js | File | 5.18 KB | 0644 |
|
Subscription.js.map | File | 3.75 KB | 0644 |
|
config.d.ts | File | 860 B | 0644 |
|
config.js | File | 846 B | 0644 |
|
config.js.map | File | 502 B | 0644 |
|
innerSubscribe.d.ts | File | 2.4 KB | 0644 |
|
innerSubscribe.js | File | 4.14 KB | 0644 |
|
innerSubscribe.js.map | File | 2.15 KB | 0644 |
|
types.d.ts | File | 3.17 KB | 0644 |
|
types.js | File | 110 B | 0644 |
|
types.js.map | File | 96 B | 0644 |
|