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
@@ -8,7 +8,9 @@
8
8
  const { join, dirname } = require("./util/fs");
9
9
 
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
- /** @typedef {function(TODO): void} ModuleReplacer */
11
+ /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
12
+
13
+ /** @typedef {function(import("./NormalModuleFactory").ResolveData): void} ModuleReplacer */
12
14
 
13
15
  class NormalModuleReplacementPlugin {
14
16
  /**
@@ -43,11 +45,15 @@ class NormalModuleReplacementPlugin {
43
45
  });
44
46
  nmf.hooks.afterResolve.tap("NormalModuleReplacementPlugin", result => {
45
47
  const createData = result.createData;
46
- if (resourceRegExp.test(createData.resource)) {
48
+ if (
49
+ resourceRegExp.test(/** @type {string} */ (createData.resource))
50
+ ) {
47
51
  if (typeof newResource === "function") {
48
52
  newResource(result);
49
53
  } else {
50
- const fs = compiler.inputFileSystem;
54
+ const fs =
55
+ /** @type {InputFileSystem} */
56
+ (compiler.inputFileSystem);
51
57
  if (
52
58
  newResource.startsWith("/") ||
53
59
  (newResource.length > 1 && newResource[1] === ":")
@@ -56,7 +62,7 @@ class NormalModuleReplacementPlugin {
56
62
  } else {
57
63
  createData.resource = join(
58
64
  fs,
59
- dirname(fs, createData.resource),
65
+ dirname(fs, /** @type {string} */ (createData.resource)),
60
66
  newResource
61
67
  );
62
68
  }
@@ -13,7 +13,7 @@ const ModuleFactory = require("./ModuleFactory");
13
13
  class NullFactory extends ModuleFactory {
14
14
  /**
15
15
  * @param {ModuleFactoryCreateData} data data object
16
- * @param {function(Error=, ModuleFactoryResult=): void} callback callback
16
+ * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
17
17
  * @returns {void}
18
18
  */
19
19
  create(data, callback) {
@@ -5,6 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- exports.STAGE_BASIC = -10;
9
- exports.STAGE_DEFAULT = 0;
10
- exports.STAGE_ADVANCED = 10;
8
+ module.exports.STAGE_BASIC = -10;
9
+ module.exports.STAGE_DEFAULT = 0;
10
+ module.exports.STAGE_ADVANCED = 10;
package/lib/Parser.js CHANGED
@@ -11,7 +11,7 @@
11
11
  /** @typedef {Record<string, any>} PreparsedAst */
12
12
 
13
13
  /**
14
- * @typedef {Object} ParserStateBase
14
+ * @typedef {object} ParserStateBase
15
15
  * @property {string | Buffer} source
16
16
  * @property {NormalModule} current
17
17
  * @property {NormalModule} module
@@ -0,0 +1,39 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Authors Ivan Kopeykin @vankop
4
+ */
5
+
6
+ "use strict";
7
+
8
+ /** @typedef {import("./Compiler")} Compiler */
9
+ /** @typedef {import("./config/target").PlatformTargetProperties} PlatformTargetProperties */
10
+
11
+ /**
12
+ * Should be used only for "target === false" or
13
+ * when you want to overwrite platform target properties
14
+ */
15
+ class PlatformPlugin {
16
+ /**
17
+ * @param {Partial<PlatformTargetProperties>} platform target properties
18
+ */
19
+ constructor(platform) {
20
+ /** @type {Partial<PlatformTargetProperties>} */
21
+ this.platform = platform;
22
+ }
23
+
24
+ /**
25
+ * Apply the plugin
26
+ * @param {Compiler} compiler the compiler instance
27
+ * @returns {void}
28
+ */
29
+ apply(compiler) {
30
+ compiler.hooks.environment.tap("PlatformPlugin", () => {
31
+ compiler.platform = {
32
+ ...compiler.platform,
33
+ ...this.platform
34
+ };
35
+ });
36
+ }
37
+ }
38
+
39
+ module.exports = PlatformPlugin;
@@ -10,6 +10,10 @@ const PrefetchDependency = require("./dependencies/PrefetchDependency");
10
10
  /** @typedef {import("./Compiler")} Compiler */
11
11
 
12
12
  class PrefetchPlugin {
13
+ /**
14
+ * @param {string} context context or request if context is not set
15
+ * @param {string} [request] request
16
+ */
13
17
  constructor(context, request) {
14
18
  if (request) {
15
19
  this.context = context;
@@ -11,9 +11,20 @@ const NormalModule = require("./NormalModule");
11
11
  const createSchemaValidation = require("./util/create-schema-validation");
12
12
  const { contextify } = require("./util/identifier");
13
13
 
14
+ /** @typedef {import("tapable").Tap} Tap */
14
15
  /** @typedef {import("../declarations/plugins/ProgressPlugin").HandlerFunction} HandlerFunction */
15
16
  /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginArgument} ProgressPluginArgument */
16
17
  /** @typedef {import("../declarations/plugins/ProgressPlugin").ProgressPluginOptions} ProgressPluginOptions */
18
+ /** @typedef {import("./Dependency")} Dependency */
19
+ /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
20
+ /** @typedef {import("./Module")} Module */
21
+ /** @typedef {import("./logging/Logger").Logger} Logger */
22
+
23
+ /**
24
+ * @typedef {object} CountsData
25
+ * @property {number} modulesCount modules count
26
+ * @property {number} dependenciesCount dependencies count
27
+ */
17
28
 
18
29
  const validate = createSchemaValidation(
19
30
  require("../schemas/plugins/ProgressPlugin.check.js"),
@@ -23,14 +34,29 @@ const validate = createSchemaValidation(
23
34
  baseDataPath: "options"
24
35
  }
25
36
  );
26
- const median3 = (a, b, c) => {
27
- return a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
28
- };
29
37
 
38
+ /**
39
+ * @param {number} a a
40
+ * @param {number} b b
41
+ * @param {number} c c
42
+ * @returns {number} median
43
+ */
44
+ const median3 = (a, b, c) => a + b + c - Math.max(a, b, c) - Math.min(a, b, c);
45
+
46
+ /**
47
+ * @param {boolean | null | undefined} profile need profile
48
+ * @param {Logger} logger logger
49
+ * @returns {defaultHandler} default handler
50
+ */
30
51
  const createDefaultHandler = (profile, logger) => {
31
- /** @type {{ value: string, time: number }[]} */
52
+ /** @type {{ value: string | undefined, time: number }[]} */
32
53
  const lastStateInfo = [];
33
54
 
55
+ /**
56
+ * @param {number} percentage percentage
57
+ * @param {string} msg message
58
+ * @param {...string} args additional arguments
59
+ */
34
60
  const defaultHandler = (percentage, msg, ...args) => {
35
61
  if (profile) {
36
62
  if (percentage === 0) {
@@ -50,11 +76,12 @@ const createDefaultHandler = (profile, logger) => {
50
76
  if (lastStateItem.value) {
51
77
  let reportState = lastStateItem.value;
52
78
  if (i > 0) {
53
- reportState = lastStateInfo[i - 1].value + " > " + reportState;
79
+ reportState = `${lastStateInfo[i - 1].value} > ${reportState}`;
54
80
  }
55
81
  const stateMsg = `${" | ".repeat(i)}${diff} ms ${reportState}`;
56
82
  const d = diff;
57
83
  // This depends on timing so we ignore it for coverage
84
+ /* eslint-disable no-lone-blocks */
58
85
  /* istanbul ignore next */
59
86
  {
60
87
  if (d > 10000) {
@@ -69,6 +96,7 @@ const createDefaultHandler = (profile, logger) => {
69
96
  logger.debug(stateMsg);
70
97
  }
71
98
  }
99
+ /* eslint-enable no-lone-blocks */
72
100
  }
73
101
  if (stateItem === undefined) {
74
102
  lastStateInfo.length = i;
@@ -95,18 +123,18 @@ const createDefaultHandler = (profile, logger) => {
95
123
 
96
124
  /**
97
125
  * @callback ReportProgress
98
- * @param {number} p
99
- * @param {...string[]} [args]
126
+ * @param {number} p percentage
127
+ * @param {...string} args additional arguments
100
128
  * @returns {void}
101
129
  */
102
130
 
103
- /** @type {WeakMap<Compiler,ReportProgress>} */
131
+ /** @type {WeakMap<Compiler, ReportProgress | undefined>} */
104
132
  const progressReporters = new WeakMap();
105
133
 
106
134
  class ProgressPlugin {
107
135
  /**
108
136
  * @param {Compiler} compiler the current compiler
109
- * @returns {ReportProgress} a progress reporter, if any
137
+ * @returns {ReportProgress | undefined} a progress reporter, if any
110
138
  */
111
139
  static getReporter(compiler) {
112
140
  return progressReporters.get(compiler);
@@ -163,14 +191,14 @@ class ProgressPlugin {
163
191
  const states = compiler.compilers.map(
164
192
  () => /** @type {[number, ...string[]]} */ ([0])
165
193
  );
166
- compiler.compilers.forEach((compiler, idx) => {
194
+ for (const [idx, item] of compiler.compilers.entries()) {
167
195
  new ProgressPlugin((p, msg, ...args) => {
168
196
  states[idx] = [p, msg, ...args];
169
197
  let sum = 0;
170
198
  for (const [p] of states) sum += p;
171
199
  handler(sum / states.length, `[${idx}] ${msg}`, ...args);
172
- }).apply(compiler);
173
- });
200
+ }).apply(item);
201
+ }
174
202
  }
175
203
 
176
204
  /**
@@ -288,6 +316,9 @@ class ProgressPlugin {
288
316
  };
289
317
 
290
318
  // only used when showActiveModules is set
319
+ /**
320
+ * @param {Module} module the module
321
+ */
291
322
  const moduleBuild = module => {
292
323
  const ident = module.identifier();
293
324
  if (ident) {
@@ -297,11 +328,18 @@ class ProgressPlugin {
297
328
  }
298
329
  };
299
330
 
331
+ /**
332
+ * @param {Dependency} entry entry dependency
333
+ * @param {EntryOptions} options options object
334
+ */
300
335
  const entryAdd = (entry, options) => {
301
336
  entriesCount++;
302
337
  if (entriesCount < 5 || entriesCount % 10 === 0) updateThrottled();
303
338
  };
304
339
 
340
+ /**
341
+ * @param {Module} module the module
342
+ */
305
343
  const moduleDone = module => {
306
344
  doneModules++;
307
345
  if (showActiveModules) {
@@ -321,6 +359,10 @@ class ProgressPlugin {
321
359
  if (doneModules < 50 || doneModules % 100 === 0) updateThrottled();
322
360
  };
323
361
 
362
+ /**
363
+ * @param {Dependency} entry entry dependency
364
+ * @param {EntryOptions} options options object
365
+ */
324
366
  const entryDone = (entry, options) => {
325
367
  doneEntries++;
326
368
  update();
@@ -330,6 +372,7 @@ class ProgressPlugin {
330
372
  .getCache("ProgressPlugin")
331
373
  .getItemCache("counts", null);
332
374
 
375
+ /** @type {Promise<CountsData> | undefined} */
333
376
  let cacheGetPromise;
334
377
 
335
378
  compiler.hooks.beforeCompile.tap("ProgressPlugin", () => {
@@ -352,15 +395,17 @@ class ProgressPlugin {
352
395
 
353
396
  compiler.hooks.afterCompile.tapPromise("ProgressPlugin", compilation => {
354
397
  if (compilation.compiler.isChild()) return Promise.resolve();
355
- return cacheGetPromise.then(async oldData => {
356
- if (
357
- !oldData ||
358
- oldData.modulesCount !== modulesCount ||
359
- oldData.dependenciesCount !== dependenciesCount
360
- ) {
361
- await cache.storePromise({ modulesCount, dependenciesCount });
398
+ return /** @type {Promise<CountsData>} */ (cacheGetPromise).then(
399
+ async oldData => {
400
+ if (
401
+ !oldData ||
402
+ oldData.modulesCount !== modulesCount ||
403
+ oldData.dependenciesCount !== dependenciesCount
404
+ ) {
405
+ await cache.storePromise({ modulesCount, dependenciesCount });
406
+ }
362
407
  }
363
- });
408
+ );
364
409
  });
365
410
 
366
411
  compiler.hooks.compilation.tap("ProgressPlugin", compilation => {
@@ -462,10 +507,10 @@ class ProgressPlugin {
462
507
  afterSeal: "after seal"
463
508
  };
464
509
  const numberOfHooks = Object.keys(hooks).length;
465
- Object.keys(hooks).forEach((name, idx) => {
466
- const title = hooks[name];
510
+ for (const [idx, name] of Object.keys(hooks).entries()) {
511
+ const title = hooks[/** @type {keyof typeof hooks} */ (name)];
467
512
  const percentage = (idx / numberOfHooks) * 0.25 + 0.7;
468
- compilation.hooks[name].intercept({
513
+ compilation.hooks[/** @type {keyof typeof hooks} */ (name)].intercept({
469
514
  name: "ProgressPlugin",
470
515
  call() {
471
516
  handler(percentage, "sealing", title);
@@ -489,7 +534,7 @@ class ProgressPlugin {
489
534
  handler(percentage, "sealing", title, tap.name);
490
535
  }
491
536
  });
492
- });
537
+ }
493
538
  });
494
539
  compiler.hooks.make.intercept({
495
540
  name: "ProgressPlugin",
@@ -500,6 +545,12 @@ class ProgressPlugin {
500
545
  handler(0.65, "building");
501
546
  }
502
547
  });
548
+ /**
549
+ * @param {TODO} hook hook
550
+ * @param {number} progress progress from 0 to 1
551
+ * @param {string} category category
552
+ * @param {string} name name
553
+ */
503
554
  const interceptHook = (hook, progress, category, name) => {
504
555
  hook.intercept({
505
556
  name: "ProgressPlugin",
@@ -516,6 +567,9 @@ class ProgressPlugin {
516
567
  error() {
517
568
  handler(progress, category, name);
518
569
  },
570
+ /**
571
+ * @param {Tap} tap tap
572
+ */
519
573
  tap(tap) {
520
574
  progressReporters.set(compiler, (p, ...args) => {
521
575
  handler(progress, category, name, tap.name, ...args);
@@ -531,15 +585,14 @@ class ProgressPlugin {
531
585
  }
532
586
  });
533
587
  interceptHook(compiler.cache.hooks.endIdle, 0.01, "cache", "end idle");
534
- compiler.hooks.initialize.intercept({
588
+ compiler.hooks.beforeRun.intercept({
535
589
  name: "ProgressPlugin",
536
590
  call() {
537
591
  handler(0, "");
538
592
  }
539
593
  });
540
- interceptHook(compiler.hooks.initialize, 0.01, "setup", "initialize");
541
- interceptHook(compiler.hooks.beforeRun, 0.02, "setup", "before run");
542
- interceptHook(compiler.hooks.run, 0.03, "setup", "run");
594
+ interceptHook(compiler.hooks.beforeRun, 0.01, "setup", "before run");
595
+ interceptHook(compiler.hooks.run, 0.02, "setup", "run");
543
596
  interceptHook(compiler.hooks.watchRun, 0.03, "setup", "watch run");
544
597
  interceptHook(
545
598
  compiler.hooks.normalModuleFactory,
@@ -611,4 +664,6 @@ ProgressPlugin.defaultOptions = {
611
664
  entries: true
612
665
  };
613
666
 
667
+ ProgressPlugin.createDefaultHandler = createDefaultHandler;
668
+
614
669
  module.exports = ProgressPlugin;
@@ -5,11 +5,22 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const {
9
+ JAVASCRIPT_MODULE_TYPE_AUTO,
10
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
11
+ JAVASCRIPT_MODULE_TYPE_ESM
12
+ } = require("./ModuleTypeConstants");
8
13
  const ConstDependency = require("./dependencies/ConstDependency");
9
14
  const ProvidedDependency = require("./dependencies/ProvidedDependency");
10
15
  const { approve } = require("./javascript/JavascriptParserHelpers");
11
16
 
17
+ /** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
12
18
  /** @typedef {import("./Compiler")} Compiler */
19
+ /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
20
+ /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
21
+ /** @typedef {import("./javascript/JavascriptParser").Range} Range */
22
+
23
+ const PLUGIN_NAME = "ProvidePlugin";
13
24
 
14
25
  class ProvidePlugin {
15
26
  /**
@@ -27,7 +38,7 @@ class ProvidePlugin {
27
38
  apply(compiler) {
28
39
  const definitions = this.definitions;
29
40
  compiler.hooks.compilation.tap(
30
- "ProvidePlugin",
41
+ PLUGIN_NAME,
31
42
  (compilation, { normalModuleFactory }) => {
32
43
  compilation.dependencyTemplates.set(
33
44
  ConstDependency,
@@ -41,18 +52,25 @@ class ProvidePlugin {
41
52
  ProvidedDependency,
42
53
  new ProvidedDependency.Template()
43
54
  );
55
+ /**
56
+ * @param {JavascriptParser} parser the parser
57
+ * @param {JavascriptParserOptions} parserOptions options
58
+ * @returns {void}
59
+ */
44
60
  const handler = (parser, parserOptions) => {
45
- Object.keys(definitions).forEach(name => {
46
- const request = [].concat(definitions[name]);
61
+ for (const name of Object.keys(definitions)) {
62
+ const request =
63
+ /** @type {string[]} */
64
+ ([]).concat(definitions[name]);
47
65
  const splittedName = name.split(".");
48
66
  if (splittedName.length > 0) {
49
- splittedName.slice(1).forEach((_, i) => {
67
+ for (const [i, _] of splittedName.slice(1).entries()) {
50
68
  const name = splittedName.slice(0, i + 1).join(".");
51
- parser.hooks.canRename.for(name).tap("ProvidePlugin", approve);
52
- });
69
+ parser.hooks.canRename.for(name).tap(PLUGIN_NAME, approve);
70
+ }
53
71
  }
54
72
 
55
- parser.hooks.expression.for(name).tap("ProvidePlugin", expr => {
73
+ parser.hooks.expression.for(name).tap(PLUGIN_NAME, expr => {
56
74
  const nameIdentifier = name.includes(".")
57
75
  ? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
58
76
  : name;
@@ -60,14 +78,14 @@ class ProvidePlugin {
60
78
  request[0],
61
79
  nameIdentifier,
62
80
  request.slice(1),
63
- expr.range
81
+ /** @type {Range} */ (expr.range)
64
82
  );
65
- dep.loc = expr.loc;
83
+ dep.loc = /** @type {DependencyLocation} */ (expr.loc);
66
84
  parser.state.module.addDependency(dep);
67
85
  return true;
68
86
  });
69
87
 
70
- parser.hooks.call.for(name).tap("ProvidePlugin", expr => {
88
+ parser.hooks.call.for(name).tap(PLUGIN_NAME, expr => {
71
89
  const nameIdentifier = name.includes(".")
72
90
  ? `__webpack_provided_${name.replace(/\./g, "_dot_")}`
73
91
  : name;
@@ -75,24 +93,24 @@ class ProvidePlugin {
75
93
  request[0],
76
94
  nameIdentifier,
77
95
  request.slice(1),
78
- expr.callee.range
96
+ /** @type {Range} */ (expr.callee.range)
79
97
  );
80
- dep.loc = expr.callee.loc;
98
+ dep.loc = /** @type {DependencyLocation} */ (expr.callee.loc);
81
99
  parser.state.module.addDependency(dep);
82
100
  parser.walkExpressions(expr.arguments);
83
101
  return true;
84
102
  });
85
- });
103
+ }
86
104
  };
87
105
  normalModuleFactory.hooks.parser
88
- .for("javascript/auto")
89
- .tap("ProvidePlugin", handler);
106
+ .for(JAVASCRIPT_MODULE_TYPE_AUTO)
107
+ .tap(PLUGIN_NAME, handler);
90
108
  normalModuleFactory.hooks.parser
91
- .for("javascript/dynamic")
92
- .tap("ProvidePlugin", handler);
109
+ .for(JAVASCRIPT_MODULE_TYPE_DYNAMIC)
110
+ .tap(PLUGIN_NAME, handler);
93
111
  normalModuleFactory.hooks.parser
94
- .for("javascript/esm")
95
- .tap("ProvidePlugin", handler);
112
+ .for(JAVASCRIPT_MODULE_TYPE_ESM)
113
+ .tap(PLUGIN_NAME, handler);
96
114
  }
97
115
  );
98
116
  }
package/lib/RawModule.js CHANGED
@@ -7,6 +7,7 @@
7
7
 
8
8
  const { OriginalSource, RawSource } = require("webpack-sources");
9
9
  const Module = require("./Module");
10
+ const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
10
11
  const makeSerializable = require("./util/makeSerializable");
11
12
 
12
13
  /** @typedef {import("webpack-sources").Source} Source */
@@ -18,10 +19,14 @@ const makeSerializable = require("./util/makeSerializable");
18
19
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
19
20
  /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
20
21
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
22
+ /** @typedef {import("./Module").ReadOnlyRuntimeRequirements} ReadOnlyRuntimeRequirements */
23
+ /** @typedef {import("./Module").SourceTypes} SourceTypes */
21
24
  /** @typedef {import("./RequestShortener")} RequestShortener */
22
25
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
23
26
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
24
27
  /** @typedef {import("./WebpackError")} WebpackError */
28
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
29
+ /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
25
30
  /** @typedef {import("./util/Hash")} Hash */
26
31
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
27
32
 
@@ -32,10 +37,10 @@ class RawModule extends Module {
32
37
  * @param {string} source source code
33
38
  * @param {string} identifier unique identifier
34
39
  * @param {string=} readableIdentifier readable identifier
35
- * @param {ReadonlySet<string>=} runtimeRequirements runtime requirements needed for the source code
40
+ * @param {ReadOnlyRuntimeRequirements=} runtimeRequirements runtime requirements needed for the source code
36
41
  */
37
42
  constructor(source, identifier, readableIdentifier, runtimeRequirements) {
38
- super("javascript/dynamic", null);
43
+ super(JAVASCRIPT_MODULE_TYPE_DYNAMIC, null);
39
44
  this.sourceStr = source;
40
45
  this.identifierStr = identifier || this.sourceStr;
41
46
  this.readableIdentifierStr = readableIdentifier || this.identifierStr;
@@ -43,7 +48,7 @@ class RawModule extends Module {
43
48
  }
44
49
 
45
50
  /**
46
- * @returns {Set<string>} types available (do not mutate)
51
+ * @returns {SourceTypes} types available (do not mutate)
47
52
  */
48
53
  getSourceTypes() {
49
54
  return TYPES;
@@ -69,12 +74,14 @@ class RawModule extends Module {
69
74
  * @returns {string} a user readable identifier of the module
70
75
  */
71
76
  readableIdentifier(requestShortener) {
72
- return requestShortener.shorten(this.readableIdentifierStr);
77
+ return /** @type {string} */ (
78
+ requestShortener.shorten(this.readableIdentifierStr)
79
+ );
73
80
  }
74
81
 
75
82
  /**
76
83
  * @param {NeedBuildContext} context context info
77
- * @param {function(WebpackError=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
84
+ * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
78
85
  * @returns {void}
79
86
  */
80
87
  needBuild(context, callback) {
@@ -124,6 +131,9 @@ class RawModule extends Module {
124
131
  super.updateHash(hash, context);
125
132
  }
126
133
 
134
+ /**
135
+ * @param {ObjectSerializerContext} context context
136
+ */
127
137
  serialize(context) {
128
138
  const { write } = context;
129
139
 
@@ -135,6 +145,9 @@ class RawModule extends Module {
135
145
  super.serialize(context);
136
146
  }
137
147
 
148
+ /**
149
+ * @param {ObjectDeserializerContext} context context
150
+ */
138
151
  deserialize(context) {
139
152
  const { read } = context;
140
153
 
@@ -13,28 +13,28 @@ const identifierUtils = require("./util/identifier");
13
13
  /** @typedef {import("./Module")} Module */
14
14
 
15
15
  /**
16
- * @typedef {Object} RecordsChunks
16
+ * @typedef {object} RecordsChunks
17
17
  * @property {Record<string, number>=} byName
18
18
  * @property {Record<string, number>=} bySource
19
19
  * @property {number[]=} usedIds
20
20
  */
21
21
 
22
22
  /**
23
- * @typedef {Object} RecordsModules
23
+ * @typedef {object} RecordsModules
24
24
  * @property {Record<string, number>=} byIdentifier
25
25
  * @property {Record<string, number>=} bySource
26
26
  * @property {number[]=} usedIds
27
27
  */
28
28
 
29
29
  /**
30
- * @typedef {Object} Records
30
+ * @typedef {object} Records
31
31
  * @property {RecordsChunks=} chunks
32
32
  * @property {RecordsModules=} modules
33
33
  */
34
34
 
35
35
  class RecordIdsPlugin {
36
36
  /**
37
- * @param {Object} options Options object
37
+ * @param {object} options Options object
38
38
  * @param {boolean=} options.portableIds true, when ids need to be portable
39
39
  */
40
40
  constructor(options) {
@@ -69,7 +69,7 @@ class RecordIdsPlugin {
69
69
  compilation.hooks.recordModules.tap(
70
70
  "RecordIdsPlugin",
71
71
  /**
72
- * @param {Module[]} modules the modules array
72
+ * @param {Iterable<Module>} modules the modules array
73
73
  * @param {Records} records the records object
74
74
  * @returns {void}
75
75
  */
@@ -92,7 +92,7 @@ class RecordIdsPlugin {
92
92
  compilation.hooks.reviveModules.tap(
93
93
  "RecordIdsPlugin",
94
94
  /**
95
- * @param {Module[]} modules the modules array
95
+ * @param {Iterable<Module>} modules the modules array
96
96
  * @param {Records} records the records object
97
97
  * @returns {void}
98
98
  */
@@ -166,7 +166,7 @@ class RecordIdsPlugin {
166
166
  compilation.hooks.recordChunks.tap(
167
167
  "RecordIdsPlugin",
168
168
  /**
169
- * @param {Chunk[]} chunks the chunks array
169
+ * @param {Iterable<Chunk>} chunks the chunks array
170
170
  * @param {Records} records the records object
171
171
  * @returns {void}
172
172
  */
@@ -192,7 +192,7 @@ class RecordIdsPlugin {
192
192
  compilation.hooks.reviveChunks.tap(
193
193
  "RecordIdsPlugin",
194
194
  /**
195
- * @param {Chunk[]} chunks the chunks array
195
+ * @param {Iterable<Chunk>} chunks the chunks array
196
196
  * @param {Records} records the records object
197
197
  * @returns {void}
198
198
  */