2013-06-19 19:49:57 +08:00
|
|
|
/*
|
|
|
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
|
|
Author Tobias Koppers @sokra
|
|
|
|
*/
|
2017-01-13 04:38:38 +08:00
|
|
|
"use strict";
|
2013-06-19 19:49:57 +08:00
|
|
|
|
2017-01-13 04:38:38 +08:00
|
|
|
const Template = require("./Template");
|
2017-04-21 16:05:56 +08:00
|
|
|
const Chunk = require("./Chunk");
|
2017-11-29 01:43:01 +08:00
|
|
|
const SyncWaterfallHook = require("tapable").SyncWaterfallHook;
|
|
|
|
const SyncHook = require("tapable").SyncHook;
|
2013-06-19 19:49:57 +08:00
|
|
|
|
2017-01-13 04:38:38 +08:00
|
|
|
module.exports = class HotUpdateChunkTemplate extends Template {
|
|
|
|
constructor(outputOptions) {
|
|
|
|
super(outputOptions);
|
2017-11-29 01:43:01 +08:00
|
|
|
this.hooks = {
|
|
|
|
modules: new SyncWaterfallHook(["source", "modules", "removedModules", "moduleTemplate", "dependencyTemplates"]),
|
|
|
|
render: new SyncWaterfallHook(["source", "modules", "removedModules", "hash", "id", "moduleTemplate", "dependencyTemplates"]),
|
|
|
|
hash: new SyncHook(["hash"]),
|
|
|
|
};
|
2017-01-13 04:38:38 +08:00
|
|
|
}
|
2013-06-19 19:49:57 +08:00
|
|
|
|
2017-01-13 04:38:38 +08:00
|
|
|
render(id, modules, removedModules, hash, moduleTemplate, dependencyTemplates) {
|
2017-04-21 16:05:56 +08:00
|
|
|
const hotUpdateChunk = new Chunk();
|
|
|
|
hotUpdateChunk.id = id;
|
|
|
|
hotUpdateChunk.setModules(modules);
|
|
|
|
hotUpdateChunk.removedModules = removedModules;
|
2017-10-30 20:56:57 +08:00
|
|
|
const modulesSource = this.renderChunkModules(hotUpdateChunk, () => true, moduleTemplate, dependencyTemplates);
|
2017-11-29 01:43:01 +08:00
|
|
|
const core = this.hooks.modules.call(modulesSource, modules, removedModules, moduleTemplate, dependencyTemplates);
|
|
|
|
const source = this.hooks.render.call(core, modules, removedModules, hash, id, moduleTemplate, dependencyTemplates);
|
2017-01-13 04:38:38 +08:00
|
|
|
return source;
|
|
|
|
}
|
2016-05-20 13:39:36 +08:00
|
|
|
|
2017-01-13 04:38:38 +08:00
|
|
|
updateHash(hash) {
|
|
|
|
hash.update("HotUpdateChunkTemplate");
|
|
|
|
hash.update("1");
|
2017-11-29 01:43:01 +08:00
|
|
|
this.hooks.hash.call(hash);
|
2017-01-13 04:38:38 +08:00
|
|
|
}
|
2015-07-08 20:39:02 +08:00
|
|
|
};
|