| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- /*
- 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("./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);
- }
- /**
- * Updates hash with chunk-specific information from this template
- * @param {Hash} hash the hash to update
- * @param {Chunk} chunk the chunk
- * @returns {void}
- */
- updateHashForChunk(hash, chunk) {
- this.updateHash(hash);
- this.hooks.hashForChunk.call(hash, chunk);
- }
- };
|