Skip to content

Commit 8fdc00d

Browse files
authored
chore: move aliased/deprecated operators into separate files (#6080)
* chore: move exhaust into separate file * chore: move combineLatest into separate file * chore: move concat into separate file * chore: move merge into separate file * chore: move flatMap into separate file * chore: move race into a separate file * chore: move zip into separate file
1 parent 5dda6f3 commit 8fdc00d

16 files changed

Lines changed: 341 additions & 320 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
1-
import { of } from 'rxjs';
2-
import { exhaust } from 'rxjs/operators';
3-
4-
it('should infer correctly', () => {
5-
const o = of(of(1, 2, 3)).pipe(exhaust()); // $ExpectType Observable<number>
6-
});
7-
8-
it('should enforce types', () => {
9-
const o = of(1, 2, 3).pipe(exhaust()); // $ExpectError
10-
});
11-
12-
// TODO(benlesh): The following test fails for TypeScript 3.1, but passes in TypeScript 3.2
13-
// I'm unsure what we need to do to get this so it ignores the TS 3.1 failure, as that's a bug
14-
// in TypeScript, and this is properly typed now.
15-
16-
// it('should support union types', () => {
17-
// const a = Math.random() > 0.5 ? of(123) : of('abc');
18-
// const b = Math.random() > 0.5 ? of(123) : of('abc');
19-
// const source = of(a, b);
20-
// const o = source.pipe(exhaust()); // $ExpectType Observable<string | number>
21-
// });
1+
import { of } from 'rxjs';
2+
import { exhaustAll } from 'rxjs/operators';
3+
4+
it('should infer correctly', () => {
5+
const o = of(of(1, 2, 3)).pipe(exhaustAll()); // $ExpectType Observable<number>
6+
});
7+
8+
it('should enforce types', () => {
9+
const o = of(1, 2, 3).pipe(exhaustAll()); // $ExpectError
10+
});
11+
12+
// TODO(benlesh): The following test fails for TypeScript 3.1, but passes in TypeScript 3.2
13+
// I'm unsure what we need to do to get this so it ignores the TS 3.1 failure, as that's a bug
14+
// in TypeScript, and this is properly typed now.
15+
16+
// it('should support union types', () => {
17+
// const a = Math.random() > 0.5 ? of(123) : of('abc');
18+
// const b = Math.random() > 0.5 ? of(123) : of('abc');
19+
// const source = of(a, b);
20+
// const o = source.pipe(exhaustAll()); // $ExpectType Observable<string | number>
21+
// });
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
import { combineLatestInit } from '../observable/combineLatest';
2+
import { ObservableInput, OperatorFunction } from '../types';
3+
import { operate } from '../util/lift';
4+
import { argsOrArgArray } from '../util/argsOrArgArray';
5+
import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';
6+
import { pipe } from '../util/pipe';
7+
import { popResultSelector } from '../util/args';
8+
9+
/* tslint:disable:max-line-length */
10+
/** @deprecated use {@link combineLatestWith} */
11+
export function combineLatest<T, R>(project: (v1: T) => R): OperatorFunction<T, R>;
12+
/** @deprecated use {@link combineLatestWith} */
13+
export function combineLatest<T, T2, R>(v2: ObservableInput<T2>, project: (v1: T, v2: T2) => R): OperatorFunction<T, R>;
14+
/** @deprecated use {@link combineLatestWith} */
15+
export function combineLatest<T, T2, T3, R>(
16+
v2: ObservableInput<T2>,
17+
v3: ObservableInput<T3>,
18+
project: (v1: T, v2: T2, v3: T3) => R
19+
): OperatorFunction<T, R>;
20+
/** @deprecated use {@link combineLatestWith} */
21+
export function combineLatest<T, T2, T3, T4, R>(
22+
v2: ObservableInput<T2>,
23+
v3: ObservableInput<T3>,
24+
v4: ObservableInput<T4>,
25+
project: (v1: T, v2: T2, v3: T3, v4: T4) => R
26+
): OperatorFunction<T, R>;
27+
/** @deprecated use {@link combineLatestWith} */
28+
export function combineLatest<T, T2, T3, T4, T5, R>(
29+
v2: ObservableInput<T2>,
30+
v3: ObservableInput<T3>,
31+
v4: ObservableInput<T4>,
32+
v5: ObservableInput<T5>,
33+
project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R
34+
): OperatorFunction<T, R>;
35+
/** @deprecated use {@link combineLatestWith} */
36+
export function combineLatest<T, T2, T3, T4, T5, T6, R>(
37+
v2: ObservableInput<T2>,
38+
v3: ObservableInput<T3>,
39+
v4: ObservableInput<T4>,
40+
v5: ObservableInput<T5>,
41+
v6: ObservableInput<T6>,
42+
project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R
43+
): OperatorFunction<T, R>;
44+
/** @deprecated use {@link combineLatestWith} */
45+
export function combineLatest<T, T2>(v2: ObservableInput<T2>): OperatorFunction<T, [T, T2]>;
46+
/** @deprecated use {@link combineLatestWith} */
47+
export function combineLatest<T, T2, T3>(v2: ObservableInput<T2>, v3: ObservableInput<T3>): OperatorFunction<T, [T, T2, T3]>;
48+
/** @deprecated use {@link combineLatestWith} */
49+
export function combineLatest<T, T2, T3, T4>(
50+
v2: ObservableInput<T2>,
51+
v3: ObservableInput<T3>,
52+
v4: ObservableInput<T4>
53+
): OperatorFunction<T, [T, T2, T3, T4]>;
54+
/** @deprecated use {@link combineLatestWith} */
55+
export function combineLatest<T, T2, T3, T4, T5>(
56+
v2: ObservableInput<T2>,
57+
v3: ObservableInput<T3>,
58+
v4: ObservableInput<T4>,
59+
v5: ObservableInput<T5>
60+
): OperatorFunction<T, [T, T2, T3, T4, T5]>;
61+
/** @deprecated use {@link combineLatestWith} */
62+
export function combineLatest<T, T2, T3, T4, T5, T6>(
63+
v2: ObservableInput<T2>,
64+
v3: ObservableInput<T3>,
65+
v4: ObservableInput<T4>,
66+
v5: ObservableInput<T5>,
67+
v6: ObservableInput<T6>
68+
): OperatorFunction<T, [T, T2, T3, T4, T5, T6]>;
69+
/** @deprecated use {@link combineLatestWith} */
70+
export function combineLatest<T, R>(...observables: Array<ObservableInput<T> | ((...values: Array<T>) => R)>): OperatorFunction<T, R>;
71+
/** @deprecated use {@link combineLatestWith} */
72+
export function combineLatest<T, R>(array: ObservableInput<T>[]): OperatorFunction<T, Array<T>>;
73+
/** @deprecated use {@link combineLatestWith} */
74+
export function combineLatest<T, TOther, R>(
75+
array: ObservableInput<TOther>[],
76+
project: (v1: T, ...values: Array<TOther>) => R
77+
): OperatorFunction<T, R>;
78+
/* tslint:enable:max-line-length */
79+
80+
/**
81+
* @deprecated Deprecated, use {@link combineLatestWith} or static {@link combineLatest}
82+
*/
83+
export function combineLatest<T, R>(...args: (ObservableInput<any> | ((...values: any[]) => R))[]): OperatorFunction<T, unknown> {
84+
const resultSelector = popResultSelector(args);
85+
return resultSelector
86+
? pipe(combineLatest(...args), mapOneOrManyArgs(resultSelector))
87+
: operate((source, subscriber) => {
88+
combineLatestInit([source, ...argsOrArgArray(args)])(subscriber);
89+
});
90+
}

src/internal/operators/combineLatestWith.ts

Lines changed: 2 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1,93 +1,5 @@
1-
import { combineLatestInit } from '../observable/combineLatest';
2-
import { ObservableInput, ObservableInputTuple, OperatorFunction, Cons } from '../types';
3-
import { operate } from '../util/lift';
4-
import { argsOrArgArray } from '../util/argsOrArgArray';
5-
import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';
6-
import { pipe } from '../util/pipe';
7-
import { popResultSelector } from '../util/args';
8-
9-
/* tslint:disable:max-line-length */
10-
/** @deprecated use {@link combineLatestWith} */
11-
export function combineLatest<T, R>(project: (v1: T) => R): OperatorFunction<T, R>;
12-
/** @deprecated use {@link combineLatestWith} */
13-
export function combineLatest<T, T2, R>(v2: ObservableInput<T2>, project: (v1: T, v2: T2) => R): OperatorFunction<T, R>;
14-
/** @deprecated use {@link combineLatestWith} */
15-
export function combineLatest<T, T2, T3, R>(
16-
v2: ObservableInput<T2>,
17-
v3: ObservableInput<T3>,
18-
project: (v1: T, v2: T2, v3: T3) => R
19-
): OperatorFunction<T, R>;
20-
/** @deprecated use {@link combineLatestWith} */
21-
export function combineLatest<T, T2, T3, T4, R>(
22-
v2: ObservableInput<T2>,
23-
v3: ObservableInput<T3>,
24-
v4: ObservableInput<T4>,
25-
project: (v1: T, v2: T2, v3: T3, v4: T4) => R
26-
): OperatorFunction<T, R>;
27-
/** @deprecated use {@link combineLatestWith} */
28-
export function combineLatest<T, T2, T3, T4, T5, R>(
29-
v2: ObservableInput<T2>,
30-
v3: ObservableInput<T3>,
31-
v4: ObservableInput<T4>,
32-
v5: ObservableInput<T5>,
33-
project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R
34-
): OperatorFunction<T, R>;
35-
/** @deprecated use {@link combineLatestWith} */
36-
export function combineLatest<T, T2, T3, T4, T5, T6, R>(
37-
v2: ObservableInput<T2>,
38-
v3: ObservableInput<T3>,
39-
v4: ObservableInput<T4>,
40-
v5: ObservableInput<T5>,
41-
v6: ObservableInput<T6>,
42-
project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R
43-
): OperatorFunction<T, R>;
44-
/** @deprecated use {@link combineLatestWith} */
45-
export function combineLatest<T, T2>(v2: ObservableInput<T2>): OperatorFunction<T, [T, T2]>;
46-
/** @deprecated use {@link combineLatestWith} */
47-
export function combineLatest<T, T2, T3>(v2: ObservableInput<T2>, v3: ObservableInput<T3>): OperatorFunction<T, [T, T2, T3]>;
48-
/** @deprecated use {@link combineLatestWith} */
49-
export function combineLatest<T, T2, T3, T4>(
50-
v2: ObservableInput<T2>,
51-
v3: ObservableInput<T3>,
52-
v4: ObservableInput<T4>
53-
): OperatorFunction<T, [T, T2, T3, T4]>;
54-
/** @deprecated use {@link combineLatestWith} */
55-
export function combineLatest<T, T2, T3, T4, T5>(
56-
v2: ObservableInput<T2>,
57-
v3: ObservableInput<T3>,
58-
v4: ObservableInput<T4>,
59-
v5: ObservableInput<T5>
60-
): OperatorFunction<T, [T, T2, T3, T4, T5]>;
61-
/** @deprecated use {@link combineLatestWith} */
62-
export function combineLatest<T, T2, T3, T4, T5, T6>(
63-
v2: ObservableInput<T2>,
64-
v3: ObservableInput<T3>,
65-
v4: ObservableInput<T4>,
66-
v5: ObservableInput<T5>,
67-
v6: ObservableInput<T6>
68-
): OperatorFunction<T, [T, T2, T3, T4, T5, T6]>;
69-
/** @deprecated use {@link combineLatestWith} */
70-
export function combineLatest<T, R>(...observables: Array<ObservableInput<T> | ((...values: Array<T>) => R)>): OperatorFunction<T, R>;
71-
/** @deprecated use {@link combineLatestWith} */
72-
export function combineLatest<T, R>(array: ObservableInput<T>[]): OperatorFunction<T, Array<T>>;
73-
/** @deprecated use {@link combineLatestWith} */
74-
export function combineLatest<T, TOther, R>(
75-
array: ObservableInput<TOther>[],
76-
project: (v1: T, ...values: Array<TOther>) => R
77-
): OperatorFunction<T, R>;
78-
/* tslint:enable:max-line-length */
79-
80-
/**
81-
* @deprecated Deprecated, use {@link combineLatestWith} or static {@link combineLatest}
82-
*/
83-
export function combineLatest<T, R>(...args: (ObservableInput<any> | ((...values: any[]) => R))[]): OperatorFunction<T, unknown> {
84-
const resultSelector = popResultSelector(args);
85-
return resultSelector
86-
? pipe(combineLatest(...args), mapOneOrManyArgs(resultSelector))
87-
: operate((source, subscriber) => {
88-
combineLatestInit([source, ...argsOrArgArray(args)])(subscriber);
89-
});
90-
}
1+
import { ObservableInputTuple, OperatorFunction, Cons } from '../types';
2+
import { combineLatest } from './combineLatest';
913

924
/**
935
* Create an observable that combines the latest values from all passed observables and the source

src/internal/operators/concat.ts

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';
2+
import { operate } from '../util/lift';
3+
import { concatAll } from './concatAll';
4+
import { internalFromArray } from '../observable/fromArray';
5+
import { popScheduler } from '../util/args';
6+
7+
/** @deprecated remove in v8. Use {@link concatWith} */
8+
export function concat<T>(scheduler?: SchedulerLike): MonoTypeOperatorFunction<T>;
9+
/** @deprecated remove in v8. Use {@link concatWith} */
10+
export function concat<T, T2>(v2: ObservableInput<T2>, scheduler?: SchedulerLike): OperatorFunction<T, T | T2>;
11+
/** @deprecated remove in v8. Use {@link concatWith} */
12+
export function concat<T, T2, T3>(
13+
v2: ObservableInput<T2>,
14+
v3: ObservableInput<T3>,
15+
scheduler?: SchedulerLike
16+
): OperatorFunction<T, T | T2 | T3>;
17+
/** @deprecated remove in v8. Use {@link concatWith} */
18+
export function concat<T, T2, T3, T4>(
19+
v2: ObservableInput<T2>,
20+
v3: ObservableInput<T3>,
21+
v4: ObservableInput<T4>,
22+
scheduler?: SchedulerLike
23+
): OperatorFunction<T, T | T2 | T3 | T4>;
24+
/** @deprecated remove in v8. Use {@link concatWith} */
25+
export function concat<T, T2, T3, T4, T5>(
26+
v2: ObservableInput<T2>,
27+
v3: ObservableInput<T3>,
28+
v4: ObservableInput<T4>,
29+
v5: ObservableInput<T5>,
30+
scheduler?: SchedulerLike
31+
): OperatorFunction<T, T | T2 | T3 | T4 | T5>;
32+
/** @deprecated remove in v8. Use {@link concatWith} */
33+
export function concat<T, T2, T3, T4, T5, T6>(
34+
v2: ObservableInput<T2>,
35+
v3: ObservableInput<T3>,
36+
v4: ObservableInput<T4>,
37+
v5: ObservableInput<T5>,
38+
v6: ObservableInput<T6>,
39+
scheduler?: SchedulerLike
40+
): OperatorFunction<T, T | T2 | T3 | T4 | T5 | T6>;
41+
/** @deprecated remove in v8. Use {@link concatWith} */
42+
export function concat<T>(...observables: Array<ObservableInput<T> | SchedulerLike>): MonoTypeOperatorFunction<T>;
43+
/** @deprecated remove in v8. Use {@link concatWith} */
44+
export function concat<T, R>(...observables: Array<ObservableInput<any> | SchedulerLike>): OperatorFunction<T, R>;
45+
46+
/**
47+
* @deprecated remove in v8. Use {@link concatWith}
48+
*/
49+
export function concat<T, R>(...args: any[]): OperatorFunction<T, R> {
50+
const scheduler = popScheduler(args);
51+
return operate((source, subscriber) => {
52+
concatAll()(internalFromArray([source, ...args], scheduler)).subscribe(subscriber as any);
53+
});
54+
}
Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
import { ObservableInput, ObservableInputTuple, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from '../types';
2-
import { operate } from '../util/lift';
3-
import { concatAll } from './concatAll';
4-
import { internalFromArray } from '../observable/fromArray';
5-
import { popScheduler } from '../util/args';
1+
import { ObservableInputTuple, OperatorFunction } from '../types';
2+
import { concat } from './concat';
63

74
/**
85
* Emits all of the values from the source observable, then, once it completes, subscribes
@@ -47,52 +44,3 @@ export function concatWith<T, A extends readonly unknown[]>(
4744
): OperatorFunction<T, T | A[number]> {
4845
return concat(...otherSources);
4946
}
50-
51-
/** @deprecated remove in v8. Use {@link concatWith} */
52-
export function concat<T>(scheduler?: SchedulerLike): MonoTypeOperatorFunction<T>;
53-
/** @deprecated remove in v8. Use {@link concatWith} */
54-
export function concat<T, T2>(v2: ObservableInput<T2>, scheduler?: SchedulerLike): OperatorFunction<T, T | T2>;
55-
/** @deprecated remove in v8. Use {@link concatWith} */
56-
export function concat<T, T2, T3>(
57-
v2: ObservableInput<T2>,
58-
v3: ObservableInput<T3>,
59-
scheduler?: SchedulerLike
60-
): OperatorFunction<T, T | T2 | T3>;
61-
/** @deprecated remove in v8. Use {@link concatWith} */
62-
export function concat<T, T2, T3, T4>(
63-
v2: ObservableInput<T2>,
64-
v3: ObservableInput<T3>,
65-
v4: ObservableInput<T4>,
66-
scheduler?: SchedulerLike
67-
): OperatorFunction<T, T | T2 | T3 | T4>;
68-
/** @deprecated remove in v8. Use {@link concatWith} */
69-
export function concat<T, T2, T3, T4, T5>(
70-
v2: ObservableInput<T2>,
71-
v3: ObservableInput<T3>,
72-
v4: ObservableInput<T4>,
73-
v5: ObservableInput<T5>,
74-
scheduler?: SchedulerLike
75-
): OperatorFunction<T, T | T2 | T3 | T4 | T5>;
76-
/** @deprecated remove in v8. Use {@link concatWith} */
77-
export function concat<T, T2, T3, T4, T5, T6>(
78-
v2: ObservableInput<T2>,
79-
v3: ObservableInput<T3>,
80-
v4: ObservableInput<T4>,
81-
v5: ObservableInput<T5>,
82-
v6: ObservableInput<T6>,
83-
scheduler?: SchedulerLike
84-
): OperatorFunction<T, T | T2 | T3 | T4 | T5 | T6>;
85-
/** @deprecated remove in v8. Use {@link concatWith} */
86-
export function concat<T>(...observables: Array<ObservableInput<T> | SchedulerLike>): MonoTypeOperatorFunction<T>;
87-
/** @deprecated remove in v8. Use {@link concatWith} */
88-
export function concat<T, R>(...observables: Array<ObservableInput<any> | SchedulerLike>): OperatorFunction<T, R>;
89-
90-
/**
91-
* @deprecated remove in v8. Use {@link concatWith}
92-
*/
93-
export function concat<T, R>(...args: any[]): OperatorFunction<T, R> {
94-
const scheduler = popScheduler(args);
95-
return operate((source, subscriber) => {
96-
concatAll()(internalFromArray([source, ...args], scheduler)).subscribe(subscriber as any);
97-
});
98-
}

src/internal/operators/exhaust.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { exhaustAll } from './exhaustAll';
2+
3+
/**
4+
* @deprecated renamed. Use {@link exhaustAll}.
5+
*/
6+
export const exhaust = exhaustAll;

src/internal/operators/exhaustAll.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,3 @@ export function exhaustAll<T>(): OperatorFunction<any, T> {
7575
);
7676
});
7777
}
78-
79-
/**
80-
* @deprecated renamed. Use {@link exhaustAll}.
81-
*/
82-
export const exhaust = exhaustAll;

src/internal/operators/flatMap.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import { mergeMap } from './mergeMap';
2+
3+
/**
4+
* @deprecated renamed. Use {@link mergeMap}.
5+
*/
6+
export const flatMap = mergeMap;

src/internal/operators/merge.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { ObservableInput, ObservableInputTuple, OperatorFunction, SchedulerLike } from '../types';
2+
import { operate } from '../util/lift';
3+
import { argsOrArgArray } from '../util/argsOrArgArray';
4+
import { internalFromArray } from '../observable/fromArray';
5+
import { mergeAll } from './mergeAll';
6+
import { popNumber, popScheduler } from '../util/args';
7+
8+
/** @deprecated use {@link mergeWith} or static {@link merge} */
9+
export function merge<T, A extends unknown[]>(...args: [...ObservableInputTuple<A>]): OperatorFunction<T, T | A[number]>;
10+
/** @deprecated use {@link mergeWith} or static {@link merge} */
11+
export function merge<T, A extends unknown[]>(...args: [...ObservableInputTuple<A>, number?]): OperatorFunction<T, T | A[number]>;
12+
/** @deprecated use {@link mergeWith} or static {@link merge} */
13+
export function merge<T, A extends unknown[]>(...args: [...ObservableInputTuple<A>, SchedulerLike?]): OperatorFunction<T, T | A[number]>;
14+
/** @deprecated use {@link mergeWith} or static {@link merge} */
15+
export function merge<T, A extends unknown[]>(
16+
...args: [...ObservableInputTuple<A>, number?, SchedulerLike?]
17+
): OperatorFunction<T, T | A[number]>;
18+
19+
export function merge<T>(...args: unknown[]): OperatorFunction<T, unknown> {
20+
const scheduler = popScheduler(args);
21+
const concurrent = popNumber(args, Infinity);
22+
args = argsOrArgArray(args);
23+
24+
return operate((source, subscriber) => {
25+
mergeAll(concurrent)(internalFromArray([source, ...(args as ObservableInput<T>[])], scheduler)).subscribe(subscriber as any);
26+
});
27+
}

0 commit comments

Comments
 (0)