From 9bce51f651aad297ef9eb6df832bfdaf1de05d84 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期三, 22 四月 2026 14:27:54 +0800
Subject: [PATCH] 青岛推送

---
 node_modules/webpack/lib/dependencies/ImportParserPlugin.js |   51 +++++++++++++++++++++------------------------------
 1 files changed, 21 insertions(+), 30 deletions(-)

diff --git a/node_modules/webpack/lib/dependencies/ImportParserPlugin.js b/node_modules/webpack/lib/dependencies/ImportParserPlugin.js
index 15d9235..ef40f80 100644
--- a/node_modules/webpack/lib/dependencies/ImportParserPlugin.js
+++ b/node_modules/webpack/lib/dependencies/ImportParserPlugin.js
@@ -14,10 +14,11 @@
 } = require("../javascript/JavascriptParser");
 const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
 const ContextDependencyHelpers = require("./ContextDependencyHelpers");
+const { getNonOptionalPart } = require("./HarmonyImportDependency");
 const ImportContextDependency = require("./ImportContextDependency");
 const ImportDependency = require("./ImportDependency");
 const ImportEagerDependency = require("./ImportEagerDependency");
-const { ImportPhaseUtils, createGetImportPhase } = require("./ImportPhase");
+const { createGetImportPhase } = require("./ImportPhase");
 const ImportWeakDependency = require("./ImportWeakDependency");
 
 /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
@@ -29,7 +30,7 @@
 /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
 /** @typedef {import("../javascript/JavascriptParser").ImportExpression} ImportExpression */
 /** @typedef {import("../javascript/JavascriptParser").Range} Range */
-/** @typedef {import("../javascript/JavascriptParser").ParserState} ParserState */
+/** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
 /** @typedef {import("../javascript/JavascriptParser").Members} Members */
 /** @typedef {import("../javascript/JavascriptParser").MembersOptionals} MembersOptionals */
 /** @typedef {import("../javascript/JavascriptParser").ArrowFunctionExpression} ArrowFunctionExpression */
@@ -41,11 +42,12 @@
 /** @typedef {{ references: RawReferencedExports, expression: ImportExpression }} ImportSettings */
 /** @typedef {WeakMap<ImportExpression, RawReferencedExports>} State */
 
-/** @type {WeakMap<ParserState, State>} */
+/** @type {WeakMap<JavascriptParserState, State>} */
 const parserStateMap = new WeakMap();
 const dynamicImportTag = Symbol("import()");
 
 /**
+ * Returns import parser plugin state.
  * @param {JavascriptParser} parser javascript parser
  * @returns {State} import parser plugin state
  */
@@ -57,6 +59,7 @@
 }
 
 /**
+ * Tag dynamic import referenced.
  * @param {JavascriptParser} parser javascript parser
  * @param {ImportExpression} importCall import expression
  * @param {string} variableName variable name
@@ -77,6 +80,7 @@
 }
 
 /**
+ * Gets fulfilled callback namespace obj.
  * @param {CallExpression} importThen import().then() call
  * @returns {Identifier | ObjectPattern | undefined} the dynamic imported namespace obj
  */
@@ -95,6 +99,7 @@
 }
 
 /**
+ * Walk import then fulfilled callback.
  * @param {JavascriptParser} parser javascript parser
  * @param {ImportExpression} importCall import expression
  * @param {ArrowFunctionExpression | FunctionExpression} fulfilledCallback the fulfilled callback
@@ -156,6 +161,7 @@
 }
 
 /**
+ * Exports from enumerable.
  * @template T
  * @param {Iterable<T>} enumerable enumerable
  * @returns {T[][]} array of array
@@ -167,6 +173,7 @@
 
 class ImportParserPlugin {
 	/**
+	 * Creates an instance of ImportParserPlugin.
 	 * @param {JavascriptParserOptions} options options
 	 */
 	constructor(options) {
@@ -174,21 +181,11 @@
 	}
 
 	/**
+	 * Applies the plugin by registering its hooks on the compiler.
 	 * @param {JavascriptParser} parser the parser
 	 * @returns {void}
 	 */
 	apply(parser) {
-		/**
-		 * @param {Members} members members
-		 * @param {MembersOptionals} membersOptionals members Optionals
-		 * @returns {string[]} a non optional part
-		 */
-		function getNonOptionalPart(members, membersOptionals) {
-			let i = 0;
-			while (i < members.length && membersOptionals[i] === false) i++;
-			return i !== members.length ? members.slice(0, i) : members;
-		}
-
 		parser.hooks.collectDestructuringAssignmentProperties.tap(
 			PLUGIN_NAME,
 			(expr) => {
@@ -262,11 +259,14 @@
 		parser.hooks.importCall.tap(PLUGIN_NAME, (expr, importThen) => {
 			const param = parser.evaluateExpression(expr.source);
 
+			/** @type {null | string} */
 			let chunkName = null;
 			let mode = /** @type {ContextMode} */ (this.options.dynamicImportMode);
+			/** @type {null | RegExp} */
 			let include = null;
+			/** @type {null | RegExp} */
 			let exclude = null;
-			/** @type {RawReferencedExports | null} */
+			/** @type {null | RawReferencedExports} */
 			let exports = null;
 			/** @type {RawChunkGroupOptions} */
 			const groupOptions = {};
@@ -312,11 +312,10 @@
 				}
 			}
 
-			const phase = createGetImportPhase(this.options.deferImport)(
-				parser,
-				expr,
-				() => importOptions
-			);
+			const phase = createGetImportPhase(
+				this.options.deferImport,
+				this.options.sourceImport
+			)(parser, expr, () => importOptions);
 
 			if (importOptions) {
 				if (importOptions.webpackIgnore !== undefined) {
@@ -557,15 +556,6 @@
 					mode = "async-weak";
 				}
 
-				if (ImportPhaseUtils.isDefer(phase)) {
-					parser.state.module.addWarning(
-						new UnsupportedFeatureWarning(
-							"import.defer() is not yet supported for ContextModule (the import path is a dynamic expression).",
-							/** @type {DependencyLocation} */ (expr.loc)
-						)
-					);
-				}
-
 				const dep = ContextDependencyHelpers.create(
 					ImportContextDependency,
 					/** @type {Range} */ (expr.range),
@@ -586,7 +576,8 @@
 						typePrefix: "import()",
 						category: "esm",
 						referencedExports: exports,
-						attributes: getImportAttributes(expr)
+						attributes: getImportAttributes(expr),
+						phase
 					},
 					parser
 				);

--
Gitblit v1.9.3