| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 | /*	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;
 |