| | |
| | | const RequireEnsureItemDependency = require("./RequireEnsureItemDependency"); |
| | | const getFunctionExpression = require("./getFunctionExpression"); |
| | | |
| | | /** @typedef {import("estree").Expression} Expression */ |
| | | /** @typedef {import("estree").SpreadElement} SpreadElement */ |
| | | /** @typedef {import("../AsyncDependenciesBlock").GroupOptions} GroupOptions */ |
| | | /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */ |
| | | /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */ |
| | | /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */ |
| | | /** @typedef {import("../javascript/JavascriptParser").Range} Range */ |
| | | /** @typedef {import("./getFunctionExpression").FunctionExpressionResult} FunctionExpressionResult */ |
| | | |
| | | const PLUGIN_NAME = "RequireEnsureDependenciesBlockParserPlugin"; |
| | | |
| | | module.exports = class RequireEnsureDependenciesBlockParserPlugin { |
| | | /** |
| | | * Applies the plugin by registering its hooks on the compiler. |
| | | * @param {JavascriptParser} parser the parser |
| | | * @returns {void} |
| | | */ |
| | |
| | | parser.hooks.call.for("require.ensure").tap(PLUGIN_NAME, (expr) => { |
| | | /** @type {string | GroupOptions | null} */ |
| | | let chunkName = null; |
| | | let errorExpressionArg = null; |
| | | let errorExpression = null; |
| | | /** @type {undefined | Expression | SpreadElement} */ |
| | | let errorExpressionArg; |
| | | /** @type {undefined | FunctionExpressionResult} */ |
| | | let errorExpression; |
| | | switch (expr.arguments.length) { |
| | | case 4: { |
| | | const chunkNameExpr = parser.evaluateExpression(expr.arguments[3]); |
| | |
| | | parser.state.current = /** @type {EXPECTED_ANY} */ (depBlock); |
| | | try { |
| | | let failed = false; |
| | | parser.inScope([], () => { |
| | | parser.inFunctionScope(true, [], () => { |
| | | for (const ee of dependenciesItems) { |
| | | if (ee.isString()) { |
| | | const ensureDependency = new RequireEnsureItemDependency( |