webpack 5.97.1 → 5.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -7,6 +7,9 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
+ const {
11
+ generateJavascriptHMR
12
+ } = require("../hmr/JavascriptHotModuleReplacementHelper");
10
13
  const {
11
14
  chunkHasJs,
12
15
  getChunkFilenameTemplate
@@ -18,6 +21,7 @@ const { getUndoPath } = require("../util/identifier");
18
21
  /** @typedef {import("../Chunk")} Chunk */
19
22
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
20
23
  /** @typedef {import("../Compilation")} Compilation */
24
+ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
21
25
  /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
22
26
 
23
27
  class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
@@ -33,15 +37,16 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
33
37
  * @private
34
38
  * @param {Chunk} chunk chunk
35
39
  * @param {string} rootOutputDir root output directory
40
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
36
41
  * @returns {string} generated code
37
42
  */
38
- _generateBaseUri(chunk, rootOutputDir) {
43
+ _generateBaseUri(chunk, rootOutputDir, runtimeTemplate) {
39
44
  const options = chunk.getEntryOptions();
40
45
  if (options && options.baseUri) {
41
46
  return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
42
47
  }
43
48
 
44
- return `${RuntimeGlobals.baseURI} = require("url").pathToFileURL(${
49
+ return `${RuntimeGlobals.baseURI} = require(${runtimeTemplate.renderNodePrefixForCoreModule("url")}).pathToFileURL(${
45
50
  rootOutputDir
46
51
  ? `__dirname + ${JSON.stringify(`/${rootOutputDir}`)}`
47
52
  : "__filename"
@@ -86,7 +91,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
86
91
  );
87
92
  const rootOutputDir = getUndoPath(
88
93
  outputName,
89
- /** @type {string} */ (compilation.outputOptions.path),
94
+ compilation.outputOptions.path,
90
95
  false
91
96
  );
92
97
 
@@ -96,7 +101,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
96
101
 
97
102
  return Template.asString([
98
103
  withBaseURI
99
- ? this._generateBaseUri(chunk, rootOutputDir)
104
+ ? this._generateBaseUri(chunk, rootOutputDir, runtimeTemplate)
100
105
  : "// no baseURI",
101
106
  "",
102
107
  "// object to store loaded chunks",
@@ -105,7 +110,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
105
110
  stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
106
111
  }{`,
107
112
  Template.indent(
108
- Array.from(initialChunkIds, id => `${JSON.stringify(id)}: 0`).join(
113
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
109
114
  ",\n"
110
115
  )
111
116
  ),
@@ -168,17 +173,17 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
168
173
  "var promise = new Promise(function(resolve, reject) {",
169
174
  Template.indent([
170
175
  "installedChunkData = installedChunks[chunkId] = [resolve, reject];",
171
- `var filename = require('path').join(__dirname, ${JSON.stringify(
176
+ `var filename = require(${runtimeTemplate.renderNodePrefixForCoreModule("path")}).join(__dirname, ${JSON.stringify(
172
177
  rootOutputDir
173
178
  )} + ${
174
179
  RuntimeGlobals.getChunkScriptFilename
175
180
  }(chunkId));`,
176
- "require('fs').readFile(filename, 'utf-8', function(err, content) {",
181
+ `require(${runtimeTemplate.renderNodePrefixForCoreModule("fs")}).readFile(filename, 'utf-8', function(err, content) {`,
177
182
  Template.indent([
178
183
  "if(err) return reject(err);",
179
184
  "var chunk = {};",
180
- "require('vm').runInThisContext('(function(exports, require, __dirname, __filename) {' + content + '\\n})', filename)" +
181
- "(chunk, require, require('path').dirname(filename), filename);",
185
+ `require(${runtimeTemplate.renderNodePrefixForCoreModule("vm")}).runInThisContext('(function(exports, require, __dirname, __filename) {' + content + '\\n})', filename)` +
186
+ `(chunk, require, require(${runtimeTemplate.renderNodePrefixForCoreModule("path")}).dirname(filename), filename);`,
182
187
  "installChunk(chunk);"
183
188
  ]),
184
189
  "});"
@@ -212,15 +217,15 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
212
217
  Template.indent([
213
218
  "return new Promise(function(resolve, reject) {",
214
219
  Template.indent([
215
- `var filename = require('path').join(__dirname, ${JSON.stringify(
220
+ `var filename = require(${runtimeTemplate.renderNodePrefixForCoreModule("path")}).join(__dirname, ${JSON.stringify(
216
221
  rootOutputDir
217
222
  )} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId));`,
218
- "require('fs').readFile(filename, 'utf-8', function(err, content) {",
223
+ `require(${runtimeTemplate.renderNodePrefixForCoreModule("fs")}).readFile(filename, 'utf-8', function(err, content) {`,
219
224
  Template.indent([
220
225
  "if(err) return reject(err);",
221
226
  "var update = {};",
222
- "require('vm').runInThisContext('(function(exports, require, __dirname, __filename) {' + content + '\\n})', filename)" +
223
- "(update, require, require('path').dirname(filename), filename);",
227
+ `require(${runtimeTemplate.renderNodePrefixForCoreModule("vm")}).runInThisContext('(function(exports, require, __dirname, __filename) {' + content + '\\n})', filename)` +
228
+ `(update, require, require(${runtimeTemplate.renderNodePrefixForCoreModule("path")}).dirname(filename), filename);`,
224
229
  "var updatedModules = update.modules;",
225
230
  "var runtime = update.runtime;",
226
231
  "for(var moduleId in updatedModules) {",
@@ -242,28 +247,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
242
247
  ]),
243
248
  "}",
244
249
  "",
245
- Template.getFunctionContent(
246
- require("../hmr/JavascriptHotModuleReplacement.runtime.js")
247
- )
248
- .replace(/\$key\$/g, "readFileVm")
249
- .replace(/\$installedChunks\$/g, "installedChunks")
250
- .replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
251
- .replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
252
- .replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
253
- .replace(
254
- /\$ensureChunkHandlers\$/g,
255
- RuntimeGlobals.ensureChunkHandlers
256
- )
257
- .replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
258
- .replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
259
- .replace(
260
- /\$hmrDownloadUpdateHandlers\$/g,
261
- RuntimeGlobals.hmrDownloadUpdateHandlers
262
- )
263
- .replace(
264
- /\$hmrInvalidateModuleHandlers\$/g,
265
- RuntimeGlobals.hmrInvalidateModuleHandlers
266
- )
250
+ generateJavascriptHMR("readFileVm")
267
251
  ])
268
252
  : "// no HMR",
269
253
  "",
@@ -273,14 +257,14 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
273
257
  Template.indent([
274
258
  "return new Promise(function(resolve, reject) {",
275
259
  Template.indent([
276
- `var filename = require('path').join(__dirname, ${JSON.stringify(
260
+ `var filename = require(${runtimeTemplate.renderNodePrefixForCoreModule("path")}).join(__dirname, ${JSON.stringify(
277
261
  rootOutputDir
278
262
  )} + ${RuntimeGlobals.getUpdateManifestFilename}());`,
279
- "require('fs').readFile(filename, 'utf-8', function(err, content) {",
263
+ `require(${runtimeTemplate.renderNodePrefixForCoreModule("fs")}).readFile(filename, 'utf-8', function(err, content) {`,
280
264
  Template.indent([
281
265
  "if(err) {",
282
266
  Template.indent([
283
- 'if(err.code === "ENOENT") return resolve();',
267
+ 'if(["MODULE_NOT_FOUND", "ENOENT"].includes(err.code)) return resolve();',
284
268
  "return reject(err);"
285
269
  ]),
286
270
  "}",
@@ -15,14 +15,14 @@ const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRun
15
15
 
16
16
  /**
17
17
  * @typedef {object} ReadFileCompileAsyncWasmPluginOptions
18
- * @property {boolean} [import] use import?
18
+ * @property {boolean=} import use import?
19
19
  */
20
20
 
21
21
  const PLUGIN_NAME = "ReadFileCompileAsyncWasmPlugin";
22
22
 
23
23
  class ReadFileCompileAsyncWasmPlugin {
24
24
  /**
25
- * @param {ReadFileCompileAsyncWasmPluginOptions} [options] options object
25
+ * @param {ReadFileCompileAsyncWasmPluginOptions=} options options object
26
26
  */
27
27
  constructor({ import: useImport = false } = {}) {
28
28
  this._import = useImport;
@@ -34,13 +34,13 @@ class ReadFileCompileAsyncWasmPlugin {
34
34
  * @returns {void}
35
35
  */
36
36
  apply(compiler) {
37
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
37
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
38
38
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
39
39
  /**
40
40
  * @param {Chunk} chunk chunk
41
41
  * @returns {boolean} true, if wasm loading is enabled for the chunk
42
42
  */
43
- const isEnabledForChunk = chunk => {
43
+ const isEnabledForChunk = (chunk) => {
44
44
  const options = chunk.getEntryOptions();
45
45
  const wasmLoading =
46
46
  options && options.wasmLoading !== undefined
@@ -50,11 +50,10 @@ class ReadFileCompileAsyncWasmPlugin {
50
50
  };
51
51
 
52
52
  /**
53
- * @param {string} path path to wasm file
54
- * @returns {string} generated code to load the wasm file
53
+ * @type {(path: string) => string} callback to generate code to load the wasm file
55
54
  */
56
55
  const generateLoadBinaryCode = this._import
57
- ? path =>
56
+ ? (path) =>
58
57
  Template.asString([
59
58
  "Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
60
59
  Template.indent([
@@ -71,14 +70,14 @@ class ReadFileCompileAsyncWasmPlugin {
71
70
  ]),
72
71
  "}))"
73
72
  ])
74
- : path =>
73
+ : (path) =>
75
74
  Template.asString([
76
75
  "new Promise(function (resolve, reject) {",
77
76
  Template.indent([
78
77
  "try {",
79
78
  Template.indent([
80
- "var { readFile } = require('fs');",
81
- "var { join } = require('path');",
79
+ `var { readFile } = require(${compilation.runtimeTemplate.renderNodePrefixForCoreModule("fs")});`,
80
+ `var { join } = require(${compilation.runtimeTemplate.renderNodePrefixForCoreModule("path")});`,
82
81
  "",
83
82
  `readFile(join(__dirname, ${path}), function(err, buffer){`,
84
83
  Template.indent([
@@ -103,7 +102,7 @@ class ReadFileCompileAsyncWasmPlugin {
103
102
  if (
104
103
  !chunkGraph.hasModuleInGraph(
105
104
  chunk,
106
- m => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
105
+ (m) => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
107
106
  )
108
107
  ) {
109
108
  return;
@@ -15,17 +15,15 @@ const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRunt
15
15
 
16
16
  /**
17
17
  * @typedef {object} ReadFileCompileWasmPluginOptions
18
- * @property {boolean} [mangleImports] mangle imports
19
- * @property {boolean} [import] use import?
18
+ * @property {boolean=} mangleImports mangle imports
19
+ * @property {boolean=} import use import?
20
20
  */
21
21
 
22
- // TODO webpack 6 remove
23
-
24
22
  const PLUGIN_NAME = "ReadFileCompileWasmPlugin";
25
23
 
26
24
  class ReadFileCompileWasmPlugin {
27
25
  /**
28
- * @param {ReadFileCompileWasmPluginOptions} [options] options object
26
+ * @param {ReadFileCompileWasmPluginOptions=} options options object
29
27
  */
30
28
  constructor(options = {}) {
31
29
  this.options = options;
@@ -37,13 +35,13 @@ class ReadFileCompileWasmPlugin {
37
35
  * @returns {void}
38
36
  */
39
37
  apply(compiler) {
40
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
38
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
41
39
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
42
40
  /**
43
41
  * @param {Chunk} chunk chunk
44
42
  * @returns {boolean} true, when wasm loading is enabled for the chunk
45
43
  */
46
- const isEnabledForChunk = chunk => {
44
+ const isEnabledForChunk = (chunk) => {
47
45
  const options = chunk.getEntryOptions();
48
46
  const wasmLoading =
49
47
  options && options.wasmLoading !== undefined
@@ -53,11 +51,10 @@ class ReadFileCompileWasmPlugin {
53
51
  };
54
52
 
55
53
  /**
56
- * @param {string} path path to wasm file
57
- * @returns {string} generated code to load the wasm file
54
+ * @type {(path: string) => string} callback to generate code to load the wasm file
58
55
  */
59
56
  const generateLoadBinaryCode = this.options.import
60
- ? path =>
57
+ ? (path) =>
61
58
  Template.asString([
62
59
  "Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
63
60
  Template.indent([
@@ -74,12 +71,12 @@ class ReadFileCompileWasmPlugin {
74
71
  ]),
75
72
  "}))"
76
73
  ])
77
- : path =>
74
+ : (path) =>
78
75
  Template.asString([
79
76
  "new Promise(function (resolve, reject) {",
80
77
  Template.indent([
81
- "var { readFile } = require('fs');",
82
- "var { join } = require('path');",
78
+ `var { readFile } = require(${compilation.runtimeTemplate.renderNodePrefixForCoreModule("fs")});`,
79
+ `var { join } = require(${compilation.runtimeTemplate.renderNodePrefixForCoreModule("path")});`,
83
80
  "",
84
81
  "try {",
85
82
  Template.indent([
@@ -106,7 +103,7 @@ class ReadFileCompileWasmPlugin {
106
103
  if (
107
104
  !chunkGraph.hasModuleInGraph(
108
105
  chunk,
109
- m => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
106
+ (m) => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
110
107
  )
111
108
  ) {
112
109
  return;
@@ -7,6 +7,9 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
+ const {
11
+ generateJavascriptHMR
12
+ } = require("../hmr/JavascriptHotModuleReplacementHelper");
10
13
  const {
11
14
  chunkHasJs,
12
15
  getChunkFilenameTemplate
@@ -18,6 +21,7 @@ const { getUndoPath } = require("../util/identifier");
18
21
  /** @typedef {import("../Chunk")} Chunk */
19
22
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
20
23
  /** @typedef {import("../Compilation")} Compilation */
24
+ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
21
25
  /** @typedef {import("../Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
22
26
 
23
27
  class RequireChunkLoadingRuntimeModule extends RuntimeModule {
@@ -33,15 +37,16 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
33
37
  * @private
34
38
  * @param {Chunk} chunk chunk
35
39
  * @param {string} rootOutputDir root output directory
40
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
36
41
  * @returns {string} generated code
37
42
  */
38
- _generateBaseUri(chunk, rootOutputDir) {
43
+ _generateBaseUri(chunk, rootOutputDir, runtimeTemplate) {
39
44
  const options = chunk.getEntryOptions();
40
45
  if (options && options.baseUri) {
41
46
  return `${RuntimeGlobals.baseURI} = ${JSON.stringify(options.baseUri)};`;
42
47
  }
43
48
 
44
- return `${RuntimeGlobals.baseURI} = require("url").pathToFileURL(${
49
+ return `${RuntimeGlobals.baseURI} = require(${runtimeTemplate.renderNodePrefixForCoreModule("url")}).pathToFileURL(${
45
50
  rootOutputDir !== "./"
46
51
  ? `__dirname + ${JSON.stringify(`/${rootOutputDir}`)}`
47
52
  : "__filename"
@@ -86,7 +91,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
86
91
  );
87
92
  const rootOutputDir = getUndoPath(
88
93
  outputName,
89
- /** @type {string} */ (compilation.outputOptions.path),
94
+ compilation.outputOptions.path,
90
95
  true
91
96
  );
92
97
 
@@ -96,7 +101,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
96
101
 
97
102
  return Template.asString([
98
103
  withBaseURI
99
- ? this._generateBaseUri(chunk, rootOutputDir)
104
+ ? this._generateBaseUri(chunk, rootOutputDir, runtimeTemplate)
100
105
  : "// no baseURI",
101
106
  "",
102
107
  "// object to store loaded chunks",
@@ -105,7 +110,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
105
110
  stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
106
111
  }{`,
107
112
  Template.indent(
108
- Array.from(initialChunkIds, id => `${JSON.stringify(id)}: 1`).join(
113
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 1`).join(
109
114
  ",\n"
110
115
  )
111
116
  ),
@@ -153,11 +158,16 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
153
158
  ? "if(true) { // all chunks have JS"
154
159
  : `if(${hasJsMatcher("chunkId")}) {`,
155
160
  Template.indent([
156
- `installChunk(require(${JSON.stringify(
161
+ // The require function loads and runs a chunk. When the chunk is being run,
162
+ // it can call __webpack_require__.C to directly complete installed.
163
+ `var installedChunk = require(${JSON.stringify(
157
164
  rootOutputDir
158
165
  )} + ${
159
166
  RuntimeGlobals.getChunkScriptFilename
160
- }(chunkId)));`
167
+ }(chunkId));`,
168
+ "if (!installedChunks[chunkId]) {",
169
+ Template.indent(["installChunk(installedChunk);"]),
170
+ "}"
161
171
  ]),
162
172
  "} else installedChunks[chunkId] = 1;",
163
173
  ""
@@ -199,28 +209,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
199
209
  ]),
200
210
  "}",
201
211
  "",
202
- Template.getFunctionContent(
203
- require("../hmr/JavascriptHotModuleReplacement.runtime.js")
204
- )
205
- .replace(/\$key\$/g, "require")
206
- .replace(/\$installedChunks\$/g, "installedChunks")
207
- .replace(/\$loadUpdateChunk\$/g, "loadUpdateChunk")
208
- .replace(/\$moduleCache\$/g, RuntimeGlobals.moduleCache)
209
- .replace(/\$moduleFactories\$/g, RuntimeGlobals.moduleFactories)
210
- .replace(
211
- /\$ensureChunkHandlers\$/g,
212
- RuntimeGlobals.ensureChunkHandlers
213
- )
214
- .replace(/\$hasOwnProperty\$/g, RuntimeGlobals.hasOwnProperty)
215
- .replace(/\$hmrModuleData\$/g, RuntimeGlobals.hmrModuleData)
216
- .replace(
217
- /\$hmrDownloadUpdateHandlers\$/g,
218
- RuntimeGlobals.hmrDownloadUpdateHandlers
219
- )
220
- .replace(
221
- /\$hmrInvalidateModuleHandlers\$/g,
222
- RuntimeGlobals.hmrInvalidateModuleHandlers
223
- )
212
+ generateJavascriptHMR("require")
224
213
  ])
225
214
  : "// no HMR",
226
215
  "",
@@ -234,7 +223,10 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
234
223
  RuntimeGlobals.getUpdateManifestFilename
235
224
  }());`
236
225
  ]),
237
- "})['catch'](function(err) { if(err.code !== 'MODULE_NOT_FOUND') throw err; });"
226
+ `}).catch(${runtimeTemplate.basicFunction("err", [
227
+ "if(['MODULE_NOT_FOUND', 'ENOENT'].includes(err.code)) return;",
228
+ "throw err;"
229
+ ])});`
238
230
  ]),
239
231
  "}"
240
232
  ])
@@ -8,13 +8,16 @@
8
8
  const util = require("util");
9
9
  const truncateArgs = require("../logging/truncateArgs");
10
10
 
11
+ /** @typedef {import("../config/defaults").InfrastructureLoggingNormalizedWithDefaults} InfrastructureLoggingNormalizedWithDefaults */
11
12
  /** @typedef {import("../logging/createConsoleLogger").LoggerConsole} LoggerConsole */
12
13
 
14
+ /* eslint-disable no-console */
15
+
13
16
  /**
14
17
  * @param {object} options options
15
18
  * @param {boolean=} options.colors colors
16
19
  * @param {boolean=} options.appendOnly append only
17
- * @param {NodeJS.WritableStream} options.stream stream
20
+ * @param {InfrastructureLoggingNormalizedWithDefaults["stream"]} options.stream stream
18
21
  * @returns {LoggerConsole} logger function
19
22
  */
20
23
  module.exports = ({ colors, appendOnly, stream }) => {
@@ -55,7 +58,7 @@ module.exports = ({ colors, appendOnly, stream }) => {
55
58
 
56
59
  const writeStatusMessage = () => {
57
60
  if (!currentStatusMessage) return;
58
- const l = /** @type {TODO} */ (stream).columns || 40;
61
+ const l = stream.columns || 40;
59
62
  const args = truncateArgs(currentStatusMessage, l - 1);
60
63
  const str = args.join(" ");
61
64
  const coloredStr = `\u001B[1m${str}\u001B[39m\u001B[22m`;
@@ -67,7 +70,7 @@ module.exports = ({ colors, appendOnly, stream }) => {
67
70
  * @param {string} prefix prefix
68
71
  * @param {string} colorPrefix color prefix
69
72
  * @param {string} colorSuffix color suffix
70
- * @returns {(function(...EXPECTED_ANY[]): void)} function to write with colors
73
+ * @returns {(...args: EXPECTED_ANY[]) => void} function to write with colors
71
74
  */
72
75
  const writeColored =
73
76
  (prefix, colorPrefix, colorSuffix) =>
@@ -121,12 +124,14 @@ module.exports = ({ colors, appendOnly, stream }) => {
121
124
  currentCollapsed++;
122
125
  },
123
126
  groupEnd: () => {
124
- if (currentCollapsed > 0) currentCollapsed--;
125
- else if (currentIndent.length >= 2)
127
+ if (currentCollapsed > 0) {
128
+ currentCollapsed--;
129
+ } else if (currentIndent.length >= 2) {
126
130
  currentIndent = currentIndent.slice(0, -2);
131
+ }
127
132
  },
128
- profile: console.profile && (name => console.profile(name)),
129
- profileEnd: console.profileEnd && (name => console.profileEnd(name)),
133
+ profile: console.profile && ((name) => console.profile(name)),
134
+ profileEnd: console.profileEnd && ((name) => console.profileEnd(name)),
130
135
  clear:
131
136
  /** @type {() => void} */
132
137
  (
@@ -15,9 +15,11 @@ const { STAGE_ADVANCED } = require("../OptimizationStages");
15
15
  * @property {number=} minSizeReduce minimal size reduction to trigger merging
16
16
  */
17
17
 
18
+ const PLUGIN_NAME = "AggressiveMergingPlugin";
19
+
18
20
  class AggressiveMergingPlugin {
19
21
  /**
20
- * @param {AggressiveMergingPluginOptions=} [options] options object
22
+ * @param {AggressiveMergingPluginOptions=} options options object
21
23
  */
22
24
  constructor(options) {
23
25
  if (
@@ -40,58 +42,55 @@ class AggressiveMergingPlugin {
40
42
  const options = this.options;
41
43
  const minSizeReduce = options.minSizeReduce || 1.5;
42
44
 
43
- compiler.hooks.thisCompilation.tap(
44
- "AggressiveMergingPlugin",
45
- compilation => {
46
- compilation.hooks.optimizeChunks.tap(
47
- {
48
- name: "AggressiveMergingPlugin",
49
- stage: STAGE_ADVANCED
50
- },
51
- chunks => {
52
- const chunkGraph = compilation.chunkGraph;
53
- /** @type {{a: Chunk, b: Chunk, improvement: number}[]} */
54
- const combinations = [];
55
- for (const a of chunks) {
56
- if (a.canBeInitial()) continue;
57
- for (const b of chunks) {
58
- if (b.canBeInitial()) continue;
59
- if (b === a) break;
60
- if (!chunkGraph.canChunksBeIntegrated(a, b)) {
61
- continue;
62
- }
63
- const aSize = chunkGraph.getChunkSize(b, {
64
- chunkOverhead: 0
65
- });
66
- const bSize = chunkGraph.getChunkSize(a, {
67
- chunkOverhead: 0
68
- });
69
- const abSize = chunkGraph.getIntegratedChunksSize(b, a, {
70
- chunkOverhead: 0
71
- });
72
- const improvement = (aSize + bSize) / abSize;
73
- combinations.push({
74
- a,
75
- b,
76
- improvement
77
- });
45
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
46
+ compilation.hooks.optimizeChunks.tap(
47
+ {
48
+ name: PLUGIN_NAME,
49
+ stage: STAGE_ADVANCED
50
+ },
51
+ (chunks) => {
52
+ const chunkGraph = compilation.chunkGraph;
53
+ /** @type {{a: Chunk, b: Chunk, improvement: number}[]} */
54
+ const combinations = [];
55
+ for (const a of chunks) {
56
+ if (a.canBeInitial()) continue;
57
+ for (const b of chunks) {
58
+ if (b.canBeInitial()) continue;
59
+ if (b === a) break;
60
+ if (!chunkGraph.canChunksBeIntegrated(a, b)) {
61
+ continue;
78
62
  }
63
+ const aSize = chunkGraph.getChunkSize(b, {
64
+ chunkOverhead: 0
65
+ });
66
+ const bSize = chunkGraph.getChunkSize(a, {
67
+ chunkOverhead: 0
68
+ });
69
+ const abSize = chunkGraph.getIntegratedChunksSize(b, a, {
70
+ chunkOverhead: 0
71
+ });
72
+ const improvement = (aSize + bSize) / abSize;
73
+ combinations.push({
74
+ a,
75
+ b,
76
+ improvement
77
+ });
79
78
  }
79
+ }
80
80
 
81
- combinations.sort((a, b) => b.improvement - a.improvement);
81
+ combinations.sort((a, b) => b.improvement - a.improvement);
82
82
 
83
- const pair = combinations[0];
83
+ const pair = combinations[0];
84
84
 
85
- if (!pair) return;
86
- if (pair.improvement < minSizeReduce) return;
85
+ if (!pair) return;
86
+ if (pair.improvement < minSizeReduce) return;
87
87
 
88
- chunkGraph.integrateChunks(pair.b, pair.a);
89
- compilation.chunks.delete(pair.a);
90
- return true;
91
- }
92
- );
93
- }
94
- );
88
+ chunkGraph.integrateChunks(pair.b, pair.a);
89
+ compilation.chunks.delete(pair.a);
90
+ return true;
91
+ }
92
+ );
93
+ });
95
94
  }
96
95
  }
97
96