UNPKG

9.04 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var index_1 = require("../index");
4var OtherIL = /** @class */ (function () {
5 function OtherIL(out, op) {
6 this.out = out;
7 this.op = op;
8 }
9 OtherIL.prototype._n = function (_t) {
10 this.op.up();
11 };
12 OtherIL.prototype._e = function (err) {
13 this.out._e(err);
14 };
15 OtherIL.prototype._c = function () { };
16 return OtherIL;
17}());
18var DropUntilOperator = /** @class */ (function () {
19 function DropUntilOperator(o, // o = other
20 ins) {
21 this.o = o;
22 this.ins = ins;
23 this.type = 'dropUntil';
24 this.out = null;
25 this.oil = index_1.NO_IL; // oil = other InternalListener
26 this.on = false;
27 }
28 DropUntilOperator.prototype._start = function (out) {
29 this.out = out;
30 this.o._add(this.oil = new OtherIL(out, this));
31 this.ins._add(this);
32 };
33 DropUntilOperator.prototype._stop = function () {
34 this.ins._remove(this);
35 this.o._remove(this.oil);
36 this.out = null;
37 this.oil = index_1.NO_IL;
38 };
39 DropUntilOperator.prototype.up = function () {
40 this.on = true;
41 this.o._remove(this.oil);
42 this.oil = index_1.NO_IL;
43 };
44 DropUntilOperator.prototype._n = function (t) {
45 var u = this.out;
46 if (!u)
47 return;
48 if (!this.on)
49 return;
50 u._n(t);
51 };
52 DropUntilOperator.prototype._e = function (err) {
53 var u = this.out;
54 if (!u)
55 return;
56 u._e(err);
57 };
58 DropUntilOperator.prototype._c = function () {
59 var u = this.out;
60 if (!u)
61 return;
62 this._stop();
63 u._c();
64 };
65 return DropUntilOperator;
66}());
67exports.DropUntilOperator = DropUntilOperator;
68/**
69 * Starts emitting the input stream when another stream emits a next event. The
70 * output stream will emit no items if another stream is empty.
71 *
72 * Marble diagram:
73 *
74 * ```text
75 * ---1---2-----3--4----5----6---
76 * dropUntil( --------a--b--| )
77 * ---------------------5----6|
78 * ```
79 *
80 * Example:
81 *
82 * ```js
83 * import dropUntil from 'xstream/extra/dropUntil'
84 *
85 * const other = xs.periodic(220).take(1)
86 *
87 * const stream = xs.periodic(50)
88 * .take(6)
89 * .compose(dropUntil(other))
90 *
91 * stream.addListener({
92 * next: i => console.log(i),
93 * error: err => console.error(err),
94 * complete: () => console.log('completed')
95 * })
96 * ```
97 *
98 * ```text
99 * > 4
100 * > 5
101 * > completed
102 * ```
103 *
104 * #### Arguments:
105 *
106 * @param {Stream} other Some other stream that is used to know when the output
107 * stream of this operator should start emitting.
108 * @return {Stream}
109 */
110function dropUntil(other) {
111 return function dropUntilOperator(ins) {
112 return new index_1.Stream(new DropUntilOperator(other, ins));
113 };
114}
115exports.default = dropUntil;
116//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHJvcFVudGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2V4dHJhL2Ryb3BVbnRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLGtDQUE4RTtBQUU5RTtJQUNFLGlCQUFtQixHQUFjLEVBQ2IsRUFBd0I7UUFEekIsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUNiLE9BQUUsR0FBRixFQUFFLENBQXNCO0lBQzVDLENBQUM7SUFFRCxvQkFBRSxHQUFGLFVBQUcsRUFBSztRQUNOLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsb0JBQUUsR0FBRixVQUFHLEdBQVE7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQixDQUFDO0lBRUQsb0JBQUUsR0FBRixjQUFNLENBQUM7SUFDVCxjQUFDO0FBQUQsQ0FBQyxBQWRELElBY0M7QUFFRDtJQU1FLDJCQUFtQixDQUFjLEVBQUUsWUFBWTtJQUM1QixHQUFjO1FBRGQsTUFBQyxHQUFELENBQUMsQ0FBYTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFOMUIsU0FBSSxHQUFHLFdBQVcsQ0FBQztRQUNuQixRQUFHLEdBQWMsSUFBVyxDQUFDO1FBQzVCLFFBQUcsR0FBMEIsYUFBSyxDQUFDLENBQUMsK0JBQStCO1FBQ25FLE9BQUUsR0FBWSxLQUFLLENBQUM7SUFJNUIsQ0FBQztJQUVELGtDQUFNLEdBQU4sVUFBTyxHQUFjO1FBQ25CLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1FBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QixDQUFDO0lBRUQsaUNBQUssR0FBTDtRQUNFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQVcsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLGFBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsOEJBQUUsR0FBRjtRQUNFLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBQ2YsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBSyxDQUFDO0lBQ25CLENBQUM7SUFFRCw4QkFBRSxHQUFGLFVBQUcsQ0FBSTtRQUNMLElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQUUsT0FBTztRQUNyQixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1YsQ0FBQztJQUVELDhCQUFFLEdBQUYsVUFBRyxHQUFRO1FBQ1QsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDZixDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1osQ0FBQztJQUVELDhCQUFFLEdBQUY7UUFDRSxJQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQ25CLElBQUksQ0FBQyxDQUFDO1lBQUUsT0FBTztRQUNmLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNULENBQUM7SUFDSCx3QkFBQztBQUFELENBQUMsQUFoREQsSUFnREM7QUFoRFksOENBQWlCO0FBa0Q5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F5Q0c7QUFDSCxTQUF3QixTQUFTLENBQUksS0FBa0I7SUFDckQsT0FBTyxTQUFTLGlCQUFpQixDQUFDLEdBQWM7UUFDOUMsT0FBTyxJQUFJLGNBQU0sQ0FBSSxJQUFJLGlCQUFpQixDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFELENBQUMsQ0FBQztBQUNKLENBQUM7QUFKRCw0QkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3BlcmF0b3IsIEludGVybmFsTGlzdGVuZXIsIFN0cmVhbSwgT3V0U2VuZGVyLCBOT19JTH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5jbGFzcyBPdGhlcklMPFQ+IGltcGxlbWVudHMgSW50ZXJuYWxMaXN0ZW5lcjxhbnk+LCBPdXRTZW5kZXI8VD4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0OiBTdHJlYW08VD4sXG4gICAgICAgICAgICAgIHByaXZhdGUgb3A6IERyb3BVbnRpbE9wZXJhdG9yPFQ+KSB7XG4gIH1cblxuICBfbihfdDogVCkge1xuICAgIHRoaXMub3AudXAoKTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgdGhpcy5vdXQuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge31cbn1cblxuZXhwb3J0IGNsYXNzIERyb3BVbnRpbE9wZXJhdG9yPFQ+IGltcGxlbWVudHMgT3BlcmF0b3I8VCwgVD4ge1xuICBwdWJsaWMgdHlwZSA9ICdkcm9wVW50aWwnO1xuICBwdWJsaWMgb3V0OiBTdHJlYW08VD4gPSBudWxsIGFzIGFueTtcbiAgcHJpdmF0ZSBvaWw6IEludGVybmFsTGlzdGVuZXI8YW55PiA9IE5PX0lMOyAvLyBvaWwgPSBvdGhlciBJbnRlcm5hbExpc3RlbmVyXG4gIHByaXZhdGUgb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgbzogU3RyZWFtPGFueT4sIC8vIG8gPSBvdGhlclxuICAgICAgICAgICAgICBwdWJsaWMgaW5zOiBTdHJlYW08VD4pIHtcbiAgfVxuXG4gIF9zdGFydChvdXQ6IFN0cmVhbTxUPik6IHZvaWQge1xuICAgIHRoaXMub3V0ID0gb3V0O1xuICAgIHRoaXMuby5fYWRkKHRoaXMub2lsID0gbmV3IE90aGVySUwob3V0LCB0aGlzKSk7XG4gICAgdGhpcy5pbnMuX2FkZCh0aGlzKTtcbiAgfVxuXG4gIF9zdG9wKCk6IHZvaWQge1xuICAgIHRoaXMuaW5zLl9yZW1vdmUodGhpcyk7XG4gICAgdGhpcy5vLl9yZW1vdmUodGhpcy5vaWwpO1xuICAgIHRoaXMub3V0ID0gbnVsbCBhcyBhbnk7XG4gICAgdGhpcy5vaWwgPSBOT19JTDtcbiAgfVxuXG4gIHVwKCk6IHZvaWQge1xuICAgIHRoaXMub24gPSB0cnVlO1xuICAgIHRoaXMuby5fcmVtb3ZlKHRoaXMub2lsKTtcbiAgICB0aGlzLm9pbCA9IE5PX0lMO1xuICB9XG5cbiAgX24odDogVCkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAoIXUpIHJldHVybjtcbiAgICBpZiAoIXRoaXMub24pIHJldHVybjtcbiAgICB1Ll9uKHQpO1xuICB9XG5cbiAgX2UoZXJyOiBhbnkpIHtcbiAgICBjb25zdCB1ID0gdGhpcy5vdXQ7XG4gICAgaWYgKCF1KSByZXR1cm47XG4gICAgdS5fZShlcnIpO1xuICB9XG5cbiAgX2MoKSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICghdSkgcmV0dXJuO1xuICAgIHRoaXMuX3N0b3AoKTtcbiAgICB1Ll9jKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTdGFydHMgZW1pdHRpbmcgdGhlIGlucHV0IHN0cmVhbSB3aGVuIGFub3RoZXIgc3RyZWFtIGVtaXRzIGEgbmV4dCBldmVudC4gVGhlXG4gKiBvdXRwdXQgc3RyZWFtIHdpbGwgZW1pdCBubyBpdGVtcyBpZiBhbm90aGVyIHN0cmVhbSBpcyBlbXB0eS5cbiAqXG4gKiBNYXJibGUgZGlhZ3JhbTpcbiAqXG4gKiBgYGB0ZXh0XG4gKiAtLS0xLS0tMi0tLS0tMy0tNC0tLS01LS0tLTYtLS1cbiAqICAgZHJvcFVudGlsKCAtLS0tLS0tLWEtLWItLXwgKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tNS0tLS02fFxuICogYGBgXG4gKlxuICogRXhhbXBsZTpcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IGRyb3BVbnRpbCBmcm9tICd4c3RyZWFtL2V4dHJhL2Ryb3BVbnRpbCdcbiAqXG4gKiBjb25zdCBvdGhlciA9IHhzLnBlcmlvZGljKDIyMCkudGFrZSgxKVxuICpcbiAqIGNvbnN0IHN0cmVhbSA9IHhzLnBlcmlvZGljKDUwKVxuICogICAudGFrZSg2KVxuICogICAuY29tcG9zZShkcm9wVW50aWwob3RoZXIpKVxuICpcbiAqIHN0cmVhbS5hZGRMaXN0ZW5lcih7XG4gKiAgIG5leHQ6IGkgPT4gY29uc29sZS5sb2coaSksXG4gKiAgIGVycm9yOiBlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpLFxuICogICBjb21wbGV0ZTogKCkgPT4gY29uc29sZS5sb2coJ2NvbXBsZXRlZCcpXG4gKiB9KVxuICogYGBgXG4gKlxuICogYGBgdGV4dFxuICogPiA0XG4gKiA+IDVcbiAqID4gY29tcGxldGVkXG4gKiBgYGBcbiAqXG4gKiAjIyMjIEFyZ3VtZW50czpcbiAqXG4gKiBAcGFyYW0ge1N0cmVhbX0gb3RoZXIgU29tZSBvdGhlciBzdHJlYW0gdGhhdCBpcyB1c2VkIHRvIGtub3cgd2hlbiB0aGUgb3V0cHV0XG4gKiBzdHJlYW0gb2YgdGhpcyBvcGVyYXRvciBzaG91bGQgc3RhcnQgZW1pdHRpbmcuXG4gKiBAcmV0dXJuIHtTdHJlYW19XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRyb3BVbnRpbDxUPihvdGhlcjogU3RyZWFtPGFueT4pOiAoaW5zOiBTdHJlYW08VD4pID0+IFN0cmVhbTxUPiB7XG4gIHJldHVybiBmdW5jdGlvbiBkcm9wVW50aWxPcGVyYXRvcihpbnM6IFN0cmVhbTxUPik6IFN0cmVhbTxUPiB7XG4gICAgcmV0dXJuIG5ldyBTdHJlYW08VD4obmV3IERyb3BVbnRpbE9wZXJhdG9yKG90aGVyLCBpbnMpKTtcbiAgfTtcbn1cbiJdfQ==
\No newline at end of file