51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/*
 | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php
 | 
						|
	Author Haijie Xie @hai-x
 | 
						|
*/
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
 | 
						|
 | 
						|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
 | 
						|
/** @typedef {import("../Module")} Module */
 | 
						|
 | 
						|
/**
 | 
						|
 * @param {ModuleGraph} moduleGraph module graph
 | 
						|
 * @param {Module} module module
 | 
						|
 * @returns {Set<Module>} set of modules
 | 
						|
 */
 | 
						|
const getOutgoingAsyncModules = (moduleGraph, module) => {
 | 
						|
	/** @type {Set<Module>} */
 | 
						|
	const set = new Set();
 | 
						|
	/** @type {Set<Module>} */
 | 
						|
	const seen = new Set();
 | 
						|
	(function g(/** @type {Module} */ module) {
 | 
						|
		if (!moduleGraph.isAsync(module) || seen.has(module)) return;
 | 
						|
		seen.add(module);
 | 
						|
		if (module.buildMeta && module.buildMeta.async) {
 | 
						|
			set.add(module);
 | 
						|
		} else {
 | 
						|
			const outgoingConnectionMap =
 | 
						|
				moduleGraph.getOutgoingConnectionsByModule(module);
 | 
						|
			if (outgoingConnectionMap) {
 | 
						|
				for (const [module, connections] of outgoingConnectionMap) {
 | 
						|
					if (
 | 
						|
						connections.some(
 | 
						|
							(c) =>
 | 
						|
								c.dependency instanceof HarmonyImportDependency &&
 | 
						|
								c.isTargetActive(undefined)
 | 
						|
						) &&
 | 
						|
						module
 | 
						|
					) {
 | 
						|
						g(module);
 | 
						|
					}
 | 
						|
				}
 | 
						|
			}
 | 
						|
		}
 | 
						|
	})(module);
 | 
						|
	return set;
 | 
						|
};
 | 
						|
 | 
						|
module.exports.getOutgoingAsyncModules = getOutgoingAsyncModules;
 |