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/ImportDependency.js |   24 ++++++++++++++++++++++--
 1 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/node_modules/webpack/lib/dependencies/ImportDependency.js b/node_modules/webpack/lib/dependencies/ImportDependency.js
index b0acdbf..0160ea4 100644
--- a/node_modules/webpack/lib/dependencies/ImportDependency.js
+++ b/node_modules/webpack/lib/dependencies/ImportDependency.js
@@ -7,6 +7,7 @@
 
 const Dependency = require("../Dependency");
 const makeSerializable = require("../util/makeSerializable");
+const { ImportPhaseUtils } = require("./ImportPhase");
 const ModuleDependency = require("./ModuleDependency");
 
 /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
@@ -26,6 +27,7 @@
 
 class ImportDependency extends ModuleDependency {
 	/**
+	 * Creates an instance of ImportDependency.
 	 * @param {string} request the request
 	 * @param {Range} range expression range
 	 * @param {RawReferencedExports | null} referencedExports list of referenced exports
@@ -49,12 +51,17 @@
 	}
 
 	/**
+	 * Returns an identifier to merge equal requests.
 	 * @returns {string | null} an identifier to merge equal requests
 	 */
 	getResourceIdentifier() {
 		let str = super.getResourceIdentifier();
+		// We specifically use this check to avoid writing the default (`evaluation` or `0`) value and save memory
+		if (this.phase) {
+			str += `|phase${ImportPhaseUtils.stringify(this.phase)}`;
+		}
 		if (this.attributes) {
-			str += `|importAttributes${JSON.stringify(this.attributes)}`;
+			str += `|attributes${JSON.stringify(this.attributes)}`;
 		}
 		return str;
 	}
@@ -67,6 +74,7 @@
 	 */
 	getReferencedExports(moduleGraph, runtime) {
 		if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
+		/** @type {ReferencedExports} */
 		const refs = [];
 		for (const referencedExport of this.referencedExports) {
 			if (referencedExport[0] === "default") {
@@ -97,6 +105,7 @@
 	}
 
 	/**
+	 * Serializes this instance into the provided serializer context.
 	 * @param {ObjectSerializerContext} context context
 	 */
 	serialize(context) {
@@ -108,6 +117,7 @@
 	}
 
 	/**
+	 * Restores this instance from the provided deserializer context.
 	 * @param {ObjectDeserializerContext} context context
 	 */
 	deserialize(context) {
@@ -125,6 +135,7 @@
 	ModuleDependency.Template
 ) {
 	/**
+	 * Applies the plugin by registering its hooks on the compiler.
 	 * @param {Dependency} dependency the dependency for which the template should be applied
 	 * @param {ReplaceSource} source the current replace source which can be modified
 	 * @param {DependencyTemplateContext} templateContext the context object
@@ -139,7 +150,7 @@
 		const block = /** @type {AsyncDependenciesBlock} */ (
 			moduleGraph.getParentBlock(dep)
 		);
-		const content = runtimeTemplate.moduleNamespacePromise({
+		let content = runtimeTemplate.moduleNamespacePromise({
 			chunkGraph,
 			block,
 			module: /** @type {Module} */ (moduleGraph.getModule(dep)),
@@ -150,6 +161,15 @@
 			runtimeRequirements
 		});
 
+		// For source phase imports, unwrap the default export
+		// import.source() should return the source directly, not a namespace
+		if (ImportPhaseUtils.isSource(dep.phase)) {
+			content = `${content}.then(${runtimeTemplate.returningFunction(
+				'm["default"]',
+				"m"
+			)})`;
+		}
+
 		source.replace(dep.range[0], dep.range[1] - 1, content);
 	}
 };

--
Gitblit v1.9.3