| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const RequireEnsureItemDependency = require("./RequireEnsureItemDependency");const RequireEnsureDependency = require("./RequireEnsureDependency");const NullFactory = require("../NullFactory");const RequireEnsureDependenciesBlockParserPlugin = require("./RequireEnsureDependenciesBlockParserPlugin");const ParserHelpers = require("../ParserHelpers");class RequireEnsurePlugin {	apply(compiler) {		compiler.hooks.compilation.tap(			"RequireEnsurePlugin",			(compilation, { normalModuleFactory }) => {				compilation.dependencyFactories.set(					RequireEnsureItemDependency,					normalModuleFactory				);				compilation.dependencyTemplates.set(					RequireEnsureItemDependency,					new RequireEnsureItemDependency.Template()				);				compilation.dependencyFactories.set(					RequireEnsureDependency,					new NullFactory()				);				compilation.dependencyTemplates.set(					RequireEnsureDependency,					new RequireEnsureDependency.Template()				);				const handler = (parser, parserOptions) => {					if (						parserOptions.requireEnsure !== undefined &&						!parserOptions.requireEnsure					)						return;					new RequireEnsureDependenciesBlockParserPlugin().apply(parser);					parser.hooks.evaluateTypeof						.for("require.ensure")						.tap(							"RequireEnsurePlugin",							ParserHelpers.evaluateToString("function")						);					parser.hooks.typeof						.for("require.ensure")						.tap(							"RequireEnsurePlugin",							ParserHelpers.toConstantDependency(								parser,								JSON.stringify("function")							)						);				};				normalModuleFactory.hooks.parser					.for("javascript/auto")					.tap("RequireEnsurePlugin", handler);				normalModuleFactory.hooks.parser					.for("javascript/dynamic")					.tap("RequireEnsurePlugin", handler);			}		);	}}module.exports = RequireEnsurePlugin;
 |