| 
									
										
										
										
											2014-06-03 14:45:26 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2017-01-24 20:19:36 +08:00
										 |  |  | "use strict"; | 
					
						
							| 
									
										
										
										
											2014-06-03 14:45:26 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-24 20:19:36 +08:00
										 |  |  | const RawSource = require("webpack-sources").RawSource; | 
					
						
							|  |  |  | const ModuleFilenameHelpers = require("./ModuleFilenameHelpers"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class EvalDevToolModuleTemplatePlugin { | 
					
						
							|  |  |  | 	constructor(sourceUrlComment, moduleFilenameTemplate) { | 
					
						
							|  |  |  | 		this.sourceUrlComment = sourceUrlComment || "\n//# sourceURL=[url]"; | 
					
						
							|  |  |  | 		this.moduleFilenameTemplate = moduleFilenameTemplate || "webpack:///[resourcePath]?[loaders]"; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	apply(moduleTemplate) { | 
					
						
							| 
									
										
										
										
											2017-02-08 16:15:28 +08:00
										 |  |  | 		moduleTemplate.plugin("module", (source, module) => { | 
					
						
							| 
									
										
										
										
											2017-01-24 20:19:36 +08:00
										 |  |  | 			const content = source.source(); | 
					
						
							| 
									
										
										
										
											2017-02-08 16:15:28 +08:00
										 |  |  | 			const str = ModuleFilenameHelpers.createFilename(module, this.moduleFilenameTemplate, moduleTemplate.requestShortener); | 
					
						
							| 
									
										
										
										
											2017-01-24 20:19:36 +08:00
										 |  |  | 			const footer = ["\n", | 
					
						
							| 
									
										
										
										
											2017-02-08 16:15:28 +08:00
										 |  |  | 				ModuleFilenameHelpers.createFooter(module, moduleTemplate.requestShortener), | 
					
						
							|  |  |  | 				this.sourceUrlComment.replace(/\[url\]/g, encodeURI(str).replace(/%2F/g, "/").replace(/%20/g, "_").replace(/%5E/g, "^").replace(/%5C/g, "\\").replace(/^\//, "")) | 
					
						
							| 
									
										
										
										
											2017-01-24 20:19:36 +08:00
										 |  |  | 			].join("\n"); | 
					
						
							|  |  |  | 			return new RawSource(`eval(${JSON.stringify(content + footer)});`); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 		moduleTemplate.plugin("hash", hash => { | 
					
						
							|  |  |  | 			hash.update("EvalDevToolModuleTemplatePlugin"); | 
					
						
							|  |  |  | 			hash.update("2"); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2014-06-03 14:45:26 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-01-24 20:19:36 +08:00
										 |  |  | module.exports = EvalDevToolModuleTemplatePlugin; |