From efbc2ffe6a1ee5ec38a4396305561d6515d0943e Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Fri, 30 Aug 2024 17:21:18 +0800 Subject: node fixes, updates --- .../lib/async-modules/InferAsyncModulesPlugin.js | 55 ++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 node_modules/webpack/lib/async-modules/InferAsyncModulesPlugin.js (limited to 'node_modules/webpack/lib/async-modules/InferAsyncModulesPlugin.js') diff --git a/node_modules/webpack/lib/async-modules/InferAsyncModulesPlugin.js b/node_modules/webpack/lib/async-modules/InferAsyncModulesPlugin.js new file mode 100644 index 00000000..d395e30c --- /dev/null +++ b/node_modules/webpack/lib/async-modules/InferAsyncModulesPlugin.js @@ -0,0 +1,55 @@ +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ + +"use strict"; + +const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency"); + +/** @typedef {import("../Compiler")} Compiler */ +/** @typedef {import("../Module")} Module */ + +class InferAsyncModulesPlugin { + /** + * Apply the plugin + * @param {Compiler} compiler the compiler instance + * @returns {void} + */ + apply(compiler) { + compiler.hooks.compilation.tap("InferAsyncModulesPlugin", compilation => { + const { moduleGraph } = compilation; + compilation.hooks.finishModules.tap( + "InferAsyncModulesPlugin", + modules => { + /** @type {Set} */ + const queue = new Set(); + for (const module of modules) { + if (module.buildMeta && module.buildMeta.async) { + queue.add(module); + } + } + for (const module of queue) { + moduleGraph.setAsync(module); + for (const [ + originModule, + connections + ] of moduleGraph.getIncomingConnectionsByOriginModule(module)) { + if ( + connections.some( + c => + c.dependency instanceof HarmonyImportDependency && + c.isTargetActive(undefined) + ) + ) { + queue.add(/** @type {Module} */ (originModule)); + } + } + } + } + ); + }); + } +} + +module.exports = InferAsyncModulesPlugin; -- cgit v1.2.3