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