UNPKG

1.76 kBTypeScriptView Raw
1import { Operator, Stream } from '../index';
2export declare class SplitOperator<T> implements Operator<T, Stream<T>> {
3 s: Stream<any>;
4 ins: Stream<T>;
5 type: string;
6 curr: Stream<T>;
7 out: Stream<Stream<T>>;
8 private sil;
9 constructor(s: Stream<any>, ins: Stream<T>);
10 _start(out: Stream<Stream<T>>): void;
11 _stop(): void;
12 up(): void;
13 _n(t: T): void;
14 _e(err: any): void;
15 _c(): void;
16}
17/**
18 * Splits a stream using a separator stream. Returns a stream that emits
19 * streams.
20 *
21 * Marble diagram:
22 *
23 * ```text
24 * --1--2--3--4--5--6--7--8--9|
25 * split( --a----b--- )
26 * ---------------------------|
27 * : : :
28 * 1--2--3-|: :
29 * 4--5|:
30 * -6--7--8--9|
31 * ```
32 *
33 * Example:
34 *
35 * ```js
36 * import split from 'xstream/extra/split'
37 * import concat from 'xstream/extra/concat'
38 *
39 * const source = xs.periodic(50).take(10)
40 * const separator = concat(xs.periodic(167).take(2), xs.never())
41 * const result = source.compose(split(separator))
42 *
43 * result.addListener({
44 * next: stream => {
45 * stream.addListener({
46 * next: i => console.log(i),
47 * error: err => console.error(err),
48 * complete: () => console.log('inner completed')
49 * })
50 * },
51 * error: err => console.error(err),
52 * complete: () => console.log('outer completed')
53 * })
54 * ```
55 *
56 * ```text
57 * > 0
58 * > 1
59 * > 2
60 * > inner completed
61 * > 3
62 * > 4
63 * > 5
64 * > inner completed
65 * > 6
66 * > 7
67 * > 8
68 * > 9
69 * > inner completed
70 * > outer completed
71 * ```
72 *
73 * @param {Stream} separator Some other stream that is used to know when to
74 * split the output stream.
75 * @return {Stream}
76 */
77export default function split<T>(separator: Stream<any>): (ins: Stream<T>) => Stream<Stream<T>>;