Skip to content

Commit bdfd5d3

Browse files
committed
implemented mobxjs#16: getDependencyTree, getObserverTree, trackTransitions
1 parent c15869a commit bdfd5d3

23 files changed

Lines changed: 1979 additions & 1022 deletions

dist/mobservable.d.ts

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ interface _IMobservableStatic {
1515

1616
observable(target: Object, key: string); // decorator / annotation
1717

18-
sideEffect(func: Mobservable.Lambda,scope?): Mobservable.Lambda;
18+
sideEffect(func: Mobservable.Lambda, options?: Mobservable.IMakeReactiveOptions): Mobservable.Lambda;
1919

20-
observeUntilInvalid<T>(func: ()=>T, onInvalidate: Mobservable.Lambda): [T,Mobservable.Lambda];
20+
observeUntilInvalid<T>(func: ()=>T, onInvalidate: Mobservable.Lambda, context?: Mobservable.IContextInfo): [T,Mobservable.Lambda];
2121

2222
transaction<T>(action: ()=>T): T;
2323

@@ -29,6 +29,14 @@ interface _IMobservableStatic {
2929
reactiveMixin: Object;
3030

3131
debugLevel: number;
32+
33+
extras: {
34+
getDependencyTree(thing:any, property?:string): Mobservable.IDependencyTree;
35+
36+
getObserverTree(thing:any, property?:string): Mobservable.IObserverTree;
37+
38+
trackTransitions(extensive?:boolean, onReport?:(lines:Mobservable.ITransitionEvent) => void) : Mobservable.Lambda;
39+
}
3240
}
3341

3442
interface IMakeReactive {
@@ -45,12 +53,22 @@ declare module Mobservable {
4553
interface IMakeReactiveOptions {
4654
as?: string /* "auto" | "reference" | TODO: see #8 "structure" */
4755
scope?: Object,
56+
context?: Object,
4857
recurse?: boolean;
58+
name?: string;
4959
// protected: boolean TODO: see #9
5060
}
5161

62+
export interface IContextInfoStruct {
63+
object: Object;
64+
name: string;
65+
}
66+
67+
export type IContextInfo = IContextInfoStruct | string;
68+
5269
interface Lambda {
5370
(): void;
71+
name?: string;
5472
}
5573

5674
interface IObservable {
@@ -88,6 +106,30 @@ declare module Mobservable {
88106
removed: T[];
89107
addedCount: number;
90108
}
109+
110+
interface IDependencyTree {
111+
id: number;
112+
name: string;
113+
context: any;
114+
dependencies?: IDependencyTree[];
115+
}
116+
117+
interface IObserverTree {
118+
id: number;
119+
name: string;
120+
context: any;
121+
observers?: IObserverTree[];
122+
listeners?: number; // amount of functions manually attached using an .observe method
123+
}
124+
125+
interface ITransitionEvent {
126+
id: number;
127+
name: string;
128+
context: Object;
129+
state: string;
130+
changed: boolean;
131+
newValue: string;
132+
}
91133
}
92134

93135
declare module "mobservable" {

0 commit comments

Comments
 (0)