| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 | /*	MIT License http://www.opensource.org/licenses/mit-license.php	Author Tobias Koppers @sokra*/"use strict";const ConstDependency = require("./dependencies/ConstDependency");const ParserHelpers = require("./ParserHelpers");const NullFactory = require("./NullFactory");/* eslint-disable camelcase */const REPLACEMENTS = {	__webpack_require__: "__webpack_require__",	__webpack_public_path__: "__webpack_require__.p",	__webpack_modules__: "__webpack_require__.m",	__webpack_chunk_load__: "__webpack_require__.e",	__non_webpack_require__: "require",	__webpack_nonce__: "__webpack_require__.nc",	"require.onError": "__webpack_require__.oe"};const NO_WEBPACK_REQUIRE = {	__non_webpack_require__: true};const REPLACEMENT_TYPES = {	__webpack_public_path__: "string",	__webpack_require__: "function",	__webpack_modules__: "object",	__webpack_chunk_load__: "function",	__webpack_nonce__: "string"};/* eslint-enable camelcase */class APIPlugin {	apply(compiler) {		compiler.hooks.compilation.tap(			"APIPlugin",			(compilation, { normalModuleFactory }) => {				compilation.dependencyFactories.set(ConstDependency, new NullFactory());				compilation.dependencyTemplates.set(					ConstDependency,					new ConstDependency.Template()				);				const handler = parser => {					Object.keys(REPLACEMENTS).forEach(key => {						parser.hooks.expression							.for(key)							.tap(								"APIPlugin",								NO_WEBPACK_REQUIRE[key]									? ParserHelpers.toConstantDependency(											parser,											REPLACEMENTS[key]									  )									: ParserHelpers.toConstantDependencyWithWebpackRequire(											parser,											REPLACEMENTS[key]									  )							);						const type = REPLACEMENT_TYPES[key];						if (type) {							parser.hooks.evaluateTypeof								.for(key)								.tap("APIPlugin", ParserHelpers.evaluateToString(type));						}					});				};				normalModuleFactory.hooks.parser					.for("javascript/auto")					.tap("APIPlugin", handler);				normalModuleFactory.hooks.parser					.for("javascript/dynamic")					.tap("APIPlugin", handler);				normalModuleFactory.hooks.parser					.for("javascript/esm")					.tap("APIPlugin", handler);			}		);	}}module.exports = APIPlugin;
 |