From 3bd962a6d7f61239c020e2dbbeb7341e5b842dd1 Mon Sep 17 00:00:00 2001
From: WXL <wl_5969728@163.com>
Date: 星期二, 21 四月 2026 11:46:41 +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