保誠-保戶業務員媒合平台
HelenHuang
2022-06-09 9bdb95c9e34cef640534e5e5a1e2225a80442000
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
const pluginCompat = require('./util/plugin-compat');
 
class TransformModuleAssetsPlugin {
  apply(compiler) {
    let store;
    let fetch;
 
    pluginCompat.tap(
      compiler,
      '_hardSourceMethods',
      'TransformModuleAssetsPlugin copy methods',
      methods => {
        store = methods.store;
        fetch = methods.fetch;
        // freeze = methods.freeze;
        // thaw = methods.thaw;
        // mapFreeze = methods.mapFreeze;
        // mapThaw = methods.mapThaw;
      },
    );
 
    pluginCompat.tap(
      compiler,
      '_hardSourceFreezeModuleAssets',
      'TransformModuleAssetsPlugin freeze',
      (frozen, assets, extra) => {
        if (!frozen && assets) {
          Object.keys(assets).forEach(key => {
            store('Asset', key, assets[key], extra);
          });
          frozen = Object.keys(assets);
        }
 
        return frozen;
      },
    );
 
    pluginCompat.tap(
      compiler,
      '_hardSourceThawModuleAssets',
      'TransformModuleAssetsPlugin thaw',
      (assets, frozen, extra) => {
        if (!assets && frozen) {
          assets = {};
          frozen.forEach(key => {
            assets[key] = fetch('Asset', key, extra);
          });
        }
 
        return assets;
      },
    );
  }
}
 
module.exports = TransformModuleAssetsPlugin;