Skip to content

Commit 199a791

Browse files
committed
refactor(utils): leverage pipe from RxJS
1 parent c5d3039 commit 199a791

File tree

5 files changed

+21
-29
lines changed

5 files changed

+21
-29
lines changed

packages/utils/src/collect.ts

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,11 @@ export const collect = <K, V>(
3535
)
3636
: defaultFilter
3737

38-
return (source$: Observable<GroupedObservable<K, V>>) =>
39-
collector(source$, (o) =>
40-
map((x) => ({
41-
t: x
42-
? (CollectorAction.Set as const)
43-
: (CollectorAction.Delete as const),
44-
k: o.key,
45-
v: o,
46-
}))(enhancer(o)),
47-
)
38+
return collector((o) =>
39+
map((x) => ({
40+
t: x ? (CollectorAction.Set as const) : (CollectorAction.Delete as const),
41+
k: o.key,
42+
v: o,
43+
}))(enhancer(o)),
44+
)
4845
}

packages/utils/src/collectValues.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Observable, GroupedObservable, OperatorFunction } from "rxjs"
1+
import { GroupedObservable, OperatorFunction } from "rxjs"
22
import { map, endWith } from "rxjs/operators"
33
import { CollectorAction, collector } from "./internal-utils"
44

@@ -9,8 +9,8 @@ import { CollectorAction, collector } from "./internal-utils"
99
export const collectValues = <K, V>(): OperatorFunction<
1010
GroupedObservable<K, V>,
1111
Map<K, V>
12-
> => (source$: Observable<GroupedObservable<K, V>>): Observable<Map<K, V>> =>
13-
collector(source$, (inner$) =>
12+
> =>
13+
collector((inner$) =>
1414
inner$.pipe(
1515
map((v) => ({ t: CollectorAction.Set as const, k: inner$.key, v })),
1616
endWith({ t: CollectorAction.Delete, k: inner$.key }),

packages/utils/src/internal-utils.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Observable, defer, GroupedObservable } from "rxjs"
1+
import { Observable, defer, GroupedObservable, pipe } from "rxjs"
22
import { shareLatest } from "@react-rxjs/core"
33
import {
44
scan,
@@ -44,15 +44,14 @@ export const enum CollectorAction {
4444
}
4545

4646
export const collector = <K, V, VV>(
47-
source: Observable<GroupedObservable<K, V>>,
4847
enhancer: (
4948
source: GroupedObservable<K, V>,
5049
) => Observable<
5150
| { t: CollectorAction.Delete; k: K }
5251
| { t: CollectorAction.Set; k: K; v: VV }
5352
>,
54-
): Observable<Map<K, VV>> =>
55-
source.pipe(
53+
): ((source: Observable<GroupedObservable<K, V>>) => Observable<Map<K, VV>>) =>
54+
pipe(
5655
publish((x) => x.pipe(mergeMap(enhancer), takeUntil(takeLast(1)(x)))),
5756
endWith({ t: CollectorAction.Complete as const }),
5857
scanWithDefaultValue(

packages/utils/src/suspend.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ObservableInput, from } from "rxjs"
1+
import { ObservableInput, from, Observable } from "rxjs"
22
import { startWith } from "rxjs/operators"
33
import { SUSPENSE } from "@react-rxjs/core"
44

@@ -7,5 +7,7 @@ import { SUSPENSE } from "@react-rxjs/core"
77
*
88
* @param source$ Source observable
99
*/
10-
export const suspend = <T>(source$: ObservableInput<T>) =>
11-
from(source$).pipe(startWith(SUSPENSE))
10+
export const suspend: <T>(
11+
source$: ObservableInput<T>,
12+
) => Observable<T | typeof SUSPENSE> = <T>(source$: ObservableInput<T>) =>
13+
startWith(SUSPENSE)(from(source$)) as any
Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import {
2-
ObservableInput,
3-
Observable,
4-
OperatorFunction,
5-
ObservedValueOf,
6-
} from "rxjs"
1+
import { ObservableInput, OperatorFunction, ObservedValueOf, pipe } from "rxjs"
72
import { switchMap } from "rxjs/operators"
83
import { suspend } from "./suspend"
94
import { SUSPENSE } from "@react-rxjs/core"
@@ -16,6 +11,5 @@ import { SUSPENSE } from "@react-rxjs/core"
1611
*/
1712
export const switchMapSuspended = <T, O extends ObservableInput<any>>(
1813
project: (value: T, index: number) => O,
19-
): OperatorFunction<T, ObservedValueOf<O> | typeof SUSPENSE> => (
20-
src$: Observable<T>,
21-
) => src$.pipe(switchMap((x, index) => suspend(project(x, index))))
14+
): OperatorFunction<T, ObservedValueOf<O> | typeof SUSPENSE> =>
15+
pipe(switchMap((x, index) => suspend(project(x, index))))

0 commit comments

Comments
 (0)