From 188cf5885dcd1e7c1445511abd730902e255adbd Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Wed, 11 Dec 2013 18:19:18 +0400 Subject: [PATCH 01/22] rx.js: started to make consistent with official documentation --- rx.js/rx.js.binding.d.ts | 2 +- rx.js/rx.js.d.ts | 187 ++++++++++++++++++----------------- rx.js/rx.js.time.d.ts | 2 +- rx.js/rx.js.virtualtime.d.ts | 8 +- 4 files changed, 104 insertions(+), 95 deletions(-) diff --git a/rx.js/rx.js.binding.d.ts b/rx.js/rx.js.binding.d.ts index b1f7c687a..97a62d0f8 100644 --- a/rx.js/rx.js.binding.d.ts +++ b/rx.js/rx.js.binding.d.ts @@ -28,7 +28,7 @@ declare module Rx { } interface ConnectableObservable extends IObservable{ - connect(): _IDisposable; + connect(): IDisposable; refCount(): IObservable; } diff --git a/rx.js/rx.js.d.ts b/rx.js/rx.js.d.ts index aeefce98f..0b9c03de7 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: IObservable, r: { getDisposable(): IDisposable; }): IObservable; } //Collections @@ -34,142 +34,147 @@ declare module Rx { remove(item: IIndexedItem): boolean; } - interface _IDisposable { + interface IDisposable { dispose(): void; } - export class CompositeDisposable { - constructor (...disposables: _IDisposable[]); + export class CompositeDisposable implements IDisposable { + constructor (...disposables: IDisposable[]); + constructor (disposables: IDisposable[]); - disposables: _IDisposable[]; isDisposed: boolean; length: number; dispose(): void; - add(item: _IDisposable): void; - remove(item: _IDisposable): boolean; + add(item: IDisposable): void; + remove(item: IDisposable): boolean; clear(): void; - contains(item: _IDisposable): boolean; - toArray(): _IDisposable[]; + contains(item: IDisposable): boolean; + toArray(): IDisposable[]; } - // Main disposable class - interface IDisposable { + export class Disposable implements IDisposable { + constructor(action: () => void); + + static create(action: () => void): IDisposable; + static empty: IDisposable; + isDisposed: boolean; - action: () =>void; + action: () => void; dispose(): void; } - export interface Disposable { - new (action: () =>void ): IDisposable; - } - - var Disposable: { - create(action: () => void): _IDisposable; - empty: _IDisposable; - } - // Single assignment - interface ISingleAssignmentDisposable { - isDisposed: boolean; - current: _IDisposable; + export class SingleAssignmentDisposable implements IDisposable { + constructor(); - dispose(): void; - disposable(value?: _IDisposable): _IDisposable; - getDisposable(): _IDisposable; - setDisposable(value: _IDisposable): void; - } - export interface SingleAssignmentDisposable { - (): ISingleAssignmentDisposable; + isDisposed: boolean; + current: IDisposable; + + dispose(): void ; + getDisposable(): IDisposable; + setDisposable(value: IDisposable): void ; } // Multiple assignment disposable - export class SerialDisposable { + export class SerialDisposable implements IDisposable { + constructor(); + isDisposed: boolean; - current: _IDisposable; dispose(): void; - getDisposable(): _IDisposable; - setDisposable(value: _IDisposable): void; - disposable(value?: _IDisposable): _IDisposable; + getDisposable(): IDisposable; + setDisposable(value: IDisposable): void; } - export class RefCountDisposable { - constructor(disposable: _IDisposable); - - underlyingDisposable: _IDisposable; - isDisposed: boolean; - isPrimaryDisposed: boolean; - count: number; + export class RefCountDisposable implements IDisposable { + constructor(disposable: IDisposable); dispose(): void; - getDisposable(): _IDisposable; + + isDisposed: boolean; + getDisposable(): IDisposable; } interface IScheduledItem { scheduler: IScheduler; state: any; - action: (scheduler: IScheduler, state) => _IDisposable; + action: (scheduler: IScheduler, state) => IDisposable; dueTime: number; comparer: (x: number, y: number) =>number; - disposable: ISingleAssignmentDisposable; + disposable: SingleAssignmentDisposable; invoke(): void; compareTo(other: IScheduledItem): number; isCancelled(): boolean; - invokeCore(): _IDisposable; + invokeCore(): IDisposable; } interface IScheduler { - _schedule: (state: any, action: (scheduler: IScheduler, state: any) =>_IDisposable) => _IDisposable; - _scheduleRelative: (state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>_IDisposable) =>_IDisposable; - _scheduleAbsolute: (state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>_IDisposable) =>_IDisposable; - now(): number; - scheduleWithState(state: any, action: (scheduler: IScheduler, state: any) =>_IDisposable): _IDisposable; - scheduleWithAbsoluteAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>_IDisposable): _IDisposable; - scheduleWithRelativeAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>_IDisposable): _IDisposable; + catch(handler: (exception: any) => boolean): IScheduler; + catchException(handler: (exception: any) => boolean): IScheduler; - catchException(handler: (exception: any) =>boolean): ICatchScheduler; - schedulePeriodic(period: number, action: () =>void ): _IDisposable; - schedulePeriodicWithState(state: any, period: number, action: (state: any) =>any): _IDisposable;//returns {Disposable|SingleAssignmentDisposable} - schedule(action: () =>void ): _IDisposable; - scheduleWithRelative(dueTime: number, action: () =>void ): _IDisposable; - scheduleWithAbsolute(dueTime: number, action: () =>void ): _IDisposable; - scheduleRecursive(action: (action: () =>void ) =>void ): _IDisposable; - scheduleRecursiveWithState(state: any, action: (state: any, action: (state: any) =>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; - 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; + schedule(action: () => void): IDisposable; + scheduleWithState(state: any, action: (scheduler: IScheduler, state: any) => IDisposable): IDisposable; + scheduleWithAbsolute(dueTime: number, action: () => void): IDisposable; + scheduleWithAbsoluteAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>IDisposable): IDisposable; + scheduleWithRelative(dueTime: number, action: () => void): IDisposable; + scheduleWithRelativeAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>IDisposable): IDisposable; + + scheduleRecursive(action: (action: () =>void ) =>void ): IDisposable; + scheduleRecursiveWithState(state: any, action: (state: any, action: (state: any) =>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; + 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; + + schedulePeriodic(period: number, action: () => void): IDisposable; + schedulePeriodicWithState(state: any, period: number, action: (state: any) => any): IDisposable; } - var Scheduler: { - //(now: () =>number, - // schedule: (state: any, action: (scheduler: IScheduler, state: any) =>_IDisposable) => _IDisposable, - // scheduleRelative: (state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>_IDisposable) =>_IDisposable, - // scheduleAbsolute: (state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>_IDisposable) =>_IDisposable - // ): IScheduler; + export class Scheduler implements IScheduler { + constructor( + now: () => number, + schedule: (state: any, action: (scheduler: IScheduler, state: any) => IDisposable) => IDisposable, + scheduleRelative: (state: any, dueTime: number, action: (scheduler: IScheduler, state: any) => IDisposable) => IDisposable, + scheduleAbsolute: (state: any, dueTime: number, action: (scheduler: IScheduler, state: any) => IDisposable) => IDisposable); + + static normalize(timeSpan: number): number; + + static immediate: IScheduler; + static currentThread: ICurrentThreadScheduler; + static timeout: IScheduler; now(): number; - normalize(timeSpan: number): number; + catch(handler: (exception: any) => boolean): IScheduler; + catchException(handler: (exception: any) => boolean): IScheduler; - immediate: IScheduler; - currentThread: ICurrentScheduler;//IScheduler; - timeout: IScheduler; + schedule(action: () => void): IDisposable; + scheduleWithState(state: any, action: (scheduler: IScheduler, state: any) => IDisposable): IDisposable; + scheduleWithAbsolute(dueTime: number, action: () => void): IDisposable; + scheduleWithAbsoluteAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) => IDisposable): IDisposable; + scheduleWithRelative(dueTime: number, action: () => void): IDisposable; + scheduleWithRelativeAndState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) => IDisposable): IDisposable; + + scheduleRecursive(action: (action: () => void) => void): IDisposable; + scheduleRecursiveWithState(state: any, action: (state: any, action: (state: any) => 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; + 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; + + schedulePeriodic(period: number, action: () => void): IDisposable; + schedulePeriodicWithState(state: any, period: number, action: (state: any) => any): IDisposable; } // Current Thread IScheduler - interface ICurrentScheduler extends IScheduler { + interface ICurrentThreadScheduler extends IScheduler { scheduleRequired(): boolean; - ensureTrampoline(action: () =>_IDisposable): _IDisposable; + ensureTrampoline(action: () =>IDisposable): IDisposable; } - - // CatchScheduler - interface ICatchScheduler extends IScheduler { } - // Notifications interface INotification { accept(observer: IObserver): void; @@ -283,12 +288,12 @@ declare module Rx { } interface IObservable { - _subscribe: (observer: IObserver) =>_IDisposable; + _subscribe: (observer: IObserver) =>IDisposable; - subscribe(observer: IObserver): _IDisposable; + subscribe(observer: IObserver): IDisposable; finalValue(): IObservable; - subscribe(onNext?: (value: T) =>void , onError?: (exception: any) =>void , onCompleted?: () =>void ): _IDisposable; + subscribe(onNext?: (value: T) =>void , onError?: (exception: any) =>void , onCompleted?: () =>void ): IDisposable; toArray(): IObservable; observeOn(scheduler: IScheduler): IObservable; @@ -352,11 +357,11 @@ declare module Rx { } interface Observable { - (subscribe: (observer: IObserver) =>_IDisposable): IObservable; + (subscribe: (observer: IObserver) =>IDisposable): IObservable; create(subscribe: (observer: IObserver) => void ): IObservable; - //create(subscribe: (observer: IObserver) => () => void ): IObservable; - createWithDisposable(subscribe: (observer: IObserver) =>_IDisposable): 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; @@ -365,7 +370,11 @@ declare module Rx { 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; @@ -387,7 +396,7 @@ declare module Rx { export module Internals { interface IAnonymousObservable extends IObservable { } export interface AnonymousObservable { - (subscribe: (observer: IObserver) =>_IDisposable): IAnonymousObservable; + (subscribe: (observer: IObserver) =>IDisposable): IAnonymousObservable; } } diff --git a/rx.js/rx.js.time.d.ts b/rx.js/rx.js.time.d.ts index f458dadc3..6e9a6e9f2 100644 --- a/rx.js/rx.js.time.d.ts +++ b/rx.js/rx.js.time.d.ts @@ -51,7 +51,7 @@ declare module Rx { skipLastWithTime(duration: number, scheduler?: IScheduler): IObservable; takeLastWithTime(duration: number, timerScheduler?: IScheduler, loopScheduler?: IScheduler): IObservable; - takeLastBufferWithTime(duration: number, scheduler?: IScheduler): IObservable; + takeLastBufferWithTime(duration: number, scheduler?: IScheduler): IObservable; takeWithTime(duration: number, scheduler?: IScheduler): IObservable; skipWithTime(duration: number, scheduler?: IScheduler): IObservable; diff --git a/rx.js/rx.js.virtualtime.d.ts b/rx.js/rx.js.virtualtime.d.ts index 24d40e601..04b39acec 100644 --- a/rx.js/rx.js.virtualtime.d.ts +++ b/rx.js/rx.js.virtualtime.d.ts @@ -19,16 +19,16 @@ declare module Rx { comparer: (x: number, y: number) =>number; isEnabled: boolean; queue: IPriorityQueue; - scheduleRelativeWithState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>_IDisposable): _IDisposable; - scheduleRelative(dueTime: number, action: () =>void ): _IDisposable; - start(): _IDisposable; + scheduleRelativeWithState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>IDisposable): IDisposable; + scheduleRelative(dueTime: number, action: () =>void ): IDisposable; + start(): IDisposable; stop(): void; advanceTo(time: number); advanceBy(time: number); sleep(time: number); getNext(): IScheduledItem; scheduleAbsolute(dueTime: number, action: () =>void ); - scheduleAbsoluteWithState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>_IDisposable): _IDisposable; + scheduleAbsoluteWithState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>IDisposable): IDisposable; } //export module VirtualTimeScheduler { // //absract From 64b0b3c08871338358fdaf8af5af6ae0b17c8a8e Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Fri, 6 Dec 2013 15:05:59 +0400 Subject: [PATCH 02/22] rx.js: fixed rx.js.time.d.ts errors related to switch on TS 0.9.5; some over minor fixes --- rx.js/rx.js.time.d.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/rx.js/rx.js.time.d.ts b/rx.js/rx.js.time.d.ts index 6e9a6e9f2..e329a823c 100644 --- a/rx.js/rx.js.time.d.ts +++ b/rx.js/rx.js.time.d.ts @@ -42,11 +42,11 @@ declare module Rx { timeout(dueTime: number, other?: IObservable, scheduler?: IScheduler): IObservable; delaySubscription(dueTime: number, scheduler?: IScheduler): IObservable; - delayWithSelector(delayDurationSelector: (T) => number): IObservable; - delayWithSelector(subscriptionDelay: number, delayDurationSelector: (T) => number): IObservable; + delayWithSelector(delayDurationSelector: (item: T) => number): IObservable; + delayWithSelector(subscriptionDelay: number, delayDurationSelector: (item: T) => number): IObservable; - timeoutWithSelector(firstTimeout: IObservable, timeoutdurationSelector?: (T) => IObservable, other?: IObservable): IObservable; - throttleWithSelector(throttleDurationSelector: (T) => IObservable): IObservable; + timeoutWithSelector(firstTimeout: IObservable, timeoutdurationSelector?: (item: T) => IObservable, other?: IObservable): IObservable; + throttleWithSelector(throttleDurationSelector: (item: T) => IObservable): IObservable; skipLastWithTime(duration: number, scheduler?: IScheduler): IObservable; takeLastWithTime(duration: number, timerScheduler?: IScheduler, loopScheduler?: IScheduler): IObservable; @@ -69,18 +69,18 @@ declare module Rx { generateWithAbsoluteTime( initialState: TState, - condition: (TState) => boolean, - iterate: (TState) => TState, - resultSelector: (TState) => TResult, - timeSelector: (TState) => Date, + condition: (state: TState) => boolean, + iterate: (state: TState) => TState, + resultSelector: (state: TState) => TResult, + timeSelector: (state: TState) => Date, scheduler?: IScheduler): IObservable; generateWithRelativeTime( initialState: TState, - condition: (TState) => boolean, - iterate: (TState) => TState, - resultSelector: (TState) => TResult, - timeSelector: (TState) => number, + condition: (state: TState) => boolean, + iterate: (state: TState) => TState, + resultSelector: (state: TState) => TResult, + timeSelector: (state: TState) => number, scheduler?: IScheduler): IObservable; } } \ No newline at end of file From 09a654307a0621bc9ea7b936334c0141e19dec0f Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sat, 14 Dec 2013 00:36:32 +0400 Subject: [PATCH 03/22] 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 From 36513cf85fbbabf7d0fdb53b230392720654dbc2 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sat, 14 Dec 2013 17:18:44 +0400 Subject: [PATCH 04/22] rx.js.d.ts: updated many of Observable methods added tests for Observable instance methods --- rx.js/rx-tests.ts | 162 +++++++++++++++++++++++++++++++++++++++++++--- rx.js/rx.js.d.ts | 85 +++++++++++++----------- 2 files changed, 202 insertions(+), 45 deletions(-) diff --git a/rx.js/rx-tests.ts b/rx.js/rx-tests.ts index 14388c49f..d95988ce6 100644 --- a/rx.js/rx-tests.ts +++ b/rx.js/rx-tests.ts @@ -108,28 +108,174 @@ bs = Rx.Observable.throwException(new Error("error"), Rx.Scheduler.time 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.amb([ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 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.catch([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 +//ss = Rx.Observable.catchException([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 ss = Rx.Observable.concat(ss, ss, ss); -//ss = Rx.Observable.concat([ss, ss, ss]); +//ss = Rx.Observable.concat([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 ss = Rx.Observable.merge(ss, ss, ss); -//ss = Rx.Observable.merge([ss, ss, ss]); +//ss = Rx.Observable.merge([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 ss = Rx.Observable.merge(s, ss, ss, ss); -//ss = Rx.Observable.merge(s, [ss, ss, ss]); +//ss = Rx.Observable.merge(s, [ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 ss = Rx.Observable.onErrorResumeNext(ss, ss, ss); -//ss = Rx.Observable.onErrorResumeNext([ss, ss, ss]); +//ss = Rx.Observable.onErrorResumeNext([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 +ns = Rx.Observable.zip(ss, [ss, ss, ss], (s, ss2) => { ss = ss2; return s.charCodeAt(0); }); +ns = Rx.Observable.zip(ss, bs, (s, b) => s.length + (b ? 1 : 0)); ns = Rx.Observable.zip(ss, bs, ns, (s, b, n) => s.length + (b ? 1 : 0) + n); +ns = Rx.Observable.zip(ss, bs, ns, ns, (s, b, n, n2) => s.length + (b ? 1 : 0) + n + n2); +ns = Rx.Observable.zip(ss, bs, ns, ns, ss, (s, b, n, n2, s2) => s.length + (b ? 1 : 0) + n + n2 + s2.charCodeAt(0)); + +var sas: Rx.Observable = Rx.Observable.zipArray(ss, ss); // Observable instance methods +d = ns.subscribe(o); +d = ns.subscribe(n => n + 1, err => { }, () => { }); +d = ns.subscribe(n => n + 1, err => { }); +d = ns.subscribe(); + +sas = ss.toArray(); + +ss.observeOn(s); +ns.subscribeOn(s); + +ss = ss.amb(ss); + +ss = ss.catch(err => ss); +ss = ss.catchException(err => ss); +ss = ss.catch(ss); +ss = ss.catchException(ss); + +ns = ss.combineLatest([ns, ns, ns], (s, ...ns) => s.charCodeAt(0) + ns[0]); +ns = ss.combineLatest(ns, (s, n) => s.charCodeAt(0) + n); +ns = ss.combineLatest(ns, ns, (s, n, n2) => s.charCodeAt(0) + n + n2); +ns = ss.combineLatest(ns, ns, bs, (s, n, n2, b) => s.charCodeAt(0) + n + n2 + (b ? 1 : 0)); +ns = ss.combineLatest(ns, ns, bs, ss, (s, n, n2, b, s2) => s.charCodeAt(0) + n + n2 + (b ? 1 : 0) + s2.charCodeAt(0)); + +ss = ss.concat(ss, ss); +ss = ss.concat([ss, ss]); + var sss: Rx.Observable>; -ss = sss.concatAll(); \ No newline at end of file +ss = sss.concatAll(); +ss = sss.concatObservable(); + +ss = ss.merge(2); +ss = ss.merge(ss); + +ss = sss.mergeAll(); +ss = sss.mergeObservable(); + +ss = ss.onErrorResumeNext(ss); + +ss = ss.skipUntil(ns); + +ss = ss.takeUntil(ns); + +ss = sss.switchLatest(); + +ns = ss.zip([ns, ns], (s, ns2) => { ns = ns2; return s.charCodeAt(0); }); + +ns = ss.zip(ns, (s, n) => s.charCodeAt(0) + n); +ns = ss.zip(ns, bs, (s, n, b) => s.charCodeAt(0) + n + (b?1:0)); +ns = ss.zip(ns, bs, ss, (s, n, b, s2) => s.charCodeAt(0) + n + (b?1:0) + s2.charCodeAt(0)); +ns = ss.zip(ns, bs, ss, ns, (s, n, b, s2, n2) => s.charCodeAt(0) + n + (b?1:0) + s2.charCodeAt(0) + n2); + +ss = ss.asObservable(); + +sas = ss.bufferWithCount(2); +sas = ss.bufferWithCount(2, 1); + +var notifications: Rx.Observable>; + +ns = notifications.dematerialize(); + +ns = ns.distinctUntilChanged(); +ns = ns.distinctUntilChanged(n => (n + 1).toString()); +ns = ns.distinctUntilChanged(n => (n + 1).toString(), (s1, s2) => s1.charCodeAt(0) === s2.charCodeAt(0)); +ns = ns.distinctUntilChanged(undefined, (n1, n2) => (n1 + 1) === (n2 + 1)); + +ns = ns.do(o); +ns = ns.doAction(o); +ns = ns.do(n => n + 1, err => { }, () => { }); +ns = ns.doAction(n => n + 1, err => { }, () => { }); +ns = ns.do(n => n + 1, err => { }); +ns = ns.doAction(n => n + 1, err => { }); +ns = ns.do(); +ns = ns.doAction(); + +ns = ns.finally(() => { }); +ns = ns.finallyAction(() => { }); + +ss = ss.ignoreElements(); + +notifications = ns.materialize(); + +ss = ss.repeat(); +ss = ss.repeat(10); + +ss = ss.retry(); +ss = ss.retry(10); + +ns = ss.scan(0, (sum, s) => sum + s.charCodeAt(0)); +ns = ns.scan((sum, n) => sum + n); + +ns = ns.skipLast(10); + +ns = ns.startWith(10, 20); +ns = ns.startWith(s, 10, 20); + +ns = ns.takeLast(2); +ns = ns.takeLast(2, s); + +sas = ss.takeLastBuffer(5); + +sss = ss.windowWithCount(2); +sss = ss.windowWithCount(2, 3); + +ns = ns.defaultIfEmpty(); +ns = ns.defaultIfEmpty(0); + +ns = ns.distinct(n => (n + 1), n => (n + 1).toString()); +ns = ns.distinct(undefined, n => (n + 1).toString()); +ns = ns.distinct(n => (n + 1).toString()); +ns = ns.distinct(); + +var gnss: Observable>; +var group: GroupedObservable; +ss = group; +n = group.key; + +gnss = ss.groupBy(s => s.charCodeAt(0)); +gnss = ss.groupBy(s => s.charCodeAt(0), s => s + "!"); +gnss = ss.groupBy(s => s.charCodeAt(0), s => s + "!", k => (k + 1).toString()); +gnss = ss.groupBy(s => s.charCodeAt(0), undefined, k => (k + 1).toString()); + +gnss = ss.groupByUntil(s => s.charCodeAt(0), s => s + "!", g => ns, k => (k + 1).toString()); +gnss = ss.groupByUntil(s => s.charCodeAt(0), undefined, g => ns, k => (k + 1).toString()); + +ns = ss.select(s => s.charCodeAt(0), ns); +ns = ss.map(s => s.charCodeAt(0), ns); +ns = ss.select(s => s.charCodeAt(0)); +ns = ss.map(s => s.charCodeAt(0)); +ns = ss.select((s, index) => s.charCodeAt(0) + index); +ns = ss.map((s, index) => s.charCodeAt(0) + index); +ns = ss.select((s, index) => s.charCodeAt(0) + index, ns); +ns = ss.map((s, index) => s.charCodeAt(0) + index, ns); +ns = ss.select((s, index, source) => { ss = source; return; s.charCodeAt(0) + index; }); +ns = ss.map((s, index, source) => { ss = source; return; s.charCodeAt(0) + index; }); +ns = ss.select((s, index, source) => { ss = source; return; s.charCodeAt(0) + index; }, ns); +ns = ss.map((s, index, source) => { ss = source; return; s.charCodeAt(0) + index; }, ns); + +ss = ss.selectMany(s => ns, (s, n) => s + n.toString()); +ns = ss.selectMany(s => ns); +ns = ss.selectMany(ns); + +ns = ns.skip(10); diff --git a/rx.js/rx.js.d.ts b/rx.js/rx.js.d.ts index 7107afb1e..84ea91332 100644 --- a/rx.js/rx.js.d.ts +++ b/rx.js/rx.js.d.ts @@ -203,74 +203,85 @@ declare module Rx { } export interface Observable { - _subscribe: (observer: Observer) => IDisposable; - subscribe(observer: Observer): IDisposable; - - finalValue(): Observable; subscribe(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): IDisposable; - toArray(): Observable; + + toArray(): Observable; observeOn(scheduler: IScheduler): Observable; subscribeOn(scheduler: IScheduler): Observable; amb(rightSource: Observable): Observable; - catchException(handler: (exception: any) => Observable): Observable; - catchException(second: Observable): Observable; + catch(handler: (exception: any) => Observable): Observable; + catchException(handler: (exception: any) => Observable): Observable; // alias for catch + catch(second: Observable): Observable; + catchException(second: Observable): Observable; // alias for catch 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; + combineLatest(souces: Observable[], resultSelector: (firstValue: T, ...otherValues: TOther[]) => TResult): Observable; concat(...sources: Observable[]): Observable; concat(sources: Observable[]): Observable; - concatObservable(): T; concatAll(): T; + concatObservable(): T; // alias for concatAll merge(maxConcurrent: number): Observable; merge(other: Observable): Observable; - mergeObservable(): T; mergeAll(): T; + mergeObservable(): T; // alias for mergeAll onErrorResumeNext(second: Observable): Observable; skipUntil(other: Observable): Observable; - switchLatest(): Observable; + switchLatest(): T; 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; + zip(second: Observable[], resultSelector: (left: T, right: Observable) => TResult): Observable; + asObservable(): 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; + distinctUntilChanged(skipParameter: boolean, comparer: (x: T, y: T) => boolean): Observable; + distinctUntilChanged(keySelector?: (value: T) => TValue, comparer?: (x: TValue, y: TValue) => boolean): Observable; + do(observer: Observer): Observable; + doAction(observer: Observer): Observable; // alias for do + do(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): Observable; + doAction(onNext?: (value: T) => void, onError?: (exception: any) => void, onCompleted?: () => void): Observable; // alias for do + finally(action: () => void): Observable; + finallyAction(action: () => void): Observable; // alias for finally 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; + scan(accumulator: (acc: T, value: T) => T): 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; + takeLastBuffer(count: number): Observable; + windowWithCount(count: number, skip?: number): Observable>; defaultIfEmpty(defaultValue?: T): Observable; + distinct(skipParameter: boolean, valueSerializer: (value: T) => string): 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; + groupBy(keySelector: (value: T) => TKey, skipElementSelector?: boolean, keySerializer?: (key: TKey) => string): Observable>; + groupBy(keySelector: (value: T) => TKey, elementSelector: (value: T) => TElement, keySerializer?: (key: TKey) => string): Observable>; + groupByUntil(keySelector: (value: T) => TKey, skipElementSelector: boolean, durationSelector: (group: GroupedObservable) => Observable, keySerializer?: (key: TKey) => string): Observable>; + groupByUntil(keySelector: (value: T) => TKey, elementSelector: (value: T) => TElement, durationSelector: (group: GroupedObservable) => Observable, keySerializer?: (key: TKey) => string): Observable>; + select(selector: (value: T, index: number, source: Observable) => TResult, thisArg?: any): Observable; + map(selector: (value: T, index: number, source: Observable) => TResult, thisArg?: any): Observable; // alias for select + selectMany(selector: (value: T) => Observable, resultSelector: (item: T, other: TOther) => TResult): Observable; + selectMany(selector: (value: T) => Observable): Observable; + selectMany(other: Observable): Observable; + flatMap(selector: (value: T) => Observable, resultSelector: (item: T, other: TOther) => TResult): Observable; // alias for selectMany + flatMap(selector: (value: T) => Observable): Observable; // alias for selectMany + flatMap(other: Observable): Observable; // alias for selectMany skip(count: number): Observable; - skipWhile(predicate: (value: T, index?: number) => boolean): Observable; + skipWhile(predicate: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; take(count: number, scheduler?: IScheduler): Observable; - takeWhile(predicate: (value: T, index?: number) => boolean): Observable; - where(predicate: (value: T, index?: number) => boolean): Observable; + takeWhile(predicate: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; + where(predicate: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; + filter(predicate: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; // alias for where } interface ObservableStatic { @@ -286,18 +297,18 @@ declare module Rx { 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; + returnValue(value: T, scheduler?: IScheduler): Observable; // alias for return throw(exception: Error, scheduler?: IScheduler): Observable; throw(exception: any, scheduler?: IScheduler): Observable; - throwException(exception: Error, scheduler?: IScheduler): Observable; - throwException(exception: any, scheduler?: IScheduler): Observable; + throwException(exception: Error, scheduler?: IScheduler): Observable; // alias for throw + throwException(exception: any, scheduler?: IScheduler): Observable; // alias for throw using(resourceFactory: () => TResource, observableFactory: (resource: TResource) => Observable): Observable; amb(...sources: Observable[]): Observable; amb(sources: Observable[]): Observable; catch(sources: Observable[]): Observable; - catchException(sources: Observable[]): Observable; + catchException(sources: Observable[]): Observable; // alias for catch catch(...sources: Observable[]): Observable; - catchException(...sources: Observable[]): Observable; + catchException(...sources: Observable[]): Observable; // alias for catch concat(...sources: Observable[]): Observable; concat(sources: Observable[]): Observable; merge(...sources: Observable[]): Observable; @@ -306,13 +317,13 @@ declare module Rx { merge(scheduler: IScheduler, sources: Observable[]): Observable; onErrorResumeNext(...sources: Observable[]): Observable; onErrorResumeNext(sources: Observable[]): Observable; - zip(sources: Observable[], resultSelector: (...items: T[]) => TResult): Observable; + zip(first: Observable, sources: Observable[], resultSelector: (item1: T1, right: Observable) => 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; + //zipArray(sources: Observable[]): Observable; } export var Observable: ObservableStatic; From 9c2f13f04dd858a2bc59a469caac2da0326f02d4 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 15 Dec 2013 11:21:23 +0400 Subject: [PATCH 05/22] rx.js.virtualtime.d.ts: updated names, added HistoricalScheduler rx.js.d.ts: updated names, moved some interfaces to Internal --- rx.js/rx.js.async.d.ts | 7 +-- rx.js/rx.js.binding.d.ts | 43 ++++++++---------- rx.js/rx.js.coincidence.d.ts | 4 -- rx.js/rx.js.d.ts | 84 +++++++++++++---------------------- rx.js/rx.js.experimental.d.ts | 2 +- rx.js/rx.js.virtualtime.d.ts | 53 +++++++++++----------- 6 files changed, 80 insertions(+), 113 deletions(-) diff --git a/rx.js/rx.js.async.d.ts b/rx.js/rx.js.async.d.ts index fa336ac7e..49e1ec59b 100644 --- a/rx.js/rx.js.async.d.ts +++ b/rx.js/rx.js.async.d.ts @@ -3,14 +3,11 @@ // Type definitions for RxJS-Async package 2.2 // Project: http://rx.codeplex.com/ // Definitions by: zoetrope +// Revision by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped -// -// Dependencies: -// -> rx.js -// -> rx.async.js declare module Rx { - interface Observable { + interface ObservableStatic { 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; diff --git a/rx.js/rx.js.binding.d.ts b/rx.js/rx.js.binding.d.ts index 0921f30c5..0a749cc8e 100644 --- a/rx.js/rx.js.binding.d.ts +++ b/rx.js/rx.js.binding.d.ts @@ -3,41 +3,40 @@ // Type definitions for RxJS-Binding package // Project: http://rx.codeplex.com/ // Definitions by: Carl de Billy +// Revision by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped -// -// Dependencies: -// -> rx.js -// -> rx.binding.js declare module Rx { - - interface ReplaySubject extends ISubject { - new (bufferSize?: number, window?: number, scheduler?: IScheduler): ReplaySubject; + export interface BehaviorSubject extends Subject { } - var ReplaySubject: { - new (bufferSize?: number, window?: number, scheduler?: IScheduler): ReplaySubject; - } - - interface BehaviorSubject extends ISubject { - new (initialValue: T): BehaviorSubject; + interface BehaviorSubjectStatic { + new (initialValue: T): BehaviorSubject; } - var BehaviorSubject: { - new (initialValue: T): BehaviorSubject; - } + export var BehaviorSubject: BehaviorSubjectStatic; - interface ConnectableObservable extends Observable{ + export interface ReplaySubject extends Subject { + } + + interface ReplaySubjectStatic { + new (bufferSize?: number, window?: number, scheduler?: IScheduler): ReplaySubject; + } + + export var ReplaySubject: ReplaySubjectStatic; + + interface ConnectableObservable extends Observable { connect(): IDisposable; refCount(): Observable; } - var ConnectableObservable: { + interface ConnectableObservableStatic { new (): ConnectableObservable; - } + } - interface Observable { + export var ConnectableObservable: ConnectableObservableStatic; + export interface Observable { publish(): ConnectableObservable; publish(selector: (item: T) => Observable): ConnectableObservable; publishLast(): ConnectableObservable; @@ -47,8 +46,4 @@ declare module Rx { replay(selector?: (source: Observable) => ReplaySubject, bufferSize?: number, window?: number, scheduler?: IScheduler): ReplaySubject; } - - - interface Observable { - } } diff --git a/rx.js/rx.js.coincidence.d.ts b/rx.js/rx.js.coincidence.d.ts index 7aa0ae65a..3ec1a3a25 100644 --- a/rx.js/rx.js.coincidence.d.ts +++ b/rx.js/rx.js.coincidence.d.ts @@ -33,8 +33,4 @@ declare module Rx { window(bufferOpenings: Observable, bufferClosingSelector: (opening: TBufferOpening) => Observable): Observable; } - - - interface Observable { - } } diff --git a/rx.js/rx.js.d.ts b/rx.js/rx.js.d.ts index 84ea91332..b2ad79a48 100644 --- a/rx.js/rx.js.d.ts +++ b/rx.js/rx.js.d.ts @@ -1,37 +1,49 @@ // Type definitions for RxJS // Project: http://rx.codeplex.com/ // Definitions by: gsino +// Revision by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped - declare module Rx { export module Internals { + function isEqual(left: any, right: any): boolean; function inherits(child: Function, parent: Function): Function; function addProperties(obj: Object, ...sourcces: Object[]): void; function addRef(xs: Observable, r: { getDisposable(): IDisposable; }): Observable; - } - //Collections - interface IIndexedItem { - id: number; - value: IScheduledItem; + // Priority Queue for Scheduling + export class PriorityQueue { + constructor(capacity: number); - compareTo(other: IIndexedItem): number; - } + length: number; - // Priority Queue for Scheduling - interface IPriorityQueue { - items: IIndexedItem[]; - length: number; + isHigherPriority(left: number, right: number): boolean; + percolate(index: number): void; + heapify(index: number): void; + peek(): ScheduledItem; + removeAt(index: number): void; + dequeue(): ScheduledItem; + enqueue(item: ScheduledItem): void; + remove(item: ScheduledItem): boolean; - isHigherPriority(left: number, right: number): boolean; - percolate(index: number): void; - heapify(index: number): void; - peek(): IIndexedItem; - removeAt(index: number): void; - dequeue(): IIndexedItem; - enqueue(item: IIndexedItem): void; - remove(item: IIndexedItem): boolean; + static count: number; + } + + export class ScheduledItem { + constructor(scheduler: IScheduler, state: any, action: (scheduler: IScheduler, state) => IDisposable, dueTime: TTime, comparer?: (x: TTime, y: TTime) => number); + + scheduler: IScheduler; + state: TTime; + action: (scheduler: IScheduler, state: any) => IDisposable; + dueTime: TTime; + comparer: (x: TTime, y: TTime) => number; + disposable: SingleAssignmentDisposable; + + invoke(): void; + compareTo(other: ScheduledItem): number; + isCancelled(): boolean; + invokeCore(): IDisposable; + } } export interface IDisposable { @@ -94,20 +106,6 @@ declare module Rx { getDisposable(): IDisposable; } - interface IScheduledItem { - scheduler: IScheduler; - state: any; - action: (scheduler: IScheduler, state) => IDisposable; - dueTime: number; - comparer: (x: number, y: number) =>number; - disposable: SingleAssignmentDisposable; - - invoke(): void; - compareTo(other: IScheduledItem): number; - isCancelled(): boolean; - invokeCore(): IDisposable; - } - export interface IScheduler { now(): number; catch(handler: (exception: any) => boolean): IScheduler; @@ -355,22 +353,4 @@ declare module Rx { } 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 1a1c38f54..a1a7fbea3 100644 --- a/rx.js/rx.js.experimental.d.ts +++ b/rx.js/rx.js.experimental.d.ts @@ -60,7 +60,7 @@ declare module Rx { manySelect(selector: (item: Observable, index: number, source: Observable) => TResult, scheduler?: IScheduler): Observable; } - interface Observable { + interface ObservableStatic { /** * Determines whether an observable collection contains values. There is an alias for this method called 'ifThen' for browsers +// Revision by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped -// -// Dependencies: -// -> rx.js -// -> rx.virtualtime.js declare module Rx { // Virtual IScheduler - interface IVirtualTimeScheduler extends IScheduler { - toRelative(duetime): number; - toDateTimeOffset(duetime: number): number; + export /*abstract*/ class VirtualTimeScheduler extends Scheduler { + constructor(initialClock: TAbsolute, comparer: (first: TAbsolute, second: TAbsolute) => number); - clock: number; - comparer: (x: number, y: number) =>number; - isEnabled: boolean; - queue: IPriorityQueue; - scheduleRelativeWithState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>IDisposable): IDisposable; - scheduleRelative(dueTime: number, action: () =>void ): IDisposable; - start(): IDisposable; - stop(): void; - advanceTo(time: number); - advanceBy(time: number); - sleep(time: number); - getNext(): IScheduledItem; - scheduleAbsolute(dueTime: number, action: () =>void ); - scheduleAbsoluteWithState(state: any, dueTime: number, action: (scheduler: IScheduler, state: any) =>IDisposable): IDisposable; - } - //export module VirtualTimeScheduler { - // //absract - // function new (initialClock: number, comparer: (x: number, y: number) =>number): IVirtualTimeScheduler; - //} -} \ No newline at end of file + advanceBy(time: TRelative); + advanceTo(time: TAbsolute); + scheduleAbsolute(dueTime: TAbsolute, action: () => void); + scheduleAbsoluteWithState(state: TState, dueTime: TAbsolute, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable; + scheduleRelative(dueTime: TRelative, action: () => void): IDisposable; + scheduleRelativeWithState(state: TState, dueTime: TRelative, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable; + sleep(time: TRelative); + start(): IDisposable; + stop(): void; + + isEnabled: boolean; + + /* protected abstract */ add(from: TAbsolute, by: TRelative): TAbsolute; + /* protected abstract */ toDateTimeOffset(duetime: TAbsolute): number; + /* protected abstract */ toRelative(duetime: number): TRelative; + + /* protected */ getNext(): Internals.ScheduledItem; + } + + export class HistoricalScheduler extends VirtualTimeScheduler { + constructor(initialClock: number, comparer: (first: number, second: number) => number); + } +} From 8a8a3cf9bf08329f6e5fc5487b54fde5882fe3cf Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 15 Dec 2013 11:49:09 +0400 Subject: [PATCH 06/22] Updated rx.js.aggregates.d.ts --- rx.js/rx.js.aggregates.d.ts | 60 +++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/rx.js/rx.js.aggregates.d.ts b/rx.js/rx.js.aggregates.d.ts index 1955bfe7f..4b2ed300b 100644 --- a/rx.js/rx.js.aggregates.d.ts +++ b/rx.js/rx.js.aggregates.d.ts @@ -3,51 +3,47 @@ // Type definitions for RxJS-Aggregates package // Project: http://rx.codeplex.com/ // Definitions by: Carl de Billy +// Revision by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped -// -// Dependencies: -// -> rx.js -// -> rx.aggregates.js declare module Rx { export interface Observable { - aggregate(accumulator: (acc: TAcc, value: T) => TAcc): Observable; + aggregate(accumulator: (acc: T, value: T) => T): Observable; aggregate(seed: TAcc, accumulator: (acc: TAcc, value: T) => TAcc): Observable; - any(): Observable; - any(selector: (item: T) => boolean): Observable; + any(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; + some(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; // alias for any - 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; + isEmpty(): Observable; + all(predicate?: (value: T) => boolean, thisArg?: any): Observable; + every(predicate?: (value: T) => boolean, thisArg?: any): Observable; // alias for all + contains(value: T): Observable; + contains(value: TOther, comparer: (value1: T, value2: TOther) => boolean): Observable; + count(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; + sum(keySelector?: (value: T, index: number, source: Observable) => number, thisArg?: any): Observable; + minBy(keySelector: (item: T) => TKey, comparer: (value1: TKey, value2: TKey) => number): Observable; + minBy(keySelector: (item: T) => number): Observable; min(comparer?: (value1: T, value2: T) => number): Observable; - maxBy(keySelector: (item: T) => number, comparer?: (value1: T, value2: T) => number): Observable; + maxBy(keySelector: (item: T) => TKey, comparer: (value1: TKey, value2: TKey) => number): Observable; + maxBy(keySelector: (item: T) => number): Observable; max(comparer?: (value1: T, value2: T) => number): Observable; - average(keySelector?: (item: T) => number): Observable; + average(keySelector?: (value: T, index: number, source: Observable) => number, thisArg?: any): Observable; + + sequenceEqual(second: Observable, comparer: (value1: T, value2: TOther) => number): Observable; + sequenceEqual(second: Observable): Observable; + sequenceEqual(second: TOther[], comparer: (value1: T, value2: TOther) => number): Observable; + sequenceEqual(second: T[]): Observable; - sequenceEqual(second: Observable, comparer?: (value1: T, value2: T) => number): Observable; elementAt(index: number): Observable; - elementAtOrDefault(index: number, defaultValue: T): Observable; + elementAtOrDefault(index: number, defaultValue?: T): Observable; - single(): Observable; - single(predicate: (item: T) => boolean): Observable; - singleOrDefault(): Observable; - singleOrDefault(predicate: (item: T) => boolean): Observable; - singleOrDefault(predicate: (item: T) => boolean, defaultValue: T): Observable; + single(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; + singleOrDefault(predicate?: (value: T, index: number, source: Observable) => boolean, defaultValue?: T, thisArg?: any): Observable; - first(): Observable; - first(predicate: (item: T) => boolean): Observable; - firstOrDefault(): Observable; - firstOrDefault(predicate: (item: T) => boolean): Observable; - firstOrDefault(predicate: (item: T) => boolean, defaultValue: T): Observable; + first(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; + firstOrDefault(predicate?: (value: T, index: number, source: Observable) => boolean, defaultValue?: T, thisArg?: any): Observable; - last(): Observable; - last(predicate: (item: T) => boolean): Observable; - lastOrDefault(): Observable; - lastOrDefault(predicate: (item: T) => boolean): Observable; - lastOrDefault(predicate: (item: T) => boolean, defaultValue: T): Observable; + last(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; + lastOrDefault(predicate?: (value: T, index: number, source: Observable) => boolean, defaultValue?: T, thisArg?: any): Observable; } } \ No newline at end of file From 6cd535fbbc4299530daf31f1fc64f154cf8a42fc Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 15 Dec 2013 11:52:05 +0400 Subject: [PATCH 07/22] rx.js.aggregates.d.ts: added find, findIndex functions --- rx.js/rx.js.aggregates.d.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/rx.js/rx.js.aggregates.d.ts b/rx.js/rx.js.aggregates.d.ts index 4b2ed300b..36b87612e 100644 --- a/rx.js/rx.js.aggregates.d.ts +++ b/rx.js/rx.js.aggregates.d.ts @@ -45,5 +45,8 @@ declare module Rx { last(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; lastOrDefault(predicate?: (value: T, index: number, source: Observable) => boolean, defaultValue?: T, thisArg?: any): Observable; + + find(predicate: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; + findIndex(predicate: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; } -} \ No newline at end of file +} From 18c862f14c6ac614360b93ef17dbcab1179aebfd Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 15 Dec 2013 11:55:41 +0400 Subject: [PATCH 08/22] rx.js.aggregates.d.ts: added reduce function --- rx.js/rx.js.aggregates.d.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rx.js/rx.js.aggregates.d.ts b/rx.js/rx.js.aggregates.d.ts index 36b87612e..fcc368461 100644 --- a/rx.js/rx.js.aggregates.d.ts +++ b/rx.js/rx.js.aggregates.d.ts @@ -11,6 +11,9 @@ declare module Rx { aggregate(accumulator: (acc: T, value: T) => T): Observable; aggregate(seed: TAcc, accumulator: (acc: TAcc, value: T) => TAcc): Observable; + reduce(accumulator: (acc: T, value: T) => T): Observable; + reduce(accumulator: (acc: TAcc, value: T) => TAcc, seed: TAcc): Observable; // TS0.9.5: won't work https://typescript.codeplex.com/discussions/471751 + any(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; some(predicate?: (value: T, index: number, source: Observable) => boolean, thisArg?: any): Observable; // alias for any From b5a1466ead9f73e44d582f2bbce8b6e0c44cbe08 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 15 Dec 2013 21:16:51 +0400 Subject: [PATCH 09/22] updated rx.js.async.d.ts: created lot of typed overloads for toAsync, fromCallback, fromNodeCallback --- rx.js/rx.js.async.d.ts | 89 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 80 insertions(+), 9 deletions(-) diff --git a/rx.js/rx.js.async.d.ts b/rx.js/rx.js.async.d.ts index 49e1ec59b..8adfeae4c 100644 --- a/rx.js/rx.js.async.d.ts +++ b/rx.js/rx.js.async.d.ts @@ -8,12 +8,83 @@ declare module Rx { interface ObservableStatic { - 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 + start(func: () => T, scheduler?: IScheduler, context?: any): Observable; + + toAsync(func: () => TResult, scheduler?: IScheduler, context?: any): () => Observable; + toAsync(func: (arg1: T1) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1) => Observable; + toAsync(func: (arg1?: T1) => TResult, scheduler?: IScheduler, context?: any): (arg1?: T1) => Observable; + toAsync(func: (...args: T1[]) => TResult, scheduler?: IScheduler, context?: any): (...args: T1[]) => Observable; + toAsync(func: (arg1: T1, arg2: T2) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2) => Observable; + toAsync(func: (arg1: T1, arg2?: T2) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2?: T2) => Observable; + toAsync(func: (arg1?: T1, arg2?: T2) => TResult, scheduler?: IScheduler, context?: any): (arg1?: T1, arg2?: T2) => Observable; + toAsync(func: (arg1: T1, ...args: T2[]) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, ...args: T2[]) => Observable; + toAsync(func: (arg1?: T1, ...args: T2[]) => TResult, scheduler?: IScheduler, context?: any): (arg1?: T1, ...args: T2[]) => Observable; + toAsync(func: (arg1: T1, arg2: T2, arg3: T3) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3: T3) => Observable; + toAsync(func: (arg1: T1, arg2: T2, arg3?: T3) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3?: T3) => Observable; + toAsync(func: (arg1: T1, arg2?: T2, arg3?: T3) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2?: T2, arg3?: T3) => Observable; + toAsync(func: (arg1?: T1, arg2?: T2, arg3?: T3) => TResult, scheduler?: IScheduler, context?: any): (arg1?: T1, arg2?: T2, arg3?: T3) => Observable; + toAsync(func: (arg1: T1, arg2: T2, ...args: T3[]) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, ...args: T3[]) => Observable; + toAsync(func: (arg1: T1, arg2?: T2, ...args: T3[]) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2?: T2, ...args: T3[]) => Observable; + toAsync(func: (arg1?: T1, arg2?: T2, ...args: T3[]) => TResult, scheduler?: IScheduler, context?: any): (arg1?: T1, arg2?: T2, ...args: T3[]) => Observable; + toAsync(func: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Observable; + toAsync(func: (arg1: T1, arg2: T2, arg3: T3, arg4?: T4) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3: T3, arg4?: T4) => Observable; + toAsync(func: (arg1: T1, arg2: T2, arg3?: T3, arg4?: T4) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3?: T3, arg4?: T4) => Observable; + toAsync(func: (arg1: T1, arg2?: T2, arg3?: T3, arg4?: T4) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2?: T2, arg3?: T3, arg4?: T4) => Observable; + toAsync(func: (arg1?: T1, arg2?: T2, arg3?: T3, arg4?: T4) => TResult, scheduler?: IScheduler, context?: any): (arg1?: T1, arg2?: T2, arg3?: T3, arg4?: T4) => Observable; + toAsync(func: (arg1: T1, arg2: T2, arg3: T3, ...args: T4[]) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3: T3, ...args: T4[]) => Observable; + toAsync(func: (arg1: T1, arg2: T2, arg3?: T3, ...args: T4[]) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3?: T3, ...args: T4[]) => Observable; + toAsync(func: (arg1: T1, arg2?: T2, arg3?: T3, ...args: T4[]) => TResult, scheduler?: IScheduler, context?: any): (arg1: T1, arg2?: T2, arg3?: T3, ...args: T4[]) => Observable; + toAsync(func: (arg1?: T1, arg2?: T2, arg3?: T3, ...args: T4[]) => TResult, scheduler?: IScheduler, context?: any): (arg1?: T1, arg2?: T2, arg3?: T3, ...args: T4[]) => Observable; + + fromCallback: { + // with single result callback without selector + (func: (callback: (result: TResult) => any) => any, scheduler?: IScheduler, context?: any): () => Observable; + (func: (arg1: T1, callback: (result: TResult) => any) => any, scheduler?: IScheduler, context?: any): (arg1: T1) => Observable; + (func: (arg1: T1, arg2: T2, callback: (result: TResult) => any) => any, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2) => Observable; + (func: (arg1: T1, arg2: T2, arg3: T3, callback: (result: TResult) => any) => any, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3: T3) => Observable; + // with any callback with selector + (func: (callback: Function) => any, scheduler: IScheduler, context: any, selector: (args: TCallbackResult[]) => TResult): () => Observable; + (func: (arg1: T1, callback: Function) => any, scheduler: IScheduler, context: any, selector: (args: TCallbackResult[]) => TResult): (arg1: T1) => Observable; + (func: (arg1: T1, arg2: T2, callback: Function) => any, scheduler: IScheduler, context: any, selector: (args: TCallbackResult[]) => TResult): (arg1: T1, arg2: T2) => Observable; + (func: (arg1: T1, arg2: T2, arg3: T3, callback: Function) => any, scheduler: IScheduler, context: any, selector: (args: TCallbackResult[]) => TResult): (arg1: T1, arg2: T2, arg3: T3) => Observable; + // with any callback without selector + (func: (callback: Function) => any, scheduler?: IScheduler, context?: any): () => Observable; + (func: (arg1: T1, callback: Function) => any, scheduler?: IScheduler, context?: any): (arg1: T1) => Observable; + (func: (arg1: T1, arg2: T2, callback: Function) => any, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2) => Observable; + (func: (arg1: T1, arg2: T2, arg3: T3, callback: Function) => any, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3: T3) => Observable; + // with any function with selector + (func: Function, scheduler: IScheduler, context: any, selector: (args: TCallbackResult[]) => TResult): (...args: any[]) => Observable; + // with any function without selector + (func: Function, scheduler?: IScheduler, context?: any): (...args: any[]) => Observable; + }; + + fromNodeCallback: { + // with single result callback without selector + (func: (callback: (err: any, result: T) => any) => any, scheduler?: IScheduler, context?: any): () => Observable; + (func: (arg1: T1, callback: (err: any, result: T) => any) => any, scheduler?: IScheduler, context?: any): (arg1: T1) => Observable; + (func: (arg1: T1, arg2: T2, callback: (err: any, result: T) => any) => any, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2) => Observable; + (func: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: T) => any) => any, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3: T3) => Observable; + // with any callback with selector + (func: (callback: Function) => any, scheduler: IScheduler, context: any, selector: (results: TC[]) => TR): () => Observable; + (func: (arg1: T1, callback: Function) => any, scheduler: IScheduler, context: any, selector: (results: TC[]) => TR): (arg1: T1) => Observable; + (func: (arg1: T1, arg2: T2, callback: Function) => any, scheduler: IScheduler, context: any, selector: (results: TC[]) => TR): (arg1: T1, arg2: T2) => Observable; + (func: (arg1: T1, arg2: T2, arg3: T3, callback: Function) => any, scheduler: IScheduler, context: any, selector: (results: TC[]) => TR): (arg1: T1, arg2: T2, arg3: T3) => Observable; + // with any callback without selector + (func: (callback: Function) => any, scheduler?: IScheduler, context?: any): () => Observable; + (func: (arg1: T1, callback: Function) => any, scheduler?: IScheduler, context?: any): (arg1: T1) => Observable; + (func: (arg1: T1, arg2: T2, callback: Function) => any, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2) => Observable; + (func: (arg1: T1, arg2: T2, arg3: T3, callback: Function) => any, scheduler?: IScheduler, context?: any): (arg1: T1, arg2: T2, arg3: T3) => Observable; + // with any function with selector + (func: Function, scheduler: IScheduler, context: any, selector: (results: TC[]) => T): (...args: any[]) => Observable; + // with any function without selector + (func: Function, scheduler?: IScheduler, context?: any): (...args: any[]) => Observable; + }; + + fromEvent(element: NodeList, eventName: string, selector?: (arguments: any[]) => T): Observable; + fromEvent(element: Node, eventName: string, selector?: (arguments: any[]) => T): Observable; + fromEventPattern(addHandler: (handler: Function) => void, removeHandler: (handler: Function) => void, selector?: (arguments: any[])=>T): Observable; + + fromPromise(promise: { then(onFulfill: (value: T) => any, onReject?: (reason: any) => any): any; }): Observable; + fromPromise(promise: any): Observable; + } +} From 6033488b47151cfa067ee8ad9afe0803bef7b420 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 15 Dec 2013 21:38:05 +0400 Subject: [PATCH 10/22] updated rx.js.coincidence.d.ts: added overloads for window and buffer --- rx.js/rx.js.coincidence.d.ts | 38 ++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/rx.js/rx.js.coincidence.d.ts b/rx.js/rx.js.coincidence.d.ts index 3ec1a3a25..a87c2b4a3 100644 --- a/rx.js/rx.js.coincidence.d.ts +++ b/rx.js/rx.js.coincidence.d.ts @@ -3,34 +3,30 @@ // Type definitions for RxJS-Coincidence package // Project: http://rx.codeplex.com/ // Definitions by: Carl de Billy +// Revision by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped -// -// Dependencies: -// -> rx.js -// -> rx.coincidence.js declare module Rx { interface Observable { - join( - right: Observable, - leftDurationSelector: (leftItem: T) => Observable, - rightDurationSelector: (rightItem: T2) => Observable, - resultSelector: (leftItem: T, rightItem: T2) => TResult): Observable; + join( + right: Observable, + leftDurationSelector: (leftItem: T) => Observable, + rightDurationSelector: (rightItem: TRight) => Observable, + resultSelector: (leftItem: T, rightItem: TRight) => TResult): Observable; - groupJoin( - right: Observable, - leftDurationSelector: (leftItem: T) => Observable, - rightDurationSelector: (rightItem: T2) => Observable, - resultSelector: (leftItem: T, rightItem: Observable) => TResult): Observable; + groupJoin( + right: Observable, + leftDurationSelector: (leftItem: T) => Observable, + rightDurationSelector: (rightItem: TRight) => Observable, + resultSelector: (leftItem: T, rightItem: Observable) => TResult): Observable; + window(windowOpenings: Observable): Observable>; + window(windowClosingSelector: () => Observable): Observable>; + window(windowOpenings: Observable, windowClosingSelector: () => Observable): Observable>; - // lack of documentation to complete the followings... - - buffer(bufferOpenings: Observable, - bufferClosingSelector: (opening: TBufferOpening) => Observable): Observable; - - window(bufferOpenings: Observable, - bufferClosingSelector: (opening: TBufferOpening) => Observable): Observable; + buffer(bufferOpenings: Observable): Observable; + buffer(bufferClosingSelector: () => Observable): Observable; + buffer(bufferOpenings: Observable, bufferClosingSelector: () => Observable): Observable; } } From 1e8d71d7e399e2847c2b045fba52f5d51367a196 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Sun, 15 Dec 2013 23:18:20 +0400 Subject: [PATCH 11/22] Created typings for rx.joinpatterns: Patterns, Plan, Observable.when --- rx.js/rx.js.joinpatterns.d.ts | 54 +++++++++++++++++++++++++++++------ 1 file changed, 45 insertions(+), 9 deletions(-) diff --git a/rx.js/rx.js.joinpatterns.d.ts b/rx.js/rx.js.joinpatterns.d.ts index fe6cf6bdd..1f1c40d7b 100644 --- a/rx.js/rx.js.joinpatterns.d.ts +++ b/rx.js/rx.js.joinpatterns.d.ts @@ -2,19 +2,55 @@ // Type definitions for RxJS-Join package // Project: http://rx.codeplex.com/ -// Definitions by: Carl de Billy +// Definitions by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped -// -// Dependencies: -// -> rx.js -// -> rx.joinpatterns.js declare module Rx { - //interface Observable { - //} + interface Pattern1 { + and(other: Observable): Pattern2; + then(selector: (item1: T1) => TR): Plan; + } + interface Pattern2 { + and(other: Observable): Pattern3; + then(selector: (item1: T1, item2: T2) => TR): Plan; + } + interface Pattern3 { + and(other: Observable): Pattern4; + then(selector: (item1: T1, item2: T2, item3: T3) => TR): Plan; + } + interface Pattern4 { + and(other: Observable): Pattern5; + then(selector: (item1: T1, item2: T2, item3: T3, item4: T4) => TR): Plan; + } + interface Pattern5 { + and(other: Observable): Pattern6; + then(selector: (item1: T1, item2: T2, item3: T3, item4: T4, item5: T5) => TR): Plan; + } + interface Pattern6 { + and(other: Observable): Pattern7; + then(selector: (item1: T1, item2: T2, item3: T3, item4: T4, item5: T5, item6: T6) => TR): Plan; + } + interface Pattern7 { + and(other: Observable): Pattern8; + then(selector: (item1: T1, item2: T2, item3: T3, item4: T4, item5: T5, item6: T6, item7: T7) => TR): Plan; + } + interface Pattern8 { + and(other: Observable): Pattern9; + then(selector: (item1: T1, item2: T2, item3: T3, item4: T4, item5: T5, item6: T6, item7: T7, item8: T8) => TR): Plan; + } + interface Pattern9 { + then(selector: (item1: T1, item2: T2, item3: T3, item4: T4, item5: T5, item6: T6, item7: T7, item8: T8, item9: T9) => TR): Plan; + } + interface Plan { } - //interface Observable { - //} + interface Observable { + and(other: Observable): Pattern2; + then(selector: (item1: T) => TR): Plan; + } + + interface ObservableStatic { + when(plan: Plan): Observable; + } } From 519423ea9a54ad9a8291c3d04ca13a53b4eb65a2 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 00:19:41 +0400 Subject: [PATCH 12/22] Added rx.testing.d.ts: TestScheduler, ReactiveTest, Subscription, MockObserver, Recorded --- rx.js/rx.js.time.d.ts | 5 +--- rx.js/rx.testing.d.ts | 53 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 4 deletions(-) create mode 100644 rx.js/rx.testing.d.ts diff --git a/rx.js/rx.js.time.d.ts b/rx.js/rx.js.time.d.ts index 779a7b3c9..f0d7fb889 100644 --- a/rx.js/rx.js.time.d.ts +++ b/rx.js/rx.js.time.d.ts @@ -3,11 +3,8 @@ // Type definitions for RxJS "Aggregates" // Project: http://rx.codeplex.com/ // Definitions by: Carl de Billy +// Revision by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped -// -// Dependencies: -// -> rx.js -// -> rx.time.js declare module Rx { diff --git a/rx.js/rx.testing.d.ts b/rx.js/rx.testing.d.ts new file mode 100644 index 000000000..f2b6f4fff --- /dev/null +++ b/rx.js/rx.testing.d.ts @@ -0,0 +1,53 @@ +/// +/// + +// Type definitions for RxJS-Testing +// Project: https://github.com/Reactive-Extensions/RxJS/ +// Definitions by: Igor Oleinikov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare module Rx { + export class TestScheduler extends VirtualTimeScheduler { + constructor(); + + createColdObservable(...records: Recorded[]): Observable; + createHotObservable(...records: Recorded[]): Observable; + createObserver(): MockObserver; + + startWithTiming(create: () => Observable, createdAt: number, subscribedAt: number, disposedAt: number): MockObserver; + startWithDispose(create: () => Observable, disposedAt: number): MockObserver; + startWithCreate(create: () => Observable): MockObserver; + } + + export class Recorded { + constructor(time: number, value: any, equalityComparer?: (x: any, y: any) => boolean); + equals(other: Recorded): boolean; + toString(): string; + time: number; + value: any; + } + + export var ReactiveTest: { + created: number; + subscribed: number; + disposed: number; + + onNext(ticks: number, value: any): Recorded; + onNext(ticks: number, predicate: (value: any) => boolean): Recorded; + onError(ticks: number, exception: any): Recorded; + onError(ticks: number, predicate: (exception: any) => boolean): Recorded; + onCompleted(ticks: number): Recorded; + + subscribe(subscribeAt: number, unsubscribeAt?: number): Subscription; + }; + + export class Subscription { + constructor(subscribeAt: number, unsubscribeAt?: number); + equals(other: Subscription): boolean; + } + + export class MockObserver extends Observer { + constructor(scheduler: IScheduler); + messages: Recorded[]; + } +} From 58a5b53bcde71c6e2aa40ee964af28488807b3cb Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 00:29:27 +0400 Subject: [PATCH 13/22] rx.js: removed *.tscparams files --- rx.js/rx.js.aggregates.d.ts.tscparams | 1 - rx.js/rx.js.async.d.ts.tscparams | 1 - rx.js/rx.js.binding.d.ts.tscparams | 1 - rx.js/rx.js.coincidence.d.ts.tscparams | 1 - rx.js/rx.js.d.ts.tscparams | 1 - rx.js/rx.js.experimental.d.ts.tscparams | 1 - rx.js/rx.js.joinpatterns.d.ts.tscparams | 1 - rx.js/rx.js.jquery.d.ts.tscparams | 1 - rx.js/rx.js.time.d.ts.tscparams | 1 - rx.js/rx.js.virtualtime.d.ts.tscparams | 1 - 10 files changed, 10 deletions(-) delete mode 100644 rx.js/rx.js.aggregates.d.ts.tscparams delete mode 100644 rx.js/rx.js.async.d.ts.tscparams delete mode 100644 rx.js/rx.js.binding.d.ts.tscparams delete mode 100644 rx.js/rx.js.coincidence.d.ts.tscparams delete mode 100644 rx.js/rx.js.d.ts.tscparams delete mode 100644 rx.js/rx.js.experimental.d.ts.tscparams delete mode 100644 rx.js/rx.js.joinpatterns.d.ts.tscparams delete mode 100644 rx.js/rx.js.jquery.d.ts.tscparams delete mode 100644 rx.js/rx.js.time.d.ts.tscparams delete mode 100644 rx.js/rx.js.virtualtime.d.ts.tscparams diff --git a/rx.js/rx.js.aggregates.d.ts.tscparams b/rx.js/rx.js.aggregates.d.ts.tscparams deleted file mode 100644 index e16c76dff..000000000 --- a/rx.js/rx.js.aggregates.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/rx.js/rx.js.async.d.ts.tscparams b/rx.js/rx.js.async.d.ts.tscparams deleted file mode 100644 index 3cc762b55..000000000 --- a/rx.js/rx.js.async.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" \ No newline at end of file diff --git a/rx.js/rx.js.binding.d.ts.tscparams b/rx.js/rx.js.binding.d.ts.tscparams deleted file mode 100644 index e16c76dff..000000000 --- a/rx.js/rx.js.binding.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/rx.js/rx.js.coincidence.d.ts.tscparams b/rx.js/rx.js.coincidence.d.ts.tscparams deleted file mode 100644 index e16c76dff..000000000 --- a/rx.js/rx.js.coincidence.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/rx.js/rx.js.d.ts.tscparams b/rx.js/rx.js.d.ts.tscparams deleted file mode 100644 index e16c76dff..000000000 --- a/rx.js/rx.js.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/rx.js/rx.js.experimental.d.ts.tscparams b/rx.js/rx.js.experimental.d.ts.tscparams deleted file mode 100644 index e16c76dff..000000000 --- a/rx.js/rx.js.experimental.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/rx.js/rx.js.joinpatterns.d.ts.tscparams b/rx.js/rx.js.joinpatterns.d.ts.tscparams deleted file mode 100644 index e16c76dff..000000000 --- a/rx.js/rx.js.joinpatterns.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/rx.js/rx.js.jquery.d.ts.tscparams b/rx.js/rx.js.jquery.d.ts.tscparams deleted file mode 100644 index e16c76dff..000000000 --- a/rx.js/rx.js.jquery.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/rx.js/rx.js.time.d.ts.tscparams b/rx.js/rx.js.time.d.ts.tscparams deleted file mode 100644 index e16c76dff..000000000 --- a/rx.js/rx.js.time.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" diff --git a/rx.js/rx.js.virtualtime.d.ts.tscparams b/rx.js/rx.js.virtualtime.d.ts.tscparams deleted file mode 100644 index 3cc762b55..000000000 --- a/rx.js/rx.js.virtualtime.d.ts.tscparams +++ /dev/null @@ -1 +0,0 @@ -"" \ No newline at end of file From 249fd303b303cfae029a433d5711bcc2cb65edf7 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 09:58:41 +0400 Subject: [PATCH 14/22] Renamed rx.js.*.d.ts files into rx.*.d.ts; fixed references --- rx.js/{rx.js.aggregates.d.ts => rx.aggregates.d.ts} | 0 rx.js/{rx.js.async.d.ts => rx.async.d.ts} | 0 rx.js/{rx.js.binding.d.ts => rx.binding.d.ts} | 0 rx.js/{rx.js.coincidence.d.ts => rx.coincidence.d.ts} | 0 rx.js/{rx.js.d.ts => rx.d.ts} | 0 rx.js/{rx.js.experimental.d.ts => rx.experimental.d.ts} | 0 rx.js/{rx.js.joinpatterns.d.ts => rx.joinpatterns.d.ts} | 0 rx.js/{rx.js.jquery.d.ts => rx.jquery.d.ts} | 0 rx.js/rx.testing.d.ts | 4 ++-- rx.js/{rx.js.time.d.ts => rx.time.d.ts} | 0 rx.js/{rx.js.virtualtime.d.ts => rx.virtualtime.d.ts} | 0 11 files changed, 2 insertions(+), 2 deletions(-) rename rx.js/{rx.js.aggregates.d.ts => rx.aggregates.d.ts} (100%) rename rx.js/{rx.js.async.d.ts => rx.async.d.ts} (100%) rename rx.js/{rx.js.binding.d.ts => rx.binding.d.ts} (100%) rename rx.js/{rx.js.coincidence.d.ts => rx.coincidence.d.ts} (100%) rename rx.js/{rx.js.d.ts => rx.d.ts} (100%) rename rx.js/{rx.js.experimental.d.ts => rx.experimental.d.ts} (100%) rename rx.js/{rx.js.joinpatterns.d.ts => rx.joinpatterns.d.ts} (100%) rename rx.js/{rx.js.jquery.d.ts => rx.jquery.d.ts} (100%) rename rx.js/{rx.js.time.d.ts => rx.time.d.ts} (100%) rename rx.js/{rx.js.virtualtime.d.ts => rx.virtualtime.d.ts} (100%) diff --git a/rx.js/rx.js.aggregates.d.ts b/rx.js/rx.aggregates.d.ts similarity index 100% rename from rx.js/rx.js.aggregates.d.ts rename to rx.js/rx.aggregates.d.ts diff --git a/rx.js/rx.js.async.d.ts b/rx.js/rx.async.d.ts similarity index 100% rename from rx.js/rx.js.async.d.ts rename to rx.js/rx.async.d.ts diff --git a/rx.js/rx.js.binding.d.ts b/rx.js/rx.binding.d.ts similarity index 100% rename from rx.js/rx.js.binding.d.ts rename to rx.js/rx.binding.d.ts diff --git a/rx.js/rx.js.coincidence.d.ts b/rx.js/rx.coincidence.d.ts similarity index 100% rename from rx.js/rx.js.coincidence.d.ts rename to rx.js/rx.coincidence.d.ts diff --git a/rx.js/rx.js.d.ts b/rx.js/rx.d.ts similarity index 100% rename from rx.js/rx.js.d.ts rename to rx.js/rx.d.ts diff --git a/rx.js/rx.js.experimental.d.ts b/rx.js/rx.experimental.d.ts similarity index 100% rename from rx.js/rx.js.experimental.d.ts rename to rx.js/rx.experimental.d.ts diff --git a/rx.js/rx.js.joinpatterns.d.ts b/rx.js/rx.joinpatterns.d.ts similarity index 100% rename from rx.js/rx.js.joinpatterns.d.ts rename to rx.js/rx.joinpatterns.d.ts diff --git a/rx.js/rx.js.jquery.d.ts b/rx.js/rx.jquery.d.ts similarity index 100% rename from rx.js/rx.js.jquery.d.ts rename to rx.js/rx.jquery.d.ts diff --git a/rx.js/rx.testing.d.ts b/rx.js/rx.testing.d.ts index f2b6f4fff..8a2dc35e5 100644 --- a/rx.js/rx.testing.d.ts +++ b/rx.js/rx.testing.d.ts @@ -1,5 +1,5 @@ -/// -/// +/// +/// // Type definitions for RxJS-Testing // Project: https://github.com/Reactive-Extensions/RxJS/ diff --git a/rx.js/rx.js.time.d.ts b/rx.js/rx.time.d.ts similarity index 100% rename from rx.js/rx.js.time.d.ts rename to rx.js/rx.time.d.ts diff --git a/rx.js/rx.js.virtualtime.d.ts b/rx.js/rx.virtualtime.d.ts similarity index 100% rename from rx.js/rx.js.virtualtime.d.ts rename to rx.js/rx.virtualtime.d.ts From 6ac83ca52e4c6e0c04fccb1e5188a28d03c27f8e Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 11:24:24 +0400 Subject: [PATCH 15/22] Updated rx.jquery.d.ts --- rx.js/rx.jquery.d.ts | 113 ++++++++++++++----------------------------- 1 file changed, 35 insertions(+), 78 deletions(-) diff --git a/rx.js/rx.jquery.d.ts b/rx.js/rx.jquery.d.ts index 75db935a9..fd9311ee4 100644 --- a/rx.js/rx.jquery.d.ts +++ b/rx.js/rx.jquery.d.ts @@ -1,58 +1,10 @@ -/// -/// - -// Those are the definitions for bridging Rx with jQuery. -// -// Using the https://github.com/Reactive-Extensions/rxjs-jquery project -// -// Dependencies: -// -> rx.js -// -> rx.jquery.js -// -> jquery.js - -declare module JQueryResults { - - export interface eventBase{ - bubbles: boolean; - cancelable: boolean; - type: string; - preventDefault(): void; - isDefaultPrevented(): boolean; - stopPropagation(): void; - isPropagationStopped(): boolean; - data: any; - originalEvent: any; - eventPhase: number; - } - - export interface keyEvent extends eventBase { - key: number; - keyCode: number; - altKey: boolean; - ctrlKey: boolean; - shiftKey: boolean; - char: string; - metaKey: boolean; - } - - export interface uiEvent extends eventBase{ - target: any; - currentTarget: any; - } - - export interface mouseEvent extends keyEvent{ - clientX: number; - clientY: number; - screenX: number; - screenY: number; - offsetX: number; - offsetY: number; - pageX: number; - pageY: number; - which: number; - } -} +// Type definitions for bridging RxJS with jQuery. +// Project: https://github.com/Reactive-Extensions/RxJS-jQuery/ +// Revision by: Igor Oleinikov +// Definitions: https://github.com/borisyankov/DefinitelyTyped +/// +/// interface JQueryStatic { ajaxAsObservable(settings: JQueryAjaxSettings): Rx.Observable; @@ -63,29 +15,34 @@ interface JQueryStatic { } interface JQuery { - 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; + onAsObservable(events: string, selector?: string, eventData?: any): Rx.Observable; + bindAsObservable(eventType: string, eventData?: any): Rx.Observable; + delegateAsObservable(selector: string, eventType: string, eventData?: any): Rx.Observable; + //liveAsObservable(eventType: string, eventData?: any): Rx.Observable; // removed in jquery 1.9 + + 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; @@ -96,4 +53,4 @@ interface JQuery { slideUpAsObservable(duration: number): Rx.Observable; slideToggleAsObservable(duration: number): Rx.Observable; toggleAsObservable(duration: number): Rx.Observable; -} \ No newline at end of file +} From a2186d91623fd75ed797bf5112e7eb5bf8de5d80 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 12:57:25 +0400 Subject: [PATCH 16/22] Fixed reference in rx-tests.ts --- rx.js/rx-tests.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rx.js/rx-tests.ts b/rx.js/rx-tests.ts index d95988ce6..aa94bcffc 100644 --- a/rx.js/rx-tests.ts +++ b/rx.js/rx-tests.ts @@ -1,4 +1,4 @@ -/// +/// // Disposable var d: Rx.IDisposable = new Rx.Disposable(() => { }); From f61f1bbd53ab35635be36526c197da51100360eb Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 14:02:11 +0400 Subject: [PATCH 17/22] Removed rx-tests.ts via TS bug https://typescript.codeplex.com/workitem/2011 --- rx.js/rx-tests.ts | 281 ---------------------------------------------- 1 file changed, 281 deletions(-) delete mode 100644 rx.js/rx-tests.ts diff --git a/rx.js/rx-tests.ts b/rx.js/rx-tests.ts deleted file mode 100644 index aa94bcffc..000000000 --- a/rx.js/rx-tests.ts +++ /dev/null @@ -1,281 +0,0 @@ -/// - -// 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]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 - -ss = Rx.Observable.catch(ss, ss, ss); -ss = Rx.Observable.catchException(ss, ss, ss); -//ss = Rx.Observable.catch([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 -//ss = Rx.Observable.catchException([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 - -ss = Rx.Observable.concat(ss, ss, ss); -//ss = Rx.Observable.concat([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 - -ss = Rx.Observable.merge(ss, ss, ss); -//ss = Rx.Observable.merge([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 -ss = Rx.Observable.merge(s, ss, ss, ss); -//ss = Rx.Observable.merge(s, [ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 - -ss = Rx.Observable.onErrorResumeNext(ss, ss, ss); -//ss = Rx.Observable.onErrorResumeNext([ss, ss, ss]); // TypeScript bug https://typescript.codeplex.com/workitem/2011 - -ns = Rx.Observable.zip(ss, [ss, ss, ss], (s, ss2) => { ss = ss2; return s.charCodeAt(0); }); -ns = Rx.Observable.zip(ss, bs, (s, b) => s.length + (b ? 1 : 0)); -ns = Rx.Observable.zip(ss, bs, ns, (s, b, n) => s.length + (b ? 1 : 0) + n); -ns = Rx.Observable.zip(ss, bs, ns, ns, (s, b, n, n2) => s.length + (b ? 1 : 0) + n + n2); -ns = Rx.Observable.zip(ss, bs, ns, ns, ss, (s, b, n, n2, s2) => s.length + (b ? 1 : 0) + n + n2 + s2.charCodeAt(0)); - -var sas: Rx.Observable = Rx.Observable.zipArray(ss, ss); - - -// Observable instance methods - -d = ns.subscribe(o); -d = ns.subscribe(n => n + 1, err => { }, () => { }); -d = ns.subscribe(n => n + 1, err => { }); -d = ns.subscribe(); - -sas = ss.toArray(); - -ss.observeOn(s); -ns.subscribeOn(s); - -ss = ss.amb(ss); - -ss = ss.catch(err => ss); -ss = ss.catchException(err => ss); -ss = ss.catch(ss); -ss = ss.catchException(ss); - -ns = ss.combineLatest([ns, ns, ns], (s, ...ns) => s.charCodeAt(0) + ns[0]); -ns = ss.combineLatest(ns, (s, n) => s.charCodeAt(0) + n); -ns = ss.combineLatest(ns, ns, (s, n, n2) => s.charCodeAt(0) + n + n2); -ns = ss.combineLatest(ns, ns, bs, (s, n, n2, b) => s.charCodeAt(0) + n + n2 + (b ? 1 : 0)); -ns = ss.combineLatest(ns, ns, bs, ss, (s, n, n2, b, s2) => s.charCodeAt(0) + n + n2 + (b ? 1 : 0) + s2.charCodeAt(0)); - -ss = ss.concat(ss, ss); -ss = ss.concat([ss, ss]); - -var sss: Rx.Observable>; -ss = sss.concatAll(); -ss = sss.concatObservable(); - -ss = ss.merge(2); -ss = ss.merge(ss); - -ss = sss.mergeAll(); -ss = sss.mergeObservable(); - -ss = ss.onErrorResumeNext(ss); - -ss = ss.skipUntil(ns); - -ss = ss.takeUntil(ns); - -ss = sss.switchLatest(); - -ns = ss.zip([ns, ns], (s, ns2) => { ns = ns2; return s.charCodeAt(0); }); - -ns = ss.zip(ns, (s, n) => s.charCodeAt(0) + n); -ns = ss.zip(ns, bs, (s, n, b) => s.charCodeAt(0) + n + (b?1:0)); -ns = ss.zip(ns, bs, ss, (s, n, b, s2) => s.charCodeAt(0) + n + (b?1:0) + s2.charCodeAt(0)); -ns = ss.zip(ns, bs, ss, ns, (s, n, b, s2, n2) => s.charCodeAt(0) + n + (b?1:0) + s2.charCodeAt(0) + n2); - -ss = ss.asObservable(); - -sas = ss.bufferWithCount(2); -sas = ss.bufferWithCount(2, 1); - -var notifications: Rx.Observable>; - -ns = notifications.dematerialize(); - -ns = ns.distinctUntilChanged(); -ns = ns.distinctUntilChanged(n => (n + 1).toString()); -ns = ns.distinctUntilChanged(n => (n + 1).toString(), (s1, s2) => s1.charCodeAt(0) === s2.charCodeAt(0)); -ns = ns.distinctUntilChanged(undefined, (n1, n2) => (n1 + 1) === (n2 + 1)); - -ns = ns.do(o); -ns = ns.doAction(o); -ns = ns.do(n => n + 1, err => { }, () => { }); -ns = ns.doAction(n => n + 1, err => { }, () => { }); -ns = ns.do(n => n + 1, err => { }); -ns = ns.doAction(n => n + 1, err => { }); -ns = ns.do(); -ns = ns.doAction(); - -ns = ns.finally(() => { }); -ns = ns.finallyAction(() => { }); - -ss = ss.ignoreElements(); - -notifications = ns.materialize(); - -ss = ss.repeat(); -ss = ss.repeat(10); - -ss = ss.retry(); -ss = ss.retry(10); - -ns = ss.scan(0, (sum, s) => sum + s.charCodeAt(0)); -ns = ns.scan((sum, n) => sum + n); - -ns = ns.skipLast(10); - -ns = ns.startWith(10, 20); -ns = ns.startWith(s, 10, 20); - -ns = ns.takeLast(2); -ns = ns.takeLast(2, s); - -sas = ss.takeLastBuffer(5); - -sss = ss.windowWithCount(2); -sss = ss.windowWithCount(2, 3); - -ns = ns.defaultIfEmpty(); -ns = ns.defaultIfEmpty(0); - -ns = ns.distinct(n => (n + 1), n => (n + 1).toString()); -ns = ns.distinct(undefined, n => (n + 1).toString()); -ns = ns.distinct(n => (n + 1).toString()); -ns = ns.distinct(); - -var gnss: Observable>; -var group: GroupedObservable; -ss = group; -n = group.key; - -gnss = ss.groupBy(s => s.charCodeAt(0)); -gnss = ss.groupBy(s => s.charCodeAt(0), s => s + "!"); -gnss = ss.groupBy(s => s.charCodeAt(0), s => s + "!", k => (k + 1).toString()); -gnss = ss.groupBy(s => s.charCodeAt(0), undefined, k => (k + 1).toString()); - -gnss = ss.groupByUntil(s => s.charCodeAt(0), s => s + "!", g => ns, k => (k + 1).toString()); -gnss = ss.groupByUntil(s => s.charCodeAt(0), undefined, g => ns, k => (k + 1).toString()); - -ns = ss.select(s => s.charCodeAt(0), ns); -ns = ss.map(s => s.charCodeAt(0), ns); -ns = ss.select(s => s.charCodeAt(0)); -ns = ss.map(s => s.charCodeAt(0)); -ns = ss.select((s, index) => s.charCodeAt(0) + index); -ns = ss.map((s, index) => s.charCodeAt(0) + index); -ns = ss.select((s, index) => s.charCodeAt(0) + index, ns); -ns = ss.map((s, index) => s.charCodeAt(0) + index, ns); -ns = ss.select((s, index, source) => { ss = source; return; s.charCodeAt(0) + index; }); -ns = ss.map((s, index, source) => { ss = source; return; s.charCodeAt(0) + index; }); -ns = ss.select((s, index, source) => { ss = source; return; s.charCodeAt(0) + index; }, ns); -ns = ss.map((s, index, source) => { ss = source; return; s.charCodeAt(0) + index; }, ns); - -ss = ss.selectMany(s => ns, (s, n) => s + n.toString()); -ns = ss.selectMany(s => ns); -ns = ss.selectMany(ns); - -ns = ns.skip(10); From ba81c3067531ed74bc24d07facdf90e366f97364 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 15:28:25 +0400 Subject: [PATCH 18/22] rx.js: fixed references rx.js.* -> rx.* --- rx.js/rx.aggregates.d.ts | 2 +- rx.js/rx.async.d.ts | 2 +- rx.js/rx.binding.d.ts | 2 +- rx.js/rx.coincidence.d.ts | 2 +- rx.js/rx.experimental.d.ts | 2 +- rx.js/rx.joinpatterns.d.ts | 2 +- rx.js/rx.time.d.ts | 2 +- rx.js/rx.virtualtime.d.ts | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rx.js/rx.aggregates.d.ts b/rx.js/rx.aggregates.d.ts index fcc368461..24ed13f1d 100644 --- a/rx.js/rx.aggregates.d.ts +++ b/rx.js/rx.aggregates.d.ts @@ -1,4 +1,4 @@ -/// +/// // Type definitions for RxJS-Aggregates package // Project: http://rx.codeplex.com/ diff --git a/rx.js/rx.async.d.ts b/rx.js/rx.async.d.ts index 8adfeae4c..5ee13b89a 100644 --- a/rx.js/rx.async.d.ts +++ b/rx.js/rx.async.d.ts @@ -1,4 +1,4 @@ -/// +/// // Type definitions for RxJS-Async package 2.2 // Project: http://rx.codeplex.com/ diff --git a/rx.js/rx.binding.d.ts b/rx.js/rx.binding.d.ts index 0a749cc8e..22624cc23 100644 --- a/rx.js/rx.binding.d.ts +++ b/rx.js/rx.binding.d.ts @@ -1,4 +1,4 @@ -/// +/// // Type definitions for RxJS-Binding package // Project: http://rx.codeplex.com/ diff --git a/rx.js/rx.coincidence.d.ts b/rx.js/rx.coincidence.d.ts index a87c2b4a3..2afa5cfe9 100644 --- a/rx.js/rx.coincidence.d.ts +++ b/rx.js/rx.coincidence.d.ts @@ -1,4 +1,4 @@ -/// +/// // Type definitions for RxJS-Coincidence package // Project: http://rx.codeplex.com/ diff --git a/rx.js/rx.experimental.d.ts b/rx.js/rx.experimental.d.ts index a1a7fbea3..db23df3fd 100644 --- a/rx.js/rx.experimental.d.ts +++ b/rx.js/rx.experimental.d.ts @@ -3,7 +3,7 @@ // Definitions by: Igor Oleinikov // Definitions: https://github.com/borisyankov/DefinitelyTyped -/// +/// declare module Rx { diff --git a/rx.js/rx.joinpatterns.d.ts b/rx.js/rx.joinpatterns.d.ts index 1f1c40d7b..d23264f8e 100644 --- a/rx.js/rx.joinpatterns.d.ts +++ b/rx.js/rx.joinpatterns.d.ts @@ -1,4 +1,4 @@ -/// +/// // Type definitions for RxJS-Join package // Project: http://rx.codeplex.com/ diff --git a/rx.js/rx.time.d.ts b/rx.js/rx.time.d.ts index f0d7fb889..2d5f1d14f 100644 --- a/rx.js/rx.time.d.ts +++ b/rx.js/rx.time.d.ts @@ -1,4 +1,4 @@ -/// +/// // Type definitions for RxJS "Aggregates" // Project: http://rx.codeplex.com/ diff --git a/rx.js/rx.virtualtime.d.ts b/rx.js/rx.virtualtime.d.ts index fe5d21689..9167f0fab 100644 --- a/rx.js/rx.virtualtime.d.ts +++ b/rx.js/rx.virtualtime.d.ts @@ -1,4 +1,4 @@ -/// +/// // Type definitions for RxJS-VirtualTime package 2.2 // Project: http://rx.codeplex.com/ From 9f7339ed64cb516fd51ef624ed00855b3a547ba3 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 15:33:29 +0400 Subject: [PATCH 19/22] rx.js: updated README.md contributors for rx.js --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e305efe3..800f6abf9 100755 --- a/README.md +++ b/README.md @@ -202,7 +202,7 @@ List of Definitions * [Riot.js](https://github.com/moot/riotjs) (by [vvakame](https://github.com/vvakame)) * [Restify](https://github.com/mcavage/node-restify) (by [Bret Little](https://github.com/blittle)) * [Royalslider](http://dimsemenov.com/plugins/royal-slider/) (by [Christiaan Rakowski](https://github.com/csrakowski)) -* [Rx.js](http://rx.codeplex.com/) (by [gsino](http://www.codeplex.com/site/users/view/gsino)) +* [Rx.js](http://rx.codeplex.com/) (by [gsino](http://www.codeplex.com/site/users/view/gsino), [Igor Oleinikov](https://github.com/Igorbek), [Carl de Billy](http://carl.debilly.net/), [zoetrope](https://github.com/zoetrope)) * [Raphael](http://raphaeljs.com/) (by [CheCoxshall](https://github.com/CheCoxshall)) * [Restangular](https://github.com/mgonto/restangular/) (by [Boris Yankov](https://github.com/borisyankov)) * [require.js](http://requirejs.org/) (by [Josh Baldwin](https://github.com/jbaldwin/)) From 9381a60dcbca4d777141fd2106ea8002a9b1d251 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 15:57:03 +0400 Subject: [PATCH 20/22] knockout.rx: fixed reference to rx.js --- knockout.rx/knockout.rx.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/knockout.rx/knockout.rx.d.ts b/knockout.rx/knockout.rx.d.ts index 4f44153d8..e9c85a7f8 100644 --- a/knockout.rx/knockout.rx.d.ts +++ b/knockout.rx/knockout.rx.d.ts @@ -3,7 +3,7 @@ // Definitions by: Igor Oleinikov /// -/// +/// interface KnockoutSubscribableFunctions { toObservable(event?: string): Rx.IObservable; From a0bce74b1ca81ec84f994a90c902a5b925d7215f Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 16:02:13 +0400 Subject: [PATCH 21/22] rx.js: fixed --noImplicitAny errors --- rx.js/rx.d.ts | 4 ++-- rx.js/rx.virtualtime.d.ts | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/rx.js/rx.d.ts b/rx.js/rx.d.ts index b2ad79a48..a9125dd13 100644 --- a/rx.js/rx.d.ts +++ b/rx.js/rx.d.ts @@ -30,7 +30,7 @@ declare module Rx { } export class ScheduledItem { - constructor(scheduler: IScheduler, state: any, action: (scheduler: IScheduler, state) => IDisposable, dueTime: TTime, comparer?: (x: TTime, y: TTime) => number); + constructor(scheduler: IScheduler, state: any, action: (scheduler: IScheduler, state: any) => IDisposable, dueTime: TTime, comparer?: (x: TTime, y: TTime) => number); scheduler: IScheduler; state: TTime; @@ -182,7 +182,7 @@ declare module Rx { exception: any; static createOnNext(value: T): Notification; - static createOnError(exception): Notification; + static createOnError(exception: any): Notification; static createOnCompleted(): Notification; } diff --git a/rx.js/rx.virtualtime.d.ts b/rx.js/rx.virtualtime.d.ts index 9167f0fab..293343fda 100644 --- a/rx.js/rx.virtualtime.d.ts +++ b/rx.js/rx.virtualtime.d.ts @@ -11,13 +11,13 @@ declare module Rx { export /*abstract*/ class VirtualTimeScheduler extends Scheduler { constructor(initialClock: TAbsolute, comparer: (first: TAbsolute, second: TAbsolute) => number); - advanceBy(time: TRelative); - advanceTo(time: TAbsolute); - scheduleAbsolute(dueTime: TAbsolute, action: () => void); + advanceBy(time: TRelative): void; + advanceTo(time: TAbsolute): void; + scheduleAbsolute(dueTime: TAbsolute, action: () => void): IDisposable; scheduleAbsoluteWithState(state: TState, dueTime: TAbsolute, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable; scheduleRelative(dueTime: TRelative, action: () => void): IDisposable; scheduleRelativeWithState(state: TState, dueTime: TRelative, action: (scheduler: IScheduler, state: TState) => IDisposable): IDisposable; - sleep(time: TRelative); + sleep(time: TRelative): void; start(): IDisposable; stop(): void; From 7fcae51ab119627267e291464baeec2a2e1caa77 Mon Sep 17 00:00:00 2001 From: Igor Oleinikov Date: Mon, 16 Dec 2013 23:02:19 +0400 Subject: [PATCH 22/22] rx.js: added Observable.zipArray overload (by https://github.com/Reactive-Extensions/RxJS/issues/79) --- rx.js/rx.d.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rx.js/rx.d.ts b/rx.js/rx.d.ts index a9125dd13..f055452e3 100644 --- a/rx.js/rx.d.ts +++ b/rx.js/rx.d.ts @@ -321,7 +321,7 @@ declare module Rx { 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; + zipArray(sources: Observable[]): Observable; } export var Observable: ObservableStatic;