| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const Template = require("./Template");
 
- const ConstDependency = require("./dependencies/ConstDependency");
 
- const ParserHelpers = require("./ParserHelpers");
 
- const NullFactory = require("./NullFactory");
 
- const REPLACEMENTS = {
 
- 	// eslint-disable-next-line camelcase
 
- 	__webpack_hash__: "__webpack_require__.h",
 
- 	// eslint-disable-next-line camelcase
 
- 	__webpack_chunkname__: "__webpack_require__.cn"
 
- };
 
- const REPLACEMENT_TYPES = {
 
- 	// eslint-disable-next-line camelcase
 
- 	__webpack_hash__: "string",
 
- 	// eslint-disable-next-line camelcase
 
- 	__webpack_chunkname__: "string"
 
- };
 
- class ExtendedAPIPlugin {
 
- 	apply(compiler) {
 
- 		compiler.hooks.compilation.tap(
 
- 			"ExtendedAPIPlugin",
 
- 			(compilation, { normalModuleFactory }) => {
 
- 				compilation.dependencyFactories.set(ConstDependency, new NullFactory());
 
- 				compilation.dependencyTemplates.set(
 
- 					ConstDependency,
 
- 					new ConstDependency.Template()
 
- 				);
 
- 				const mainTemplate = compilation.mainTemplate;
 
- 				mainTemplate.hooks.requireExtensions.tap(
 
- 					"ExtendedAPIPlugin",
 
- 					(source, chunk, hash) => {
 
- 						const buf = [source];
 
- 						buf.push("");
 
- 						buf.push("// __webpack_hash__");
 
- 						buf.push(`${mainTemplate.requireFn}.h = ${JSON.stringify(hash)};`);
 
- 						buf.push("");
 
- 						buf.push("// __webpack_chunkname__");
 
- 						buf.push(
 
- 							`${mainTemplate.requireFn}.cn = ${JSON.stringify(chunk.name)};`
 
- 						);
 
- 						return Template.asString(buf);
 
- 					}
 
- 				);
 
- 				mainTemplate.hooks.globalHash.tap("ExtendedAPIPlugin", () => true);
 
- 				const handler = (parser, parserOptions) => {
 
- 					Object.keys(REPLACEMENTS).forEach(key => {
 
- 						parser.hooks.expression
 
- 							.for(key)
 
- 							.tap(
 
- 								"ExtendedAPIPlugin",
 
- 								ParserHelpers.toConstantDependencyWithWebpackRequire(
 
- 									parser,
 
- 									REPLACEMENTS[key]
 
- 								)
 
- 							);
 
- 						parser.hooks.evaluateTypeof
 
- 							.for(key)
 
- 							.tap(
 
- 								"ExtendedAPIPlugin",
 
- 								ParserHelpers.evaluateToString(REPLACEMENT_TYPES[key])
 
- 							);
 
- 					});
 
- 				};
 
- 				normalModuleFactory.hooks.parser
 
- 					.for("javascript/auto")
 
- 					.tap("ExtendedAPIPlugin", handler);
 
- 				normalModuleFactory.hooks.parser
 
- 					.for("javascript/dynamic")
 
- 					.tap("ExtendedAPIPlugin", handler);
 
- 				normalModuleFactory.hooks.parser
 
- 					.for("javascript/esm")
 
- 					.tap("ExtendedAPIPlugin", handler);
 
- 			}
 
- 		);
 
- 	}
 
- }
 
- module.exports = ExtendedAPIPlugin;
 
 
  |