Skip to content

Commit b165ec3

Browse files
chore(typings): Added build_operators build step to make sure operator typings stay in sync
1 parent 404a3b8 commit b165ec3

11 files changed

+317
-104
lines changed

package.json

+7-6
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,18 @@
1313
},
1414
"scripts": {
1515
"build_all": "npm run build_es6 && npm run build_amd && npm run build_cjs && npm run build_global",
16-
"build_amd": "rm -rf dist/amd && tsc typings/es6-shim/es6-shim.d.ts src/Rx.ts -m amd --outDir dist/amd --sourcemap --target ES5 --diagnostics",
17-
"build_cjs": "rm -rf dist/cjs && tsc typings/es6-shim/es6-shim.d.ts src/Rx.ts src/Rx.KitchenSink.ts -m commonjs --outDir dist/cjs --sourcemap --target ES5 -d --diagnostics",
18-
"build_es6": "rm -rf dist/es6 && tsc src/Rx.ts src/Rx.KitchenSink.ts --outDir dist/es6 --sourceMap --target ES6 -d --diagnostics",
16+
"build_amd": "npm run build_operators && rm -rf dist/amd && tsc typings/es6-shim/es6-shim.d.ts src/Rx.ts -m amd --outDir dist/amd --sourcemap --target ES5 --diagnostics",
17+
"build_cjs": "npm run build_operators && rm -rf dist/cjs && tsc typings/es6-shim/es6-shim.d.ts src/Rx.ts src/Rx.KitchenSink.ts -m commonjs --outDir dist/cjs --sourcemap --target ES5 -d --diagnostics",
18+
"build_es6": "npm run build_operators && rm -rf dist/es6 && tsc typings/es6-build-shim.d.ts src/Rx.ts src/Rx.KitchenSink.ts --outDir dist/es6 --sourceMap --target ES6 -d --diagnostics",
1919
"build_closure": "java -jar ./node_modules/google-closure-compiler/compiler.jar ./dist/global/Rx.js --create_source_map ./dist/global/Rx.min.js.map --js_output_file ./dist/global/Rx.min.js",
20-
"build_global": "rm -rf dist/global && mkdir \"dist/global\" && browserify src/Rx.global.js --outfile dist/global/Rx.js && npm run build_closure",
20+
"build_global": "npm run build_operators && rm -rf dist/global && mkdir \"dist/global\" && browserify src/Rx.global.js --outfile dist/global/Rx.js && npm run build_closure",
2121
"build_perf": "npm run build_cjs && npm run build_global && webdriver-manager update && npm run perf",
2222
"build_test": "rm -rf dist/ && npm run lint && npm run build_cjs && jasmine",
2323
"build_cover": "rm -rf dist/ && npm run lint && npm run build_cjs && npm run cover",
2424
"build_docs": "./docgen.sh",
2525
"lint_perf": "eslint perf/ --fix",
2626
"lint_spec": "eslint spec/**/*.js --fix",
27-
"lint_src": "tslint -c .tslintrc src/*.ts src/**/*.ts src/**/**/*.ts",
27+
"lint_src": "tslint src/*.ts src/**/*.ts src/**/**/*.ts",
2828
"lint": "npm run lint_src && npm run lint_spec && npm run lint_perf",
2929
"cover": "istanbul cover -x \"*-spec.js index.js *-helper.js spec/helpers/*\" jasmine && npm run cover_remapping",
3030
"cover_remapping": "remap-istanbul -i coverage/coverage.json -o coverage/coverage-remapped.json && remap-istanbul -i coverage/coverage.json -o coverage/coverage-remapped.lcov -t lcovonly && remap-istanbul -i coverage/coverage.json -o coverage/coverage-remapped -t html",
@@ -33,7 +33,8 @@
3333
"perf": "protractor protractor.conf.js",
3434
"perf_micro": "node ./perf/micro/index.js",
3535
"prepublish": "npm run build_all",
36-
"commit": "git-cz"
36+
"commit": "git-cz",
37+
"build_operators": "node typingsgen.js"
3738
},
3839
"repository": {
3940
"type": "git",

src/CoreOperators.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import * as operators from "./operator-typings";
1+
import * as operators from './operator-typings';
22
export interface CoreOperators<T> {
33
buffer: operators.operator_proto_buffer<T>;
44
bufferCount: operators.operator_proto_bufferCount<T>;
@@ -54,13 +54,15 @@ export interface CoreOperators<T> {
5454
single: operators.operator_proto_single<T>;
5555
skip: operators.operator_proto_skip<T>;
5656
skipUntil: operators.operator_proto_skipUntil<T>;
57+
skipWhile: operators.operator_proto_skipWhile<T>;
5758
startWith: operators.operator_proto_startWith<T>;
5859
subscribeOn: operators.operator_proto_subscribeOn<T>;
5960
switch: operators.operator_proto_switch<T>;
6061
switchMap: operators.operator_proto_switchMap<T>;
6162
switchMapTo: operators.operator_proto_switchMapTo<T>;
6263
take: operators.operator_proto_take<T>;
6364
takeUntil: operators.operator_proto_takeUntil<T>;
65+
takeWhile: operators.operator_proto_takeWhile<T>;
6466
throttle: operators.operator_proto_throttle<T>;
6567
throttleTime: operators.operator_proto_throttleTime<T>;
6668
timeout: operators.operator_proto_timeout<T>;

src/Observable.ts

+7-12
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,18 @@
11
import {Observer} from './Observer';
22
import {Operator} from './Operator';
3-
import {Scheduler} from './Scheduler';
43
import {Subscriber} from './Subscriber';
54
import {Subscription} from './Subscription';
65
import {root} from './util/root';
76
import {CoreOperators} from './CoreOperators';
87
import {$$observable} from './util/Symbol_observable';
9-
import {GroupedObservable} from './operators/groupBy-support';
10-
import {ConnectableObservable} from './observables/ConnectableObservable';
11-
import {Subject} from './Subject';
12-
import {Notification} from './Notification';
13-
148
export type ObservableOrPromise<T> = Observable<T> | PromiseLike<T>;
159
export type ArrayOrIterable<T> = IterableShim<T> | ArrayLike<T> | Array<T>;
1610
export type ObservableOrIterable<T> = ObservableOrPromise<T> | ArrayOrIterable<T>;
17-
import * as operators from "./operator-typings";
18-
19-
import {combineLatest as combineLatestStatic} from "./operators/combineLatest-static";
20-
import {concat as concatStatic} from "./operators/concat-static";
21-
import {merge as mergeStatic} from "./operators/merge-static";
22-
import {zip as zipStatic} from "./operators/zip-static";
11+
import * as operators from './operator-typings';
12+
import {combineLatest as combineLatestStatic} from './operators/combineLatest-static';
13+
import {concat as concatStatic} from './operators/concat-static';
14+
import {merge as mergeStatic} from './operators/merge-static';
15+
import {zip as zipStatic} from './operators/zip-static';
2316
import {DeferObservable} from './observables/DeferObservable';
2417
import {EmptyObservable} from './observables/EmptyObservable';
2518
import {ForkJoinObservable} from './observables/ForkJoinObservable';
@@ -231,13 +224,15 @@ export class Observable<T> implements CoreOperators<T> {
231224
single: operators.operator_proto_single<T>;
232225
skip: operators.operator_proto_skip<T>;
233226
skipUntil: operators.operator_proto_skipUntil<T>;
227+
skipWhile: operators.operator_proto_skipWhile<T>;
234228
startWith: operators.operator_proto_startWith<T>;
235229
subscribeOn: operators.operator_proto_subscribeOn<T>;
236230
switch: operators.operator_proto_switch<T>;
237231
switchMap: operators.operator_proto_switchMap<T>;
238232
switchMapTo: operators.operator_proto_switchMapTo<T>;
239233
take: operators.operator_proto_take<T>;
240234
takeUntil: operators.operator_proto_takeUntil<T>;
235+
takeWhile: operators.operator_proto_takeWhile<T>;
241236
throttle: operators.operator_proto_throttle<T>;
242237
throttleTime: operators.operator_proto_throttleTime<T>;
243238
timeout: operators.operator_proto_timeout<T>;

src/operator-typings.ts

+34-27
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1+
/* tslint:disable:class-name */ /* tslint:disable:no-unused-variable */ /* tslint:disable:max-line-length */
12
import { Observable, ObservableOrIterable, ObservableOrPromise, ArrayOrIterable } from './Observable';
2-
import {Scheduler} from "./Scheduler";
3-
import {Notification} from "./Notification";
4-
import {Subject} from "./Subject";
5-
import {Observer} from "./Observer";
6-
import {GroupedObservable} from "./operators/groupBy-support";
7-
import {GroupByObservable} from "./operators/groupby";
3+
import {Scheduler} from './Scheduler';
4+
import {Notification} from './Notification';
5+
import {Subject} from './Subject';
6+
import {Observer} from './Observer';
7+
import {GroupedObservable} from './operators/groupBy-support';
8+
import {GroupByObservable} from './operators/groupBy';
89

910
export interface operator_proto_buffer<T> {
1011
(closingNotifier: Observable<any>): Observable<T[]>;
@@ -25,32 +26,32 @@ export interface operator_proto_catch<T> {
2526
(selector: (err: any, caught: Observable<any>) => Observable<any>): Observable<T>;
2627
}
2728
export interface operator_proto_combineAll<T> {
28-
() : ObservableOrIterable<T[]>;
29+
(): ObservableOrIterable<T[]>;
2930
}
3031
export interface operator_proto_combineLatest<T> {
3132
(): Observable<[T]>;
32-
<TResult>(project: (v1: T) => TResult): Observable<TResult>;
33-
<T2>(second: ObservableOrIterable<T2>): Observable<[T, T2]>;
34-
<T2, TResult>(second: ObservableOrIterable<T2>, project: (v1: T, v2: T2) => TResult): Observable<TResult>;
35-
<T2, T3>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>): Observable<[T, T2, T3]>;
36-
<T2, T3, TResult>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, project: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
37-
<T2, T3, T4>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>): Observable<[T, T2, T3, T4]>;
38-
<T2, T3, T4, TResult>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, project: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
39-
<T2, T3, T4, T5>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>): Observable<[T, T2, T3, T4, T5]>;
40-
<T2, T3, T4, T5, TResult>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable<TResult>;
41-
<T2, T3, T4, T5, T6>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>): Observable<[T, T2, T3, T4, T5, T6]>;
42-
<T2, T3, T4, T5, T6, TResult>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => TResult): Observable<TResult>;
43-
<T2, T3, T4, T5, T6, T7>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, eventh: ObservableOrIterable<T7>): Observable<[T, T2, T3, T4, T5, T6, T7]>;
44-
<T2, T3, T4, T5, T6, T7, TResult>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, eventh: ObservableOrIterable<T7>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7) => TResult): Observable<TResult>;
45-
<T2, T3, T4, T5, T6, T7, T8>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, seventh: ObservableOrIterable<T7>, eighth: ObservableOrIterable<T8>): Observable<[T, T2, T3, T4, T5, T6, T7, T8]>;
46-
<T2, T3, T4, T5, T6, T7, T8, TResult>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, seventh: ObservableOrIterable<T7>, eighth: ObservableOrIterable<T8>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8) => TResult): Observable<TResult>;
47-
<T2, T3, T4, T5, T6, T7, T8, T9>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, seventh: ObservableOrIterable<T7>, eighth: ObservableOrIterable<T8>, ninth: ObservableOrIterable<T9>): Observable<[T, T2, T3, T4, T5, T6, T7, T8, T9]>;
48-
<T2, T3, T4, T5, T6, T7, T8, T9, TResult>(second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, seventh: ObservableOrIterable<T7>, eighth: ObservableOrIterable<T8>, ninth: ObservableOrIterable<T9>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9) => TResult): Observable<TResult>;
49-
<R>(...observables: Array<ObservableOrIterable<T> | ((...values: Array<T>) => R)>): Observable<R>;
50-
(...observables: Array<T>): Observable<T[]>;
33+
<TResult>( project: (v1: T) => TResult): Observable<TResult>;
34+
<T2>( second: ObservableOrIterable<T2>): Observable<[T, T2]>;
35+
<T2, TResult>( second: ObservableOrIterable<T2>, project: (v1: T, v2: T2) => TResult): Observable<TResult>;
36+
<T2, T3>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>): Observable<[T, T2, T3]>;
37+
<T2, T3, TResult>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, project: (v1: T, v2: T2, v3: T3) => TResult): Observable<TResult>;
38+
<T2, T3, T4>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>): Observable<[T, T2, T3, T4]>;
39+
<T2, T3, T4, TResult>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, project: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable<TResult>;
40+
<T2, T3, T4, T5>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>): Observable<[T, T2, T3, T4, T5]>;
41+
<T2, T3, T4, T5, TResult>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable<TResult>;
42+
<T2, T3, T4, T5, T6>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>): Observable<[T, T2, T3, T4, T5, T6]>;
43+
<T2, T3, T4, T5, T6, TResult>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => TResult): Observable<TResult>;
44+
<T2, T3, T4, T5, T6, T7>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, eventh: ObservableOrIterable<T7>): Observable<[T, T2, T3, T4, T5, T6, T7]>;
45+
<T2, T3, T4, T5, T6, T7, TResult>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, eventh: ObservableOrIterable<T7>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7) => TResult): Observable<TResult>;
46+
<T2, T3, T4, T5, T6, T7, T8>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, seventh: ObservableOrIterable<T7>, eighth: ObservableOrIterable<T8>): Observable<[T, T2, T3, T4, T5, T6, T7, T8]>;
47+
<T2, T3, T4, T5, T6, T7, T8, TResult>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, seventh: ObservableOrIterable<T7>, eighth: ObservableOrIterable<T8>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8) => TResult): Observable<TResult>;
48+
<T2, T3, T4, T5, T6, T7, T8, T9>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, seventh: ObservableOrIterable<T7>, eighth: ObservableOrIterable<T8>, ninth: ObservableOrIterable<T9>): Observable<[T, T2, T3, T4, T5, T6, T7, T8, T9]>;
49+
<T2, T3, T4, T5, T6, T7, T8, T9, TResult>( second: ObservableOrIterable<T2>, third: ObservableOrIterable<T3>, fourth: ObservableOrIterable<T4>, fifth: ObservableOrIterable<T5>, sixth: ObservableOrIterable<T6>, seventh: ObservableOrIterable<T7>, eighth: ObservableOrIterable<T8>, ninth: ObservableOrIterable<T9>, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6, v7: T7, v8: T8, v9: T9) => TResult): Observable<TResult>;
50+
<R>( ...observables: Array<ObservableOrIterable<T> | ((...values: Array<T>) => R)>): Observable<R>;
51+
( ...observables: Array<T>): Observable<T[]>;
5152
}
5253
export interface operator_proto_concat<T> {
53-
<R>(...observables: (Observable<any> | Scheduler)[]): Observable<R>;
54+
(...observables: (Observable<T> | Scheduler)[]): T;
5455
}
5556
export interface operator_proto_concatAll<T> {
5657
(): Observable<T>;
@@ -183,6 +184,9 @@ export interface operator_proto_skip<T> {
183184
export interface operator_proto_skipUntil<T> {
184185
(notifier: Observable<any>): Observable<T>;
185186
}
187+
export interface operator_proto_skipWhile<T> {
188+
(predicate: (x: T, index: number) => boolean, thisArg?: any): Observable<T>;
189+
}
186190
export interface operator_proto_startWith<T> {
187191
(...array: (T | Scheduler)[]): Observable<T>;
188192
}
@@ -204,6 +208,9 @@ export interface operator_proto_take<T> {
204208
export interface operator_proto_takeUntil<T> {
205209
(notifier: Observable<any>);
206210
}
211+
export interface operator_proto_takeWhile<T> {
212+
(predicate: (value: T, index: number) => boolean, thisArg?: any): Observable<T>;
213+
}
207214
export interface operator_proto_throttle<T> {
208215
(durationSelector: (value: T) => Observable<any> | Promise<any>): Observable<T>;
209216
}

src/operators/combineAll.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {ObservableOrIterable} from "../Observable";
1+
import {ObservableOrIterable} from '../Observable';
22
import {CombineLatestOperator} from './combineLatest-support';
33

44
/**
@@ -13,7 +13,7 @@ import {CombineLatestOperator} from './combineLatest-support';
1313
* most recent values from each collected observable as arguments, in order.
1414
* @returns {Observable} an observable of projected results or arrays of recent values.
1515
*/
16-
export function combineAll<T>() : ObservableOrIterable<T[]>;
16+
export function combineAll<T>(): ObservableOrIterable<T[]>;
1717
export function combineAll<T, R>(project?: (...values: T[]) => R): ObservableOrIterable<R> {
1818
return this.lift(new CombineLatestOperator<T, R>(project));
1919
}

0 commit comments

Comments
 (0)