@@ -12,13 +12,25 @@ const devtoolsBridge: {
12
12
viteRpc : {
13
13
enabled : boolean
14
14
api : ReturnType < typeof setupViteRPCClient >
15
+ on : {
16
+ moduleUpdated : ( fn : Function ) => void
17
+ }
18
+ off : {
19
+ moduleUpdated : ( ) => void
20
+ }
15
21
}
16
22
rpc : InstanceType < typeof BridgeRpcCore >
17
23
} = {
18
24
value : null ! ,
19
25
viteRpc : {
20
26
enabled : false ,
21
27
api : null ! ,
28
+ on : {
29
+ moduleUpdated ( ) { } ,
30
+ } ,
31
+ off : {
32
+ moduleUpdated ( ) { } ,
33
+ } ,
22
34
} ,
23
35
rpc : null ! ,
24
36
}
@@ -28,13 +40,30 @@ export interface BridgeRpcOptions {
28
40
bridge : BridgeInstanceType
29
41
}
30
42
export function registerBridgeRpc ( options : BridgeRpcOptions ) {
31
- const rpc = setupViteRPCClient ( options . viteRPCContext )
32
43
devtoolsBridge . value = options . bridge
33
44
devtoolsBridge . rpc = new BridgeRpcCore ( options . bridge )
45
+
46
+ const moduleUpdatedFn : Function [ ] = [ ]
47
+ const rpc = setupViteRPCClient ( options . viteRPCContext , {
48
+ moduleUpdated : ( ) => {
49
+ moduleUpdatedFn . forEach ( fn => fn ( ) )
50
+ } ,
51
+ } )
52
+
34
53
if ( rpc ) {
35
54
devtoolsBridge . viteRpc = {
36
55
enabled : true ,
37
56
api : rpc ,
57
+ on : {
58
+ moduleUpdated ( fn : Function ) {
59
+ moduleUpdatedFn . push ( fn )
60
+ } ,
61
+ } ,
62
+ off : {
63
+ moduleUpdated ( ) {
64
+ moduleUpdatedFn . length = 0
65
+ } ,
66
+ } ,
38
67
}
39
68
}
40
69
}
@@ -176,4 +205,10 @@ export class BridgeRpc {
176
205
static getGraph ( ) {
177
206
return devtoolsBridge . viteRpc ! . api ! . getGraph ( )
178
207
}
208
+
209
+ // graph module udpated
210
+ static graphModuleUpdated ( fn : Function ) {
211
+ devtoolsBridge . viteRpc ! . on . moduleUpdated ( fn )
212
+ return ( ) => devtoolsBridge . viteRpc ! . off . moduleUpdated ( )
213
+ }
179
214
}
0 commit comments