Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 91f3e81

Browse files
authored
Merge branch 'main' into refactor-unify-naming-drop-modules
2 parents f1b3634 + cac56ab commit 91f3e81

7 files changed

+55
-28
lines changed

libs/cdk/coercing/spec/coerce-all-factory.spec.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import {
44
exhaustAll,
55
mergeAll,
66
Observable,
7-
ObservableInput,
87
of,
98
ReplaySubject,
109
Subject,
@@ -22,7 +21,7 @@ function createInputStream(
2221
values: Record<string, any>,
2322
inputHandler: {
2423
values$: Observable<string | string[]>;
25-
next(observable: ObservableInput<string | string[]> | string): void;
24+
next(observable: Observable<string | string[]> | string): void;
2625
}
2726
) {
2827
cold(marble, values)
@@ -63,7 +62,7 @@ describe('coerceAllFactory', () => {
6362
let testScheduler: TestScheduler;
6463
let inputHandler: {
6564
values$: Observable<string | string[]>;
66-
next(observable: ObservableInput<string | string[]> | string): void;
65+
next(observable: Observable<string | string[]> | string): void;
6766
};
6867

6968
beforeEach(() => {
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import { coerceObservable } from '@rx-angular/cdk/coercing';
2+
import { jestMatcher } from '@test-helpers';
3+
import { of } from 'rxjs';
4+
import { TestScheduler } from 'rxjs/testing';
5+
6+
describe(coerceObservable.name, () => {
7+
let testScheduler: TestScheduler;
8+
9+
beforeEach(() => {
10+
testScheduler = new TestScheduler(jestMatcher);
11+
});
12+
13+
it('should coerce static values', () => {
14+
testScheduler.run(({ expectObservable }) => {
15+
expectObservable(coerceObservable('a')).toBe('(a|)', { a: 'a' });
16+
});
17+
});
18+
19+
it('should preserve observable values', () => {
20+
testScheduler.run(({ cold, expectObservable, expectSubscriptions }) => {
21+
const values = { a: of('a'), b: of('b'), c: of('c') };
22+
const src = cold('a---b---c| ', values);
23+
const subs = ' ^--------! ';
24+
const expected = 'a---b---c| ';
25+
const a = cold(' (a|) ');
26+
const b = cold(' (b|) ');
27+
const c = cold(' (c|)');
28+
const expectedValues = { a, b, c };
29+
30+
const result = coerceObservable(src);
31+
32+
expectObservable(result).toBe(expected, expectedValues);
33+
expectSubscriptions(src.subscriptions).toBe(subs);
34+
});
35+
});
36+
});

libs/cdk/coercing/src/lib/coerce-all-factory.ts

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,24 @@
1-
import { Observable, ObservableInput, OperatorFunction, Subject } from 'rxjs';
1+
import { Observable, OperatorFunction, Subject } from 'rxjs';
22
import { switchAll } from 'rxjs/operators';
33
import { coerceDistinctWith } from './coerceDistinctObservableWith';
44

55
/**
6-
* @internal
7-
*
86
* A factory function returning an object to handle the process of merging Observable next notifications into one
97
* Observable. This API takes away the clumsy handling of static values and Observable, reduces the number of
108
* emissions by:
119
* - only merging distinct Observables
12-
* - only emit distingt values of the merged result
10+
* - only emit distinct values of the merged result
1311
*
1412
* You can next a Observable of `U` multiple times and merge them into the Observable exposed under one optimized
1513
* `values$`
1614
*
1715
*/
1816
export function coerceAllFactory<U, R = U>(
19-
subjectFactory?: () => Subject<ObservableInput<U> | U>,
20-
flattenOperator?: OperatorFunction<ObservableInput<U>, R>
17+
subjectFactory?: () => Subject<Observable<U> | U>,
18+
flattenOperator?: OperatorFunction<Observable<U>, R>
2119
): {
2220
values$: Observable<R>;
23-
next(observable: ObservableInput<U> | U): void;
21+
next(observable: Observable<U> | U): void;
2422
} {
2523
const observablesSubject = subjectFactory ? subjectFactory() : new Subject();
2624
flattenOperator = flattenOperator || (switchAll() as any);
@@ -29,7 +27,7 @@ export function coerceAllFactory<U, R = U>(
2927
) as Observable<R>;
3028

3129
return {
32-
next(observable: ObservableInput<U> | U) {
30+
next(observable: Observable<U> | U) {
3331
observablesSubject.next(observable);
3432
},
3533
values$,

libs/cdk/coercing/src/lib/coerceDistinctObservable.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1-
import {
2-
isObservable,
3-
Observable,
4-
ObservableInput,
5-
of,
6-
OperatorFunction,
7-
} from 'rxjs';
8-
import { distinctUntilChanged, map, switchAll } from 'rxjs/operators';
1+
import { Observable, OperatorFunction } from 'rxjs';
2+
import { distinctUntilChanged, switchAll } from 'rxjs/operators';
93
import { coerceObservable } from './coerceObservable';
104

115
/**
12-
* This Observable factory creates an Observable out of a static value or ObservableInput.
6+
* This Observable factory creates an Observable out of a static value or an Observable.
137
* It forwards only distinct values from distinct incoming Observables or values.
148
* This comes in handy in any environment where you handle processing of incoming dynamic values and their state.
159
*
@@ -20,7 +14,7 @@ import { coerceObservable } from './coerceObservable';
2014
*/
2115
export function coerceDistinctObservable<T>(
2216
o$: Observable<Observable<T> | T>,
23-
flattenOperator?: OperatorFunction<ObservableInput<T>, T>
17+
flattenOperator?: OperatorFunction<Observable<T>, T>
2418
) {
2519
flattenOperator = flattenOperator || switchAll();
2620
return coerceObservable(o$).pipe(

libs/cdk/coercing/src/lib/coerceDistinctObservableWith.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Observable, ObservableInput, OperatorFunction } from 'rxjs';
1+
import { Observable, OperatorFunction } from 'rxjs';
22
import { distinctUntilChanged, switchAll } from 'rxjs/operators';
33
import { coerceObservableWith } from './coerceObservableWith';
44

@@ -13,7 +13,7 @@ import { coerceObservableWith } from './coerceObservableWith';
1313
*
1414
*/
1515
export function coerceDistinctWith<T>(
16-
flattenOperator?: OperatorFunction<ObservableInput<T>, T>
16+
flattenOperator?: OperatorFunction<Observable<T>, T>
1717
) {
1818
flattenOperator = flattenOperator || switchAll();
1919
return (o$: Observable<Observable<T> | T>) =>
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { isObservable, Observable, ObservableInput, of } from 'rxjs';
1+
import { isObservable, Observable, of } from 'rxjs';
22

33
/**
4-
* This Observable factory creates an Observable out of a static value or ObservableInput.
4+
* This Observable factory creates an Observable out of a static value or an Observable.
55
*
66
* @param o - the value to coerce
77
*/
8-
export function coerceObservable<T>(o: ObservableInput<T> | T): Observable<T> {
9-
return isObservable(o) ? o : of(o as T);
8+
export function coerceObservable<T>(o: Observable<T> | T): Observable<T> {
9+
return isObservable(o) ? o : of(o);
1010
}

libs/cdk/coercing/src/lib/coerceObservableWith.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { map } from 'rxjs/operators';
33
import { coerceObservable } from './coerceObservable';
44

55
/**
6-
* This operator maps an Observable out of a static value or ObservableInput.
6+
* This operator maps an Observable out of a static value or an Observable.
77
*
88
*/
99
export function coerceObservableWith<T>(): OperatorFunction<

0 commit comments

Comments
 (0)