| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const RequireContextDependency = require("./RequireContextDependency");module.exports = class RequireContextDependencyParserPlugin {	apply(parser) {		parser.hooks.call			.for("require.context")			.tap("RequireContextDependencyParserPlugin", expr => {				let regExp = /^\.\/.*$/;				let recursive = true;				let mode = "sync";				switch (expr.arguments.length) {					case 4: {						const modeExpr = parser.evaluateExpression(expr.arguments[3]);						if (!modeExpr.isString()) return;						mode = modeExpr.string;					}					// falls through					case 3: {						const regExpExpr = parser.evaluateExpression(expr.arguments[2]);						if (!regExpExpr.isRegExp()) return;						regExp = regExpExpr.regExp;					}					// falls through					case 2: {						const recursiveExpr = parser.evaluateExpression(expr.arguments[1]);						if (!recursiveExpr.isBoolean()) return;						recursive = recursiveExpr.bool;					}					// falls through					case 1: {						const requestExpr = parser.evaluateExpression(expr.arguments[0]);						if (!requestExpr.isString()) return;						const dep = new RequireContextDependency(							{								request: requestExpr.string,								recursive,								regExp,								mode,								category: "commonjs"							},							expr.range						);						dep.loc = expr.loc;						dep.optional = !!parser.scope.inTry;						parser.state.current.addDependency(dep);						return true;					}				}			});	}};
 |