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,9 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const mime = require("mime-types");
9
8
  const { basename, extname } = require("path");
10
9
  const util = require("util");
10
+ const mime = require("mime-types");
11
11
  const Chunk = require("./Chunk");
12
12
  const Module = require("./Module");
13
13
  const { parseResource } = require("./util/identifier");
@@ -20,11 +20,8 @@ const { parseResource } = require("./util/identifier");
20
20
 
21
21
  const REGEXP = /\[\\*([\w:]+)\\*\]/gi;
22
22
 
23
- /**
24
- * @param {string | number} id id
25
- * @returns {string | number} result
26
- */
27
- const prepareId = id => {
23
+ /** @type {PathData["prepareId"]} */
24
+ const prepareId = (id) => {
28
25
  if (typeof id !== "string") return id;
29
26
 
30
27
  if (/^"\s\+*.*\+\s*"$/.test(id)) {
@@ -50,10 +47,10 @@ const prepareId = id => {
50
47
  * @param {((arg0: number) => string) | undefined} handler handler
51
48
  * @param {AssetInfo | undefined} assetInfo asset info
52
49
  * @param {string} hashName hash name
53
- * @returns {ReplacerFunction} hash replacer function
50
+ * @returns {Replacer} hash replacer function
54
51
  */
55
52
  const hashLength = (replacer, handler, assetInfo, hashName) => {
56
- /** @type {ReplacerFunction} */
53
+ /** @type {Replacer} */
57
54
  const fn = (match, arg, input) => {
58
55
  let result;
59
56
  const length = arg && Number.parseInt(arg, 10);
@@ -81,7 +78,7 @@ const hashLength = (replacer, handler, assetInfo, hashName) => {
81
78
  return fn;
82
79
  };
83
80
 
84
- /** @typedef {(match: string, arg?: string, input?: string) => string} Replacer */
81
+ /** @typedef {(match: string, arg: string | undefined, input: string) => string} Replacer */
85
82
 
86
83
  /**
87
84
  * @param {string | number | null | undefined | (() => string | number | null | undefined)} value value
@@ -113,10 +110,11 @@ const replacer = (value, allowEmpty) => {
113
110
  const deprecationCache = new Map();
114
111
  const deprecatedFunction = (() => () => {})();
115
112
  /**
116
- * @param {Function} fn function
113
+ * @template {(...args: EXPECTED_ANY[]) => EXPECTED_ANY} T
114
+ * @param {T} fn function
117
115
  * @param {string} message message
118
116
  * @param {string} code code
119
- * @returns {function(...any[]): void} function with deprecation output
117
+ * @returns {T} function with deprecation output
120
118
  */
121
119
  const deprecated = (fn, message, code) => {
122
120
  let d = deprecationCache.get(message);
@@ -124,13 +122,16 @@ const deprecated = (fn, message, code) => {
124
122
  d = util.deprecate(deprecatedFunction, message, code);
125
123
  deprecationCache.set(message, d);
126
124
  }
127
- return (...args) => {
128
- d();
129
- return fn(...args);
130
- };
125
+ return /** @type {T} */ (
126
+ (...args) => {
127
+ d();
128
+ return fn(...args);
129
+ }
130
+ );
131
131
  };
132
132
 
133
- /** @typedef {string | function(PathData, AssetInfo=): string} TemplatePath */
133
+ /** @typedef {(pathData: PathData, assetInfo?: AssetInfo) => string} TemplatePathFn */
134
+ /** @typedef {string | TemplatePathFn} TemplatePath */
134
135
 
135
136
  /**
136
137
  * @param {TemplatePath} path the raw path
@@ -141,7 +142,7 @@ const deprecated = (fn, message, code) => {
141
142
  const replacePathVariables = (path, data, assetInfo) => {
142
143
  const chunkGraph = data.chunkGraph;
143
144
 
144
- /** @type {Map<string, Function>} */
145
+ /** @type {Map<string, Replacer>} */
145
146
  const replacements = new Map();
146
147
 
147
148
  // Filename context
@@ -299,7 +300,7 @@ const replacePathVariables = (path, data, assetInfo) => {
299
300
  const module = data.module;
300
301
 
301
302
  const idReplacer = replacer(() =>
302
- prepareId(
303
+ (data.prepareId || prepareId)(
303
304
  module instanceof Module
304
305
  ? /** @type {ModuleId} */
305
306
  (/** @type {ChunkGraph} */ (chunkGraph).getModuleId(module))
@@ -349,7 +350,9 @@ const replacePathVariables = (path, data, assetInfo) => {
349
350
  if (typeof data.runtime === "string") {
350
351
  replacements.set(
351
352
  "runtime",
352
- replacer(() => prepareId(/** @type {string} */ (data.runtime)))
353
+ replacer(() =>
354
+ (data.prepareId || prepareId)(/** @type {string} */ (data.runtime))
355
+ )
353
356
  );
354
357
  } else {
355
358
  replacements.set("runtime", replacer("_"));
@@ -366,7 +369,7 @@ const replacePathVariables = (path, data, assetInfo) => {
366
369
  const [, kind, arg] = contentMatch;
367
370
  const replacer = replacements.get(kind);
368
371
  if (replacer !== undefined) {
369
- return replacer(match, arg, path);
372
+ return replacer(match, arg, /** @type {string} */ (path));
370
373
  }
371
374
  } else if (match.startsWith("[\\") && match.endsWith("\\]")) {
372
375
  return `[${match.slice(2, -2)}]`;
@@ -386,7 +389,7 @@ class TemplatedPathPlugin {
386
389
  * @returns {void}
387
390
  */
388
391
  apply(compiler) {
389
- compiler.hooks.compilation.tap(plugin, compilation => {
392
+ compiler.hooks.compilation.tap(plugin, (compilation) => {
390
393
  compilation.hooks.assetPath.tap(plugin, replacePathVariables);
391
394
  });
392
395
  }
@@ -36,7 +36,7 @@ class UseStrictPlugin {
36
36
  * @param {JavascriptParserOptions} parserOptions the javascript parser options
37
37
  */
38
38
  const handler = (parser, parserOptions) => {
39
- parser.hooks.program.tap(PLUGIN_NAME, ast => {
39
+ parser.hooks.program.tap(PLUGIN_NAME, (ast) => {
40
40
  const firstNode = ast.body[0];
41
41
  if (
42
42
  firstNode &&
@@ -11,6 +11,8 @@ const CaseSensitiveModulesWarning = require("./CaseSensitiveModulesWarning");
11
11
  /** @typedef {import("./Module")} Module */
12
12
  /** @typedef {import("./NormalModule")} NormalModule */
13
13
 
14
+ const PLUGIN_NAME = "WarnCaseSensitiveModulesPlugin";
15
+
14
16
  class WarnCaseSensitiveModulesPlugin {
15
17
  /**
16
18
  * Apply the plugin
@@ -18,47 +20,44 @@ class WarnCaseSensitiveModulesPlugin {
18
20
  * @returns {void}
19
21
  */
20
22
  apply(compiler) {
21
- compiler.hooks.compilation.tap(
22
- "WarnCaseSensitiveModulesPlugin",
23
- compilation => {
24
- compilation.hooks.seal.tap("WarnCaseSensitiveModulesPlugin", () => {
25
- /** @type {Map<string, Map<string, Module>>} */
26
- const moduleWithoutCase = new Map();
27
- for (const module of compilation.modules) {
28
- const identifier = module.identifier();
23
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
24
+ compilation.hooks.seal.tap(PLUGIN_NAME, () => {
25
+ /** @type {Map<string, Map<string, Module>>} */
26
+ const moduleWithoutCase = new Map();
27
+ for (const module of compilation.modules) {
28
+ const identifier = module.identifier();
29
29
 
30
- // Ignore `data:` URLs, because it's not a real path
31
- if (
32
- /** @type {NormalModule} */
33
- (module).resourceResolveData !== undefined &&
34
- /** @type {NormalModule} */
35
- (module).resourceResolveData.encodedContent !== undefined
36
- ) {
37
- continue;
38
- }
30
+ // Ignore `data:` URLs, because it's not a real path
31
+ if (
32
+ /** @type {NormalModule} */
33
+ (module).resourceResolveData !== undefined &&
34
+ /** @type {NormalModule} */
35
+ (module).resourceResolveData.encodedContent !== undefined
36
+ ) {
37
+ continue;
38
+ }
39
39
 
40
- const lowerIdentifier = identifier.toLowerCase();
41
- let map = moduleWithoutCase.get(lowerIdentifier);
42
- if (map === undefined) {
43
- map = new Map();
44
- moduleWithoutCase.set(lowerIdentifier, map);
45
- }
46
- map.set(identifier, module);
40
+ const lowerIdentifier = identifier.toLowerCase();
41
+ let map = moduleWithoutCase.get(lowerIdentifier);
42
+ if (map === undefined) {
43
+ map = new Map();
44
+ moduleWithoutCase.set(lowerIdentifier, map);
47
45
  }
48
- for (const pair of moduleWithoutCase) {
49
- const map = pair[1];
50
- if (map.size > 1) {
51
- compilation.warnings.push(
52
- new CaseSensitiveModulesWarning(
53
- map.values(),
54
- compilation.moduleGraph
55
- )
56
- );
57
- }
46
+ map.set(identifier, module);
47
+ }
48
+ for (const pair of moduleWithoutCase) {
49
+ const map = pair[1];
50
+ if (map.size > 1) {
51
+ compilation.warnings.push(
52
+ new CaseSensitiveModulesWarning(
53
+ map.values(),
54
+ compilation.moduleGraph
55
+ )
56
+ );
58
57
  }
59
- });
60
- }
61
- );
58
+ }
59
+ });
60
+ });
62
61
  }
63
62
  }
64
63
 
@@ -9,6 +9,8 @@ const WebpackError = require("./WebpackError");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
11
 
12
+ const PLUGIN_NAME = "WarnDeprecatedOptionPlugin";
13
+
12
14
  class WarnDeprecatedOptionPlugin {
13
15
  /**
14
16
  * Create an instance of the plugin
@@ -28,14 +30,11 @@ class WarnDeprecatedOptionPlugin {
28
30
  * @returns {void}
29
31
  */
30
32
  apply(compiler) {
31
- compiler.hooks.thisCompilation.tap(
32
- "WarnDeprecatedOptionPlugin",
33
- compilation => {
34
- compilation.warnings.push(
35
- new DeprecatedOptionWarning(this.option, this.value, this.suggestion)
36
- );
37
- }
38
- );
33
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
34
+ compilation.warnings.push(
35
+ new DeprecatedOptionWarning(this.option, this.value, this.suggestion)
36
+ );
37
+ });
39
38
  }
40
39
  }
41
40
 
@@ -9,6 +9,8 @@ const NoModeWarning = require("./NoModeWarning");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
11
 
12
+ const PLUGIN_NAME = "WarnNoModeSetPlugin";
13
+
12
14
  class WarnNoModeSetPlugin {
13
15
  /**
14
16
  * Apply the plugin
@@ -16,7 +18,7 @@ class WarnNoModeSetPlugin {
16
18
  * @returns {void}
17
19
  */
18
20
  apply(compiler) {
19
- compiler.hooks.thisCompilation.tap("WarnNoModeSetPlugin", compilation => {
21
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
20
22
  compilation.warnings.push(new NoModeWarning());
21
23
  });
22
24
  }
@@ -9,14 +9,14 @@ const { groupBy } = require("./util/ArrayHelpers");
9
9
  const createSchemaValidation = require("./util/create-schema-validation");
10
10
 
11
11
  /** @typedef {import("../declarations/plugins/WatchIgnorePlugin").WatchIgnorePluginOptions} WatchIgnorePluginOptions */
12
- /** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
13
12
  /** @typedef {import("./Compiler")} Compiler */
14
13
  /** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
15
14
  /** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
16
15
  /** @typedef {import("./util/fs").WatchMethod} WatchMethod */
17
16
  /** @typedef {import("./util/fs").Watcher} Watcher */
17
+
18
18
  const validate = createSchemaValidation(
19
- require("../schemas/plugins/WatchIgnorePlugin.check.js"),
19
+ require("../schemas/plugins/WatchIgnorePlugin.check"),
20
20
  () => require("../schemas/plugins/WatchIgnorePlugin.json"),
21
21
  {
22
22
  name: "Watch Ignore Plugin",
@@ -38,24 +38,24 @@ class IgnoringWatchFileSystem {
38
38
 
39
39
  /** @type {WatchMethod} */
40
40
  watch(files, dirs, missing, startTime, options, callback, callbackUndelayed) {
41
- files = Array.from(files);
42
- dirs = Array.from(dirs);
41
+ files = [...files];
42
+ dirs = [...dirs];
43
43
  /**
44
44
  * @param {string} path path to check
45
45
  * @returns {boolean} true, if path is ignored
46
46
  */
47
- const ignored = path =>
48
- this.paths.some(p =>
47
+ const ignored = (path) =>
48
+ this.paths.some((p) =>
49
49
  p instanceof RegExp ? p.test(path) : path.indexOf(p) === 0
50
50
  );
51
51
 
52
52
  const [ignoredFiles, notIgnoredFiles] = groupBy(
53
- /** @type {Array<string>} */
53
+ /** @type {string[]} */
54
54
  (files),
55
55
  ignored
56
56
  );
57
57
  const [ignoredDirs, notIgnoredDirs] = groupBy(
58
- /** @type {Array<string>} */
58
+ /** @type {string[]} */
59
59
  (dirs),
60
60
  ignored
61
61
  );
@@ -125,6 +125,8 @@ class IgnoringWatchFileSystem {
125
125
  }
126
126
  }
127
127
 
128
+ const PLUGIN_NAME = "WatchIgnorePlugin";
129
+
128
130
  class WatchIgnorePlugin {
129
131
  /**
130
132
  * @param {WatchIgnorePluginOptions} options options
@@ -140,7 +142,7 @@ class WatchIgnorePlugin {
140
142
  * @returns {void}
141
143
  */
142
144
  apply(compiler) {
143
- compiler.hooks.afterEnvironment.tap("WatchIgnorePlugin", () => {
145
+ compiler.hooks.afterEnvironment.tap(PLUGIN_NAME, () => {
144
146
  compiler.watchFileSystem = new IgnoringWatchFileSystem(
145
147
  /** @type {WatchFileSystem} */
146
148
  (compiler.watchFileSystem),
package/lib/Watching.js CHANGED
@@ -10,20 +10,20 @@ const Stats = require("./Stats");
10
10
  /** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
11
11
  /** @typedef {import("./Compilation")} Compilation */
12
12
  /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
13
+ /** @typedef {import("./Compiler").ErrorCallback} ErrorCallback */
14
14
  /** @typedef {import("./WebpackError")} WebpackError */
15
15
  /** @typedef {import("./logging/Logger").Logger} Logger */
16
16
  /** @typedef {import("./util/fs").TimeInfoEntries} TimeInfoEntries */
17
17
  /** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
18
- /** @typedef {import("./util/fs").Watcher} Watcher */
19
18
 
20
19
  /**
21
20
  * @template T
22
- * @callback Callback
23
- * @param {Error | null} err
24
- * @param {T=} result
21
+ * @template [R=void]
22
+ * @typedef {import("./webpack").Callback<T, R>} Callback
25
23
  */
26
24
 
25
+ /** @typedef {Set<string>} CollectedFiles */
26
+
27
27
  class Watching {
28
28
  /**
29
29
  * @param {Compiler} compiler the compiler
@@ -34,9 +34,9 @@ class Watching {
34
34
  this.startTime = null;
35
35
  this.invalid = false;
36
36
  this.handler = handler;
37
- /** @type {Callback<void>[]} */
37
+ /** @type {ErrorCallback[]} */
38
38
  this.callbacks = [];
39
- /** @type {Callback<void>[] | undefined} */
39
+ /** @type {ErrorCallback[] | undefined} */
40
40
  this._closeCallbacks = undefined;
41
41
  this.closed = false;
42
42
  this.suspended = false;
@@ -66,9 +66,9 @@ class Watching {
66
66
  this._needRecords = true;
67
67
  this.watcher = undefined;
68
68
  this.pausedWatcher = undefined;
69
- /** @type {Set<string> | undefined} */
69
+ /** @type {CollectedFiles | undefined} */
70
70
  this._collectedChangedFiles = undefined;
71
- /** @type {Set<string> | undefined} */
71
+ /** @type {CollectedFiles | undefined} */
72
72
  this._collectedRemovedFiles = undefined;
73
73
  this._done = this._done.bind(this);
74
74
  process.nextTick(() => {
@@ -88,12 +88,12 @@ class Watching {
88
88
  } else {
89
89
  for (const file of changedFiles) {
90
90
  this._collectedChangedFiles.add(file);
91
- /** @type {Set<string>} */
91
+ /** @type {CollectedFiles} */
92
92
  (this._collectedRemovedFiles).delete(file);
93
93
  }
94
94
  for (const file of /** @type {ReadonlySet<string>} */ (removedFiles)) {
95
95
  this._collectedChangedFiles.delete(file);
96
- /** @type {Set<string>} */
96
+ /** @type {CollectedFiles} */
97
97
  (this._collectedRemovedFiles).add(file);
98
98
  }
99
99
  }
@@ -159,14 +159,14 @@ class Watching {
159
159
 
160
160
  const run = () => {
161
161
  if (this.compiler.idle) {
162
- return this.compiler.cache.endIdle(err => {
162
+ return this.compiler.cache.endIdle((err) => {
163
163
  if (err) return this._done(err);
164
164
  this.compiler.idle = false;
165
165
  run();
166
166
  });
167
167
  }
168
168
  if (this._needRecords) {
169
- return this.compiler.readRecords(err => {
169
+ return this.compiler.readRecords((err) => {
170
170
  if (err) return this._done(err);
171
171
 
172
172
  this._needRecords = false;
@@ -175,7 +175,7 @@ class Watching {
175
175
  }
176
176
  this.invalid = false;
177
177
  this._invalidReported = false;
178
- this.compiler.hooks.watchRun.callAsync(this.compiler, err => {
178
+ this.compiler.hooks.watchRun.callAsync(this.compiler, (err) => {
179
179
  if (err) return this._done(err);
180
180
  /**
181
181
  * @param {Error | null} err error
@@ -187,8 +187,6 @@ class Watching {
187
187
 
188
188
  const compilation = /** @type {Compilation} */ (_compilation);
189
189
 
190
- if (this.invalid) return this._done(null, compilation);
191
-
192
190
  if (this.compiler.hooks.shouldEmit.call(compilation) === false) {
193
191
  return this._done(null, compilation);
194
192
  }
@@ -196,13 +194,13 @@ class Watching {
196
194
  process.nextTick(() => {
197
195
  const logger = compilation.getLogger("webpack.Compiler");
198
196
  logger.time("emitAssets");
199
- this.compiler.emitAssets(compilation, err => {
197
+ this.compiler.emitAssets(compilation, (err) => {
200
198
  logger.timeEnd("emitAssets");
201
199
  if (err) return this._done(err, compilation);
202
200
  if (this.invalid) return this._done(null, compilation);
203
201
 
204
202
  logger.time("emitRecords");
205
- this.compiler.emitRecords(err => {
203
+ this.compiler.emitRecords((err) => {
206
204
  logger.timeEnd("emitRecords");
207
205
  if (err) return this._done(err, compilation);
208
206
 
@@ -215,11 +213,11 @@ class Watching {
215
213
  compilation.endTime = Date.now();
216
214
  logger.time("done hook");
217
215
  const stats = new Stats(compilation);
218
- this.compiler.hooks.done.callAsync(stats, err => {
216
+ this.compiler.hooks.done.callAsync(stats, (err) => {
219
217
  logger.timeEnd("done hook");
220
218
  if (err) return this._done(err, compilation);
221
219
 
222
- this.compiler.hooks.additionalPass.callAsync(err => {
220
+ this.compiler.hooks.additionalPass.callAsync((err) => {
223
221
  if (err) return this._done(err, compilation);
224
222
  this.compiler.compile(onCompiled);
225
223
  });
@@ -264,7 +262,7 @@ class Watching {
264
262
 
265
263
  /**
266
264
  * @param {Error} err error
267
- * @param {Callback<void>[]=} cbs callbacks
265
+ * @param {ErrorCallback[]=} cbs callbacks
268
266
  */
269
267
  const handleError = (err, cbs) => {
270
268
  this.compiler.hooks.failed.call(err);
@@ -288,7 +286,7 @@ class Watching {
288
286
  logger.time("storeBuildDependencies");
289
287
  this.compiler.cache.storeBuildDependencies(
290
288
  compilation.buildDependencies,
291
- err => {
289
+ (err) => {
292
290
  logger.timeEnd("storeBuildDependencies");
293
291
  if (err) return handleError(err);
294
292
  this._go();
@@ -311,7 +309,7 @@ class Watching {
311
309
  const cbs = this.callbacks;
312
310
  this.callbacks = [];
313
311
  logger.time("done hook");
314
- this.compiler.hooks.done.callAsync(/** @type {Stats} */ (stats), err => {
312
+ this.compiler.hooks.done.callAsync(/** @type {Stats} */ (stats), (err) => {
315
313
  logger.timeEnd("done hook");
316
314
  if (err) return handleError(err, cbs);
317
315
  this.handler(null, stats);
@@ -319,7 +317,7 @@ class Watching {
319
317
  this.compiler.cache.storeBuildDependencies(
320
318
  /** @type {Compilation} */
321
319
  (compilation).buildDependencies,
322
- err => {
320
+ (err) => {
323
321
  logger.timeEnd("storeBuildDependencies");
324
322
  if (err) return handleError(err, cbs);
325
323
  logger.time("beginIdle");
@@ -395,7 +393,7 @@ class Watching {
395
393
  }
396
394
 
397
395
  /**
398
- * @param {Callback<void>=} callback signals when the build has completed again
396
+ * @param {ErrorCallback=} callback signals when the build has completed again
399
397
  * @returns {void}
400
398
  */
401
399
  invalidate(callback) {
@@ -453,7 +451,7 @@ class Watching {
453
451
  }
454
452
 
455
453
  /**
456
- * @param {Callback<void>} callback signals when the watcher is closed
454
+ * @param {ErrorCallback} callback signals when the watcher is closed
457
455
  * @returns {void}
458
456
  */
459
457
  close(callback) {
@@ -480,10 +478,10 @@ class Watching {
480
478
  /**
481
479
  * @param {WebpackError | null} err error if any
482
480
  */
483
- const shutdown = err => {
481
+ const shutdown = (err) => {
484
482
  this.compiler.hooks.watchClose.call();
485
483
  const closeCallbacks =
486
- /** @type {Callback<void>[]} */
484
+ /** @type {ErrorCallback[]} */
487
485
  (this._closeCallbacks);
488
486
  this._closeCallbacks = undefined;
489
487
  for (const cb of closeCallbacks) cb(err);
@@ -493,7 +491,7 @@ class Watching {
493
491
  logger.time("storeBuildDependencies");
494
492
  this.compiler.cache.storeBuildDependencies(
495
493
  compilation.buildDependencies,
496
- err2 => {
494
+ (err2) => {
497
495
  logger.timeEnd("storeBuildDependencies");
498
496
  shutdown(err || err2);
499
497
  }
@@ -18,9 +18,10 @@ class WebpackError extends Error {
18
18
  /**
19
19
  * Creates an instance of WebpackError.
20
20
  * @param {string=} message error message
21
+ * @param {{ cause?: unknown }} options error options
21
22
  */
22
- constructor(message) {
23
- super(message);
23
+ constructor(message, options = {}) {
24
+ super(message, options);
24
25
 
25
26
  /** @type {string=} */
26
27
  this.details = undefined;
@@ -37,7 +38,11 @@ class WebpackError extends Error {
37
38
  }
38
39
 
39
40
  [inspect]() {
40
- return this.stack + (this.details ? `\n${this.details}` : "");
41
+ return (
42
+ this.stack +
43
+ (this.details ? `\n${this.details}` : "") +
44
+ (this.cause ? `\n${this.cause}` : "")
45
+ );
41
46
  }
42
47
 
43
48
  /**
@@ -47,6 +52,7 @@ class WebpackError extends Error {
47
52
  write(this.name);
48
53
  write(this.message);
49
54
  write(this.stack);
55
+ write(this.cause);
50
56
  write(this.details);
51
57
  write(this.loc);
52
58
  write(this.hideStack);
@@ -59,6 +65,7 @@ class WebpackError extends Error {
59
65
  this.name = read();
60
66
  this.message = read();
61
67
  this.stack = read();
68
+ this.cause = read();
62
69
  this.details = read();
63
70
  this.loc = read();
64
71
  this.hideStack = read();
@@ -16,10 +16,8 @@ const {
16
16
  toConstantDependency
17
17
  } = require("./javascript/JavascriptParserHelpers");
18
18
 
19
- /** @typedef {import("enhanced-resolve").Resolver} Resolver */
20
19
  /** @typedef {import("./Compiler")} Compiler */
21
20
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
22
- /** @typedef {import("./Module")} Module */
23
21
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
24
22
  /** @typedef {import("./javascript/JavascriptParser").Range} Range */
25
23
 
@@ -47,16 +45,17 @@ class WebpackIsIncludedPlugin {
47
45
  * @param {JavascriptParser} parser the parser
48
46
  * @returns {void}
49
47
  */
50
- const handler = parser => {
48
+ const handler = (parser) => {
51
49
  parser.hooks.call
52
50
  .for("__webpack_is_included__")
53
- .tap(PLUGIN_NAME, expr => {
51
+ .tap(PLUGIN_NAME, (expr) => {
54
52
  if (
55
53
  expr.type !== "CallExpression" ||
56
54
  expr.arguments.length !== 1 ||
57
55
  expr.arguments[0].type === "SpreadElement"
58
- )
56
+ ) {
59
57
  return;
58
+ }
60
59
 
61
60
  const request = parser.evaluateExpression(expr.arguments[0]);
62
61