aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.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/RequireEnsureDependenciesBlockParserPlugin.js
parent003fb34971cf63466184351b4db5f7c67df4f444 (diff)
update packages
Diffstat (limited to 'node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js')
-rw-r--r--node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js218
1 files changed, 116 insertions, 102 deletions
diff --git a/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js b/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js
index 73b7d0c8c..213eaac0a 100644
--- a/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js
+++ b/node_modules/webpack/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js
@@ -1,102 +1,116 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-"use strict";
-
-const RequireEnsureDependenciesBlock = require("./RequireEnsureDependenciesBlock");
-const RequireEnsureItemDependency = require("./RequireEnsureItemDependency");
-const getFunctionExpression = require("./getFunctionExpression");
-
-module.exports = class RequireEnsureDependenciesBlockParserPlugin {
- apply(parser) {
- parser.plugin("call require.ensure", expr => {
- let chunkName = null;
- let chunkNameRange = null;
- let errorExpressionArg = null;
- let errorExpression = null;
- switch(expr.arguments.length) {
- case 4:
- {
- const chunkNameExpr = parser.evaluateExpression(expr.arguments[3]);
- if(!chunkNameExpr.isString()) return;
- chunkNameRange = chunkNameExpr.range;
- chunkName = chunkNameExpr.string;
- }
- // falls through
- case 3:
- {
- errorExpressionArg = expr.arguments[2];
- errorExpression = getFunctionExpression(errorExpressionArg);
-
- if(!errorExpression && !chunkName) {
- const chunkNameExpr = parser.evaluateExpression(expr.arguments[2]);
- if(!chunkNameExpr.isString()) return;
- chunkNameRange = chunkNameExpr.range;
- chunkName = chunkNameExpr.string;
- }
- }
- // falls through
- case 2:
- {
- const dependenciesExpr = parser.evaluateExpression(expr.arguments[0]);
- const dependenciesItems = dependenciesExpr.isArray() ? dependenciesExpr.items : [dependenciesExpr];
- const successExpressionArg = expr.arguments[1];
- const successExpression = getFunctionExpression(successExpressionArg);
-
- if(successExpression) {
- parser.walkExpressions(successExpression.expressions);
- }
- if(errorExpression) {
- parser.walkExpressions(errorExpression.expressions);
- }
-
- const dep = new RequireEnsureDependenciesBlock(expr,
- successExpression ? successExpression.fn : successExpressionArg,
- errorExpression ? errorExpression.fn : errorExpressionArg,
- chunkName, chunkNameRange, parser.state.module, expr.loc);
- const old = parser.state.current;
- parser.state.current = dep;
- try {
- let failed = false;
- parser.inScope([], () => {
- dependenciesItems.forEach(ee => {
- if(ee.isString()) {
- const edep = new RequireEnsureItemDependency(ee.string, ee.range);
- edep.loc = dep.loc;
- dep.addDependency(edep);
- } else {
- failed = true;
- }
- });
- });
- if(failed) {
- return;
- }
- if(successExpression) {
- if(successExpression.fn.body.type === "BlockStatement")
- parser.walkStatement(successExpression.fn.body);
- else
- parser.walkExpression(successExpression.fn.body);
- }
- old.addBlock(dep);
- } finally {
- parser.state.current = old;
- }
- if(!successExpression) {
- parser.walkExpression(successExpressionArg);
- }
- if(errorExpression) {
- if(errorExpression.fn.body.type === "BlockStatement")
- parser.walkStatement(errorExpression.fn.body);
- else
- parser.walkExpression(errorExpression.fn.body);
- } else if(errorExpressionArg) {
- parser.walkExpression(errorExpressionArg);
- }
- return true;
- }
- }
- });
- }
-};
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const RequireEnsureDependenciesBlock = require("./RequireEnsureDependenciesBlock");
+const RequireEnsureItemDependency = require("./RequireEnsureItemDependency");
+const getFunctionExpression = require("./getFunctionExpression");
+
+module.exports = class RequireEnsureDependenciesBlockParserPlugin {
+ apply(parser) {
+ parser.hooks.call
+ .for("require.ensure")
+ .tap("RequireEnsureDependenciesBlockParserPlugin", expr => {
+ let chunkName = null;
+ let chunkNameRange = null;
+ let errorExpressionArg = null;
+ let errorExpression = null;
+ switch (expr.arguments.length) {
+ case 4: {
+ const chunkNameExpr = parser.evaluateExpression(expr.arguments[3]);
+ if (!chunkNameExpr.isString()) return;
+ chunkNameRange = chunkNameExpr.range;
+ chunkName = chunkNameExpr.string;
+ }
+ // falls through
+ case 3: {
+ errorExpressionArg = expr.arguments[2];
+ errorExpression = getFunctionExpression(errorExpressionArg);
+
+ if (!errorExpression && !chunkName) {
+ const chunkNameExpr = parser.evaluateExpression(
+ expr.arguments[2]
+ );
+ if (!chunkNameExpr.isString()) return;
+ chunkNameRange = chunkNameExpr.range;
+ chunkName = chunkNameExpr.string;
+ }
+ }
+ // falls through
+ case 2: {
+ const dependenciesExpr = parser.evaluateExpression(
+ expr.arguments[0]
+ );
+ const dependenciesItems = dependenciesExpr.isArray()
+ ? dependenciesExpr.items
+ : [dependenciesExpr];
+ const successExpressionArg = expr.arguments[1];
+ const successExpression = getFunctionExpression(
+ successExpressionArg
+ );
+
+ if (successExpression) {
+ parser.walkExpressions(successExpression.expressions);
+ }
+ if (errorExpression) {
+ parser.walkExpressions(errorExpression.expressions);
+ }
+
+ const dep = new RequireEnsureDependenciesBlock(
+ expr,
+ successExpression ? successExpression.fn : successExpressionArg,
+ errorExpression ? errorExpression.fn : errorExpressionArg,
+ chunkName,
+ chunkNameRange,
+ parser.state.module,
+ expr.loc
+ );
+ const old = parser.state.current;
+ parser.state.current = dep;
+ try {
+ let failed = false;
+ parser.inScope([], () => {
+ for (const ee of dependenciesItems) {
+ if (ee.isString()) {
+ const edep = new RequireEnsureItemDependency(ee.string);
+ edep.loc = dep.loc;
+ dep.addDependency(edep);
+ } else {
+ failed = true;
+ }
+ }
+ });
+ if (failed) {
+ return;
+ }
+ if (successExpression) {
+ if (successExpression.fn.body.type === "BlockStatement") {
+ parser.walkStatement(successExpression.fn.body);
+ } else {
+ parser.walkExpression(successExpression.fn.body);
+ }
+ }
+ old.addBlock(dep);
+ } finally {
+ parser.state.current = old;
+ }
+ if (!successExpression) {
+ parser.walkExpression(successExpressionArg);
+ }
+ if (errorExpression) {
+ if (errorExpression.fn.body.type === "BlockStatement") {
+ parser.walkStatement(errorExpression.fn.body);
+ } else {
+ parser.walkExpression(errorExpression.fn.body);
+ }
+ } else if (errorExpressionArg) {
+ parser.walkExpression(errorExpressionArg);
+ }
+ return true;
+ }
+ }
+ });
+ }
+};