WXL
4 天以前 2cc85c64f1c64a2dbaeae276a3e2ca8420de76b7
node_modules/webpack/lib/dependencies/AMDDefineDependencyParserPlugin.js
@@ -26,13 +26,16 @@
/** @typedef {import("estree").ObjectExpression} ObjectExpression */
/** @typedef {import("estree").SpreadElement} SpreadElement */
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
/** @typedef {import("../Dependency")} Dependency */
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
/** @typedef {import("../javascript/JavascriptParser").ExportedVariableInfo} ExportedVariableInfo */
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
/** @typedef {import("./LocalModule")} LocalModule */
/**
 * Checks whether this object is bound function expression.
 * @param {Expression | SpreadElement} expr expression
 * @returns {expr is CallExpression} true if it's a bound function expression
 */
@@ -49,6 +52,7 @@
/** @typedef {FunctionExpression | ArrowFunctionExpression} UnboundFunctionExpression */
/**
 * Checks whether this object is unbound function expression.
 * @param {Expression | SpreadElement} expr expression
 * @returns {expr is FunctionExpression | ArrowFunctionExpression} true when unbound function expression
 */
@@ -59,6 +63,7 @@
};
/**
 * Checks whether this object is callable.
 * @param {Expression | SpreadElement} expr expression
 * @returns {expr is FunctionExpression | ArrowFunctionExpression | CallExpression} true when callable
 */
@@ -74,6 +79,7 @@
class AMDDefineDependencyParserPlugin {
   /**
    * Creates an instance of AMDDefineDependencyParserPlugin.
    * @param {JavascriptParserOptions} options parserOptions
    */
   constructor(options) {
@@ -81,6 +87,7 @@
   }
   /**
    * Applies the plugin by registering its hooks on the compiler.
    * @param {JavascriptParser} parser the parser
    * @returns {void}
    */
@@ -91,6 +98,7 @@
   }
   /**
    * Processes the provided parser.
    * @param {JavascriptParser} parser the parser
    * @param {CallExpression} expr call expression
    * @param {BasicEvaluatedExpression} param param
@@ -123,7 +131,9 @@
         const deps = [];
         const array = /** @type {string[]} */ (param.array);
         for (const [idx, request] of array.entries()) {
            /** @type {string | LocalModuleDependency | AMDRequireItemDependency} */
            let dep;
            /** @type {undefined | null | LocalModule} */
            let localModule;
            if (request === "require") {
               identifiers[idx] = request;
@@ -156,6 +166,7 @@
   }
   /**
    * Processes the provided parser.
    * @param {JavascriptParser} parser the parser
    * @param {CallExpression} expr call expression
    * @param {BasicEvaluatedExpression} param param
@@ -174,7 +185,9 @@
         return true;
      } else if (param.isString()) {
         /** @type {Dependency} */
         let dep;
         /** @type {undefined | null | LocalModule} */
         let localModule;
         if (param.string === "require") {
@@ -220,6 +233,7 @@
   }
   /**
    * Processes the provided parser.
    * @param {JavascriptParser} parser the parser
    * @param {CallExpression} expr call expression
    * @param {BasicEvaluatedExpression} param param
@@ -245,6 +259,7 @@
   }
   /**
    * Process call define.
    * @param {JavascriptParser} parser the parser
    * @param {CallExpression} expr call expression
    * @returns {boolean | undefined} result
@@ -388,21 +403,25 @@
      let inTry;
      if (fn && isUnboundFunctionExpression(fn)) {
         inTry = parser.scope.inTry;
         parser.inScope(/** @type {Identifier[]} */ (fnParams), () => {
            for (const [name, varInfo] of fnRenames) {
               parser.setVariable(name, varInfo);
         parser.inFunctionScope(
            true,
            /** @type {Identifier[]} */ (fnParams),
            () => {
               for (const [name, varInfo] of fnRenames) {
                  parser.setVariable(name, varInfo);
               }
               parser.scope.inTry = /** @type {boolean} */ (inTry);
               if (fn.body.type === "BlockStatement") {
                  parser.detectMode(fn.body.body);
                  const prev = parser.prevStatement;
                  parser.preWalkStatement(fn.body);
                  parser.prevStatement = prev;
                  parser.walkStatement(fn.body);
               } else {
                  parser.walkExpression(fn.body);
               }
            }
            parser.scope.inTry = /** @type {boolean} */ (inTry);
            if (fn.body.type === "BlockStatement") {
               parser.detectMode(fn.body.body);
               const prev = parser.prevStatement;
               parser.preWalkStatement(fn.body);
               parser.prevStatement = prev;
               parser.walkStatement(fn.body);
            } else {
               parser.walkExpression(fn.body);
            }
         });
         );
      } else if (fn && isBoundFunctionExpression(fn)) {
         inTry = parser.scope.inTry;
@@ -410,7 +429,8 @@
            /** @type {FunctionExpression} */
            (/** @type {MemberExpression} */ (fn.callee).object);
         parser.inScope(
         parser.inFunctionScope(
            true,
            /** @type {Identifier[]} */
            (object.params).filter(
               (i) => !["require", "module", "exports"].includes(i.name)
@@ -453,6 +473,7 @@
   }
   /**
    * New define dependency.
    * @param {Range} range range
    * @param {Range | null} arrayRange array range
    * @param {Range | null} functionRange function range
@@ -477,6 +498,7 @@
   }
   /**
    * New require array dependency.
    * @param {(string | LocalModuleDependency | AMDRequireItemDependency)[]} depsArray deps array
    * @param {Range} range range
    * @returns {AMDRequireArrayDependency} AMDRequireArrayDependency
@@ -486,6 +508,7 @@
   }
   /**
    * New require item dependency.
    * @param {string} request request
    * @param {Range=} range range
    * @returns {AMDRequireItemDependency} AMDRequireItemDependency