| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | let avgJs = `
 | 
					
						
							|  |  |  | const str = "we" + "do" + "some" + "ops"; | 
					
						
							|  |  |  | for(const x of str.split("")) { | 
					
						
							|  |  |  | 	if(x.charCodeAt(0) > 40) { | 
					
						
							|  |  |  | 		console.log("omg"); | 
					
						
							|  |  |  | 	} else { | 
					
						
							|  |  |  | 		console.log(Math.random() * 2 + 3 * 2); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Some comment
 | 
					
						
							|  |  |  | switch(a.b.c.d.f.e.g.h.i) { | 
					
						
							|  |  |  | 	case true: | 
					
						
							|  |  |  | 		break; | 
					
						
							|  |  |  | 	case "magic": | 
					
						
							|  |  |  | 		throw new Error("Error!"); | 
					
						
							|  |  |  | 	case 9: | 
					
						
							|  |  |  | 		(function() { | 
					
						
							|  |  |  | 			// extra scope
 | 
					
						
							|  |  |  | 			var x = 123; | 
					
						
							|  |  |  | 			var y = 456; | 
					
						
							|  |  |  | 			var z = x + z * x / y; | 
					
						
							|  |  |  | 			x && y && (z = x ? y : x); | 
					
						
							|  |  |  | 		}()) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function a() {} | 
					
						
							|  |  |  | function b() {} | 
					
						
							|  |  |  | function c() {} | 
					
						
							|  |  |  | function d() {} | 
					
						
							|  |  |  | function e() {} | 
					
						
							|  |  |  | function f() {} | 
					
						
							| 
									
										
										
										
											2018-06-13 19:04:23 +08:00
										 |  |  | `;
 | 
					
						
							| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-06-13 19:04:23 +08:00
										 |  |  | for (let i = 0; i < 2; i++) { | 
					
						
							| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | 	avgJs += `(function() {${avgJs}}());`; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const fs = require("fs"); | 
					
						
							|  |  |  | const root = __dirname; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | createTree(fs, 100, `${root}/modules-100`); | 
					
						
							|  |  |  | createTree(fs, 500, `${root}/modules-500`); | 
					
						
							|  |  |  | createTree(fs, 1000, `${root}/modules-1000`); | 
					
						
							|  |  |  | createTree(fs, 3000, `${root}/modules-3000`); | 
					
						
							|  |  |  | createTree(fs, 5000, `${root}/modules-5000`); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function createTree(fs, count, folder) { | 
					
						
							|  |  |  | 	fs.mkdirSync(folder); | 
					
						
							|  |  |  | 	let remaining = count - 1; | 
					
						
							| 
									
										
										
										
											2017-07-25 03:40:55 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | 	function make(prefix, count, depth) { | 
					
						
							| 
									
										
										
										
											2018-06-13 19:04:23 +08:00
										 |  |  | 		if (count === 0) { | 
					
						
							| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | 			fs.writeFileSync(`${folder}/${prefix}.js`, `export default 1;\n${avgJs}`); | 
					
						
							|  |  |  | 		} else { | 
					
						
							|  |  |  | 			const list = []; | 
					
						
							| 
									
										
										
										
											2018-06-13 19:04:23 +08:00
										 |  |  | 			for (let i = 0; i < count; i++) { | 
					
						
							|  |  |  | 				if (remaining-- <= 0) break; | 
					
						
							|  |  |  | 				if (depth <= 4 && i >= 3 && i <= 4) { | 
					
						
							|  |  |  | 					list.push( | 
					
						
							|  |  |  | 						`const module${i} = import("./${prefix}-${i}");\ncounter += module${i};` | 
					
						
							|  |  |  | 					); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | 				} else { | 
					
						
							| 
									
										
										
										
											2018-06-13 19:04:23 +08:00
										 |  |  | 					list.push( | 
					
						
							|  |  |  | 						`import module${i} from "./${prefix}-${i}";\ncounter += module${i};` | 
					
						
							|  |  |  | 					); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2018-06-13 19:04:23 +08:00
										 |  |  | 				make( | 
					
						
							|  |  |  | 					`${prefix}-${i}`, | 
					
						
							| 
									
										
										
										
											2018-06-14 16:09:39 +08:00
										 |  |  | 					depth > 4 || count > 30 ? 0 : count + depth + Math.pow(i, 2), | 
					
						
							| 
									
										
										
										
											2018-06-13 19:04:23 +08:00
										 |  |  | 					depth + 1 | 
					
						
							|  |  |  | 				); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | 			} | 
					
						
							| 
									
										
										
										
											2018-06-13 19:04:23 +08:00
										 |  |  | 			fs.writeFileSync( | 
					
						
							|  |  |  | 				`${folder}/${prefix}.js`, | 
					
						
							|  |  |  | 				`let counter = 0;\n${list.join( | 
					
						
							|  |  |  | 					"\n" | 
					
						
							|  |  |  | 				)};\nexport default counter;\n${avgJs}`
 | 
					
						
							|  |  |  | 			); | 
					
						
							| 
									
										
										
										
											2017-06-23 20:56:02 +08:00
										 |  |  | 		} | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	make("index", 2, 0); | 
					
						
							|  |  |  | } |