mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| const { promisify } = require("util");
 | |
| 
 | |
| /** @type {import("../../../../").LoaderDefinitionFunction} */
 | |
| exports.default = function (source) {
 | |
| 	const content = JSON.parse(source);
 | |
| 	// content is one reference or an array of references
 | |
| 	const refs = Array.isArray(content) ? content : [content];
 | |
| 	const callback = this.async();
 | |
| 	const loadModulePromise = promisify(this.loadModule.bind(this));
 | |
| 
 | |
| 	async function loadReferencedModules() {
 | |
| 		// Modules are loaded sequentially as the false-positive circular reference
 | |
| 		// bug from https://github.com/webpack/webpack/issues/14379 doesn't occur if
 | |
| 		// they are loaded in parallel.
 | |
| 		const loadedRefs = []
 | |
| 		for(const ref of refs) {
 | |
| 			try {
 | |
| 				const source = await loadModulePromise("../loader!" + ref);
 | |
| 				loadedRefs.push([ref, JSON.parse(source)]);
 | |
| 			} catch(_err) {
 | |
| 				const err = /** @type {Error} */ (_err);
 | |
| 				loadedRefs.push([ref, `err: ${err && err.message}`]);
 | |
| 			}
 | |
| 		}
 | |
| 		return loadedRefs;
 | |
| 	}
 | |
| 
 | |
| 	loadReferencedModules().then((loadResults) => {
 | |
| 		callback(null, JSON.stringify(loadResults));
 | |
| 	});
 | |
| };
 |