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
@@ -30,15 +30,18 @@ const LogType = Object.freeze({
30
30
  module.exports.LogType = LogType;
31
31
 
32
32
  /** @typedef {typeof LogType[keyof typeof LogType]} LogTypeEnum */
33
+ /** @typedef {Map<string | undefined, [number, number]>} TimersMap */
33
34
 
34
35
  const LOG_SYMBOL = Symbol("webpack logger raw log method");
35
36
  const TIMERS_SYMBOL = Symbol("webpack logger times");
36
37
  const TIMERS_AGGREGATES_SYMBOL = Symbol("webpack logger aggregated times");
37
38
 
39
+ /** @typedef {EXPECTED_ANY[]} Args */
40
+
38
41
  class WebpackLogger {
39
42
  /**
40
- * @param {function(LogTypeEnum, EXPECTED_ANY[]=): void} log log function
41
- * @param {function(string | function(): string): WebpackLogger} getChildLogger function to create child logger
43
+ * @param {(type: LogTypeEnum, args?: Args) => void} log log function
44
+ * @param {(name: string | (() => string)) => WebpackLogger} getChildLogger function to create child logger
42
45
  */
43
46
  constructor(log, getChildLogger) {
44
47
  this[LOG_SYMBOL] = log;
@@ -46,35 +49,35 @@ class WebpackLogger {
46
49
  }
47
50
 
48
51
  /**
49
- * @param {...EXPECTED_ANY} args args
52
+ * @param {Args} args args
50
53
  */
51
54
  error(...args) {
52
55
  this[LOG_SYMBOL](LogType.error, args);
53
56
  }
54
57
 
55
58
  /**
56
- * @param {...EXPECTED_ANY} args args
59
+ * @param {Args} args args
57
60
  */
58
61
  warn(...args) {
59
62
  this[LOG_SYMBOL](LogType.warn, args);
60
63
  }
61
64
 
62
65
  /**
63
- * @param {...EXPECTED_ANY} args args
66
+ * @param {Args} args args
64
67
  */
65
68
  info(...args) {
66
69
  this[LOG_SYMBOL](LogType.info, args);
67
70
  }
68
71
 
69
72
  /**
70
- * @param {...EXPECTED_ANY} args args
73
+ * @param {Args} args args
71
74
  */
72
75
  log(...args) {
73
76
  this[LOG_SYMBOL](LogType.log, args);
74
77
  }
75
78
 
76
79
  /**
77
- * @param {...EXPECTED_ANY} args args
80
+ * @param {Args} args args
78
81
  */
79
82
  debug(...args) {
80
83
  this[LOG_SYMBOL](LogType.debug, args);
@@ -82,7 +85,7 @@ class WebpackLogger {
82
85
 
83
86
  /**
84
87
  * @param {EXPECTED_ANY} assertion assertion
85
- * @param {...EXPECTED_ANY} args args
88
+ * @param {Args} args args
86
89
  */
87
90
  assert(assertion, ...args) {
88
91
  if (!assertion) {
@@ -99,21 +102,21 @@ class WebpackLogger {
99
102
  }
100
103
 
101
104
  /**
102
- * @param {...EXPECTED_ANY} args args
105
+ * @param {Args} args args
103
106
  */
104
107
  status(...args) {
105
108
  this[LOG_SYMBOL](LogType.status, args);
106
109
  }
107
110
 
108
111
  /**
109
- * @param {...EXPECTED_ANY} args args
112
+ * @param {Args} args args
110
113
  */
111
114
  group(...args) {
112
115
  this[LOG_SYMBOL](LogType.group, args);
113
116
  }
114
117
 
115
118
  /**
116
- * @param {...EXPECTED_ANY} args args
119
+ * @param {Args} args args
117
120
  */
118
121
  groupCollapsed(...args) {
119
122
  this[LOG_SYMBOL](LogType.groupCollapsed, args);
@@ -141,7 +144,7 @@ class WebpackLogger {
141
144
  * @param {string} label label
142
145
  */
143
146
  time(label) {
144
- /** @type {Map<string | undefined, [number, number]>} */
147
+ /** @type {TimersMap} */
145
148
  this[TIMERS_SYMBOL] = this[TIMERS_SYMBOL] || new Map();
146
149
  this[TIMERS_SYMBOL].set(label, process.hrtime());
147
150
  }
@@ -167,7 +170,7 @@ class WebpackLogger {
167
170
  throw new Error(`No such label '${label}' for WebpackLogger.timeEnd()`);
168
171
  }
169
172
  const time = process.hrtime(prev);
170
- /** @type {Map<string | undefined, [number, number]>} */
173
+ /** @type {TimersMap} */
171
174
  (this[TIMERS_SYMBOL]).delete(label);
172
175
  this[LOG_SYMBOL](LogType.time, [label, ...time]);
173
176
  }
@@ -183,9 +186,9 @@ class WebpackLogger {
183
186
  );
184
187
  }
185
188
  const time = process.hrtime(prev);
186
- /** @type {Map<string | undefined, [number, number]>} */
189
+ /** @type {TimersMap} */
187
190
  (this[TIMERS_SYMBOL]).delete(label);
188
- /** @type {Map<string | undefined, [number, number]>} */
191
+ /** @type {TimersMap} */
189
192
  this[TIMERS_AGGREGATES_SYMBOL] =
190
193
  this[TIMERS_AGGREGATES_SYMBOL] || new Map();
191
194
  const current = this[TIMERS_AGGREGATES_SYMBOL].get(label);
@@ -10,32 +10,33 @@ const { LogType } = require("./Logger");
10
10
  /** @typedef {import("../../declarations/WebpackOptions").FilterItemTypes} FilterItemTypes */
11
11
  /** @typedef {import("../../declarations/WebpackOptions").FilterTypes} FilterTypes */
12
12
  /** @typedef {import("./Logger").LogTypeEnum} LogTypeEnum */
13
+ /** @typedef {import("./Logger").Args} Args */
13
14
 
14
- /** @typedef {function(string): boolean} FilterFunction */
15
- /** @typedef {function(string, LogTypeEnum, EXPECTED_ANY[]=): void} LoggingFunction */
15
+ /** @typedef {(item: string) => boolean} FilterFunction */
16
+ /** @typedef {(value: string, type: LogTypeEnum, args?: Args) => void} LoggingFunction */
16
17
 
17
18
  /**
18
19
  * @typedef {object} LoggerConsole
19
- * @property {function(): void} clear
20
- * @property {function(): void} trace
21
- * @property {(...args: EXPECTED_ANY[]) => void} info
22
- * @property {(...args: EXPECTED_ANY[]) => void} log
23
- * @property {(...args: EXPECTED_ANY[]) => void} warn
24
- * @property {(...args: EXPECTED_ANY[]) => void} error
25
- * @property {(...args: EXPECTED_ANY[]) => void=} debug
26
- * @property {(...args: EXPECTED_ANY[]) => void=} group
27
- * @property {(...args: EXPECTED_ANY[]) => void=} groupCollapsed
28
- * @property {(...args: EXPECTED_ANY[]) => void=} groupEnd
29
- * @property {(...args: EXPECTED_ANY[]) => void=} status
30
- * @property {(...args: EXPECTED_ANY[]) => void=} profile
31
- * @property {(...args: EXPECTED_ANY[]) => void=} profileEnd
32
- * @property {(...args: EXPECTED_ANY[]) => void=} logTime
20
+ * @property {() => void} clear
21
+ * @property {() => void} trace
22
+ * @property {(...args: Args) => void} info
23
+ * @property {(...args: Args) => void} log
24
+ * @property {(...args: Args) => void} warn
25
+ * @property {(...args: Args) => void} error
26
+ * @property {(...args: Args) => void=} debug
27
+ * @property {(...args: Args) => void=} group
28
+ * @property {(...args: Args) => void=} groupCollapsed
29
+ * @property {(...args: Args) => void=} groupEnd
30
+ * @property {(...args: Args) => void=} status
31
+ * @property {(...args: Args) => void=} profile
32
+ * @property {(...args: Args) => void=} profileEnd
33
+ * @property {(...args: Args) => void=} logTime
33
34
  */
34
35
 
35
36
  /**
36
37
  * @typedef {object} LoggerOptions
37
- * @property {false|true|"none"|"error"|"warn"|"info"|"log"|"verbose"} level loglevel
38
- * @property {FilterTypes|boolean} debug filter for debug logging
38
+ * @property {false | true | "none" | "error" | "warn" | "info" | "log" | "verbose"} level loglevel
39
+ * @property {FilterTypes | boolean} debug filter for debug logging
39
40
  * @property {LoggerConsole} console the console to log to
40
41
  */
41
42
 
@@ -43,15 +44,15 @@ const { LogType } = require("./Logger");
43
44
  * @param {FilterItemTypes} item an input item
44
45
  * @returns {FilterFunction | undefined} filter function
45
46
  */
46
- const filterToFunction = item => {
47
+ const filterToFunction = (item) => {
47
48
  if (typeof item === "string") {
48
49
  const regExp = new RegExp(
49
50
  `[\\\\/]${item.replace(/[-[\]{}()*+?.\\^$|]/g, "\\$&")}([\\\\/]|$|!|\\?)`
50
51
  );
51
- return ident => regExp.test(ident);
52
+ return (ident) => regExp.test(ident);
52
53
  }
53
54
  if (item && typeof item === "object" && typeof item.test === "function") {
54
- return ident => item.test(ident);
55
+ return (ident) => item.test(ident);
55
56
  }
56
57
  if (typeof item === "function") {
57
58
  return item;
@@ -85,17 +86,16 @@ module.exports = ({ level = "info", debug = false, console }) => {
85
86
  (
86
87
  typeof debug === "boolean"
87
88
  ? [() => debug]
88
- : /** @type {FilterItemTypes[]} */ ([])
89
- .concat(debug)
90
- .map(filterToFunction)
89
+ : /** @type {FilterItemTypes[]} */ ([
90
+ ...(Array.isArray(debug) ? debug : [debug])
91
+ ]).map(filterToFunction)
91
92
  );
92
- /** @type {number} */
93
93
  const loglevel = LogLevel[`${level}`] || 0;
94
94
 
95
95
  /**
96
96
  * @param {string} name name of the logger
97
97
  * @param {LogTypeEnum} type type of the log entry
98
- * @param {EXPECTED_ANY[]=} args arguments of the log entry
98
+ * @param {Args=} args arguments of the log entry
99
99
  * @returns {void}
100
100
  */
101
101
  const logger = (name, type, args) => {
@@ -108,7 +108,7 @@ module.exports = ({ level = "info", debug = false, console }) => {
108
108
  }
109
109
  return [];
110
110
  };
111
- const debug = debugFilters.some(f => f(name));
111
+ const debug = debugFilters.some((f) => f(name));
112
112
  switch (type) {
113
113
  case LogType.debug:
114
114
  if (!debug) return;
@@ -17,29 +17,29 @@ const currentDefaultLoggerOptions = {
17
17
  };
18
18
  let currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions);
19
19
 
20
+ /**
21
+ * @param {createConsoleLogger.LoggerOptions} options new options, merge with old options
22
+ * @returns {void}
23
+ */
24
+ module.exports.configureDefaultLogger = (options) => {
25
+ Object.assign(currentDefaultLoggerOptions, options);
26
+ currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions);
27
+ };
28
+
20
29
  /**
21
30
  * @param {string} name name of the logger
22
31
  * @returns {Logger} a logger
23
32
  */
24
- module.exports.getLogger = name =>
33
+ module.exports.getLogger = (name) =>
25
34
  new Logger(
26
35
  (type, args) => {
27
36
  if (module.exports.hooks.log.call(name, type, args) === undefined) {
28
37
  currentDefaultLogger(name, type, args);
29
38
  }
30
39
  },
31
- childName => module.exports.getLogger(`${name}/${childName}`)
40
+ (childName) => module.exports.getLogger(`${name}/${childName}`)
32
41
  );
33
42
 
34
- /**
35
- * @param {createConsoleLogger.LoggerOptions} options new options, merge with old options
36
- * @returns {void}
37
- */
38
- module.exports.configureDefaultLogger = options => {
39
- Object.assign(currentDefaultLoggerOptions, options);
40
- currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions);
41
- };
42
-
43
43
  module.exports.hooks = {
44
44
  log: new SyncBailHook(["origin", "type", "args"])
45
45
  };
@@ -6,10 +6,10 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
- * @param {Array<number>} array array of numbers
9
+ * @param {number[]} array array of numbers
10
10
  * @returns {number} sum of all numbers in array
11
11
  */
12
- const arraySum = array => {
12
+ const arraySum = (array) => {
13
13
  let sum = 0;
14
14
  for (const item of array) sum += item;
15
15
  return sum;
@@ -21,7 +21,7 @@ const arraySum = array => {
21
21
  * @returns {string[]} truncated args
22
22
  */
23
23
  const truncateArgs = (args, maxLength) => {
24
- const lengths = args.map(a => `${a}`.length);
24
+ const lengths = args.map((a) => `${a}`.length);
25
25
  const availableLength = maxLength - lengths.length + 1;
26
26
 
27
27
  if (availableLength > 0 && args.length === 1) {
@@ -34,7 +34,7 @@ const truncateArgs = (args, maxLength) => {
34
34
  }
35
35
 
36
36
  // Check if there is space for at least 4 chars per arg
37
- if (availableLength < arraySum(lengths.map(i => Math.min(i, 6)))) {
37
+ if (availableLength < arraySum(lengths.map((i) => Math.min(i, 6)))) {
38
38
  // remove args
39
39
  if (args.length > 1) return truncateArgs(args.slice(0, -1), maxLength);
40
40
  return [];
@@ -48,7 +48,7 @@ const truncateArgs = (args, maxLength) => {
48
48
  // Try to remove chars from the longest items until it fits
49
49
  while (currentLength > availableLength) {
50
50
  const maxLength = Math.max(...lengths);
51
- const shorterItems = lengths.filter(l => l !== maxLength);
51
+ const shorterItems = lengths.filter((l) => l !== maxLength);
52
52
  const nextToMaxLength =
53
53
  shorterItems.length > 0 ? Math.max(...shorterItems) : 0;
54
54
  const maxReduce = maxLength - nextToMaxLength;
@@ -10,15 +10,18 @@ const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenc
10
10
 
11
11
  /** @typedef {import("../Chunk")} Chunk */
12
12
  /** @typedef {import("../Compiler")} Compiler */
13
+ /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
13
14
 
14
15
  /**
15
16
  * @typedef {object} CommonJsChunkLoadingPluginOptions
16
- * @property {boolean} [asyncChunkLoading] enable async chunk loading
17
+ * @property {boolean=} asyncChunkLoading enable async chunk loading
17
18
  */
18
19
 
20
+ const PLUGIN_NAME = "CommonJsChunkLoadingPlugin";
21
+
19
22
  class CommonJsChunkLoadingPlugin {
20
23
  /**
21
- * @param {CommonJsChunkLoadingPluginOptions} [options] options
24
+ * @param {CommonJsChunkLoadingPluginOptions=} options options
22
25
  */
23
26
  constructor(options = {}) {
24
27
  this._asyncChunkLoading = options.asyncChunkLoading;
@@ -40,81 +43,75 @@ class CommonJsChunkLoadingPlugin {
40
43
  chunkLoading: chunkLoadingValue,
41
44
  asyncChunkLoading: this._asyncChunkLoading
42
45
  }).apply(compiler);
43
- compiler.hooks.thisCompilation.tap(
44
- "CommonJsChunkLoadingPlugin",
45
- compilation => {
46
- const globalChunkLoading = compilation.outputOptions.chunkLoading;
47
- /**
48
- * @param {Chunk} chunk chunk
49
- * @returns {boolean} true, if wasm loading is enabled for the chunk
50
- */
51
- const isEnabledForChunk = chunk => {
52
- const options = chunk.getEntryOptions();
53
- const chunkLoading =
54
- options && options.chunkLoading !== undefined
55
- ? options.chunkLoading
56
- : globalChunkLoading;
57
- return chunkLoading === chunkLoadingValue;
58
- };
59
- const onceForChunkSet = new WeakSet();
60
- /**
61
- * @param {Chunk} chunk chunk
62
- * @param {Set<string>} set runtime requirements
63
- */
64
- const handler = (chunk, set) => {
65
- if (onceForChunkSet.has(chunk)) return;
66
- onceForChunkSet.add(chunk);
67
- if (!isEnabledForChunk(chunk)) return;
68
- set.add(RuntimeGlobals.moduleFactoriesAddOnly);
69
- set.add(RuntimeGlobals.hasOwnProperty);
70
- compilation.addRuntimeModule(
71
- chunk,
72
- new ChunkLoadingRuntimeModule(set)
73
- );
74
- };
46
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
47
+ const globalChunkLoading = compilation.outputOptions.chunkLoading;
48
+ /**
49
+ * @param {Chunk} chunk chunk
50
+ * @returns {boolean} true, if wasm loading is enabled for the chunk
51
+ */
52
+ const isEnabledForChunk = (chunk) => {
53
+ const options = chunk.getEntryOptions();
54
+ const chunkLoading =
55
+ options && options.chunkLoading !== undefined
56
+ ? options.chunkLoading
57
+ : globalChunkLoading;
58
+ return chunkLoading === chunkLoadingValue;
59
+ };
60
+ const onceForChunkSet = new WeakSet();
61
+ /**
62
+ * @param {Chunk} chunk chunk
63
+ * @param {RuntimeRequirements} set runtime requirements
64
+ */
65
+ const handler = (chunk, set) => {
66
+ if (onceForChunkSet.has(chunk)) return;
67
+ onceForChunkSet.add(chunk);
68
+ if (!isEnabledForChunk(chunk)) return;
69
+ set.add(RuntimeGlobals.moduleFactoriesAddOnly);
70
+ set.add(RuntimeGlobals.hasOwnProperty);
71
+ compilation.addRuntimeModule(chunk, new ChunkLoadingRuntimeModule(set));
72
+ };
75
73
 
76
- compilation.hooks.runtimeRequirementInTree
77
- .for(RuntimeGlobals.ensureChunkHandlers)
78
- .tap("CommonJsChunkLoadingPlugin", handler);
79
- compilation.hooks.runtimeRequirementInTree
80
- .for(RuntimeGlobals.hmrDownloadUpdateHandlers)
81
- .tap("CommonJsChunkLoadingPlugin", handler);
82
- compilation.hooks.runtimeRequirementInTree
83
- .for(RuntimeGlobals.hmrDownloadManifest)
84
- .tap("CommonJsChunkLoadingPlugin", handler);
85
- compilation.hooks.runtimeRequirementInTree
86
- .for(RuntimeGlobals.baseURI)
87
- .tap("CommonJsChunkLoadingPlugin", handler);
88
- compilation.hooks.runtimeRequirementInTree
89
- .for(RuntimeGlobals.externalInstallChunk)
90
- .tap("CommonJsChunkLoadingPlugin", handler);
91
- compilation.hooks.runtimeRequirementInTree
92
- .for(RuntimeGlobals.onChunksLoaded)
93
- .tap("CommonJsChunkLoadingPlugin", handler);
74
+ compilation.hooks.runtimeRequirementInTree
75
+ .for(RuntimeGlobals.ensureChunkHandlers)
76
+ .tap(PLUGIN_NAME, handler);
77
+ compilation.hooks.runtimeRequirementInTree
78
+ .for(RuntimeGlobals.hmrDownloadUpdateHandlers)
79
+ .tap(PLUGIN_NAME, handler);
80
+ compilation.hooks.runtimeRequirementInTree
81
+ .for(RuntimeGlobals.hmrDownloadManifest)
82
+ .tap(PLUGIN_NAME, handler);
83
+ compilation.hooks.runtimeRequirementInTree
84
+ .for(RuntimeGlobals.baseURI)
85
+ .tap(PLUGIN_NAME, handler);
86
+ compilation.hooks.runtimeRequirementInTree
87
+ .for(RuntimeGlobals.externalInstallChunk)
88
+ .tap(PLUGIN_NAME, handler);
89
+ compilation.hooks.runtimeRequirementInTree
90
+ .for(RuntimeGlobals.onChunksLoaded)
91
+ .tap(PLUGIN_NAME, handler);
94
92
 
95
- compilation.hooks.runtimeRequirementInTree
96
- .for(RuntimeGlobals.ensureChunkHandlers)
97
- .tap("CommonJsChunkLoadingPlugin", (chunk, set) => {
98
- if (!isEnabledForChunk(chunk)) return;
99
- set.add(RuntimeGlobals.getChunkScriptFilename);
100
- });
101
- compilation.hooks.runtimeRequirementInTree
102
- .for(RuntimeGlobals.hmrDownloadUpdateHandlers)
103
- .tap("CommonJsChunkLoadingPlugin", (chunk, set) => {
104
- if (!isEnabledForChunk(chunk)) return;
105
- set.add(RuntimeGlobals.getChunkUpdateScriptFilename);
106
- set.add(RuntimeGlobals.moduleCache);
107
- set.add(RuntimeGlobals.hmrModuleData);
108
- set.add(RuntimeGlobals.moduleFactoriesAddOnly);
109
- });
110
- compilation.hooks.runtimeRequirementInTree
111
- .for(RuntimeGlobals.hmrDownloadManifest)
112
- .tap("CommonJsChunkLoadingPlugin", (chunk, set) => {
113
- if (!isEnabledForChunk(chunk)) return;
114
- set.add(RuntimeGlobals.getUpdateManifestFilename);
115
- });
116
- }
117
- );
93
+ compilation.hooks.runtimeRequirementInTree
94
+ .for(RuntimeGlobals.ensureChunkHandlers)
95
+ .tap(PLUGIN_NAME, (chunk, set) => {
96
+ if (!isEnabledForChunk(chunk)) return;
97
+ set.add(RuntimeGlobals.getChunkScriptFilename);
98
+ });
99
+ compilation.hooks.runtimeRequirementInTree
100
+ .for(RuntimeGlobals.hmrDownloadUpdateHandlers)
101
+ .tap(PLUGIN_NAME, (chunk, set) => {
102
+ if (!isEnabledForChunk(chunk)) return;
103
+ set.add(RuntimeGlobals.getChunkUpdateScriptFilename);
104
+ set.add(RuntimeGlobals.moduleCache);
105
+ set.add(RuntimeGlobals.hmrModuleData);
106
+ set.add(RuntimeGlobals.moduleFactoriesAddOnly);
107
+ });
108
+ compilation.hooks.runtimeRequirementInTree
109
+ .for(RuntimeGlobals.hmrDownloadManifest)
110
+ .tap(PLUGIN_NAME, (chunk, set) => {
111
+ if (!isEnabledForChunk(chunk)) return;
112
+ set.add(RuntimeGlobals.getUpdateManifestFilename);
113
+ });
114
+ });
118
115
  }
119
116
  }
120
117
 
@@ -15,10 +15,16 @@ const nodeConsole = require("./nodeConsole");
15
15
  /** @typedef {import("../Compiler")} Compiler */
16
16
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
17
17
 
18
+ /**
19
+ * @typedef {object} NodeEnvironmentPluginOptions
20
+ * @property {InfrastructureLogging} infrastructureLogging infrastructure logging options
21
+ */
22
+
23
+ const PLUGIN_NAME = "NodeEnvironmentPlugin";
24
+
18
25
  class NodeEnvironmentPlugin {
19
26
  /**
20
- * @param {object} options options
21
- * @param {InfrastructureLogging} options.infrastructureLogging infrastructure logging options
27
+ * @param {NodeEnvironmentPluginOptions} options options
22
28
  */
23
29
  constructor(options) {
24
30
  this.options = options;
@@ -51,7 +57,7 @@ class NodeEnvironmentPlugin {
51
57
  compiler.outputFileSystem = fs;
52
58
  compiler.intermediateFileSystem = fs;
53
59
  compiler.watchFileSystem = new NodeWatchFileSystem(inputFileSystem);
54
- compiler.hooks.beforeRun.tap("NodeEnvironmentPlugin", compiler => {
60
+ compiler.hooks.beforeRun.tap(PLUGIN_NAME, (compiler) => {
55
61
  if (
56
62
  compiler.inputFileSystem === inputFileSystem &&
57
63
  inputFileSystem.purge
@@ -7,6 +7,7 @@
7
7
 
8
8
  const ExternalsPlugin = require("../ExternalsPlugin");
9
9
 
10
+ /** @typedef {import("../../declarations/WebpackOptions").ExternalsType} ExternalsType */
10
11
  /** @typedef {import("../Compiler")} Compiler */
11
12
 
12
13
  const builtins = [
@@ -72,13 +73,20 @@ const builtins = [
72
73
  ];
73
74
 
74
75
  class NodeTargetPlugin {
76
+ /**
77
+ * @param {ExternalsType} type default external type
78
+ */
79
+ constructor(type = "node-commonjs") {
80
+ this.type = type;
81
+ }
82
+
75
83
  /**
76
84
  * Apply the plugin
77
85
  * @param {Compiler} compiler the compiler instance
78
86
  * @returns {void}
79
87
  */
80
88
  apply(compiler) {
81
- new ExternalsPlugin("node-commonjs", builtins).apply(compiler);
89
+ new ExternalsPlugin(this.type, builtins).apply(compiler);
82
90
  }
83
91
  }
84
92
 
@@ -12,12 +12,12 @@ const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin
12
12
 
13
13
  /**
14
14
  * @typedef {object} NodeTemplatePluginOptions
15
- * @property {boolean} [asyncChunkLoading] enable async chunk loading
15
+ * @property {boolean=} asyncChunkLoading enable async chunk loading
16
16
  */
17
17
 
18
18
  class NodeTemplatePlugin {
19
19
  /**
20
- * @param {NodeTemplatePluginOptions} [options] options object
20
+ * @param {NodeTemplatePluginOptions=} options options object
21
21
  */
22
22
  constructor(options = {}) {
23
23
  this._options = options;
@@ -8,10 +8,10 @@
8
8
  const util = require("util");
9
9
  const Watchpack = require("watchpack");
10
10
 
11
- /** @typedef {import("../../declarations/WebpackOptions").WatchOptions} WatchOptions */
12
- /** @typedef {import("../FileSystemInfo").FileSystemInfoEntry} FileSystemInfoEntry */
13
11
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
14
12
  /** @typedef {import("../util/fs").WatchMethod} WatchMethod */
13
+ /** @typedef {import("../util/fs").Changes} Changes */
14
+ /** @typedef {import("../util/fs").Removals} Removals */
15
15
 
16
16
  class NodeWatchFileSystem {
17
17
  /**
@@ -78,8 +78,8 @@ class NodeWatchFileSystem {
78
78
  this.watcher.once(
79
79
  "aggregated",
80
80
  /**
81
- * @param {Set<string>} changes changes
82
- * @param {Set<string>} removals removals
81
+ * @param {Changes} changes changes
82
+ * @param {Removals} removals removals
83
83
  */
84
84
  (changes, removals) => {
85
85
  // pause emitting events (avoids clearing aggregated changes and removals on timeout)