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
@@ -5,63 +5,83 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const OptionsApply = require("./OptionsApply");
8
+ const APIPlugin = require("./APIPlugin");
9
9
 
10
- const AssetModulesPlugin = require("./asset/AssetModulesPlugin");
11
- const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
12
- const JsonModulesPlugin = require("./json/JsonModulesPlugin");
10
+ const CompatibilityPlugin = require("./CompatibilityPlugin");
13
11
 
14
- const ChunkPrefetchPreloadPlugin = require("./prefetch/ChunkPrefetchPreloadPlugin");
12
+ const ConstPlugin = require("./ConstPlugin");
15
13
 
16
14
  const EntryOptionPlugin = require("./EntryOptionPlugin");
15
+
16
+ const ExportsInfoApiPlugin = require("./ExportsInfoApiPlugin");
17
+ const FlagDependencyExportsPlugin = require("./FlagDependencyExportsPlugin");
18
+
19
+ const JavascriptMetaInfoPlugin = require("./JavascriptMetaInfoPlugin");
20
+
21
+ const NodeStuffPlugin = require("./NodeStuffPlugin");
22
+ const OptionsApply = require("./OptionsApply");
23
+
17
24
  const RecordIdsPlugin = require("./RecordIdsPlugin");
18
25
 
19
26
  const RuntimePlugin = require("./RuntimePlugin");
20
27
 
21
- const APIPlugin = require("./APIPlugin");
22
- const CompatibilityPlugin = require("./CompatibilityPlugin");
23
- const ConstPlugin = require("./ConstPlugin");
24
- const ExportsInfoApiPlugin = require("./ExportsInfoApiPlugin");
25
- const WebpackIsIncludedPlugin = require("./WebpackIsIncludedPlugin");
26
-
27
28
  const TemplatedPathPlugin = require("./TemplatedPathPlugin");
29
+
28
30
  const UseStrictPlugin = require("./UseStrictPlugin");
31
+
29
32
  const WarnCaseSensitiveModulesPlugin = require("./WarnCaseSensitiveModulesPlugin");
30
33
 
31
- const DataUriPlugin = require("./schemes/DataUriPlugin");
32
- const FileUriPlugin = require("./schemes/FileUriPlugin");
34
+ const WebpackIsIncludedPlugin = require("./WebpackIsIncludedPlugin");
35
+
36
+ const AssetModulesPlugin = require("./asset/AssetModulesPlugin");
37
+
38
+ const InferAsyncModulesPlugin = require("./async-modules/InferAsyncModulesPlugin");
33
39
 
34
40
  const ResolverCachePlugin = require("./cache/ResolverCachePlugin");
35
41
 
36
42
  const CommonJsPlugin = require("./dependencies/CommonJsPlugin");
43
+
37
44
  const HarmonyModulesPlugin = require("./dependencies/HarmonyModulesPlugin");
45
+
38
46
  const ImportMetaContextPlugin = require("./dependencies/ImportMetaContextPlugin");
39
47
  const ImportMetaPlugin = require("./dependencies/ImportMetaPlugin");
48
+
40
49
  const ImportPlugin = require("./dependencies/ImportPlugin");
41
50
  const LoaderPlugin = require("./dependencies/LoaderPlugin");
51
+
42
52
  const RequireContextPlugin = require("./dependencies/RequireContextPlugin");
43
53
  const RequireEnsurePlugin = require("./dependencies/RequireEnsurePlugin");
44
54
  const RequireIncludePlugin = require("./dependencies/RequireIncludePlugin");
55
+
45
56
  const SystemPlugin = require("./dependencies/SystemPlugin");
57
+
46
58
  const URLPlugin = require("./dependencies/URLPlugin");
59
+
47
60
  const WorkerPlugin = require("./dependencies/WorkerPlugin");
48
61
 
49
- const InferAsyncModulesPlugin = require("./async-modules/InferAsyncModulesPlugin");
62
+ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
63
+
64
+ const JsonModulesPlugin = require("./json/JsonModulesPlugin");
65
+
66
+ const ChunkPrefetchPreloadPlugin = require("./prefetch/ChunkPrefetchPreloadPlugin");
67
+
68
+ const DataUriPlugin = require("./schemes/DataUriPlugin");
69
+ const FileUriPlugin = require("./schemes/FileUriPlugin");
50
70
 
51
- const JavascriptMetaInfoPlugin = require("./JavascriptMetaInfoPlugin");
52
71
  const DefaultStatsFactoryPlugin = require("./stats/DefaultStatsFactoryPlugin");
53
72
  const DefaultStatsPresetPlugin = require("./stats/DefaultStatsPresetPlugin");
54
73
  const DefaultStatsPrinterPlugin = require("./stats/DefaultStatsPrinterPlugin");
55
74
 
56
75
  const { cleverMerge } = require("./util/cleverMerge");
57
76
 
58
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
59
77
  /** @typedef {import("../declarations/WebpackOptions").WebpackPluginFunction} WebpackPluginFunction */
60
- /** @typedef {import("../declarations/WebpackOptions").WebpackPluginInstance} WebpackPluginInstance */
78
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
61
79
  /** @typedef {import("./Compiler")} Compiler */
62
80
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
63
81
  /** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
64
82
 
83
+ const CLASS_NAME = "WebpackOptionsApply";
84
+
65
85
  class WebpackOptionsApply extends OptionsApply {
66
86
  constructor() {
67
87
  super();
@@ -73,7 +93,7 @@ class WebpackOptionsApply extends OptionsApply {
73
93
  * @returns {WebpackOptions} options object
74
94
  */
75
95
  process(options, compiler) {
76
- compiler.outputPath = /** @type {string} */ (options.output.path);
96
+ compiler.outputPath = options.output.path;
77
97
  compiler.recordsInputPath = options.recordsInputPath || null;
78
98
  compiler.recordsOutputPath = options.recordsOutputPath || null;
79
99
  compiler.name = options.name;
@@ -81,6 +101,7 @@ class WebpackOptionsApply extends OptionsApply {
81
101
  if (options.externals) {
82
102
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
83
103
  const ExternalsPlugin = require("./ExternalsPlugin");
104
+
84
105
  new ExternalsPlugin(options.externalsType, options.externals).apply(
85
106
  compiler
86
107
  );
@@ -88,99 +109,106 @@ class WebpackOptionsApply extends OptionsApply {
88
109
 
89
110
  if (options.externalsPresets.node) {
90
111
  const NodeTargetPlugin = require("./node/NodeTargetPlugin");
91
- new NodeTargetPlugin().apply(compiler);
92
- }
93
- if (options.externalsPresets.electronMain) {
94
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
95
- const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
96
- new ElectronTargetPlugin("main").apply(compiler);
97
- }
98
- if (options.externalsPresets.electronPreload) {
99
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
100
- const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
101
- new ElectronTargetPlugin("preload").apply(compiler);
102
- }
103
- if (options.externalsPresets.electronRenderer) {
104
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
105
- const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
106
- new ElectronTargetPlugin("renderer").apply(compiler);
107
- }
108
- if (
109
- options.externalsPresets.electron &&
110
- !options.externalsPresets.electronMain &&
111
- !options.externalsPresets.electronPreload &&
112
- !options.externalsPresets.electronRenderer
113
- ) {
114
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
115
- const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
116
- new ElectronTargetPlugin().apply(compiler);
117
- }
118
- if (options.externalsPresets.nwjs) {
119
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
120
- const ExternalsPlugin = require("./ExternalsPlugin");
121
- new ExternalsPlugin("node-commonjs", "nw.gui").apply(compiler);
112
+
113
+ // Some older versions of Node.js don't support all built-in modules via import, only via `require`,
114
+ // but it seems like there shouldn't be a warning here since these versions are rarely used in real applications
115
+ new NodeTargetPlugin(
116
+ options.output.module &&
117
+ compiler.platform.node === null &&
118
+ compiler.platform.web === null
119
+ ? "module-import"
120
+ : "node-commonjs"
121
+ ).apply(compiler);
122
+
123
+ // Handle external CSS `@import` and `url()`
124
+ if (options.experiments.css) {
125
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
126
+ const ExternalsPlugin = require("./ExternalsPlugin");
127
+
128
+ new ExternalsPlugin(
129
+ "module",
130
+ ({ request, dependencyType, contextInfo }, callback) => {
131
+ if (
132
+ /\.css(\?|$)/.test(contextInfo.issuer) &&
133
+ /^(\/\/|https?:\/\/|#)/.test(request)
134
+ ) {
135
+ if (dependencyType === "url") {
136
+ return callback(null, `asset ${request}`);
137
+ } else if (
138
+ (dependencyType === "css-import" ||
139
+ dependencyType === "css-import-local-module" ||
140
+ dependencyType === "css-import-global-module") &&
141
+ options.experiments.css
142
+ ) {
143
+ return callback(null, `css-import ${request}`);
144
+ }
145
+ }
146
+
147
+ callback();
148
+ }
149
+ ).apply(compiler);
150
+ }
122
151
  }
123
- if (options.externalsPresets.webAsync) {
124
- // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
125
- const ExternalsPlugin = require("./ExternalsPlugin");
126
- new ExternalsPlugin("import", ({ request, dependencyType }, callback) => {
127
- if (dependencyType === "url") {
128
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
129
- return callback(null, `asset ${request}`);
130
- } else if (options.experiments.css && dependencyType === "css-import") {
131
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
132
- return callback(null, `css-import ${request}`);
133
- } else if (
134
- options.experiments.css &&
135
- /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
136
- ) {
137
- if (/^\.css(\?|$)/.test(/** @type {string} */ (request)))
138
- return callback(null, `css-import ${request}`);
139
- return callback(null, `import ${request}`);
140
- }
141
- callback();
142
- }).apply(compiler);
143
- } else if (options.externalsPresets.web) {
152
+ if (options.externalsPresets.webAsync || options.externalsPresets.web) {
153
+ const type = options.externalsPresets.webAsync ? "import" : "module";
154
+
144
155
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
145
156
  const ExternalsPlugin = require("./ExternalsPlugin");
146
- new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
147
- if (dependencyType === "url") {
148
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
157
+
158
+ new ExternalsPlugin(type, ({ request, dependencyType }, callback) => {
159
+ if (/^(\/\/|https?:\/\/|#|std:|jsr:|npm:)/.test(request)) {
160
+ if (dependencyType === "url") {
149
161
  return callback(null, `asset ${request}`);
150
- } else if (options.experiments.css && dependencyType === "css-import") {
151
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
162
+ } else if (
163
+ (dependencyType === "css-import" ||
164
+ dependencyType === "css-import-local-module" ||
165
+ dependencyType === "css-import-global-module") &&
166
+ options.experiments.css
167
+ ) {
152
168
  return callback(null, `css-import ${request}`);
153
- } else if (
154
- /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
155
- ) {
156
- if (
157
- options.experiments.css &&
158
- /^\.css((\?)|$)/.test(/** @type {string} */ (request))
159
- )
160
- return callback(null, `css-import ${request}`);
161
- return callback(null, `module ${request}`);
169
+ } else if (/^(\/\/|https?:\/\/|std:|jsr:|npm:)/.test(request)) {
170
+ return callback(null, `${type} ${request}`);
171
+ }
162
172
  }
173
+
163
174
  callback();
164
175
  }).apply(compiler);
165
- } else if (options.externalsPresets.node && options.experiments.css) {
176
+ }
177
+ if (options.externalsPresets.electron) {
178
+ if (options.externalsPresets.electronMain) {
179
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
180
+ const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
181
+
182
+ new ElectronTargetPlugin("main").apply(compiler);
183
+ }
184
+ if (options.externalsPresets.electronPreload) {
185
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
186
+ const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
187
+
188
+ new ElectronTargetPlugin("preload").apply(compiler);
189
+ }
190
+ if (options.externalsPresets.electronRenderer) {
191
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
192
+ const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
193
+
194
+ new ElectronTargetPlugin("renderer").apply(compiler);
195
+ }
196
+ if (
197
+ !options.externalsPresets.electronMain &&
198
+ !options.externalsPresets.electronPreload &&
199
+ !options.externalsPresets.electronRenderer
200
+ ) {
201
+ // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
202
+ const ElectronTargetPlugin = require("./electron/ElectronTargetPlugin");
203
+
204
+ new ElectronTargetPlugin().apply(compiler);
205
+ }
206
+ }
207
+ if (options.externalsPresets.nwjs) {
166
208
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
167
209
  const ExternalsPlugin = require("./ExternalsPlugin");
168
- new ExternalsPlugin("module", ({ request, dependencyType }, callback) => {
169
- if (dependencyType === "url") {
170
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
171
- return callback(null, `asset ${request}`);
172
- } else if (dependencyType === "css-import") {
173
- if (/^(\/\/|https?:\/\/|#)/.test(/** @type {string} */ (request)))
174
- return callback(null, `css-import ${request}`);
175
- } else if (
176
- /^(\/\/|https?:\/\/|std:)/.test(/** @type {string} */ (request))
177
- ) {
178
- if (/^\.css(\?|$)/.test(/** @type {string} */ (request)))
179
- return callback(null, `css-import ${request}`);
180
- return callback(null, `module ${request}`);
181
- }
182
- callback();
183
- }).apply(compiler);
210
+
211
+ new ExternalsPlugin("node-commonjs", "nw.gui").apply(compiler);
184
212
  }
185
213
 
186
214
  new ChunkPrefetchPreloadPlugin().apply(compiler);
@@ -189,16 +217,19 @@ class WebpackOptionsApply extends OptionsApply {
189
217
  switch (options.output.chunkFormat) {
190
218
  case "array-push": {
191
219
  const ArrayPushCallbackChunkFormatPlugin = require("./javascript/ArrayPushCallbackChunkFormatPlugin");
220
+
192
221
  new ArrayPushCallbackChunkFormatPlugin().apply(compiler);
193
222
  break;
194
223
  }
195
224
  case "commonjs": {
196
225
  const CommonJsChunkFormatPlugin = require("./javascript/CommonJsChunkFormatPlugin");
226
+
197
227
  new CommonJsChunkFormatPlugin().apply(compiler);
198
228
  break;
199
229
  }
200
230
  case "module": {
201
231
  const ModuleChunkFormatPlugin = require("./esm/ModuleChunkFormatPlugin");
232
+
202
233
  new ModuleChunkFormatPlugin().apply(compiler);
203
234
  break;
204
235
  }
@@ -216,6 +247,7 @@ class WebpackOptionsApply extends OptionsApply {
216
247
  if (enabledChunkLoadingTypes.length > 0) {
217
248
  for (const type of enabledChunkLoadingTypes) {
218
249
  const EnableChunkLoadingPlugin = require("./javascript/EnableChunkLoadingPlugin");
250
+
219
251
  new EnableChunkLoadingPlugin(type).apply(compiler);
220
252
  }
221
253
  }
@@ -227,6 +259,7 @@ class WebpackOptionsApply extends OptionsApply {
227
259
  if (enabledWasmLoadingTypes.length > 0) {
228
260
  for (const type of enabledWasmLoadingTypes) {
229
261
  const EnableWasmLoadingPlugin = require("./wasm/EnableWasmLoadingPlugin");
262
+
230
263
  new EnableWasmLoadingPlugin(type).apply(compiler);
231
264
  }
232
265
  }
@@ -236,14 +269,31 @@ class WebpackOptionsApply extends OptionsApply {
236
269
  (options.output.enabledLibraryTypes);
237
270
 
238
271
  if (enabledLibraryTypes.length > 0) {
272
+ let once = true;
239
273
  for (const type of enabledLibraryTypes) {
240
274
  const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
241
- new EnableLibraryPlugin(type).apply(compiler);
275
+
276
+ new EnableLibraryPlugin(type, {
277
+ // eslint-disable-next-line no-loop-func
278
+ additionalApply: () => {
279
+ if (!once) return;
280
+ once = false;
281
+ // We rely on `exportInfo` to generate the `export statement` in certain library bundles.
282
+ // Therefore, we ignore the disabling of `optimization.providedExport` and continue to apply `FlagDependencyExportsPlugin`.
283
+ if (
284
+ ["module", "commonjs-static", "modern-module"].includes(type) &&
285
+ !options.optimization.providedExports
286
+ ) {
287
+ new FlagDependencyExportsPlugin().apply(compiler);
288
+ }
289
+ }
290
+ }).apply(compiler);
242
291
  }
243
292
  }
244
293
 
245
294
  if (options.output.pathinfo) {
246
295
  const ModuleInfoHeaderPlugin = require("./ModuleInfoHeaderPlugin");
296
+
247
297
  new ModuleInfoHeaderPlugin(options.output.pathinfo !== true).apply(
248
298
  compiler
249
299
  );
@@ -251,11 +301,20 @@ class WebpackOptionsApply extends OptionsApply {
251
301
 
252
302
  if (options.output.clean) {
253
303
  const CleanPlugin = require("./CleanPlugin");
304
+
254
305
  new CleanPlugin(
255
306
  options.output.clean === true ? {} : options.output.clean
256
307
  ).apply(compiler);
257
308
  }
258
309
 
310
+ if (options.dotenv) {
311
+ const DotenvPlugin = require("./DotenvPlugin");
312
+
313
+ new DotenvPlugin(
314
+ typeof options.dotenv === "boolean" ? {} : options.dotenv
315
+ ).apply(compiler);
316
+ }
317
+
259
318
  if (options.devtool) {
260
319
  if (options.devtool.includes("source-map")) {
261
320
  const hidden = options.devtool.includes("hidden");
@@ -282,6 +341,7 @@ class WebpackOptionsApply extends OptionsApply {
282
341
  }).apply(compiler);
283
342
  } else if (options.devtool.includes("eval")) {
284
343
  const EvalDevToolModulePlugin = require("./EvalDevToolModulePlugin");
344
+
285
345
  new EvalDevToolModulePlugin({
286
346
  moduleFilenameTemplate: options.output.devtoolModuleFilenameTemplate,
287
347
  namespace: options.output.devtoolNamespace
@@ -321,6 +381,7 @@ class WebpackOptionsApply extends OptionsApply {
321
381
 
322
382
  if (options.experiments.syncWebAssembly) {
323
383
  const WebAssemblyModulesPlugin = require("./wasm-sync/WebAssemblyModulesPlugin");
384
+
324
385
  new WebAssemblyModulesPlugin({
325
386
  mangleImports: options.optimization.mangleWasmImports
326
387
  }).apply(compiler);
@@ -328,6 +389,7 @@ class WebpackOptionsApply extends OptionsApply {
328
389
 
329
390
  if (options.experiments.asyncWebAssembly) {
330
391
  const AsyncWebAssemblyModulesPlugin = require("./wasm-async/AsyncWebAssemblyModulesPlugin");
392
+
331
393
  new AsyncWebAssemblyModulesPlugin({
332
394
  mangleImports: options.optimization.mangleWasmImports
333
395
  }).apply(compiler);
@@ -335,15 +397,50 @@ class WebpackOptionsApply extends OptionsApply {
335
397
 
336
398
  if (options.experiments.css) {
337
399
  const CssModulesPlugin = require("./css/CssModulesPlugin");
400
+
338
401
  new CssModulesPlugin().apply(compiler);
339
402
  }
340
403
 
341
404
  if (options.experiments.lazyCompilation) {
342
405
  const LazyCompilationPlugin = require("./hmr/LazyCompilationPlugin");
406
+
343
407
  const lazyOptions =
344
408
  typeof options.experiments.lazyCompilation === "object"
345
409
  ? options.experiments.lazyCompilation
346
410
  : {};
411
+ const isUniversalTarget =
412
+ options.output.module &&
413
+ compiler.platform.node === null &&
414
+ compiler.platform.web === null;
415
+
416
+ if (isUniversalTarget) {
417
+ const emitter = require.resolve("../hot/emitter-event-target.js");
418
+
419
+ const NormalModuleReplacementPlugin = require("./NormalModuleReplacementPlugin");
420
+
421
+ // Override emitter that using `EventEmitter` to `EventTarget`
422
+ // TODO webpack6 - migrate to `EventTarget` by default
423
+ new NormalModuleReplacementPlugin(/emitter(\.js)?$/, (result) => {
424
+ if (
425
+ /webpack[/\\]hot|webpack-dev-server[/\\]client|webpack-hot-middleware[/\\]client/.test(
426
+ result.context
427
+ )
428
+ ) {
429
+ result.request = emitter;
430
+ }
431
+
432
+ return result;
433
+ }).apply(compiler);
434
+ }
435
+
436
+ const backend = require.resolve(
437
+ isUniversalTarget
438
+ ? "../hot/lazy-compilation-universal.js"
439
+ : `../hot/lazy-compilation-${
440
+ options.externalsPresets.node ? "node" : "web"
441
+ }.js`
442
+ );
443
+
347
444
  new LazyCompilationPlugin({
348
445
  backend:
349
446
  typeof lazyOptions.backend === "function"
@@ -351,12 +448,7 @@ class WebpackOptionsApply extends OptionsApply {
351
448
  : require("./hmr/lazyCompilationBackend")({
352
449
  ...lazyOptions.backend,
353
450
  client:
354
- (lazyOptions.backend && lazyOptions.backend.client) ||
355
- require.resolve(
356
- `../hot/lazy-compilation-${
357
- options.externalsPresets.node ? "node" : "web"
358
- }.js`
359
- )
451
+ (lazyOptions.backend && lazyOptions.backend.client) || backend
360
452
  }),
361
453
  entries: !lazyOptions || lazyOptions.entries !== false,
362
454
  imports: !lazyOptions || lazyOptions.imports !== false,
@@ -366,16 +458,20 @@ class WebpackOptionsApply extends OptionsApply {
366
458
 
367
459
  if (options.experiments.buildHttp) {
368
460
  const HttpUriPlugin = require("./schemes/HttpUriPlugin");
461
+
369
462
  const httpOptions = options.experiments.buildHttp;
370
463
  new HttpUriPlugin(httpOptions).apply(compiler);
371
464
  }
372
465
 
466
+ if (options.experiments.deferImport) {
467
+ const JavascriptParser = require("./javascript/JavascriptParser");
468
+ const importPhases = require("acorn-import-phases");
469
+
470
+ JavascriptParser.extend(importPhases({ source: false }));
471
+ }
472
+
373
473
  new EntryOptionPlugin().apply(compiler);
374
- compiler.hooks.entryOption.call(
375
- /** @type {string} */
376
- (options.context),
377
- options.entry
378
- );
474
+ compiler.hooks.entryOption.call(options.context, options.entry);
379
475
 
380
476
  new RuntimePlugin().apply(compiler);
381
477
 
@@ -386,23 +482,23 @@ class WebpackOptionsApply extends OptionsApply {
386
482
 
387
483
  new CompatibilityPlugin().apply(compiler);
388
484
  new HarmonyModulesPlugin({
389
- topLevelAwait: options.experiments.topLevelAwait
485
+ deferImport: options.experiments.deferImport
390
486
  }).apply(compiler);
391
487
  if (options.amd !== false) {
392
488
  const AMDPlugin = require("./dependencies/AMDPlugin");
393
489
  const RequireJsStuffPlugin = require("./RequireJsStuffPlugin");
490
+
394
491
  new AMDPlugin(options.amd || {}).apply(compiler);
395
492
  new RequireJsStuffPlugin().apply(compiler);
396
493
  }
397
494
  new CommonJsPlugin().apply(compiler);
398
- new LoaderPlugin({}).apply(compiler);
399
- if (options.node !== false) {
400
- const NodeStuffPlugin = require("./NodeStuffPlugin");
401
- new NodeStuffPlugin(options.node).apply(compiler);
402
- }
403
- new APIPlugin({
404
- module: options.output.module
495
+ new LoaderPlugin().apply(compiler);
496
+ new NodeStuffPlugin({
497
+ global: options.node ? options.node.global : false,
498
+ __dirname: options.node ? options.node.__dirname : false,
499
+ __filename: options.node ? options.node.__filename : false
405
500
  }).apply(compiler);
501
+ new APIPlugin().apply(compiler);
406
502
  new ExportsInfoApiPlugin().apply(compiler);
407
503
  new WebpackIsIncludedPlugin().apply(compiler);
408
504
  new ConstPlugin().apply(compiler);
@@ -430,74 +526,85 @@ class WebpackOptionsApply extends OptionsApply {
430
526
 
431
527
  if (typeof options.mode !== "string") {
432
528
  const WarnNoModeSetPlugin = require("./WarnNoModeSetPlugin");
529
+
433
530
  new WarnNoModeSetPlugin().apply(compiler);
434
531
  }
435
532
 
436
533
  const EnsureChunkConditionsPlugin = require("./optimize/EnsureChunkConditionsPlugin");
534
+
437
535
  new EnsureChunkConditionsPlugin().apply(compiler);
438
536
  if (options.optimization.removeAvailableModules) {
439
537
  const RemoveParentModulesPlugin = require("./optimize/RemoveParentModulesPlugin");
538
+
440
539
  new RemoveParentModulesPlugin().apply(compiler);
441
540
  }
442
541
  if (options.optimization.removeEmptyChunks) {
443
542
  const RemoveEmptyChunksPlugin = require("./optimize/RemoveEmptyChunksPlugin");
543
+
444
544
  new RemoveEmptyChunksPlugin().apply(compiler);
445
545
  }
446
546
  if (options.optimization.mergeDuplicateChunks) {
447
547
  const MergeDuplicateChunksPlugin = require("./optimize/MergeDuplicateChunksPlugin");
548
+
448
549
  new MergeDuplicateChunksPlugin().apply(compiler);
449
550
  }
450
551
  if (options.optimization.flagIncludedChunks) {
451
552
  const FlagIncludedChunksPlugin = require("./optimize/FlagIncludedChunksPlugin");
553
+
452
554
  new FlagIncludedChunksPlugin().apply(compiler);
453
555
  }
454
556
  if (options.optimization.sideEffects) {
455
557
  const SideEffectsFlagPlugin = require("./optimize/SideEffectsFlagPlugin");
558
+
456
559
  new SideEffectsFlagPlugin(
457
560
  options.optimization.sideEffects === true
458
561
  ).apply(compiler);
459
562
  }
460
563
  if (options.optimization.providedExports) {
461
- const FlagDependencyExportsPlugin = require("./FlagDependencyExportsPlugin");
462
564
  new FlagDependencyExportsPlugin().apply(compiler);
463
565
  }
464
566
  if (options.optimization.usedExports) {
465
567
  const FlagDependencyUsagePlugin = require("./FlagDependencyUsagePlugin");
568
+
466
569
  new FlagDependencyUsagePlugin(
467
570
  options.optimization.usedExports === "global"
468
571
  ).apply(compiler);
469
572
  }
470
573
  if (options.optimization.innerGraph) {
471
574
  const InnerGraphPlugin = require("./optimize/InnerGraphPlugin");
575
+
472
576
  new InnerGraphPlugin().apply(compiler);
473
577
  }
474
578
  if (options.optimization.mangleExports) {
475
579
  const MangleExportsPlugin = require("./optimize/MangleExportsPlugin");
580
+
476
581
  new MangleExportsPlugin(
477
582
  options.optimization.mangleExports !== "size"
478
583
  ).apply(compiler);
479
584
  }
480
585
  if (options.optimization.concatenateModules) {
481
586
  const ModuleConcatenationPlugin = require("./optimize/ModuleConcatenationPlugin");
587
+
482
588
  new ModuleConcatenationPlugin().apply(compiler);
483
589
  }
484
590
  if (options.optimization.splitChunks) {
485
591
  const SplitChunksPlugin = require("./optimize/SplitChunksPlugin");
592
+
486
593
  new SplitChunksPlugin(options.optimization.splitChunks).apply(compiler);
487
594
  }
488
595
  if (options.optimization.runtimeChunk) {
489
596
  const RuntimeChunkPlugin = require("./optimize/RuntimeChunkPlugin");
490
- new RuntimeChunkPlugin(
491
- /** @type {{ name?: (entrypoint: { name: string }) => string }} */
492
- (options.optimization.runtimeChunk)
493
- ).apply(compiler);
597
+
598
+ new RuntimeChunkPlugin(options.optimization.runtimeChunk).apply(compiler);
494
599
  }
495
600
  if (!options.optimization.emitOnErrors) {
496
601
  const NoEmitOnErrorsPlugin = require("./NoEmitOnErrorsPlugin");
602
+
497
603
  new NoEmitOnErrorsPlugin().apply(compiler);
498
604
  }
499
605
  if (options.optimization.realContentHash) {
500
606
  const RealContentHashPlugin = require("./optimize/RealContentHashPlugin");
607
+
501
608
  new RealContentHashPlugin({
502
609
  hashFunction:
503
610
  /** @type {NonNullable<WebpackOptions["output"]["hashFunction"]>} */
@@ -509,6 +616,7 @@ class WebpackOptionsApply extends OptionsApply {
509
616
  }
510
617
  if (options.optimization.checkWasmTypes) {
511
618
  const WasmFinalizeExportsPlugin = require("./wasm-sync/WasmFinalizeExportsPlugin");
619
+
512
620
  new WasmFinalizeExportsPlugin().apply(compiler);
513
621
  }
514
622
  const moduleIds = options.optimization.moduleIds;
@@ -516,17 +624,20 @@ class WebpackOptionsApply extends OptionsApply {
516
624
  switch (moduleIds) {
517
625
  case "natural": {
518
626
  const NaturalModuleIdsPlugin = require("./ids/NaturalModuleIdsPlugin");
627
+
519
628
  new NaturalModuleIdsPlugin().apply(compiler);
520
629
  break;
521
630
  }
522
631
  case "named": {
523
632
  const NamedModuleIdsPlugin = require("./ids/NamedModuleIdsPlugin");
633
+
524
634
  new NamedModuleIdsPlugin().apply(compiler);
525
635
  break;
526
636
  }
527
637
  case "hashed": {
528
638
  const WarnDeprecatedOptionPlugin = require("./WarnDeprecatedOptionPlugin");
529
639
  const HashedModuleIdsPlugin = require("./ids/HashedModuleIdsPlugin");
640
+
530
641
  new WarnDeprecatedOptionPlugin(
531
642
  "optimization.moduleIds",
532
643
  "hashed",
@@ -539,11 +650,13 @@ class WebpackOptionsApply extends OptionsApply {
539
650
  }
540
651
  case "deterministic": {
541
652
  const DeterministicModuleIdsPlugin = require("./ids/DeterministicModuleIdsPlugin");
653
+
542
654
  new DeterministicModuleIdsPlugin().apply(compiler);
543
655
  break;
544
656
  }
545
657
  case "size": {
546
658
  const OccurrenceModuleIdsPlugin = require("./ids/OccurrenceModuleIdsPlugin");
659
+
547
660
  new OccurrenceModuleIdsPlugin({
548
661
  prioritiseInitial: true
549
662
  }).apply(compiler);
@@ -560,22 +673,26 @@ class WebpackOptionsApply extends OptionsApply {
560
673
  switch (chunkIds) {
561
674
  case "natural": {
562
675
  const NaturalChunkIdsPlugin = require("./ids/NaturalChunkIdsPlugin");
676
+
563
677
  new NaturalChunkIdsPlugin().apply(compiler);
564
678
  break;
565
679
  }
566
680
  case "named": {
567
681
  const NamedChunkIdsPlugin = require("./ids/NamedChunkIdsPlugin");
682
+
568
683
  new NamedChunkIdsPlugin().apply(compiler);
569
684
  break;
570
685
  }
571
686
  case "deterministic": {
572
687
  const DeterministicChunkIdsPlugin = require("./ids/DeterministicChunkIdsPlugin");
688
+
573
689
  new DeterministicChunkIdsPlugin().apply(compiler);
574
690
  break;
575
691
  }
576
692
  case "size": {
577
693
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
578
694
  const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
695
+
579
696
  new OccurrenceChunkIdsPlugin({
580
697
  prioritiseInitial: true
581
698
  }).apply(compiler);
@@ -584,6 +701,7 @@ class WebpackOptionsApply extends OptionsApply {
584
701
  case "total-size": {
585
702
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
586
703
  const OccurrenceChunkIdsPlugin = require("./ids/OccurrenceChunkIdsPlugin");
704
+
587
705
  new OccurrenceChunkIdsPlugin({
588
706
  prioritiseInitial: false
589
707
  }).apply(compiler);
@@ -597,14 +715,16 @@ class WebpackOptionsApply extends OptionsApply {
597
715
  }
598
716
  if (options.optimization.nodeEnv) {
599
717
  const DefinePlugin = require("./DefinePlugin");
718
+
719
+ const defValue = JSON.stringify(options.optimization.nodeEnv);
720
+
600
721
  new DefinePlugin({
601
- "process.env.NODE_ENV": JSON.stringify(options.optimization.nodeEnv)
722
+ "process.env.NODE_ENV": defValue,
723
+ "import.meta.env.NODE_ENV": defValue
602
724
  }).apply(compiler);
603
725
  }
604
726
  if (options.optimization.minimize) {
605
- for (const minimizer of /** @type {(WebpackPluginInstance | WebpackPluginFunction | "...")[]} */ (
606
- options.optimization.minimizer
607
- )) {
727
+ for (const minimizer of options.optimization.minimizer) {
608
728
  if (typeof minimizer === "function") {
609
729
  /** @type {WebpackPluginFunction} */
610
730
  (minimizer).call(compiler, compiler);
@@ -616,6 +736,7 @@ class WebpackOptionsApply extends OptionsApply {
616
736
 
617
737
  if (options.performance) {
618
738
  const SizeLimitsPlugin = require("./performance/SizeLimitsPlugin");
739
+
619
740
  new SizeLimitsPlugin(options.performance).apply(compiler);
620
741
  }
621
742
 
@@ -628,6 +749,7 @@ class WebpackOptionsApply extends OptionsApply {
628
749
  new WarnCaseSensitiveModulesPlugin().apply(compiler);
629
750
 
630
751
  const AddManagedPathsPlugin = require("./cache/AddManagedPathsPlugin");
752
+
631
753
  new AddManagedPathsPlugin(
632
754
  /** @type {NonNullable<WebpackOptions["snapshot"]["managedPaths"]>} */
633
755
  (options.snapshot.managedPaths),
@@ -644,6 +766,7 @@ class WebpackOptionsApply extends OptionsApply {
644
766
  if (Number.isFinite(cacheOptions.maxGenerations)) {
645
767
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
646
768
  const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
769
+
647
770
  new MemoryWithGcCachePlugin({
648
771
  maxGenerations:
649
772
  /** @type {number} */
@@ -652,6 +775,7 @@ class WebpackOptionsApply extends OptionsApply {
652
775
  } else {
653
776
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
654
777
  const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
778
+
655
779
  new MemoryCachePlugin().apply(compiler);
656
780
  }
657
781
  if (cacheOptions.cacheUnaffected) {
@@ -666,7 +790,7 @@ class WebpackOptionsApply extends OptionsApply {
666
790
  }
667
791
  case "filesystem": {
668
792
  const AddBuildDependenciesPlugin = require("./cache/AddBuildDependenciesPlugin");
669
- // eslint-disable-next-line guard-for-in
793
+
670
794
  for (const key in cacheOptions.buildDependencies) {
671
795
  const list = cacheOptions.buildDependencies[key];
672
796
  new AddBuildDependenciesPlugin(list).apply(compiler);
@@ -674,10 +798,12 @@ class WebpackOptionsApply extends OptionsApply {
674
798
  if (!Number.isFinite(cacheOptions.maxMemoryGenerations)) {
675
799
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
676
800
  const MemoryCachePlugin = require("./cache/MemoryCachePlugin");
801
+
677
802
  new MemoryCachePlugin().apply(compiler);
678
803
  } else if (cacheOptions.maxMemoryGenerations !== 0) {
679
804
  // @ts-expect-error https://github.com/microsoft/TypeScript/issues/41697
680
805
  const MemoryWithGcCachePlugin = require("./cache/MemoryWithGcCachePlugin");
806
+
681
807
  new MemoryWithGcCachePlugin({
682
808
  maxGenerations:
683
809
  /** @type {number} */
@@ -696,13 +822,14 @@ class WebpackOptionsApply extends OptionsApply {
696
822
  case "pack": {
697
823
  const IdleFileCachePlugin = require("./cache/IdleFileCachePlugin");
698
824
  const PackFileCacheStrategy = require("./cache/PackFileCacheStrategy");
825
+
699
826
  new IdleFileCachePlugin(
700
827
  new PackFileCacheStrategy({
701
828
  compiler,
702
829
  fs:
703
830
  /** @type {IntermediateFileSystem} */
704
831
  (compiler.intermediateFileSystem),
705
- context: /** @type {string} */ (options.context),
832
+ context: options.context,
706
833
  cacheLocation:
707
834
  /** @type {string} */
708
835
  (cacheOptions.cacheLocation),
@@ -740,6 +867,7 @@ class WebpackOptionsApply extends OptionsApply {
740
867
 
741
868
  if (options.ignoreWarnings && options.ignoreWarnings.length > 0) {
742
869
  const IgnoreWarningsPlugin = require("./IgnoreWarningsPlugin");
870
+
743
871
  new IgnoreWarningsPlugin(options.ignoreWarnings).apply(compiler);
744
872
  }
745
873
 
@@ -749,7 +877,7 @@ class WebpackOptionsApply extends OptionsApply {
749
877
  }
750
878
  compiler.resolverFactory.hooks.resolveOptions
751
879
  .for("normal")
752
- .tap("WebpackOptionsApply", resolveOptions => {
880
+ .tap(CLASS_NAME, (resolveOptions) => {
753
881
  resolveOptions = cleverMerge(options.resolve, resolveOptions);
754
882
  resolveOptions.fileSystem =
755
883
  /** @type {InputFileSystem} */
@@ -758,7 +886,7 @@ class WebpackOptionsApply extends OptionsApply {
758
886
  });
759
887
  compiler.resolverFactory.hooks.resolveOptions
760
888
  .for("context")
761
- .tap("WebpackOptionsApply", resolveOptions => {
889
+ .tap(CLASS_NAME, (resolveOptions) => {
762
890
  resolveOptions = cleverMerge(options.resolve, resolveOptions);
763
891
  resolveOptions.fileSystem =
764
892
  /** @type {InputFileSystem} */
@@ -768,7 +896,7 @@ class WebpackOptionsApply extends OptionsApply {
768
896
  });
769
897
  compiler.resolverFactory.hooks.resolveOptions
770
898
  .for("loader")
771
- .tap("WebpackOptionsApply", resolveOptions => {
899
+ .tap(CLASS_NAME, (resolveOptions) => {
772
900
  resolveOptions = cleverMerge(options.resolveLoader, resolveOptions);
773
901
  resolveOptions.fileSystem =
774
902
  /** @type {InputFileSystem} */