| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Ivan Kopeykin @vankop*/"use strict";const IgnoreErrorModuleFactory = require("./IgnoreErrorModuleFactory");const WebpackIsIncludedDependency = require("./dependencies/WebpackIsIncludedDependency");const {	toConstantDependency} = require("./javascript/JavascriptParserHelpers");/** @typedef {import("enhanced-resolve/lib/Resolver")} Resolver *//** @typedef {import("./Compiler")} Compiler *//** @typedef {import("./Module")} Module *//** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */class WebpackIsIncludedPlugin {	/**	 * @param {Compiler} compiler the compiler instance	 * @returns {void}	 */	apply(compiler) {		compiler.hooks.compilation.tap(			"WebpackIsIncludedPlugin",			(compilation, { normalModuleFactory }) => {				compilation.dependencyFactories.set(					WebpackIsIncludedDependency,					new IgnoreErrorModuleFactory(normalModuleFactory)				);				compilation.dependencyTemplates.set(					WebpackIsIncludedDependency,					new WebpackIsIncludedDependency.Template()				);				/**				 * @param {JavascriptParser} parser the parser				 * @returns {void}				 */				const handler = parser => {					parser.hooks.call						.for("__webpack_is_included__")						.tap("WebpackIsIncludedPlugin", expr => {							if (								expr.type !== "CallExpression" ||								expr.arguments.length !== 1 ||								expr.arguments[0].type === "SpreadElement"							)								return;							const request = parser.evaluateExpression(expr.arguments[0]);							if (!request.isString()) return;							const dep = new WebpackIsIncludedDependency(								request.string,								expr.range							);							dep.loc = expr.loc;							parser.state.module.addDependency(dep);							return true;						});					parser.hooks.typeof						.for("__webpack_is_included__")						.tap(							"WebpackIsIncludedPlugin",							toConstantDependency(parser, JSON.stringify("function"))						);				};				normalModuleFactory.hooks.parser					.for("javascript/auto")					.tap("WebpackIsIncludedPlugin", handler);				normalModuleFactory.hooks.parser					.for("javascript/dynamic")					.tap("WebpackIsIncludedPlugin", handler);				normalModuleFactory.hooks.parser					.for("javascript/esm")					.tap("WebpackIsIncludedPlugin", handler);			}		);	}}module.exports = WebpackIsIncludedPlugin;
 |