| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const { Tapable, SyncWaterfallHook, SyncHook } = require("tapable");/** @typedef {import("./ModuleTemplate")} ModuleTemplate *//** @typedef {import("./Chunk")} Chunk *//** @typedef {import("./Module")} Module} *//** @typedef {import("./Dependency").DependencyTemplate} DependencyTemplate} *//** @typedef {import("./util/createHash").Hash} Hash} *//** * @typedef {Object} RenderManifestOptions * @property {Chunk} chunk the chunk used to render * @property {string} hash * @property {string} fullHash * @property {TODO} outputOptions * @property {{javascript: ModuleTemplate, webassembly: ModuleTemplate}} moduleTemplates * @property {Map<TODO, TODO>} dependencyTemplates */module.exports = class ChunkTemplate extends Tapable {	constructor(outputOptions) {		super();		this.outputOptions = outputOptions || {};		this.hooks = {			/** @type {SyncWaterfallHook<TODO[], RenderManifestOptions>} */			renderManifest: new SyncWaterfallHook(["result", "options"]),			modules: new SyncWaterfallHook([				"source",				"chunk",				"moduleTemplate",				"dependencyTemplates"			]),			render: new SyncWaterfallHook([				"source",				"chunk",				"moduleTemplate",				"dependencyTemplates"			]),			renderWithEntry: new SyncWaterfallHook(["source", "chunk"]),			hash: new SyncHook(["hash"]),			hashForChunk: new SyncHook(["hash", "chunk"])		};	}	/**	 *	 * @param {RenderManifestOptions} options render manifest options	 * @returns {TODO[]} returns render manifest	 */	getRenderManifest(options) {		const result = [];		this.hooks.renderManifest.call(result, options);		return result;	}	/**	 * Updates hash with information from this template	 * @param {Hash} hash the hash to update	 * @returns {void}	 */	updateHash(hash) {		hash.update("ChunkTemplate");		hash.update("2");		this.hooks.hash.call(hash);	}	/**	 * TODO webpack 5: remove moduleTemplate and dependencyTemplates	 * Updates hash with chunk-specific information from this template	 * @param {Hash} hash the hash to update	 * @param {Chunk} chunk the chunk	 * @param {ModuleTemplate} moduleTemplate ModuleTemplate instance for render	 * @param {Map<Function, DependencyTemplate>} dependencyTemplates dependency templates	 * @returns {void}	 */	updateHashForChunk(hash, chunk, moduleTemplate, dependencyTemplates) {		this.updateHash(hash);		this.hooks.hashForChunk.call(hash, chunk);	}};
 |