diff options
Diffstat (limited to 'node_modules/webpack/lib/ChunkTemplate.js')
-rw-r--r-- | node_modules/webpack/lib/ChunkTemplate.js | 123 |
1 files changed, 87 insertions, 36 deletions
diff --git a/node_modules/webpack/lib/ChunkTemplate.js b/node_modules/webpack/lib/ChunkTemplate.js index 6bcb8a883..65861af49 100644 --- a/node_modules/webpack/lib/ChunkTemplate.js +++ b/node_modules/webpack/lib/ChunkTemplate.js @@ -1,36 +1,87 @@ -/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-"use strict";
-
-const ConcatSource = require("webpack-sources").ConcatSource;
-const Template = require("./Template");
-
-module.exports = class ChunkTemplate extends Template {
- constructor(outputOptions) {
- super(outputOptions);
- }
-
- render(chunk, moduleTemplate, dependencyTemplates) {
- const moduleSources = this.renderChunkModules(chunk, moduleTemplate, dependencyTemplates);
- const core = this.applyPluginsWaterfall("modules", moduleSources, chunk, moduleTemplate, dependencyTemplates);
- let source = this.applyPluginsWaterfall("render", core, chunk, moduleTemplate, dependencyTemplates);
- if(chunk.hasEntryModule()) {
- source = this.applyPluginsWaterfall("render-with-entry", source, chunk);
- }
- chunk.rendered = true;
- return new ConcatSource(source, ";");
- }
-
- updateHash(hash) {
- hash.update("ChunkTemplate");
- hash.update("2");
- this.applyPlugins("hash", hash);
- }
-
- updateHashForChunk(hash, chunk) {
- this.updateHash(hash);
- this.applyPlugins("hash-for-chunk", hash, chunk);
- }
-};
+/* + 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); + } +}; |