PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/xstream/extra

Просмотр файла: flattenConcurrentlyAtMost.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.FlattenConcAMOperator = void 0;
var index_1 = require("../index");
var FCAMIL = /** @class */ (function () {
    function FCAMIL(out, op) {
        this.out = out;
        this.op = op;
    }
    FCAMIL.prototype._n = function (t) {
        this.out._n(t);
    };
    FCAMIL.prototype._e = function (err) {
        this.out._e(err);
    };
    FCAMIL.prototype._c = function () {
        this.op.less();
    };
    return FCAMIL;
}());
var FlattenConcAMOperator = /** @class */ (function () {
    function FlattenConcAMOperator(n, ins) {
        this.n = n;
        this.ins = ins;
        this.type = 'flattenConcurrentlyAtMost';
        this.out = null;
        this._l = 0;
        this._d = false;
        this._seq = [];
    }
    FlattenConcAMOperator.prototype._start = function (out) {
        this.out = out;
        this.ins._add(this);
    };
    FlattenConcAMOperator.prototype._stop = function () {
        this.ins._remove(this);
        this._l = 0;
        this.out = null;
        this._seq = [];
    };
    FlattenConcAMOperator.prototype.less = function () {
        var seq = this._seq;
        if (--this._l === 0 && seq.length === 0 && this._d) {
            var u = this.out;
            if (!u)
                return;
            u._c();
        }
        if (this._l < this.n && seq.length > 0) {
            this._n(seq.shift());
        }
    };
    FlattenConcAMOperator.prototype._n = function (s) {
        var u = this.out;
        if (!u)
            return;
        if (this._l < this.n) {
            this._l++;
            s._add(new FCAMIL(u, this));
        }
        else {
            this._seq.push(s);
        }
    };
    FlattenConcAMOperator.prototype._e = function (err) {
        var u = this.out;
        if (!u)
            return;
        u._e(err);
    };
    FlattenConcAMOperator.prototype._c = function () {
        var seq = this._seq;
        this._d = true;
        if (this._l === 0 && seq.length === 0) {
            var u = this.out;
            if (!u)
                return;
            u._c();
        }
    };
    return FlattenConcAMOperator;
}());
exports.FlattenConcAMOperator = FlattenConcAMOperator;
/**
 * Flattens a "stream of streams", handling multiple concurrent nested streams
 * simultaneously, up to some limit `n`.
 *
 * If the input stream is a stream that emits streams, then this operator will
 * return an output stream which is a flat stream: emits regular events. The
 * flattening happens concurrently, up to the configured limit. It works like
 * this: when the input stream emits a nested stream,
 * *flattenConcurrentlyAtMost* will start imitating that nested one. When the
 * next nested stream is emitted on the input stream,
 * *flattenConcurrentlyAtMost* will check to see how many streams it is connected
 * to. If it is connected to a number of streams less than the limit, it will also
 * imitate that new one, but will continue to imitate the previous nested streams
 * as well.
 *
 * If the limit has already been reached, *flattenConcurrentlyAtMost* will put the
 * stream in a queue. When any of the streams it is listening to completes, a stream
 * is taken out of the queue and `flattenConcurrentlyAtMost` will connect to it.
 *
 * This process continues until the metastream completes and there are no more
 * connected streams or streams in the queue.
 *
 * Marble diagrams:
 *
 * ```text
 * --+--------+---------------
 *   \        \
 *    \       ----1----2---3--|
 *    --a--b----c----|
 *     flattenConcurrentlyAtMost(1)
 * -----a--b----c-1----2---3--|
 * ```
 *
 * ```text
 * --+---+---+-|
 *    \   \   \
 *     \   \   ---fgh----i-----jh--|
 *      \   -----1----2----3--|
 *       ---a--b-----c--|
 *     flattenConcurrentlyAtMost(2)
 * ---------a--b-1---c2--i-3------fgh----i-----jh--|
 * ```
 *
 * @return {Stream}
 */
function flattenConcurrentlyAtMost(n) {
    return function flattenConcAMOperator(ins) {
        return new index_1.Stream(new FlattenConcAMOperator(n, ins));
    };
}
exports.default = flattenConcurrentlyAtMost;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlbkNvbmN1cnJlbnRseUF0TW9zdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRyYS9mbGF0dGVuQ29uY3VycmVudGx5QXRNb3N0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtDQUF1RjtBQUV2RjtJQUNFLGdCQUFtQixHQUFjLEVBQ2IsRUFBNEI7UUFEN0IsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUNiLE9BQUUsR0FBRixFQUFFLENBQTBCO0lBQ2hELENBQUM7SUFFRCxtQkFBRSxHQUFGLFVBQUcsQ0FBSTtRQUNMLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxtQkFBRSxHQUFGLFVBQUcsR0FBUTtRQUNULElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxtQkFBRSxHQUFGO1FBQ0UsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBQ0gsYUFBQztBQUFELENBQUMsQUFoQkQsSUFnQkM7QUFFRDtJQU9FLCtCQUFtQixDQUFTLEVBQVMsR0FBc0I7UUFBeEMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBTnBELFNBQUksR0FBRywyQkFBMkIsQ0FBQztRQUNuQyxRQUFHLEdBQWMsSUFBVyxDQUFDO1FBQzVCLE9BQUUsR0FBVyxDQUFDLENBQUM7UUFDZixPQUFFLEdBQVksS0FBSyxDQUFDO1FBQ3BCLFNBQUksR0FBcUIsRUFBRSxDQUFDO0lBR3BDLENBQUM7SUFFRCxzQ0FBTSxHQUFOLFVBQU8sR0FBYztRQUNuQixJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNmLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxxQ0FBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDWixJQUFJLENBQUMsR0FBRyxHQUFHLElBQVcsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRUQsb0NBQUksR0FBSjtRQUNFLElBQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7UUFDdEIsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUU7WUFDbEQsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNuQixJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPO1lBQ2YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ1I7UUFDRCxJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQWUsQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVELGtDQUFFLEdBQUYsVUFBRyxDQUFZO1FBQ2IsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDZixJQUFJLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNwQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDVixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxrQ0FBRSxHQUFGLFVBQUcsR0FBUTtRQUNULElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCxrQ0FBRSxHQUFGO1FBQ0UsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDckMsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztZQUNuQixJQUFJLENBQUMsQ0FBQztnQkFBRSxPQUFPO1lBQ2YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO1NBQ1I7SUFDSCxDQUFDO0lBQ0gsNEJBQUM7QUFBRCxDQUFDLEFBNURELElBNERDO0FBNURZLHNEQUFxQjtBQThEbEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNENHO0FBQ0gsU0FBd0IseUJBQXlCLENBQUksQ0FBUztJQUM1RCxPQUFPLFNBQVMscUJBQXFCLENBQUMsR0FBd0M7UUFDNUUsT0FBTyxJQUFJLGNBQU0sQ0FBSSxJQUFJLHFCQUFxQixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQztBQUNKLENBQUM7QUFKRCw0Q0FJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wZXJhdG9yLCBTdHJlYW0sIE1lbW9yeVN0cmVhbSwgT3V0U2VuZGVyLCBJbnRlcm5hbExpc3RlbmVyIH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5jbGFzcyBGQ0FNSUw8VD4gaW1wbGVtZW50cyBJbnRlcm5hbExpc3RlbmVyPFQ+LCBPdXRTZW5kZXI8VD4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0OiBTdHJlYW08VD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgb3A6IEZsYXR0ZW5Db25jQU1PcGVyYXRvcjxUPikge1xuICB9XG5cbiAgX24odDogVCkge1xuICAgIHRoaXMub3V0Ll9uKHQpO1xuICB9XG5cbiAgX2UoZXJyOiBhbnkpIHtcbiAgICB0aGlzLm91dC5fZShlcnIpO1xuICB9XG5cbiAgX2MoKSB7XG4gICAgdGhpcy5vcC5sZXNzKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEZsYXR0ZW5Db25jQU1PcGVyYXRvcjxUPiBpbXBsZW1lbnRzIE9wZXJhdG9yPFN0cmVhbTxUPiwgVD4ge1xuICBwdWJsaWMgdHlwZSA9ICdmbGF0dGVuQ29uY3VycmVudGx5QXRNb3N0JztcbiAgcHVibGljIG91dDogU3RyZWFtPFQ+ID0gbnVsbCBhcyBhbnk7XG4gIHByaXZhdGUgX2w6IG51bWJlciA9IDA7XG4gIHByaXZhdGUgX2Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfc2VxOiBBcnJheTxTdHJlYW08VD4+ID0gW107XG5cbiAgY29uc3RydWN0b3IocHVibGljIG46IG51bWJlciwgcHVibGljIGluczogU3RyZWFtPFN0cmVhbTxUPj4pIHtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxUPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMuaW5zLl9hZGQodGhpcyk7XG4gIH1cblxuICBfc3RvcCgpOiB2b2lkIHtcbiAgICB0aGlzLmlucy5fcmVtb3ZlKHRoaXMpO1xuICAgIHRoaXMuX2wgPSAwO1xuICAgIHRoaXMub3V0ID0gbnVsbCBhcyBhbnk7XG4gICAgdGhpcy5fc2VxID0gW107XG4gIH1cblxuICBsZXNzKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlcSA9IHRoaXMuX3NlcTtcbiAgICBpZiAoLS10aGlzLl9sID09PSAwICYmIHNlcS5sZW5ndGggPT09IDAgJiYgdGhpcy5fZCkge1xuICAgICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgICAgaWYgKCF1KSByZXR1cm47XG4gICAgICB1Ll9jKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9sIDwgdGhpcy5uICYmIHNlcS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9uKHNlcS5zaGlmdCgpIGFzIFN0cmVhbTxUPik7XG4gICAgfVxuICB9XG5cbiAgX24oczogU3RyZWFtPFQ+KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICghdSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLl9sIDwgdGhpcy5uKSB7XG4gICAgICB0aGlzLl9sKys7XG4gICAgICBzLl9hZGQobmV3IEZDQU1JTCh1LCB0aGlzKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlcS5wdXNoKHMpO1xuICAgIH1cbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICghdSkgcmV0dXJuO1xuICAgIHUuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIGNvbnN0IHNlcSA9IHRoaXMuX3NlcTtcbiAgICB0aGlzLl9kID0gdHJ1ZTtcbiAgICBpZiAodGhpcy5fbCA9PT0gMCAmJiBzZXEubGVuZ3RoID09PSAwKSB7XG4gICAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgICBpZiAoIXUpIHJldHVybjtcbiAgICAgIHUuX2MoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGbGF0dGVucyBhIFwic3RyZWFtIG9mIHN0cmVhbXNcIiwgaGFuZGxpbmcgbXVsdGlwbGUgY29uY3VycmVudCBuZXN0ZWQgc3RyZWFtc1xuICogc2ltdWx0YW5lb3VzbHksIHVwIHRvIHNvbWUgbGltaXQgYG5gLlxuICpcbiAqIElmIHRoZSBpbnB1dCBzdHJlYW0gaXMgYSBzdHJlYW0gdGhhdCBlbWl0cyBzdHJlYW1zLCB0aGVuIHRoaXMgb3BlcmF0b3Igd2lsbFxuICogcmV0dXJuIGFuIG91dHB1dCBzdHJlYW0gd2hpY2ggaXMgYSBmbGF0IHN0cmVhbTogZW1pdHMgcmVndWxhciBldmVudHMuIFRoZVxuICogZmxhdHRlbmluZyBoYXBwZW5zIGNvbmN1cnJlbnRseSwgdXAgdG8gdGhlIGNvbmZpZ3VyZWQgbGltaXQuIEl0IHdvcmtzIGxpa2VcbiAqIHRoaXM6IHdoZW4gdGhlIGlucHV0IHN0cmVhbSBlbWl0cyBhIG5lc3RlZCBzdHJlYW0sXG4gKiAqZmxhdHRlbkNvbmN1cnJlbnRseUF0TW9zdCogd2lsbCBzdGFydCBpbWl0YXRpbmcgdGhhdCBuZXN0ZWQgb25lLiBXaGVuIHRoZVxuICogbmV4dCBuZXN0ZWQgc3RyZWFtIGlzIGVtaXR0ZWQgb24gdGhlIGlucHV0IHN0cmVhbSxcbiAqICpmbGF0dGVuQ29uY3VycmVudGx5QXRNb3N0KiB3aWxsIGNoZWNrIHRvIHNlZSBob3cgbWFueSBzdHJlYW1zIGl0IGlzIGNvbm5lY3RlZFxuICogdG8uIElmIGl0IGlzIGNvbm5lY3RlZCB0byBhIG51bWJlciBvZiBzdHJlYW1zIGxlc3MgdGhhbiB0aGUgbGltaXQsIGl0IHdpbGwgYWxzb1xuICogaW1pdGF0ZSB0aGF0IG5ldyBvbmUsIGJ1dCB3aWxsIGNvbnRpbnVlIHRvIGltaXRhdGUgdGhlIHByZXZpb3VzIG5lc3RlZCBzdHJlYW1zXG4gKiBhcyB3ZWxsLlxuICpcbiAqIElmIHRoZSBsaW1pdCBoYXMgYWxyZWFkeSBiZWVuIHJlYWNoZWQsICpmbGF0dGVuQ29uY3VycmVudGx5QXRNb3N0KiB3aWxsIHB1dCB0aGVcbiAqIHN0cmVhbSBpbiBhIHF1ZXVlLiBXaGVuIGFueSBvZiB0aGUgc3RyZWFtcyBpdCBpcyBsaXN0ZW5pbmcgdG8gY29tcGxldGVzLCBhIHN0cmVhbVxuICogaXMgdGFrZW4gb3V0IG9mIHRoZSBxdWV1ZSBhbmQgYGZsYXR0ZW5Db25jdXJyZW50bHlBdE1vc3RgIHdpbGwgY29ubmVjdCB0byBpdC5cbiAqXG4gKiBUaGlzIHByb2Nlc3MgY29udGludWVzIHVudGlsIHRoZSBtZXRhc3RyZWFtIGNvbXBsZXRlcyBhbmQgdGhlcmUgYXJlIG5vIG1vcmVcbiAqIGNvbm5lY3RlZCBzdHJlYW1zIG9yIHN0cmVhbXMgaW4gdGhlIHF1ZXVlLlxuICpcbiAqIE1hcmJsZSBkaWFncmFtczpcbiAqXG4gKiBgYGB0ZXh0XG4gKiAtLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tLS1cbiAqICAgXFwgICAgICAgIFxcXG4gKiAgICBcXCAgICAgICAtLS0tMS0tLS0yLS0tMy0tfFxuICogICAgLS1hLS1iLS0tLWMtLS0tfFxuICogICAgIGZsYXR0ZW5Db25jdXJyZW50bHlBdE1vc3QoMSlcbiAqIC0tLS0tYS0tYi0tLS1jLTEtLS0tMi0tLTMtLXxcbiAqIGBgYFxuICpcbiAqIGBgYHRleHRcbiAqIC0tKy0tLSstLS0rLXxcbiAqICAgIFxcICAgXFwgICBcXFxuICogICAgIFxcICAgXFwgICAtLS1mZ2gtLS0taS0tLS0tamgtLXxcbiAqICAgICAgXFwgICAtLS0tLTEtLS0tMi0tLS0zLS18XG4gKiAgICAgICAtLS1hLS1iLS0tLS1jLS18XG4gKiAgICAgZmxhdHRlbkNvbmN1cnJlbnRseUF0TW9zdCgyKVxuICogLS0tLS0tLS0tYS0tYi0xLS0tYzItLWktMy0tLS0tLWZnaC0tLS1pLS0tLS1qaC0tfFxuICogYGBgXG4gKlxuICogQHJldHVybiB7U3RyZWFtfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmbGF0dGVuQ29uY3VycmVudGx5QXRNb3N0PFQ+KG46IG51bWJlcik6IChpbnM6IFN0cmVhbTxTdHJlYW08VD4gfCBNZW1vcnlTdHJlYW08VD4+KSA9PiBTdHJlYW08VD4ge1xuICByZXR1cm4gZnVuY3Rpb24gZmxhdHRlbkNvbmNBTU9wZXJhdG9yKGluczogU3RyZWFtPFN0cmVhbTxUPiB8IE1lbW9yeVN0cmVhbTxUPj4pIHtcbiAgICByZXR1cm4gbmV3IFN0cmVhbTxUPihuZXcgRmxhdHRlbkNvbmNBTU9wZXJhdG9yKG4sIGlucykpO1xuICB9O1xufVxuIl19

Выполнить команду


Для локальной разработки. Не используйте в интернете!