176 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
						|
	Author Tobias Koppers @sokra
 | 
						|
*/
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
const util = require("util");
 | 
						|
const memoize = require("./util/memoize");
 | 
						|
 | 
						|
/** @typedef {import("tapable").Tap} Tap */
 | 
						|
/** @typedef {import("webpack-sources").Source} Source */
 | 
						|
/** @typedef {import("./Chunk")} Chunk */
 | 
						|
/** @typedef {import("./ChunkGraph")} ChunkGraph */
 | 
						|
/** @typedef {import("./Compilation")} Compilation */
 | 
						|
/** @typedef {import("./DependencyTemplates")} DependencyTemplates */
 | 
						|
/** @typedef {import("./Module")} Module */
 | 
						|
/** @typedef {import("./ModuleGraph")} ModuleGraph */
 | 
						|
/** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
 | 
						|
/** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
 | 
						|
/** @typedef {import("./javascript/JavascriptModulesPlugin").ModuleRenderContext}  ModuleRenderContext */
 | 
						|
/** @typedef {import("./util/Hash")} Hash */
 | 
						|
 | 
						|
/**
 | 
						|
 * @template T
 | 
						|
 * @typedef {import("tapable").IfSet<T>} IfSet
 | 
						|
 */
 | 
						|
 | 
						|
const getJavascriptModulesPlugin = memoize(() =>
 | 
						|
	require("./javascript/JavascriptModulesPlugin")
 | 
						|
);
 | 
						|
 | 
						|
// TODO webpack 6: remove this class
 | 
						|
class ModuleTemplate {
 | 
						|
	/**
 | 
						|
	 * @param {RuntimeTemplate} runtimeTemplate the runtime template
 | 
						|
	 * @param {Compilation} compilation the compilation
 | 
						|
	 */
 | 
						|
	constructor(runtimeTemplate, compilation) {
 | 
						|
		this._runtimeTemplate = runtimeTemplate;
 | 
						|
		this.type = "javascript";
 | 
						|
		this.hooks = Object.freeze({
 | 
						|
			content: {
 | 
						|
				tap: util.deprecate(
 | 
						|
					/**
 | 
						|
					 * @template AdditionalOptions
 | 
						|
					 * @param {string | Tap & IfSet<AdditionalOptions>} options options
 | 
						|
					 * @param {(source: Source, module: Module, moduleRenderContext: ModuleRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
 | 
						|
					 */
 | 
						|
					(options, fn) => {
 | 
						|
						getJavascriptModulesPlugin()
 | 
						|
							.getCompilationHooks(compilation)
 | 
						|
							.renderModuleContent.tap(
 | 
						|
								options,
 | 
						|
								(source, module, renderContext) =>
 | 
						|
									fn(
 | 
						|
										source,
 | 
						|
										module,
 | 
						|
										renderContext,
 | 
						|
										renderContext.dependencyTemplates
 | 
						|
									)
 | 
						|
							);
 | 
						|
					},
 | 
						|
					"ModuleTemplate.hooks.content is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderModuleContent instead)",
 | 
						|
					"DEP_MODULE_TEMPLATE_CONTENT"
 | 
						|
				)
 | 
						|
			},
 | 
						|
			module: {
 | 
						|
				tap: util.deprecate(
 | 
						|
					/**
 | 
						|
					 * @template AdditionalOptions
 | 
						|
					 * @param {string | Tap & IfSet<AdditionalOptions>} options options
 | 
						|
					 * @param {(source: Source, module: Module, moduleRenderContext: ModuleRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
 | 
						|
					 */
 | 
						|
					(options, fn) => {
 | 
						|
						getJavascriptModulesPlugin()
 | 
						|
							.getCompilationHooks(compilation)
 | 
						|
							.renderModuleContent.tap(
 | 
						|
								options,
 | 
						|
								(source, module, renderContext) =>
 | 
						|
									fn(
 | 
						|
										source,
 | 
						|
										module,
 | 
						|
										renderContext,
 | 
						|
										renderContext.dependencyTemplates
 | 
						|
									)
 | 
						|
							);
 | 
						|
					},
 | 
						|
					"ModuleTemplate.hooks.module is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderModuleContent instead)",
 | 
						|
					"DEP_MODULE_TEMPLATE_MODULE"
 | 
						|
				)
 | 
						|
			},
 | 
						|
			render: {
 | 
						|
				tap: util.deprecate(
 | 
						|
					/**
 | 
						|
					 * @template AdditionalOptions
 | 
						|
					 * @param {string | Tap & IfSet<AdditionalOptions>} options options
 | 
						|
					 * @param {(source: Source, module: Module, chunkRenderContext: ChunkRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
 | 
						|
					 */
 | 
						|
					(options, fn) => {
 | 
						|
						getJavascriptModulesPlugin()
 | 
						|
							.getCompilationHooks(compilation)
 | 
						|
							.renderModuleContainer.tap(
 | 
						|
								options,
 | 
						|
								(source, module, renderContext) =>
 | 
						|
									fn(
 | 
						|
										source,
 | 
						|
										module,
 | 
						|
										renderContext,
 | 
						|
										renderContext.dependencyTemplates
 | 
						|
									)
 | 
						|
							);
 | 
						|
					},
 | 
						|
					"ModuleTemplate.hooks.render is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderModuleContainer instead)",
 | 
						|
					"DEP_MODULE_TEMPLATE_RENDER"
 | 
						|
				)
 | 
						|
			},
 | 
						|
			package: {
 | 
						|
				tap: util.deprecate(
 | 
						|
					/**
 | 
						|
					 * @template AdditionalOptions
 | 
						|
					 * @param {string | Tap & IfSet<AdditionalOptions>} options options
 | 
						|
					 * @param {(source: Source, module: Module, chunkRenderContext: ChunkRenderContext, dependencyTemplates: DependencyTemplates) => Source} fn fn
 | 
						|
					 */
 | 
						|
					(options, fn) => {
 | 
						|
						getJavascriptModulesPlugin()
 | 
						|
							.getCompilationHooks(compilation)
 | 
						|
							.renderModulePackage.tap(
 | 
						|
								options,
 | 
						|
								(source, module, renderContext) =>
 | 
						|
									fn(
 | 
						|
										source,
 | 
						|
										module,
 | 
						|
										renderContext,
 | 
						|
										renderContext.dependencyTemplates
 | 
						|
									)
 | 
						|
							);
 | 
						|
					},
 | 
						|
					"ModuleTemplate.hooks.package is deprecated (use JavascriptModulesPlugin.getCompilationHooks().renderModulePackage instead)",
 | 
						|
					"DEP_MODULE_TEMPLATE_PACKAGE"
 | 
						|
				)
 | 
						|
			},
 | 
						|
			hash: {
 | 
						|
				tap: util.deprecate(
 | 
						|
					/**
 | 
						|
					 * @template AdditionalOptions
 | 
						|
					 * @param {string | Tap & IfSet<AdditionalOptions>} options options
 | 
						|
					 * @param {(hash: Hash) => void} fn fn
 | 
						|
					 */
 | 
						|
					(options, fn) => {
 | 
						|
						compilation.hooks.fullHash.tap(options, fn);
 | 
						|
					},
 | 
						|
					"ModuleTemplate.hooks.hash is deprecated (use Compilation.hooks.fullHash instead)",
 | 
						|
					"DEP_MODULE_TEMPLATE_HASH"
 | 
						|
				)
 | 
						|
			}
 | 
						|
		});
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
Object.defineProperty(ModuleTemplate.prototype, "runtimeTemplate", {
 | 
						|
	get: util.deprecate(
 | 
						|
		/**
 | 
						|
		 * @this {ModuleTemplate}
 | 
						|
		 * @returns {RuntimeTemplate} output options
 | 
						|
		 */
 | 
						|
		function runtimeTemplate() {
 | 
						|
			return this._runtimeTemplate;
 | 
						|
		},
 | 
						|
		"ModuleTemplate.runtimeTemplate is deprecated (use Compilation.runtimeTemplate instead)",
 | 
						|
		"DEP_WEBPACK_CHUNK_TEMPLATE_OUTPUT_OPTIONS"
 | 
						|
	)
 | 
						|
});
 | 
						|
 | 
						|
module.exports = ModuleTemplate;
 |