diff options
author | Florian Dold <florian.dold@gmail.com> | 2017-08-14 05:01:11 +0200 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2017-08-14 05:02:09 +0200 |
commit | 363723fc84f7b8477592e0105aeb331ec9a017af (patch) | |
tree | 29f92724f34131bac64d6a318dd7e30612e631c7 /node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js | |
parent | 5634e77ad96bfe1818f6b6ee70b7379652e5487f (diff) |
node_modules
Diffstat (limited to 'node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js')
-rw-r--r-- | node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js | 50 |
1 files changed, 12 insertions, 38 deletions
diff --git a/node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js b/node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js index e73add989..43550819c 100644 --- a/node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js +++ b/node_modules/webpack/lib/optimize/RemoveParentModulesPlugin.js @@ -4,59 +4,31 @@ */
"use strict";
-function chunkContainsModule(chunk, module) {
- const chunks = module.chunks;
- const modules = chunk.modules;
- if(chunks.length < modules.length) {
- return chunks.indexOf(chunk) >= 0;
- } else {
- return modules.indexOf(module) >= 0;
- }
-}
-
function hasModule(chunk, module, checkedChunks) {
- if(chunkContainsModule(chunk, module)) return [chunk];
+ if(chunk.containsModule(module)) return [chunk];
if(chunk.parents.length === 0) return false;
return allHaveModule(chunk.parents.filter((c) => {
- return checkedChunks.indexOf(c) < 0;
+ return !checkedChunks.has(c);
}), module, checkedChunks);
}
function allHaveModule(someChunks, module, checkedChunks) {
- if(!checkedChunks) checkedChunks = [];
- var chunks = [];
+ if(!checkedChunks) checkedChunks = new Set();
+ var chunks = new Set();
for(var i = 0; i < someChunks.length; i++) {
- checkedChunks.push(someChunks[i]);
+ checkedChunks.add(someChunks[i]);
var subChunks = hasModule(someChunks[i], module, checkedChunks);
if(!subChunks) return false;
for(var index = 0; index < subChunks.length; index++) {
var item = subChunks[index];
- if(!chunks.length || chunks.indexOf(item) < 0) {
- chunks.push(item);
- }
+ chunks.add(item);
}
}
return chunks;
}
-function debugIds(chunks) {
- var list = [];
- for(var i = 0; i < chunks.length; i++) {
- var debugId = chunks[i].debugId;
-
- if(typeof debugId !== "number") {
- return "no";
- }
-
- list.push(debugId);
- }
-
- list.sort();
- return list.join(",");
-}
-
class RemoveParentModulesPlugin {
apply(compiler) {
compiler.plugin("compilation", (compilation) => {
@@ -67,19 +39,21 @@ class RemoveParentModulesPlugin { // TODO consider Map when performance has improved https://gist.github.com/sokra/b36098368da7b8f6792fd7c85fca6311
var cache = Object.create(null);
- var modules = chunk.modules.slice();
+ var modules = chunk.getModules();
for(var i = 0; i < modules.length; i++) {
var module = modules[i];
- var dId = debugIds(module.chunks);
+ var dId = module.getChunkIdsIdent();
var parentChunksWithModule;
- if((dId in cache) && dId !== "no") {
+ if(dId === null) {
+ parentChunksWithModule = allHaveModule(chunk.parents, module);
+ } else if(dId in cache) {
parentChunksWithModule = cache[dId];
} else {
parentChunksWithModule = cache[dId] = allHaveModule(chunk.parents, module);
}
if(parentChunksWithModule) {
- module.rewriteChunkInReasons(chunk, parentChunksWithModule);
+ module.rewriteChunkInReasons(chunk, Array.from(parentChunksWithModule));
chunk.removeModule(module);
}
}
|