| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | "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 innerSubscribe_1 = require("../innerSubscribe");function expand(project, concurrent, scheduler) {    if (concurrent === void 0) { concurrent = Number.POSITIVE_INFINITY; }    concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;    return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); };}exports.expand = expand;var ExpandOperator = (function () {    function ExpandOperator(project, concurrent, scheduler) {        this.project = project;        this.concurrent = concurrent;        this.scheduler = scheduler;    }    ExpandOperator.prototype.call = function (subscriber, source) {        return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));    };    return ExpandOperator;}());exports.ExpandOperator = ExpandOperator;var ExpandSubscriber = (function (_super) {    __extends(ExpandSubscriber, _super);    function ExpandSubscriber(destination, project, concurrent, scheduler) {        var _this = _super.call(this, destination) || this;        _this.project = project;        _this.concurrent = concurrent;        _this.scheduler = scheduler;        _this.index = 0;        _this.active = 0;        _this.hasCompleted = false;        if (concurrent < Number.POSITIVE_INFINITY) {            _this.buffer = [];        }        return _this;    }    ExpandSubscriber.dispatch = function (arg) {        var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index;        subscriber.subscribeToProjection(result, value, index);    };    ExpandSubscriber.prototype._next = function (value) {        var destination = this.destination;        if (destination.closed) {            this._complete();            return;        }        var index = this.index++;        if (this.active < this.concurrent) {            destination.next(value);            try {                var project = this.project;                var result = project(value, index);                if (!this.scheduler) {                    this.subscribeToProjection(result, value, index);                }                else {                    var state = { subscriber: this, result: result, value: value, index: index };                    var destination_1 = this.destination;                    destination_1.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state));                }            }            catch (e) {                destination.error(e);            }        }        else {            this.buffer.push(value);        }    };    ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) {        this.active++;        var destination = this.destination;        destination.add(innerSubscribe_1.innerSubscribe(result, new innerSubscribe_1.SimpleInnerSubscriber(this)));    };    ExpandSubscriber.prototype._complete = function () {        this.hasCompleted = true;        if (this.hasCompleted && this.active === 0) {            this.destination.complete();        }        this.unsubscribe();    };    ExpandSubscriber.prototype.notifyNext = function (innerValue) {        this._next(innerValue);    };    ExpandSubscriber.prototype.notifyComplete = function () {        var buffer = this.buffer;        this.active--;        if (buffer && buffer.length > 0) {            this._next(buffer.shift());        }        if (this.hasCompleted && this.active === 0) {            this.destination.complete();        }    };    return ExpandSubscriber;}(innerSubscribe_1.SimpleOuterSubscriber));exports.ExpandSubscriber = ExpandSubscriber;//# sourceMappingURL=expand.js.map
 |