UNPKG

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