UNPKG

973 Btext/coffeescriptView Raw
1module.exports = class WebpackHotLoader
2
3 ###
4 IN:
5 _module should be the CommonJS 'module'
6 modulePostLoadAction: (moduleState) -> ignored internally, returned from @runHot
7
8 OUT: modulePostLoadAction moduleState
9
10 EFFECT:
11 modulePostLoadAction is run every time the module is loaded.
12
13 Initially, moduleState is {}.
14
15 moduleState is the same object every load:
16 modulePostLoadAction can modify moduleState and it will persist through every reload.
17
18 modulePostLoadAction is responsible for any and all
19 update actions required due to the module load.
20
21 NOTE:
22 If _module is not hot, modulePostLoadAction will be invoked once with an empty {}.
23 ###
24 @runHot: (_module, modulePostLoadAction) ->
25 return modulePostLoadAction {} unless _module?.hot
26
27 {moduleState} = _module.hot.data ||= moduleState: {}
28
29 _module.hot.accept()
30 _module.hot.dispose (data)-> data.moduleState = moduleState
31
32 modulePostLoadAction moduleState
33