| 
									
										
										
										
											2017-01-07 14:56:47 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | var Stats = require("./Stats"); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function MultiStats(stats) { | 
					
						
							|  |  |  | 	this.stats = stats; | 
					
						
							|  |  |  | 	this.hash = stats.map(function(stat) { | 
					
						
							|  |  |  | 		return stat.hash; | 
					
						
							|  |  |  | 	}).join(""); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MultiStats.prototype.hasErrors = function() { | 
					
						
							|  |  |  | 	return this.stats.map(function(stat) { | 
					
						
							|  |  |  | 		return stat.hasErrors(); | 
					
						
							|  |  |  | 	}).reduce(function(a, b) { | 
					
						
							|  |  |  | 		return a || b; | 
					
						
							|  |  |  | 	}, false); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MultiStats.prototype.hasWarnings = function() { | 
					
						
							|  |  |  | 	return this.stats.map(function(stat) { | 
					
						
							|  |  |  | 		return stat.hasWarnings(); | 
					
						
							|  |  |  | 	}).reduce(function(a, b) { | 
					
						
							|  |  |  | 		return a || b; | 
					
						
							|  |  |  | 	}, false); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MultiStats.prototype.toJson = function(options, forToString) { | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | 	if(typeof options === "boolean" || typeof options === "string") { | 
					
						
							|  |  |  | 		options = Stats.presetToOptions(options); | 
					
						
							|  |  |  | 	} else if(!options) { | 
					
						
							|  |  |  | 		options = {}; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	var jsons = this.stats.map((stat, idx) => { | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | 		var childOptions = Stats.getChildOptions(options, idx); | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | 		var obj = stat.toJson(childOptions, forToString); | 
					
						
							| 
									
										
										
										
											2017-01-07 14:56:47 +08:00
										 |  |  | 		obj.name = stat.compilation && stat.compilation.name; | 
					
						
							|  |  |  | 		return obj; | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | 	var showVersion = typeof options.version === "undefined" ? jsons.every(j => j.version) : options.version !== false; | 
					
						
							|  |  |  | 	var showHash = typeof options.hash === "undefined" ? jsons.every(j => j.hash) : options.hash !== false; | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | 	jsons.forEach(j => { | 
					
						
							|  |  |  | 		if(showVersion) | 
					
						
							|  |  |  | 			delete j.version; | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2017-01-07 14:56:47 +08:00
										 |  |  | 	var obj = { | 
					
						
							|  |  |  | 		errors: jsons.reduce(function(arr, j) { | 
					
						
							|  |  |  | 			return arr.concat(j.errors.map(function(msg) { | 
					
						
							|  |  |  | 				return "(" + j.name + ") " + msg; | 
					
						
							|  |  |  | 			})); | 
					
						
							|  |  |  | 		}, []), | 
					
						
							|  |  |  | 		warnings: jsons.reduce(function(arr, j) { | 
					
						
							|  |  |  | 			return arr.concat(j.warnings.map(function(msg) { | 
					
						
							|  |  |  | 				return "(" + j.name + ") " + msg; | 
					
						
							|  |  |  | 			})); | 
					
						
							|  |  |  | 		}, []) | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | 	if(showVersion) | 
					
						
							| 
									
										
										
										
											2017-01-07 14:56:47 +08:00
										 |  |  | 		obj.version = require("../package.json").version; | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | 	if(showHash) | 
					
						
							| 
									
										
										
										
											2017-01-07 14:56:47 +08:00
										 |  |  | 		obj.hash = this.hash; | 
					
						
							| 
									
										
										
										
											2017-01-11 17:51:58 +08:00
										 |  |  | 	if(options.children !== false) | 
					
						
							| 
									
										
										
										
											2017-01-07 14:56:47 +08:00
										 |  |  | 		obj.children = jsons; | 
					
						
							|  |  |  | 	return obj; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | MultiStats.prototype.toString = Stats.prototype.toString; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = MultiStats; |