| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const { RawSource } = require("webpack-sources");const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");const cache = new WeakMap();class EvalDevToolModuleTemplatePlugin {	constructor(options) {		this.sourceUrlComment = options.sourceUrlComment || "\n//# sourceURL=[url]";		this.moduleFilenameTemplate =			options.moduleFilenameTemplate ||			"webpack://[namespace]/[resourcePath]?[loaders]";		this.namespace = options.namespace || "";	}	apply(moduleTemplate) {		moduleTemplate.hooks.module.tap(			"EvalDevToolModuleTemplatePlugin",			(source, module) => {				const cacheEntry = cache.get(source);				if (cacheEntry !== undefined) return cacheEntry;				const content = source.source();				const str = ModuleFilenameHelpers.createFilename(					module,					{						moduleFilenameTemplate: this.moduleFilenameTemplate,						namespace: this.namespace					},					moduleTemplate.runtimeTemplate.requestShortener				);				const footer =					"\n" +					this.sourceUrlComment.replace(						/\[url\]/g,						encodeURI(str)							.replace(/%2F/g, "/")							.replace(/%20/g, "_")							.replace(/%5E/g, "^")							.replace(/%5C/g, "\\")							.replace(/^\//, "")					);				const result = new RawSource(					`eval(${JSON.stringify(content + footer)});`				);				cache.set(source, result);				return result;			}		);		moduleTemplate.hooks.hash.tap("EvalDevToolModuleTemplatePlugin", hash => {			hash.update("EvalDevToolModuleTemplatePlugin");			hash.update("2");		});	}}module.exports = EvalDevToolModuleTemplatePlugin;
 |