| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | "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 Subscriber_1 = require("../Subscriber");function refCount() {    return function refCountOperatorFunction(source) {        return source.lift(new RefCountOperator(source));    };}exports.refCount = refCount;var RefCountOperator = (function () {    function RefCountOperator(connectable) {        this.connectable = connectable;    }    RefCountOperator.prototype.call = function (subscriber, source) {        var connectable = this.connectable;        connectable._refCount++;        var refCounter = new RefCountSubscriber(subscriber, connectable);        var subscription = source.subscribe(refCounter);        if (!refCounter.closed) {            refCounter.connection = connectable.connect();        }        return subscription;    };    return RefCountOperator;}());var RefCountSubscriber = (function (_super) {    __extends(RefCountSubscriber, _super);    function RefCountSubscriber(destination, connectable) {        var _this = _super.call(this, destination) || this;        _this.connectable = connectable;        return _this;    }    RefCountSubscriber.prototype._unsubscribe = function () {        var connectable = this.connectable;        if (!connectable) {            this.connection = null;            return;        }        this.connectable = null;        var refCount = connectable._refCount;        if (refCount <= 0) {            this.connection = null;            return;        }        connectable._refCount = refCount - 1;        if (refCount > 1) {            this.connection = null;            return;        }        var connection = this.connection;        var sharedConnection = connectable._connection;        this.connection = null;        if (sharedConnection && (!connection || sharedConnection === connection)) {            sharedConnection.unsubscribe();        }    };    return RefCountSubscriber;}(Subscriber_1.Subscriber));//# sourceMappingURL=refCount.js.map
 |