1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var index_1 = require("../index");
|
4 | var SeparatorIL = /** @class */ (function () {
|
5 | function SeparatorIL(out, op) {
|
6 | this.out = out;
|
7 | this.op = op;
|
8 | }
|
9 | SeparatorIL.prototype._n = function (_t) {
|
10 | this.op.up();
|
11 | };
|
12 | SeparatorIL.prototype._e = function (err) {
|
13 | this.out._e(err);
|
14 | };
|
15 | SeparatorIL.prototype._c = function () {
|
16 | this.op.curr._c();
|
17 | this.out._c();
|
18 | };
|
19 | return SeparatorIL;
|
20 | }());
|
21 | var SplitOperator = /** @class */ (function () {
|
22 | function SplitOperator(s, // s = separator
|
23 | ins) {
|
24 | this.s = s;
|
25 | this.ins = ins;
|
26 | this.type = 'split';
|
27 | this.curr = new index_1.Stream();
|
28 | this.out = null;
|
29 | this.sil = index_1.NO_IL; // sil = separator InternalListener
|
30 | }
|
31 | SplitOperator.prototype._start = function (out) {
|
32 | this.out = out;
|
33 | this.s._add(this.sil = new SeparatorIL(out, this));
|
34 | this.ins._add(this);
|
35 | out._n(this.curr);
|
36 | };
|
37 | SplitOperator.prototype._stop = function () {
|
38 | this.ins._remove(this);
|
39 | this.s._remove(this.sil);
|
40 | this.curr = new index_1.Stream();
|
41 | this.out = null;
|
42 | this.sil = index_1.NO_IL;
|
43 | };
|
44 | SplitOperator.prototype.up = function () {
|
45 | this.curr._c();
|
46 | this.out._n(this.curr = new index_1.Stream());
|
47 | };
|
48 | SplitOperator.prototype._n = function (t) {
|
49 | if (!this.out)
|
50 | return;
|
51 | this.curr._n(t);
|
52 | };
|
53 | SplitOperator.prototype._e = function (err) {
|
54 | var u = this.out;
|
55 | if (!u)
|
56 | return;
|
57 | u._e(err);
|
58 | };
|
59 | SplitOperator.prototype._c = function () {
|
60 | var u = this.out;
|
61 | if (!u)
|
62 | return;
|
63 | this.curr._c();
|
64 | u._c();
|
65 | };
|
66 | return SplitOperator;
|
67 | }());
|
68 | exports.SplitOperator = SplitOperator;
|
69 | /**
|
70 | * Splits a stream using a separator stream. Returns a stream that emits
|
71 | * streams.
|
72 | *
|
73 | * Marble diagram:
|
74 | *
|
75 | * ```text
|
76 | * --1--2--3--4--5--6--7--8--9|
|
77 | * split( --a----b--- )
|
78 | * ---------------------------|
|
79 | * : : :
|
80 | * 1--2--3-|: :
|
81 | * 4--5|:
|
82 | * -6--7--8--9|
|
83 | * ```
|
84 | *
|
85 | * Example:
|
86 | *
|
87 | * ```js
|
88 | * import split from 'xstream/extra/split'
|
89 | * import concat from 'xstream/extra/concat'
|
90 | *
|
91 | * const source = xs.periodic(50).take(10)
|
92 | * const separator = concat(xs.periodic(167).take(2), xs.never())
|
93 | * const result = source.compose(split(separator))
|
94 | *
|
95 | * result.addListener({
|
96 | * next: stream => {
|
97 | * stream.addListener({
|
98 | * next: i => console.log(i),
|
99 | * error: err => console.error(err),
|
100 | * complete: () => console.log('inner completed')
|
101 | * })
|
102 | * },
|
103 | * error: err => console.error(err),
|
104 | * complete: () => console.log('outer completed')
|
105 | * })
|
106 | * ```
|
107 | *
|
108 | * ```text
|
109 | * > 0
|
110 | * > 1
|
111 | * > 2
|
112 | * > inner completed
|
113 | * > 3
|
114 | * > 4
|
115 | * > 5
|
116 | * > inner completed
|
117 | * > 6
|
118 | * > 7
|
119 | * > 8
|
120 | * > 9
|
121 | * > inner completed
|
122 | * > outer completed
|
123 | * ```
|
124 | *
|
125 | * @param {Stream} separator Some other stream that is used to know when to
|
126 | * split the output stream.
|
127 | * @return {Stream}
|
128 | */
|
129 | function split(separator) {
|
130 | return function splitOperator(ins) {
|
131 | return new index_1.Stream(new SplitOperator(separator, ins));
|
132 | };
|
133 | }
|
134 | exports.default = split;
|
135 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BsaXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZXh0cmEvc3BsaXQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxrQ0FBOEU7QUFFOUU7SUFDRSxxQkFBbUIsR0FBc0IsRUFDckIsRUFBb0I7UUFEckIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBa0I7SUFDeEMsQ0FBQztJQUVELHdCQUFFLEdBQUYsVUFBRyxFQUFPO1FBQ1IsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCx3QkFBRSxHQUFGLFVBQUcsR0FBUTtRQUNULElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCx3QkFBRSxHQUFGO1FBQ0UsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDbEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBQ0gsa0JBQUM7QUFBRCxDQUFDLEFBakJELElBaUJDO0FBRUQ7SUFNRSx1QkFBbUIsQ0FBYyxFQUFFLGdCQUFnQjtJQUNoQyxHQUFjO1FBRGQsTUFBQyxHQUFELENBQUMsQ0FBYTtRQUNkLFFBQUcsR0FBSCxHQUFHLENBQVc7UUFOMUIsU0FBSSxHQUFHLE9BQU8sQ0FBQztRQUNmLFNBQUksR0FBYyxJQUFJLGNBQU0sRUFBSyxDQUFDO1FBQ2xDLFFBQUcsR0FBc0IsSUFBVyxDQUFDO1FBQ3BDLFFBQUcsR0FBMEIsYUFBSyxDQUFDLENBQUMsbUNBQW1DO0lBSS9FLENBQUM7SUFFRCw4QkFBTSxHQUFOLFVBQU8sR0FBc0I7UUFDM0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDZixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksV0FBVyxDQUFJLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3BCLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BCLENBQUM7SUFFRCw2QkFBSyxHQUFMO1FBQ0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxjQUFNLEVBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxHQUFHLElBQVcsQ0FBQztRQUN2QixJQUFJLENBQUMsR0FBRyxHQUFHLGFBQUssQ0FBQztJQUNuQixDQUFDO0lBRUQsMEJBQUUsR0FBRjtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksY0FBTSxFQUFLLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQsMEJBQUUsR0FBRixVQUFHLENBQUk7UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xCLENBQUM7SUFFRCwwQkFBRSxHQUFGLFVBQUcsR0FBUTtRQUNULElBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkIsSUFBSSxDQUFDLENBQUM7WUFBRSxPQUFPO1FBQ2YsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFRCwwQkFBRSxHQUFGO1FBQ0UsSUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNuQixJQUFJLENBQUMsQ0FBQztZQUFFLE9BQU87UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDO0lBQ1QsQ0FBQztJQUNILG9CQUFDO0FBQUQsQ0FBQyxBQS9DRCxJQStDQztBQS9DWSxzQ0FBYTtBQWlEMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkRHO0FBQ0gsU0FBd0IsS0FBSyxDQUFJLFNBQXNCO0lBQ3JELE9BQU8sU0FBUyxhQUFhLENBQUMsR0FBYztRQUMxQyxPQUFPLElBQUksY0FBTSxDQUFZLElBQUksYUFBYSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUMsQ0FBQztBQUNKLENBQUM7QUFKRCx3QkFJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7T3BlcmF0b3IsIEludGVybmFsTGlzdGVuZXIsIFN0cmVhbSwgT3V0U2VuZGVyLCBOT19JTH0gZnJvbSAnLi4vaW5kZXgnO1xuXG5jbGFzcyBTZXBhcmF0b3JJTDxUPiBpbXBsZW1lbnRzIEludGVybmFsTGlzdGVuZXI8YW55PiwgT3V0U2VuZGVyPFN0cmVhbTxUPj4ge1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3V0OiBTdHJlYW08U3RyZWFtPFQ+PixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBvcDogU3BsaXRPcGVyYXRvcjxUPikge1xuICB9XG5cbiAgX24oX3Q6IGFueSkge1xuICAgIHRoaXMub3AudXAoKTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgdGhpcy5vdXQuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIHRoaXMub3AuY3Vyci5fYygpO1xuICAgIHRoaXMub3V0Ll9jKCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFNwbGl0T3BlcmF0b3I8VD4gaW1wbGVtZW50cyBPcGVyYXRvcjxULCBTdHJlYW08VD4+IHtcbiAgcHVibGljIHR5cGUgPSAnc3BsaXQnO1xuICBwdWJsaWMgY3VycjogU3RyZWFtPFQ+ID0gbmV3IFN0cmVhbTxUPigpO1xuICBwdWJsaWMgb3V0OiBTdHJlYW08U3RyZWFtPFQ+PiA9IG51bGwgYXMgYW55O1xuICBwcml2YXRlIHNpbDogSW50ZXJuYWxMaXN0ZW5lcjxhbnk+ID0gTk9fSUw7IC8vIHNpbCA9IHNlcGFyYXRvciBJbnRlcm5hbExpc3RlbmVyXG5cbiAgY29uc3RydWN0b3IocHVibGljIHM6IFN0cmVhbTxhbnk+LCAvLyBzID0gc2VwYXJhdG9yXG4gICAgICAgICAgICAgIHB1YmxpYyBpbnM6IFN0cmVhbTxUPikge1xuICB9XG5cbiAgX3N0YXJ0KG91dDogU3RyZWFtPFN0cmVhbTxUPj4pOiB2b2lkIHtcbiAgICB0aGlzLm91dCA9IG91dDtcbiAgICB0aGlzLnMuX2FkZCh0aGlzLnNpbCA9IG5ldyBTZXBhcmF0b3JJTDxUPihvdXQsIHRoaXMpKTtcbiAgICB0aGlzLmlucy5fYWRkKHRoaXMpO1xuICAgIG91dC5fbih0aGlzLmN1cnIpO1xuICB9XG5cbiAgX3N0b3AoKTogdm9pZCB7XG4gICAgdGhpcy5pbnMuX3JlbW92ZSh0aGlzKTtcbiAgICB0aGlzLnMuX3JlbW92ZSh0aGlzLnNpbCk7XG4gICAgdGhpcy5jdXJyID0gbmV3IFN0cmVhbTxUPigpO1xuICAgIHRoaXMub3V0ID0gbnVsbCBhcyBhbnk7XG4gICAgdGhpcy5zaWwgPSBOT19JTDtcbiAgfVxuXG4gIHVwKCk6IHZvaWQge1xuICAgIHRoaXMuY3Vyci5fYygpO1xuICAgIHRoaXMub3V0Ll9uKHRoaXMuY3VyciA9IG5ldyBTdHJlYW08VD4oKSk7XG4gIH1cblxuICBfbih0OiBUKSB7XG4gICAgaWYgKCF0aGlzLm91dCkgcmV0dXJuO1xuICAgIHRoaXMuY3Vyci5fbih0KTtcbiAgfVxuXG4gIF9lKGVycjogYW55KSB7XG4gICAgY29uc3QgdSA9IHRoaXMub3V0O1xuICAgIGlmICghdSkgcmV0dXJuO1xuICAgIHUuX2UoZXJyKTtcbiAgfVxuXG4gIF9jKCkge1xuICAgIGNvbnN0IHUgPSB0aGlzLm91dDtcbiAgICBpZiAoIXUpIHJldHVybjtcbiAgICB0aGlzLmN1cnIuX2MoKTtcbiAgICB1Ll9jKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTcGxpdHMgYSBzdHJlYW0gdXNpbmcgYSBzZXBhcmF0b3Igc3RyZWFtLiBSZXR1cm5zIGEgc3RyZWFtIHRoYXQgZW1pdHNcbiAqIHN0cmVhbXMuXG4gKlxuICogTWFyYmxlIGRpYWdyYW06XG4gKlxuICogYGBgdGV4dFxuICogLS0xLS0yLS0zLS00LS01LS02LS03LS04LS05fFxuICogIHNwbGl0KCAtLWEtLS0tYi0tLSApXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiAgIDogICAgICAgIDogICAgOlxuICogICAxLS0yLS0zLXw6ICAgIDpcbiAqICAgICAgICAgICAgNC0tNXw6XG4gKiAgICAgICAgICAgICAgICAgLTYtLTctLTgtLTl8XG4gKiBgYGBcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYGpzXG4gKiBpbXBvcnQgc3BsaXQgZnJvbSAneHN0cmVhbS9leHRyYS9zcGxpdCdcbiAqIGltcG9ydCBjb25jYXQgZnJvbSAneHN0cmVhbS9leHRyYS9jb25jYXQnXG4gKlxuICogY29uc3Qgc291cmNlID0geHMucGVyaW9kaWMoNTApLnRha2UoMTApXG4gKiBjb25zdCBzZXBhcmF0b3IgPSBjb25jYXQoeHMucGVyaW9kaWMoMTY3KS50YWtlKDIpLCB4cy5uZXZlcigpKVxuICogY29uc3QgcmVzdWx0ID0gc291cmNlLmNvbXBvc2Uoc3BsaXQoc2VwYXJhdG9yKSlcbiAqXG4gKiByZXN1bHQuYWRkTGlzdGVuZXIoe1xuICogICBuZXh0OiBzdHJlYW0gPT4ge1xuICogICAgIHN0cmVhbS5hZGRMaXN0ZW5lcih7XG4gKiAgICAgICBuZXh0OiBpID0+IGNvbnNvbGUubG9nKGkpLFxuICogICAgICAgZXJyb3I6IGVyciA9PiBjb25zb2xlLmVycm9yKGVyciksXG4gKiAgICAgICBjb21wbGV0ZTogKCkgPT4gY29uc29sZS5sb2coJ2lubmVyIGNvbXBsZXRlZCcpXG4gKiAgICAgfSlcbiAqICAgfSxcbiAqICAgZXJyb3I6IGVyciA9PiBjb25zb2xlLmVycm9yKGVyciksXG4gKiAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnb3V0ZXIgY29tcGxldGVkJylcbiAqIH0pXG4gKiBgYGBcbiAqXG4gKiBgYGB0ZXh0XG4gKiA+IDBcbiAqID4gMVxuICogPiAyXG4gKiA+IGlubmVyIGNvbXBsZXRlZFxuICogPiAzXG4gKiA+IDRcbiAqID4gNVxuICogPiBpbm5lciBjb21wbGV0ZWRcbiAqID4gNlxuICogPiA3XG4gKiA+IDhcbiAqID4gOVxuICogPiBpbm5lciBjb21wbGV0ZWRcbiAqID4gb3V0ZXIgY29tcGxldGVkXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ge1N0cmVhbX0gc2VwYXJhdG9yIFNvbWUgb3RoZXIgc3RyZWFtIHRoYXQgaXMgdXNlZCB0byBrbm93IHdoZW4gdG9cbiAqIHNwbGl0IHRoZSBvdXRwdXQgc3RyZWFtLlxuICogQHJldHVybiB7U3RyZWFtfVxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzcGxpdDxUPihzZXBhcmF0b3I6IFN0cmVhbTxhbnk+KTogKGluczogU3RyZWFtPFQ+KSA9PiBTdHJlYW08U3RyZWFtPFQ+PiB7XG4gIHJldHVybiBmdW5jdGlvbiBzcGxpdE9wZXJhdG9yKGluczogU3RyZWFtPFQ+KTogU3RyZWFtPFN0cmVhbTxUPj4ge1xuICAgIHJldHVybiBuZXcgU3RyZWFtPFN0cmVhbTxUPj4obmV3IFNwbGl0T3BlcmF0b3Ioc2VwYXJhdG9yLCBpbnMpKTtcbiAgfTtcbn1cbiJdfQ== |
\ | No newline at end of file |