forked from cerebral/overmind
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.ts
More file actions
135 lines (124 loc) · 3.22 KB
/
types.ts
File metadata and controls
135 lines (124 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
export interface IProxifier<T extends object> {
proxify(state: T, path: string): T
trackPath(path: string): void
}
export interface IMutation {
method: string
delimiter: string
path: string
args: any[]
hasChangedValue: boolean
}
export interface IMutationCallback {
(mutation: IMutation, paths: Set<string>, flushId: number): void
}
export interface IMutationTree<T extends object> {
addMutation(mutation: IMutation, objectChangePath?: string): void
onMutation(callback: IMutationCallback): void
canTrack(): boolean
canMutate(): boolean
getMutations(): IMutation[]
getObjectChanges(): Set<string>
trackPaths(): () => Set<string>
flush(
async?: boolean
): {
mutations: IMutation[]
flushId: number
}
dispose(): IMutationTree<T>
objectChanges: Set<string>
master: IProxyStateTree<T>
proxifier: IProxifier<T>
mutations: IMutation[]
state: T
trackPathListeners: Array<(path: string) => void>
}
export interface ITrackCallback {
(
mutations: IMutation[],
paths: Array<string>,
flushId: number,
isAsync: boolean
): void
}
export interface ITrackScopedCallback<T extends object> {
(tree: ITrackStateTree<T>): any
}
export interface ITrackStateTree<T extends object> {
addTrackingPath(path: string): void
track(cb?: ITrackCallback): ITrackStateTree<T>
stopTracking(): void
trackScope(scope: ITrackScopedCallback<T>, callback?: ITrackCallback): any
trackPaths(): () => Set<string>
canTrack(): boolean
canMutate(): boolean
dispose(): ITrackStateTree<T>
clearTracking(): void
master: IProxyStateTree<T>
shouldTrack: boolean
proxifier: IProxifier<T>
state: T
pathDependencies: Set<string>
callback: ITrackCallback
trackPathListeners: Array<(path: string) => void>
}
export interface IOptions {
delimiter?: string
devmode?: boolean
ssr?: boolean
onSetFunction?: (...args: any[]) => any
onGetFunction?: (...args: any[]) => any
onGetter?: Function
}
export interface IFlushCallback {
(
mutations: IMutation[],
paths: string[],
flushId: number,
isAsync: boolean
): void
}
export type TTree = IMutationTree<any> | ITrackStateTree<any>
export interface IRemoveProxyCallback {
(path: string): void
}
export interface IProxyStateTree<T extends object> {
addPathDependency(path: string, callback: ITrackCallback): void
removePathDependency(path: string, callback: ITrackCallback): void
getTrackStateTree(): ITrackStateTree<T>
getMutationTree(): IMutationTree<T>
changeTrackStateTree(tree: ITrackStateTree<T>): void
disposeTree(proxy: TTree): void
onMutation(cb: IMutationCallback): void
flush(
tree: IMutationTree<T>,
isAsync: boolean
): {
mutations: IMutation[]
flushId: number
}
flush(
trees: IMutationTree<T>[],
isAsync: boolean
): {
mutations: IMutation[]
flushId: number
}
onFlush(cb: IFlushCallback): void
rescope(value: any, tree: TTree): any
sourceState: T
state: T
options: IOptions
pathDependencies: {
[path: string]: Set<ITrackCallback>
}
master: IProxyStateTree<T>
proxifier: IProxifier<T>
currentTree: TTree
previousTree: TTree
mutationTree: IMutationTree<T>
mutationCallbacks: IMutationCallback[]
flushCallbacks: IFlushCallback[]
currentFlushId: number
}