| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 | 
							- /*
 
- 	MIT License http://www.opensource.org/licenses/mit-license.php
 
- 	Author Tobias Koppers @sokra
 
- */
 
- "use strict";
 
- const createHash = require("./util/createHash");
 
- const RequestShortener = require("./RequestShortener");
 
- const getHash = str => {
 
- 	const hash = createHash("md4");
 
- 	hash.update(str);
 
- 	const digest = /** @type {string} */ (hash.digest("hex"));
 
- 	return digest.substr(0, 4);
 
- };
 
- class NamedModulesPlugin {
 
- 	constructor(options) {
 
- 		this.options = options || {};
 
- 	}
 
- 	apply(compiler) {
 
- 		compiler.hooks.compilation.tap("NamedModulesPlugin", compilation => {
 
- 			compilation.hooks.beforeModuleIds.tap("NamedModulesPlugin", modules => {
 
- 				const namedModules = new Map();
 
- 				const context = this.options.context || compiler.options.context;
 
- 				for (const module of modules) {
 
- 					if (module.id === null && module.libIdent) {
 
- 						module.id = module.libIdent({ context });
 
- 					}
 
- 					if (module.id !== null) {
 
- 						const namedModule = namedModules.get(module.id);
 
- 						if (namedModule !== undefined) {
 
- 							namedModule.push(module);
 
- 						} else {
 
- 							namedModules.set(module.id, [module]);
 
- 						}
 
- 					}
 
- 				}
 
- 				for (const namedModule of namedModules.values()) {
 
- 					if (namedModule.length > 1) {
 
- 						for (const module of namedModule) {
 
- 							const requestShortener = new RequestShortener(context);
 
- 							module.id = `${module.id}?${getHash(
 
- 								requestShortener.shorten(module.identifier())
 
- 							)}`;
 
- 						}
 
- 					}
 
- 				}
 
- 			});
 
- 		});
 
- 	}
 
- }
 
- module.exports = NamedModulesPlugin;
 
 
  |