1 | module.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 |
|