1 | import { AsyncIterableX } from './asynciterablex';
|
2 | import { create } from './create';
|
3 | class SharedAsyncIterable extends AsyncIterableX {
|
4 | constructor(it) {
|
5 | super();
|
6 | this._it = it;
|
7 | }
|
8 | [Symbol.asyncIterator]() {
|
9 | return this._it;
|
10 | }
|
11 | }
|
12 | export function share(source, selector) {
|
13 | return selector
|
14 | ? create(async () => {
|
15 | const it = await selector(new SharedAsyncIterable(source[Symbol.asyncIterator]()));
|
16 | return it[Symbol.asyncIterator]();
|
17 | })
|
18 | : new SharedAsyncIterable(source[Symbol.asyncIterator]());
|
19 | }
|
20 |
|
21 |
|