| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const RequireResolveDependency = require("./RequireResolveDependency");
 
- const RequireResolveContextDependency = require("./RequireResolveContextDependency");
 
- const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency");
 
- const ContextDependencyHelpers = require("./ContextDependencyHelpers");
 
- class RequireResolveDependencyParserPlugin {
 
- 	constructor(options) {
 
- 		this.options = options;
 
- 	}
 
- 	apply(parser) {
 
- 		const options = this.options;
 
- 		const process = (expr, weak) => {
 
- 			if (expr.arguments.length !== 1) return;
 
- 			const param = parser.evaluateExpression(expr.arguments[0]);
 
- 			if (param.isConditional()) {
 
- 				for (const option of param.options) {
 
- 					const result = processItem(expr, option, weak);
 
- 					if (result === undefined) {
 
- 						processContext(expr, option, weak);
 
- 					}
 
- 				}
 
- 				const dep = new RequireResolveHeaderDependency(expr.callee.range);
 
- 				dep.loc = expr.loc;
 
- 				parser.state.current.addDependency(dep);
 
- 				return true;
 
- 			} else {
 
- 				const result = processItem(expr, param, weak);
 
- 				if (result === undefined) {
 
- 					processContext(expr, param, weak);
 
- 				}
 
- 				const dep = new RequireResolveHeaderDependency(expr.callee.range);
 
- 				dep.loc = expr.loc;
 
- 				parser.state.current.addDependency(dep);
 
- 				return true;
 
- 			}
 
- 		};
 
- 		const processItem = (expr, param, weak) => {
 
- 			if (param.isString()) {
 
- 				const dep = new RequireResolveDependency(param.string, param.range);
 
- 				dep.loc = expr.loc;
 
- 				dep.optional = !!parser.scope.inTry;
 
- 				dep.weak = weak;
 
- 				parser.state.current.addDependency(dep);
 
- 				return true;
 
- 			}
 
- 		};
 
- 		const processContext = (expr, param, weak) => {
 
- 			const dep = ContextDependencyHelpers.create(
 
- 				RequireResolveContextDependency,
 
- 				param.range,
 
- 				param,
 
- 				expr,
 
- 				options,
 
- 				{
 
- 					mode: weak ? "weak" : "sync"
 
- 				},
 
- 				parser
 
- 			);
 
- 			if (!dep) return;
 
- 			dep.loc = expr.loc;
 
- 			dep.optional = !!parser.scope.inTry;
 
- 			parser.state.current.addDependency(dep);
 
- 			return true;
 
- 		};
 
- 		parser.hooks.call
 
- 			.for("require.resolve")
 
- 			.tap("RequireResolveDependencyParserPlugin", expr => {
 
- 				return process(expr, false);
 
- 			});
 
- 		parser.hooks.call
 
- 			.for("require.resolveWeak")
 
- 			.tap("RequireResolveDependencyParserPlugin", expr => {
 
- 				return process(expr, true);
 
- 			});
 
- 	}
 
- }
 
- module.exports = RequireResolveDependencyParserPlugin;
 
 
  |