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/web/FetchCompileAsyncWasmPlugin.js |   34 +++++++++++++++++++++++++++++++++-
 1 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/node_modules/webpack/lib/web/FetchCompileAsyncWasmPlugin.js b/node_modules/webpack/lib/web/FetchCompileAsyncWasmPlugin.js
index 088b7b5..ef4011c 100644
--- a/node_modules/webpack/lib/web/FetchCompileAsyncWasmPlugin.js
+++ b/node_modules/webpack/lib/web/FetchCompileAsyncWasmPlugin.js
@@ -7,6 +7,7 @@
 
 const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
 const RuntimeGlobals = require("../RuntimeGlobals");
+const AsyncWasmCompileRuntimeModule = require("../wasm-async/AsyncWasmCompileRuntimeModule");
 const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
 
 /** @typedef {import("../Chunk")} Chunk */
@@ -14,9 +15,14 @@
 
 const PLUGIN_NAME = "FetchCompileAsyncWasmPlugin";
 
+/**
+ * Enables asynchronous WebAssembly loading through `fetch` for environments
+ * that can instantiate fetched binaries at runtime.
+ */
 class FetchCompileAsyncWasmPlugin {
 	/**
-	 * Apply the plugin
+	 * Registers compilation hooks that attach the async fetch-based wasm runtime
+	 * to chunks containing async WebAssembly modules.
 	 * @param {Compiler} compiler the compiler instance
 	 * @returns {void}
 	 */
@@ -24,6 +30,8 @@
 		compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
 			const globalWasmLoading = compilation.outputOptions.wasmLoading;
 			/**
+			 * Determines whether the chunk should load async WebAssembly binaries
+			 * through the `fetch` backend.
 			 * @param {Chunk} chunk chunk
 			 * @returns {boolean} true, if wasm loading is enabled for the chunk
 			 */
@@ -36,6 +44,8 @@
 				return wasmLoading === "fetch";
 			};
 			/**
+			 * Generates the runtime expression that downloads the emitted wasm
+			 * binary for an async WebAssembly module.
 			 * @param {string} path path to the wasm file
 			 * @returns {string} code to load the wasm file
 			 */
@@ -63,6 +73,28 @@
 						})
 					);
 				});
+
+			compilation.hooks.runtimeRequirementInTree
+				.for(RuntimeGlobals.compileWasm)
+				.tap(PLUGIN_NAME, (chunk, set, { chunkGraph }) => {
+					if (!isEnabledForChunk(chunk)) return;
+					if (
+						!chunkGraph.hasModuleInGraph(
+							chunk,
+							(m) => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
+						)
+					) {
+						return;
+					}
+					set.add(RuntimeGlobals.publicPath);
+					compilation.addRuntimeModule(
+						chunk,
+						new AsyncWasmCompileRuntimeModule({
+							generateLoadBinaryCode,
+							supportsStreaming: true
+						})
+					);
+				});
 		});
 	}
 }

--
Gitblit v1.9.3