diff --git a/flow-typed/mobx.js b/flow-typed/mobx.js index a6d832781..bb567a379 100644 --- a/flow-typed/mobx.js +++ b/flow-typed/mobx.js @@ -3,31 +3,31 @@ export type IObservableMapInitialValues = IMapEntries | KeyValueMap | IMap export interface IMobxConfigurationOptions { - +enforceActions?: boolean | "strict" | "never" | "always" | "observed", - computedRequiresReaction?: boolean, - isolateGlobalState?: boolean, - disableErrorBoundaries?: boolean, - arrayBuffer?: number, - reactionScheduler?: (f: () => void) => void + +enforceActions?: boolean | "strict" | "never" | "always" | "observed"; + computedRequiresReaction?: boolean; + isolateGlobalState?: boolean; + disableErrorBoundaries?: boolean; + arrayBuffer?: number; + reactionScheduler?: (f: () => void) => void; } declare export function configure(options: IMobxConfigurationOptions): void export interface IAutorunOptions { - delay?: number, - name?: string, - scheduler?: (callback: () => void) => any, - onError?: (error: any) => void + delay?: number; + name?: string; + scheduler?: (callback: () => void) => any; + onError?: (error: any) => void; } export interface IReactionOptions extends IAutorunOptions { - fireImmediately?: boolean, - equals?: IEqualsComparer + fireImmediately?: boolean; + equals?: IEqualsComparer; } export interface IInterceptable { - interceptors: IInterceptor[] | any, - intercept(handler: IInterceptor): Lambda + interceptors: IInterceptor[] | any; + intercept(handler: IInterceptor): Lambda; } export type IEqualsComparer = (a: T, b: T) => boolean @@ -39,131 +39,138 @@ export type IMapEntry = [K, V] export type IMapEntries = IMapEntry[] export interface IMap { - clear(): void, - delete(key: K): boolean, - forEach(callbackfn: (value: V, index: K, map: IMap) => void, thisArg?: any): void, - get(key: K): V | any, - has(key: K): boolean, - set(key: K, value?: V): any, - size: number + clear(): void; + delete(key: K): boolean; + forEach(callbackfn: (value: V, index: K, map: IMap) => void, thisArg?: any): void; + get(key: K): V | any; + has(key: K): boolean; + set(key: K, value?: V): any; + size: number; } declare export function isObservableMap(x: any): boolean export interface IComputedValueOptions { + get?: () => T; + set?: (value: T) => void; + name?: string; + equals?: IEqualsComparer; + context?: any; +} + +type PropertyDescriptor = { + enumerable?: boolean, + configurable?: boolean, + writable?: boolean, + value?: T, get?: () => T, - set?: (value: T) => void, - name?: string, - equals?: IEqualsComparer, - context?: any + set?: (value: T) => void } -declare type PropertyDescriptor = any - export interface IComputed { - (func: () => T, setter?: (value: T) => void): IComputedValue, - (func: () => T, options: IComputedValueOptions): IComputedValue, - (target: Object, key: string, baseDescriptor?: PropertyDescriptor): void, - struct(target: Object, key: string, baseDescriptor?: PropertyDescriptor): void + (func: () => T, setter?: (value: T) => void): IComputedValue; + (func: () => T, options: IComputedValueOptions): IComputedValue; + (target: Object, key: string, baseDescriptor?: PropertyDescriptor<*>): void; + struct(target: Object, key: string, baseDescriptor?: PropertyDescriptor<*>): void; } export interface IDependencyTree { - name: string, - dependencies?: IDependencyTree[] + name: string; + dependencies?: IDependencyTree[]; } export interface IObserverTree { - name: string, - observers?: IObserverTree[] + name: string; + observers?: IObserverTree[]; } export interface IAtom { - reportObserved: () => void, - reportChanged: () => void + reportObserved: () => void; + reportChanged: () => void; } export interface IComputedValue { - get(): T, - set(value: T): void, - observe(listener: (newValue: T, oldValue: T) => void, fireImmediately?: boolean): Lambda + get(): T; + set(value: T): void; + observe(listener: (newValue: T, oldValue: T) => void, fireImmediately?: boolean): Lambda; } export interface IObservable {} export interface IDepTreeNode { - name: string, - observing?: IObservable[] + name: string; + observing?: IObservable[]; } export interface IDerivation { - name: string + name: string; } export interface IReactionPublic { - dispose: () => void, - trace: (enterBreakPoint?: boolean) => void + dispose: () => void; + trace: (enterBreakPoint?: boolean) => void; } declare export class IListenable { - observe(handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean): Lambda + observe(handler: (change: any, oldValue?: any) => void, fireImmediately?: boolean): Lambda; } export interface IObservableArray extends Array { - spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[], + spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]; observe( listener: (changeData: IArrayChange | IArraySplice) => void, fireImmediately?: boolean - ): Lambda, - intercept(handler: IInterceptor | IArrayWillSplice>): Lambda, - intercept(handler: IInterceptor | IArraySplice>): Lambda, // TODO: remove in 4.0 - intercept(handler: IInterceptor | IArraySplice>): Lambda, // TODO: remove in 4.0 - clear(): T[], - peek(): T[], - replace(newItems: T[]): T[], + ): Lambda; + intercept(handler: IInterceptor | IArrayWillSplice>): Lambda; + intercept(handler: IInterceptor | IArraySplice>): Lambda; // TODO: remove in 4.0 + intercept(handler: IInterceptor | IArraySplice>): Lambda; // TODO: remove in 4.0 + clear(): T[]; + peek(): T[]; + replace(newItems: T[]): T[]; find( predicate: (item: T, index: number, array: Array) => boolean, thisArg?: any, fromIndex?: number - ): T | any, + ): T | any; findIndex( predicate: (item: T, index: number, array: Array) => boolean, thisArg?: any, fromIndex?: number - ): number, - remove(value: T): boolean + ): number; + remove(value: T): boolean; } export interface IArrayChange { - type: "update", - object: IObservableArray, - index: number, - newValue: T, - oldValue: T + type: "update"; + object: IObservableArray; + index: number; + newValue: T; + oldValue: T; } export interface IArraySplice { - type: "splice", - object: IObservableArray, - index: number, - added: T[], - addedCount: number, - removed: T[], - removedCount: number + type: "splice"; + object: IObservableArray; + index: number; + added: T[]; + addedCount: number; + removed: T[]; + removedCount: number; } export interface IArrayWillChange { - type: "update", - object: IObservableArray, - index: number, - newValue: T + type: "update"; + object: IObservableArray; + index: number; + newValue: T; } export interface IArrayWillSplice { - type: "splice", - object: IObservableArray, - index: number, - added: T[], - removedCount: number + type: "splice"; + object: IObservableArray; + index: number; + added: T[]; + removedCount: number; } export type KeyValueMap = { @@ -171,70 +178,70 @@ export type KeyValueMap = { } export interface IMapChange { - object: ObservableMap, - type: "update" | "add" | "delete", - name: K, - newValue?: any, - oldValue?: any + object: ObservableMap; + type: "update" | "add" | "delete"; + name: K; + newValue?: any; + oldValue?: any; } export interface IMapWillChange { - object: ObservableMap, - type: "update" | "add" | "delete", - name: K, - newValue?: any + object: ObservableMap; + type: "update" | "add" | "delete"; + name: K; + newValue?: any; } export interface IObservableObject {} export interface IObjectChange { - name: string, - object: any, - type: "update" | "add" | "remove", - oldValue?: any, - newValue: any + name: string; + object: any; + type: "update" | "add" | "remove"; + oldValue?: any; + newValue: any; } export interface IObjectWillChange { - object: any, - type: "update" | "add" | "remove", - name: string, - newValue: any + object: any; + type: "update" | "add" | "remove"; + name: string; + newValue: any; } export interface IValueWillChange { - object: any, - type: "update", - newValue: T + object: any; + type: "update"; + newValue: T; } export interface IValueDidChange extends IValueWillChange { - oldValue: ?T + oldValue: ?T; } export interface IObservableValue { - get(): T, - set(value: T): void, - intercept(handler: IInterceptor>): Lambda, - observe(listener: (change: IValueDidChange) => void, fireImmediately?: boolean): Lambda + get(): T; + set(value: T): void; + intercept(handler: IInterceptor>): Lambda; + observe(listener: (change: IValueDidChange) => void, fireImmediately?: boolean): Lambda; } export interface IEnhancer { - (newValue: T, oldValue: T | void, name: string): T + (newValue: T, oldValue: T | void, name: string): T; } export interface IObservableFactory { // observable overloads - (target: Object, key: string, baseDescriptor?: PropertyDescriptor): any, - (value: Array): IObservableArray, - (value: null | void): IObservableValue, - (value: null | void): IObservableValue, - (value: IMap): ObservableMap, - (value: T): T + (target: Object, key: string, baseDescriptor?: PropertyDescriptor<*>): any; + (value: Array): IObservableArray; + (value: null | void): IObservableValue; + (value: null | void): IObservableValue; + (value: IMap): ObservableMap; + (value: T): T; } export type IObservableDecorator = { - (target: Object, property: string, descriptor?: PropertyDescriptor): void, + (target: Object, property: string, descriptor?: PropertyDescriptor<*>): void, enhancer: IEnhancer } @@ -245,58 +252,66 @@ export type CreateObservableOptions = { } declare export class IObservableFactories { - box(value?: T, options?: CreateObservableOptions): IObservableValue, - array(initialValues?: T[], options?: CreateObservableOptions): IObservableArray, + box(value?: T, options?: CreateObservableOptions): IObservableValue; + array(initialValues?: T[], options?: CreateObservableOptions): IObservableArray; map( initialValues?: IObservableMapInitialValues, options?: CreateObservableOptions - ): ObservableMap, - object(props: T, options?: CreateObservableOptions): T & IObservableObject, - ref(target: Object, property?: string, descriptor?: PropertyDescriptor): IObservableDecorator, + ): ObservableMap; + object(props: T, options?: CreateObservableOptions): T & IObservableObject; + ref( + target: Object, + property?: string, + descriptor?: PropertyDescriptor<*> + ): IObservableDecorator; shallow( target: Object, property?: string, - descriptor?: PropertyDescriptor - ): IObservableDecorator, - deep(target: Object, property?: string, descriptor?: PropertyDescriptor): IObservableDecorator + descriptor?: PropertyDescriptor<*> + ): IObservableDecorator; + deep( + target: Object, + property?: string, + descriptor?: PropertyDescriptor<*> + ): IObservableDecorator; } export interface Lambda { - (): void, - name?: string + (): void; + name?: string; } export interface IActionFactory { - (a1: any, a2?: any, a3?: any, a4?: any, a6?: any): any, - bound(target: Object, propertyKey: string, descriptor?: PropertyDescriptor): void + (a1: any, a2?: any, a3?: any, a4?: any, a6?: any): any; + bound(target: Object, propertyKey: string, descriptor?: PropertyDescriptor<*>): void; } declare export class ObservableMap { - constructor(initialData?: IMapEntries | KeyValueMap, valueModeFunc?: Function): this, - has(key: K): boolean, - set(key: K, value: V): void, - delete(key: K): boolean, - get(key: K): V, - keys(): Iterator, - values(): Iterator, - entries(): IMapEntries & Iterator>, - forEach(callback: (value: V, key: K, object: KeyValueMap) => void, thisArg?: any): void, - merge(other: ObservableMap | KeyValueMap): ObservableMap, - clear(): void, - replace(other: ObservableMap | KeyValueMap): ObservableMap, - size: number, - toJS(): Map, - toPOJO(): KeyValueMap, - toJSON(): KeyValueMap, - toString(): string, - observe(listener: (changes: IMapChange) => void, fireImmediately?: boolean): Lambda, - intercept(handler: IInterceptor>): Lambda + constructor(initialData?: IMapEntries | KeyValueMap, valueModeFunc?: Function): this; + has(key: K): boolean; + set(key: K, value: V): void; + delete(key: K): boolean; + get(key: K): V; + keys(): Iterator; + values(): Iterator; + entries(): IMapEntries & Iterator>; + forEach(callback: (value: V, key: K, object: KeyValueMap) => void, thisArg?: any): void; + merge(other: ObservableMap | KeyValueMap): ObservableMap; + clear(): void; + replace(other: ObservableMap | KeyValueMap): ObservableMap; + size: number; + toJS(): Map; + toPOJO(): KeyValueMap; + toJSON(): KeyValueMap; + toString(): string; + observe(listener: (changes: IMapChange) => void, fireImmediately?: boolean): Lambda; + intercept(handler: IInterceptor>): Lambda; } declare export function action( targetOrName: any, propertyKeyOrFuc?: any, - descriptor?: PropertyDescriptor + descriptor?: PropertyDescriptor<*> ): any declare export function action(name: string, func: T): T declare export function action(func: T): T @@ -315,9 +330,9 @@ declare export function reaction( ): () => mixed export interface IWhenOptions { - name?: string, - timeout?: number, - onError?: (error: any) => void + name?: string; + timeout?: number; + onError?: (error: any) => void; } declare export function when( @@ -330,7 +345,7 @@ declare export function when(cond: () => boolean, options?: IWhenOptions): Promi declare export function computed( target: any, key?: string, - baseDescriptor?: PropertyDescriptor + baseDescriptor?: PropertyDescriptor<*> ): any declare export function extendObservable( @@ -402,8 +417,8 @@ declare export function observe( ): Lambda export interface ToJSOptions { - detectCycles?: boolean, - exportMapsAsObjects?: boolean + detectCycles?: boolean; + exportMapsAsObjects?: boolean; } declare export function toJS(source: T, options?: ToJSOptions): T @@ -421,18 +436,18 @@ declare export function isObservableObject(thing: T): boolean declare export function isArrayLike(x: any): boolean declare export class Reaction { - name: string, - isDisposed: boolean, - constructor(name: string, onInvalidate: () => void): this, - schedule(): void, - isScheduled(): boolean, - track(fn: () => void): void, - dispose(): void, + name: string; + isDisposed: boolean; + constructor(name: string, onInvalidate: () => void): this; + schedule(): void; + isScheduled(): boolean; + track(fn: () => void): void; + dispose(): void; getDisposer(): Lambda & { $mosbservable: Reaction - }, - toString(): string, - trace(enterBreakPoint?: boolean): void + }; + toString(): string; + trace(enterBreakPoint?: boolean): void; } declare export function createAtom(