You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							143 lines
						
					
					
						
							4.6 KiB
						
					
					
				
			
		
		
	
	
							143 lines
						
					
					
						
							4.6 KiB
						
					
					
				/* | 
						|
	MIT License http://www.opensource.org/licenses/mit-license.php | 
						|
	Author Tobias Koppers @sokra | 
						|
*/ | 
						|
"use strict"; | 
						|
const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency"); | 
						|
const HarmonyInitDependency = require("./HarmonyInitDependency"); | 
						|
const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDependency"); | 
						|
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency"); | 
						|
const HarmonyExportHeaderDependency = require("./HarmonyExportHeaderDependency"); | 
						|
const HarmonyExportExpressionDependency = require("./HarmonyExportExpressionDependency"); | 
						|
const HarmonyExportSpecifierDependency = require("./HarmonyExportSpecifierDependency"); | 
						|
const HarmonyExportImportedSpecifierDependency = require("./HarmonyExportImportedSpecifierDependency"); | 
						|
const HarmonyAcceptDependency = require("./HarmonyAcceptDependency"); | 
						|
const HarmonyAcceptImportDependency = require("./HarmonyAcceptImportDependency"); | 
						|
 | 
						|
const NullFactory = require("../NullFactory"); | 
						|
 | 
						|
const HarmonyDetectionParserPlugin = require("./HarmonyDetectionParserPlugin"); | 
						|
const HarmonyImportDependencyParserPlugin = require("./HarmonyImportDependencyParserPlugin"); | 
						|
const HarmonyExportDependencyParserPlugin = require("./HarmonyExportDependencyParserPlugin"); | 
						|
const HarmonyTopLevelThisParserPlugin = require("./HarmonyTopLevelThisParserPlugin"); | 
						|
 | 
						|
class HarmonyModulesPlugin { | 
						|
	constructor(options) { | 
						|
		this.options = options; | 
						|
	} | 
						|
 | 
						|
	apply(compiler) { | 
						|
		compiler.hooks.compilation.tap( | 
						|
			"HarmonyModulesPlugin", | 
						|
			(compilation, { normalModuleFactory }) => { | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyCompatibilityDependency, | 
						|
					new NullFactory() | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyCompatibilityDependency, | 
						|
					new HarmonyCompatibilityDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyInitDependency, | 
						|
					new NullFactory() | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyInitDependency, | 
						|
					new HarmonyInitDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyImportSideEffectDependency, | 
						|
					normalModuleFactory | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyImportSideEffectDependency, | 
						|
					new HarmonyImportSideEffectDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyImportSpecifierDependency, | 
						|
					normalModuleFactory | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyImportSpecifierDependency, | 
						|
					new HarmonyImportSpecifierDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyExportHeaderDependency, | 
						|
					new NullFactory() | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyExportHeaderDependency, | 
						|
					new HarmonyExportHeaderDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyExportExpressionDependency, | 
						|
					new NullFactory() | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyExportExpressionDependency, | 
						|
					new HarmonyExportExpressionDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyExportSpecifierDependency, | 
						|
					new NullFactory() | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyExportSpecifierDependency, | 
						|
					new HarmonyExportSpecifierDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyExportImportedSpecifierDependency, | 
						|
					normalModuleFactory | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyExportImportedSpecifierDependency, | 
						|
					new HarmonyExportImportedSpecifierDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyAcceptDependency, | 
						|
					new NullFactory() | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyAcceptDependency, | 
						|
					new HarmonyAcceptDependency.Template() | 
						|
				); | 
						|
 | 
						|
				compilation.dependencyFactories.set( | 
						|
					HarmonyAcceptImportDependency, | 
						|
					normalModuleFactory | 
						|
				); | 
						|
				compilation.dependencyTemplates.set( | 
						|
					HarmonyAcceptImportDependency, | 
						|
					new HarmonyAcceptImportDependency.Template() | 
						|
				); | 
						|
 | 
						|
				const handler = (parser, parserOptions) => { | 
						|
					if (parserOptions.harmony !== undefined && !parserOptions.harmony) | 
						|
						return; | 
						|
 | 
						|
					new HarmonyDetectionParserPlugin().apply(parser); | 
						|
					new HarmonyImportDependencyParserPlugin(this.options).apply(parser); | 
						|
					new HarmonyExportDependencyParserPlugin(this.options).apply(parser); | 
						|
					new HarmonyTopLevelThisParserPlugin().apply(parser); | 
						|
				}; | 
						|
 | 
						|
				normalModuleFactory.hooks.parser | 
						|
					.for("javascript/auto") | 
						|
					.tap("HarmonyModulesPlugin", handler); | 
						|
				normalModuleFactory.hooks.parser | 
						|
					.for("javascript/esm") | 
						|
					.tap("HarmonyModulesPlugin", handler); | 
						|
			} | 
						|
		); | 
						|
	} | 
						|
} | 
						|
module.exports = HarmonyModulesPlugin;
 | 
						|
 |