1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var index_1 = require("../index");
|
4 | var FSInner = /** @class */ (function () {
|
5 | function FSInner(out, op) {
|
6 | this.out = out;
|
7 | this.op = op;
|
8 | }
|
9 | FSInner.prototype._n = function (t) {
|
10 | this.out._n(t);
|
11 | };
|
12 | FSInner.prototype._e = function (err) {
|
13 | this.out._e(err);
|
14 | };
|
15 | FSInner.prototype._c = function () {
|
16 | this.op.less();
|
17 | };
|
18 | return FSInner;
|
19 | }());
|
20 | var FlattenSeqOperator = /** @class */ (function () {
|
21 | function FlattenSeqOperator(ins) {
|
22 | this.type = 'flattenSequentially';
|
23 | this.ins = ins;
|
24 | this.out = null;
|
25 | this.open = true;
|
26 | this.active = null;
|
27 | this.activeIL = null;
|
28 | this.seq = [];
|
29 | }
|
30 | FlattenSeqOperator.prototype._start = function (out) {
|
31 | this.out = out;
|
32 | this.open = true;
|
33 | this.active = null;
|
34 | this.activeIL = new FSInner(out, this);
|
35 | this.seq = [];
|
36 | this.ins._add(this);
|
37 | };
|
38 | FlattenSeqOperator.prototype._stop = function () {
|
39 | this.ins._remove(this);
|
40 | if (this.active && this.activeIL) {
|
41 | this.active._remove(this.activeIL);
|
42 | }
|
43 | this.open = true;
|
44 | this.active = null;
|
45 | this.activeIL = null;
|
46 | this.seq = [];
|
47 | this.out = null;
|
48 | };
|
49 | FlattenSeqOperator.prototype.less = function () {
|
50 | this.active = null;
|
51 | var seq = this.seq;
|
52 | if (seq.length > 0) {
|
53 | this._n(seq.shift());
|
54 | }
|
55 | if (!this.open && !this.active) {
|
56 | this.out._c();
|
57 | }
|
58 | };
|
59 | FlattenSeqOperator.prototype._n = function (s) {
|
60 | var u = this.out;
|
61 | if (!u)
|
62 | return;
|
63 | if (this.active) {
|
64 | this.seq.push(s);
|
65 | }
|
66 | else {
|
67 | this.active = s;
|
68 | s._add(this.activeIL);
|
69 | }
|
70 | };
|
71 | FlattenSeqOperator.prototype._e = function (err) {
|
72 | var u = this.out;
|
73 | if (!u)
|
74 | return;
|
75 | u._e(err);
|
76 | };
|
77 | FlattenSeqOperator.prototype._c = function () {
|
78 | var u = this.out;
|
79 | if (!u)
|
80 | return;
|
81 | this.open = false;
|
82 | if (!this.active && this.seq.length === 0) {
|
83 | u._c();
|
84 | }
|
85 | };
|
86 | return FlattenSeqOperator;
|
87 | }());
|
88 | exports.FlattenSeqOperator = FlattenSeqOperator;
|
89 | /**
|
90 | * Flattens a "stream of streams", handling only one nested stream at a time,
|
91 | * with no concurrency, but does not drop nested streams like `flatten` does.
|
92 | *
|
93 | * If the input stream is a stream that emits streams, then this operator will
|
94 | * return an output stream which is a flat stream: emits regular events. The
|
95 | * flattening happens sequentially and without concurrency. It works like this:
|
96 | * when the input stream emits a nested stream, *flattenSequentially* will start
|
97 | * imitating that nested one. When the next nested stream is emitted on the
|
98 | * input stream, *flattenSequentially* will keep that in a buffer, and only
|
99 | * start imitating it once the previous nested stream completes.
|
100 | *
|
101 | * In essence, `flattenSequentially` concatenates all nested streams.
|
102 | *
|
103 | * Marble diagram:
|
104 | *
|
105 | * ```text
|
106 | * --+--------+-------------------------
|
107 | * \ \
|
108 | * \ ----1----2---3--|
|
109 | * --a--b----c----d--|
|
110 | * flattenSequentially
|
111 | * -----a--b----c----d------1----2---3--
|
112 | * ```
|
113 | *
|
114 | * @return {Stream}
|
115 | */
|
116 | function flattenSequentially(ins) {
|
117 | return new index_1.Stream(new FlattenSeqOperator(ins));
|
118 | }
|
119 | exports.default = flattenSequentially;
|
120 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxhdHRlblNlcXVlbnRpYWxseS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRyYS9mbGF0dGVuU2VxdWVudGlhbGx5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsa0NBQTREO0FBRTVEO0lBQ0UsaUJBQW9CLEdBQWMsRUFDZCxFQUF5QjtRQUR6QixRQUFHLEdBQUgsR0FBRyxDQUFXO1FBQ2QsT0FBRSxHQUFGLEVBQUUsQ0FBdUI7SUFDN0MsQ0FBQztJQUVELG9CQUFFLEdBQUYsVUFBRyxDQUFJO1FBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVELG9CQUFFLEdBQUYsVUFBRyxHQUFRO1FBQ1QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELG9CQUFFLEdBQUY7UUFDRSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFDSCxjQUFDO0FBQUQsQ0FBQyxBQWhCRCxJQWdCQztBQUVEO0lBU0UsNEJBQVksR0FBc0I7UUFSM0IsU0FBSSxHQUFHLHFCQUFxQixDQUFDO1FBU2xDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFXLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVELG1DQUFNLEdBQU4sVUFBTyxHQUFjO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFB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dGVuZXJ9IGZyb20gJy4uL2luZGV4JztcblxuY2xhc3MgRlNJbm5lcjxUPiBpbXBsZW1lbnRzIEludGVybmFsTGlzdGVuZXI8VD4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG91dDogU3RyZWFtPFQ+LFxuICAgICAgICAgICAgICBwcml2YXRlIG9wOiBGbGF0dGVuU2VxT3BlcmF0b3I8VD4pIHtcbiAgfVxuXG4gIF9uKHQ6IFQpIHtcbiAgICB0aGlzLm91dC5fbih0KTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgdGhpcy5vdXQuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIHRoaXMub3AubGVzcygpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBGbGF0dGVuU2VxT3BlcmF0b3I8VD4gaW1wbGVtZW50cyBPcGVyYXRvcjxTdHJlYW08VD4sIFQ+IHtcbiAgcHVibGljIHR5cGUgPSAnZmxhdHRlblNlcXVlbnRpYWxseSc7XG4gIHB1YmxpYyBpbnM6IFN0cmVhbTxTdHJlYW08VD4+O1xuICBwcml2YXRlIG9wZW46IGJvb2xlYW47XG4gIHByaXZhdGUgYWN0aXZlOiBTdHJlYW08VD4gfCBudWxsO1xuICBwcml2YXRlIGFjdGl2ZUlMOiBGU0lubmVyPFQ+IHwgbnVsbDtcbiAgcHJpdmF0ZSBzZXE6IEFycmF5PFN0cmVhbTxUPj47XG4gIHB1YmxpYyBvdXQ6IFN0cmVhbTxUPjtcblxuICBjb25zdHJ1Y3RvcihpbnM6IFN0cmVhbTxTdHJlYW08VD4+KSB7XG4gICAgdGhpcy5pbnMgPSBpbnM7XG4gICAgdGhpcy5vdXQgPSBudWxsIGFzIGFueTtcbiAgICB0aGlzLm9wZW4gPSB0cnVlO1xuICAgIHRoaXMuYWN0aXZlID0gbnVsbDtcbiAgICB0aGlzLmFjdGl2ZUlMID0gbnVsbDtcbiAgICB0aGlzLnNlcSA9IFtdO1xuICB9XG5cbiAgX3N0YXJ0KG91dDogU3RyZWFtPFQ+KTogdm9pZCB7XG4gICAgdGhpcy5vdXQgPSBvdXQ7XG4gICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZSA9IG51bGw7XG4gICAgdGhpcy5hY3RpdmVJTCA9IG5ldyBGU0lubmVyKG91dCwgdGhpcyk7XG4gICAgdGhpcy5zZXEgPSBbXTtcbiAgICB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICB9XG5cbiAgX3N0b3AoKTogdm9pZCB7XG4gICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICBpZiAodGhpcy5hY3RpdmUgJiYgdGhpcy5hY3RpdmVJTCkge1xuICAgICAgdGhpcy5hY3RpdmUuX3JlbW92ZSh0aGlzLmFjdGl2ZUlMKTtcbiAgICB9XG4gICAgdGhpcy5vcGVuID0gdHJ1ZTtcbiAgICB0aGlzLmFjdGl2ZSA9IG51bGw7XG4gICAgdGhpcy5hY3RpdmVJTCA9IG51bGw7XG4gICAgdGhpcy5zZXEgPSBbXTtcbiAgICB0aGlzLm91dCA9IG51bGwgYXMgYW55O1xuICB9XG5cbiAgbGVzcygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGl2ZSA9IG51bGw7XG4gICAgY29uc3Qgc2VxID0gdGhpcy5zZXE7XG4gICAgaWYgKHNlcS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLl9uKHNlcS5zaGlmdCgpIGFzIFN0cmVhbTxUPik7XG4gICAgfVxuICAgIGlmICghdGhpcy5vcGVuICYmICF0aGlzLmFjdGl2ZSkge1xuICAgICAgdGhpcy5vdXQuX2MoKTtcbiAgICB9XG4gIH1cblxuICBfbihzOiBTdHJlYW08VD4pIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKCF1KSByZXR1cm47XG4gICAgaWYgKHRoaXMuYWN0aXZlKSB7XG4gICAgICB0aGlzLnNlcS5wdXNoKHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHM7XG4gICAgICBzLl9hZGQodGhpcy5hY3RpdmVJTCBhcyBGU0lubmVyPFQ+KTtcbiAgICB9XG4gIH1cblxuICBfZShlcnI6IGFueSkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAoIXUpIHJldHVybjtcbiAgICB1Ll9lKGVycik7XG4gIH1cblxuICBfYygpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKCF1KSByZXR1cm47XG4gICAgdGhpcy5vcGVuID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZSAmJiB0aGlzLnNlcS5sZW5ndGggPT09IDApIHtcbiAgICAgIHUuX2MoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGbGF0dGVucyBhIFwic3RyZWFtIG9mIHN0cmVhbXNcIiwgaGFuZGxpbmcgb25seSBvbmUgbmVzdGVkIHN0cmVhbSBhdCBhIHRpbWUsXG4gKiB3aXRoIG5vIGNvbmN1cnJlbmN5LCBidXQgZG9lcyBub3QgZHJvcCBuZXN0ZWQgc3RyZWFtcyBsaWtlIGBmbGF0dGVuYCBkb2VzLlxuICpcbiAqIElmIHRoZSBpbnB1dCBzdHJlYW0gaXMgYSBzdHJlYW0gdGhhdCBlbWl0cyBzdHJlYW1zLCB0aGVuIHRoaXMgb3BlcmF0b3Igd2lsbFxuICogcmV0dXJuIGFuIG91dHB1dCBzdHJlYW0gd2hpY2ggaXMgYSBmbGF0IHN0cmVhbTogZW1pdHMgcmVndWxhciBldmVudHMuIFRoZVxuICogZmxhdHRlbmluZyBoYXBwZW5zIHNlcXVlbnRpYWxseSBhbmQgd2l0aG91dCBjb25jdXJyZW5jeS4gSXQgd29ya3MgbGlrZSB0aGlzOlxuICogd2hlbiB0aGUgaW5wdXQgc3RyZWFtIGVtaXRzIGEgbmVzdGVkIHN0cmVhbSwgKmZsYXR0ZW5TZXF1ZW50aWFsbHkqIHdpbGwgc3RhcnRcbiAqIGltaXRhdGluZyB0aGF0IG5lc3RlZCBvbmUuIFdoZW4gdGhlIG5leHQgbmVzdGVkIHN0cmVhbSBpcyBlbWl0dGVkIG9uIHRoZVxuICogaW5wdXQgc3RyZWFtLCAqZmxhdHRlblNlcXVlbnRpYWxseSogd2lsbCBrZWVwIHRoYXQgaW4gYSBidWZmZXIsIGFuZCBvbmx5XG4gKiBzdGFydCBpbWl0YXRpbmcgaXQgb25jZSB0aGUgcHJldmlvdXMgbmVzdGVkIHN0cmVhbSBjb21wbGV0ZXMuXG4gKlxuICogSW4gZXNzZW5jZSwgYGZsYXR0ZW5TZXF1ZW50aWFsbHlgIGNvbmNhdGVuYXRlcyBhbGwgbmVzdGVkIHN0cmVhbXMuXG4gKlxuICogTWFyYmxlIGRpYWdyYW06XG4gKlxuICogYGBgdGV4dFxuICogLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogICBcXCAgICAgICAgXFxcbiAqICAgIFxcICAgICAgIC0tLS0xLS0tLTItLS0zLS18XG4gKiAgICAtLWEtLWItLS0tYy0tLS1kLS18XG4gKiAgICAgICAgICBmbGF0dGVuU2VxdWVudGlhbGx5XG4gKiAtLS0tLWEtLWItLS0tYy0tLS1kLS0tLS0tMS0tLS0yLS0tMy0tXG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJuIHtTdHJlYW19XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZsYXR0ZW5TZXF1ZW50aWFsbHk8VD4oaW5zOiBTdHJlYW08U3RyZWFtPFQ+Pik6IFN0cmVhbTxUPiB7XG4gIHJldHVybiBuZXcgU3RyZWFtPFQ+KG5ldyBGbGF0dGVuU2VxT3BlcmF0b3IoaW5zKSk7XG59XG4iXX0= |
\ | No newline at end of file |