diff options
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/rxjs/_esm2015/internal/Subscription.js')
-rw-r--r-- | sandbox/testAppNevena/Front/node_modules/rxjs/_esm2015/internal/Subscription.js | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/rxjs/_esm2015/internal/Subscription.js b/sandbox/testAppNevena/Front/node_modules/rxjs/_esm2015/internal/Subscription.js new file mode 100644 index 00000000..82ac7b7c --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/rxjs/_esm2015/internal/Subscription.js @@ -0,0 +1,137 @@ +import { isArray } from './util/isArray'; +import { isObject } from './util/isObject'; +import { isFunction } from './util/isFunction'; +import { UnsubscriptionError } from './util/UnsubscriptionError'; +export class Subscription { + constructor(unsubscribe) { + this.closed = false; + this._parentOrParents = null; + this._subscriptions = null; + if (unsubscribe) { + this._ctorUnsubscribe = true; + this._unsubscribe = unsubscribe; + } + } + unsubscribe() { + let errors; + if (this.closed) { + return; + } + let { _parentOrParents, _ctorUnsubscribe, _unsubscribe, _subscriptions } = this; + this.closed = true; + this._parentOrParents = null; + this._subscriptions = null; + if (_parentOrParents instanceof Subscription) { + _parentOrParents.remove(this); + } + else if (_parentOrParents !== null) { + for (let index = 0; index < _parentOrParents.length; ++index) { + const parent = _parentOrParents[index]; + parent.remove(this); + } + } + if (isFunction(_unsubscribe)) { + if (_ctorUnsubscribe) { + this._unsubscribe = undefined; + } + try { + _unsubscribe.call(this); + } + catch (e) { + errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e]; + } + } + if (isArray(_subscriptions)) { + let index = -1; + let len = _subscriptions.length; + while (++index < len) { + const sub = _subscriptions[index]; + if (isObject(sub)) { + try { + sub.unsubscribe(); + } + catch (e) { + errors = errors || []; + if (e instanceof UnsubscriptionError) { + errors = errors.concat(flattenUnsubscriptionErrors(e.errors)); + } + else { + errors.push(e); + } + } + } + } + } + if (errors) { + throw new UnsubscriptionError(errors); + } + } + add(teardown) { + let 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)) { + const tmp = subscription; + subscription = new Subscription(); + subscription._subscriptions = [tmp]; + } + break; + default: { + throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); + } + } + let { _parentOrParents } = subscription; + 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; + } + const subscriptions = this._subscriptions; + if (subscriptions === null) { + this._subscriptions = [subscription]; + } + else { + subscriptions.push(subscription); + } + return subscription; + } + remove(subscription) { + const subscriptions = this._subscriptions; + if (subscriptions) { + const subscriptionIndex = subscriptions.indexOf(subscription); + if (subscriptionIndex !== -1) { + subscriptions.splice(subscriptionIndex, 1); + } + } + } +} +Subscription.EMPTY = (function (empty) { + empty.closed = true; + return empty; +}(new Subscription())); +function flattenUnsubscriptionErrors(errors) { + return errors.reduce((errs, err) => errs.concat((err instanceof UnsubscriptionError) ? err.errors : err), []); +} +//# sourceMappingURL=Subscription.js.map
\ No newline at end of file |