webpack 5.106.1 → 5.107.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 (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -13,6 +13,7 @@ const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenc
13
13
  /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
14
14
 
15
15
  /**
16
+ * Defines the common js chunk loading plugin options type used by this module.
16
17
  * @typedef {object} CommonJsChunkLoadingPluginOptions
17
18
  * @property {boolean=} asyncChunkLoading enable async chunk loading
18
19
  */
@@ -21,6 +22,7 @@ const PLUGIN_NAME = "CommonJsChunkLoadingPlugin";
21
22
 
22
23
  class CommonJsChunkLoadingPlugin {
23
24
  /**
25
+ * Creates an instance of CommonJsChunkLoadingPlugin.
24
26
  * @param {CommonJsChunkLoadingPluginOptions=} options options
25
27
  */
26
28
  constructor(options = {}) {
@@ -29,7 +31,7 @@ class CommonJsChunkLoadingPlugin {
29
31
  }
30
32
 
31
33
  /**
32
- * Apply the plugin
34
+ * Applies the plugin by registering its hooks on the compiler.
33
35
  * @param {Compiler} compiler the compiler instance
34
36
  * @returns {void}
35
37
  */
@@ -47,6 +49,7 @@ class CommonJsChunkLoadingPlugin {
47
49
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
48
50
  const globalChunkLoading = compilation.outputOptions.chunkLoading;
49
51
  /**
52
+ * Checks whether this common js chunk loading plugin is enabled for chunk.
50
53
  * @param {Chunk} chunk chunk
51
54
  * @returns {boolean} true, if wasm loading is enabled for the chunk
52
55
  */
@@ -61,6 +64,7 @@ class CommonJsChunkLoadingPlugin {
61
64
  /** @type {WeakSet<Chunk>} */
62
65
  const onceForChunkSet = new WeakSet();
63
66
  /**
67
+ * Handles the hook callback for this code path.
64
68
  * @param {Chunk} chunk chunk
65
69
  * @param {RuntimeRequirements} set runtime requirements
66
70
  */
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const CachedInputFileSystem = require("enhanced-resolve").CachedInputFileSystem;
8
+ const { CachedInputFileSystem } = require("enhanced-resolve");
9
9
  const fs = require("graceful-fs");
10
10
  const createConsoleLogger = require("../logging/createConsoleLogger");
11
11
  const NodeWatchFileSystem = require("./NodeWatchFileSystem");
@@ -16,6 +16,7 @@ const nodeConsole = require("./nodeConsole");
16
16
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
17
17
 
18
18
  /**
19
+ * Defines the node environment plugin options type used by this module.
19
20
  * @typedef {object} NodeEnvironmentPluginOptions
20
21
  * @property {InfrastructureLogging} infrastructureLogging infrastructure logging options
21
22
  */
@@ -24,6 +25,7 @@ const PLUGIN_NAME = "NodeEnvironmentPlugin";
24
25
 
25
26
  class NodeEnvironmentPlugin {
26
27
  /**
28
+ * Creates an instance of NodeEnvironmentPlugin.
27
29
  * @param {NodeEnvironmentPluginOptions} options options
28
30
  */
29
31
  constructor(options) {
@@ -32,7 +34,7 @@ class NodeEnvironmentPlugin {
32
34
  }
33
35
 
34
36
  /**
35
- * Apply the plugin
37
+ * Applies the plugin by registering its hooks on the compiler.
36
38
  * @param {Compiler} compiler the compiler instance
37
39
  * @returns {void}
38
40
  */
@@ -48,9 +50,11 @@ class NodeEnvironmentPlugin {
48
50
  appendOnly: infrastructureLogging.appendOnly,
49
51
  stream:
50
52
  /** @type {NodeJS.WritableStream} */
51
- (infrastructureLogging.stream)
53
+ (infrastructureLogging.stream),
54
+ compiler
52
55
  })
53
56
  });
57
+ // @ts-expect-error need to fix on enhanced-resolve side
54
58
  compiler.inputFileSystem = new CachedInputFileSystem(fs, 60000);
55
59
  const inputFileSystem =
56
60
  /** @type {InputFileSystem} */
@@ -9,7 +9,7 @@
9
9
 
10
10
  class NodeSourcePlugin {
11
11
  /**
12
- * Apply the plugin
12
+ * Applies the plugin by registering its hooks on the compiler.
13
13
  * @param {Compiler} compiler the compiler instance
14
14
  * @returns {void}
15
15
  */
@@ -74,6 +74,7 @@ const builtins = [
74
74
 
75
75
  class NodeTargetPlugin {
76
76
  /**
77
+ * Creates an instance of NodeTargetPlugin.
77
78
  * @param {ExternalsType} type default external type
78
79
  */
79
80
  constructor(type = "node-commonjs") {
@@ -82,7 +83,7 @@ class NodeTargetPlugin {
82
83
  }
83
84
 
84
85
  /**
85
- * Apply the plugin
86
+ * Applies the plugin by registering its hooks on the compiler.
86
87
  * @param {Compiler} compiler the compiler instance
87
88
  * @returns {void}
88
89
  */
@@ -11,12 +11,14 @@ const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
 
13
13
  /**
14
+ * Represents the node template plugin runtime component.
14
15
  * @typedef {object} NodeTemplatePluginOptions
15
16
  * @property {boolean=} asyncChunkLoading enable async chunk loading
16
17
  */
17
18
 
18
19
  class NodeTemplatePlugin {
19
20
  /**
21
+ * Creates an instance of NodeTemplatePlugin.
20
22
  * @param {NodeTemplatePluginOptions=} options options object
21
23
  */
22
24
  constructor(options = {}) {
@@ -25,7 +27,7 @@ class NodeTemplatePlugin {
25
27
  }
26
28
 
27
29
  /**
28
- * Apply the plugin
30
+ * Applies the plugin by registering its hooks on the compiler.
29
31
  * @param {Compiler} compiler the compiler instance
30
32
  * @returns {void}
31
33
  */
@@ -17,6 +17,7 @@ const Watchpack = require("watchpack");
17
17
 
18
18
  class NodeWatchFileSystem {
19
19
  /**
20
+ * Creates an instance of NodeWatchFileSystem.
20
21
  * @param {InputFileSystem} inputFileSystem input filesystem
21
22
  */
22
23
  constructor(inputFileSystem) {
@@ -84,6 +85,7 @@ class NodeWatchFileSystem {
84
85
  this.watcher.once(
85
86
  "aggregated",
86
87
  /**
88
+ * Handles the callback logic for this hook.
87
89
  * @param {Changes} changes changes
88
90
  * @param {Removals} removals removals
89
91
  */
@@ -26,6 +26,7 @@ const { getUndoPath } = require("../util/identifier");
26
26
 
27
27
  class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
28
28
  /**
29
+ * Creates an instance of ReadFileChunkLoadingRuntimeModule.
29
30
  * @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
30
31
  */
31
32
  constructor(runtimeRequirements) {
@@ -35,6 +36,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
35
36
  }
36
37
 
37
38
  /**
39
+ * Returns generated code.
38
40
  * @private
39
41
  * @param {Chunk} chunk chunk
40
42
  * @param {string} rootOutputDir root output directory
@@ -55,6 +57,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
55
57
  }
56
58
 
57
59
  /**
60
+ * Generates runtime code for this runtime module.
58
61
  * @returns {string | null} runtime code
59
62
  */
60
63
  generate() {
@@ -15,6 +15,7 @@ const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRun
15
15
  /** @typedef {import("../Compiler")} Compiler */
16
16
 
17
17
  /**
18
+ * Defines the read file compile async wasm plugin options type used by this module.
18
19
  * @typedef {object} ReadFileCompileAsyncWasmPluginOptions
19
20
  * @property {boolean=} import use import?
20
21
  */
@@ -23,6 +24,7 @@ const PLUGIN_NAME = "ReadFileCompileAsyncWasmPlugin";
23
24
 
24
25
  class ReadFileCompileAsyncWasmPlugin {
25
26
  /**
27
+ * Creates an instance of ReadFileCompileAsyncWasmPlugin.
26
28
  * @param {ReadFileCompileAsyncWasmPluginOptions=} options options object
27
29
  */
28
30
  constructor({ import: useImport = false } = {}) {
@@ -31,7 +33,7 @@ class ReadFileCompileAsyncWasmPlugin {
31
33
  }
32
34
 
33
35
  /**
34
- * Apply the plugin
36
+ * Applies the plugin by registering its hooks on the compiler.
35
37
  * @param {Compiler} compiler the compiler instance
36
38
  * @returns {void}
37
39
  */
@@ -39,6 +41,7 @@ class ReadFileCompileAsyncWasmPlugin {
39
41
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
40
42
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
41
43
  /**
44
+ * Checks whether this read file compile async wasm plugin is enabled for chunk.
42
45
  * @param {Chunk} chunk chunk
43
46
  * @returns {boolean} true, if wasm loading is enabled for the chunk
44
47
  */
@@ -14,6 +14,7 @@ const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRunt
14
14
  /** @typedef {import("../Compiler")} Compiler */
15
15
 
16
16
  /**
17
+ * Defines the read file compile wasm plugin options type used by this module.
17
18
  * @typedef {object} ReadFileCompileWasmPluginOptions
18
19
  * @property {boolean=} mangleImports mangle imports
19
20
  * @property {boolean=} import use import?
@@ -23,6 +24,7 @@ const PLUGIN_NAME = "ReadFileCompileWasmPlugin";
23
24
 
24
25
  class ReadFileCompileWasmPlugin {
25
26
  /**
27
+ * Creates an instance of ReadFileCompileWasmPlugin.
26
28
  * @param {ReadFileCompileWasmPluginOptions=} options options object
27
29
  */
28
30
  constructor(options = {}) {
@@ -31,7 +33,7 @@ class ReadFileCompileWasmPlugin {
31
33
  }
32
34
 
33
35
  /**
34
- * Apply the plugin
36
+ * Applies the plugin by registering its hooks on the compiler.
35
37
  * @param {Compiler} compiler the compiler instance
36
38
  * @returns {void}
37
39
  */
@@ -39,6 +41,7 @@ class ReadFileCompileWasmPlugin {
39
41
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
40
42
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
41
43
  /**
44
+ * Checks whether this read file compile wasm plugin is enabled for chunk.
42
45
  * @param {Chunk} chunk chunk
43
46
  * @returns {boolean} true, when wasm loading is enabled for the chunk
44
47
  */
@@ -26,6 +26,7 @@ const { getUndoPath } = require("../util/identifier");
26
26
 
27
27
  class RequireChunkLoadingRuntimeModule extends RuntimeModule {
28
28
  /**
29
+ * Creates an instance of RequireChunkLoadingRuntimeModule.
29
30
  * @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
30
31
  */
31
32
  constructor(runtimeRequirements) {
@@ -35,6 +36,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
35
36
  }
36
37
 
37
38
  /**
39
+ * Returns generated code.
38
40
  * @private
39
41
  * @param {Chunk} chunk chunk
40
42
  * @param {string} rootOutputDir root output directory
@@ -55,6 +57,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
55
57
  }
56
58
 
57
59
  /**
60
+ * Generates runtime code for this runtime module.
58
61
  * @returns {string | null} runtime code
59
62
  */
60
63
  generate() {
@@ -7,120 +7,175 @@
7
7
 
8
8
  const util = require("util");
9
9
  const truncateArgs = require("../logging/truncateArgs");
10
+ const memoize = require("../util/memoize");
10
11
 
12
+ const getCli = memoize(() => require("../cli"));
13
+
14
+ const ESC = "\u001B[";
15
+ const CURSOR_UP = `${ESC}1A`;
16
+ const CLEAR_LINE = `${ESC}2K\r`;
17
+
18
+ /** @typedef {import("../Compiler")} Compiler */
11
19
  /** @typedef {import("../config/defaults").InfrastructureLoggingNormalizedWithDefaults} InfrastructureLoggingNormalizedWithDefaults */
12
20
  /** @typedef {import("../logging/createConsoleLogger").LoggerConsole} LoggerConsole */
21
+ /**
22
+ * @typedef {object} StatusMessageState
23
+ * @property {string[] | undefined} currentMessage current status message
24
+ * @property {number} currentLines current status message rows
25
+ */
26
+
27
+ /** @type {WeakMap<Compiler, StatusMessageState>} */
28
+ const logStatusStateByCompiler = new WeakMap();
29
+ /** @type {Set<StatusMessageState>} */
30
+ const logStatusStates = new Set();
31
+
32
+ /**
33
+ * Returns status state
34
+ * @param {Compiler} compiler compiler
35
+ * @returns {StatusMessageState} status state
36
+ */
37
+ const getLogStatusState = (compiler) => {
38
+ let state = logStatusStateByCompiler.get(compiler);
39
+ if (state === undefined) {
40
+ state = {
41
+ currentMessage: undefined,
42
+ currentLines: 0
43
+ };
44
+ logStatusStateByCompiler.set(compiler, state);
45
+ logStatusStates.add(state);
46
+ }
47
+ return state;
48
+ };
13
49
 
14
50
  /* eslint-disable no-console */
15
51
 
16
52
  /**
53
+ * Returns logger function.
17
54
  * @param {object} options options
18
55
  * @param {boolean=} options.colors colors
19
56
  * @param {boolean=} options.appendOnly append only
20
57
  * @param {InfrastructureLoggingNormalizedWithDefaults["stream"]} options.stream stream
58
+ * @param {Compiler} options.compiler compiler
21
59
  * @returns {LoggerConsole} logger function
22
60
  */
23
- module.exports = ({ colors, appendOnly, stream }) => {
24
- /** @type {string[] | undefined} */
25
- let currentStatusMessage;
26
- let hasStatusMessage = false;
61
+ module.exports = ({ colors, appendOnly, stream, compiler }) => {
62
+ const c = getCli().createColors({ useColor: Boolean(colors) });
63
+ const logStatusState = getLogStatusState(compiler);
64
+
27
65
  let currentIndent = "";
28
66
  let currentCollapsed = 0;
29
67
 
30
68
  /**
69
+ * Returns indented string.
31
70
  * @param {string} str string
32
71
  * @param {string} prefix prefix
33
- * @param {string} colorPrefix color prefix
34
- * @param {string} colorSuffix color suffix
72
+ * @param {(line: string) => string} colorFn color function
35
73
  * @returns {string} indented string
36
74
  */
37
- const indent = (str, prefix, colorPrefix, colorSuffix) => {
75
+ const indent = (str, prefix, colorFn) => {
38
76
  if (str === "") return str;
39
77
  prefix = currentIndent + prefix;
40
- if (colors) {
41
- return (
42
- prefix +
43
- colorPrefix +
44
- str.replace(/\n/g, `${colorSuffix}\n${prefix}${colorPrefix}`) +
45
- colorSuffix
46
- );
47
- }
48
-
49
- return prefix + str.replace(/\n/g, `\n${prefix}`);
78
+ return (
79
+ prefix +
80
+ str
81
+ .split("\n")
82
+ .map((line) => colorFn(line))
83
+ .join(`\n${prefix}`)
84
+ );
50
85
  };
51
86
 
52
87
  const clearStatusMessage = () => {
53
- if (hasStatusMessage) {
54
- stream.write("\u001B[2K\r");
55
- hasStatusMessage = false;
88
+ let lines = 0;
89
+ for (const state of logStatusStates) {
90
+ if (state.currentLines) {
91
+ lines += state.currentLines;
92
+ state.currentLines = 0;
93
+ }
94
+ }
95
+ for (let i = 0; i < lines; i++) {
96
+ if (i > 0) stream.write(CURSOR_UP);
97
+ stream.write(CLEAR_LINE);
56
98
  }
57
99
  };
58
100
 
59
101
  const writeStatusMessage = () => {
60
- if (!currentStatusMessage) return;
61
- const l = stream.columns || 40;
62
- const args = truncateArgs(currentStatusMessage, l - 1);
63
- const str = args.join(" ");
64
- const coloredStr = `\u001B[1m${str}\u001B[39m\u001B[22m`;
65
- stream.write(`\u001B[2K\r${coloredStr}`);
66
- hasStatusMessage = true;
102
+ const column = stream.columns || 40;
103
+ /** @type {string[]} */
104
+ const all = [];
105
+
106
+ for (const state of logStatusStates) {
107
+ if (!state.currentMessage) continue;
108
+ /** @type {string[][]} */
109
+ const lines = [[]];
110
+ for (const item of state.currentMessage) {
111
+ const parts = item.split("\n");
112
+ lines[lines.length - 1].push(parts[0]);
113
+ for (let i = 1; i < parts.length; i++) {
114
+ lines.push([parts[i]]);
115
+ }
116
+ }
117
+ const truncateLines = lines.map((args) =>
118
+ truncateArgs(args, column - 1).join(" ")
119
+ );
120
+ state.currentLines = truncateLines.length;
121
+ for (const line of truncateLines) all.push(line);
122
+ }
123
+ if (all.length === 0) return;
124
+
125
+ const coloredLines = all.map((str) => c.bold(str));
126
+ stream.write(`${CLEAR_LINE}${coloredLines.join(`\n${CLEAR_LINE}`)}`);
67
127
  };
68
128
 
69
129
  /**
130
+ * @param {EXPECTED_ANY[]} statusMessage status message
131
+ * @returns {void}
132
+ */
133
+ const setStatusMessage = (statusMessage) => {
134
+ clearStatusMessage();
135
+ logStatusState.currentMessage = statusMessage.map((item) => `${item}`);
136
+ writeStatusMessage();
137
+ };
138
+
139
+ /**
140
+ * Returns function to write with colors.
70
141
  * @template T
71
142
  * @param {string} prefix prefix
72
- * @param {string} colorPrefix color prefix
73
- * @param {string} colorSuffix color suffix
143
+ * @param {(line: string) => string} colorFn color function
74
144
  * @returns {(...args: T[]) => void} function to write with colors
75
145
  */
76
146
  const writeColored =
77
- (prefix, colorPrefix, colorSuffix) =>
147
+ (prefix, colorFn) =>
78
148
  (...args) => {
79
149
  if (currentCollapsed > 0) return;
80
150
  clearStatusMessage();
81
- const str = indent(
82
- util.format(...args),
83
- prefix,
84
- colorPrefix,
85
- colorSuffix
86
- );
151
+ const str = indent(util.format(...args), prefix, colorFn);
87
152
  stream.write(`${str}\n`);
88
153
  writeStatusMessage();
89
154
  };
90
155
 
91
156
  /** @type {<T extends unknown[]>(...args: T) => void} */
92
- const writeGroupMessage = writeColored(
93
- "<-> ",
94
- "\u001B[1m\u001B[36m",
95
- "\u001B[39m\u001B[22m"
96
- );
157
+ const writeGroupMessage = writeColored("<-> ", (str) => c.bold(c.cyan(str)));
97
158
 
98
159
  /** @type {<T extends unknown[]>(...args: T) => void} */
99
- const writeGroupCollapsedMessage = writeColored(
100
- "<+> ",
101
- "\u001B[1m\u001B[36m",
102
- "\u001B[39m\u001B[22m"
160
+ const writeGroupCollapsedMessage = writeColored("<+> ", (str) =>
161
+ c.bold(c.cyan(str))
103
162
  );
104
163
 
105
164
  return {
106
165
  /** @type {LoggerConsole["log"]} */
107
- log: writeColored(" ", "\u001B[1m", "\u001B[22m"),
166
+ log: writeColored(" ", c.bold),
108
167
  /** @type {LoggerConsole["debug"]} */
109
- debug: writeColored(" ", "", ""),
168
+ debug: writeColored(" ", String),
110
169
  /** @type {LoggerConsole["trace"]} */
111
- trace: writeColored(" ", "", ""),
170
+ trace: writeColored(" ", String),
112
171
  /** @type {LoggerConsole["info"]} */
113
- info: writeColored("<i> ", "\u001B[1m\u001B[32m", "\u001B[39m\u001B[22m"),
172
+ info: writeColored("<i> ", (str) => c.bold(c.green(str))),
114
173
  /** @type {LoggerConsole["warn"]} */
115
- warn: writeColored("<w> ", "\u001B[1m\u001B[33m", "\u001B[39m\u001B[22m"),
174
+ warn: writeColored("<w> ", (str) => c.bold(c.yellow(str))),
116
175
  /** @type {LoggerConsole["error"]} */
117
- error: writeColored("<e> ", "\u001B[1m\u001B[31m", "\u001B[39m\u001B[22m"),
176
+ error: writeColored("<e> ", (str) => c.bold(c.red(str))),
118
177
  /** @type {LoggerConsole["logTime"]} */
119
- logTime: writeColored(
120
- "<t> ",
121
- "\u001B[1m\u001B[35m",
122
- "\u001B[39m\u001B[22m"
123
- ),
178
+ logTime: writeColored("<t> ", (str) => c.bold(c.magenta(str))),
124
179
  /** @type {LoggerConsole["group"]} */
125
180
  group: (...args) => {
126
181
  writeGroupMessage(...args);
@@ -161,24 +216,21 @@ module.exports = ({ colors, appendOnly, stream }) => {
161
216
  ),
162
217
  /** @type {LoggerConsole["status"]} */
163
218
  status: appendOnly
164
- ? writeColored("<s> ", "", "")
219
+ ? writeColored("<s> ", String)
165
220
  : (name, ...args) => {
166
221
  args = args.filter(Boolean);
167
222
  if (name === undefined && args.length === 0) {
168
223
  clearStatusMessage();
169
- currentStatusMessage = undefined;
224
+ logStatusState.currentMessage = undefined;
170
225
  } else if (
171
226
  typeof name === "string" &&
172
227
  name.startsWith("[webpack.Progress] ")
173
228
  ) {
174
- currentStatusMessage = [name.slice(19), ...args];
175
- writeStatusMessage();
229
+ setStatusMessage([name.slice(19), ...args]);
176
230
  } else if (name === "[webpack.Progress]") {
177
- currentStatusMessage = [...args];
178
- writeStatusMessage();
231
+ setStatusMessage([...args]);
179
232
  } else {
180
- currentStatusMessage = [name, ...args];
181
- writeStatusMessage();
233
+ setStatusMessage([name, ...args]);
182
234
  }
183
235
  }
184
236
  };
@@ -11,6 +11,7 @@ const { STAGE_ADVANCED } = require("../OptimizationStages");
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
 
13
13
  /**
14
+ * Defines the aggressive merging plugin options type used by this module.
14
15
  * @typedef {object} AggressiveMergingPluginOptions
15
16
  * @property {number=} minSizeReduce minimal size reduction to trigger merging
16
17
  */
@@ -19,6 +20,7 @@ const PLUGIN_NAME = "AggressiveMergingPlugin";
19
20
 
20
21
  class AggressiveMergingPlugin {
21
22
  /**
23
+ * Creates an instance of AggressiveMergingPlugin.
22
24
  * @param {AggressiveMergingPluginOptions=} options options object
23
25
  */
24
26
  constructor(options) {
@@ -35,7 +37,7 @@ class AggressiveMergingPlugin {
35
37
  }
36
38
 
37
39
  /**
38
- * Apply the plugin
40
+ * Applies the plugin by registering its hooks on the compiler.
39
41
  * @param {Compiler} compiler the compiler instance
40
42
  * @returns {void}
41
43
  */
@@ -21,6 +21,7 @@ const identifierUtils = require("../util/identifier");
21
21
  /** @typedef {import("../Module")} Module */
22
22
 
23
23
  /**
24
+ * Move module between.
24
25
  * @param {ChunkGraph} chunkGraph the chunk graph
25
26
  * @param {Chunk} oldChunk the old chunk
26
27
  * @param {Chunk} newChunk the new chunk
@@ -32,6 +33,7 @@ const moveModuleBetween = (chunkGraph, oldChunk, newChunk) => (module) => {
32
33
  };
33
34
 
34
35
  /**
36
+ * Checks whether this object is not a entry module.
35
37
  * @param {ChunkGraph} chunkGraph the chunk graph
36
38
  * @param {Chunk} chunk the chunk
37
39
  * @returns {(module: Module) => boolean} filter for entry module
@@ -48,6 +50,7 @@ const PLUGIN_NAME = "AggressiveSplittingPlugin";
48
50
 
49
51
  class AggressiveSplittingPlugin {
50
52
  /**
53
+ * Creates an instance of AggressiveSplittingPlugin.
51
54
  * @param {AggressiveSplittingPluginOptions=} options options object
52
55
  */
53
56
  constructor(options = {}) {
@@ -56,6 +59,7 @@ class AggressiveSplittingPlugin {
56
59
  }
57
60
 
58
61
  /**
62
+ * Was chunk recorded.
59
63
  * @param {Chunk} chunk the chunk to test
60
64
  * @returns {boolean} true if the chunk was recorded
61
65
  */
@@ -64,7 +68,7 @@ class AggressiveSplittingPlugin {
64
68
  }
65
69
 
66
70
  /**
67
- * Apply the plugin
71
+ * Applies the plugin by registering its hooks on the compiler.
68
72
  * @param {Compiler} compiler the compiler instance
69
73
  * @returns {void}
70
74
  */
@@ -138,6 +142,7 @@ class AggressiveSplittingPlugin {
138
142
  const maxSize = this.options.maxSize || 50 * 1024;
139
143
 
140
144
  /**
145
+ * Returns true when applied, otherwise false.
141
146
  * @param {SplitData} splitData split data
142
147
  * @returns {boolean} true when applied, otherwise false
143
148
  */