aboutsummaryrefslogtreecommitdiff
path: root/node_modules/webpack/lib/HashedModuleIdsPlugin.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/webpack/lib/HashedModuleIdsPlugin.js')
-rw-r--r--node_modules/webpack/lib/HashedModuleIdsPlugin.js95
1 files changed, 53 insertions, 42 deletions
diff --git a/node_modules/webpack/lib/HashedModuleIdsPlugin.js b/node_modules/webpack/lib/HashedModuleIdsPlugin.js
index 40a491b07..aeb9f1d93 100644
--- a/node_modules/webpack/lib/HashedModuleIdsPlugin.js
+++ b/node_modules/webpack/lib/HashedModuleIdsPlugin.js
@@ -1,42 +1,53 @@
-/*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
-*/
-"use strict";
-const createHash = require("crypto").createHash;
-
-class HashedModuleIdsPlugin {
- constructor(options) {
- this.options = Object.assign({
- hashFunction: "md5",
- hashDigest: "base64",
- hashDigestLength: 4
- }, options);
- }
-
- apply(compiler) {
- const options = this.options;
- compiler.plugin("compilation", (compilation) => {
- const usedIds = new Set();
- compilation.plugin("before-module-ids", (modules) => {
- modules.forEach((module) => {
- if(module.id === null && module.libIdent) {
- const id = module.libIdent({
- context: this.options.context || compiler.options.context
- });
- const hash = createHash(options.hashFunction);
- hash.update(id);
- const hashId = hash.digest(options.hashDigest);
- let len = options.hashDigestLength;
- while(usedIds.has(hashId.substr(0, len)))
- len++;
- module.id = hashId.substr(0, len);
- usedIds.add(module.id);
- }
- });
- });
- });
- }
-}
-
-module.exports = HashedModuleIdsPlugin;
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+const createHash = require("./util/createHash");
+
+const validateOptions = require("schema-utils");
+const schema = require("../schemas/plugins/HashedModuleIdsPlugin.json");
+
+class HashedModuleIdsPlugin {
+ constructor(options) {
+ validateOptions(schema, options || {}, "Hashed Module Ids Plugin");
+
+ this.options = Object.assign(
+ {
+ context: null,
+ hashFunction: "md4",
+ hashDigest: "base64",
+ hashDigestLength: 4
+ },
+ options
+ );
+ }
+
+ apply(compiler) {
+ const options = this.options;
+ compiler.hooks.compilation.tap("HashedModuleIdsPlugin", compilation => {
+ const usedIds = new Set();
+ compilation.hooks.beforeModuleIds.tap(
+ "HashedModuleIdsPlugin",
+ modules => {
+ for (const module of modules) {
+ if (module.id === null && module.libIdent) {
+ const id = module.libIdent({
+ context: this.options.context || compiler.options.context
+ });
+ const hash = createHash(options.hashFunction);
+ hash.update(id);
+ const hashId = hash.digest(options.hashDigest);
+ let len = options.hashDigestLength;
+ while (usedIds.has(hashId.substr(0, len))) len++;
+ module.id = hashId.substr(0, len);
+ usedIds.add(module.id);
+ }
+ }
+ }
+ );
+ });
+ }
+}
+
+module.exports = HashedModuleIdsPlugin;