From 09a654307a0621bc9ea7b936334c0141e19dec0f Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sat, 14 Dec 2013 00:36:32 +0400 Subject: [PATCH] rx.js: renamed some interfaces to documentation consistent names (IObservable->Observable) added test for rx.js.d.ts --- rx.js/rx-tests.ts | 135 +++++++++++ rx.js/rx.js.aggregates.d.ts | 66 +++--- rx.js/rx.js.async.d.ts | 14 +- rx.js/rx.js.binding.d.ts | 12 +- rx.js/rx.js.coincidence.d.ts | 26 +-- rx.js/rx.js.d.ts | 427 ++++++++++++++-------------------- rx.js/rx.js.experimental.d.ts | 50 ++-- rx.js/rx.js.joinpatterns.d.ts | 2 +- rx.js/rx.js.jquery.d.ts | 76 +++--- rx.js/rx.js.time.d.ts | 88 +++---- 10 files changed, 477 insertions(+), 419 deletions(-) create mode 100644 rx.js/rx-tests.ts diff --git a/rx.js/rx-tests.ts b/rx.js/rx-tests.ts new file mode 100644 index 000000000..14388c49f --- /dev/null +++ b/rx.js/rx-tests.ts @@ -0,0 +1,135 @@ +/// + +// Disposable +var d: Rx.IDisposable = new Rx.Disposable(() => { }); +d = Rx.Disposable.create(() => { }); +d = Rx.Disposable.empty; +d.dispose(); + +// CompositeDisposable +var cd = new Rx.CompositeDisposable(d, d, d); +d = cd; +cd = new Rx.CompositeDisposable([d, d]); +cd.add(d); +cd.clear(); +var b: boolean = cd.contains(d); +var da: Rx.IDisposable[] = cd.toArray(); +cd.remove(d); + +// SingleAssignmentDisposable +var sad = new Rx.SingleAssignmentDisposable(); +d = sad; +sad.setDisposable(d); +d = sad.getDisposable(); +b = sad.isDisposed; + +// SerialDisposable +var sd = new Rx.SerialDisposable(); +d = sd; +sd.setDisposable(d); +d = sd.getDisposable(); +b = sd.isDisposed; + +// RefCountDisposable +var rcd = new Rx.RefCountDisposable(d); +d = rcd; +d = rcd.getDisposable(); +b = rcd.isDisposed; + +// IScheduler +var s: Rx.IScheduler; +var n: number = s.now(); +s = s.catch(ex => true); +s = s.catchException(ex => true); +d = s.schedule(() => { }); +d = s.scheduleWithState(1, + (sh, s) => sh.scheduleWithAbsoluteAndState(s + 1, 100, + (sh, s) => sh.scheduleWithRelativeAndState(s + 1, 200, + (sh, s) => sh.scheduleRecursiveWithState(s + 1, + (s, self) => self(s + 1))))); +d = s.scheduleWithAbsolute(100, () => { }); +d = s.scheduleWithRelative(100, () => { }); +d = s.scheduleRecursive(self => self()); +d = s.scheduleRecursiveWithAbsolute(100, self => self(200)); +d = s.scheduleRecursiveWithRelative(100, self => self(200)); +d = s.schedulePeriodic(100, () => { }); +d = s.schedulePeriodicWithState('a', 100, s => s + 'b'); + +// ICurrentThreadScheduler +Rx.Scheduler.currentThread.scheduleRequired(); +Rx.Scheduler.currentThread.ensureTrampoline(() => Rx.Disposable.empty); + +// Observer +var o: Rx.Observer = Rx.Observer.create(); +o = Rx.Observer.create(i => { }); +o = Rx.Observer.create(i => { }, err => { }); +o = Rx.Observer.create(i => { }, err => { }, () => { }); +o = Rx.Observer.fromNotifier(n => { }); + +o.onNext(10); +o.onError(new Error()); +o.onCompleted(); + +// Observable static methods tests + +var ns: Rx.Observable = Rx.Observable.create(observer => { }); +var ss: Rx.Observable = Rx.Observable.create(observer => (() => { })); +var bs: Rx.Observable = Rx.Observable.createWithDisposable(observer => Rx.Disposable.empty); + +ns = Rx.Observable.defer(() => ns); + +ss = Rx.Observable.empty(); +bs = Rx.Observable.empty(Rx.Scheduler.currentThread); + +ns = Rx.Observable.fromArray([0, 3, -7, 18]); +ss = Rx.Observable.fromArray(['a', 'ab', 'abc'], Rx.Scheduler.timeout); + +ns = Rx.Observable.generate(0, i => i < 100, i => i + 1, i => i * i); +ns = Rx.Observable.generate(0, i => i < 100, i => i + 1, i => i * i, Rx.Scheduler.timeout); + +bs = Rx.Observable.never(); + +ns = Rx.Observable.range(0, 100); +ns = Rx.Observable.range(0, 100, Rx.Scheduler.timeout); + +ns = Rx.Observable.repeat(0, 100); +ns = Rx.Observable.repeat(0, 100, Rx.Scheduler.timeout); + +ss = Rx.Observable.return('a'); +ss = Rx.Observable.return('a', Rx.Scheduler.timeout); +ss = Rx.Observable.returnValue('a'); +ss = Rx.Observable.returnValue('a', Rx.Scheduler.timeout); + +bs = Rx.Observable.throw(new Error("error")); +bs = Rx.Observable.throw(new Error("error"), Rx.Scheduler.timeout); +bs = Rx.Observable.throwException(new Error("error")); +bs = Rx.Observable.throwException(new Error("error"), Rx.Scheduler.timeout); + +bs = Rx.Observable.using(() => d, d => Rx.Observable.return(true)); + +ss = Rx.Observable.amb(ss, ss); +//ss = Rx.Observable.amb([ss, ss]); + +ss = Rx.Observable.catch(ss, ss, ss); +ss = Rx.Observable.catchException(ss, ss, ss); +//ss = Rx.Observable.catch([ss, ss, ss]); +//ss = Rx.Observable.catchException([ss, ss, ss]); + +ss = Rx.Observable.concat(ss, ss, ss); +//ss = Rx.Observable.concat([ss, ss, ss]); + +ss = Rx.Observable.merge(ss, ss, ss); +//ss = Rx.Observable.merge([ss, ss, ss]); +ss = Rx.Observable.merge(s, ss, ss, ss); +//ss = Rx.Observable.merge(s, [ss, ss, ss]); + +ss = Rx.Observable.onErrorResumeNext(ss, ss, ss); +//ss = Rx.Observable.onErrorResumeNext([ss, ss, ss]); + +ns = Rx.Observable.zip(ss, bs, ns, (s, b, n) => s.length + (b ? 1 : 0) + n); + + +// Observable instance methods + +var sss: Rx.Observable>; +ss = sss.concatAll(); \ No newline at end of file diff --git a/rx.js/rx.js.aggregates.d.ts b/rx.js/rx.js.aggregates.d.ts index 93a304db4..1955bfe7f 100644 --- a/rx.js/rx.js.aggregates.d.ts +++ b/rx.js/rx.js.aggregates.d.ts @@ -10,44 +10,44 @@ // -> rx.aggregates.js declare module Rx { - interface IObservable { - aggregate(accumulator: (acc: TAcc, value: T) => TAcc): IObservable; - aggregate(seed: TAcc, accumulator: (acc: TAcc, value: T) => TAcc): IObservable; + export interface Observable { + aggregate(accumulator: (acc: TAcc, value: T) => TAcc): Observable; + aggregate(seed: TAcc, accumulator: (acc: TAcc, value: T) => TAcc): Observable; - any(): IObservable; - any(selector: (item: T) => boolean): IObservable; + any(): Observable; + any(selector: (item: T) => boolean): Observable; - isEmpty(predicate?: (value: T) => boolean): IObservable; - all(predicate?: (value: T) => boolean): IObservable; - contains(value: T, comparer?: (value1: T, value2: T) => boolean): IObservable; - count(predicate?: (item: T) => boolean): IObservable; - sum(keySelector?: (item: T) => number): IObservable; - minBy(keySelector: (item: T) => number, comparer?: (value1: T, value2: T) => number): IObservable; - min(comparer?: (value1: T, value2: T) => number): IObservable; - maxBy(keySelector: (item: T) => number, comparer?: (value1: T, value2: T) => number): IObservable; - max(comparer?: (value1: T, value2: T) => number): IObservable; - average(keySelector?: (item: T) => number): IObservable; + isEmpty(predicate?: (value: T) => boolean): Observable; + all(predicate?: (value: T) => boolean): Observable; + contains(value: T, comparer?: (value1: T, value2: T) => boolean): Observable; + count(predicate?: (item: T) => boolean): Observable; + sum(keySelector?: (item: T) => number): Observable; + minBy(keySelector: (item: T) => number, comparer?: (value1: T, value2: T) => number): Observable; + min(comparer?: (value1: T, value2: T) => number): Observable; + maxBy(keySelector: (item: T) => number, comparer?: (value1: T, value2: T) => number): Observable; + max(comparer?: (value1: T, value2: T) => number): Observable; + average(keySelector?: (item: T) => number): Observable; - sequenceEqual(second: IObservable, comparer?: (value1: T, value2: T) => number): IObservable; - elementAt(index: number): IObservable; - elementAtOrDefault(index: number, defaultValue: T): IObservable; + sequenceEqual(second: Observable, comparer?: (value1: T, value2: T) => number): Observable; + elementAt(index: number): Observable; + elementAtOrDefault(index: number, defaultValue: T): Observable; - single(): IObservable; - single(predicate: (T) => boolean): IObservable; - singleOrDefault(): IObservable; - singleOrDefault(predicate: (T) => boolean): IObservable; - singleOrDefault(predicate: (T) => boolean, defaultValue: T): IObservable; + single(): Observable; + single(predicate: (item: T) => boolean): Observable; + singleOrDefault(): Observable; + singleOrDefault(predicate: (item: T) => boolean): Observable; + singleOrDefault(predicate: (item: T) => boolean, defaultValue: T): Observable; - first(): IObservable; - first(predicate: (T) => boolean): IObservable; - firstOrDefault(): IObservable; - firstOrDefault(predicate: (T) => boolean): IObservable; - firstOrDefault(predicate: (T) => boolean, defaultValue: T): IObservable; + first(): Observable; + first(predicate: (item: T) => boolean): Observable; + firstOrDefault(): Observable; + firstOrDefault(predicate: (item: T) => boolean): Observable; + firstOrDefault(predicate: (item: T) => boolean, defaultValue: T): Observable; - last(): IObservable; - last(predicate: (T) => boolean): IObservable; - lastOrDefault(): IObservable; - lastOrDefault(predicate: (T) => boolean): IObservable; - lastOrDefault(predicate: (T) => boolean, defaultValue: T): IObservable; + last(): Observable; + last(predicate: (item: T) => boolean): Observable; + lastOrDefault(): Observable; + lastOrDefault(predicate: (item: T) => boolean): Observable; + lastOrDefault(predicate: (item: T) => boolean, defaultValue: T): Observable; } } \ No newline at end of file diff --git a/rx.js/rx.js.async.d.ts b/rx.js/rx.js.async.d.ts index 98fb930f7..fa336ac7e 100644 --- a/rx.js/rx.js.async.d.ts +++ b/rx.js/rx.js.async.d.ts @@ -11,12 +11,12 @@ declare module Rx { interface Observable { - start(func: () => T, scheduler?: IScheduler, context?: any): IObservable; - toAsync(func: Function, scheduler?: IScheduler, context?: any): (...arguments: any[]) => IObservable; - fromCallback(func: (...arguments: any[]) => void, scheduler?: IScheduler, context?: any, selector?: (...arguments: T[])=>T): () => IObservable; - fromNodeCallback(func: (...arguments: any[]) => void, scheduler?: IScheduler, context?: any, selector?: (...arguments: any[])=>T): (...arguments: any[]) => IObservable; - fromEvent(element: any, eventName: string, selector?: (...arguments: any[])=>T): IObservable; - fromEventPattern(addHandler: (handler: any)=> void, removeHandler: (handler: any)=> void, selector?: (...arguments: any[])=>T): IObservable; - fromPromise(promise: any): IObservable; + start(func: () => T, scheduler?: IScheduler, context?: any): Observable; + toAsync(func: Function, scheduler?: IScheduler, context?: any): (...arguments: any[]) => Observable; + fromCallback(func: (...arguments: any[]) => void, scheduler?: IScheduler, context?: any, selector?: (...arguments: T[])=>T): () => Observable; + fromNodeCallback(func: (...arguments: any[]) => void, scheduler?: IScheduler, context?: any, selector?: (...arguments: any[])=>T): (...arguments: any[]) => Observable; + fromEvent(element: any, eventName: string, selector?: (...arguments: any[])=>T): Observable; + fromEventPattern(addHandler: (handler: any)=> void, removeHandler: (handler: any)=> void, selector?: (...arguments: any[])=>T): Observable; + fromPromise(promise: any): Observable; } } \ No newline at end of file diff --git a/rx.js/rx.js.binding.d.ts b/rx.js/rx.js.binding.d.ts index 97a62d0f8..0921f30c5 100644 --- a/rx.js/rx.js.binding.d.ts +++ b/rx.js/rx.js.binding.d.ts @@ -27,25 +27,25 @@ declare module Rx { new (initialValue: T): BehaviorSubject; } - interface ConnectableObservable extends IObservable{ + interface ConnectableObservable extends Observable{ connect(): IDisposable; - refCount(): IObservable; + refCount(): Observable; } var ConnectableObservable: { new (): ConnectableObservable; } - interface IObservable { + interface Observable { publish(): ConnectableObservable; - publish(selector: (item: T) => IObservable): ConnectableObservable; + publish(selector: (item: T) => Observable): ConnectableObservable; publishLast(): ConnectableObservable; - publishLast(selector: (item: T) => IObservable): ConnectableObservable; + publishLast(selector: (item: T) => Observable): ConnectableObservable; publishValue(initialValue: T): ConnectableObservable; publishValue(selector: (item: T) => TResult, initialValue: TResult): ConnectableObservable; - replay(selector?: (source: IObservable) => ReplaySubject, bufferSize?: number, window?: number, scheduler?: IScheduler): ReplaySubject; + replay(selector?: (source: Observable) => ReplaySubject, bufferSize?: number, window?: number, scheduler?: IScheduler): ReplaySubject; } diff --git a/rx.js/rx.js.coincidence.d.ts b/rx.js/rx.js.coincidence.d.ts index 138e99236..7aa0ae65a 100644 --- a/rx.js/rx.js.coincidence.d.ts +++ b/rx.js/rx.js.coincidence.d.ts @@ -11,27 +11,27 @@ declare module Rx { - interface IObservable { + interface Observable { join( - right: IObservable, - leftDurationSelector: (leftItem: T) => IObservable, - rightDurationSelector: (rightItem: T2) => IObservable, - resultSelector: (leftItem: T, rightItem: T2) => TResult): IObservable; + right: Observable, + leftDurationSelector: (leftItem: T) => Observable, + rightDurationSelector: (rightItem: T2) => Observable, + resultSelector: (leftItem: T, rightItem: T2) => TResult): Observable; groupJoin( - right: IObservable, - leftDurationSelector: (leftItem: T) => IObservable, - rightDurationSelector: (rightItem: T2) => IObservable, - resultSelector: (leftItem: T, rightItem: IObservable) => TResult): IObservable; + right: Observable, + leftDurationSelector: (leftItem: T) => Observable, + rightDurationSelector: (rightItem: T2) => Observable, + resultSelector: (leftItem: T, rightItem: Observable) => TResult): Observable; // lack of documentation to complete the followings... - buffer(bufferOpenings: IObservable, - bufferClosingSelector: (opening: TBufferOpening) => IObservable): IObservable; + buffer(bufferOpenings: Observable, + bufferClosingSelector: (opening: TBufferOpening) => Observable): Observable; - window(bufferOpenings: IObservable, - bufferClosingSelector: (opening: TBufferOpening) => IObservable): IObservable; + window(bufferOpenings: Observable, + bufferClosingSelector: (opening: TBufferOpening) => Observable): Observable; } diff --git a/rx.js/rx.js.d.ts b/rx.js/rx.js.d.ts index 0b9c03de7..7107afb1e 100644 --- a/rx.js/rx.js.d.ts +++ b/rx.js/rx.js.d.ts @@ -8,7 +8,7 @@ declare module Rx { export module Internals { function inherits(child: Function, parent: Function): Function; function addProperties(obj: Object, ...sourcces: Object[]): void; - function addRef(xs: IObservable, r: { getDisposable(): IDisposable; }): IObservable; + function addRef(xs: Observable, r: { getDisposable(): IDisposable; }): Observable; } //Collections @@ -34,7 +34,7 @@ declare module Rx { remove(item: IIndexedItem): boolean; } - interface IDisposable { + export interface IDisposable { dispose(): void; } @@ -59,9 +59,6 @@ declare module Rx { static create(action: () => void): IDisposable; static empty: IDisposable; - isDisposed: boolean; - action: () => void; - dispose(): void; } @@ -111,27 +108,27 @@ declare module Rx { invokeCore(): IDisposable; } - interface IScheduler { + export interface IScheduler { now(): number; catch(handler: (exception: any) => boolean): IScheduler; catchException(handler: (exception: any) => boolean): IScheduler; schedule(action: () => void): IDisposable; - scheduleWithState(state: any, action: (scheduler: IScheduler, state: any) => IDisposable): IDisposable; + scheduleWithState(state: TState, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable; scheduleWithAbsolute(dueTime: number, action: () => void): IDisposable; - scheduleWithAbsoluteAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>IDisposable): IDisposable; + scheduleWithAbsoluteAndState(state: TState, dueTime: number, action: (scheduler: IScheduler, state: TState) =>IDisposable): IDisposable; scheduleWithRelative(dueTime: number, action: () => void): IDisposable; - scheduleWithRelativeAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>IDisposable): IDisposable; + scheduleWithRelativeAndState(state: TState, dueTime: number, action: (scheduler: IScheduler, state: TState) =>IDisposable): IDisposable; scheduleRecursive(action: (action: () =>void ) =>void ): IDisposable; - scheduleRecursiveWithState(state: any, action: (state: any, action: (state: any) =>void ) =>void ): IDisposable; + scheduleRecursiveWithState(state: TState, action: (state: TState, action: (state: TState) =>void ) =>void ): IDisposable; scheduleRecursiveWithAbsolute(dueTime: number, action: (action: (dueTime: number) => void) => void): IDisposable; - scheduleRecursiveWithAbsoluteAndState(state: any, dueTime: number, action: (state: any, action: (state: any, dueTime: number) => void) => void): IDisposable; + scheduleRecursiveWithAbsoluteAndState(state: TState, dueTime: number, action: (state: TState, action: (state: TState, dueTime: number) => void) => void): IDisposable; scheduleRecursiveWithRelative(dueTime: number, action: (action: (dueTime: number) =>void ) =>void ): IDisposable; - scheduleRecursiveWithRelativeAndState(state: any, dueTime: number, action: (state: any, action: (state: any, dueTime: number) =>void ) =>void ): IDisposable; + scheduleRecursiveWithRelativeAndState(state: TState, dueTime: number, action: (state: TState, action: (state: TState, dueTime: number) =>void ) =>void ): IDisposable; schedulePeriodic(period: number, action: () => void): IDisposable; - schedulePeriodicWithState(state: any, period: number, action: (state: any) => any): IDisposable; + schedulePeriodicWithState(state: TState, period: number, action: (state: TState) => TState): IDisposable; } export class Scheduler implements IScheduler { @@ -152,21 +149,21 @@ declare module Rx { catchException(handler: (exception: any) => boolean): IScheduler; schedule(action: () => void): IDisposable; - scheduleWithState(state: any, action: (scheduler: IScheduler, state: any) => IDisposable): IDisposable; + scheduleWithState(state: TState, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable; scheduleWithAbsolute(dueTime: number, action: () => void): IDisposable; - scheduleWithAbsoluteAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) => IDisposable): IDisposable; + scheduleWithAbsoluteAndState(state: TState, dueTime: number, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable; scheduleWithRelative(dueTime: number, action: () => void): IDisposable; - scheduleWithRelativeAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) => IDisposable): IDisposable; + scheduleWithRelativeAndState(state: TState, dueTime: number, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable; scheduleRecursive(action: (action: () => void) => void): IDisposable; - scheduleRecursiveWithState(state: any, action: (state: any, action: (state: any) => void) => void): IDisposable; + scheduleRecursiveWithState(state: TState, action: (state: TState, action: (state: TState) => void) => void): IDisposable; scheduleRecursiveWithAbsolute(dueTime: number, action: (action: (dueTime: number) => void) => void): IDisposable; - scheduleRecursiveWithAbsoluteAndState(state: any, dueTime: number, action: (state: any, action: (state: any, dueTime: number) => void) => void): IDisposable; + scheduleRecursiveWithAbsoluteAndState(state: TState, dueTime: number, action: (state: TState, action: (state: TState, dueTime: number) => void) => void): IDisposable; scheduleRecursiveWithRelative(dueTime: number, action: (action: (dueTime: number) => void) => void): IDisposable; - scheduleRecursiveWithRelativeAndState(state: any, dueTime: number, action: (state: any, action: (state: any, dueTime: number) => void) => void): IDisposable; + scheduleRecursiveWithRelativeAndState(state: TState, dueTime: number, action: (state: TState, action: (state: TState, dueTime: number) => void) => void): IDisposable; schedulePeriodic(period: number, action: () => void): IDisposable; - schedulePeriodicWithState(state: any, period: number, action: (state: any) => any): IDisposable; + schedulePeriodicWithState(state: TState, period: number, action: (state: TState) => TState): IDisposable; } // Current Thread IScheduler @@ -176,267 +173,193 @@ declare module Rx { } // Notifications - interface INotification { - accept(observer: IObserver): void; - accept(onNext: (value: T) =>void , onError?: (exception: any) =>void , onCompleted?: () =>void ): void; - toObservable(scheduler?: IScheduler): IObservable; + export class Notification { + accept(observer: Observer): void; + accept(onNext: (value: T) => TResult, onError?: (exception: any) => TResult, onCompleted?: () => TResult): TResult; + toObservable(scheduler?: IScheduler): Observable; hasValue: boolean; - equals(other: INotification): boolean; + equals(other: Notification): boolean; kind: string; - value?: T; - exception?: any; - } - export interface Notification { - //abstract - //function new (): INotification; + value: T; + exception: any; - createOnNext(value: T): INotification;//ON - createOnError(exception): INotification;//OE - createOnCompleted(): INotification;//OC - } - - var Notification: Notification; - - export module Internals { - // Enumerator - interface IEnumerator { - moveNext(): boolean; - getCurrent(): T; - dispose(): void; - } - export interface Enumerator { - (moveNext: () =>boolean, getCurrent: () => T, dispose: () =>void ): IEnumerator; - - create(moveNext: () =>boolean, getCurrent: () => T, dispose?: () =>void ): IEnumerator; - } - - // Enumerable - interface IEnumerable { - getEnumerator(): IEnumerator; - - concat(): IObservable; - catchException(): IObservable; - } - export interface Enumerable { - (getEnumerator: () =>IEnumerator): IEnumerable; - - repeat(value: T, repeatCount?: number): IEnumerable; - forEach(source: T[], selector?: (element: T, index: number) => T2): IEnumerable; - forEach(source: { length: number; [index: number]: T; }, selector?: (element: T, index: number) => T2): IEnumerable; - } + static createOnNext(value: T): Notification; + static createOnError(exception): Notification; + static createOnCompleted(): Notification; } // Observer - interface IObserver { + export class Observer { onNext(value: T): void; onError(exception: any): void; onCompleted(): void; - toNotifier(): (notification: INotification) =>void; - asObserver(): IObserver; - checked(): ICheckedObserver; - } - export module Observer { - //abstract - //function new (): IObserver; + toNotifier(): (notification: Notification) =>void; + asObserver(): Observer; + checked(): Observer; - function create(onNext: (value: T) =>void , onError?: (exception: any) =>void , onCompleted?: () =>void ): IObserver; - function fromNotifier(handler: (notification: INotification) =>void ): IObserver; + static create(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): Observer; + static fromNotifier(handler: (notification: Notification) => void): Observer; } - export module Internals { - // Abstract Observer - interface IAbstractObserver extends IObserver { - isStopped: boolean; + export interface Observable { + _subscribe: (observer: Observer) => IDisposable; - dispose(): void; - next(value: T): void; - error(exception: any): void; - completed(): void; - fail(): boolean; - } - //export module AbstractObserver { - // //abstract - // function new (): IAbstractObserver; - //} + subscribe(observer: Observer): IDisposable; + + finalValue(): Observable; + subscribe(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): IDisposable; + toArray(): Observable; + + observeOn(scheduler: IScheduler): Observable; + subscribeOn(scheduler: IScheduler): Observable; + + amb(rightSource: Observable): Observable; + catchException(handler: (exception: any) => Observable): Observable; + catchException(second: Observable): Observable; + combineLatest(second: Observable, resultSelector: (v1: T, v2: T2) => TResult): Observable; + combineLatest(second: Observable, third: Observable, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable; + combineLatest(second: Observable, third: Observable, fourth: Observable, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable; + combineLatest(second: Observable, third: Observable, fourth: Observable, fifth: Observable, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable; + combineLatest(...soucesAndResultSelector: any[]): Observable; + concat(...sources: Observable[]): Observable; + concat(sources: Observable[]): Observable; + concatObservable(): T; + concatAll(): T; + merge(maxConcurrent: number): Observable; + merge(other: Observable): Observable; + mergeObservable(): T; + mergeAll(): T; + onErrorResumeNext(second: Observable): Observable; + skipUntil(other: Observable): Observable; + switchLatest(): Observable; + takeUntil(other: Observable): Observable; + zip(second: Observable, resultSelector: (v1: T, v2: T2) => TResult): Observable; + zip(second: Observable, third: Observable, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): Observable; + zip(second: Observable, third: Observable, fourth: Observable, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): Observable; + zip(second: Observable, third: Observable, fourth: Observable, fifth: Observable, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): Observable; + zip(...soucesAndResultSelector: any[]): Observable; + zip(second: any[], resultSelector: (left: T, right: any) => TResult): Observable; + asIObservable(): Observable; + bufferWithCount(count: number, skip?: number): Observable; + dematerialize(): Observable; + distinctUntilChanged(keySelector?: (value: T) => TValue, comparer?: (x: TValue, y: TValue) => boolean): Observable; + doAction(observer: Observer): Observable; + doAction(onNext: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): Observable; + finallyAction(action: () => void): Observable; + ignoreElements(): Observable; + materialize(): Observable>; + repeat(repeatCount?: number): Observable; + retry(retryCount?: number): Observable; + scan(seed: TAcc, accumulator: (acc: TAcc, value: T) => TAcc): Observable; + scan(accumulator: (acc: TAcc, value: T) => TAcc): Observable; + skipLast(count: number): Observable; + startWith(...values: T[]): Observable; + startWith(scheduler: IScheduler, ...values: T[]): Observable; + takeLast(count: number, scheduler?: IScheduler): Observable; + takeLastBuffer(count: number): Observable; + windowWithCount(count: number, skip?: number): Observable; + defaultIfEmpty(defaultValue?: T): Observable; + distinct(keySelector?: (value: T) => TKey, keySerializer?: (key: TKey) => string): Observable; + groupBy(keySelector: (value: T) => TKey, elementSelector?: (value: T) => TElement, keySerializer?: (key: TKey) => string): GroupedObservable; + groupByUntil(keySelector: (value: T) => TKey, elementSelector: (value: T) => TElement, durationSelector: (group: GroupedObservable) => Observable, keySerializer?: (key: TKey) => string): GroupedObservable; + select(selector: (value: T, index: number) => T2): Observable; + selectMany(selector: (value: T) => Observable, resultSelector?: (x: any, y: any) => any): Observable; + selectMany(other: Observable): Observable; + skip(count: number): Observable; + skipWhile(predicate: (value: T, index?: number) => boolean): Observable; + take(count: number, scheduler?: IScheduler): Observable; + takeWhile(predicate: (value: T, index?: number) => boolean): Observable; + where(predicate: (value: T, index?: number) => boolean): Observable; } - export class AnonymousObserver { - constructor(onNext: (value: T) => void , onError: (exception: any) => void , onCompleted: () => void); + interface ObservableStatic { + create(subscribe: (observer: Observer) => void): Observable; + create(subscribe: (observer: Observer) => () => void): Observable; + createWithDisposable(subscribe: (observer: Observer) => IDisposable): Observable; + defer(observableFactory: () => Observable): Observable; + empty(scheduler?: IScheduler): Observable; + fromArray(array: T[], scheduler?: IScheduler): Observable; + fromArray(array: { length: number;[index: number]: T; }, scheduler?: IScheduler): Observable; + generate(initialState: TState, condition: (state: TState) => boolean, iterate: (state: TState) => TState, resultSelector: (state: TState) => TResult, scheduler?: IScheduler): Observable; + never(): Observable; + range(start: number, count: number, scheduler?: IScheduler): Observable; + repeat(value: T, repeatCount?: number, scheduler?: IScheduler): Observable; + return(value: T, scheduler?: IScheduler): Observable; + returnValue(value: T, scheduler?: IScheduler): Observable; + throw(exception: Error, scheduler?: IScheduler): Observable; + throw(exception: any, scheduler?: IScheduler): Observable; + throwException(exception: Error, scheduler?: IScheduler): Observable; + throwException(exception: any, scheduler?: IScheduler): Observable; + using(resourceFactory: () => TResource, observableFactory: (resource: TResource) => Observable): Observable; + amb(...sources: Observable[]): Observable; + amb(sources: Observable[]): Observable; + catch(sources: Observable[]): Observable; + catchException(sources: Observable[]): Observable; + catch(...sources: Observable[]): Observable; + catchException(...sources: Observable[]): Observable; + concat(...sources: Observable[]): Observable; + concat(sources: Observable[]): Observable; + merge(...sources: Observable[]): Observable; + merge(sources: Observable[]): Observable; + merge(scheduler: IScheduler, ...sources: Observable[]): Observable; + merge(scheduler: IScheduler, sources: Observable[]): Observable; + onErrorResumeNext(...sources: Observable[]): Observable; + onErrorResumeNext(sources: Observable[]): Observable; + zip(sources: Observable[], resultSelector: (...items: T[]) => TResult): Observable; + zip(source1: Observable, source2: Observable, resultSelector: (item1: T1, item2: T2) => TResult): Observable; + zip(source1: Observable, source2: Observable, source3: Observable, resultSelector: (item1: T1, item2: T2, item3: T3) => TResult): Observable; + zip(source1: Observable, source2: Observable, source3: Observable, source4: Observable, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4) => TResult): Observable; + zip(source1: Observable, source2: Observable, source3: Observable, source4: Observable, source5: Observable, resultSelector: (item1: T1, item2: T2, item3: T3, item4: T4, item5: T5) => TResult): Observable; + zipArray(...sources: Observable[]): Observable; + zipArray(sources: Observable[]): Observable; } - interface ICheckedObserver extends IObserver { - _observer: IObserver; - _state: number; // 0 - idle, 1 - busy, 2 - done - checkAccess(): void; - } + export var Observable: ObservableStatic; - export module Internals { - interface IScheduledObserver extends IAbstractObserver { - scheduler: IScheduler; - observer: IObserver; - isAcquired: boolean; - hasFaulted: boolean; - //queue: { (value: any): void; (exception: any): void; (): void; }[]; - disposable: SerialDisposable; - - ensureActive(): void; - } - export interface ScheduledObserver { - (scheduler: IScheduler, observer: IObserver): IScheduledObserver; - } - } - - interface IObservable { - _subscribe: (observer: IObserver) =>IDisposable; - - subscribe(observer: IObserver): IDisposable; - - finalValue(): IObservable; - subscribe(onNext?: (value: T) =>void , onError?: (exception: any) =>void , onCompleted?: () =>void ): IDisposable; - toArray(): IObservable; - - observeOn(scheduler: IScheduler): IObservable; - subscribeOn(scheduler: IScheduler): IObservable; - - amb(rightSource: IObservable): IObservable; - catchException(handler: (exception: any) =>IObservable): IObservable; - catchException(second: IObservable): IObservable; - combineLatest(second: IObservable, resultSelector: (v1: T, v2: T2) =>TResult): IObservable; - combineLatest(second: IObservable, third: IObservable, resultSelector: (v1: T, v2: T2, v3: T3) =>TResult): IObservable; - combineLatest(second: IObservable, third: IObservable, fourth: IObservable, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) =>TResult): IObservable; - combineLatest(second: IObservable, third: IObservable, fourth: IObservable, fifth: IObservable, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) =>TResult): IObservable; - combineLatest(...soucesAndResultSelector: any[]): IObservable; - concat(...sources: IObservable[]): IObservable; - concat(sources: IObservable[]): IObservable; - //concatIObservable(): IObservable; - merge(maxConcurrent: number): IObservable; - merge(other: IObservable): IObservable; - //mergeIObservable(): IObservable; - onErrorResumeNext(second: IObservable): IObservable; - skipUntil(other: IObservable): IObservable; - switchLatest(): IObservable; - takeUntil(other: IObservable): IObservable; - zip(second: IObservable, resultSelector: (v1: T, v2: T2) =>TResult): IObservable; - zip(second: IObservable, third: IObservable, resultSelector: (v1: T, v2: T2, v3: T3) => TResult): IObservable; - zip(second: IObservable, third: IObservable, fourth: IObservable, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4) => TResult): IObservable; - zip(second: IObservable, third: IObservable, fourth: IObservable, fifth: IObservable, resultSelector: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => TResult): IObservable; - zip(...soucesAndResultSelector: any[]): IObservable; - zip(second: any[], resultSelector: (left: T, right: any) => TResult): IObservable; - asIObservable(): IObservable; - bufferWithCount(count: number, skip?: number): IObservable; - dematerialize(): IObservable; - distinctUntilChanged(keySelector?: (value: T) => TValue, comparer?: (x: TValue, y: TValue) =>boolean): IObservable; - doAction(observer: IObserver): IObservable; - doAction(onNext: (value: T) => void , onError?: (exception: any) =>void , onCompleted?: () =>void ): IObservable; - finallyAction(action: () =>void): IObservable; - ignoreElements(): IObservable; - materialize(): IObservable>; // IObservable> not supported by TypeScript 0.9.0 !! - repeat(repeatCount?: number): IObservable; - retry(retryCount?: number): IObservable; - scan(seed: TAcc, accumulator: (acc: TAcc, value: T) => TAcc): IObservable; - scan(accumulator: (acc: TAcc, value: T) => TAcc): IObservable; - skipLast(count: number): IObservable; - startWith(...values: T[]): IObservable; - startWith(scheduler: IScheduler, ...values: T[]): IObservable; - takeLast(count: number, scheduler?: IScheduler): IObservable; - takeLastBuffer(count: number): IObservable; - windowWithCount(count: number, skip?: number): IObservable; - defaultIfEmpty(defaultValue?: any): IObservable; - distinct(keySelector?: (value: T) => TKey, keySerializer?: (key: TKey) =>string): IObservable; - groupBy(keySelector: (value: T) => TKey, elementSelector?: (value: T) => TElement, keySerializer?: (key: TKey) => string): IGroupedObservable; - groupByUntil(keySelector: (value: T) => TKey, elementSelector: (value: T) => TElement, durationSelector: (group: IGroupedObservable) => IObservable, keySerializer?: (key: TKey) => string): IGroupedObservable; - select(selector: (value: T, index: number) =>T2): IObservable; - selectMany(selector: (value: T) =>IObservable, resultSelector?: (x: any, y: any) =>any): IObservable; - selectMany(other: IObservable): IObservable; - skip(count: number): IObservable; - skipWhile(predicate: (value: T, index?: number) =>boolean): IObservable; - take(count: number, scheduler?: IScheduler): IObservable; - takeWhile(predicate: (value: T, index?: number) =>boolean): IObservable; - where(predicate: (value: T, index?: number) => boolean): IObservable; - } - - interface Observable { - (subscribe: (observer: IObserver) =>IDisposable): IObservable; - - create(subscribe: (observer: IObserver) => void ): IObservable; - create(subscribe: (observer: IObserver) => () => void ): IObservable; - createWithDisposable(subscribe: (observer: IObserver) =>IDisposable): IObservable; - defer(observableFactory: () => IObservable): IObservable; - empty(scheduler?: IScheduler): IObservable; - fromArray(array: T[], scheduler?: IScheduler): IObservable; - fromArray(array: { length: number;[index: number]: T; }, scheduler?: IScheduler): IObservable; - generate(initialState: TState, condition: (state: TState) => boolean, iterate: (state: TState) => TState, resultSelector: (state: TState) => TResult, scheduler?: IScheduler): IObservable; - never(): IObservable; - range(start: number, count: number, scheduler?: IScheduler): IObservable; - repeat(value: T, repeatCount?: number, scheduler?: IScheduler): IObservable; - return(value: T, scheduler?: IScheduler): IObservable; - returnValue(value: T, scheduler?: IScheduler): IObservable; - throw(exception: Error, scheduler?: IScheduler): IObservable; - throw(exception: any, scheduler?: IScheduler): IObservable; - throwException(exception: Error, scheduler?: IScheduler): IObservable; - throwException(exception: any, scheduler?: IScheduler): IObservable; - using(resourceFactory: () => TResource, observableFactory: (resource: TResource) => IObservable): IObservable; - amb(...sources: IObservable[]): IObservable; - catchException(sources: IObservable[]): IObservable; - catchException(...sources: IObservable[]): IObservable; - concat(...sources: IObservable[]): IObservable; - concat(sources: IObservable[]): IObservable; - merge(...sources: IObservable[]): IObservable; - merge(sources: IObservable[]): IObservable; - merge(scheduler: IScheduler, ...sources: IObservable[]): IObservable; - merge(scheduler: IScheduler, sources: IObservable[]): IObservable; - onErrorResumeNext(...sources: IObservable[]): IObservable; - onErrorResumeNext(sources: IObservable[]): IObservable; - zip(...soucesAndResultSelector: any[]): IObservable; - } - - var Observable: Observable; - - export module Internals { - interface IAnonymousObservable extends IObservable { } - export interface AnonymousObservable { - (subscribe: (observer: IObserver) =>IDisposable): IAnonymousObservable; - } - } - - interface IGroupedObservable extends IObservable { + interface GroupedObservable extends Observable { key: TKey; - underlyingObservable: IObservable; + underlyingObservable: Observable; } - interface ISubject extends IObservable, IObserver { - isDisposed: boolean; - isStopped: boolean; - //observers: IObserver[]; - - dispose(): void; + interface ISubject extends Observable, Observer, IDisposable { + hasObservers(): boolean; } export interface Subject extends ISubject { - create(observer?: IObserver, observable?: IObservable): ISubject; } - var Subject: { + interface SubjectStatic { new (): Subject; - } - - interface IAsyncSubject extends IObservable, IObserver { - isDisposed: boolean; - value: T; - hasValue: boolean; - observers: IObserver[]; - exception: any; - - dispose(): void; - } - export interface AsyncSubject { - (): IAsyncSubject; + create(observer?: Observer, observable?: Observable): ISubject; } - interface IAnonymousSubject extends IObservable { - onNext(value: T): void; - onError(exception: any): void; - onCompleted(): void; + export var Subject: SubjectStatic; + + export interface AsyncSubject extends Subject { } + + interface AsyncSubjectStatic { + new (): AsyncSubject; + } + + export var AsyncSubject: AsyncSubjectStatic; + + export interface BehaviorSubject extends Subject { + } + + interface BehaviorSubjectStatic { + new (initialValue: T): BehaviorSubject; + } + + export var BehaviorSubject: BehaviorSubjectStatic; + + export interface ReplaySubject extends Subject { + } + + interface ReplaySubjectStatic { + new (initialValue: T): ReplaySubject; + } + + export var ReplaySubject: ReplaySubjectStatic; } diff --git a/rx.js/rx.js.experimental.d.ts b/rx.js/rx.js.experimental.d.ts index a43788b87..1a1c38f54 100644 --- a/rx.js/rx.js.experimental.d.ts +++ b/rx.js/rx.js.experimental.d.ts @@ -7,7 +7,7 @@ declare module Rx { - interface IObservable { + interface Observable { /** * Returns an observable sequence that is the result of invoking the selector on the source sequence, without sharing subscriptions. * This operator allows for a fluent style of writing queries that use the same sequence multiple times. @@ -15,7 +15,7 @@ declare module Rx { * @param selector Selector function which can use the source sequence as many times as needed, without sharing subscriptions to the source sequence. * @returns An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. */ - let(selector: (source: IObservable) => IObservable): IObservable; + let(selector: (source: Observable) => Observable): Observable; /** * Returns an observable sequence that is the result of invoking the selector on the source sequence, without sharing subscriptions. @@ -24,14 +24,14 @@ declare module Rx { * @param selector Selector function which can use the source sequence as many times as needed, without sharing subscriptions to the source sequence. * @returns An observable sequence that contains the elements of a sequence produced by multicasting the source sequence within a selector function. */ - letBind(selector: (source: IObservable) => IObservable): IObservable; + letBind(selector: (source: Observable) => Observable): Observable; /** * Repeats source as long as condition holds emulating a do while loop. * @param condition The condition which determines if the source will be repeated. * @returns An observable sequence which is repeated as long as the condition holds. */ - doWhile(condition: () => boolean): IObservable; + doWhile(condition: () => boolean): Observable; /** * Expands an observable sequence by recursively invoking selector. @@ -40,7 +40,7 @@ declare module Rx { * @param [scheduler] Scheduler on which to perform the expansion. If not provided, this defaults to the current thread scheduler. * @returns An observable sequence containing all the elements produced by the recursive expansion. */ - expand(selector: (item: T) => IObservable, scheduler?: IScheduler): IObservable; + expand(selector: (item: T) => Observable, scheduler?: IScheduler): Observable; /** * Runs two observable sequences in parallel and combines their last elemenets. @@ -49,7 +49,7 @@ declare module Rx { * @param resultSelector Result selector function to invoke with the last elements of both sequences. * @returns An observable sequence with the result of calling the selector function with the last elements of both input sequences. */ - forkJoin(second: IObservable, resultSelector: (left: T, right: TSecond) => TResult): IObservable; + forkJoin(second: Observable, resultSelector: (left: T, right: TSecond) => TResult): Observable; /** * Comonadic bind operator. @@ -57,7 +57,7 @@ declare module Rx { * @param [scheduler] Scheduler used to execute the operation. If not specified, defaults to the ImmediateScheduler. * @returns An observable sequence which results from the comonadic bind operation. */ - manySelect(selector: (item: IObservable, index: number, source: IObservable) => TResult, scheduler?: IScheduler): IObservable; + manySelect(selector: (item: Observable, index: number, source: Observable) => TResult, scheduler?: IScheduler): Observable; } interface Observable { @@ -71,7 +71,7 @@ declare module Rx { * @param elseSource The observable sequence that will be run if the condition function returns false. * @returns An observable sequence which is either the thenSource or elseSource. */ - if(condition: () => boolean, thenSource: IObservable, elseSource: IObservable): IObservable; + if(condition: () => boolean, thenSource: Observable, elseSource: Observable): Observable; /** * Determines whether an observable collection contains values. There is an alias for this method called 'ifThen' for browsers (condition: () => boolean, thenSource: IObservable, scheduler?: IScheduler): IObservable; + if(condition: () => boolean, thenSource: Observable, scheduler?: IScheduler): Observable; /** * Determines whether an observable collection contains values. There is an alias for this method called 'ifThen' for browsers (condition: () => boolean, thenSource: IObservable, elseSource: IObservable): IObservable; + ifThen(condition: () => boolean, thenSource: Observable, elseSource: Observable): Observable; /** * Determines whether an observable collection contains values. There is an alias for this method called 'ifThen' for browsers (condition: () => boolean, thenSource: IObservable, scheduler?: IScheduler): IObservable; + ifThen(condition: () => boolean, thenSource: Observable, scheduler?: IScheduler): Observable; /** * Concatenates the observable sequences obtained by running the specified result selector for each element in source. @@ -116,7 +116,7 @@ declare module Rx { * @param resultSelector A function to apply to each item in the sources array to turn it into an observable sequence. * @returns An observable sequence from the concatenated observable sequences. */ - for(sources: T[], resultSelector: (item: T) => IObservable): IObservable; + for(sources: T[], resultSelector: (item: T) => Observable): Observable; /** * Concatenates the observable sequences obtained by running the specified result selector for each element in source. @@ -125,7 +125,7 @@ declare module Rx { * @param resultSelector A function to apply to each item in the sources array to turn it into an observable sequence. * @returns An observable sequence from the concatenated observable sequences. */ - forIn(sources: T[], resultSelector: (item: T) => IObservable): IObservable; + forIn(sources: T[], resultSelector: (item: T) => Observable): Observable; /** * Repeats source as long as condition holds emulating a while loop. @@ -134,7 +134,7 @@ declare module Rx { * @param source The observable sequence that will be run if the condition function returns true. * @returns An observable sequence which is repeated as long as the condition holds. */ - while(condition: () => boolean, source: IObservable): IObservable; + while(condition: () => boolean, source: Observable): Observable; /** * Repeats source as long as condition holds emulating a while loop. @@ -143,7 +143,7 @@ declare module Rx { * @param source The observable sequence that will be run if the condition function returns true. * @returns An observable sequence which is repeated as long as the condition holds. */ - whileDo(condition: () => boolean, source: IObservable): IObservable; + whileDo(condition: () => boolean, source: Observable): Observable; /** * Uses selector to determine which source in sources to use. @@ -157,7 +157,7 @@ declare module Rx { * * @returns An observable sequence which is determined by a case statement. */ - case(selector: () => string, sources: { [key: string]: IObservable; }, elseSource: IObservable): IObservable; + case(selector: () => string, sources: { [key: string]: Observable; }, elseSource: Observable): Observable; /** * Uses selector to determine which source in sources to use. @@ -173,7 +173,7 @@ declare module Rx { * * @returns An observable sequence which is determined by a case statement. */ - case(selector: () => string, sources: { [key: string]: IObservable; }, scheduler?: IScheduler): IObservable; + case(selector: () => string, sources: { [key: string]: Observable; }, scheduler?: IScheduler): Observable; /** * Uses selector to determine which source in sources to use. @@ -187,7 +187,7 @@ declare module Rx { * * @returns An observable sequence which is determined by a case statement. */ - case(selector: () => number, sources: { [key: number]: IObservable; }, elseSource: IObservable): IObservable; + case(selector: () => number, sources: { [key: number]: Observable; }, elseSource: Observable): Observable; /** * Uses selector to determine which source in sources to use. @@ -203,7 +203,7 @@ declare module Rx { * * @returns An observable sequence which is determined by a case statement. */ - case(selector: () => number, sources: { [key: number]: IObservable; }, scheduler?: IScheduler): IObservable; + case(selector: () => number, sources: { [key: number]: Observable; }, scheduler?: IScheduler): Observable; /** * Uses selector to determine which source in sources to use. @@ -217,7 +217,7 @@ declare module Rx { * * @returns An observable sequence which is determined by a case statement. */ - switchCase(selector: () => string, sources: { [key: string]: IObservable; }, elseSource: IObservable): IObservable; + switchCase(selector: () => string, sources: { [key: string]: Observable; }, elseSource: Observable): Observable; /** * Uses selector to determine which source in sources to use. @@ -233,7 +233,7 @@ declare module Rx { * * @returns An observable sequence which is determined by a case statement. */ - switchCase(selector: () => string, sources: { [key: string]: IObservable; }, scheduler?: IScheduler): IObservable; + switchCase(selector: () => string, sources: { [key: string]: Observable; }, scheduler?: IScheduler): Observable; /** * Uses selector to determine which source in sources to use. @@ -247,7 +247,7 @@ declare module Rx { * * @returns An observable sequence which is determined by a case statement. */ - switchCase(selector: () => number, sources: { [key: number]: IObservable; }, elseSource: IObservable): IObservable; + switchCase(selector: () => number, sources: { [key: number]: Observable; }, elseSource: Observable): Observable; /** * Uses selector to determine which source in sources to use. @@ -263,7 +263,7 @@ declare module Rx { * * @returns An observable sequence which is determined by a case statement. */ - switchCase(selector: () => number, sources: { [key: number]: IObservable; }, scheduler?: IScheduler): IObservable; + switchCase(selector: () => number, sources: { [key: number]: Observable; }, scheduler?: IScheduler): Observable; /** * Runs all observable sequences in parallel and collect their last elements. @@ -273,7 +273,7 @@ declare module Rx { * @param sources Array of source sequences. * @returns An observable sequence with an array collecting the last elements of all the input sequences. */ - forkJoin(sources: IObservable[]): IObservable; + forkJoin(sources: Observable[]): Observable; /** * Runs all observable sequences in parallel and collect their last elements. @@ -283,6 +283,6 @@ declare module Rx { * @param args Source sequences. * @returns An observable sequence with an array collecting the last elements of all the input sequences. */ - forkJoin(...args: IObservable[]): IObservable; + forkJoin(...args: Observable[]): Observable; } } diff --git a/rx.js/rx.js.joinpatterns.d.ts b/rx.js/rx.js.joinpatterns.d.ts index a62b1914d..fe6cf6bdd 100644 --- a/rx.js/rx.js.joinpatterns.d.ts +++ b/rx.js/rx.js.joinpatterns.d.ts @@ -11,7 +11,7 @@ declare module Rx { - //interface IObservable { + //interface Observable { //} diff --git a/rx.js/rx.js.jquery.d.ts b/rx.js/rx.js.jquery.d.ts index bfd514631..75db935a9 100644 --- a/rx.js/rx.js.jquery.d.ts +++ b/rx.js/rx.js.jquery.d.ts @@ -55,45 +55,45 @@ declare module JQueryResults { interface JQueryStatic { - ajaxAsObservable(settings: JQueryAjaxSettings): Rx.IObservable; - getAsObservable(url: string, data: any, dataType: string): Rx.IObservable; - getJSONAsObservable(url: string, data: any): Rx.IObservable; - getScriptAsObservable(url: string, data: any): Rx.IObservable; - postAsObservable(url: string, data: any, dataType: string): Rx.IObservable; + ajaxAsObservable(settings: JQueryAjaxSettings): Rx.Observable; + getAsObservable(url: string, data: any, dataType: string): Rx.Observable; + getJSONAsObservable(url: string, data: any): Rx.Observable; + getScriptAsObservable(url: string, data: any): Rx.Observable; + postAsObservable(url: string, data: any, dataType: string): Rx.Observable; } interface JQuery { - changeAsObservable(eventData?: any): Rx.IObservable; - clickAsObservable(eventData?: any): Rx.IObservable; - dblclickAsObservable(eventData?: any): Rx.IObservable; - focusAsObservable(eventData?: any): Rx.IObservable; - focusinAsObservable(eventData?: any): Rx.IObservable; - focusoutAsObservable(eventData?: any): Rx.IObservable; - keydownAsObservable(eventData?: any): Rx.IObservable; - keyupAsObservable(eventData?: any): Rx.IObservable; - loadAsObservable(eventData?: any): Rx.IObservable; - mousedownAsObservable(eventData?: any): Rx.IObservable; - mouseenterAsObservable(eventData?: any): Rx.IObservable; - mouseleaveAsObservable(eventData?: any): Rx.IObservable; - mousemoveAsObservable(eventData?: any): Rx.IObservable; - mouseoutAsObservable(eventData?: any): Rx.IObservable; - mouseoverAsObservable(eventData?: any): Rx.IObservable; - mouseupAsObservable(eventData?: any): Rx.IObservable; - resizeAsObservable(eventData?: any): Rx.IObservable; - scrollAsObservable(eventData?: any): Rx.IObservable; - selectAsObservable(eventData?: any): Rx.IObservable; - submitAsObservable(eventData?: any): Rx.IObservable; - unloadAsObservable(eventData?: any): Rx.IObservable; - hideAsObservable(duration: number): Rx.IObservable; - showAsObservable(duration: number): Rx.IObservable; - readyAsObservable(): Rx.IObservable; - animateAsObservable(properties: any, duration: number, easing?: string): Rx.IObservable; - fadeInAsObservable(duration: number, easing?: string): Rx.IObservable; - fadeToAsObservable(duration: number, opacity: number, easing?: string): Rx.IObservable; - fadeOutAsObservable(duration: number, easing?: string): Rx.IObservable; - fadeToggleAsObservable(duration: number, easing?: string): Rx.IObservable; - slideDownAsObservable(duration: number): Rx.IObservable; - slideUpAsObservable(duration: number): Rx.IObservable; - slideToggleAsObservable(duration: number): Rx.IObservable; - toggleAsObservable(duration: number): Rx.IObservable; + changeAsObservable(eventData?: any): Rx.Observable; + clickAsObservable(eventData?: any): Rx.Observable; + dblclickAsObservable(eventData?: any): Rx.Observable; + focusAsObservable(eventData?: any): Rx.Observable; + focusinAsObservable(eventData?: any): Rx.Observable; + focusoutAsObservable(eventData?: any): Rx.Observable; + keydownAsObservable(eventData?: any): Rx.Observable; + keyupAsObservable(eventData?: any): Rx.Observable; + loadAsObservable(eventData?: any): Rx.Observable; + mousedownAsObservable(eventData?: any): Rx.Observable; + mouseenterAsObservable(eventData?: any): Rx.Observable; + mouseleaveAsObservable(eventData?: any): Rx.Observable; + mousemoveAsObservable(eventData?: any): Rx.Observable; + mouseoutAsObservable(eventData?: any): Rx.Observable; + mouseoverAsObservable(eventData?: any): Rx.Observable; + mouseupAsObservable(eventData?: any): Rx.Observable; + resizeAsObservable(eventData?: any): Rx.Observable; + scrollAsObservable(eventData?: any): Rx.Observable; + selectAsObservable(eventData?: any): Rx.Observable; + submitAsObservable(eventData?: any): Rx.Observable; + unloadAsObservable(eventData?: any): Rx.Observable; + hideAsObservable(duration: number): Rx.Observable; + showAsObservable(duration: number): Rx.Observable; + readyAsObservable(): Rx.Observable; + animateAsObservable(properties: any, duration: number, easing?: string): Rx.Observable; + fadeInAsObservable(duration: number, easing?: string): Rx.Observable; + fadeToAsObservable(duration: number, opacity: number, easing?: string): Rx.Observable; + fadeOutAsObservable(duration: number, easing?: string): Rx.Observable; + fadeToggleAsObservable(duration: number, easing?: string): Rx.Observable; + slideDownAsObservable(duration: number): Rx.Observable; + slideUpAsObservable(duration: number): Rx.Observable; + slideToggleAsObservable(duration: number): Rx.Observable; + toggleAsObservable(duration: number): Rx.Observable; } \ No newline at end of file diff --git a/rx.js/rx.js.time.d.ts b/rx.js/rx.js.time.d.ts index e329a823c..779a7b3c9 100644 --- a/rx.js/rx.js.time.d.ts +++ b/rx.js/rx.js.time.d.ts @@ -11,61 +11,61 @@ declare module Rx { - interface ITimeInterval { - value: any; + export interface TimeInterval { + value: T; interval: number; } - interface ITimestamp { - value: any; - interval: number; + export interface Timestamp { + value: T; + timestamp: number; } - interface IObservable { - ifThen(condition: () => boolean, thenSource: IObservable): IObservable; - ifThen(condition: () => boolean, thenSource: IObservable, elseSource: IObservable): IObservable; - ifThen(condition: () => boolean, thenSource: IObservable, scheduler: IScheduler): IObservable; + export interface Observable { + ifThen(condition: () => boolean, thenSource: Observable): Observable; + ifThen(condition: () => boolean, thenSource: Observable, elseSource: Observable): Observable; + ifThen(condition: () => boolean, thenSource: Observable, scheduler: IScheduler): Observable; - delay(dueTime: number, scheduler?: IScheduler): IObservable; - throttle(dueTime: number, scheduler?: IScheduler): IObservable; - windowWithTime(timeSpan: number, timeShift: number, scheduler?: IScheduler): IObservable; - windowWithTime(timeSpan: number, scheduler?: IScheduler): IObservable; - windowWithTimeOrCount(timeSpan: number, count: number, scheduler?: IScheduler): IObservable; - bufferWithTime(timeSpan: number, timeShift: number, scheduler?: IScheduler): IObservable; - bufferWithTime(timeSpan: number, scheduler?: IScheduler): IObservable; - bufferWithTimeOrCount(timeSpan: number, count: number, scheduler?: IScheduler): IObservable; - timeInterval(scheduler?: IScheduler): IObservable; - timestamp(scheduler?: IScheduler): IObservable; - sample(interval: number, scheduler?: IScheduler): IObservable; - sample(sampler: IObservable, scheduler?: IScheduler): IObservable; - timeout(dueTime: Date, other?: IObservable, scheduler?: IScheduler): IObservable; - timeout(dueTime: number, other?: IObservable, scheduler?: IScheduler): IObservable; + delay(dueTime: number, scheduler?: IScheduler): Observable; + throttle(dueTime: number, scheduler?: IScheduler): Observable; + windowWithTime(timeSpan: number, timeShift: number, scheduler?: IScheduler): Observable; + windowWithTime(timeSpan: number, scheduler?: IScheduler): Observable; + windowWithTimeOrCount(timeSpan: number, count: number, scheduler?: IScheduler): Observable; + bufferWithTime(timeSpan: number, timeShift: number, scheduler?: IScheduler): Observable; + bufferWithTime(timeSpan: number, scheduler?: IScheduler): Observable; + bufferWithTimeOrCount(timeSpan: number, count: number, scheduler?: IScheduler): Observable; + timeInterval(scheduler?: IScheduler): Observable>; + timestamp(scheduler?: IScheduler): Observable>; + sample(interval: number, scheduler?: IScheduler): Observable; + sample(sampler: Observable, scheduler?: IScheduler): Observable; + timeout(dueTime: Date, other?: Observable, scheduler?: IScheduler): Observable; + timeout(dueTime: number, other?: Observable, scheduler?: IScheduler): Observable; - delaySubscription(dueTime: number, scheduler?: IScheduler): IObservable; - delayWithSelector(delayDurationSelector: (item: T) => number): IObservable; - delayWithSelector(subscriptionDelay: number, delayDurationSelector: (item: T) => number): IObservable; + delaySubscription(dueTime: number, scheduler?: IScheduler): Observable; + delayWithSelector(delayDurationSelector: (item: T) => number): Observable; + delayWithSelector(subscriptionDelay: number, delayDurationSelector: (item: T) => number): Observable; - timeoutWithSelector(firstTimeout: IObservable, timeoutdurationSelector?: (item: T) => IObservable, other?: IObservable): IObservable; - throttleWithSelector(throttleDurationSelector: (item: T) => IObservable): IObservable; + timeoutWithSelector(firstTimeout: Observable, timeoutdurationSelector?: (item: T) => Observable, other?: Observable): Observable; + throttleWithSelector(throttleDurationSelector: (item: T) => Observable): Observable; - skipLastWithTime(duration: number, scheduler?: IScheduler): IObservable; - takeLastWithTime(duration: number, timerScheduler?: IScheduler, loopScheduler?: IScheduler): IObservable; + skipLastWithTime(duration: number, scheduler?: IScheduler): Observable; + takeLastWithTime(duration: number, timerScheduler?: IScheduler, loopScheduler?: IScheduler): Observable; - takeLastBufferWithTime(duration: number, scheduler?: IScheduler): IObservable; - takeWithTime(duration: number, scheduler?: IScheduler): IObservable; - skipWithTime(duration: number, scheduler?: IScheduler): IObservable; + takeLastBufferWithTime(duration: number, scheduler?: IScheduler): Observable; + takeWithTime(duration: number, scheduler?: IScheduler): Observable; + skipWithTime(duration: number, scheduler?: IScheduler): Observable; - skipUntilWithTime(startTime: Date, scheduler?: IScheduler): IObservable; - takeUntilWithTime(endTime: Date, scheduler?: IScheduler): IObservable; + skipUntilWithTime(startTime: Date, scheduler?: IScheduler): Observable; + takeUntilWithTime(endTime: Date, scheduler?: IScheduler): Observable; } - interface Observable { - interval(period: number, scheduler?: IScheduler): IObservable; - interval(dutTime: number, period: number, scheduler?: IScheduler): IObservable; - timer(dueTime: Date, period: number, scheduler: IScheduler): IObservable; - timer(dueTime: Date, scheduler: IScheduler): IObservable; - timer(dueTime: number, period: number, scheduler: IScheduler): IObservable; - timer(dueTime: number, scheduler: IScheduler): IObservable; + interface ObservableStatic { + interval(period: number, scheduler?: IScheduler): Observable; + interval(dutTime: number, period: number, scheduler?: IScheduler): Observable; + timer(dueTime: Date, period: number, scheduler: IScheduler): Observable; + timer(dueTime: Date, scheduler: IScheduler): Observable; + timer(dueTime: number, period: number, scheduler: IScheduler): Observable; + timer(dueTime: number, scheduler: IScheduler): Observable; generateWithAbsoluteTime( initialState: TState, @@ -73,7 +73,7 @@ declare module Rx { iterate: (state: TState) => TState, resultSelector: (state: TState) => TResult, timeSelector: (state: TState) => Date, - scheduler?: IScheduler): IObservable; + scheduler?: IScheduler): Observable; generateWithRelativeTime( initialState: TState, @@ -81,6 +81,6 @@ declare module Rx { iterate: (state: TState) => TState, resultSelector: (state: TState) => TResult, timeSelector: (state: TState) => number, - scheduler?: IScheduler): IObservable; + scheduler?: IScheduler): Observable; } } \ No newline at end of file