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/wasm-async/AsyncWebAssemblyJavascriptGenerator.js | 64 +++++++++++++++++++++++++++++++-
1 files changed, 62 insertions(+), 2 deletions(-)
diff --git a/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js b/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js
index 0c1ae21..a00b760 100644
--- a/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js
+++ b/node_modules/webpack/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js
@@ -8,23 +8,27 @@
const { RawSource } = require("webpack-sources");
const Generator = require("../Generator");
const InitFragment = require("../InitFragment");
-const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypesConstants");
+const { WEBASSEMBLY_TYPES } = require("../ModuleSourceTypeConstants");
const RuntimeGlobals = require("../RuntimeGlobals");
const Template = require("../Template");
const WebAssemblyImportDependency = require("../dependencies/WebAssemblyImportDependency");
/** @typedef {import("webpack-sources").Source} Source */
+/** @typedef {import("./AsyncWebAssemblyModulesPlugin").AsyncWasmModuleClass} AsyncWasmModule */
/** @typedef {import("../Generator").GenerateContext} GenerateContext */
/** @typedef {import("../Module")} Module */
+/** @typedef {import("../Module").SourceType} SourceType */
/** @typedef {import("../Module").SourceTypes} SourceTypes */
/** @typedef {import("../NormalModule")} NormalModule */
/**
+ * Represents the async web assembly javascript generator runtime component.
* @typedef {{ request: string, importVar: string, dependency: WebAssemblyImportDependency }} ImportObjRequestItem
*/
class AsyncWebAssemblyJavascriptGenerator extends Generator {
/**
+ * Returns the source types available for this module.
* @param {NormalModule} module fresh module
* @returns {SourceTypes} available types (do not mutate)
*/
@@ -33,15 +37,23 @@
}
/**
+ * Returns the estimated size for the requested source type.
* @param {NormalModule} module the module
- * @param {string=} type source type
+ * @param {SourceType=} type source type
* @returns {number} estimate size of the module
*/
getSize(module, type) {
+ // it's only estimated so this number is probably fine
+ // Example: m.exports=s.v(e,_.id,"6db474f11db19c35388a")
+ if (/** @type {AsyncWasmModule} */ (module).phase === "source") {
+ return 44;
+ }
+
return 40 + module.dependencies.length * 10;
}
/**
+ * Generates generated code for this runtime module.
* @param {NormalModule} module module for which the code should be generated
* @param {GenerateContext} generateContext context for generate
* @returns {Source | null} generated code
@@ -54,6 +66,12 @@
runtimeRequirements,
runtime
} = generateContext;
+
+ // Check if this is a source phase import
+ if (/** @type {AsyncWasmModule} */ (module).phase === "source") {
+ return this._generateSourcePhase(module, generateContext);
+ }
+
runtimeRequirements.add(RuntimeGlobals.module);
runtimeRequirements.add(RuntimeGlobals.moduleId);
runtimeRequirements.add(RuntimeGlobals.exports);
@@ -198,6 +216,48 @@
}
/**
+ * Generate code for source phase import (returns WebAssembly.Module)
+ * @param {NormalModule} module module for which the code should be generated
+ * @param {GenerateContext} generateContext context for generate
+ * @returns {Source} generated code
+ */
+ _generateSourcePhase(module, generateContext) {
+ const { chunkGraph, runtimeTemplate, runtimeRequirements, runtime } =
+ generateContext;
+
+ runtimeRequirements.add(RuntimeGlobals.module);
+ runtimeRequirements.add(RuntimeGlobals.moduleId);
+ runtimeRequirements.add(RuntimeGlobals.exports);
+ runtimeRequirements.add(RuntimeGlobals.compileWasm);
+ runtimeRequirements.add(RuntimeGlobals.asyncModule);
+ runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
+
+ // Source phase: export default WebAssembly.Module (via compileWasm)
+ const compileCall = `${RuntimeGlobals.compileWasm}(${
+ module.moduleArgument
+ }.id, ${JSON.stringify(chunkGraph.getRenderedModuleHash(module, runtime))})`;
+
+ // Use async module wrapper to handle the Promise from compileWasm
+ return new RawSource(
+ Template.asString([
+ `${RuntimeGlobals.asyncModule}(${
+ module.moduleArgument
+ }, async ${runtimeTemplate.basicFunction(
+ "__webpack_handle_async_dependencies__, __webpack_async_result__",
+ [
+ "try {",
+ `var __webpack_wasm_module__ = await ${compileCall};`,
+ `${RuntimeGlobals.definePropertyGetters}(${module.exportsArgument}, { "default": ${runtimeTemplate.returningFunction("__webpack_wasm_module__")} });`,
+ "__webpack_async_result__();",
+ "} catch(e) { __webpack_async_result__(e); }"
+ ]
+ )}, 1);`
+ ])
+ );
+ }
+
+ /**
+ * Generates fallback output for the provided error condition.
* @param {Error} error the error
* @param {NormalModule} module module for which the code should be generated
* @param {GenerateContext} generateContext context for generate
--
Gitblit v1.9.3