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