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
@@ -8,16 +8,24 @@
8
8
  const util = require("util");
9
9
  const ExportsInfo = require("./ExportsInfo");
10
10
  const ModuleGraphConnection = require("./ModuleGraphConnection");
11
+ const HarmonyImportDependency = require("./dependencies/HarmonyImportDependency");
12
+ const { ImportPhaseUtils } = require("./dependencies/ImportPhase");
11
13
  const SortableSet = require("./util/SortableSet");
12
14
  const WeakTupleMap = require("./util/WeakTupleMap");
15
+ const { sortWithSourceOrder } = require("./util/comparators");
13
16
 
17
+ /** @typedef {import("./Compilation").ModuleMemCaches} ModuleMemCaches */
14
18
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
15
19
  /** @typedef {import("./Dependency")} Dependency */
16
20
  /** @typedef {import("./ExportsInfo").ExportInfo} ExportInfo */
21
+ /** @typedef {import("./ExportsInfo").ExportInfoName} ExportInfoName */
17
22
  /** @typedef {import("./Module")} Module */
18
23
  /** @typedef {import("./ModuleProfile")} ModuleProfile */
19
24
  /** @typedef {import("./RequestShortener")} RequestShortener */
20
25
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
26
+ /** @typedef {import("./dependencies/HarmonyImportSideEffectDependency")} HarmonyImportSideEffectDependency */
27
+ /** @typedef {import("./dependencies/HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
28
+ /** @typedef {import("./util/comparators").DependencySourceOrder} DependencySourceOrder */
21
29
 
22
30
  /**
23
31
  * @callback OptimizationBailoutFunction
@@ -28,30 +36,32 @@ const WeakTupleMap = require("./util/WeakTupleMap");
28
36
  const EMPTY_SET = new Set();
29
37
 
30
38
  /**
39
+ * @template {Module | null | undefined} T
31
40
  * @param {SortableSet<ModuleGraphConnection>} set input
32
- * @returns {readonly Map<Module | undefined, readonly ModuleGraphConnection[]>} mapped by origin module
41
+ * @param {(connection: ModuleGraphConnection) => T} getKey function to extract key from connection
42
+ * @returns {ReadonlyMap<T, ReadonlyArray<ModuleGraphConnection>>} mapped by key
33
43
  */
34
- const getConnectionsByOriginModule = set => {
44
+ const getConnectionsByKey = (set, getKey) => {
35
45
  const map = new Map();
36
- /** @type {Module | 0} */
37
- let lastModule = 0;
46
+ /** @type {T | 0} */
47
+ let lastKey = 0;
38
48
  /** @type {ModuleGraphConnection[] | undefined} */
39
49
  let lastList;
40
50
  for (const connection of set) {
41
- const { originModule } = connection;
42
- if (lastModule === originModule) {
51
+ const key = getKey(connection);
52
+ if (lastKey === key) {
43
53
  /** @type {ModuleGraphConnection[]} */
44
54
  (lastList).push(connection);
45
55
  } else {
46
- lastModule = /** @type {Module} */ (originModule);
47
- const list = map.get(originModule);
56
+ lastKey = key;
57
+ const list = map.get(key);
48
58
  if (list !== undefined) {
49
59
  lastList = list;
50
60
  list.push(connection);
51
61
  } else {
52
62
  const list = [connection];
53
63
  lastList = list;
54
- map.set(originModule, list);
64
+ map.set(key, list);
55
65
  }
56
66
  }
57
67
  }
@@ -60,37 +70,22 @@ const getConnectionsByOriginModule = set => {
60
70
 
61
71
  /**
62
72
  * @param {SortableSet<ModuleGraphConnection>} set input
63
- * @returns {readonly Map<Module | undefined, readonly ModuleGraphConnection[]>} mapped by module
73
+ * @returns {ReadonlyMap<Module | undefined | null, ReadonlyArray<ModuleGraphConnection>>} mapped by origin module
64
74
  */
65
- const getConnectionsByModule = set => {
66
- const map = new Map();
67
- /** @type {Module | 0} */
68
- let lastModule = 0;
69
- /** @type {ModuleGraphConnection[] | undefined} */
70
- let lastList;
71
- for (const connection of set) {
72
- const { module } = connection;
73
- if (lastModule === module) {
74
- /** @type {ModuleGraphConnection[]} */
75
- (lastList).push(connection);
76
- } else {
77
- lastModule = module;
78
- const list = map.get(module);
79
- if (list !== undefined) {
80
- lastList = list;
81
- list.push(connection);
82
- } else {
83
- const list = [connection];
84
- lastList = list;
85
- map.set(module, list);
86
- }
87
- }
88
- }
89
- return map;
90
- };
75
+ const getConnectionsByOriginModule = (set) =>
76
+ getConnectionsByKey(set, (connection) => connection.originModule);
77
+
78
+ /**
79
+ * @param {SortableSet<ModuleGraphConnection>} set input
80
+ * @returns {ReadonlyMap<Module | undefined, ReadonlyArray<ModuleGraphConnection>>} mapped by module
81
+ */
82
+ const getConnectionsByModule = (set) =>
83
+ getConnectionsByKey(set, (connection) => connection.module);
91
84
 
92
85
  /** @typedef {SortableSet<ModuleGraphConnection>} IncomingConnections */
93
86
  /** @typedef {SortableSet<ModuleGraphConnection>} OutgoingConnections */
87
+ /** @typedef {Module | null | undefined} Issuer */
88
+ /** @typedef {(string | OptimizationBailoutFunction)[]} OptimizationBailouts */
94
89
 
95
90
  class ModuleGraphModule {
96
91
  constructor() {
@@ -98,9 +93,9 @@ class ModuleGraphModule {
98
93
  this.incomingConnections = new SortableSet();
99
94
  /** @type {OutgoingConnections | undefined} */
100
95
  this.outgoingConnections = undefined;
101
- /** @type {Module | null | undefined} */
96
+ /** @type {Issuer} */
102
97
  this.issuer = undefined;
103
- /** @type {(string | OptimizationBailoutFunction)[]} */
98
+ /** @type {OptimizationBailouts} */
104
99
  this.optimizationBailout = [];
105
100
  /** @type {ExportsInfo} */
106
101
  this.exports = new ExportsInfo();
@@ -119,6 +114,22 @@ class ModuleGraphModule {
119
114
  }
120
115
  }
121
116
 
117
+ /** @typedef {(moduleGraphConnection: ModuleGraphConnection) => boolean} FilterConnection */
118
+
119
+ /** @typedef {EXPECTED_OBJECT} MetaKey */
120
+
121
+ /** @typedef {import("./dependencies/CommonJsExportRequireDependency").idsSymbol} CommonJsExportRequireDependencyIDsSymbol */
122
+ /** @typedef {import("./dependencies/HarmonyImportSpecifierDependency").idsSymbol} HarmonyImportSpecifierDependencyIDsSymbol */
123
+ /** @typedef {import("./dependencies/HarmonyExportImportedSpecifierDependency").idsSymbol} HarmonyExportImportedSpecifierDependencyIDsSymbol */
124
+
125
+ /**
126
+ * @typedef {object} KnownMeta
127
+ * @property {Map<Module, string>=} importVarMap
128
+ * @property {Map<Module, string>=} deferredImportVarMap
129
+ */
130
+
131
+ /** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol | HarmonyImportSpecifierDependencyIDsSymbol | HarmonyExportImportedSpecifierDependencyIDsSymbol, string[]> & Record<string, EXPECTED_ANY>} Meta */
132
+
122
133
  class ModuleGraph {
123
134
  constructor() {
124
135
  /**
@@ -132,17 +143,17 @@ class ModuleGraph {
132
143
  */
133
144
  this._moduleMap = new Map();
134
145
  /**
135
- * @type {WeakMap<any, object>}
146
+ * @type {WeakMap<MetaKey, Meta>}
136
147
  * @private
137
148
  */
138
149
  this._metaMap = new WeakMap();
139
150
  /**
140
- * @type {WeakTupleMap<any[], any> | undefined}
151
+ * @type {WeakTupleMap<EXPECTED_ANY[], EXPECTED_ANY> | undefined}
141
152
  * @private
142
153
  */
143
154
  this._cache = undefined;
144
155
  /**
145
- * @type {Map<Module, WeakTupleMap<any, any>> | undefined}
156
+ * @type {ModuleMemCaches | undefined}
146
157
  * @private
147
158
  */
148
159
  this._moduleMemCaches = undefined;
@@ -152,6 +163,18 @@ class ModuleGraph {
152
163
  * @private
153
164
  */
154
165
  this._cacheStage = undefined;
166
+
167
+ /**
168
+ * @type {WeakMap<Dependency, DependencySourceOrder>}
169
+ * @private
170
+ */
171
+ this._dependencySourceOrderMap = new WeakMap();
172
+
173
+ /**
174
+ * @type {Set<Module>}
175
+ * @private
176
+ */
177
+ this._modulesNeedingSort = new Set();
155
178
  }
156
179
 
157
180
  /**
@@ -180,6 +203,15 @@ class ModuleGraph {
180
203
  dependency._parentModule = module;
181
204
  }
182
205
 
206
+ /**
207
+ * @param {Dependency} dependency the dependency
208
+ * @param {number} index the index
209
+ * @returns {void}
210
+ */
211
+ setParentDependenciesBlockIndex(dependency, index) {
212
+ dependency._parentDependenciesBlockIndex = index;
213
+ }
214
+
183
215
  /**
184
216
  * @param {Dependency} dependency the dependency
185
217
  * @returns {Module | undefined} parent module
@@ -259,6 +291,73 @@ class ModuleGraph {
259
291
  targetMgm.incomingConnections.add(newConnection);
260
292
  }
261
293
 
294
+ /**
295
+ * @param {Dependency} dependency the need update dependency
296
+ * @param {ModuleGraphConnection=} connection the target connection
297
+ * @param {Module=} parentModule the parent module
298
+ * @returns {void}
299
+ */
300
+ updateParent(dependency, connection, parentModule) {
301
+ if (this._dependencySourceOrderMap.has(dependency)) {
302
+ return;
303
+ }
304
+ if (!connection || !parentModule) {
305
+ return;
306
+ }
307
+ const originDependency = connection.dependency;
308
+
309
+ // src/index.js
310
+ // import { c } from "lib/c" -> c = 0
311
+ // import { a, b } from "lib" -> a and b have the same source order -> a = b = 1
312
+ // import { d } from "lib/d" -> d = 2
313
+ const currentSourceOrder =
314
+ /** @type {HarmonyImportSideEffectDependency | HarmonyImportSpecifierDependency} */
315
+ (dependency).sourceOrder;
316
+
317
+ // lib/index.js (reexport)
318
+ // import { a } from "lib/a" -> a = 0
319
+ // import { b } from "lib/b" -> b = 1
320
+ const originSourceOrder =
321
+ /** @type {HarmonyImportSideEffectDependency | HarmonyImportSpecifierDependency} */
322
+ (originDependency).sourceOrder;
323
+ if (
324
+ typeof currentSourceOrder === "number" &&
325
+ typeof originSourceOrder === "number"
326
+ ) {
327
+ // src/index.js
328
+ // import { c } from "lib/c" -> c = 0
329
+ // import { a } from "lib/a" -> a = 1.0 = 1(main) + 0.0(sub)
330
+ // import { b } from "lib/b" -> b = 1.1 = 1(main) + 0.1(sub)
331
+ // import { d } from "lib/d" -> d = 2
332
+ this._dependencySourceOrderMap.set(dependency, {
333
+ main: currentSourceOrder,
334
+ sub: originSourceOrder
335
+ });
336
+
337
+ // Save for later batch sorting
338
+ this._modulesNeedingSort.add(parentModule);
339
+ }
340
+ }
341
+
342
+ /**
343
+ * @returns {void}
344
+ */
345
+ finishUpdateParent() {
346
+ if (this._modulesNeedingSort.size === 0) {
347
+ return;
348
+ }
349
+ for (const mod of this._modulesNeedingSort) {
350
+ // If dependencies like HarmonyImportSideEffectDependency and HarmonyImportSpecifierDependency have a SourceOrder,
351
+ // we sort based on it; otherwise, we preserve the original order.
352
+ sortWithSourceOrder(
353
+ mod.dependencies,
354
+ this._dependencySourceOrderMap,
355
+ (dep, index) => this.setParentDependenciesBlockIndex(dep, index)
356
+ );
357
+ }
358
+ this._modulesNeedingSort.clear();
359
+ }
360
+
262
361
  /**
263
362
  * @param {Dependency} dependency the referencing dependency
264
363
  * @returns {void}
@@ -331,7 +430,7 @@ class ModuleGraph {
331
430
  /**
332
431
  * @param {Module} oldModule the old referencing module
333
432
  * @param {Module} newModule the new referencing module
334
- * @param {function(ModuleGraphConnection): boolean} filterConnection filter predicate for replacement
433
+ * @param {FilterConnection} filterConnection filter predicate for replacement
335
434
  * @returns {void}
336
435
  */
337
436
  moveModuleConnections(oldModule, newModule, filterConnection) {
@@ -368,7 +467,7 @@ class ModuleGraph {
368
467
  /**
369
468
  * @param {Module} oldModule the old referencing module
370
469
  * @param {Module} newModule the new referencing module
371
- * @param {function(ModuleGraphConnection): boolean} filterConnection filter predicate for replacement
470
+ * @param {FilterConnection} filterConnection filter predicate for replacement
372
471
  * @returns {void}
373
472
  */
374
473
  copyOutgoingModuleConnections(oldModule, newModule, filterConnection) {
@@ -435,8 +534,9 @@ class ModuleGraph {
435
534
  /** @type {Dependency} */ (connection.dependency),
436
535
  connection
437
536
  );
438
- if (connection.dependency === dependency)
537
+ if (connection.dependency === dependency) {
439
538
  foundConnection = connection;
539
+ }
440
540
  }
441
541
  mgm._unassignedConnections.length = 0;
442
542
  if (foundConnection !== undefined) {
@@ -497,7 +597,7 @@ class ModuleGraph {
497
597
 
498
598
  /**
499
599
  * @param {Module} module the module
500
- * @returns {readonly Map<Module | undefined | null, readonly ModuleGraphConnection[]>} reasons why a module is included, in a map by source module
600
+ * @returns {ReadonlyMap<Module | undefined | null, ReadonlyArray<ModuleGraphConnection>>} reasons why a module is included, in a map by source module
501
601
  */
502
602
  getIncomingConnectionsByOriginModule(module) {
503
603
  const connections = this._getModuleGraphModule(module).incomingConnections;
@@ -506,7 +606,7 @@ class ModuleGraph {
506
606
 
507
607
  /**
508
608
  * @param {Module} module the module
509
- * @returns {readonly Map<Module | undefined, readonly ModuleGraphConnection[]> | undefined} connections to modules, in a map by module
609
+ * @returns {ReadonlyMap<Module | undefined, ReadonlyArray<ModuleGraphConnection>> | undefined} connections to modules, in a map by module
510
610
  */
511
611
  getOutgoingConnectionsByModule(module) {
512
612
  const connections = this._getModuleGraphModule(module).outgoingConnections;
@@ -536,7 +636,7 @@ class ModuleGraph {
536
636
 
537
637
  /**
538
638
  * @param {Module} module the module
539
- * @returns {Module | null | undefined} the issuer module
639
+ * @returns {Issuer} the issuer module
540
640
  */
541
641
  getIssuer(module) {
542
642
  const mgm = this._getModuleGraphModule(module);
@@ -565,7 +665,7 @@ class ModuleGraph {
565
665
 
566
666
  /**
567
667
  * @param {Module} module the module
568
- * @returns {(string | OptimizationBailoutFunction)[]} optimization bailouts
668
+ * @returns {OptimizationBailouts} optimization bailouts
569
669
  */
570
670
  getOptimizationBailout(module) {
571
671
  const mgm = this._getModuleGraphModule(module);
@@ -574,7 +674,7 @@ class ModuleGraph {
574
674
 
575
675
  /**
576
676
  * @param {Module} module the module
577
- * @returns {true | string[] | null} the provided exports
677
+ * @returns {null | true | ExportInfoName[]} the provided exports
578
678
  */
579
679
  getProvidedExports(module) {
580
680
  const mgm = this._getModuleGraphModule(module);
@@ -583,7 +683,7 @@ class ModuleGraph {
583
683
 
584
684
  /**
585
685
  * @param {Module} module the module
586
- * @param {string | string[]} exportName a name of an export
686
+ * @param {ExportInfoName | ExportInfoName[]} exportName a name of an export
587
687
  * @returns {boolean | null} true, if the export is provided by the module.
588
688
  * null, if it's unknown.
589
689
  * false, if it's not provided.
@@ -746,6 +846,25 @@ class ModuleGraph {
746
846
  return mgm.async;
747
847
  }
748
848
 
849
+ /**
850
+ * @param {Module} module the module
851
+ * @returns {boolean} true, if the module is used as a deferred module at least once
852
+ */
853
+ isDeferred(module) {
854
+ if (this.isAsync(module)) return false;
855
+ const connections = this.getIncomingConnections(module);
856
+ for (const connection of connections) {
857
+ if (
858
+ !connection.dependency ||
859
+ !(connection.dependency instanceof HarmonyImportDependency)
860
+ ) {
861
+ continue;
862
+ }
863
+ if (ImportPhaseUtils.isDefer(connection.dependency.phase)) return true;
864
+ }
865
+ return false;
866
+ }
867
+
749
868
  /**
750
869
  * @param {Module} module the module
751
870
  * @returns {void}
@@ -756,21 +875,21 @@ class ModuleGraph {
756
875
  }
757
876
 
758
877
  /**
759
- * @param {any} thing any thing
760
- * @returns {object} metadata
878
+ * @param {MetaKey} thing any thing
879
+ * @returns {Meta} metadata
761
880
  */
762
881
  getMeta(thing) {
763
882
  let meta = this._metaMap.get(thing);
764
883
  if (meta === undefined) {
765
- meta = Object.create(null);
766
- this._metaMap.set(thing, /** @type {object} */ (meta));
884
+ meta = /** @type {Meta} */ (Object.create(null));
885
+ this._metaMap.set(thing, meta);
767
886
  }
768
- return /** @type {object} */ (meta);
887
+ return meta;
769
888
  }
770
889
 
771
890
  /**
772
- * @param {any} thing any thing
773
- * @returns {object | undefined} metadata
891
+ * @param {MetaKey} thing any thing
892
+ * @returns {Meta | undefined} metadata
774
893
  */
775
894
  getMetaIfExisting(thing) {
776
895
  return this._metaMap.get(thing);
@@ -790,11 +909,11 @@ class ModuleGraph {
790
909
  }
791
910
 
792
911
  /**
793
- * @template {any[]} T
794
- * @template V
795
- * @param {(moduleGraph: ModuleGraph, ...args: T) => V} fn computer
912
+ * @template {EXPECTED_ANY[]} T
913
+ * @template R
914
+ * @param {(moduleGraph: ModuleGraph, ...args: T) => R} fn computer
796
915
  * @param {T} args arguments
797
- * @returns {V} computed value or cached
916
+ * @returns {R} computed value or cached
798
917
  */
799
918
  cached(fn, ...args) {
800
919
  if (this._cache === undefined) return fn(this, ...args);
@@ -802,23 +921,28 @@ class ModuleGraph {
802
921
  }
803
922
 
804
923
  /**
805
- * @param {Map<Module, WeakTupleMap<any, any>>} moduleMemCaches mem caches for modules for better caching
924
+ * @param {ModuleMemCaches} moduleMemCaches mem caches for modules for better caching
806
925
  */
807
926
  setModuleMemCaches(moduleMemCaches) {
808
927
  this._moduleMemCaches = moduleMemCaches;
809
928
  }
810
929
 
811
930
  /**
812
- * @param {Dependency} dependency dependency
813
- * @param {...any} args arguments, last argument is a function called with moduleGraph, dependency, ...args
814
- * @returns {any} computed value or cached
931
+ * @template {Dependency} D
932
+ * @template {EXPECTED_ANY[]} ARGS
933
+ * @template R
934
+ * @param {D} dependency dependency
935
+ * @param {[...ARGS, (moduleGraph: ModuleGraph, dependency: D, ...args: ARGS) => R]} args arguments, last argument is a function called with moduleGraph, dependency, ...args
936
+ * @returns {R} computed value or cached
815
937
  */
816
938
  dependencyCacheProvide(dependency, ...args) {
817
- /** @type {(moduleGraph: ModuleGraph, dependency: Dependency, ...args: any[]) => any} */
818
- const fn = args.pop();
939
+ const fn =
940
+ /** @type {(moduleGraph: ModuleGraph, dependency: D, ...args: EXPECTED_ANY[]) => R} */
941
+ (args.pop());
819
942
  if (this._moduleMemCaches && this._cacheStage) {
820
943
  const memCache = this._moduleMemCaches.get(
821
- /** @type {Module} */ (this.getParentModule(dependency))
944
+ /** @type {Module} */
945
+ (this.getParentModule(dependency))
822
946
  );
823
947
  if (memCache !== undefined) {
824
948
  return memCache.provide(dependency, this._cacheStage, ...args, () =>
@@ -847,14 +971,15 @@ class ModuleGraph {
847
971
  * @param {Module} module the module
848
972
  * @returns {ModuleGraph} the module graph
849
973
  */
850
- module => {
974
+ (module) => {
851
975
  const moduleGraph = moduleGraphForModuleMap.get(module);
852
- if (!moduleGraph)
976
+ if (!moduleGraph) {
853
977
  throw new Error(
854
978
  `${
855
979
  deprecateMessage
856
980
  }There was no ModuleGraph assigned to the Module for backward-compat (Use the new API)`
857
981
  );
982
+ }
858
983
  return moduleGraph;
859
984
  },
860
985
  `${deprecateMessage}: Use new ModuleGraph API`,
@@ -52,8 +52,8 @@ const intersectConnectionStates = (a, b) => {
52
52
 
53
53
  class ModuleGraphConnection {
54
54
  /**
55
- * @param {Module|null} originModule the referencing module
56
- * @param {Dependency|null} dependency the referencing dependency
55
+ * @param {Module | null} originModule the referencing module
56
+ * @param {Dependency | null} dependency the referencing dependency
57
57
  * @param {Module} module the referenced module
58
58
  * @param {string=} explanation some extra detail
59
59
  * @param {boolean=} weak the reference is weak
@@ -75,7 +75,6 @@ class ModuleGraphConnection {
75
75
  this.weak = weak;
76
76
  this.conditional = Boolean(condition);
77
77
  this._active = condition !== false;
78
- /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState) | undefined} */
79
78
  this.condition = condition || undefined;
80
79
  /** @type {Set<string> | undefined} */
81
80
  this.explanations = undefined;
@@ -103,15 +102,16 @@ class ModuleGraphConnection {
103
102
  }
104
103
 
105
104
  /**
106
- * @param {function(ModuleGraphConnection, RuntimeSpec): ConnectionState} condition condition for the connection
105
+ * @param {GetConditionFn} condition condition for the connection
107
106
  * @returns {void}
108
107
  */
109
108
  addCondition(condition) {
110
109
  if (this.conditional) {
111
110
  const old =
112
- /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */
111
+ /** @type {GetConditionFn} */
113
112
  (this.condition);
114
- this.condition = (c, r) =>
113
+ /** @type {GetConditionFn} */
114
+ (this.condition) = (c, r) =>
115
115
  intersectConnectionStates(old(c, r), condition(c, r));
116
116
  } else if (this._active) {
117
117
  this.conditional = true;
@@ -132,7 +132,7 @@ class ModuleGraphConnection {
132
132
 
133
133
  get explanation() {
134
134
  if (this.explanations === undefined) return "";
135
- return Array.from(this.explanations).join(" ");
135
+ return [...this.explanations].join(" ");
136
136
  }
137
137
 
138
138
  /**
@@ -143,9 +143,7 @@ class ModuleGraphConnection {
143
143
  if (!this.conditional) return this._active;
144
144
 
145
145
  return (
146
- /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
147
- this.condition
148
- )(this, runtime) !== false
146
+ /** @type {GetConditionFn} */ (this.condition)(this, runtime) !== false
149
147
  );
150
148
  }
151
149
 
@@ -156,9 +154,7 @@ class ModuleGraphConnection {
156
154
  isTargetActive(runtime) {
157
155
  if (!this.conditional) return this._active;
158
156
  return (
159
- /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
160
- this.condition
161
- )(this, runtime) === true
157
+ /** @type {GetConditionFn} */ (this.condition)(this, runtime) === true
162
158
  );
163
159
  }
164
160
 
@@ -168,9 +164,7 @@ class ModuleGraphConnection {
168
164
  */
169
165
  getActiveState(runtime) {
170
166
  if (!this.conditional) return this._active;
171
- return /** @type {(function(ModuleGraphConnection, RuntimeSpec): ConnectionState)} */ (
172
- this.condition
173
- )(this, runtime);
167
+ return /** @type {GetConditionFn} */ (this.condition)(this, runtime);
174
168
  }
175
169
 
176
170
  /**
@@ -196,10 +190,10 @@ class ModuleGraphConnection {
196
190
  /** @typedef {typeof CIRCULAR_CONNECTION} CIRCULAR_CONNECTION */
197
191
 
198
192
  module.exports = ModuleGraphConnection;
199
- module.exports.addConnectionStates = addConnectionStates;
200
- module.exports.TRANSITIVE_ONLY = /** @type {typeof TRANSITIVE_ONLY} */ (
201
- TRANSITIVE_ONLY
202
- );
203
193
  module.exports.CIRCULAR_CONNECTION = /** @type {typeof CIRCULAR_CONNECTION} */ (
204
194
  CIRCULAR_CONNECTION
205
195
  );
196
+ module.exports.TRANSITIVE_ONLY = /** @type {typeof TRANSITIVE_ONLY} */ (
197
+ TRANSITIVE_ONLY
198
+ );
199
+ module.exports.addConnectionStates = addConnectionStates;
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { ConcatSource, RawSource, CachedSource } = require("webpack-sources");
8
+ const { CachedSource, ConcatSource, RawSource } = require("webpack-sources");
9
9
  const { UsageState } = require("./ExportsInfo");
10
10
  const Template = require("./Template");
11
11
  const CssModulesPlugin = require("./css/CssModulesPlugin");
@@ -18,7 +18,6 @@ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
18
18
  /** @typedef {import("./Module")} Module */
19
19
  /** @typedef {import("./Module").BuildMeta} BuildMeta */
20
20
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
21
- /** @typedef {import("./ModuleTemplate")} ModuleTemplate */
22
21
  /** @typedef {import("./RequestShortener")} RequestShortener */
23
22
 
24
23
  /**
@@ -26,7 +25,7 @@ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
26
25
  * @param {Iterable<T>} iterable iterable
27
26
  * @returns {string} joined with comma
28
27
  */
29
- const joinIterableWithComma = iterable => {
28
+ const joinIterableWithComma = (iterable) => {
30
29
  // This is more performant than Array.from().join(", ")
31
30
  // as it doesn't create an array
32
31
  let str = "";
@@ -94,7 +93,7 @@ const printExportsInfoToSource = (
94
93
  ? ` -> ${target.module.readableIdentifier(requestShortener)}${
95
94
  target.export
96
95
  ? ` .${target.export
97
- .map(e => JSON.stringify(e).slice(1, -1))
96
+ .map((e) => JSON.stringify(e).slice(1, -1))
98
97
  .join(".")}`
99
98
  : ""
100
99
  }`
@@ -149,6 +148,8 @@ const printExportsInfoToSource = (
149
148
  /** @type {WeakMap<RequestShortener, WeakMap<Module, { header: RawSource | undefined, full: WeakMap<Source, CachedSource> }>>} */
150
149
  const caches = new WeakMap();
151
150
 
151
+ const PLUGIN_NAME = "ModuleInfoHeaderPlugin";
152
+
152
153
  class ModuleInfoHeaderPlugin {
153
154
  /**
154
155
  * @param {boolean=} verbose add more information like exports, runtime requirements and bailouts
@@ -163,11 +164,11 @@ class ModuleInfoHeaderPlugin {
163
164
  */
164
165
  apply(compiler) {
165
166
  const { _verbose: verbose } = this;
166
- compiler.hooks.compilation.tap("ModuleInfoHeaderPlugin", compilation => {
167
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
167
168
  const javascriptHooks =
168
169
  JavascriptModulesPlugin.getCompilationHooks(compilation);
169
170
  javascriptHooks.renderModulePackage.tap(
170
- "ModuleInfoHeaderPlugin",
171
+ PLUGIN_NAME,
171
172
  (
172
173
  moduleSource,
173
174
  module,
@@ -246,16 +247,13 @@ class ModuleInfoHeaderPlugin {
246
247
  return cachedSource;
247
248
  }
248
249
  );
249
- javascriptHooks.chunkHash.tap(
250
- "ModuleInfoHeaderPlugin",
251
- (_chunk, hash) => {
252
- hash.update("ModuleInfoHeaderPlugin");
253
- hash.update("1");
254
- }
255
- );
250
+ javascriptHooks.chunkHash.tap(PLUGIN_NAME, (_chunk, hash) => {
251
+ hash.update(PLUGIN_NAME);
252
+ hash.update("1");
253
+ });
256
254
  const cssHooks = CssModulesPlugin.getCompilationHooks(compilation);
257
255
  cssHooks.renderModulePackage.tap(
258
- "ModuleInfoHeaderPlugin",
256
+ PLUGIN_NAME,
259
257
  (moduleSource, module, { runtimeTemplate }) => {
260
258
  const { requestShortener } = runtimeTemplate;
261
259
  let cacheEntry;
@@ -291,8 +289,8 @@ class ModuleInfoHeaderPlugin {
291
289
  return cachedSource;
292
290
  }
293
291
  );
294
- cssHooks.chunkHash.tap("ModuleInfoHeaderPlugin", (_chunk, hash) => {
295
- hash.update("ModuleInfoHeaderPlugin");
292
+ cssHooks.chunkHash.tap(PLUGIN_NAME, (_chunk, hash) => {
293
+ hash.update(PLUGIN_NAME);
296
294
  hash.update("1");
297
295
  });
298
296
  });
@@ -311,4 +309,5 @@ class ModuleInfoHeaderPlugin {
311
309
  return new RawSource(headerStr);
312
310
  }
313
311
  }
312
+
314
313
  module.exports = ModuleInfoHeaderPlugin;
@@ -44,7 +44,7 @@ const previouslyPolyfilledBuiltinModules = {
44
44
  class ModuleNotFoundError extends WebpackError {
45
45
  /**
46
46
  * @param {Module | null} module module tied to dependency
47
- * @param {Error&any} err error thrown
47
+ * @param {Error & { details?: string }} err error thrown
48
48
  * @param {DependencyLocation} loc location of dependency
49
49
  */
50
50
  constructor(module, err, loc) {