Server IP : 185.86.78.101 / Your IP : 216.73.216.124 Web Server : Apache System : Linux 675867-vds-valikoshka1996.gmhost.pp.ua 5.4.0-150-generic #167-Ubuntu SMP Mon May 15 17:35:05 UTC 2023 x86_64 User : www ( 1000) PHP Version : 7.4.33 Disable Function : passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /www/wwwroot/mifepriston.org/node_modules/webpack/lib/optimize/ |
Upload File : |
/* MIT License http://www.opensource.org/licenses/mit-license.php Author Tobias Koppers @sokra */ "use strict"; const Queue = require("../util/Queue"); const { intersect } = require("../util/SetHelpers"); const getParentChunksWithModule = (currentChunk, module) => { const chunks = []; const stack = new Set(currentChunk.parentsIterable); for (const chunk of stack) { if (chunk.containsModule(module)) { chunks.push(chunk); } else { for (const parent of chunk.parentsIterable) { stack.add(parent); } } } return chunks; }; class RemoveParentModulesPlugin { apply(compiler) { compiler.hooks.compilation.tap("RemoveParentModulesPlugin", compilation => { const handler = (chunks, chunkGroups) => { const queue = new Queue(); const availableModulesMap = new WeakMap(); for (const chunkGroup of compilation.entrypoints.values()) { // initialize available modules for chunks without parents availableModulesMap.set(chunkGroup, new Set()); for (const child of chunkGroup.childrenIterable) { queue.enqueue(child); } } while (queue.length > 0) { const chunkGroup = queue.dequeue(); let availableModules = availableModulesMap.get(chunkGroup); let changed = false; for (const parent of chunkGroup.parentsIterable) { const availableModulesInParent = availableModulesMap.get(parent); if (availableModulesInParent !== undefined) { // If we know the available modules in parent: process these if (availableModules === undefined) { // if we have not own info yet: create new entry availableModules = new Set(availableModulesInParent); for (const chunk of parent.chunks) { for (const m of chunk.modulesIterable) { availableModules.add(m); } } availableModulesMap.set(chunkGroup, availableModules); changed = true; } else { for (const m of availableModules) { if ( !parent.containsModule(m) && !availableModulesInParent.has(m) ) { availableModules.delete(m); changed = true; } } } } } if (changed) { // if something changed: enqueue our children for (const child of chunkGroup.childrenIterable) { queue.enqueue(child); } } } // now we have available modules for every chunk for (const chunk of chunks) { const availableModulesSets = Array.from( chunk.groupsIterable, chunkGroup => availableModulesMap.get(chunkGroup) ); if (availableModulesSets.some(s => s === undefined)) continue; // No info about this chunk group const availableModules = availableModulesSets.length === 1 ? availableModulesSets[0] : intersect(availableModulesSets); const numberOfModules = chunk.getNumberOfModules(); const toRemove = new Set(); if (numberOfModules < availableModules.size) { for (const m of chunk.modulesIterable) { if (availableModules.has(m)) { toRemove.add(m); } } } else { for (const m of availableModules) { if (chunk.containsModule(m)) { toRemove.add(m); } } } for (const module of toRemove) { module.rewriteChunkInReasons( chunk, getParentChunksWithModule(chunk, module) ); chunk.removeModule(module); } } }; compilation.hooks.optimizeChunksBasic.tap( "RemoveParentModulesPlugin", handler ); compilation.hooks.optimizeExtractedChunksBasic.tap( "RemoveParentModulesPlugin", handler ); }); } } module.exports = RemoveParentModulesPlugin;