| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | "use strict"; | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | const Module = require("./Module"); | 
					
						
							|  |  |  | const OriginalSource = require("webpack-sources").OriginalSource; | 
					
						
							|  |  |  | const RawSource = require("webpack-sources").RawSource; | 
					
						
							|  |  |  | const WebpackMissingModule = require("./dependencies/WebpackMissingModule"); | 
					
						
							|  |  |  | const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDependency"); | 
					
						
							| 
									
										
										
										
											2017-07-26 16:12:40 +08:00
										 |  |  | const DelegatedExportsDependency = require("./dependencies/DelegatedExportsDependency"); | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | class DelegatedModule extends Module { | 
					
						
							| 
									
										
										
										
											2017-07-25 19:41:02 +08:00
										 |  |  | 	constructor(sourceRequest, data, type, userRequest, originalRequest) { | 
					
						
							| 
									
										
										
										
											2017-10-30 20:56:57 +08:00
										 |  |  | 		super("javascript/dynamic"); | 
					
						
							| 
									
										
										
										
											2017-11-06 20:02:35 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		// Info from Factory
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 		this.sourceRequest = sourceRequest; | 
					
						
							|  |  |  | 		this.request = data.id; | 
					
						
							|  |  |  | 		this.type = type; | 
					
						
							|  |  |  | 		this.userRequest = userRequest; | 
					
						
							| 
									
										
										
										
											2017-11-06 20:02:35 +08:00
										 |  |  | 		this.originalRequest = originalRequest; | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 		this.delegateData = data; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-05-18 00:49:09 +08:00
										 |  |  | 	libIdent(options) { | 
					
						
							| 
									
										
										
										
											2017-07-25 19:41:02 +08:00
										 |  |  | 		return typeof this.originalRequest === "string" ? this.originalRequest : this.originalRequest.libIdent(options); | 
					
						
							| 
									
										
										
										
											2017-05-18 00:49:09 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-06-09 04:22:58 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 	identifier() { | 
					
						
							|  |  |  | 		return `delegated ${JSON.stringify(this.request)} from ${this.sourceRequest}`; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	readableIdentifier() { | 
					
						
							|  |  |  | 		return `delegated ${this.userRequest} from ${this.sourceRequest}`; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 	needRebuild() { | 
					
						
							|  |  |  | 		return false; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 	build(options, compilation, resolver, fs, callback) { | 
					
						
							|  |  |  | 		this.built = true; | 
					
						
							| 
									
										
										
										
											2017-12-06 19:09:17 +08:00
										 |  |  | 		this.buildMeta = Object.assign({}, this.delegateData.buildMeta); | 
					
						
							|  |  |  | 		this.buildInfo = {}; | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 		this.addDependency(new DelegatedSourceDependency(this.sourceRequest)); | 
					
						
							| 
									
										
										
										
											2017-07-26 16:12:40 +08:00
										 |  |  | 		this.addDependency(new DelegatedExportsDependency(this, this.delegateData.exports || true)); | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 		callback(); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 	source() { | 
					
						
							|  |  |  | 		const sourceModule = this.dependencies[0].module; | 
					
						
							|  |  |  | 		let str; | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 		if(!sourceModule) { | 
					
						
							|  |  |  | 			str = WebpackMissingModule.moduleCode(this.sourceRequest); | 
					
						
							|  |  |  | 		} else { | 
					
						
							| 
									
										
										
										
											2017-05-18 00:49:09 +08:00
										 |  |  | 			str = `module.exports = (__webpack_require__(${JSON.stringify(sourceModule.id)}))`; | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 			switch(this.type) { | 
					
						
							|  |  |  | 				case "require": | 
					
						
							|  |  |  | 					str += `(${JSON.stringify(this.request)})`; | 
					
						
							|  |  |  | 					break; | 
					
						
							|  |  |  | 				case "object": | 
					
						
							|  |  |  | 					str += `[${JSON.stringify(this.request)}]`; | 
					
						
							|  |  |  | 					break; | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2017-04-21 23:05:00 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 			str += ";"; | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2016-12-05 06:47:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 		if(this.useSourceMap) { | 
					
						
							|  |  |  | 			return new OriginalSource(str, this.identifier()); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			return new RawSource(str); | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	size() { | 
					
						
							|  |  |  | 		return 42; | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-09-16 03:58:59 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	updateHash(hash) { | 
					
						
							| 
									
										
										
										
											2017-09-18 00:05:38 +08:00
										 |  |  | 		hash.update(this.type); | 
					
						
							|  |  |  | 		hash.update(JSON.stringify(this.request)); | 
					
						
							| 
									
										
										
										
											2017-09-16 03:58:59 +08:00
										 |  |  | 		super.updateHash(hash); | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2015-05-13 06:17:06 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-27 05:19:42 +08:00
										 |  |  | module.exports = DelegatedModule; |