|
|
- /*
- 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);
- }
- };
|