UNPKG

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