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
| /*
| MIT License http://www.opensource.org/licenses/mit-license.php
| Author Tobias Koppers @sokra
| */
| "use strict";
|
| const Template = require("./Template");
| const HotUpdateChunk = require("./HotUpdateChunk");
| const { Tapable, SyncWaterfallHook, SyncHook } = require("tapable");
|
| module.exports = class HotUpdateChunkTemplate extends Tapable {
| constructor(outputOptions) {
| super();
| this.outputOptions = outputOptions || {};
| this.hooks = {
| modules: new SyncWaterfallHook([
| "source",
| "modules",
| "removedModules",
| "moduleTemplate",
| "dependencyTemplates"
| ]),
| render: new SyncWaterfallHook([
| "source",
| "modules",
| "removedModules",
| "hash",
| "id",
| "moduleTemplate",
| "dependencyTemplates"
| ]),
| hash: new SyncHook(["hash"])
| };
| }
|
| render(
| id,
| modules,
| removedModules,
| hash,
| moduleTemplate,
| dependencyTemplates
| ) {
| const hotUpdateChunk = new HotUpdateChunk();
| hotUpdateChunk.id = id;
| hotUpdateChunk.setModules(modules);
| hotUpdateChunk.removedModules = removedModules;
| const modulesSource = Template.renderChunkModules(
| hotUpdateChunk,
| m => typeof m.source === "function",
| moduleTemplate,
| dependencyTemplates
| );
| const core = this.hooks.modules.call(
| modulesSource,
| modules,
| removedModules,
| moduleTemplate,
| dependencyTemplates
| );
| const source = this.hooks.render.call(
| core,
| modules,
| removedModules,
| hash,
| id,
| moduleTemplate,
| dependencyTemplates
| );
| return source;
| }
|
| updateHash(hash) {
| hash.update("HotUpdateChunkTemplate");
| hash.update("1");
| this.hooks.hash.call(hash);
| }
| };
|
|