| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | /* | 
					
						
							|  |  |  | 	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
					
						
							|  |  |  | 	Author Tobias Koppers @sokra | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | var AMDRequireItemDependency = require("./AMDRequireItemDependency"); | 
					
						
							| 
									
										
										
										
											2013-02-21 03:40:40 +08:00
										 |  |  | var AMDRequireContextDependency = require("./AMDRequireContextDependency"); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | var ConstDependency = require("./ConstDependency"); | 
					
						
							|  |  |  | var AMDDefineDependency = require("./AMDDefineDependency"); | 
					
						
							| 
									
										
										
										
											2014-01-24 19:22:59 +08:00
										 |  |  | var AMDRequireArrayDependency = require("./AMDRequireArrayDependency"); | 
					
						
							| 
									
										
										
										
											2014-01-24 01:35:56 +08:00
										 |  |  | var LocalModuleDependency = require("./LocalModuleDependency"); | 
					
						
							| 
									
										
										
										
											2013-02-21 03:40:40 +08:00
										 |  |  | var ContextDependencyHelpers = require("./ContextDependencyHelpers"); | 
					
						
							| 
									
										
										
										
											2014-01-24 01:35:56 +08:00
										 |  |  | var LocalModulesHelpers = require("./LocalModulesHelpers"); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-12-31 19:20:06 +08:00
										 |  |  | function isBoundFunctionExpression(expr) { | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 	if(expr.type !== "CallExpression") return false; | 
					
						
							|  |  |  | 	if(expr.callee.type !== "MemberExpression") return false; | 
					
						
							|  |  |  | 	if(expr.callee.computed) return false; | 
					
						
							|  |  |  | 	if(expr.callee.object.type !== "FunctionExpression") return false; | 
					
						
							|  |  |  | 	if(expr.callee.property.type !== "Identifier") return false; | 
					
						
							|  |  |  | 	if(expr.callee.property.name !== "bind") return false; | 
					
						
							| 
									
										
										
										
											2013-12-31 19:20:06 +08:00
										 |  |  | 	return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-11 23:08:22 +08:00
										 |  |  | function AMDDefineDependencyParserPlugin(options) { | 
					
						
							|  |  |  | 	this.options = options; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports = AMDDefineDependencyParserPlugin; | 
					
						
							|  |  |  | AMDDefineDependencyParserPlugin.prototype.apply = function(parser) { | 
					
						
							|  |  |  | 	var options = this.options; | 
					
						
							|  |  |  | 	parser.plugin("call define", function(expr) { | 
					
						
							| 
									
										
										
										
											2014-01-24 01:35:56 +08:00
										 |  |  | 		var array, fn, obj, namedModule; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		switch(expr.arguments.length) { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 			case 1: | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(expr.arguments[0].type === "FunctionExpression" || isBoundFunctionExpression(expr.arguments[0])) { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					// define(f() {...})
 | 
					
						
							|  |  |  | 					fn = expr.arguments[0]; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				} else if(expr.arguments[0].type === "ObjectExpression") { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					// define({...})
 | 
					
						
							|  |  |  | 					obj = expr.arguments[0]; | 
					
						
							| 
									
										
										
										
											2013-12-08 21:59:52 +08:00
										 |  |  | 				} else { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					// define(expr)
 | 
					
						
							| 
									
										
										
										
											2013-12-29 19:11:03 +08:00
										 |  |  | 					// unclear if function or object
 | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					obj = fn = expr.arguments[0]; | 
					
						
							| 
									
										
										
										
											2013-12-08 21:59:52 +08:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 				break; | 
					
						
							|  |  |  | 			case 2: | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(expr.arguments[0].type === "Literal") { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					namedModule = expr.arguments[0].value; | 
					
						
							|  |  |  | 					// define("...", ...)
 | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 					if(expr.arguments[1].type === "FunctionExpression" || isBoundFunctionExpression(expr.arguments[1])) { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 						// define("...", f() {...})
 | 
					
						
							|  |  |  | 						fn = expr.arguments[1]; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 					} else if(expr.arguments[1].type === "ObjectExpression") { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 						// define("...", {...})
 | 
					
						
							|  |  |  | 						obj = expr.arguments[1]; | 
					
						
							|  |  |  | 					} else { | 
					
						
							|  |  |  | 						// define("...", expr)
 | 
					
						
							|  |  |  | 						// unclear if function or object
 | 
					
						
							|  |  |  | 						obj = fn = expr.arguments[1]; | 
					
						
							|  |  |  | 					} | 
					
						
							| 
									
										
										
										
											2014-08-21 20:32:24 +08:00
										 |  |  | 				} else { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					array = expr.arguments[0]; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 					if(expr.arguments[1].type === "FunctionExpression" || isBoundFunctionExpression(expr.arguments[1])) { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 						// define([...], f() {})
 | 
					
						
							|  |  |  | 						fn = expr.arguments[1]; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 					} else if(expr.arguments[1].type === "ObjectExpression") { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 						// define([...], {...})
 | 
					
						
							|  |  |  | 						obj = expr.arguments[1]; | 
					
						
							|  |  |  | 					} else { | 
					
						
							|  |  |  | 						// define([...], expr)
 | 
					
						
							|  |  |  | 						// unclear if function or object
 | 
					
						
							|  |  |  | 						obj = fn = expr.arguments[1]; | 
					
						
							|  |  |  | 					} | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				break; | 
					
						
							|  |  |  | 			case 3: | 
					
						
							|  |  |  | 				// define("...", [...], f() {...})
 | 
					
						
							|  |  |  | 				namedModule = expr.arguments[0].value; | 
					
						
							|  |  |  | 				array = expr.arguments[1]; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(expr.arguments[2].type === "FunctionExpression" || isBoundFunctionExpression(expr.arguments[2])) { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					// define("...", [...], f() {})
 | 
					
						
							|  |  |  | 					fn = expr.arguments[2]; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				} else if(expr.arguments[2].type === "ObjectExpression") { | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					// define("...", [...], {...})
 | 
					
						
							|  |  |  | 					obj = expr.arguments[2]; | 
					
						
							|  |  |  | 				} else { | 
					
						
							|  |  |  | 					// define("...", [...], expr)
 | 
					
						
							| 
									
										
										
										
											2014-08-21 20:32:24 +08:00
										 |  |  | 					// unclear if function or object
 | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 					obj = fn = expr.arguments[2]; | 
					
						
							| 
									
										
										
										
											2014-08-21 20:32:24 +08:00
										 |  |  | 				} | 
					
						
							| 
									
										
										
										
											2015-07-13 06:20:09 +08:00
										 |  |  | 				break; | 
					
						
							|  |  |  | 			default: | 
					
						
							|  |  |  | 				return; | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 		var fnParams = null; | 
					
						
							|  |  |  | 		var fnParamsOffset = 0; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		if(fn) { | 
					
						
							|  |  |  | 			if(fn.type === "FunctionExpression") fnParams = fn.params; | 
					
						
							|  |  |  | 			else if(isBoundFunctionExpression(fn)) { | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 				fnParams = fn.callee.object.params; | 
					
						
							|  |  |  | 				fnParamsOffset = fn.arguments.length - 1; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(fnParamsOffset < 0) fnParamsOffset = 0; | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 			} | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		var fnRenames = Object.create(this.scope.renames); | 
					
						
							| 
									
										
										
										
											2015-04-24 05:55:50 +08:00
										 |  |  | 		var identifiers; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		if(array) { | 
					
						
							| 
									
										
										
										
											2015-04-24 05:55:50 +08:00
										 |  |  | 			identifiers = {}; | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 			var param = this.evaluateExpression(array); | 
					
						
							| 
									
										
										
										
											2015-01-31 14:37:43 +08:00
										 |  |  | 			var result = this.applyPluginsBailResult("call define:amd:array", expr, param, identifiers, namedModule); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 			if(!result) return; | 
					
						
							|  |  |  | 			if(fnParams) fnParams = fnParams.slice(fnParamsOffset).filter(function(param, idx) { | 
					
						
							|  |  |  | 				if(identifiers[idx]) { | 
					
						
							| 
									
										
										
										
											2015-04-24 05:55:50 +08:00
										 |  |  | 					fnRenames["$" + param.name] = identifiers[idx]; | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 					return false; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				return true; | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		} else { | 
					
						
							| 
									
										
										
										
											2015-04-24 05:55:50 +08:00
										 |  |  | 			identifiers = ["require", "exports", "module"]; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 			if(fnParams) fnParams = fnParams.slice(fnParamsOffset).filter(function(param, idx) { | 
					
						
							|  |  |  | 				if(identifiers[idx]) { | 
					
						
							| 
									
										
										
										
											2015-04-24 05:55:50 +08:00
										 |  |  | 					fnRenames["$" + param.name] = identifiers[idx]; | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 					return false; | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				return true; | 
					
						
							|  |  |  | 			}); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2015-04-24 05:55:50 +08:00
										 |  |  | 		var inTry; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		if(fn && fn.type === "FunctionExpression") { | 
					
						
							| 
									
										
										
										
											2015-04-24 05:55:50 +08:00
										 |  |  | 			inTry = this.scope.inTry; | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 			this.inScope(fnParams, function() { | 
					
						
							|  |  |  | 				this.scope.renames = fnRenames; | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 				this.scope.inTry = inTry; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(fn.body.type === "BlockStatement") | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 					this.walkStatement(fn.body); | 
					
						
							|  |  |  | 				else | 
					
						
							|  |  |  | 					this.walkExpression(fn.body); | 
					
						
							|  |  |  | 			}.bind(this)); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		} else if(fn && isBoundFunctionExpression(fn)) { | 
					
						
							| 
									
										
										
										
											2015-04-24 05:55:50 +08:00
										 |  |  | 			inTry = this.scope.inTry; | 
					
						
							| 
									
										
										
										
											2013-12-31 19:20:06 +08:00
										 |  |  | 			this.inScope(fn.callee.object.params.filter(function(i) { | 
					
						
							|  |  |  | 				return ["require", "module", "exports"].indexOf(i.name) < 0; | 
					
						
							|  |  |  | 			}), function() { | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 				this.scope.renames = fnRenames; | 
					
						
							| 
									
										
										
										
											2013-12-31 19:20:06 +08:00
										 |  |  | 				this.scope.inTry = inTry; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(fn.callee.object.body.type === "BlockStatement") | 
					
						
							| 
									
										
										
										
											2013-12-31 19:20:06 +08:00
										 |  |  | 					this.walkStatement(fn.callee.object.body); | 
					
						
							|  |  |  | 				else | 
					
						
							|  |  |  | 					this.walkExpression(fn.callee.object.body); | 
					
						
							|  |  |  | 			}.bind(this)); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 			if(fn.arguments) | 
					
						
							| 
									
										
										
										
											2013-12-31 19:20:06 +08:00
										 |  |  | 				this.walkExpressions(fn.arguments); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		} else if(fn || obj) { | 
					
						
							| 
									
										
										
										
											2013-12-29 19:11:03 +08:00
										 |  |  | 			this.walkExpression(fn || obj); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 		} | 
					
						
							| 
									
										
										
										
											2013-12-29 19:11:03 +08:00
										 |  |  | 		var dep = new AMDDefineDependency(expr.range, array ? array.range : null, fn ? fn.range : null, obj ? obj.range : null); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 		dep.loc = expr.loc; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		if(namedModule) { | 
					
						
							| 
									
										
										
										
											2014-01-24 01:35:56 +08:00
										 |  |  | 			dep.localModule = LocalModulesHelpers.addLocalModule(this.state, namedModule); | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 		this.state.current.addDependency(dep); | 
					
						
							|  |  |  | 		return true; | 
					
						
							| 
									
										
										
										
											2014-03-11 23:08:22 +08:00
										 |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2015-01-31 14:37:43 +08:00
										 |  |  | 	parser.plugin("call define:amd:array", function(expr, param, identifiers, namedModule) { | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		if(param.isArray()) { | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 			param.items.forEach(function(param, idx) { | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(param.isString() && ["require", "module", "exports"].indexOf(param.string) >= 0) | 
					
						
							| 
									
										
										
										
											2014-03-13 06:03:07 +08:00
										 |  |  | 					identifiers[idx] = param.string; | 
					
						
							| 
									
										
										
										
											2015-01-31 14:37:43 +08:00
										 |  |  | 				var result = this.applyPluginsBailResult("call define:amd:item", expr, param, namedModule); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(result === undefined) { | 
					
						
							| 
									
										
										
										
											2013-12-08 21:59:52 +08:00
										 |  |  | 					this.applyPluginsBailResult("call define:amd:context", expr, param); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 			}, this); | 
					
						
							|  |  |  | 			return true; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		} else if(param.isConstArray()) { | 
					
						
							| 
									
										
										
										
											2013-12-08 21:59:52 +08:00
										 |  |  | 			var deps = []; | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 			param.array.forEach(function(request, idx) { | 
					
						
							| 
									
										
										
										
											2014-01-24 01:35:56 +08:00
										 |  |  | 				var dep, localModule; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(request === "require") { | 
					
						
							| 
									
										
										
										
											2014-03-03 21:56:17 +08:00
										 |  |  | 					identifiers[idx] = request; | 
					
						
							|  |  |  | 					dep = "__webpack_require__"; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				} else if(["exports", "module"].indexOf(request) >= 0) { | 
					
						
							| 
									
										
										
										
											2014-01-31 21:09:08 +08:00
										 |  |  | 					identifiers[idx] = request; | 
					
						
							| 
									
										
										
										
											2013-12-08 21:59:52 +08:00
										 |  |  | 					dep = request; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				} else if(localModule = LocalModulesHelpers.getLocalModule(this.state, request)) { // eslint-disable-line no-cond-assign
 | 
					
						
							| 
									
										
										
										
											2014-01-24 01:35:56 +08:00
										 |  |  | 					dep = new LocalModuleDependency(localModule); | 
					
						
							|  |  |  | 					dep.loc = expr.loc; | 
					
						
							|  |  |  | 					this.state.current.addDependency(dep); | 
					
						
							| 
									
										
										
										
											2013-12-08 21:59:52 +08:00
										 |  |  | 				} else { | 
					
						
							|  |  |  | 					dep = new AMDRequireItemDependency(request); | 
					
						
							|  |  |  | 					dep.loc = expr.loc; | 
					
						
							|  |  |  | 					dep.optional = !!this.scope.inTry; | 
					
						
							|  |  |  | 					this.state.current.addDependency(dep); | 
					
						
							|  |  |  | 				} | 
					
						
							|  |  |  | 				deps.push(dep); | 
					
						
							|  |  |  | 			}, this); | 
					
						
							|  |  |  | 			var dep = new AMDRequireArrayDependency(deps, param.range); | 
					
						
							|  |  |  | 			dep.loc = expr.loc; | 
					
						
							|  |  |  | 			dep.optional = !!this.scope.inTry; | 
					
						
							|  |  |  | 			this.state.current.addDependency(dep); | 
					
						
							|  |  |  | 			return true; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-03-11 23:08:22 +08:00
										 |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2015-01-31 14:37:43 +08:00
										 |  |  | 	parser.plugin("call define:amd:item", function(expr, param, namedModule) { | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		if(param.isConditional()) { | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 			param.options.forEach(function(param) { | 
					
						
							|  |  |  | 				var result = this.applyPluginsBailResult("call define:amd:item", expr, param); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 				if(result === undefined) { | 
					
						
							| 
									
										
										
										
											2013-02-21 03:40:40 +08:00
										 |  |  | 					this.applyPluginsBailResult("call define:amd:context", expr, param); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 				} | 
					
						
							|  |  |  | 			}, this); | 
					
						
							|  |  |  | 			return true; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		} else if(param.isString()) { | 
					
						
							| 
									
										
										
										
											2014-01-24 01:35:56 +08:00
										 |  |  | 			var dep, localModule; | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 			if(param.string === "require") { | 
					
						
							| 
									
										
										
										
											2014-03-03 21:56:17 +08:00
										 |  |  | 				dep = new ConstDependency("__webpack_require__", param.range); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 			} else if(["require", "exports", "module"].indexOf(param.string) >= 0) { | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 				dep = new ConstDependency(param.string, param.range); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 			} else if(localModule = LocalModulesHelpers.getLocalModule(this.state, param.string, namedModule)) { // eslint-disable-line no-cond-assign
 | 
					
						
							| 
									
										
										
										
											2014-01-24 01:35:56 +08:00
										 |  |  | 				dep = new LocalModuleDependency(localModule, param.range); | 
					
						
							| 
									
										
										
										
											2013-01-31 01:49:25 +08:00
										 |  |  | 			} else { | 
					
						
							|  |  |  | 				dep = new AMDRequireItemDependency(param.string, param.range); | 
					
						
							|  |  |  | 			} | 
					
						
							|  |  |  | 			dep.loc = expr.loc; | 
					
						
							|  |  |  | 			dep.optional = !!this.scope.inTry; | 
					
						
							|  |  |  | 			this.state.current.addDependency(dep); | 
					
						
							|  |  |  | 			return true; | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2014-03-11 23:08:22 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 	parser.plugin("call define:amd:context", function(expr, param) { | 
					
						
							|  |  |  | 		var dep = ContextDependencyHelpers.create(AMDRequireContextDependency, param.range, param, expr, options); | 
					
						
							| 
									
										
										
										
											2015-07-16 06:19:23 +08:00
										 |  |  | 		if(!dep) return; | 
					
						
							| 
									
										
										
										
											2013-02-21 03:40:40 +08:00
										 |  |  | 		dep.loc = expr.loc; | 
					
						
							|  |  |  | 		dep.optional = !!this.scope.inTry; | 
					
						
							|  |  |  | 		this.state.current.addDependency(dep); | 
					
						
							|  |  |  | 		return true; | 
					
						
							| 
									
										
										
										
											2014-03-11 23:08:22 +08:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }; |