171 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			171 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| "use strict";
 | |
| var __extends = (this && this.__extends) || (function () {
 | |
|     var extendStatics = function (d, b) {
 | |
|         extendStatics = Object.setPrototypeOf ||
 | |
|             ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
 | |
|             function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
 | |
|         return extendStatics(d, b);
 | |
|     }
 | |
|     return function (d, b) {
 | |
|         extendStatics(d, b);
 | |
|         function __() { this.constructor = d; }
 | |
|         d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
 | |
|     };
 | |
| })();
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| var Observable_1 = require("./Observable");
 | |
| var Subscriber_1 = require("./Subscriber");
 | |
| var Subscription_1 = require("./Subscription");
 | |
| var ObjectUnsubscribedError_1 = require("./util/ObjectUnsubscribedError");
 | |
| var SubjectSubscription_1 = require("./SubjectSubscription");
 | |
| var rxSubscriber_1 = require("../internal/symbol/rxSubscriber");
 | |
| var SubjectSubscriber = (function (_super) {
 | |
|     __extends(SubjectSubscriber, _super);
 | |
|     function SubjectSubscriber(destination) {
 | |
|         var _this = _super.call(this, destination) || this;
 | |
|         _this.destination = destination;
 | |
|         return _this;
 | |
|     }
 | |
|     return SubjectSubscriber;
 | |
| }(Subscriber_1.Subscriber));
 | |
| exports.SubjectSubscriber = SubjectSubscriber;
 | |
| var Subject = (function (_super) {
 | |
|     __extends(Subject, _super);
 | |
|     function Subject() {
 | |
|         var _this = _super.call(this) || this;
 | |
|         _this.observers = [];
 | |
|         _this.closed = false;
 | |
|         _this.isStopped = false;
 | |
|         _this.hasError = false;
 | |
|         _this.thrownError = null;
 | |
|         return _this;
 | |
|     }
 | |
|     Subject.prototype[rxSubscriber_1.rxSubscriber] = function () {
 | |
|         return new SubjectSubscriber(this);
 | |
|     };
 | |
|     Subject.prototype.lift = function (operator) {
 | |
|         var subject = new AnonymousSubject(this, this);
 | |
|         subject.operator = operator;
 | |
|         return subject;
 | |
|     };
 | |
|     Subject.prototype.next = function (value) {
 | |
|         if (this.closed) {
 | |
|             throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
 | |
|         }
 | |
|         if (!this.isStopped) {
 | |
|             var observers = this.observers;
 | |
|             var len = observers.length;
 | |
|             var copy = observers.slice();
 | |
|             for (var i = 0; i < len; i++) {
 | |
|                 copy[i].next(value);
 | |
|             }
 | |
|         }
 | |
|     };
 | |
|     Subject.prototype.error = function (err) {
 | |
|         if (this.closed) {
 | |
|             throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
 | |
|         }
 | |
|         this.hasError = true;
 | |
|         this.thrownError = err;
 | |
|         this.isStopped = true;
 | |
|         var observers = this.observers;
 | |
|         var len = observers.length;
 | |
|         var copy = observers.slice();
 | |
|         for (var i = 0; i < len; i++) {
 | |
|             copy[i].error(err);
 | |
|         }
 | |
|         this.observers.length = 0;
 | |
|     };
 | |
|     Subject.prototype.complete = function () {
 | |
|         if (this.closed) {
 | |
|             throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
 | |
|         }
 | |
|         this.isStopped = true;
 | |
|         var observers = this.observers;
 | |
|         var len = observers.length;
 | |
|         var copy = observers.slice();
 | |
|         for (var i = 0; i < len; i++) {
 | |
|             copy[i].complete();
 | |
|         }
 | |
|         this.observers.length = 0;
 | |
|     };
 | |
|     Subject.prototype.unsubscribe = function () {
 | |
|         this.isStopped = true;
 | |
|         this.closed = true;
 | |
|         this.observers = null;
 | |
|     };
 | |
|     Subject.prototype._trySubscribe = function (subscriber) {
 | |
|         if (this.closed) {
 | |
|             throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
 | |
|         }
 | |
|         else {
 | |
|             return _super.prototype._trySubscribe.call(this, subscriber);
 | |
|         }
 | |
|     };
 | |
|     Subject.prototype._subscribe = function (subscriber) {
 | |
|         if (this.closed) {
 | |
|             throw new ObjectUnsubscribedError_1.ObjectUnsubscribedError();
 | |
|         }
 | |
|         else if (this.hasError) {
 | |
|             subscriber.error(this.thrownError);
 | |
|             return Subscription_1.Subscription.EMPTY;
 | |
|         }
 | |
|         else if (this.isStopped) {
 | |
|             subscriber.complete();
 | |
|             return Subscription_1.Subscription.EMPTY;
 | |
|         }
 | |
|         else {
 | |
|             this.observers.push(subscriber);
 | |
|             return new SubjectSubscription_1.SubjectSubscription(this, subscriber);
 | |
|         }
 | |
|     };
 | |
|     Subject.prototype.asObservable = function () {
 | |
|         var observable = new Observable_1.Observable();
 | |
|         observable.source = this;
 | |
|         return observable;
 | |
|     };
 | |
|     Subject.create = function (destination, source) {
 | |
|         return new AnonymousSubject(destination, source);
 | |
|     };
 | |
|     return Subject;
 | |
| }(Observable_1.Observable));
 | |
| exports.Subject = Subject;
 | |
| var AnonymousSubject = (function (_super) {
 | |
|     __extends(AnonymousSubject, _super);
 | |
|     function AnonymousSubject(destination, source) {
 | |
|         var _this = _super.call(this) || this;
 | |
|         _this.destination = destination;
 | |
|         _this.source = source;
 | |
|         return _this;
 | |
|     }
 | |
|     AnonymousSubject.prototype.next = function (value) {
 | |
|         var destination = this.destination;
 | |
|         if (destination && destination.next) {
 | |
|             destination.next(value);
 | |
|         }
 | |
|     };
 | |
|     AnonymousSubject.prototype.error = function (err) {
 | |
|         var destination = this.destination;
 | |
|         if (destination && destination.error) {
 | |
|             this.destination.error(err);
 | |
|         }
 | |
|     };
 | |
|     AnonymousSubject.prototype.complete = function () {
 | |
|         var destination = this.destination;
 | |
|         if (destination && destination.complete) {
 | |
|             this.destination.complete();
 | |
|         }
 | |
|     };
 | |
|     AnonymousSubject.prototype._subscribe = function (subscriber) {
 | |
|         var source = this.source;
 | |
|         if (source) {
 | |
|             return this.source.subscribe(subscriber);
 | |
|         }
 | |
|         else {
 | |
|             return Subscription_1.Subscription.EMPTY;
 | |
|         }
 | |
|     };
 | |
|     return AnonymousSubject;
 | |
| }(Subject));
 | |
| exports.AnonymousSubject = AnonymousSubject;
 | |
| //# sourceMappingURL=Subject.js.map | 
