| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";/** @typedef {import("./NormalModule")} NormalModule *//** @typedef {import("./RuntimeTemplate")} RuntimeTemplate *//** @typedef {import("webpack-sources").Source} Source *//** @typedef {import("./Dependency").DependencyTemplate} DependencyTemplate *//** * */class Generator {	static byType(map) {		return new ByTypeGenerator(map);	}	/**	 * @abstract	 * @param {NormalModule} module module for which the code should be generated	 * @param {Map<Function, DependencyTemplate>} dependencyTemplates mapping from dependencies to templates	 * @param {RuntimeTemplate} runtimeTemplate the runtime template	 * @param {string} type which kind of code should be generated	 * @returns {Source} generated code	 */	generate(module, dependencyTemplates, runtimeTemplate, type) {		throw new Error("Generator.generate: must be overridden");	}}class ByTypeGenerator extends Generator {	constructor(map) {		super();		this.map = map;	}	/**	 * @param {NormalModule} module module for which the code should be generated	 * @param {Map<Function, DependencyTemplate>} dependencyTemplates mapping from dependencies to templates	 * @param {RuntimeTemplate} runtimeTemplate the runtime template	 * @param {string} type which kind of code should be generated	 * @returns {Source} generated code	 */	generate(module, dependencyTemplates, runtimeTemplate, type) {		const generator = this.map[type];		if (!generator) {			throw new Error(`Generator.byType: no generator specified for ${type}`);		}		return generator.generate(			module,			dependencyTemplates,			runtimeTemplate,			type		);	}}module.exports = Generator;
 |