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
@@ -12,9 +12,10 @@ const createSchemaValidation = require("./util/create-schema-validation");
12
12
  /** @typedef {import("../declarations/plugins/IgnorePlugin").IgnorePluginOptions} IgnorePluginOptions */
13
13
  /** @typedef {import("./Compiler")} Compiler */
14
14
  /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
15
+ /** @typedef {import("./ContextModuleFactory").BeforeContextResolveData} BeforeContextResolveData */
15
16
 
16
17
  const validate = createSchemaValidation(
17
- require("../schemas/plugins/IgnorePlugin.check.js"),
18
+ require("../schemas/plugins/IgnorePlugin.check"),
18
19
  () => require("../schemas/plugins/IgnorePlugin.json"),
19
20
  {
20
21
  name: "Ignore Plugin",
@@ -22,6 +23,10 @@ const validate = createSchemaValidation(
22
23
  }
23
24
  );
24
25
 
26
+ /** @typedef {(resource: string, context: string) => boolean} CheckResourceFn */
27
+
28
+ const PLUGIN_NAME = "IgnorePlugin";
29
+
25
30
  class IgnorePlugin {
26
31
  /**
27
32
  * @param {IgnorePluginOptions} options IgnorePlugin options
@@ -29,18 +34,13 @@ class IgnorePlugin {
29
34
  constructor(options) {
30
35
  validate(options);
31
36
  this.options = options;
32
-
33
- /**
34
- * @private
35
- * @type {Function}
36
- */
37
37
  this.checkIgnore = this.checkIgnore.bind(this);
38
38
  }
39
39
 
40
40
  /**
41
41
  * Note that if "contextRegExp" is given, both the "resourceRegExp" and "contextRegExp" have to match.
42
- * @param {ResolveData} resolveData resolve data
43
- * @returns {false|undefined} returns false when the request should be ignored, otherwise undefined
42
+ * @param {ResolveData | BeforeContextResolveData} resolveData resolve data
43
+ * @returns {false | undefined} returns false when the request should be ignored, otherwise undefined
44
44
  */
45
45
  checkIgnore(resolveData) {
46
46
  if (
@@ -74,8 +74,8 @@ class IgnorePlugin {
74
74
  * @returns {void}
75
75
  */
76
76
  apply(compiler) {
77
- compiler.hooks.normalModuleFactory.tap("IgnorePlugin", nmf => {
78
- nmf.hooks.beforeResolve.tap("IgnorePlugin", resolveData => {
77
+ compiler.hooks.normalModuleFactory.tap(PLUGIN_NAME, (nmf) => {
78
+ nmf.hooks.beforeResolve.tap(PLUGIN_NAME, (resolveData) => {
79
79
  const result = this.checkIgnore(resolveData);
80
80
 
81
81
  if (
@@ -83,18 +83,21 @@ class IgnorePlugin {
83
83
  resolveData.dependencies.length > 0 &&
84
84
  resolveData.dependencies[0] instanceof EntryDependency
85
85
  ) {
86
- resolveData.ignoredModule = new RawModule(
86
+ const module = new RawModule(
87
87
  "",
88
88
  "ignored-entry-module",
89
89
  "(ignored-entry-module)"
90
90
  );
91
+ module.factoryMeta = { sideEffectFree: true };
92
+
93
+ resolveData.ignoredModule = module;
91
94
  }
92
95
 
93
96
  return result;
94
97
  });
95
98
  });
96
- compiler.hooks.contextModuleFactory.tap("IgnorePlugin", cmf => {
97
- cmf.hooks.beforeResolve.tap("IgnorePlugin", this.checkIgnore);
99
+ compiler.hooks.contextModuleFactory.tap(PLUGIN_NAME, (cmf) => {
100
+ cmf.hooks.beforeResolve.tap(PLUGIN_NAME, this.checkIgnore);
98
101
  });
99
102
  }
100
103
  }
@@ -8,6 +8,8 @@
8
8
  /** @typedef {import("../declarations/WebpackOptions").IgnoreWarningsNormalized} IgnoreWarningsNormalized */
9
9
  /** @typedef {import("./Compiler")} Compiler */
10
10
 
11
+ const PLUGIN_NAME = "IgnoreWarningsPlugin";
12
+
11
13
  class IgnoreWarningsPlugin {
12
14
  /**
13
15
  * @param {IgnoreWarningsNormalized} ignoreWarnings conditions to ignore warnings
@@ -22,11 +24,11 @@ class IgnoreWarningsPlugin {
22
24
  * @returns {void}
23
25
  */
24
26
  apply(compiler) {
25
- compiler.hooks.compilation.tap("IgnoreWarningsPlugin", compilation => {
26
- compilation.hooks.processWarnings.tap("IgnoreWarningsPlugin", warnings =>
27
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
28
+ compilation.hooks.processWarnings.tap(PLUGIN_NAME, (warnings) =>
27
29
  warnings.filter(
28
- warning =>
29
- !this._ignoreWarnings.some(ignore => ignore(warning, compilation))
30
+ (warning) =>
31
+ !this._ignoreWarnings.some((ignore) => ignore(warning, compilation))
30
32
  )
31
33
  );
32
34
  });
@@ -13,18 +13,32 @@ const makeSerializable = require("./util/makeSerializable");
13
13
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
14
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
15
 
16
+ /** @typedef {string} InitFragmentKey */
17
+
18
+ /**
19
+ * @template GenerateContext
20
+ * @typedef {object} MaybeMergeableInitFragment
21
+ * @property {InitFragmentKey=} key
22
+ * @property {number} stage
23
+ * @property {number} position
24
+ * @property {(context: GenerateContext) => string | Source | undefined} getContent
25
+ * @property {(context: GenerateContext) => string | Source | undefined} getEndContent
26
+ * @property {(fragments: MaybeMergeableInitFragment<GenerateContext>) => MaybeMergeableInitFragment<GenerateContext>=} merge
27
+ * @property {(fragments: MaybeMergeableInitFragment<GenerateContext>[]) => MaybeMergeableInitFragment<GenerateContext>[]=} mergeAll
28
+ */
29
+
16
30
  /**
17
31
  * @template T
18
- * @param {InitFragment<T>} fragment the init fragment
32
+ * @param {T} fragment the init fragment
19
33
  * @param {number} index index
20
- * @returns {[InitFragment<T>, number]} tuple with both
34
+ * @returns {[T, number]} tuple with both
21
35
  */
22
36
  const extractFragmentIndex = (fragment, index) => [fragment, index];
23
37
 
24
38
  /**
25
39
  * @template T
26
- * @param {[InitFragment<T>, number]} a first pair
27
- * @param {[InitFragment<T>, number]} b second pair
40
+ * @param {[MaybeMergeableInitFragment<T>, number]} a first pair
41
+ * @param {[MaybeMergeableInitFragment<T>, number]} b second pair
28
42
  * @returns {number} sort value
29
43
  */
30
44
  const sortFragmentWithIndex = ([a, i], [b, j]) => {
@@ -37,13 +51,14 @@ const sortFragmentWithIndex = ([a, i], [b, j]) => {
37
51
 
38
52
  /**
39
53
  * @template GenerateContext
54
+ * @implements {MaybeMergeableInitFragment<GenerateContext>}
40
55
  */
41
56
  class InitFragment {
42
57
  /**
43
58
  * @param {string | Source | undefined} content the source code that will be included as initialization code
44
59
  * @param {number} stage category of initialization code (contribute to order)
45
60
  * @param {number} position position in the category (contribute to order)
46
- * @param {string=} key unique key to avoid emitting the same initialization code twice
61
+ * @param {InitFragmentKey=} key unique key to avoid emitting the same initialization code twice
47
62
  * @param {string | Source=} endContent the source code that will be included at the end of the module
48
63
  */
49
64
  constructor(content, stage, position, key, endContent) {
@@ -64,7 +79,7 @@ class InitFragment {
64
79
 
65
80
  /**
66
81
  * @param {GenerateContext} context context
67
- * @returns {string|Source=} the source code that will be included at the end of the module
82
+ * @returns {string | Source | undefined} the source code that will be included at the end of the module
68
83
  */
69
84
  getEndContent(context) {
70
85
  return this.endContent;
@@ -72,9 +87,8 @@ class InitFragment {
72
87
 
73
88
  /**
74
89
  * @template Context
75
- * @template T
76
90
  * @param {Source} source sources
77
- * @param {InitFragment<T>[]} initFragments init fragments
91
+ * @param {MaybeMergeableInitFragment<Context>[]} initFragments init fragments
78
92
  * @param {Context} context context
79
93
  * @returns {Source} source
80
94
  */
@@ -87,14 +101,10 @@ class InitFragment {
87
101
  .sort(sortFragmentWithIndex);
88
102
 
89
103
  // Deduplicate fragments. If a fragment has no key, it is always included.
104
+ /** @type {Map<InitFragmentKey | symbol, MaybeMergeableInitFragment<Context> | MaybeMergeableInitFragment<Context>[]>} */
90
105
  const keyedFragments = new Map();
91
106
  for (const [fragment] of sortedFragments) {
92
- if (
93
- typeof (
94
- /** @type {InitFragment<T> & { mergeAll?: (fragments: InitFragment<Context>[]) => InitFragment<Context>[] }} */
95
- (fragment).mergeAll
96
- ) === "function"
97
- ) {
107
+ if (typeof fragment.mergeAll === "function") {
98
108
  if (!fragment.key) {
99
109
  throw new Error(
100
110
  `InitFragment with mergeAll function must have a valid key: ${fragment.constructor.name}`
@@ -110,9 +120,12 @@ class InitFragment {
110
120
  }
111
121
  continue;
112
122
  } else if (typeof fragment.merge === "function") {
113
- const oldValue = keyedFragments.get(fragment.key);
123
+ const key = /** @type {InitFragmentKey} */ (fragment.key);
124
+ const oldValue =
125
+ /** @type {MaybeMergeableInitFragment<Context>} */
126
+ (keyedFragments.get(key));
114
127
  if (oldValue !== undefined) {
115
- keyedFragments.set(fragment.key, fragment.merge(oldValue));
128
+ keyedFragments.set(key, fragment.merge(oldValue));
116
129
  continue;
117
130
  }
118
131
  }
@@ -123,10 +136,19 @@ class InitFragment {
123
136
  const endContents = [];
124
137
  for (let fragment of keyedFragments.values()) {
125
138
  if (Array.isArray(fragment)) {
126
- fragment = fragment[0].mergeAll(fragment);
139
+ fragment =
140
+ /** @type {[MaybeMergeableInitFragment<Context> & { mergeAll: (fragments: MaybeMergeableInitFragment<Context>[]) => MaybeMergeableInitFragment<Context>[] }, ...MaybeMergeableInitFragment<Context>[]]} */
141
+ (fragment)[0].mergeAll(fragment);
127
142
  }
128
- concatSource.add(fragment.getContent(context));
129
- const endContent = fragment.getEndContent(context);
143
+ const content =
144
+ /** @type {MaybeMergeableInitFragment<Context>} */
145
+ (fragment).getContent(context);
146
+ if (content) {
147
+ concatSource.add(content);
148
+ }
149
+ const endContent =
150
+ /** @type {MaybeMergeableInitFragment<Context>} */
151
+ (fragment).getEndContent(context);
130
152
  if (endContent) {
131
153
  endContents.push(endContent);
132
154
  }
@@ -170,10 +192,6 @@ class InitFragment {
170
192
 
171
193
  makeSerializable(InitFragment, "webpack/lib/InitFragment");
172
194
 
173
- InitFragment.prototype.merge =
174
- /** @type {TODO} */
175
- (undefined);
176
-
177
195
  InitFragment.STAGE_CONSTANTS = 10;
178
196
  InitFragment.STAGE_ASYNC_BOUNDARY = 20;
179
197
  InitFragment.STAGE_HARMONY_EXPORTS = 30;
@@ -8,7 +8,6 @@
8
8
  const WebpackError = require("./WebpackError");
9
9
  const makeSerializable = require("./util/makeSerializable");
10
10
 
11
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
12
11
  /** @typedef {import("./Module")} Module */
13
12
 
14
13
  class InvalidDependenciesModuleWarning extends WebpackError {
@@ -17,8 +16,8 @@ class InvalidDependenciesModuleWarning extends WebpackError {
17
16
  * @param {Iterable<string>} deps invalid dependencies
18
17
  */
19
18
  constructor(module, deps) {
20
- const orderedDeps = deps ? Array.from(deps).sort() : [];
21
- const depsList = orderedDeps.map(dep => ` * ${JSON.stringify(dep)}`);
19
+ const orderedDeps = deps ? [...deps].sort() : [];
20
+ const depsList = orderedDeps.map((dep) => ` * ${JSON.stringify(dep)}`);
22
21
  super(`Invalid dependencies have been reported by plugins or loaders for this module. All reported dependencies need to be absolute paths.
23
22
  Invalid dependencies may lead to broken watching and caching.
24
23
  As best effort we try to convert all invalid values to absolute paths and converting globs into context dependencies, but this is deprecated behavior.
@@ -32,13 +32,12 @@ class JavascriptMetaInfoPlugin {
32
32
  * @param {JavascriptParser} parser the parser
33
33
  * @returns {void}
34
34
  */
35
- const handler = parser => {
35
+ const handler = (parser) => {
36
36
  parser.hooks.call.for("eval").tap(PLUGIN_NAME, () => {
37
37
  const buildInfo =
38
38
  /** @type {BuildInfo} */
39
39
  (parser.state.module.buildInfo);
40
40
  buildInfo.moduleConcatenationBailout = "eval()";
41
- buildInfo.usingEval = true;
42
41
  const currentSymbol = InnerGraph.getTopLevelSymbol(parser.state);
43
42
  if (currentSymbol) {
44
43
  InnerGraph.addUsage(parser.state, null, currentSymbol);
@@ -55,8 +54,7 @@ class JavascriptMetaInfoPlugin {
55
54
  topLevelDeclarations = buildInfo.topLevelDeclarations = new Set();
56
55
  }
57
56
  for (const name of parser.scope.definitions.asSet()) {
58
- const freeInfo = parser.getFreeInfoFromVariable(name);
59
- if (freeInfo === undefined) {
57
+ if (parser.isVariableDefined(name)) {
60
58
  topLevelDeclarations.add(name);
61
59
  }
62
60
  }
@@ -15,12 +15,13 @@ const { dirname, mkdirp } = require("./util/fs");
15
15
  /** @typedef {import("./Compiler")} Compiler */
16
16
  /** @typedef {import("./Compiler").IntermediateFileSystem} IntermediateFileSystem */
17
17
  /** @typedef {import("./Module").BuildMeta} BuildMeta */
18
+ /** @typedef {import("./ExportsInfo").ExportInfoName} ExportInfoName */
18
19
 
19
20
  /**
20
21
  * @typedef {object} ManifestModuleData
21
- * @property {string | number} id
22
- * @property {BuildMeta} buildMeta
23
- * @property {boolean | string[] | undefined} exports
22
+ * @property {ModuleId} id
23
+ * @property {BuildMeta=} buildMeta
24
+ * @property {ExportInfoName[]=} exports
24
25
  */
25
26
 
26
27
  /**
@@ -33,6 +34,8 @@ const { dirname, mkdirp } = require("./util/fs");
33
34
  * @property {string=} type Type of the dll bundle (external type, use value of 'output.libraryTarget').
34
35
  */
35
36
 
37
+ const PLUGIN_NAME = "LibManifestPlugin";
38
+
36
39
  class LibManifestPlugin {
37
40
  /**
38
41
  * @param {LibManifestPluginOptions} options the options
@@ -48,16 +51,13 @@ class LibManifestPlugin {
48
51
  */
49
52
  apply(compiler) {
50
53
  compiler.hooks.emit.tapAsync(
51
- {
52
- name: "LibManifestPlugin",
53
- stage: 110
54
- },
54
+ { name: PLUGIN_NAME, stage: 110 },
55
55
  (compilation, callback) => {
56
56
  const moduleGraph = compilation.moduleGraph;
57
57
  // store used paths to detect issue and output an error. #18200
58
58
  const usedPaths = new Set();
59
59
  asyncLib.each(
60
- Array.from(compilation.chunks),
60
+ [...compilation.chunks],
61
61
  (chunk, callback) => {
62
62
  if (!chunk.canBeInitial()) {
63
63
  callback();
@@ -87,15 +87,13 @@ class LibManifestPlugin {
87
87
  this.options.entryOnly &&
88
88
  !someInIterable(
89
89
  moduleGraph.getIncomingConnections(module),
90
- c => c.dependency instanceof EntryDependency
90
+ (c) => c.dependency instanceof EntryDependency
91
91
  )
92
92
  ) {
93
93
  continue;
94
94
  }
95
95
  const ident = module.libIdent({
96
- context:
97
- this.options.context ||
98
- /** @type {string} */ (compiler.options.context),
96
+ context: this.options.context || compiler.context,
99
97
  associatedObjectForCache: compiler.root
100
98
  });
101
99
  if (ident) {
@@ -129,7 +127,7 @@ class LibManifestPlugin {
129
127
  mkdirp(
130
128
  intermediateFileSystem,
131
129
  dirname(intermediateFileSystem, targetPath),
132
- err => {
130
+ (err) => {
133
131
  if (err) return callback(err);
134
132
  intermediateFileSystem.writeFile(targetPath, buffer, callback);
135
133
  }
@@ -141,4 +139,5 @@ class LibManifestPlugin {
141
139
  );
142
140
  }
143
141
  }
142
+
144
143
  module.exports = LibManifestPlugin;
@@ -13,8 +13,13 @@ const createSchemaValidation = require("./util/create-schema-validation");
13
13
  /** @typedef {import("./Compiler")} Compiler */
14
14
  /** @typedef {import("./ModuleFilenameHelpers").MatchObject} MatchObject */
15
15
 
16
+ /**
17
+ * @template T
18
+ * @typedef {import("../declarations/LoaderContext").LoaderContext<T>} LoaderContext
19
+ */
20
+
16
21
  const validate = createSchemaValidation(
17
- require("../schemas/plugins/LoaderOptionsPlugin.check.js"),
22
+ require("../schemas/plugins/LoaderOptionsPlugin.check"),
18
23
  () => require("../schemas/plugins/LoaderOptionsPlugin.json"),
19
24
  {
20
25
  name: "Loader Options Plugin",
@@ -22,6 +27,8 @@ const validate = createSchemaValidation(
22
27
  }
23
28
  );
24
29
 
30
+ const PLUGIN_NAME = "LoaderOptionsPlugin";
31
+
25
32
  class LoaderOptionsPlugin {
26
33
  /**
27
34
  * @param {LoaderOptionsPluginOptions & MatchObject} options options object
@@ -31,16 +38,7 @@ class LoaderOptionsPlugin {
31
38
  // If no options are set then generate empty options object
32
39
  if (typeof options !== "object") options = {};
33
40
  if (!options.test) {
34
- // This is mocking a RegExp object which always returns true
35
- // TODO: Figure out how to do `as unknown as RegExp` for this line
36
- // in JSDoc equivalent
37
- /** @type {any} */
38
- const defaultTrueMockRegExp = {
39
- test: () => true
40
- };
41
-
42
- /** @type {RegExp} */
43
- options.test = defaultTrueMockRegExp;
41
+ options.test = () => true;
44
42
  }
45
43
  this.options = options;
46
44
  }
@@ -52,9 +50,9 @@ class LoaderOptionsPlugin {
52
50
  */
53
51
  apply(compiler) {
54
52
  const options = this.options;
55
- compiler.hooks.compilation.tap("LoaderOptionsPlugin", compilation => {
53
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
56
54
  NormalModule.getCompilationHooks(compilation).loader.tap(
57
- "LoaderOptionsPlugin",
55
+ PLUGIN_NAME,
58
56
  (context, module) => {
59
57
  const resource = module.resource;
60
58
  if (!resource) return;
@@ -70,7 +68,7 @@ class LoaderOptionsPlugin {
70
68
  continue;
71
69
  }
72
70
 
73
- /** @type {any} */
71
+ /** @type {LoaderContext<EXPECTED_ANY> & Record<string, EXPECTED_ANY>} */
74
72
  (context)[key] = options[key];
75
73
  }
76
74
  }
@@ -9,6 +9,8 @@ const NormalModule = require("./NormalModule");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
11
 
12
+ const PLUGIN_NAME = "LoaderTargetPlugin";
13
+
12
14
  class LoaderTargetPlugin {
13
15
  /**
14
16
  * @param {string} target the target
@@ -23,10 +25,10 @@ class LoaderTargetPlugin {
23
25
  * @returns {void}
24
26
  */
25
27
  apply(compiler) {
26
- compiler.hooks.compilation.tap("LoaderTargetPlugin", compilation => {
28
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
27
29
  NormalModule.getCompilationHooks(compilation).loader.tap(
28
- "LoaderTargetPlugin",
29
- loaderContext => {
30
+ PLUGIN_NAME,
31
+ (loaderContext) => {
30
32
  loaderContext.target = this.target;
31
33
  }
32
34
  );
@@ -5,13 +5,12 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { SyncWaterfallHook } = require("tapable");
9
8
  const util = require("util");
9
+ const { SyncWaterfallHook } = require("tapable");
10
10
  const RuntimeGlobals = require("./RuntimeGlobals");
11
11
  const memoize = require("./util/memoize");
12
12
 
13
13
  /** @typedef {import("tapable").Tap} Tap */
14
- /** @typedef {import("webpack-sources").ConcatSource} ConcatSource */
15
14
  /** @typedef {import("webpack-sources").Source} Source */
16
15
  /** @typedef {import("../declarations/WebpackOptions").Output} OutputOptions */
17
16
  /** @typedef {import("./ModuleTemplate")} ModuleTemplate */
@@ -19,19 +18,13 @@ const memoize = require("./util/memoize");
19
18
  /** @typedef {import("./Compilation")} Compilation */
20
19
  /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
21
20
  /** @typedef {import("./Compilation").InterpolatedPathAndAssetInfo} InterpolatedPathAndAssetInfo */
22
- /** @typedef {import("./Module")} Module} */
23
- /** @typedef {import("./util/Hash")} Hash} */
24
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates} */
25
- /** @typedef {import("./javascript/JavascriptModulesPlugin").RenderContext} RenderContext} */
26
- /** @typedef {import("./javascript/JavascriptModulesPlugin").RenderBootstrapContext} RenderBootstrapContext} */
27
- /** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkHashContext} ChunkHashContext} */
28
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate} */
29
- /** @typedef {import("./ModuleGraph")} ModuleGraph} */
30
- /** @typedef {import("./ChunkGraph")} ChunkGraph} */
31
- /** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions} */
32
- /** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry} */
33
- /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath} */
34
- /** @typedef {import("./TemplatedPathPlugin").PathData} PathData} */
21
+ /** @typedef {import("./util/Hash")} Hash */
22
+ /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
23
+ /** @typedef {import("./javascript/JavascriptModulesPlugin").RenderBootstrapContext} RenderBootstrapContext */
24
+ /** @typedef {import("./Template").RenderManifestOptions} RenderManifestOptions */
25
+ /** @typedef {import("./Template").RenderManifestEntry} RenderManifestEntry */
26
+ /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
27
+ /** @typedef {import("./TemplatedPathPlugin").PathData} PathData */
35
28
  /**
36
29
  * @template T
37
30
  * @typedef {import("tapable").IfSet<T>} IfSet
@@ -62,7 +55,7 @@ class MainTemplate {
62
55
  /**
63
56
  * @template AdditionalOptions
64
57
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
65
- * @param {function(RenderManifestEntry[], RenderManifestOptions): RenderManifestEntry[]} fn fn
58
+ * @param {(renderManifestEntries: RenderManifestEntry[], renderManifestOptions: RenderManifestOptions) => RenderManifestEntry[]} fn fn
66
59
  */
67
60
  (options, fn) => {
68
61
  compilation.hooks.renderManifest.tap(
@@ -96,7 +89,7 @@ class MainTemplate {
96
89
  /**
97
90
  * @template AdditionalOptions
98
91
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
99
- * @param {function(string, RenderBootstrapContext): string} fn fn
92
+ * @param {(value: string, renderBootstrapContext: RenderBootstrapContext) => string} fn fn
100
93
  */
101
94
  (options, fn) => {
102
95
  getJavascriptModulesPlugin()
@@ -133,7 +126,7 @@ class MainTemplate {
133
126
  /**
134
127
  * @template AdditionalOptions
135
128
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
136
- * @param {function(Source, Chunk, string | undefined, ModuleTemplate, DependencyTemplates): Source} fn fn
129
+ * @param {(source: Source, chunk: Chunk, hash: string | undefined, moduleTemplate: ModuleTemplate, dependencyTemplates: DependencyTemplates) => Source} fn fn
137
130
  */
138
131
  (options, fn) => {
139
132
  getJavascriptModulesPlugin()
@@ -165,7 +158,7 @@ class MainTemplate {
165
158
  /**
166
159
  * @template AdditionalOptions
167
160
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
168
- * @param {function(Source, Chunk, string | undefined): Source} fn fn
161
+ * @param {(source: Source, chunk: Chunk, hash: string | undefined) => Source} fn fn
169
162
  */
170
163
  (options, fn) => {
171
164
  getJavascriptModulesPlugin()
@@ -191,7 +184,7 @@ class MainTemplate {
191
184
  /**
192
185
  * @template AdditionalOptions
193
186
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
194
- * @param {function(string, object, AssetInfo | undefined): string} fn fn
187
+ * @param {(value: string, path: PathData, assetInfo: AssetInfo | undefined) => string} fn fn
195
188
  */
196
189
  (options, fn) => {
197
190
  compilation.hooks.assetPath.tap(options, fn);
@@ -215,7 +208,7 @@ class MainTemplate {
215
208
  /**
216
209
  * @template AdditionalOptions
217
210
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
218
- * @param {function(Hash): void} fn fn
211
+ * @param {(hash: Hash) => void} fn fn
219
212
  */
220
213
  (options, fn) => {
221
214
  compilation.hooks.fullHash.tap(options, fn);
@@ -229,7 +222,7 @@ class MainTemplate {
229
222
  /**
230
223
  * @template AdditionalOptions
231
224
  * @param {string | Tap & IfSet<AdditionalOptions>} options options
232
- * @param {function(Hash, Chunk): void} fn fn
225
+ * @param {(hash: Hash, chunk: Chunk) => void} fn fn
233
226
  */
234
227
  (options, fn) => {
235
228
  getJavascriptModulesPlugin()
@@ -323,12 +316,8 @@ class MainTemplate {
323
316
  /**
324
317
  * @param {PathData} options context data
325
318
  * @returns {string} interpolated path
326
- */ options =>
327
- compilation.getAssetPath(
328
- /** @type {string} */
329
- (compilation.outputOptions.publicPath),
330
- options
331
- ),
319
+ */ (options) =>
320
+ compilation.getAssetPath(compilation.outputOptions.publicPath, options),
332
321
  "MainTemplate.getPublicPath is deprecated (use Compilation.getAssetPath(compilation.outputOptions.publicPath, options) instead)",
333
322
  "DEP_WEBPACK_MAIN_TEMPLATE_GET_PUBLIC_PATH"
334
323
  );
@@ -371,7 +360,7 @@ Object.defineProperty(MainTemplate.prototype, "outputOptions", {
371
360
  * @this {MainTemplate}
372
361
  * @returns {OutputOptions} output options
373
362
  */
374
- function () {
363
+ function outputOptions() {
375
364
  return this._outputOptions;
376
365
  },
377
366
  "MainTemplate.outputOptions is deprecated (use Compilation.outputOptions instead)",