Skip to content

Commit 36707ef

Browse files
style(typings): Updated typings for multicast and publish to return a ConnectableObservable
1 parent 4888b04 commit 36707ef

9 files changed

+49
-43
lines changed

src/operator-typings.ts

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/* tslint:disable:class-name */ /* tslint:disable:no-unused-variable */ /* tslint:disable:max-line-length */
22
import {Observable, ObservableOrPromise, ArrayOrIterator} from './Observable';
3+
import {ConnectableObservable} from './observables/ConnectableObservable';
34
import {Scheduler} from './Scheduler';
45
import {Notification} from './Notification';
56
import {Subject} from './Subject';
@@ -154,16 +155,18 @@ export interface operator_proto_materialize<T> {
154155
(): Observable<Notification<T>>;
155156
}
156157
export interface operator_proto_merge<T> {
157-
(...observables: (ObservableOrPromise<T> | Scheduler | number)[]): T;
158-
(...observables: (ArrayOrIterator<T> | Scheduler | number)[]): T;
158+
(concurrency: number): T;
159+
(scheduler: Scheduler, concurrency: number): T;
160+
(...observables: (ObservableOrPromise<T> | Scheduler | number)[]): Observable<T>;
161+
(...observables: (ArrayOrIterator<T> | Scheduler | number)[]): Observable<T>;
159162
<R>(...observables: (ObservableOrPromise<T> | Scheduler | number)[]): Observable<R>;
160163
<R>(...observables: (ArrayOrIterator<T> | Scheduler | number)[]): Observable<R>;
161164
}
162165
export interface operator_proto_mergeAll<T> {
163166
<R>(concurrent: number): Observable<R>;
164167
}
165168
export interface operator_proto_multicast<T> {
166-
(subjectOrSubjectFactory: Subject<T> | (() => Subject<T>)): Observable<T>;
169+
(subjectOrSubjectFactory: Subject<T> | (() => Subject<T>)): ConnectableObservable<T>;
167170
}
168171
export interface operator_proto_observeOn<T> {
169172
(scheduler: Scheduler, delay?: number): Observable<T>;
@@ -172,13 +175,13 @@ export interface operator_proto_partition<T> {
172175
(predicate: _Predicate<T>, thisArg?: any): Observable<[T, T]>;
173176
}
174177
export interface operator_proto_publish<T> {
175-
(): Observable<T>;
178+
(): ConnectableObservable<T>;
176179
}
177180
export interface operator_proto_publishBehavior<T> {
178-
(value: T): Observable<T>;
181+
(value: T): ConnectableObservable<T>;
179182
}
180183
export interface operator_proto_publishReplay<T> {
181-
(bufferSize?: number, windowTime?: number, scheduler?: Scheduler): Observable<T>;
184+
(bufferSize?: number, windowTime?: number, scheduler?: Scheduler): ConnectableObservable<T>;
182185
}
183186
export interface operator_proto_reduce<T> {
184187
<R>(project: _Accumulator<T, R>, seed?: R): Observable<R>;
@@ -248,7 +251,7 @@ export interface operator_proto_throttle<T> {
248251
(durationSelector: (value: T) => ObservableOrPromise<number>): Observable<T>;
249252
}
250253
export interface operator_proto_throttleTime<T> {
251-
(delay: number, scheduler: Scheduler): Observable<T>;
254+
(delay: number, scheduler?: Scheduler): Observable<T>;
252255
}
253256
export interface operator_proto_timeout<T> {
254257
(due: number | Date, errorToSend?: any, scheduler?: Scheduler): Observable<T>;

src/operators/merge.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
import {Observable, ObservableOrPromise, ArrayOrIterator} from '../Observable';
1+
import {Observable, ArrayOrIterator, ObservableOrPromise} from '../Observable';
22
import {merge as mergeStatic} from './merge-static';
33
import {Scheduler} from '../Scheduler';
44

5-
export function merge<T>(...observables: (ObservableOrPromise<T> | Scheduler | number)[]): T;
6-
export function merge<T>(...observables: (ArrayOrIterator<T> | Scheduler | number)[]): T;
5+
export function merge<T>(concurrency: number): T;
6+
export function merge<T>(scheduler: Scheduler, concurrency: number): T;
7+
export function merge<T>(...observables: (ObservableOrPromise<T> | Scheduler | number)[]): Observable<T>;
8+
export function merge<T>(...observables: (ArrayOrIterator<T> | Scheduler | number)[]): Observable<T>;
79
export function merge<T, R>(...observables: (ObservableOrPromise<T> | Scheduler | number)[]): Observable<R>;
810
export function merge<T, R>(...observables: (ArrayOrIterator<T> | Scheduler | number)[]): Observable<R>;
911
export function merge(...observables: any[]): Observable<any> {

src/operators/multicast.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
import {Observable} from '../Observable';
21
import {Subject} from '../Subject';
32
import {ConnectableObservable} from '../observables/ConnectableObservable';
43

5-
export function multicast<T>(subjectOrSubjectFactory: Subject<T> | (() => Subject<T>)): Observable<T> {
4+
export function multicast<T>(subjectOrSubjectFactory: Subject<T> | (() => Subject<T>)): ConnectableObservable<T> {
65
let subjectFactory: () => Subject<T>;
76
if (typeof subjectOrSubjectFactory === 'function') {
87
subjectFactory = <() => Subject<T>>subjectOrSubjectFactory;

src/operators/publish.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import {Observable} from '../Observable';
1+
import {ConnectableObservable} from '../observables/ConnectableObservable';
22
import {Subject} from '../Subject';
33
import {multicast} from './multicast';
44

5-
export function publish<T>(): Observable<T> {
5+
export function publish<T>(): ConnectableObservable<T> {
66
return multicast.call(this, new Subject());
77
}

src/operators/publishBehavior.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import {Observable} from '../Observable';
1+
import {ConnectableObservable} from '../observables/ConnectableObservable';
22
import {BehaviorSubject} from '../subjects/BehaviorSubject';
33
import {multicast} from './multicast';
44

5-
export function publishBehavior<T>(value: T): Observable<T> {
5+
export function publishBehavior<T>(value: T): ConnectableObservable<T> {
66
return multicast.call(this, new BehaviorSubject(value));
77
}

src/operators/publishReplay.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import {Observable} from '../Observable';
1+
import {ConnectableObservable} from '../observables/ConnectableObservable';
22
import {ReplaySubject} from '../subjects/ReplaySubject';
33
import {Scheduler} from '../Scheduler';
44
import {multicast} from './multicast';
55

6-
export function publishReplay<T>(bufferSize?: number, windowTime?: number, scheduler?: Scheduler): Observable<T>;
6+
export function publishReplay<T>(bufferSize?: number, windowTime?: number, scheduler?: Scheduler): ConnectableObservable<T>;
77
export function publishReplay<T>(bufferSize: number = Number.POSITIVE_INFINITY,
88
windowTime: number = Number.POSITIVE_INFINITY,
9-
scheduler?: Scheduler): Observable<T> {
9+
scheduler?: Scheduler): ConnectableObservable<T> {
1010
return multicast.call(this, new ReplaySubject(bufferSize, windowTime, scheduler));
1111
}

src/operators/throttleTime.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import {Scheduler} from '../Scheduler';
55
import {Subscription} from '../Subscription';
66
import {nextTick} from '../schedulers/nextTick';
77

8+
export function throttleTime<T>(delay: number, scheduler?: Scheduler): Observable<T>;
89
export function throttleTime<T>(delay: number, scheduler: Scheduler = nextTick): Observable<T> {
910
return this.lift(new ThrottleTimeOperator(delay, scheduler));
1011
}

src/subjects/BehaviorSubject.ts

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
1-
import {Subject} from '../Subject';
2-
import {Subscriber} from '../Subscriber';
3-
import {Subscription} from '../Subscription';
4-
5-
export class BehaviorSubject<T> extends Subject<T> {
6-
constructor(private value: T) {
7-
super();
8-
}
9-
10-
_subscribe(subscriber: Subscriber<T>): Subscription<T> {
11-
const subscription = super._subscribe(subscriber);
12-
if (!subscription) {
13-
return;
14-
} else if (!subscription.isUnsubscribed) {
15-
subscriber.next(this.value);
16-
}
17-
return subscription;
18-
}
19-
20-
_next(value: T): void {
21-
super._next(this.value = value);
22-
}
23-
}
1+
import {Subject} from '../Subject';
2+
import {Subscriber} from '../Subscriber';
3+
import {Subscription} from '../Subscription';
4+
5+
export class BehaviorSubject<T> extends Subject<T> {
6+
constructor(public value: T) {
7+
super();
8+
}
9+
10+
_subscribe(subscriber: Subscriber<T>): Subscription<T> {
11+
const subscription = super._subscribe(subscriber);
12+
if (!subscription) {
13+
return;
14+
} else if (!subscription.isUnsubscribed) {
15+
subscriber.next(this.value);
16+
}
17+
return subscription;
18+
}
19+
20+
_next(value: T): void {
21+
super._next(this.value = value);
22+
}
23+
}

typingsgen.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ var extraSpaceRegex = / /;
1010
var operators = {};
1111
var fileResult = '/* tslint:disable:class-name */ /* tslint:disable:no-unused-variable */ /* tslint:disable:max-line-length */\n\
1212
import {Observable, ObservableOrPromise, ArrayOrIterator} from \'./Observable\';\n\
13+
import {ConnectableObservable} from \'./observables/ConnectableObservable\';\n\
1314
import {Scheduler} from \'./Scheduler\';\n\
1415
import {Notification} from \'./Notification\';\n\
1516
import {Subject} from \'./Subject\';\n\
@@ -36,7 +37,7 @@ for (var i = 0; i < contents.length; i++) {
3637
} else {
3738
var fileContent = fs.readFileSync('./src/operators/extended/'+filename+'.ts').toString();
3839
}
39-
40+
4041
var methods = [];
4142

4243
var r = new RegExp('export function [_]?'+ filename +'([\\s|\\S]*?[\\;\\{])', 'g');

0 commit comments

Comments
 (0)