webpack 5.59.0 → 5.94.0

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 (570) hide show
  1. package/README.md +48 -38
  2. package/bin/webpack.js +34 -10
  3. package/hot/dev-server.js +19 -5
  4. package/hot/lazy-compilation-node.js +13 -1
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +23 -4
  8. package/hot/only-dev-server.js +3 -2
  9. package/hot/poll.js +5 -2
  10. package/hot/signal.js +6 -2
  11. package/lib/APIPlugin.js +226 -122
  12. package/lib/AbstractMethodError.js +10 -5
  13. package/lib/AsyncDependenciesBlock.js +13 -5
  14. package/lib/AutomaticPrefetchPlugin.js +2 -1
  15. package/lib/BannerPlugin.js +33 -12
  16. package/lib/Cache.js +16 -12
  17. package/lib/CacheFacade.js +13 -16
  18. package/lib/CaseSensitiveModulesWarning.js +8 -8
  19. package/lib/Chunk.js +60 -33
  20. package/lib/ChunkGraph.js +207 -72
  21. package/lib/ChunkGroup.js +40 -20
  22. package/lib/ChunkTemplate.js +43 -0
  23. package/lib/CleanPlugin.js +117 -32
  24. package/lib/CodeGenerationResults.js +8 -7
  25. package/lib/CommentCompilationWarning.js +0 -1
  26. package/lib/CompatibilityPlugin.js +85 -46
  27. package/lib/Compilation.js +712 -392
  28. package/lib/Compiler.js +393 -172
  29. package/lib/ConcatenationScope.js +10 -13
  30. package/lib/ConditionalInitFragment.js +22 -14
  31. package/lib/ConstPlugin.js +104 -64
  32. package/lib/ContextExclusionPlugin.js +3 -3
  33. package/lib/ContextModule.js +283 -108
  34. package/lib/ContextModuleFactory.js +151 -63
  35. package/lib/ContextReplacementPlugin.js +25 -10
  36. package/lib/CssModule.js +166 -0
  37. package/lib/DefinePlugin.js +254 -148
  38. package/lib/DelegatedModule.js +29 -6
  39. package/lib/DelegatedModuleFactoryPlugin.js +42 -22
  40. package/lib/DelegatedPlugin.js +4 -0
  41. package/lib/DependenciesBlock.js +17 -2
  42. package/lib/Dependency.js +58 -29
  43. package/lib/DependencyTemplate.js +24 -3
  44. package/lib/DependencyTemplates.js +2 -2
  45. package/lib/DllEntryPlugin.js +18 -1
  46. package/lib/DllModule.js +21 -4
  47. package/lib/DllModuleFactory.js +2 -1
  48. package/lib/DllPlugin.js +9 -7
  49. package/lib/DllReferencePlugin.js +50 -19
  50. package/lib/EntryOptionPlugin.js +6 -1
  51. package/lib/EntryPlugin.js +7 -4
  52. package/lib/Entrypoint.js +2 -2
  53. package/lib/EnvironmentNotSupportAsyncWarning.js +52 -0
  54. package/lib/EnvironmentPlugin.js +5 -2
  55. package/lib/ErrorHelpers.js +65 -26
  56. package/lib/EvalDevToolModulePlugin.js +37 -13
  57. package/lib/EvalSourceMapDevToolPlugin.js +50 -20
  58. package/lib/ExportsInfo.js +234 -133
  59. package/lib/ExportsInfoApiPlugin.js +31 -15
  60. package/lib/ExternalModule.js +391 -129
  61. package/lib/ExternalModuleFactoryPlugin.js +65 -17
  62. package/lib/FileSystemInfo.js +1038 -523
  63. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  64. package/lib/FlagDependencyExportsPlugin.js +352 -349
  65. package/lib/FlagDependencyUsagePlugin.js +10 -10
  66. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  67. package/lib/Generator.js +16 -8
  68. package/lib/GraphHelpers.js +3 -2
  69. package/lib/HookWebpackError.js +11 -13
  70. package/lib/HotModuleReplacementPlugin.js +221 -128
  71. package/lib/IgnoreErrorModuleFactory.js +4 -4
  72. package/lib/IgnorePlugin.js +5 -4
  73. package/lib/IgnoreWarningsPlugin.js +6 -9
  74. package/lib/InitFragment.js +39 -15
  75. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  76. package/lib/LibManifestPlugin.js +45 -16
  77. package/lib/LoaderOptionsPlugin.js +13 -3
  78. package/lib/MainTemplate.js +74 -21
  79. package/lib/Module.js +155 -34
  80. package/lib/ModuleBuildError.js +13 -11
  81. package/lib/ModuleDependencyError.js +6 -4
  82. package/lib/ModuleDependencyWarning.js +6 -4
  83. package/lib/ModuleError.js +10 -5
  84. package/lib/ModuleFactory.js +4 -4
  85. package/lib/ModuleFilenameHelpers.js +164 -54
  86. package/lib/ModuleGraph.js +93 -53
  87. package/lib/ModuleGraphConnection.js +27 -13
  88. package/lib/ModuleHashingError.js +29 -0
  89. package/lib/ModuleInfoHeaderPlugin.js +92 -33
  90. package/lib/ModuleNotFoundError.js +5 -2
  91. package/lib/ModuleParseError.js +17 -9
  92. package/lib/ModuleProfile.js +1 -0
  93. package/lib/ModuleRestoreError.js +3 -1
  94. package/lib/ModuleStoreError.js +3 -2
  95. package/lib/ModuleTemplate.js +33 -1
  96. package/lib/ModuleTypeConstants.js +168 -0
  97. package/lib/ModuleWarning.js +10 -5
  98. package/lib/MultiCompiler.js +115 -38
  99. package/lib/MultiStats.js +75 -33
  100. package/lib/MultiWatching.js +6 -2
  101. package/lib/NodeStuffPlugin.js +136 -37
  102. package/lib/NormalModule.js +437 -194
  103. package/lib/NormalModuleFactory.js +313 -116
  104. package/lib/NormalModuleReplacementPlugin.js +10 -4
  105. package/lib/NullFactory.js +1 -1
  106. package/lib/OptimizationStages.js +3 -3
  107. package/lib/Parser.js +1 -1
  108. package/lib/PlatformPlugin.js +39 -0
  109. package/lib/PrefetchPlugin.js +4 -0
  110. package/lib/ProgressPlugin.js +83 -28
  111. package/lib/ProvidePlugin.js +37 -19
  112. package/lib/RawModule.js +18 -5
  113. package/lib/RecordIdsPlugin.js +8 -8
  114. package/lib/RequireJsStuffPlugin.js +22 -15
  115. package/lib/ResolverFactory.js +8 -4
  116. package/lib/RuntimeGlobals.js +99 -65
  117. package/lib/RuntimeModule.js +17 -15
  118. package/lib/RuntimePlugin.js +116 -13
  119. package/lib/RuntimeTemplate.js +304 -102
  120. package/lib/SelfModuleFactory.js +12 -0
  121. package/lib/SizeFormatHelpers.js +2 -4
  122. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  123. package/lib/SourceMapDevToolPlugin.js +89 -42
  124. package/lib/Stats.js +12 -7
  125. package/lib/Template.js +30 -33
  126. package/lib/TemplatedPathPlugin.js +102 -34
  127. package/lib/UseStrictPlugin.js +37 -12
  128. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  129. package/lib/WarnDeprecatedOptionPlugin.js +6 -0
  130. package/lib/WatchIgnorePlugin.js +46 -13
  131. package/lib/Watching.js +139 -76
  132. package/lib/WebpackError.js +14 -5
  133. package/lib/WebpackIsIncludedPlugin.js +22 -13
  134. package/lib/WebpackOptionsApply.js +162 -56
  135. package/lib/WebpackOptionsDefaulter.js +10 -3
  136. package/lib/asset/AssetGenerator.js +351 -99
  137. package/lib/asset/AssetModulesPlugin.js +57 -33
  138. package/lib/asset/AssetParser.js +15 -6
  139. package/lib/asset/AssetSourceGenerator.js +30 -10
  140. package/lib/asset/AssetSourceParser.js +8 -2
  141. package/lib/asset/RawDataUrlModule.js +162 -0
  142. package/lib/async-modules/AwaitDependenciesInitFragment.js +16 -13
  143. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  144. package/lib/buildChunkGraph.js +376 -420
  145. package/lib/cache/AddManagedPathsPlugin.js +6 -1
  146. package/lib/cache/IdleFileCachePlugin.js +26 -13
  147. package/lib/cache/MemoryCachePlugin.js +1 -1
  148. package/lib/cache/MemoryWithGcCachePlugin.js +13 -7
  149. package/lib/cache/PackFileCacheStrategy.js +172 -94
  150. package/lib/cache/ResolverCachePlugin.js +115 -43
  151. package/lib/cache/getLazyHashedEtag.js +2 -2
  152. package/lib/cache/mergeEtags.js +16 -21
  153. package/lib/cli.js +195 -110
  154. package/lib/config/browserslistTargetHandler.js +106 -41
  155. package/lib/config/defaults.js +572 -154
  156. package/lib/config/normalization.js +361 -322
  157. package/lib/config/target.js +105 -66
  158. package/lib/container/ContainerEntryDependency.js +2 -1
  159. package/lib/container/ContainerEntryModule.js +27 -11
  160. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  161. package/lib/container/ContainerExposedDependency.js +9 -0
  162. package/lib/container/ContainerPlugin.js +18 -12
  163. package/lib/container/ContainerReferencePlugin.js +1 -1
  164. package/lib/container/FallbackDependency.js +13 -0
  165. package/lib/container/FallbackItemDependency.js +3 -0
  166. package/lib/container/FallbackModule.js +19 -8
  167. package/lib/container/FallbackModuleFactory.js +1 -1
  168. package/lib/container/ModuleFederationPlugin.js +2 -0
  169. package/lib/container/RemoteModule.js +17 -4
  170. package/lib/container/RemoteRuntimeModule.js +31 -17
  171. package/lib/container/RemoteToExternalDependency.js +3 -0
  172. package/lib/container/options.js +18 -4
  173. package/lib/css/CssExportsGenerator.js +203 -0
  174. package/lib/css/CssGenerator.js +151 -0
  175. package/lib/css/CssLoadingRuntimeModule.js +592 -0
  176. package/lib/css/CssModulesPlugin.js +888 -0
  177. package/lib/css/CssParser.js +1049 -0
  178. package/lib/css/walkCssTokens.js +775 -0
  179. package/lib/debug/ProfilingPlugin.js +102 -54
  180. package/lib/dependencies/AMDDefineDependency.js +54 -10
  181. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +204 -61
  182. package/lib/dependencies/AMDPlugin.js +44 -24
  183. package/lib/dependencies/AMDRequireArrayDependency.js +34 -10
  184. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  185. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  186. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +185 -54
  187. package/lib/dependencies/AMDRequireDependency.js +21 -6
  188. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  189. package/lib/dependencies/AMDRuntimeModules.js +4 -4
  190. package/lib/dependencies/CachedConstDependency.js +22 -1
  191. package/lib/dependencies/CommonJsDependencyHelpers.js +16 -2
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +77 -47
  193. package/lib/dependencies/CommonJsExportsDependency.js +28 -5
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +111 -39
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +42 -8
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +530 -130
  197. package/lib/dependencies/CommonJsPlugin.js +51 -26
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +23 -2
  199. package/lib/dependencies/CommonJsRequireDependency.js +9 -1
  200. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -8
  201. package/lib/dependencies/ConstDependency.js +12 -3
  202. package/lib/dependencies/ContextDependency.js +32 -5
  203. package/lib/dependencies/ContextDependencyHelpers.js +92 -62
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -1
  205. package/lib/dependencies/ContextElementDependency.js +41 -4
  206. package/lib/dependencies/CreateScriptUrlDependency.js +22 -1
  207. package/lib/dependencies/CriticalDependencyWarning.js +4 -1
  208. package/lib/dependencies/CssExportDependency.js +156 -0
  209. package/lib/dependencies/CssImportDependency.js +125 -0
  210. package/lib/dependencies/CssLocalIdentifierDependency.js +245 -0
  211. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +111 -0
  212. package/lib/dependencies/CssUrlDependency.js +164 -0
  213. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  214. package/lib/dependencies/DllEntryDependency.js +14 -0
  215. package/lib/dependencies/DynamicExports.js +15 -11
  216. package/lib/dependencies/ExportsInfoDependency.js +26 -5
  217. package/lib/dependencies/ExternalModuleDependency.js +109 -0
  218. package/lib/dependencies/ExternalModuleInitFragment.js +133 -0
  219. package/lib/dependencies/HarmonyAcceptDependency.js +11 -2
  220. package/lib/dependencies/HarmonyAcceptImportDependency.js +9 -4
  221. package/lib/dependencies/HarmonyCompatibilityDependency.js +6 -5
  222. package/lib/dependencies/HarmonyDetectionParserPlugin.js +29 -3
  223. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +152 -0
  224. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +96 -51
  225. package/lib/dependencies/HarmonyExportExpressionDependency.js +21 -4
  226. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  227. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +216 -108
  228. package/lib/dependencies/HarmonyExportInitFragment.js +21 -9
  229. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  230. package/lib/dependencies/HarmonyExports.js +13 -7
  231. package/lib/dependencies/HarmonyImportDependency.js +65 -19
  232. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +268 -74
  233. package/lib/dependencies/HarmonyImportSideEffectDependency.js +11 -5
  234. package/lib/dependencies/HarmonyImportSpecifierDependency.js +180 -36
  235. package/lib/dependencies/HarmonyModulesPlugin.js +33 -5
  236. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  237. package/lib/dependencies/ImportContextDependency.js +15 -2
  238. package/lib/dependencies/ImportDependency.js +50 -12
  239. package/lib/dependencies/ImportEagerDependency.js +11 -6
  240. package/lib/dependencies/ImportMetaContextDependency.js +42 -0
  241. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +301 -0
  242. package/lib/dependencies/ImportMetaContextPlugin.js +72 -0
  243. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  244. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  245. package/lib/dependencies/ImportMetaPlugin.js +128 -59
  246. package/lib/dependencies/ImportParserPlugin.js +153 -83
  247. package/lib/dependencies/ImportPlugin.js +21 -7
  248. package/lib/dependencies/ImportWeakDependency.js +11 -6
  249. package/lib/dependencies/JsonExportsDependency.js +38 -30
  250. package/lib/dependencies/LoaderDependency.js +14 -0
  251. package/lib/dependencies/LoaderImportDependency.js +14 -0
  252. package/lib/dependencies/LoaderPlugin.js +54 -40
  253. package/lib/dependencies/LocalModule.js +17 -1
  254. package/lib/dependencies/LocalModuleDependency.js +15 -0
  255. package/lib/dependencies/LocalModulesHelpers.js +22 -4
  256. package/lib/dependencies/ModuleDecoratorDependency.js +9 -1
  257. package/lib/dependencies/ModuleDependency.js +24 -7
  258. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  259. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  260. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  261. package/lib/dependencies/PrefetchDependency.js +3 -0
  262. package/lib/dependencies/ProvidedDependency.js +43 -8
  263. package/lib/dependencies/PureExpressionDependency.js +73 -39
  264. package/lib/dependencies/RequireContextDependency.js +6 -16
  265. package/lib/dependencies/RequireContextDependencyParserPlugin.js +14 -6
  266. package/lib/dependencies/RequireContextPlugin.js +20 -7
  267. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  268. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +29 -12
  269. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  270. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  271. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  272. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  273. package/lib/dependencies/RequireIncludeDependency.js +6 -1
  274. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  275. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  276. package/lib/dependencies/RequireResolveContextDependency.js +19 -2
  277. package/lib/dependencies/RequireResolveDependency.js +8 -1
  278. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  279. package/lib/dependencies/RuntimeRequirementsDependency.js +9 -1
  280. package/lib/dependencies/StaticExportsDependency.js +8 -0
  281. package/lib/dependencies/SystemPlugin.js +49 -22
  282. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  283. package/lib/dependencies/URLDependency.js +20 -13
  284. package/lib/dependencies/URLPlugin.js +115 -27
  285. package/lib/dependencies/UnsupportedDependency.js +13 -0
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  287. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -1
  289. package/lib/dependencies/WorkerDependency.js +47 -3
  290. package/lib/dependencies/WorkerPlugin.js +143 -59
  291. package/lib/dependencies/getFunctionExpression.js +9 -0
  292. package/lib/dependencies/processExportInfo.js +3 -1
  293. package/lib/electron/ElectronTargetPlugin.js +1 -0
  294. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  295. package/lib/esm/ModuleChunkFormatPlugin.js +92 -55
  296. package/lib/esm/ModuleChunkLoadingPlugin.js +12 -1
  297. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +141 -25
  298. package/lib/formatLocation.js +1 -2
  299. package/lib/hmr/HotModuleReplacement.runtime.js +37 -25
  300. package/lib/hmr/HotModuleReplacementRuntimeModule.js +2 -1
  301. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +13 -15
  302. package/lib/hmr/LazyCompilationPlugin.js +94 -41
  303. package/lib/hmr/lazyCompilationBackend.js +107 -44
  304. package/lib/ids/ChunkModuleIdRangePlugin.js +12 -3
  305. package/lib/ids/DeterministicChunkIdsPlugin.js +13 -6
  306. package/lib/ids/DeterministicModuleIdsPlugin.js +59 -35
  307. package/lib/ids/HashedModuleIdsPlugin.js +24 -16
  308. package/lib/ids/IdHelpers.js +59 -49
  309. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  310. package/lib/ids/NamedModuleIdsPlugin.js +20 -12
  311. package/lib/ids/NaturalModuleIdsPlugin.js +10 -13
  312. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  313. package/lib/ids/OccurrenceModuleIdsPlugin.js +14 -11
  314. package/lib/ids/SyncModuleIdsPlugin.js +146 -0
  315. package/lib/index.js +44 -5
  316. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +9 -7
  317. package/lib/javascript/BasicEvaluatedExpression.js +133 -19
  318. package/lib/javascript/ChunkHelpers.js +33 -0
  319. package/lib/javascript/CommonJsChunkFormatPlugin.js +18 -15
  320. package/lib/javascript/EnableChunkLoadingPlugin.js +11 -6
  321. package/lib/javascript/JavascriptGenerator.js +37 -6
  322. package/lib/javascript/JavascriptModulesPlugin.js +523 -295
  323. package/lib/javascript/JavascriptParser.js +1591 -574
  324. package/lib/javascript/JavascriptParserHelpers.js +58 -37
  325. package/lib/javascript/StartupHelpers.js +69 -47
  326. package/lib/json/JsonData.js +33 -0
  327. package/lib/json/JsonGenerator.js +29 -21
  328. package/lib/json/JsonModulesPlugin.js +13 -7
  329. package/lib/json/JsonParser.js +30 -16
  330. package/lib/library/AbstractLibraryPlugin.js +6 -2
  331. package/lib/library/AmdLibraryPlugin.js +34 -18
  332. package/lib/library/AssignLibraryPlugin.js +68 -32
  333. package/lib/library/EnableLibraryPlugin.js +39 -14
  334. package/lib/library/ExportPropertyLibraryPlugin.js +14 -5
  335. package/lib/library/JsonpLibraryPlugin.js +4 -3
  336. package/lib/library/ModernModuleLibraryPlugin.js +144 -0
  337. package/lib/library/ModuleLibraryPlugin.js +12 -7
  338. package/lib/library/SystemLibraryPlugin.js +6 -4
  339. package/lib/library/UmdLibraryPlugin.js +119 -100
  340. package/lib/logging/Logger.js +59 -6
  341. package/lib/logging/createConsoleLogger.js +25 -40
  342. package/lib/logging/runtime.js +8 -9
  343. package/lib/logging/truncateArgs.js +9 -8
  344. package/lib/node/CommonJsChunkLoadingPlugin.js +18 -2
  345. package/lib/node/NodeEnvironmentPlugin.js +14 -8
  346. package/lib/node/NodeTargetPlugin.js +7 -0
  347. package/lib/node/NodeTemplatePlugin.js +10 -2
  348. package/lib/node/NodeWatchFileSystem.js +100 -50
  349. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +51 -26
  350. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -2
  351. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  352. package/lib/node/RequireChunkLoadingRuntimeModule.js +49 -26
  353. package/lib/node/nodeConsole.js +48 -31
  354. package/lib/optimize/AggressiveMergingPlugin.js +10 -4
  355. package/lib/optimize/AggressiveSplittingPlugin.js +26 -21
  356. package/lib/optimize/ConcatenatedModule.js +353 -212
  357. package/lib/optimize/EnsureChunkConditionsPlugin.js +4 -1
  358. package/lib/optimize/FlagIncludedChunksPlugin.js +14 -8
  359. package/lib/optimize/InnerGraph.js +30 -25
  360. package/lib/optimize/InnerGraphPlugin.js +105 -64
  361. package/lib/optimize/LimitChunkCountPlugin.js +32 -9
  362. package/lib/optimize/MangleExportsPlugin.js +7 -2
  363. package/lib/optimize/MinMaxSizeWarning.js +6 -1
  364. package/lib/optimize/ModuleConcatenationPlugin.js +150 -83
  365. package/lib/optimize/RealContentHashPlugin.js +99 -43
  366. package/lib/optimize/RemoveParentModulesPlugin.js +131 -48
  367. package/lib/optimize/RuntimeChunkPlugin.js +15 -2
  368. package/lib/optimize/SideEffectsFlagPlugin.js +119 -63
  369. package/lib/optimize/SplitChunksPlugin.js +129 -78
  370. package/lib/performance/SizeLimitsPlugin.js +22 -8
  371. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  372. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +4 -1
  373. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +8 -5
  374. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -3
  375. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +5 -3
  376. package/lib/rules/BasicEffectRulePlugin.js +7 -1
  377. package/lib/rules/BasicMatcherRulePlugin.js +8 -1
  378. package/lib/rules/ObjectMatcherRulePlugin.js +19 -2
  379. package/lib/rules/RuleSetCompiler.js +53 -32
  380. package/lib/rules/UseEffectRulePlugin.js +42 -36
  381. package/lib/runtime/AsyncModuleRuntimeModule.js +56 -69
  382. package/lib/runtime/AutoPublicPathRuntimeModule.js +25 -9
  383. package/lib/runtime/BaseUriRuntimeModule.js +35 -0
  384. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  385. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  386. package/lib/runtime/CompatRuntimeModule.js +7 -2
  387. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  388. package/lib/runtime/CreateScriptRuntimeModule.js +38 -0
  389. package/lib/runtime/CreateScriptUrlRuntimeModule.js +13 -36
  390. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -3
  391. package/lib/runtime/EnsureChunkRuntimeModule.js +29 -15
  392. package/lib/runtime/GetChunkFilenameRuntimeModule.js +56 -43
  393. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  394. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  395. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +98 -0
  396. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  397. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  398. package/lib/runtime/LoadScriptRuntimeModule.js +61 -45
  399. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  400. package/lib/runtime/NonceRuntimeModule.js +24 -0
  401. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  402. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  403. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  404. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  405. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  406. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +36 -28
  407. package/lib/runtime/StartupEntrypointRuntimeModule.js +13 -9
  408. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  409. package/lib/schemes/DataUriPlugin.js +16 -3
  410. package/lib/schemes/HttpUriPlugin.js +336 -120
  411. package/lib/serialization/ArraySerializer.js +22 -6
  412. package/lib/serialization/BinaryMiddleware.js +212 -33
  413. package/lib/serialization/DateObjectSerializer.js +16 -4
  414. package/lib/serialization/ErrorObjectSerializer.js +23 -6
  415. package/lib/serialization/FileMiddleware.js +187 -86
  416. package/lib/serialization/MapObjectSerializer.js +25 -8
  417. package/lib/serialization/NullPrototypeObjectSerializer.js +26 -8
  418. package/lib/serialization/ObjectMiddleware.js +96 -66
  419. package/lib/serialization/PlainObjectSerializer.js +51 -14
  420. package/lib/serialization/RegExpObjectSerializer.js +17 -5
  421. package/lib/serialization/Serializer.js +23 -5
  422. package/lib/serialization/SerializerMiddleware.js +8 -8
  423. package/lib/serialization/SetObjectSerializer.js +22 -6
  424. package/lib/serialization/SingleItemMiddleware.js +2 -2
  425. package/lib/serialization/types.js +2 -2
  426. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  427. package/lib/sharing/ConsumeSharedModule.js +40 -17
  428. package/lib/sharing/ConsumeSharedPlugin.js +139 -102
  429. package/lib/sharing/ConsumeSharedRuntimeModule.js +144 -130
  430. package/lib/sharing/ProvideForSharedDependency.js +0 -1
  431. package/lib/sharing/ProvideSharedDependency.js +17 -0
  432. package/lib/sharing/ProvideSharedModule.js +19 -6
  433. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  434. package/lib/sharing/ProvideSharedPlugin.js +37 -30
  435. package/lib/sharing/SharePlugin.js +2 -2
  436. package/lib/sharing/ShareRuntimeModule.js +20 -10
  437. package/lib/sharing/resolveMatchedConfigs.js +6 -5
  438. package/lib/sharing/utils.js +338 -34
  439. package/lib/stats/DefaultStatsFactoryPlugin.js +660 -396
  440. package/lib/stats/DefaultStatsPresetPlugin.js +85 -25
  441. package/lib/stats/DefaultStatsPrinterPlugin.js +525 -145
  442. package/lib/stats/StatsFactory.js +128 -57
  443. package/lib/stats/StatsPrinter.js +77 -46
  444. package/lib/util/ArrayHelpers.js +35 -1
  445. package/lib/util/ArrayQueue.js +15 -22
  446. package/lib/util/AsyncQueue.js +37 -16
  447. package/lib/util/IterableHelpers.js +3 -4
  448. package/lib/util/LazyBucketSortedSet.js +60 -44
  449. package/lib/util/LazySet.js +11 -2
  450. package/lib/util/MapHelpers.js +17 -5
  451. package/lib/util/ParallelismFactorCalculator.js +11 -1
  452. package/lib/util/Queue.js +9 -3
  453. package/lib/util/Semaphore.js +4 -7
  454. package/lib/util/SetHelpers.js +5 -5
  455. package/lib/util/SortableSet.js +19 -6
  456. package/lib/util/StackedCacheMap.js +33 -3
  457. package/lib/util/StackedMap.js +1 -3
  458. package/lib/util/StringXor.js +46 -0
  459. package/lib/util/TupleQueue.js +9 -3
  460. package/lib/util/TupleSet.js +15 -5
  461. package/lib/util/URLAbsoluteSpecifier.js +8 -8
  462. package/lib/util/WeakTupleMap.js +70 -28
  463. package/lib/util/binarySearchBounds.js +51 -9
  464. package/lib/util/chainedImports.js +97 -0
  465. package/lib/util/cleverMerge.js +51 -36
  466. package/lib/util/comparators.js +146 -83
  467. package/lib/util/compileBooleanMatcher.js +35 -7
  468. package/lib/util/conventions.js +126 -0
  469. package/lib/util/create-schema-validation.js +9 -2
  470. package/lib/util/createHash.js +49 -14
  471. package/lib/util/deprecation.js +48 -15
  472. package/lib/util/deterministicGrouping.js +71 -39
  473. package/lib/util/extractUrlAndGlobal.js +3 -0
  474. package/lib/util/findGraphRoots.js +7 -5
  475. package/lib/util/fs.js +419 -94
  476. package/lib/util/hash/BatchedHash.js +10 -4
  477. package/lib/util/hash/md4.js +20 -0
  478. package/lib/util/hash/wasm-hash.js +163 -0
  479. package/lib/util/hash/xxhash64.js +7 -141
  480. package/lib/util/identifier.js +140 -93
  481. package/lib/util/internalSerializables.js +22 -0
  482. package/lib/util/makeSerializable.js +7 -0
  483. package/lib/util/memoize.js +10 -10
  484. package/lib/util/mergeScope.js +76 -0
  485. package/lib/util/nonNumericOnlyHash.js +22 -0
  486. package/lib/util/numberHash.js +84 -34
  487. package/lib/util/objectToMap.js +0 -1
  488. package/lib/util/processAsyncTree.js +7 -1
  489. package/lib/util/propertyAccess.js +7 -55
  490. package/lib/util/propertyName.js +77 -0
  491. package/lib/util/registerExternalSerializer.js +2 -2
  492. package/lib/util/runtime.js +188 -133
  493. package/lib/util/semver.js +64 -56
  494. package/lib/util/serialization.js +26 -1
  495. package/lib/util/smartGrouping.js +10 -10
  496. package/lib/util/source.js +1 -1
  497. package/lib/validateSchema.js +6 -2
  498. package/lib/wasm/EnableWasmLoadingPlugin.js +9 -4
  499. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +70 -30
  500. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  501. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +34 -16
  502. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +32 -12
  503. package/lib/wasm-async/AsyncWebAssemblyParser.js +17 -4
  504. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +72 -31
  505. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  506. package/lib/wasm-sync/WebAssemblyGenerator.js +72 -52
  507. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -4
  508. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  509. package/lib/wasm-sync/WebAssemblyParser.js +23 -9
  510. package/lib/wasm-sync/WebAssemblyUtils.js +5 -4
  511. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  512. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  513. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  514. package/lib/web/JsonpChunkLoadingRuntimeModule.js +71 -41
  515. package/lib/webpack.js +43 -12
  516. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +15 -12
  517. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +55 -40
  518. package/module.d.ts +233 -0
  519. package/package.json +85 -139
  520. package/schemas/WebpackOptions.check.js +1 -1
  521. package/schemas/WebpackOptions.json +679 -47
  522. package/schemas/plugins/BannerPlugin.check.js +1 -1
  523. package/schemas/plugins/BannerPlugin.json +9 -1
  524. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  525. package/schemas/plugins/HashedModuleIdsPlugin.check.js +1 -1
  526. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  529. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  530. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  531. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  532. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  534. package/schemas/plugins/container/ContainerPlugin.json +10 -1
  535. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  536. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  537. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  538. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  539. package/schemas/plugins/container/ModuleFederationPlugin.json +12 -1
  540. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +7 -0
  541. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +6 -0
  542. package/schemas/plugins/css/CssAutoGeneratorOptions.json +3 -0
  543. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +7 -0
  544. package/schemas/plugins/css/CssAutoParserOptions.check.js +6 -0
  545. package/schemas/plugins/css/CssAutoParserOptions.json +3 -0
  546. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +7 -0
  547. package/schemas/plugins/css/CssGeneratorOptions.check.js +6 -0
  548. package/schemas/plugins/css/CssGeneratorOptions.json +3 -0
  549. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +7 -0
  550. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +6 -0
  551. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +3 -0
  552. package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +7 -0
  553. package/schemas/plugins/css/CssGlobalParserOptions.check.js +6 -0
  554. package/schemas/plugins/css/CssGlobalParserOptions.json +3 -0
  555. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +7 -0
  556. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +6 -0
  557. package/schemas/plugins/css/CssModuleGeneratorOptions.json +3 -0
  558. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +7 -0
  559. package/schemas/plugins/css/CssModuleParserOptions.check.js +6 -0
  560. package/schemas/plugins/css/CssModuleParserOptions.json +3 -0
  561. package/schemas/plugins/css/CssParserOptions.check.d.ts +7 -0
  562. package/schemas/plugins/css/CssParserOptions.check.js +6 -0
  563. package/schemas/plugins/css/CssParserOptions.json +3 -0
  564. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  565. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  566. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  567. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  568. package/schemas/plugins/schemes/HttpUriPlugin.json +4 -0
  569. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  570. package/types.d.ts +5026 -1756
@@ -27,7 +27,7 @@ const LogType = Object.freeze({
27
27
  status: /** @type {"status"} */ ("status") // message, arguments
28
28
  });
29
29
 
30
- exports.LogType = LogType;
30
+ module.exports.LogType = LogType;
31
31
 
32
32
  /** @typedef {typeof LogType[keyof typeof LogType]} LogTypeEnum */
33
33
 
@@ -45,26 +45,45 @@ class WebpackLogger {
45
45
  this.getChildLogger = getChildLogger;
46
46
  }
47
47
 
48
+ /**
49
+ * @param {...any} args args
50
+ */
48
51
  error(...args) {
49
52
  this[LOG_SYMBOL](LogType.error, args);
50
53
  }
51
54
 
55
+ /**
56
+ * @param {...any} args args
57
+ */
52
58
  warn(...args) {
53
59
  this[LOG_SYMBOL](LogType.warn, args);
54
60
  }
55
61
 
62
+ /**
63
+ * @param {...any} args args
64
+ */
56
65
  info(...args) {
57
66
  this[LOG_SYMBOL](LogType.info, args);
58
67
  }
59
68
 
69
+ /**
70
+ * @param {...any} args args
71
+ */
60
72
  log(...args) {
61
73
  this[LOG_SYMBOL](LogType.log, args);
62
74
  }
63
75
 
76
+ /**
77
+ * @param {...any} args args
78
+ */
64
79
  debug(...args) {
65
80
  this[LOG_SYMBOL](LogType.debug, args);
66
81
  }
67
82
 
83
+ /**
84
+ * @param {any} assertion assertion
85
+ * @param {...any} args args
86
+ */
68
87
  assert(assertion, ...args) {
69
88
  if (!assertion) {
70
89
  this[LOG_SYMBOL](LogType.error, args);
@@ -79,35 +98,57 @@ class WebpackLogger {
79
98
  this[LOG_SYMBOL](LogType.clear);
80
99
  }
81
100
 
101
+ /**
102
+ * @param {...any} args args
103
+ */
82
104
  status(...args) {
83
105
  this[LOG_SYMBOL](LogType.status, args);
84
106
  }
85
107
 
108
+ /**
109
+ * @param {...any} args args
110
+ */
86
111
  group(...args) {
87
112
  this[LOG_SYMBOL](LogType.group, args);
88
113
  }
89
114
 
115
+ /**
116
+ * @param {...any} args args
117
+ */
90
118
  groupCollapsed(...args) {
91
119
  this[LOG_SYMBOL](LogType.groupCollapsed, args);
92
120
  }
93
121
 
94
- groupEnd(...args) {
95
- this[LOG_SYMBOL](LogType.groupEnd, args);
122
+ groupEnd() {
123
+ this[LOG_SYMBOL](LogType.groupEnd);
96
124
  }
97
125
 
126
+ /**
127
+ * @param {string=} label label
128
+ */
98
129
  profile(label) {
99
130
  this[LOG_SYMBOL](LogType.profile, [label]);
100
131
  }
101
132
 
133
+ /**
134
+ * @param {string=} label label
135
+ */
102
136
  profileEnd(label) {
103
137
  this[LOG_SYMBOL](LogType.profileEnd, [label]);
104
138
  }
105
139
 
140
+ /**
141
+ * @param {string} label label
142
+ */
106
143
  time(label) {
144
+ /** @type {Map<string | undefined, [number, number]>} */
107
145
  this[TIMERS_SYMBOL] = this[TIMERS_SYMBOL] || new Map();
108
146
  this[TIMERS_SYMBOL].set(label, process.hrtime());
109
147
  }
110
148
 
149
+ /**
150
+ * @param {string=} label label
151
+ */
111
152
  timeLog(label) {
112
153
  const prev = this[TIMERS_SYMBOL] && this[TIMERS_SYMBOL].get(label);
113
154
  if (!prev) {
@@ -117,16 +158,23 @@ class WebpackLogger {
117
158
  this[LOG_SYMBOL](LogType.time, [label, ...time]);
118
159
  }
119
160
 
161
+ /**
162
+ * @param {string=} label label
163
+ */
120
164
  timeEnd(label) {
121
165
  const prev = this[TIMERS_SYMBOL] && this[TIMERS_SYMBOL].get(label);
122
166
  if (!prev) {
123
167
  throw new Error(`No such label '${label}' for WebpackLogger.timeEnd()`);
124
168
  }
125
169
  const time = process.hrtime(prev);
126
- this[TIMERS_SYMBOL].delete(label);
170
+ /** @type {Map<string | undefined, [number, number]>} */
171
+ (this[TIMERS_SYMBOL]).delete(label);
127
172
  this[LOG_SYMBOL](LogType.time, [label, ...time]);
128
173
  }
129
174
 
175
+ /**
176
+ * @param {string=} label label
177
+ */
130
178
  timeAggregate(label) {
131
179
  const prev = this[TIMERS_SYMBOL] && this[TIMERS_SYMBOL].get(label);
132
180
  if (!prev) {
@@ -135,7 +183,9 @@ class WebpackLogger {
135
183
  );
136
184
  }
137
185
  const time = process.hrtime(prev);
138
- this[TIMERS_SYMBOL].delete(label);
186
+ /** @type {Map<string | undefined, [number, number]>} */
187
+ (this[TIMERS_SYMBOL]).delete(label);
188
+ /** @type {Map<string | undefined, [number, number]>} */
139
189
  this[TIMERS_AGGREGATES_SYMBOL] =
140
190
  this[TIMERS_AGGREGATES_SYMBOL] || new Map();
141
191
  const current = this[TIMERS_AGGREGATES_SYMBOL].get(label);
@@ -151,6 +201,9 @@ class WebpackLogger {
151
201
  this[TIMERS_AGGREGATES_SYMBOL].set(label, time);
152
202
  }
153
203
 
204
+ /**
205
+ * @param {string=} label label
206
+ */
154
207
  timeAggregateEnd(label) {
155
208
  if (this[TIMERS_AGGREGATES_SYMBOL] === undefined) return;
156
209
  const time = this[TIMERS_AGGREGATES_SYMBOL].get(label);
@@ -160,4 +213,4 @@ class WebpackLogger {
160
213
  }
161
214
  }
162
215
 
163
- exports.Logger = WebpackLogger;
216
+ module.exports.Logger = WebpackLogger;
@@ -12,9 +12,10 @@ const { LogType } = require("./Logger");
12
12
  /** @typedef {import("./Logger").LogTypeEnum} LogTypeEnum */
13
13
 
14
14
  /** @typedef {function(string): boolean} FilterFunction */
15
+ /** @typedef {function(string, LogTypeEnum, any[]=): void} LoggingFunction */
15
16
 
16
17
  /**
17
- * @typedef {Object} LoggerConsole
18
+ * @typedef {object} LoggerConsole
18
19
  * @property {function(): void} clear
19
20
  * @property {function(): void} trace
20
21
  * @property {(...args: any[]) => void} info
@@ -32,7 +33,7 @@ const { LogType } = require("./Logger");
32
33
  */
33
34
 
34
35
  /**
35
- * @typedef {Object} LoggerOptions
36
+ * @typedef {object} LoggerOptions
36
37
  * @property {false|true|"none"|"error"|"warn"|"info"|"log"|"verbose"} level loglevel
37
38
  * @property {FilterTypes|boolean} debug filter for debug logging
38
39
  * @property {LoggerConsole} console the console to log to
@@ -40,16 +41,12 @@ const { LogType } = require("./Logger");
40
41
 
41
42
  /**
42
43
  * @param {FilterItemTypes} item an input item
43
- * @returns {FilterFunction} filter function
44
+ * @returns {FilterFunction | undefined} filter function
44
45
  */
45
46
  const filterToFunction = item => {
46
47
  if (typeof item === "string") {
47
48
  const regExp = new RegExp(
48
- `[\\\\/]${item.replace(
49
- // eslint-disable-next-line no-useless-escape
50
- /[-[\]{}()*+?.\\^$|]/g,
51
- "\\$&"
52
- )}([\\\\/]|$|!|\\?)`
49
+ `[\\\\/]${item.replace(/[-[\]{}()*+?.\\^$|]/g, "\\$&")}([\\\\/]|$|!|\\?)`
53
50
  );
54
51
  return ident => regExp.test(ident);
55
52
  }
@@ -80,22 +77,25 @@ const LogLevel = {
80
77
 
81
78
  /**
82
79
  * @param {LoggerOptions} options options object
83
- * @returns {function(string, LogTypeEnum, any[]): void} logging function
80
+ * @returns {LoggingFunction} logging function
84
81
  */
85
82
  module.exports = ({ level = "info", debug = false, console }) => {
86
83
  const debugFilters =
87
- typeof debug === "boolean"
88
- ? [() => debug]
89
- : /** @type {FilterItemTypes[]} */ ([])
90
- .concat(debug)
91
- .map(filterToFunction);
84
+ /** @type {FilterFunction[]} */
85
+ (
86
+ typeof debug === "boolean"
87
+ ? [() => debug]
88
+ : /** @type {FilterItemTypes[]} */ ([])
89
+ .concat(debug)
90
+ .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 {any[]} args arguments of the log entry
98
+ * @param {any[]=} args arguments of the log entry
99
99
  * @returns {void}
100
100
  */
101
101
  const logger = (name, type, args) => {
@@ -103,20 +103,16 @@ module.exports = ({ level = "info", debug = false, console }) => {
103
103
  if (Array.isArray(args)) {
104
104
  if (args.length > 0 && typeof args[0] === "string") {
105
105
  return [`[${name}] ${args[0]}`, ...args.slice(1)];
106
- } else {
107
- return [`[${name}]`, ...args];
108
106
  }
109
- } else {
110
- return [];
107
+ return [`[${name}]`, ...args];
111
108
  }
109
+ return [];
112
110
  };
113
111
  const debug = debugFilters.some(f => f(name));
114
112
  switch (type) {
115
113
  case LogType.debug:
116
114
  if (!debug) return;
117
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
118
115
  if (typeof console.debug === "function") {
119
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
120
116
  console.debug(...labeledArgs());
121
117
  } else {
122
118
  console.log(...labeledArgs());
@@ -145,9 +141,7 @@ module.exports = ({ level = "info", debug = false, console }) => {
145
141
  case LogType.groupCollapsed:
146
142
  if (!debug && loglevel > LogLevel.log) return;
147
143
  if (!debug && loglevel > LogLevel.verbose) {
148
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
149
144
  if (typeof console.groupCollapsed === "function") {
150
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
151
145
  console.groupCollapsed(...labeledArgs());
152
146
  } else {
153
147
  console.log(...labeledArgs());
@@ -157,9 +151,7 @@ module.exports = ({ level = "info", debug = false, console }) => {
157
151
  // falls through
158
152
  case LogType.group:
159
153
  if (!debug && loglevel > LogLevel.log) return;
160
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
161
154
  if (typeof console.group === "function") {
162
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
163
155
  console.group(...labeledArgs());
164
156
  } else {
165
157
  console.log(...labeledArgs());
@@ -167,16 +159,17 @@ module.exports = ({ level = "info", debug = false, console }) => {
167
159
  break;
168
160
  case LogType.groupEnd:
169
161
  if (!debug && loglevel > LogLevel.log) return;
170
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
171
162
  if (typeof console.groupEnd === "function") {
172
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
173
163
  console.groupEnd();
174
164
  }
175
165
  break;
176
166
  case LogType.time: {
177
167
  if (!debug && loglevel > LogLevel.log) return;
178
- const ms = args[1] * 1000 + args[2] / 1000000;
179
- const msg = `[${name}] ${args[0]}: ${ms} ms`;
168
+ const [label, start, end] =
169
+ /** @type {[string, number, number]} */
170
+ (args);
171
+ const ms = start * 1000 + end / 1000000;
172
+ const msg = `[${name}] ${label}: ${ms} ms`;
180
173
  if (typeof console.logTime === "function") {
181
174
  console.logTime(msg);
182
175
  } else {
@@ -185,39 +178,31 @@ module.exports = ({ level = "info", debug = false, console }) => {
185
178
  break;
186
179
  }
187
180
  case LogType.profile:
188
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
189
181
  if (typeof console.profile === "function") {
190
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
191
182
  console.profile(...labeledArgs());
192
183
  }
193
184
  break;
194
185
  case LogType.profileEnd:
195
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
196
186
  if (typeof console.profileEnd === "function") {
197
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
198
187
  console.profileEnd(...labeledArgs());
199
188
  }
200
189
  break;
201
190
  case LogType.clear:
202
191
  if (!debug && loglevel > LogLevel.log) return;
203
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
204
192
  if (typeof console.clear === "function") {
205
- // eslint-disable-next-line node/no-unsupported-features/node-builtins
206
193
  console.clear();
207
194
  }
208
195
  break;
209
196
  case LogType.status:
210
197
  if (!debug && loglevel > LogLevel.info) return;
211
198
  if (typeof console.status === "function") {
212
- if (args.length === 0) {
199
+ if (!args || args.length === 0) {
213
200
  console.status();
214
201
  } else {
215
202
  console.status(...labeledArgs());
216
203
  }
217
- } else {
218
- if (args.length !== 0) {
219
- console.info(...labeledArgs());
220
- }
204
+ } else if (args && args.length !== 0) {
205
+ console.info(...labeledArgs());
221
206
  }
222
207
  break;
223
208
  default:
@@ -5,12 +5,12 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const SyncBailHook = require("tapable/lib/SyncBailHook");
8
+ const { SyncBailHook } = require("tapable");
9
9
  const { Logger } = require("./Logger");
10
10
  const createConsoleLogger = require("./createConsoleLogger");
11
11
 
12
12
  /** @type {createConsoleLogger.LoggerOptions} */
13
- let currentDefaultLoggerOptions = {
13
+ const currentDefaultLoggerOptions = {
14
14
  level: "info",
15
15
  debug: false,
16
16
  console
@@ -21,26 +21,25 @@ let currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions);
21
21
  * @param {string} name name of the logger
22
22
  * @returns {Logger} a logger
23
23
  */
24
- exports.getLogger = name => {
25
- return new Logger(
24
+ module.exports.getLogger = name =>
25
+ new Logger(
26
26
  (type, args) => {
27
- if (exports.hooks.log.call(name, type, args) === undefined) {
27
+ if (module.exports.hooks.log.call(name, type, args) === undefined) {
28
28
  currentDefaultLogger(name, type, args);
29
29
  }
30
30
  },
31
- childName => exports.getLogger(`${name}/${childName}`)
31
+ childName => module.exports.getLogger(`${name}/${childName}`)
32
32
  );
33
- };
34
33
 
35
34
  /**
36
35
  * @param {createConsoleLogger.LoggerOptions} options new options, merge with old options
37
36
  * @returns {void}
38
37
  */
39
- exports.configureDefaultLogger = options => {
38
+ module.exports.configureDefaultLogger = options => {
40
39
  Object.assign(currentDefaultLoggerOptions, options);
41
40
  currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions);
42
41
  };
43
42
 
44
- exports.hooks = {
43
+ module.exports.hooks = {
45
44
  log: new SyncBailHook(["origin", "type", "args"])
46
45
  };
@@ -5,6 +5,10 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /**
9
+ * @param {Array<number>} array array of numbers
10
+ * @returns {number} sum of all numbers in array
11
+ */
8
12
  const arraySum = array => {
9
13
  let sum = 0;
10
14
  for (const item of array) sum += item;
@@ -24,17 +28,15 @@ const truncateArgs = (args, maxLength) => {
24
28
  if (availableLength >= args[0].length) {
25
29
  return args;
26
30
  } else if (availableLength > 3) {
27
- return ["..." + args[0].slice(-availableLength + 3)];
28
- } else {
29
- return [args[0].slice(-availableLength)];
31
+ return [`...${args[0].slice(-availableLength + 3)}`];
30
32
  }
33
+ return [args[0].slice(-availableLength)];
31
34
  }
32
35
 
33
36
  // Check if there is space for at least 4 chars per arg
34
37
  if (availableLength < arraySum(lengths.map(i => Math.min(i, 6)))) {
35
38
  // remove args
36
- if (args.length > 1)
37
- return truncateArgs(args.slice(0, args.length - 1), maxLength);
39
+ if (args.length > 1) return truncateArgs(args.slice(0, -1), maxLength);
38
40
  return [];
39
41
  }
40
42
 
@@ -70,12 +72,11 @@ const truncateArgs = (args, maxLength) => {
70
72
  if (str.length === length) {
71
73
  return str;
72
74
  } else if (length > 5) {
73
- return "..." + str.slice(-length + 3);
75
+ return `...${str.slice(-length + 3)}`;
74
76
  } else if (length > 0) {
75
77
  return str.slice(-length);
76
- } else {
77
- return "";
78
78
  }
79
+ return "";
79
80
  });
80
81
  };
81
82
 
@@ -8,11 +8,19 @@
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenciesPlugin");
10
10
 
11
+ /** @typedef {import("../Chunk")} Chunk */
11
12
  /** @typedef {import("../Compiler")} Compiler */
12
13
 
14
+ /**
15
+ * @typedef {object} CommonJsChunkLoadingPluginOptions
16
+ * @property {boolean} [asyncChunkLoading] enable async chunk loading
17
+ */
18
+
13
19
  class CommonJsChunkLoadingPlugin {
14
- constructor(options) {
15
- options = options || {};
20
+ /**
21
+ * @param {CommonJsChunkLoadingPluginOptions} [options] options
22
+ */
23
+ constructor(options = {}) {
16
24
  this._asyncChunkLoading = options.asyncChunkLoading;
17
25
  }
18
26
 
@@ -36,6 +44,10 @@ class CommonJsChunkLoadingPlugin {
36
44
  "CommonJsChunkLoadingPlugin",
37
45
  compilation => {
38
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
+ */
39
51
  const isEnabledForChunk = chunk => {
40
52
  const options = chunk.getEntryOptions();
41
53
  const chunkLoading =
@@ -45,6 +57,10 @@ class CommonJsChunkLoadingPlugin {
45
57
  return chunkLoading === chunkLoadingValue;
46
58
  };
47
59
  const onceForChunkSet = new WeakSet();
60
+ /**
61
+ * @param {Chunk} chunk chunk
62
+ * @param {Set<string>} set runtime requirements
63
+ */
48
64
  const handler = (chunk, set) => {
49
65
  if (onceForChunkSet.has(chunk)) return;
50
66
  onceForChunkSet.add(chunk);
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const CachedInputFileSystem = require("enhanced-resolve/lib/CachedInputFileSystem");
8
+ const CachedInputFileSystem = require("enhanced-resolve").CachedInputFileSystem;
9
9
  const fs = require("graceful-fs");
10
10
  const createConsoleLogger = require("../logging/createConsoleLogger");
11
11
  const NodeWatchFileSystem = require("./NodeWatchFileSystem");
@@ -13,10 +13,11 @@ const nodeConsole = require("./nodeConsole");
13
13
 
14
14
  /** @typedef {import("../../declarations/WebpackOptions").InfrastructureLogging} InfrastructureLogging */
15
15
  /** @typedef {import("../Compiler")} Compiler */
16
+ /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
16
17
 
17
18
  class NodeEnvironmentPlugin {
18
19
  /**
19
- * @param {Object} options options
20
+ * @param {object} options options
20
21
  * @param {InfrastructureLogging} options.infrastructureLogging infrastructure logging options
21
22
  */
22
23
  constructor(options) {
@@ -38,18 +39,23 @@ class NodeEnvironmentPlugin {
38
39
  nodeConsole({
39
40
  colors: infrastructureLogging.colors,
40
41
  appendOnly: infrastructureLogging.appendOnly,
41
- stream: infrastructureLogging.stream
42
+ stream:
43
+ /** @type {NodeJS.WritableStream} */
44
+ (infrastructureLogging.stream)
42
45
  })
43
46
  });
44
47
  compiler.inputFileSystem = new CachedInputFileSystem(fs, 60000);
45
- const inputFileSystem = compiler.inputFileSystem;
48
+ const inputFileSystem =
49
+ /** @type {InputFileSystem} */
50
+ (compiler.inputFileSystem);
46
51
  compiler.outputFileSystem = fs;
47
52
  compiler.intermediateFileSystem = fs;
48
- compiler.watchFileSystem = new NodeWatchFileSystem(
49
- compiler.inputFileSystem
50
- );
53
+ compiler.watchFileSystem = new NodeWatchFileSystem(inputFileSystem);
51
54
  compiler.hooks.beforeRun.tap("NodeEnvironmentPlugin", compiler => {
52
- if (compiler.inputFileSystem === inputFileSystem) {
55
+ if (
56
+ compiler.inputFileSystem === inputFileSystem &&
57
+ inputFileSystem.purge
58
+ ) {
53
59
  compiler.fsStartTime = Date.now();
54
60
  inputFileSystem.purge();
55
61
  }
@@ -11,6 +11,7 @@ const ExternalsPlugin = require("../ExternalsPlugin");
11
11
 
12
12
  const builtins = [
13
13
  "assert",
14
+ "assert/strict",
14
15
  "async_hooks",
15
16
  "buffer",
16
17
  "child_process",
@@ -30,17 +31,22 @@ const builtins = [
30
31
  "http2",
31
32
  "https",
32
33
  "inspector",
34
+ "inspector/promises",
33
35
  "module",
34
36
  "net",
35
37
  "os",
36
38
  "path",
39
+ "path/posix",
40
+ "path/win32",
37
41
  "perf_hooks",
38
42
  "process",
39
43
  "punycode",
40
44
  "querystring",
41
45
  "readline",
46
+ "readline/promises",
42
47
  "repl",
43
48
  "stream",
49
+ "stream/consumers",
44
50
  "stream/promises",
45
51
  "stream/web",
46
52
  "string_decoder",
@@ -52,6 +58,7 @@ const builtins = [
52
58
  "tty",
53
59
  "url",
54
60
  "util",
61
+ "util/types",
55
62
  "v8",
56
63
  "vm",
57
64
  "wasi",
@@ -10,9 +10,17 @@ const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin
10
10
 
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
 
13
+ /**
14
+ * @typedef {object} NodeTemplatePluginOptions
15
+ * @property {boolean} [asyncChunkLoading] enable async chunk loading
16
+ */
17
+
13
18
  class NodeTemplatePlugin {
14
- constructor(options) {
15
- this._options = options || {};
19
+ /**
20
+ * @param {NodeTemplatePluginOptions} [options] options object
21
+ */
22
+ constructor(options = {}) {
23
+ this._options = options;
16
24
  }
17
25
 
18
26
  /**