Code coverage report for lib\dependencies\RequireResolveDependencyParserPlugin.js

Statements: 80% (32 / 40)      Branches: 58.33% (7 / 12)      Functions: 83.33% (5 / 6)      Lines: 84.21% (32 / 38)      Ignored: none     

All files » lib\dependencies\ » RequireResolveDependencyParserPlugin.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58        1 1 1 1   1 484     1   1 484 484 51 51 51                   51 51 10   51 51     484 51 41 41 41 41 41     484 10 10 10 10 10 10        
/*
	MIT License http://www.opensource.org/licenses/mit-license.php
	Author Tobias Koppers @sokra
*/
var RequireResolveDependency = require("./RequireResolveDependency");
var RequireResolveContextDependency = require("./RequireResolveContextDependency");
var RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency");
var ContextDependencyHelpers = require("./ContextDependencyHelpers");
 
function RequireResolveDependencyParserPlugin(options) {
	this.options = options;
}
 
module.exports = RequireResolveDependencyParserPlugin;
 
RequireResolveDependencyParserPlugin.prototype.apply = function(parser) {
	var options = this.options;
	parser.plugin("call require.resolve", function(expr) {
		Iif(expr.arguments.length !== 1) return;
		var param = this.evaluateExpression(expr.arguments[0]);
		Iif(param.isConditional()) {
			param.options.forEach(function(option) {
				var result = this.applyPluginsBailResult("call require.resolve:item", expr, option);
				if(result === undefined) {
					this.applyPluginsBailResult("call require.resolve:context", expr, option);
				}
			}, this);
			this.state.current.addDependency(new RequireResolveHeaderDependency(expr.callee.range));
			return true;
		} else {
			var result = this.applyPluginsBailResult("call require.resolve:item", expr, param);
			if(result === undefined) {
				this.applyPluginsBailResult("call require.resolve:context", expr, param);
			}
			this.state.current.addDependency(new RequireResolveHeaderDependency(expr.callee.range));
			return true;
		}
	});
	parser.plugin("call require.resolve:item", function(expr, param) {
		if(param.isString()) {
			var dep = new RequireResolveDependency(param.string, param.range);
			dep.loc = expr.loc;
			dep.optional = !!this.scope.inTry;
			this.state.current.addDependency(dep);
			return true;
		}
	});
	parser.plugin("call require.resolve:context", function(expr, param) {
		var dep = ContextDependencyHelpers.create(RequireResolveContextDependency, param.range, param, expr, options);
		Iif(!dep) return;
		dep.loc = expr.loc;
		dep.optional = !!this.scope.inTry;
		this.state.current.addDependency(dep);
		return true;
	});
};