WXL
4 天以前 2cc85c64f1c64a2dbaeae276a3e2ca8420de76b7
node_modules/webpack/lib/node/ReadFileCompileAsyncWasmPlugin.js
@@ -8,12 +8,14 @@
const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
const RuntimeGlobals = require("../RuntimeGlobals");
const Template = require("../Template");
const AsyncWasmCompileRuntimeModule = require("../wasm-async/AsyncWasmCompileRuntimeModule");
const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
/** @typedef {import("../Chunk")} Chunk */
/** @typedef {import("../Compiler")} Compiler */
/**
 * Defines the read file compile async wasm plugin options type used by this module.
 * @typedef {object} ReadFileCompileAsyncWasmPluginOptions
 * @property {boolean=} import use import?
 */
@@ -22,14 +24,16 @@
class ReadFileCompileAsyncWasmPlugin {
   /**
    * Creates an instance of ReadFileCompileAsyncWasmPlugin.
    * @param {ReadFileCompileAsyncWasmPluginOptions=} options options object
    */
   constructor({ import: useImport = false } = {}) {
      /** @type {boolean} */
      this._import = useImport;
   }
   /**
    * Apply the plugin
    * Applies the plugin by registering its hooks on the compiler.
    * @param {Compiler} compiler the compiler instance
    * @returns {void}
    */
@@ -37,6 +41,7 @@
      compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
         const globalWasmLoading = compilation.outputOptions.wasmLoading;
         /**
          * Checks whether this read file compile async wasm plugin is enabled for chunk.
          * @param {Chunk} chunk chunk
          * @returns {boolean} true, if wasm loading is enabled for the chunk
          */
@@ -115,6 +120,27 @@
                  })
               );
            });
         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;
               }
               compilation.addRuntimeModule(
                  chunk,
                  new AsyncWasmCompileRuntimeModule({
                     generateLoadBinaryCode,
                     supportsStreaming: false
                  })
               );
            });
      });
   }
}