aboutsummaryrefslogtreecommitdiff
path: root/sandbox/testAppNevena/Front/node_modules/rxjs/_esm2015/internal/Subscription.js
diff options
context:
space:
mode:
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.js137
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