| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2016-12-29 15:10:25 +08:00
										 |  |  | "use strict"; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-14 00:58:14 +08:00
										 |  |  | const util = require("util"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class ModuleReason { | 
					
						
							| 
									
										
										
										
											2017-11-22 01:52:35 +08:00
										 |  |  | 	constructor(module, dependency, explanation) { | 
					
						
							| 
									
										
										
										
											2016-12-29 15:10:25 +08:00
										 |  |  | 		this.module = module; | 
					
						
							|  |  |  | 		this.dependency = dependency; | 
					
						
							| 
									
										
										
										
											2017-11-22 01:52:35 +08:00
										 |  |  | 		this.explanation = explanation; | 
					
						
							| 
									
										
										
										
											2017-06-14 00:58:14 +08:00
										 |  |  | 		this._chunks = null; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	hasChunk(chunk) { | 
					
						
							|  |  |  | 		if(this._chunks) { | 
					
						
							|  |  |  | 			if(this._chunks.has(chunk)) | 
					
						
							|  |  |  | 				return true; | 
					
						
							| 
									
										
										
										
											2017-11-06 20:02:35 +08:00
										 |  |  | 		} else if(this.module && this.module._chunks.has(chunk)) | 
					
						
							| 
									
										
										
										
											2017-06-14 00:58:14 +08:00
										 |  |  | 			return true; | 
					
						
							|  |  |  | 		return false; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	rewriteChunks(oldChunk, newChunks) { | 
					
						
							|  |  |  | 		if(!this._chunks) { | 
					
						
							| 
									
										
										
										
											2017-11-06 20:02:35 +08:00
										 |  |  | 			if(this.module) { | 
					
						
							|  |  |  | 				if(!this.module._chunks.has(oldChunk)) | 
					
						
							|  |  |  | 					return; | 
					
						
							|  |  |  | 				this._chunks = new Set(this.module._chunks); | 
					
						
							|  |  |  | 			} else { | 
					
						
							|  |  |  | 				this._chunks = new Set(); | 
					
						
							|  |  |  | 			} | 
					
						
							| 
									
										
										
										
											2017-06-14 00:58:14 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 		if(this._chunks.has(oldChunk)) { | 
					
						
							|  |  |  | 			this._chunks.delete(oldChunk); | 
					
						
							|  |  |  | 			for(let i = 0; i < newChunks.length; i++) { | 
					
						
							|  |  |  | 				this._chunks.add(newChunks[i]); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Object.defineProperty(ModuleReason.prototype, "chunks", { | 
					
						
							|  |  |  | 	configurable: false, | 
					
						
							|  |  |  | 	get: util.deprecate(function() { | 
					
						
							|  |  |  | 		return this._chunks ? Array.from(this._chunks) : null; | 
					
						
							|  |  |  | 	}, "ModuleReason.chunks: Use ModuleReason.hasChunk/rewriteChunks instead"), | 
					
						
							|  |  |  | 	set() { | 
					
						
							|  |  |  | 		throw new Error("Readonly. Use ModuleReason.rewriteChunks to modify chunks."); | 
					
						
							| 
									
										
										
										
											2016-12-29 15:10:25 +08:00
										 |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-06-14 00:58:14 +08:00
										 |  |  | }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = ModuleReason; |