aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/dependencies/RequireResolveDependencyParserPlugin.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
committerFlorian Dold <florian.dold@gmail.com>2018-09-20 02:56:13 +0200
commitbbff7403fbf46f9ad92240ac213df8d30ef31b64 (patch)
treec58400ec5124da1c7d56b01aea83309f80a56c3b /node_modules/webpack/lib/dependencies/RequireResolveDependencyParserPlugin.js
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/webpack/lib/dependencies/RequireResolveDependencyParserPlugin.js')
-rw-r--r--node_modules/webpack/lib/dependencies/RequireResolveDependencyParserPlugin.js156
1 files changed, 85 insertions, 71 deletions
diff --git a/node_modules/webpack/lib/dependencies/RequireResolveDependencyParserPlugin.js b/node_modules/webpack/lib/dependencies/RequireResolveDependencyParserPlugin.js
index 85451cf95..4c51ddf6a 100644
--- a/node_modules/webpack/lib/dependencies/RequireResolveDependencyParserPlugin.js
+++ b/node_modules/webpack/lib/dependencies/RequireResolveDependencyParserPlugin.js
@@ -1,71 +1,85 @@
-/*
- 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;
- parser.plugin("call require.resolve", (expr) => {
- return parser.applyPluginsBailResult("call require.resolve(Weak)", expr, false);
- });
- parser.plugin("call require.resolveWeak", (expr) => {
- return parser.applyPluginsBailResult("call require.resolve(Weak)", expr, true);
- });
- parser.plugin("call require.resolve(Weak)", (expr, weak) => {
- if(expr.arguments.length !== 1) return;
- const param = parser.evaluateExpression(expr.arguments[0]);
- if(param.isConditional()) {
- param.options.forEach((option) => {
- const result = parser.applyPluginsBailResult("call require.resolve(Weak):item", expr, option, weak);
- if(result === undefined) {
- parser.applyPluginsBailResult("call require.resolve(Weak):context", expr, option, weak);
- }
- });
- const dep = new RequireResolveHeaderDependency(expr.callee.range);
- dep.loc = expr.loc;
- parser.state.current.addDependency(dep);
- return true;
- } else {
- const result = parser.applyPluginsBailResult("call require.resolve(Weak):item", expr, param, weak);
- if(result === undefined) {
- parser.applyPluginsBailResult("call require.resolve(Weak):context", expr, param, weak);
- }
- const dep = new RequireResolveHeaderDependency(expr.callee.range);
- dep.loc = expr.loc;
- parser.state.current.addDependency(dep);
- return true;
- }
- });
- parser.plugin("call require.resolve(Weak):item", (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;
- }
- });
- parser.plugin("call require.resolve(Weak):context", (expr, param, weak) => {
- const dep = ContextDependencyHelpers.create(RequireResolveContextDependency, param.range, param, expr, options);
- if(!dep) return;
- dep.loc = expr.loc;
- dep.optional = !!parser.scope.inTry;
- dep.async = weak ? "weak" : false;
- parser.state.current.addDependency(dep);
- return true;
- });
- }
-}
-module.exports = RequireResolveDependencyParserPlugin;
+/*
+ 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"
+ }
+ );
+ 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;