| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const CommonJsRequireDependency = require("./CommonJsRequireDependency");
 
- const CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
 
- const RequireHeaderDependency = require("./RequireHeaderDependency");
 
- const LocalModuleDependency = require("./LocalModuleDependency");
 
- const ContextDependencyHelpers = require("./ContextDependencyHelpers");
 
- const LocalModulesHelpers = require("./LocalModulesHelpers");
 
- const ParserHelpers = require("../ParserHelpers");
 
- class CommonJsRequireDependencyParserPlugin {
 
- 	constructor(options) {
 
- 		this.options = options;
 
- 	}
 
- 	apply(parser) {
 
- 		const options = this.options;
 
- 		const processItem = (expr, param) => {
 
- 			if (param.isString()) {
 
- 				const dep = new CommonJsRequireDependency(param.string, param.range);
 
- 				dep.loc = expr.loc;
 
- 				dep.optional = !!parser.scope.inTry;
 
- 				parser.state.current.addDependency(dep);
 
- 				return true;
 
- 			}
 
- 		};
 
- 		const processContext = (expr, param) => {
 
- 			const dep = ContextDependencyHelpers.create(
 
- 				CommonJsRequireContextDependency,
 
- 				expr.range,
 
- 				param,
 
- 				expr,
 
- 				options,
 
- 				{},
 
- 				parser
 
- 			);
 
- 			if (!dep) return;
 
- 			dep.loc = expr.loc;
 
- 			dep.optional = !!parser.scope.inTry;
 
- 			parser.state.current.addDependency(dep);
 
- 			return true;
 
- 		};
 
- 		parser.hooks.expression
 
- 			.for("require.cache")
 
- 			.tap(
 
- 				"CommonJsRequireDependencyParserPlugin",
 
- 				ParserHelpers.toConstantDependencyWithWebpackRequire(
 
- 					parser,
 
- 					"__webpack_require__.c"
 
- 				)
 
- 			);
 
- 		parser.hooks.expression
 
- 			.for("require")
 
- 			.tap("CommonJsRequireDependencyParserPlugin", expr => {
 
- 				const dep = new CommonJsRequireContextDependency(
 
- 					{
 
- 						request: options.unknownContextRequest,
 
- 						recursive: options.unknownContextRecursive,
 
- 						regExp: options.unknownContextRegExp,
 
- 						mode: "sync"
 
- 					},
 
- 					expr.range
 
- 				);
 
- 				dep.critical =
 
- 					options.unknownContextCritical &&
 
- 					"require function is used in a way in which dependencies cannot be statically extracted";
 
- 				dep.loc = expr.loc;
 
- 				dep.optional = !!parser.scope.inTry;
 
- 				parser.state.current.addDependency(dep);
 
- 				return true;
 
- 			});
 
- 		const createHandler = callNew => expr => {
 
- 			if (expr.arguments.length !== 1) return;
 
- 			let localModule;
 
- 			const param = parser.evaluateExpression(expr.arguments[0]);
 
- 			if (param.isConditional()) {
 
- 				let isExpression = false;
 
- 				const prevLength = parser.state.current.dependencies.length;
 
- 				const dep = new RequireHeaderDependency(expr.callee.range);
 
- 				dep.loc = expr.loc;
 
- 				parser.state.current.addDependency(dep);
 
- 				for (const p of param.options) {
 
- 					const result = processItem(expr, p);
 
- 					if (result === undefined) {
 
- 						isExpression = true;
 
- 					}
 
- 				}
 
- 				if (isExpression) {
 
- 					parser.state.current.dependencies.length = prevLength;
 
- 				} else {
 
- 					return true;
 
- 				}
 
- 			}
 
- 			if (
 
- 				param.isString() &&
 
- 				(localModule = LocalModulesHelpers.getLocalModule(
 
- 					parser.state,
 
- 					param.string
 
- 				))
 
- 			) {
 
- 				const dep = new LocalModuleDependency(localModule, expr.range, callNew);
 
- 				dep.loc = expr.loc;
 
- 				parser.state.current.addDependency(dep);
 
- 				return true;
 
- 			} else {
 
- 				const result = processItem(expr, param);
 
- 				if (result === undefined) {
 
- 					processContext(expr, param);
 
- 				} else {
 
- 					const dep = new RequireHeaderDependency(expr.callee.range);
 
- 					dep.loc = expr.loc;
 
- 					parser.state.current.addDependency(dep);
 
- 				}
 
- 				return true;
 
- 			}
 
- 		};
 
- 		parser.hooks.call
 
- 			.for("require")
 
- 			.tap("CommonJsRequireDependencyParserPlugin", createHandler(false));
 
- 		parser.hooks.new
 
- 			.for("require")
 
- 			.tap("CommonJsRequireDependencyParserPlugin", createHandler(true));
 
- 		parser.hooks.call
 
- 			.for("module.require")
 
- 			.tap("CommonJsRequireDependencyParserPlugin", createHandler(false));
 
- 		parser.hooks.new
 
- 			.for("module.require")
 
- 			.tap("CommonJsRequireDependencyParserPlugin", createHandler(true));
 
- 	}
 
- }
 
- module.exports = CommonJsRequireDependencyParserPlugin;
 
 
  |