webpack 5.76.1 → 5.88.2

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.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (442) hide show
  1. package/README.md +10 -4
  2. package/bin/webpack.js +26 -2
  3. package/hot/dev-server.js +2 -1
  4. package/hot/lazy-compilation-node.js +10 -0
  5. package/hot/lazy-compilation-web.js +9 -0
  6. package/hot/log-apply-result.js +5 -0
  7. package/hot/log.js +22 -0
  8. package/hot/only-dev-server.js +2 -1
  9. package/hot/poll.js +3 -0
  10. package/hot/signal.js +4 -0
  11. package/lib/APIPlugin.js +174 -116
  12. package/lib/AsyncDependenciesBlock.js +13 -5
  13. package/lib/AutomaticPrefetchPlugin.js +1 -0
  14. package/lib/BannerPlugin.js +6 -1
  15. package/lib/CacheFacade.js +4 -0
  16. package/lib/CaseSensitiveModulesWarning.js +3 -1
  17. package/lib/Chunk.js +36 -18
  18. package/lib/ChunkGraph.js +4 -4
  19. package/lib/ChunkGroup.js +25 -10
  20. package/lib/CleanPlugin.js +30 -7
  21. package/lib/CodeGenerationResults.js +2 -2
  22. package/lib/CompatibilityPlugin.js +85 -46
  23. package/lib/Compilation.js +17 -8
  24. package/lib/Compiler.js +18 -14
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +95 -47
  28. package/lib/ContextModule.js +20 -6
  29. package/lib/ContextModuleFactory.js +2 -1
  30. package/lib/ContextReplacementPlugin.js +13 -0
  31. package/lib/CssModule.js +169 -0
  32. package/lib/DefinePlugin.js +152 -86
  33. package/lib/DelegatedModule.js +22 -4
  34. package/lib/DelegatedModuleFactoryPlugin.js +6 -0
  35. package/lib/DependenciesBlock.js +17 -1
  36. package/lib/Dependency.js +19 -5
  37. package/lib/DependencyTemplates.js +1 -1
  38. package/lib/DllEntryPlugin.js +16 -1
  39. package/lib/DllModule.js +17 -2
  40. package/lib/DllModuleFactory.js +1 -1
  41. package/lib/DllReferencePlugin.js +13 -1
  42. package/lib/Entrypoint.js +1 -1
  43. package/lib/ErrorHelpers.js +62 -22
  44. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  45. package/lib/ExportsInfo.js +25 -4
  46. package/lib/ExportsInfoApiPlugin.js +30 -14
  47. package/lib/ExternalModule.js +30 -9
  48. package/lib/FileSystemInfo.js +61 -25
  49. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  50. package/lib/FlagDependencyExportsPlugin.js +336 -348
  51. package/lib/FlagDependencyUsagePlugin.js +9 -9
  52. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  53. package/lib/Generator.js +7 -0
  54. package/lib/HookWebpackError.js +1 -1
  55. package/lib/HotModuleReplacementPlugin.js +60 -46
  56. package/lib/IgnoreErrorModuleFactory.js +1 -1
  57. package/lib/InitFragment.js +28 -5
  58. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  59. package/lib/LibManifestPlugin.js +22 -5
  60. package/lib/LoaderOptionsPlugin.js +12 -2
  61. package/lib/MainTemplate.js +2 -2
  62. package/lib/Module.js +44 -12
  63. package/lib/ModuleBuildError.js +9 -0
  64. package/lib/ModuleDependencyError.js +4 -2
  65. package/lib/ModuleDependencyWarning.js +4 -2
  66. package/lib/ModuleError.js +9 -0
  67. package/lib/ModuleFactory.js +1 -1
  68. package/lib/ModuleFilenameHelpers.js +114 -4
  69. package/lib/ModuleGraph.js +33 -23
  70. package/lib/ModuleGraphConnection.js +19 -6
  71. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  72. package/lib/ModuleNotFoundError.js +5 -2
  73. package/lib/ModuleParseError.js +9 -0
  74. package/lib/ModuleProfile.js +1 -0
  75. package/lib/ModuleRestoreError.js +2 -0
  76. package/lib/ModuleStoreError.js +2 -1
  77. package/lib/ModuleTypeConstants.js +169 -0
  78. package/lib/ModuleWarning.js +9 -0
  79. package/lib/MultiWatching.js +4 -0
  80. package/lib/NodeStuffPlugin.js +65 -35
  81. package/lib/NormalModule.js +12 -2
  82. package/lib/NormalModuleFactory.js +56 -8
  83. package/lib/NormalModuleReplacementPlugin.js +5 -3
  84. package/lib/NullFactory.js +1 -1
  85. package/lib/PrefetchPlugin.js +4 -0
  86. package/lib/ProgressPlugin.js +71 -15
  87. package/lib/ProvidePlugin.js +30 -14
  88. package/lib/RawModule.js +13 -2
  89. package/lib/RecordIdsPlugin.js +4 -4
  90. package/lib/RequireJsStuffPlugin.js +22 -15
  91. package/lib/RuntimeGlobals.js +5 -0
  92. package/lib/RuntimeModule.js +12 -11
  93. package/lib/RuntimePlugin.js +10 -3
  94. package/lib/RuntimeTemplate.js +29 -11
  95. package/lib/SelfModuleFactory.js +12 -0
  96. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  97. package/lib/SourceMapDevToolPlugin.js +47 -11
  98. package/lib/Template.js +5 -3
  99. package/lib/UseStrictPlugin.js +29 -11
  100. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  101. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  102. package/lib/WatchIgnorePlugin.js +4 -0
  103. package/lib/Watching.js +62 -25
  104. package/lib/WebpackError.js +14 -5
  105. package/lib/WebpackIsIncludedPlugin.js +22 -13
  106. package/lib/WebpackOptionsApply.js +41 -44
  107. package/lib/WebpackOptionsDefaulter.js +10 -3
  108. package/lib/asset/AssetGenerator.js +24 -9
  109. package/lib/asset/AssetModulesPlugin.js +28 -12
  110. package/lib/asset/AssetParser.js +15 -7
  111. package/lib/asset/AssetSourceParser.js +8 -3
  112. package/lib/asset/RawDataUrlModule.js +15 -4
  113. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  114. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  115. package/lib/buildChunkGraph.js +37 -21
  116. package/lib/cache/IdleFileCachePlugin.js +2 -1
  117. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  118. package/lib/cache/PackFileCacheStrategy.js +59 -22
  119. package/lib/cache/ResolverCachePlugin.js +3 -0
  120. package/lib/config/browserslistTargetHandler.js +10 -10
  121. package/lib/config/defaults.js +306 -105
  122. package/lib/config/normalization.js +110 -71
  123. package/lib/config/target.js +37 -10
  124. package/lib/container/ContainerEntryModule.js +11 -1
  125. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  126. package/lib/container/ContainerExposedDependency.js +9 -0
  127. package/lib/container/ContainerPlugin.js +3 -1
  128. package/lib/container/FallbackDependency.js +13 -0
  129. package/lib/container/FallbackItemDependency.js +3 -0
  130. package/lib/container/FallbackModule.js +12 -2
  131. package/lib/container/FallbackModuleFactory.js +1 -1
  132. package/lib/container/RemoteModule.js +11 -1
  133. package/lib/container/RemoteRuntimeModule.js +3 -2
  134. package/lib/container/RemoteToExternalDependency.js +3 -0
  135. package/lib/css/CssExportsGenerator.js +9 -0
  136. package/lib/css/CssGenerator.js +5 -1
  137. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  138. package/lib/css/CssModulesPlugin.js +253 -74
  139. package/lib/css/CssParser.js +697 -282
  140. package/lib/css/walkCssTokens.js +269 -138
  141. package/lib/debug/ProfilingPlugin.js +33 -12
  142. package/lib/dependencies/AMDDefineDependency.js +54 -10
  143. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  144. package/lib/dependencies/AMDPlugin.js +33 -20
  145. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  146. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  147. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  148. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  149. package/lib/dependencies/AMDRequireDependency.js +16 -1
  150. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  151. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  152. package/lib/dependencies/CachedConstDependency.js +14 -0
  153. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  154. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  155. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  156. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  157. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  158. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  159. package/lib/dependencies/CommonJsPlugin.js +51 -26
  160. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  161. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  162. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  163. package/lib/dependencies/ConstDependency.js +11 -2
  164. package/lib/dependencies/ContextDependency.js +15 -2
  165. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  166. package/lib/dependencies/ContextElementDependency.js +8 -0
  167. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  168. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  169. package/lib/dependencies/CssExportDependency.js +8 -0
  170. package/lib/dependencies/CssImportDependency.js +55 -3
  171. package/lib/dependencies/CssLocalIdentifierDependency.js +18 -1
  172. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  173. package/lib/dependencies/CssUrlDependency.js +46 -16
  174. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  175. package/lib/dependencies/DllEntryDependency.js +14 -0
  176. package/lib/dependencies/DynamicExports.js +10 -6
  177. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  178. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  179. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  180. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  181. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  182. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  183. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  184. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  185. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  186. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  187. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  188. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  189. package/lib/dependencies/HarmonyExports.js +11 -5
  190. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  191. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  192. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  193. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  194. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  195. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  196. package/lib/dependencies/ImportContextDependency.js +15 -0
  197. package/lib/dependencies/ImportDependency.js +15 -4
  198. package/lib/dependencies/ImportEagerDependency.js +7 -4
  199. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  200. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  201. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  202. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  203. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  204. package/lib/dependencies/ImportParserPlugin.js +83 -25
  205. package/lib/dependencies/ImportPlugin.js +21 -7
  206. package/lib/dependencies/ImportWeakDependency.js +7 -4
  207. package/lib/dependencies/JsonExportsDependency.js +9 -1
  208. package/lib/dependencies/LocalModule.js +16 -0
  209. package/lib/dependencies/LocalModuleDependency.js +15 -0
  210. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  211. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  212. package/lib/dependencies/ModuleDependency.js +9 -1
  213. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  214. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  215. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  216. package/lib/dependencies/PrefetchDependency.js +3 -0
  217. package/lib/dependencies/ProvidedDependency.js +14 -2
  218. package/lib/dependencies/PureExpressionDependency.js +10 -1
  219. package/lib/dependencies/RequireContextDependency.js +6 -0
  220. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  221. package/lib/dependencies/RequireContextPlugin.js +19 -6
  222. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  223. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  224. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  225. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  226. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  227. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  228. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  229. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  230. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  231. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  232. package/lib/dependencies/RequireResolveDependency.js +6 -0
  233. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  234. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  235. package/lib/dependencies/StaticExportsDependency.js +8 -0
  236. package/lib/dependencies/SystemPlugin.js +48 -21
  237. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  238. package/lib/dependencies/URLDependency.js +13 -4
  239. package/lib/dependencies/URLPlugin.js +31 -18
  240. package/lib/dependencies/UnsupportedDependency.js +13 -0
  241. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  242. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  243. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  244. package/lib/dependencies/WorkerDependency.js +47 -3
  245. package/lib/dependencies/WorkerPlugin.js +105 -32
  246. package/lib/dependencies/getFunctionExpression.js +7 -0
  247. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  248. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  249. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  250. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  251. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  252. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  253. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  254. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  255. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  256. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  257. package/lib/ids/IdHelpers.js +6 -0
  258. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  259. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  260. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  261. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  262. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  263. package/lib/index.js +8 -0
  264. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  265. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  266. package/lib/javascript/ChunkHelpers.js +2 -2
  267. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  268. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  269. package/lib/javascript/JavascriptModulesPlugin.js +217 -198
  270. package/lib/javascript/JavascriptParser.js +941 -256
  271. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  272. package/lib/javascript/StartupHelpers.js +2 -2
  273. package/lib/json/JsonData.js +26 -1
  274. package/lib/json/JsonGenerator.js +21 -7
  275. package/lib/json/JsonModulesPlugin.js +14 -5
  276. package/lib/json/JsonParser.js +27 -13
  277. package/lib/library/AbstractLibraryPlugin.js +4 -0
  278. package/lib/library/AmdLibraryPlugin.js +22 -6
  279. package/lib/library/AssignLibraryPlugin.js +19 -5
  280. package/lib/library/EnableLibraryPlugin.js +4 -0
  281. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  282. package/lib/library/ModuleLibraryPlugin.js +8 -4
  283. package/lib/library/SystemLibraryPlugin.js +2 -1
  284. package/lib/library/UmdLibraryPlugin.js +24 -2
  285. package/lib/logging/runtime.js +1 -1
  286. package/lib/logging/truncateArgs.js +4 -0
  287. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  288. package/lib/node/NodeTargetPlugin.js +3 -0
  289. package/lib/node/NodeTemplatePlugin.js +10 -2
  290. package/lib/node/NodeWatchFileSystem.js +1 -1
  291. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  292. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  293. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  294. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  295. package/lib/node/nodeConsole.js +2 -4
  296. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  297. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  298. package/lib/optimize/ConcatenatedModule.js +8 -6
  299. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  300. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  301. package/lib/optimize/InnerGraph.js +5 -5
  302. package/lib/optimize/InnerGraphPlugin.js +57 -48
  303. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  304. package/lib/optimize/MangleExportsPlugin.js +1 -1
  305. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  306. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  307. package/lib/optimize/RealContentHashPlugin.js +86 -30
  308. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  309. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  310. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  311. package/lib/optimize/SplitChunksPlugin.js +71 -31
  312. package/lib/performance/SizeLimitsPlugin.js +7 -4
  313. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  314. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  315. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  316. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  317. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  318. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  319. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  320. package/lib/rules/RuleSetCompiler.js +3 -3
  321. package/lib/rules/UseEffectRulePlugin.js +6 -4
  322. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  323. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  324. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  325. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  326. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  327. package/lib/runtime/CompatRuntimeModule.js +7 -2
  328. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  329. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  330. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  331. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  332. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  333. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  334. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  335. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  336. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  337. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  338. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  339. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  340. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  341. package/lib/runtime/NonceRuntimeModule.js +1 -1
  342. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  343. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  344. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  345. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  346. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  347. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  348. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  349. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  350. package/lib/schemes/DataUriPlugin.js +16 -3
  351. package/lib/schemes/HttpUriPlugin.js +38 -0
  352. package/lib/serialization/ArraySerializer.js +22 -6
  353. package/lib/serialization/BinaryMiddleware.js +164 -1
  354. package/lib/serialization/DateObjectSerializer.js +15 -4
  355. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  356. package/lib/serialization/FileMiddleware.js +17 -0
  357. package/lib/serialization/MapObjectSerializer.js +24 -8
  358. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  359. package/lib/serialization/ObjectMiddleware.js +33 -2
  360. package/lib/serialization/PlainObjectSerializer.js +23 -12
  361. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  362. package/lib/serialization/SetObjectSerializer.js +21 -6
  363. package/lib/serialization/types.js +1 -1
  364. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  365. package/lib/sharing/ConsumeSharedModule.js +13 -2
  366. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  367. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  368. package/lib/sharing/ProvideSharedDependency.js +17 -0
  369. package/lib/sharing/ProvideSharedModule.js +11 -1
  370. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  371. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  372. package/lib/sharing/ShareRuntimeModule.js +19 -9
  373. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  374. package/lib/sharing/utils.js +320 -7
  375. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  376. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  377. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  378. package/lib/util/AsyncQueue.js +4 -2
  379. package/lib/util/LazySet.js +10 -2
  380. package/lib/util/MapHelpers.js +19 -5
  381. package/lib/util/ParallelismFactorCalculator.js +10 -0
  382. package/lib/util/Semaphore.js +1 -1
  383. package/lib/util/StackedCacheMap.js +7 -1
  384. package/lib/util/StringXor.js +51 -0
  385. package/lib/util/URLAbsoluteSpecifier.js +1 -1
  386. package/lib/util/binarySearchBounds.js +49 -0
  387. package/lib/util/compileBooleanMatcher.js +31 -0
  388. package/lib/util/createHash.js +35 -13
  389. package/lib/util/deprecation.js +18 -3
  390. package/lib/util/deterministicGrouping.js +50 -11
  391. package/lib/util/findGraphRoots.js +4 -2
  392. package/lib/util/hash/md4.js +2 -2
  393. package/lib/util/hash/xxhash64.js +1 -1
  394. package/lib/util/identifier.js +4 -0
  395. package/lib/util/internalSerializables.js +1 -0
  396. package/lib/util/makeSerializable.js +7 -0
  397. package/lib/util/memoize.js +3 -3
  398. package/lib/util/numberHash.js +75 -21
  399. package/lib/util/processAsyncTree.js +7 -1
  400. package/lib/util/propertyAccess.js +9 -54
  401. package/lib/util/propertyName.js +79 -0
  402. package/lib/util/registerExternalSerializer.js +1 -1
  403. package/lib/util/runtime.js +84 -21
  404. package/lib/util/semver.js +2 -1
  405. package/lib/util/serialization.js +10 -0
  406. package/lib/util/smartGrouping.js +1 -1
  407. package/lib/validateSchema.js +6 -2
  408. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  409. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  410. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  411. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  412. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  413. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  414. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  415. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  416. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  417. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  418. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  419. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  420. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  421. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  422. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  423. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  424. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  425. package/lib/webpack.js +12 -3
  426. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  427. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  428. package/module.d.ts +55 -37
  429. package/package.json +59 -56
  430. package/schemas/WebpackOptions.check.js +1 -1
  431. package/schemas/WebpackOptions.json +133 -6
  432. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  433. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  434. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  435. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  436. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  437. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  438. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  439. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  440. package/schemas/plugins/css/CssParserOptions.json +1 -1
  441. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  442. package/types.d.ts +1629 -683
@@ -59,7 +59,7 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
59
59
  );
60
60
  }
61
61
  return {
62
- name: /** @type {string=} */ (name)
62
+ name: /** @type {string} */ (name)
63
63
  };
64
64
  }
65
65
 
@@ -106,6 +106,7 @@ class SystemLibraryPlugin extends AbstractLibraryPlugin {
106
106
  .join("\n");
107
107
 
108
108
  // Define __esModule flag on all internal variables and helpers
109
+ /** @type {string[]} */
109
110
  const externalVarInitialization = [];
110
111
 
111
112
  // The system.register format requires an array of setter functions for externals.
@@ -148,6 +148,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
148
148
  requiredExternals = externals;
149
149
  }
150
150
 
151
+ /**
152
+ * @param {string} str the string to replace
153
+ * @returns {string} the replaced keys
154
+ */
151
155
  const replaceKeys = str => {
152
156
  return compilation.getPath(str, {
153
157
  chunk
@@ -178,6 +182,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
178
182
  );
179
183
  };
180
184
 
185
+ /**
186
+ * @param {string} type the type
187
+ * @returns {string} external require array
188
+ */
181
189
  const externalsRequireArray = type => {
182
190
  return replaceKeys(
183
191
  externals
@@ -185,7 +193,9 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
185
193
  let expr;
186
194
  let request = m.request;
187
195
  if (typeof request === "object") {
188
- request = request[type];
196
+ request =
197
+ /** @type {Record<string, string | string[]>} */
198
+ (request)[type];
189
199
  }
190
200
  if (request === undefined) {
191
201
  throw new Error(
@@ -208,6 +218,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
208
218
  );
209
219
  };
210
220
 
221
+ /**
222
+ * @param {ExternalModule[]} modules external modules
223
+ * @returns {string} arguments
224
+ */
211
225
  const externalsArguments = modules => {
212
226
  return modules
213
227
  .map(
@@ -242,6 +256,10 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
242
256
 
243
257
  const { auxiliaryComment, namedDefine, names } = options;
244
258
 
259
+ /**
260
+ * @param {keyof LibraryCustomUmdCommentObject} type type
261
+ * @returns {string} comment
262
+ */
245
263
  const getAuxiliaryComment = type => {
246
264
  if (auxiliaryComment) {
247
265
  if (typeof auxiliaryComment === "string")
@@ -295,7 +313,11 @@ class UmdLibraryPlugin extends AbstractLibraryPlugin {
295
313
  " else\n" +
296
314
  " " +
297
315
  replaceKeys(
298
- accessorAccess("root", names.root || names.commonjs)
316
+ accessorAccess(
317
+ "root",
318
+ /** @type {string | string[]} */ (names.root) ||
319
+ /** @type {string} */ (names.commonjs)
320
+ )
299
321
  ) +
300
322
  " = factory(" +
301
323
  externalsRootArray(externals) +
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const SyncBailHook = require("tapable/lib/SyncBailHook");
8
+ const { SyncBailHook } = require("tapable");
9
9
  const { Logger } = require("./Logger");
10
10
  const createConsoleLogger = require("./createConsoleLogger");
11
11
 
@@ -5,6 +5,10 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /**
9
+ * @param {Array<number>} array array of numbers
10
+ * @returns {number} sum of all numbers in array
11
+ */
8
12
  const arraySum = array => {
9
13
  let sum = 0;
10
14
  for (const item of array) sum += item;
@@ -8,11 +8,18 @@
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenciesPlugin");
10
10
 
11
+ /** @typedef {import("../Chunk")} Chunk */
11
12
  /** @typedef {import("../Compiler")} Compiler */
12
13
 
14
+ /** @typedef {Object} CommonJsChunkLoadingPluginOptions
15
+ * @property {boolean} [asyncChunkLoading] enable async chunk loading
16
+ */
17
+
13
18
  class CommonJsChunkLoadingPlugin {
14
- constructor(options) {
15
- options = options || {};
19
+ /**
20
+ * @param {CommonJsChunkLoadingPluginOptions} [options] options
21
+ */
22
+ constructor(options = {}) {
16
23
  this._asyncChunkLoading = options.asyncChunkLoading;
17
24
  }
18
25
 
@@ -36,6 +43,10 @@ class CommonJsChunkLoadingPlugin {
36
43
  "CommonJsChunkLoadingPlugin",
37
44
  compilation => {
38
45
  const globalChunkLoading = compilation.outputOptions.chunkLoading;
46
+ /**
47
+ * @param {Chunk} chunk chunk
48
+ * @returns {boolean} true, if wasm loading is enabled for the chunk
49
+ */
39
50
  const isEnabledForChunk = chunk => {
40
51
  const options = chunk.getEntryOptions();
41
52
  const chunkLoading =
@@ -45,6 +56,10 @@ class CommonJsChunkLoadingPlugin {
45
56
  return chunkLoading === chunkLoadingValue;
46
57
  };
47
58
  const onceForChunkSet = new WeakSet();
59
+ /**
60
+ * @param {Chunk} chunk chunk
61
+ * @param {Set<string>} set runtime requirements
62
+ */
48
63
  const handler = (chunk, set) => {
49
64
  if (onceForChunkSet.has(chunk)) return;
50
65
  onceForChunkSet.add(chunk);
@@ -31,6 +31,7 @@ const builtins = [
31
31
  "http2",
32
32
  "https",
33
33
  "inspector",
34
+ "inspector/promises",
34
35
  "module",
35
36
  "net",
36
37
  "os",
@@ -42,8 +43,10 @@ const builtins = [
42
43
  "punycode",
43
44
  "querystring",
44
45
  "readline",
46
+ "readline/promises",
45
47
  "repl",
46
48
  "stream",
49
+ "stream/consumers",
47
50
  "stream/promises",
48
51
  "stream/web",
49
52
  "string_decoder",
@@ -10,9 +10,17 @@ const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin
10
10
 
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
 
13
+ /**
14
+ * @typedef {Object} NodeTemplatePluginOptions
15
+ * @property {boolean} [asyncChunkLoading] enable async chunk loading
16
+ */
17
+
13
18
  class NodeTemplatePlugin {
14
- constructor(options) {
15
- this._options = options || {};
19
+ /**
20
+ * @param {NodeTemplatePluginOptions} [options] options object
21
+ */
22
+ constructor(options = {}) {
23
+ this._options = options;
16
24
  }
17
25
 
18
26
  /**
@@ -29,7 +29,7 @@ class NodeWatchFileSystem {
29
29
  * @param {Iterable<string>} missing watched exitance entries
30
30
  * @param {number} startTime timestamp of start time
31
31
  * @param {WatchOptions} options options object
32
- * @param {function(Error=, Map<string, FileSystemInfoEntry>, Map<string, FileSystemInfoEntry>, Set<string>, Set<string>): void} callback aggregated callback
32
+ * @param {function((Error | null)=, Map<string, FileSystemInfoEntry>, Map<string, FileSystemInfoEntry>, Set<string>, Set<string>): void} callback aggregated callback
33
33
  * @param {function(string, number): void} callbackUndelayed callback when the first change was detected
34
34
  * @returns {Watcher} a watcher
35
35
  */
@@ -16,8 +16,13 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
16
16
  const { getUndoPath } = require("../util/identifier");
17
17
 
18
18
  /** @typedef {import("../Chunk")} Chunk */
19
+ /** @typedef {import("../ChunkGraph")} ChunkGraph */
20
+ /** @typedef {import("../Compilation")} Compilation */
19
21
 
20
22
  class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
23
+ /**
24
+ * @param {ReadonlySet<string>} runtimeRequirements runtime requirements
25
+ */
21
26
  constructor(runtimeRequirements) {
22
27
  super("readFile chunk loading", RuntimeModule.STAGE_ATTACH);
23
28
  this.runtimeRequirements = runtimeRequirements;
@@ -43,11 +48,13 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
43
48
  }
44
49
 
45
50
  /**
46
- * @returns {string} runtime code
51
+ * @returns {string | null} runtime code
47
52
  */
48
53
  generate() {
49
- const { chunkGraph, chunk } = this;
50
- const { runtimeTemplate } = this.compilation;
54
+ const compilation = /** @type {Compilation} */ (this.compilation);
55
+ const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
56
+ const chunk = /** @type {Chunk} */ (this.chunk);
57
+ const { runtimeTemplate } = compilation;
51
58
  const fn = RuntimeGlobals.ensureChunkHandlers;
52
59
  const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
53
60
  const withExternalInstallChunk = this.runtimeRequirements.has(
@@ -69,8 +76,8 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
69
76
  const hasJsMatcher = compileBooleanMatcher(conditionMap);
70
77
  const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
71
78
 
72
- const outputName = this.compilation.getPath(
73
- getChunkFilenameTemplate(chunk, this.compilation.outputOptions),
79
+ const outputName = compilation.getPath(
80
+ getChunkFilenameTemplate(chunk, compilation.outputOptions),
74
81
  {
75
82
  chunk,
76
83
  contentHashType: "javascript"
@@ -78,7 +85,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
78
85
  );
79
86
  const rootOutputDir = getUndoPath(
80
87
  outputName,
81
- this.compilation.outputOptions.path,
88
+ /** @type {string} */ (compilation.outputOptions.path),
82
89
  false
83
90
  );
84
91
 
@@ -124,7 +131,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
124
131
  "}"
125
132
  ]),
126
133
  "}",
127
- `if(runtime) runtime(__webpack_require__);`,
134
+ `if(runtime) runtime(${RuntimeGlobals.require});`,
128
135
  "for(var i = 0; i < chunkIds.length; i++) {",
129
136
  Template.indent([
130
137
  "if(installedChunks[chunkIds[i]]) {",
@@ -178,7 +185,9 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
178
185
  "});",
179
186
  "promises.push(installedChunkData[2] = promise);"
180
187
  ]),
181
- "} else installedChunks[chunkId] = 0;"
188
+ hasJsMatcher === true
189
+ ? "}"
190
+ : "} else installedChunks[chunkId] = 0;"
182
191
  ]),
183
192
  "}"
184
193
  ]),
@@ -191,7 +200,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
191
200
  "",
192
201
  withExternalInstallChunk
193
202
  ? Template.asString([
194
- "module.exports = __webpack_require__;",
203
+ `module.exports = ${RuntimeGlobals.require};`,
195
204
  `${RuntimeGlobals.externalInstallChunk} = installChunk;`
196
205
  ])
197
206
  : "// no external install chunk",
@@ -5,10 +5,12 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { WEBASSEMBLY_MODULE_TYPE_ASYNC } = require("../ModuleTypeConstants");
8
9
  const RuntimeGlobals = require("../RuntimeGlobals");
9
10
  const Template = require("../Template");
10
11
  const AsyncWasmLoadingRuntimeModule = require("../wasm-async/AsyncWasmLoadingRuntimeModule");
11
12
 
13
+ /** @typedef {import("../Chunk")} Chunk */
12
14
  /** @typedef {import("../Compiler")} Compiler */
13
15
 
14
16
  class ReadFileCompileAsyncWasmPlugin {
@@ -26,6 +28,10 @@ class ReadFileCompileAsyncWasmPlugin {
26
28
  "ReadFileCompileAsyncWasmPlugin",
27
29
  compilation => {
28
30
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
31
+ /**
32
+ * @param {Chunk} chunk chunk
33
+ * @returns {boolean} true, if wasm loading is enabled for the chunk
34
+ */
29
35
  const isEnabledForChunk = chunk => {
30
36
  const options = chunk.getEntryOptions();
31
37
  const wasmLoading =
@@ -34,12 +40,16 @@ class ReadFileCompileAsyncWasmPlugin {
34
40
  : globalWasmLoading;
35
41
  return wasmLoading === this._type;
36
42
  };
43
+ const { importMetaName } = compilation.outputOptions;
44
+ /**
45
+ * @type {(path: string) => string}
46
+ */
37
47
  const generateLoadBinaryCode = this._import
38
48
  ? path =>
39
49
  Template.asString([
40
50
  "Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
41
51
  Template.indent([
42
- `readFile(new URL(${path}, import.meta.url), (err, buffer) => {`,
52
+ `readFile(new URL(${path}, ${importMetaName}.url), (err, buffer) => {`,
43
53
  Template.indent([
44
54
  "if (err) return reject(err);",
45
55
  "",
@@ -85,7 +95,7 @@ class ReadFileCompileAsyncWasmPlugin {
85
95
  if (
86
96
  !chunkGraph.hasModuleInGraph(
87
97
  chunk,
88
- m => m.type === "webassembly/async"
98
+ m => m.type === WEBASSEMBLY_MODULE_TYPE_ASYNC
89
99
  )
90
100
  ) {
91
101
  return;
@@ -5,17 +5,27 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { WEBASSEMBLY_MODULE_TYPE_SYNC } = require("../ModuleTypeConstants");
8
9
  const RuntimeGlobals = require("../RuntimeGlobals");
9
10
  const Template = require("../Template");
10
11
  const WasmChunkLoadingRuntimeModule = require("../wasm-sync/WasmChunkLoadingRuntimeModule");
11
12
 
13
+ /** @typedef {import("../Chunk")} Chunk */
12
14
  /** @typedef {import("../Compiler")} Compiler */
13
15
 
16
+ /**
17
+ * @typedef {Object} ReadFileCompileWasmPluginOptions
18
+ * @property {boolean} [mangleImports] mangle imports
19
+ */
20
+
14
21
  // TODO webpack 6 remove
15
22
 
16
23
  class ReadFileCompileWasmPlugin {
17
- constructor(options) {
18
- this.options = options || {};
24
+ /**
25
+ * @param {ReadFileCompileWasmPluginOptions} [options] options object
26
+ */
27
+ constructor(options = {}) {
28
+ this.options = options;
19
29
  }
20
30
 
21
31
  /**
@@ -28,6 +38,10 @@ class ReadFileCompileWasmPlugin {
28
38
  "ReadFileCompileWasmPlugin",
29
39
  compilation => {
30
40
  const globalWasmLoading = compilation.outputOptions.wasmLoading;
41
+ /**
42
+ * @param {Chunk} chunk chunk
43
+ * @returns {boolean} true, when wasm loading is enabled for the chunk
44
+ */
31
45
  const isEnabledForChunk = chunk => {
32
46
  const options = chunk.getEntryOptions();
33
47
  const wasmLoading =
@@ -36,6 +50,10 @@ class ReadFileCompileWasmPlugin {
36
50
  : globalWasmLoading;
37
51
  return wasmLoading === "async-node";
38
52
  };
53
+ /**
54
+ * @param {string} path path to wasm file
55
+ * @returns {string} generated code to load the wasm file
56
+ */
39
57
  const generateLoadBinaryCode = path =>
40
58
  Template.asString([
41
59
  "new Promise(function (resolve, reject) {",
@@ -69,7 +87,7 @@ class ReadFileCompileWasmPlugin {
69
87
  if (
70
88
  !chunkGraph.hasModuleInGraph(
71
89
  chunk,
72
- m => m.type === "webassembly/sync"
90
+ m => m.type === WEBASSEMBLY_MODULE_TYPE_SYNC
73
91
  )
74
92
  ) {
75
93
  return;
@@ -16,8 +16,13 @@ const compileBooleanMatcher = require("../util/compileBooleanMatcher");
16
16
  const { getUndoPath } = require("../util/identifier");
17
17
 
18
18
  /** @typedef {import("../Chunk")} Chunk */
19
+ /** @typedef {import("../ChunkGraph")} ChunkGraph */
20
+ /** @typedef {import("../Compilation")} Compilation */
19
21
 
20
22
  class RequireChunkLoadingRuntimeModule extends RuntimeModule {
23
+ /**
24
+ * @param {ReadonlySet<string>} runtimeRequirements runtime requirements
25
+ */
21
26
  constructor(runtimeRequirements) {
22
27
  super("require chunk loading", RuntimeModule.STAGE_ATTACH);
23
28
  this.runtimeRequirements = runtimeRequirements;
@@ -43,11 +48,13 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
43
48
  }
44
49
 
45
50
  /**
46
- * @returns {string} runtime code
51
+ * @returns {string | null} runtime code
47
52
  */
48
53
  generate() {
49
- const { chunkGraph, chunk } = this;
50
- const { runtimeTemplate } = this.compilation;
54
+ const compilation = /** @type {Compilation} */ (this.compilation);
55
+ const chunkGraph = /** @type {ChunkGraph} */ (this.chunkGraph);
56
+ const chunk = /** @type {Chunk} */ (this.chunk);
57
+ const { runtimeTemplate } = compilation;
51
58
  const fn = RuntimeGlobals.ensureChunkHandlers;
52
59
  const withBaseURI = this.runtimeRequirements.has(RuntimeGlobals.baseURI);
53
60
  const withExternalInstallChunk = this.runtimeRequirements.has(
@@ -69,8 +76,8 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
69
76
  const hasJsMatcher = compileBooleanMatcher(conditionMap);
70
77
  const initialChunkIds = getInitialChunkIds(chunk, chunkGraph, chunkHasJs);
71
78
 
72
- const outputName = this.compilation.getPath(
73
- getChunkFilenameTemplate(chunk, this.compilation.outputOptions),
79
+ const outputName = compilation.getPath(
80
+ getChunkFilenameTemplate(chunk, compilation.outputOptions),
74
81
  {
75
82
  chunk,
76
83
  contentHashType: "javascript"
@@ -78,7 +85,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
78
85
  );
79
86
  const rootOutputDir = getUndoPath(
80
87
  outputName,
81
- this.compilation.outputOptions.path,
88
+ /** @type {string} */ (compilation.outputOptions.path),
82
89
  true
83
90
  );
84
91
 
@@ -124,7 +131,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
124
131
  "}"
125
132
  ]),
126
133
  "}",
127
- `if(runtime) runtime(__webpack_require__);`,
134
+ `if(runtime) runtime(${RuntimeGlobals.require});`,
128
135
  "for(var i = 0; i < chunkIds.length; i++)",
129
136
  Template.indent("installedChunks[chunkIds[i]] = 1;"),
130
137
  withOnChunkLoad ? `${RuntimeGlobals.onChunksLoaded}();` : ""
@@ -163,7 +170,7 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
163
170
  "",
164
171
  withExternalInstallChunk
165
172
  ? Template.asString([
166
- "module.exports = __webpack_require__;",
173
+ `module.exports = ${RuntimeGlobals.require};`,
167
174
  `${RuntimeGlobals.externalInstallChunk} = installChunk;`
168
175
  ])
169
176
  : "// no external install chunk",
@@ -38,10 +38,8 @@ module.exports = ({ colors, appendOnly, stream }) => {
38
38
 
39
39
  const writeStatusMessage = () => {
40
40
  if (!currentStatusMessage) return;
41
- const l = stream.columns;
42
- const args = l
43
- ? truncateArgs(currentStatusMessage, l - 1)
44
- : currentStatusMessage;
41
+ const l = stream.columns || 40;
42
+ const args = truncateArgs(currentStatusMessage, l - 1);
45
43
  const str = args.join(" ");
46
44
  const coloredStr = `\u001b[1m${str}\u001b[39m\u001b[22m`;
47
45
  stream.write(`\x1b[2K\r${coloredStr}`);
@@ -10,7 +10,15 @@ const { STAGE_ADVANCED } = require("../OptimizationStages");
10
10
  /** @typedef {import("../Chunk")} Chunk */
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
 
13
+ /**
14
+ * @typedef {Object} AggressiveMergingPluginOptions
15
+ * @property {number=} minSizeReduce minimal size reduction to trigger merging
16
+ */
17
+
13
18
  class AggressiveMergingPlugin {
19
+ /**
20
+ * @param {AggressiveMergingPluginOptions=} [options] options object
21
+ */
14
22
  constructor(options) {
15
23
  if (
16
24
  (options !== undefined && typeof options !== "object") ||
@@ -30,6 +30,12 @@ const validate = createSchemaValidation(
30
30
  }
31
31
  );
32
32
 
33
+ /**
34
+ * @param {ChunkGraph} chunkGraph the chunk graph
35
+ * @param {Chunk} oldChunk the old chunk
36
+ * @param {Chunk} newChunk the new chunk
37
+ * @returns {(module: Module) => void} function to move module between chunks
38
+ */
33
39
  const moveModuleBetween = (chunkGraph, oldChunk, newChunk) => {
34
40
  return module => {
35
41
  chunkGraph.disconnectChunkAndModule(oldChunk, module);
@@ -92,6 +98,7 @@ class AggressiveSplittingPlugin {
92
98
  compilation => {
93
99
  let needAdditionalSeal = false;
94
100
  let newSplits;
101
+ /** @type {Set<Chunk>} */
95
102
  let fromAggressiveSplittingSet;
96
103
  let chunkSplitDataMap;
97
104
  compilation.hooks.optimize.tap("AggressiveSplittingPlugin", () => {
@@ -133,8 +140,8 @@ class AggressiveSplittingPlugin {
133
140
  ? recordedSplits.concat(newSplits)
134
141
  : recordedSplits;
135
142
 
136
- const minSize = this.options.minSize;
137
- const maxSize = this.options.maxSize;
143
+ const minSize = /** @type {number} */ (this.options.minSize);
144
+ const maxSize = /** @type {number} */ (this.options.maxSize);
138
145
 
139
146
  const applySplit = splitData => {
140
147
  // Cannot split if id is already taken
@@ -15,6 +15,7 @@ const {
15
15
  const ConcatenationScope = require("../ConcatenationScope");
16
16
  const { UsageState } = require("../ExportsInfo");
17
17
  const Module = require("../Module");
18
+ const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
18
19
  const RuntimeGlobals = require("../RuntimeGlobals");
19
20
  const Template = require("../Template");
20
21
  const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency");
@@ -26,6 +27,7 @@ const createHash = require("../util/createHash");
26
27
  const { makePathsRelative } = require("../util/identifier");
27
28
  const makeSerializable = require("../util/makeSerializable");
28
29
  const propertyAccess = require("../util/propertyAccess");
30
+ const { propertyName } = require("../util/propertyName");
29
31
  const {
30
32
  filterRuntime,
31
33
  intersectRuntime,
@@ -683,7 +685,7 @@ class ConcatenatedModule extends Module {
683
685
  * @param {Set<Module>=} options.modules all concatenated modules
684
686
  */
685
687
  constructor({ identifier, rootModule, modules, runtime }) {
686
- super("javascript/esm", null, rootModule && rootModule.layer);
688
+ super(JAVASCRIPT_MODULE_TYPE_ESM, null, rootModule && rootModule.layer);
687
689
 
688
690
  // Info from Factory
689
691
  /** @type {string} */
@@ -1483,7 +1485,7 @@ class ConcatenatedModule extends Module {
1483
1485
  const definitions = [];
1484
1486
  for (const [key, value] of exportsMap) {
1485
1487
  definitions.push(
1486
- `\n ${JSON.stringify(key)}: ${runtimeTemplate.returningFunction(
1488
+ `\n ${propertyName(key)}: ${runtimeTemplate.returningFunction(
1487
1489
  value(requestShortener)
1488
1490
  )}`
1489
1491
  );
@@ -1528,9 +1530,9 @@ class ConcatenatedModule extends Module {
1528
1530
  true
1529
1531
  );
1530
1532
  nsObj.push(
1531
- `\n ${JSON.stringify(
1532
- usedName
1533
- )}: ${runtimeTemplate.returningFunction(finalName)}`
1533
+ `\n ${propertyName(usedName)}: ${runtimeTemplate.returningFunction(
1534
+ finalName
1535
+ )}`
1534
1536
  );
1535
1537
  }
1536
1538
  }
@@ -1609,7 +1611,7 @@ ${defineGetters}`
1609
1611
  result.add(`if (${condition}) {\n`);
1610
1612
  }
1611
1613
  result.add(
1612
- `var ${info.name} = __webpack_require__(${JSON.stringify(
1614
+ `var ${info.name} = ${RuntimeGlobals.require}(${JSON.stringify(
1613
1615
  chunkGraph.getModuleId(info.module)
1614
1616
  )});`
1615
1617
  );
@@ -21,6 +21,9 @@ class EnsureChunkConditionsPlugin {
21
21
  compiler.hooks.compilation.tap(
22
22
  "EnsureChunkConditionsPlugin",
23
23
  compilation => {
24
+ /**
25
+ * @param {Iterable<Chunk>} chunks the chunks
26
+ */
24
27
  const handler = chunks => {
25
28
  const chunkGraph = compilation.chunkGraph;
26
29
  // These sets are hoisted here to save memory
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  /** @typedef {import("../Chunk")} Chunk */
9
+ /** @typedef {import("../Chunk").ChunkId} ChunkId */
9
10
  /** @typedef {import("../Compiler")} Compiler */
10
11
  /** @typedef {import("../Module")} Module */
11
12
 
@@ -61,13 +62,15 @@ class FlagIncludedChunksPlugin {
61
62
  for (const chunk of chunks) {
62
63
  let hash = 0;
63
64
  for (const module of chunkGraph.getChunkModulesIterable(chunk)) {
64
- hash |= moduleBits.get(module);
65
+ hash |= /** @type {number} */ (moduleBits.get(module));
65
66
  }
66
67
  chunkModulesHash.set(chunk, hash);
67
68
  }
68
69
 
69
70
  for (const chunkA of chunks) {
70
- const chunkAHash = chunkModulesHash.get(chunkA);
71
+ const chunkAHash =
72
+ /** @type {number} */
73
+ (chunkModulesHash.get(chunkA));
71
74
  const chunkAModulesCount =
72
75
  chunkGraph.getNumberOfChunkModules(chunkA);
73
76
  if (chunkAModulesCount === 0) continue;
@@ -81,7 +84,7 @@ class FlagIncludedChunksPlugin {
81
84
  bestModule = module;
82
85
  }
83
86
  loopB: for (const chunkB of chunkGraph.getModuleChunksIterable(
84
- bestModule
87
+ /** @type {Module} */ (bestModule)
85
88
  )) {
86
89
  // as we iterate the same iterables twice
87
90
  // skip if we find ourselves
@@ -100,14 +103,17 @@ class FlagIncludedChunksPlugin {
100
103
  // is chunkA in chunkB?
101
104
 
102
105
  // we do a cheap check for the hash value
103
- const chunkBHash = chunkModulesHash.get(chunkB);
106
+ const chunkBHash =
107
+ /** @type {number} */
108
+ (chunkModulesHash.get(chunkB));
104
109
  if ((chunkBHash & chunkAHash) !== chunkAHash) continue;
105
110
 
106
111
  // compare all modules
107
112
  for (const m of chunkGraph.getChunkModulesIterable(chunkA)) {
108
113
  if (!chunkGraph.isModuleInChunk(m, chunkB)) continue loopB;
109
114
  }
110
- chunkB.ids.push(chunkA.id);
115
+ /** @type {ChunkId[]} */
116
+ (chunkB.ids).push(/** @type {ChunkId} */ (chunkA.id));
111
117
  }
112
118
  }
113
119
  }