webpack 5.76.1 → 5.88.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.

Potentially problematic release.


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

Files changed (436) 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 +4 -0
  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 +12 -8
  25. package/lib/ConcatenationScope.js +2 -2
  26. package/lib/ConditionalInitFragment.js +11 -1
  27. package/lib/ConstPlugin.js +79 -44
  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/DllEntryPlugin.js +16 -1
  38. package/lib/DllModule.js +17 -2
  39. package/lib/DllModuleFactory.js +1 -1
  40. package/lib/DllReferencePlugin.js +13 -1
  41. package/lib/Entrypoint.js +1 -1
  42. package/lib/ErrorHelpers.js +62 -22
  43. package/lib/EvalSourceMapDevToolPlugin.js +9 -2
  44. package/lib/ExportsInfo.js +20 -3
  45. package/lib/ExportsInfoApiPlugin.js +30 -14
  46. package/lib/ExternalModule.js +30 -9
  47. package/lib/FileSystemInfo.js +9 -1
  48. package/lib/FlagAllModulesAsUsedPlugin.js +27 -27
  49. package/lib/FlagDependencyExportsPlugin.js +336 -348
  50. package/lib/FlagDependencyUsagePlugin.js +9 -9
  51. package/lib/FlagEntryExportAsUsedPlugin.js +26 -23
  52. package/lib/HookWebpackError.js +1 -1
  53. package/lib/HotModuleReplacementPlugin.js +60 -46
  54. package/lib/IgnoreErrorModuleFactory.js +1 -1
  55. package/lib/InitFragment.js +28 -5
  56. package/lib/JavascriptMetaInfoPlugin.js +27 -15
  57. package/lib/LibManifestPlugin.js +22 -5
  58. package/lib/LoaderOptionsPlugin.js +12 -2
  59. package/lib/MainTemplate.js +2 -2
  60. package/lib/Module.js +44 -12
  61. package/lib/ModuleBuildError.js +9 -0
  62. package/lib/ModuleDependencyError.js +4 -2
  63. package/lib/ModuleDependencyWarning.js +4 -2
  64. package/lib/ModuleError.js +9 -0
  65. package/lib/ModuleFactory.js +1 -1
  66. package/lib/ModuleFilenameHelpers.js +114 -4
  67. package/lib/ModuleGraph.js +33 -23
  68. package/lib/ModuleGraphConnection.js +19 -6
  69. package/lib/ModuleInfoHeaderPlugin.js +9 -2
  70. package/lib/ModuleNotFoundError.js +5 -2
  71. package/lib/ModuleParseError.js +9 -0
  72. package/lib/ModuleProfile.js +1 -0
  73. package/lib/ModuleRestoreError.js +2 -0
  74. package/lib/ModuleStoreError.js +2 -1
  75. package/lib/ModuleTypeConstants.js +169 -0
  76. package/lib/ModuleWarning.js +9 -0
  77. package/lib/MultiWatching.js +4 -0
  78. package/lib/NodeStuffPlugin.js +65 -35
  79. package/lib/NormalModule.js +12 -2
  80. package/lib/NormalModuleFactory.js +56 -8
  81. package/lib/NormalModuleReplacementPlugin.js +5 -3
  82. package/lib/NullFactory.js +1 -1
  83. package/lib/PrefetchPlugin.js +4 -0
  84. package/lib/ProgressPlugin.js +71 -15
  85. package/lib/ProvidePlugin.js +30 -14
  86. package/lib/RawModule.js +13 -2
  87. package/lib/RecordIdsPlugin.js +4 -4
  88. package/lib/RequireJsStuffPlugin.js +22 -15
  89. package/lib/RuntimeGlobals.js +5 -0
  90. package/lib/RuntimeModule.js +12 -11
  91. package/lib/RuntimePlugin.js +10 -3
  92. package/lib/RuntimeTemplate.js +29 -11
  93. package/lib/SelfModuleFactory.js +12 -0
  94. package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
  95. package/lib/SourceMapDevToolPlugin.js +47 -11
  96. package/lib/Template.js +5 -3
  97. package/lib/UseStrictPlugin.js +29 -11
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +12 -0
  99. package/lib/WarnDeprecatedOptionPlugin.js +7 -0
  100. package/lib/WatchIgnorePlugin.js +4 -0
  101. package/lib/WebpackError.js +14 -5
  102. package/lib/WebpackIsIncludedPlugin.js +22 -13
  103. package/lib/WebpackOptionsApply.js +41 -44
  104. package/lib/WebpackOptionsDefaulter.js +10 -3
  105. package/lib/asset/AssetGenerator.js +24 -9
  106. package/lib/asset/AssetModulesPlugin.js +28 -12
  107. package/lib/asset/AssetParser.js +15 -7
  108. package/lib/asset/AssetSourceParser.js +8 -3
  109. package/lib/asset/RawDataUrlModule.js +15 -4
  110. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  111. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  112. package/lib/cache/IdleFileCachePlugin.js +2 -1
  113. package/lib/cache/MemoryWithGcCachePlugin.js +2 -0
  114. package/lib/cache/PackFileCacheStrategy.js +42 -15
  115. package/lib/cache/ResolverCachePlugin.js +3 -0
  116. package/lib/config/browserslistTargetHandler.js +10 -10
  117. package/lib/config/defaults.js +306 -105
  118. package/lib/config/normalization.js +110 -71
  119. package/lib/config/target.js +37 -10
  120. package/lib/container/ContainerEntryModule.js +11 -1
  121. package/lib/container/ContainerEntryModuleFactory.js +1 -1
  122. package/lib/container/ContainerExposedDependency.js +9 -0
  123. package/lib/container/ContainerPlugin.js +3 -1
  124. package/lib/container/FallbackDependency.js +13 -0
  125. package/lib/container/FallbackItemDependency.js +3 -0
  126. package/lib/container/FallbackModule.js +12 -2
  127. package/lib/container/FallbackModuleFactory.js +1 -1
  128. package/lib/container/RemoteModule.js +11 -1
  129. package/lib/container/RemoteRuntimeModule.js +3 -2
  130. package/lib/container/RemoteToExternalDependency.js +3 -0
  131. package/lib/css/CssExportsGenerator.js +9 -0
  132. package/lib/css/CssGenerator.js +5 -1
  133. package/lib/css/CssLoadingRuntimeModule.js +53 -22
  134. package/lib/css/CssModulesPlugin.js +253 -74
  135. package/lib/css/CssParser.js +697 -282
  136. package/lib/css/walkCssTokens.js +269 -138
  137. package/lib/debug/ProfilingPlugin.js +33 -12
  138. package/lib/dependencies/AMDDefineDependency.js +54 -10
  139. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +13 -2
  140. package/lib/dependencies/AMDPlugin.js +33 -20
  141. package/lib/dependencies/AMDRequireArrayDependency.js +13 -0
  142. package/lib/dependencies/AMDRequireContextDependency.js +15 -0
  143. package/lib/dependencies/AMDRequireDependenciesBlock.js +6 -0
  144. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +8 -2
  145. package/lib/dependencies/AMDRequireDependency.js +16 -1
  146. package/lib/dependencies/AMDRequireItemDependency.js +6 -0
  147. package/lib/dependencies/AMDRuntimeModules.js +2 -2
  148. package/lib/dependencies/CachedConstDependency.js +14 -0
  149. package/lib/dependencies/CommonJsDependencyHelpers.js +9 -0
  150. package/lib/dependencies/CommonJsExportRequireDependency.js +19 -0
  151. package/lib/dependencies/CommonJsExportsDependency.js +16 -0
  152. package/lib/dependencies/CommonJsExportsParserPlugin.js +77 -5
  153. package/lib/dependencies/CommonJsFullRequireDependency.js +10 -1
  154. package/lib/dependencies/CommonJsImportsParserPlugin.js +174 -63
  155. package/lib/dependencies/CommonJsPlugin.js +51 -26
  156. package/lib/dependencies/CommonJsRequireContextDependency.js +17 -0
  157. package/lib/dependencies/CommonJsRequireDependency.js +7 -0
  158. package/lib/dependencies/CommonJsSelfReferenceDependency.js +16 -0
  159. package/lib/dependencies/ConstDependency.js +11 -2
  160. package/lib/dependencies/ContextDependency.js +15 -2
  161. package/lib/dependencies/ContextDependencyHelpers.js +3 -3
  162. package/lib/dependencies/ContextElementDependency.js +8 -0
  163. package/lib/dependencies/CreateScriptUrlDependency.js +10 -1
  164. package/lib/dependencies/CriticalDependencyWarning.js +3 -0
  165. package/lib/dependencies/CssExportDependency.js +8 -0
  166. package/lib/dependencies/CssImportDependency.js +55 -3
  167. package/lib/dependencies/CssLocalIdentifierDependency.js +15 -1
  168. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +10 -1
  169. package/lib/dependencies/CssUrlDependency.js +46 -16
  170. package/lib/dependencies/DelegatedSourceDependency.js +3 -0
  171. package/lib/dependencies/DllEntryDependency.js +14 -0
  172. package/lib/dependencies/DynamicExports.js +10 -6
  173. package/lib/dependencies/ExportsInfoDependency.js +25 -4
  174. package/lib/dependencies/HarmonyAcceptDependency.js +10 -1
  175. package/lib/dependencies/HarmonyAcceptImportDependency.js +3 -0
  176. package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
  177. package/lib/dependencies/HarmonyDetectionParserPlugin.js +22 -2
  178. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -6
  179. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +5 -0
  180. package/lib/dependencies/HarmonyExportExpressionDependency.js +20 -3
  181. package/lib/dependencies/HarmonyExportHeaderDependency.js +13 -0
  182. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +22 -6
  183. package/lib/dependencies/HarmonyExportInitFragment.js +2 -1
  184. package/lib/dependencies/HarmonyExportSpecifierDependency.js +12 -0
  185. package/lib/dependencies/HarmonyExports.js +11 -5
  186. package/lib/dependencies/HarmonyImportDependency.js +10 -1
  187. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +53 -22
  188. package/lib/dependencies/HarmonyImportSideEffectDependency.js +7 -2
  189. package/lib/dependencies/HarmonyImportSpecifierDependency.js +139 -16
  190. package/lib/dependencies/HarmonyModulesPlugin.js +23 -5
  191. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
  192. package/lib/dependencies/ImportContextDependency.js +15 -0
  193. package/lib/dependencies/ImportDependency.js +15 -4
  194. package/lib/dependencies/ImportEagerDependency.js +7 -4
  195. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +51 -13
  196. package/lib/dependencies/ImportMetaContextPlugin.js +18 -5
  197. package/lib/dependencies/ImportMetaHotAcceptDependency.js +6 -0
  198. package/lib/dependencies/ImportMetaHotDeclineDependency.js +6 -0
  199. package/lib/dependencies/ImportMetaPlugin.js +103 -51
  200. package/lib/dependencies/ImportParserPlugin.js +83 -25
  201. package/lib/dependencies/ImportPlugin.js +21 -7
  202. package/lib/dependencies/ImportWeakDependency.js +7 -4
  203. package/lib/dependencies/JsonExportsDependency.js +9 -1
  204. package/lib/dependencies/LocalModule.js +16 -0
  205. package/lib/dependencies/LocalModuleDependency.js +15 -0
  206. package/lib/dependencies/LocalModulesHelpers.js +18 -0
  207. package/lib/dependencies/ModuleDecoratorDependency.js +8 -0
  208. package/lib/dependencies/ModuleDependency.js +9 -1
  209. package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
  210. package/lib/dependencies/ModuleHotAcceptDependency.js +6 -0
  211. package/lib/dependencies/ModuleHotDeclineDependency.js +6 -0
  212. package/lib/dependencies/PrefetchDependency.js +3 -0
  213. package/lib/dependencies/ProvidedDependency.js +14 -2
  214. package/lib/dependencies/PureExpressionDependency.js +10 -1
  215. package/lib/dependencies/RequireContextDependency.js +6 -0
  216. package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
  217. package/lib/dependencies/RequireContextPlugin.js +19 -6
  218. package/lib/dependencies/RequireEnsureDependenciesBlock.js +7 -0
  219. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
  220. package/lib/dependencies/RequireEnsureDependency.js +16 -2
  221. package/lib/dependencies/RequireEnsureItemDependency.js +3 -0
  222. package/lib/dependencies/RequireEnsurePlugin.js +27 -7
  223. package/lib/dependencies/RequireHeaderDependency.js +14 -1
  224. package/lib/dependencies/RequireIncludeDependency.js +5 -0
  225. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +29 -5
  226. package/lib/dependencies/RequireIncludePlugin.js +25 -5
  227. package/lib/dependencies/RequireResolveContextDependency.js +17 -0
  228. package/lib/dependencies/RequireResolveDependency.js +6 -0
  229. package/lib/dependencies/RequireResolveHeaderDependency.js +18 -0
  230. package/lib/dependencies/RuntimeRequirementsDependency.js +8 -0
  231. package/lib/dependencies/StaticExportsDependency.js +8 -0
  232. package/lib/dependencies/SystemPlugin.js +48 -21
  233. package/lib/dependencies/SystemRuntimeModule.js +1 -1
  234. package/lib/dependencies/URLDependency.js +13 -4
  235. package/lib/dependencies/URLPlugin.js +31 -18
  236. package/lib/dependencies/UnsupportedDependency.js +13 -0
  237. package/lib/dependencies/WebAssemblyExportImportedDependency.js +14 -0
  238. package/lib/dependencies/WebAssemblyImportDependency.js +9 -1
  239. package/lib/dependencies/WebpackIsIncludedDependency.js +5 -0
  240. package/lib/dependencies/WorkerDependency.js +47 -3
  241. package/lib/dependencies/WorkerPlugin.js +105 -32
  242. package/lib/dependencies/getFunctionExpression.js +7 -0
  243. package/lib/esm/ExportWebpackRequireRuntimeModule.js +3 -2
  244. package/lib/esm/ModuleChunkFormatPlugin.js +21 -8
  245. package/lib/esm/ModuleChunkLoadingPlugin.js +9 -0
  246. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +19 -12
  247. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  248. package/lib/hmr/LazyCompilationPlugin.js +14 -5
  249. package/lib/ids/ChunkModuleIdRangePlugin.js +11 -0
  250. package/lib/ids/DeterministicChunkIdsPlugin.js +11 -2
  251. package/lib/ids/DeterministicModuleIdsPlugin.js +11 -7
  252. package/lib/ids/HashedModuleIdsPlugin.js +9 -2
  253. package/lib/ids/IdHelpers.js +6 -0
  254. package/lib/ids/NamedChunkIdsPlugin.js +13 -1
  255. package/lib/ids/NamedModuleIdsPlugin.js +14 -3
  256. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -2
  257. package/lib/ids/OccurrenceModuleIdsPlugin.js +1 -1
  258. package/lib/ids/SyncModuleIdsPlugin.js +3 -2
  259. package/lib/index.js +8 -0
  260. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  261. package/lib/javascript/BasicEvaluatedExpression.js +137 -11
  262. package/lib/javascript/ChunkHelpers.js +2 -2
  263. package/lib/javascript/CommonJsChunkFormatPlugin.js +7 -3
  264. package/lib/javascript/EnableChunkLoadingPlugin.js +4 -0
  265. package/lib/javascript/JavascriptModulesPlugin.js +194 -194
  266. package/lib/javascript/JavascriptParser.js +941 -256
  267. package/lib/javascript/JavascriptParserHelpers.js +37 -15
  268. package/lib/javascript/StartupHelpers.js +2 -2
  269. package/lib/json/JsonData.js +26 -1
  270. package/lib/json/JsonGenerator.js +21 -7
  271. package/lib/json/JsonModulesPlugin.js +14 -5
  272. package/lib/json/JsonParser.js +27 -13
  273. package/lib/library/AbstractLibraryPlugin.js +4 -0
  274. package/lib/library/AmdLibraryPlugin.js +22 -6
  275. package/lib/library/AssignLibraryPlugin.js +6 -4
  276. package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
  277. package/lib/library/ModuleLibraryPlugin.js +8 -4
  278. package/lib/library/SystemLibraryPlugin.js +1 -0
  279. package/lib/library/UmdLibraryPlugin.js +4 -0
  280. package/lib/logging/runtime.js +1 -1
  281. package/lib/logging/truncateArgs.js +4 -0
  282. package/lib/node/CommonJsChunkLoadingPlugin.js +17 -2
  283. package/lib/node/NodeTargetPlugin.js +3 -0
  284. package/lib/node/NodeTemplatePlugin.js +10 -2
  285. package/lib/node/NodeWatchFileSystem.js +1 -1
  286. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +18 -9
  287. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +12 -2
  288. package/lib/node/ReadFileCompileWasmPlugin.js +21 -3
  289. package/lib/node/RequireChunkLoadingRuntimeModule.js +15 -8
  290. package/lib/node/nodeConsole.js +2 -4
  291. package/lib/optimize/AggressiveMergingPlugin.js +8 -0
  292. package/lib/optimize/AggressiveSplittingPlugin.js +9 -2
  293. package/lib/optimize/ConcatenatedModule.js +8 -6
  294. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -0
  295. package/lib/optimize/FlagIncludedChunksPlugin.js +11 -5
  296. package/lib/optimize/InnerGraph.js +5 -5
  297. package/lib/optimize/InnerGraphPlugin.js +57 -48
  298. package/lib/optimize/LimitChunkCountPlugin.js +29 -4
  299. package/lib/optimize/MangleExportsPlugin.js +1 -1
  300. package/lib/optimize/MinMaxSizeWarning.js +5 -0
  301. package/lib/optimize/ModuleConcatenationPlugin.js +59 -2
  302. package/lib/optimize/RealContentHashPlugin.js +86 -30
  303. package/lib/optimize/RemoveParentModulesPlugin.js +6 -0
  304. package/lib/optimize/RuntimeChunkPlugin.js +9 -1
  305. package/lib/optimize/SideEffectsFlagPlugin.js +53 -44
  306. package/lib/optimize/SplitChunksPlugin.js +71 -31
  307. package/lib/performance/SizeLimitsPlugin.js +7 -4
  308. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +4 -2
  309. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +3 -1
  310. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +6 -3
  311. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -2
  312. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -2
  313. package/lib/rules/BasicEffectRulePlugin.js +4 -0
  314. package/lib/rules/BasicMatcherRulePlugin.js +5 -0
  315. package/lib/rules/RuleSetCompiler.js +3 -3
  316. package/lib/rules/UseEffectRulePlugin.js +6 -4
  317. package/lib/runtime/AsyncModuleRuntimeModule.js +9 -6
  318. package/lib/runtime/AutoPublicPathRuntimeModule.js +16 -5
  319. package/lib/runtime/BaseUriRuntimeModule.js +8 -4
  320. package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
  321. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +5 -2
  322. package/lib/runtime/CompatRuntimeModule.js +7 -2
  323. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +5 -2
  324. package/lib/runtime/CreateScriptRuntimeModule.js +4 -2
  325. package/lib/runtime/CreateScriptUrlRuntimeModule.js +4 -2
  326. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +5 -2
  327. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -4
  328. package/lib/runtime/GetChunkFilenameRuntimeModule.js +45 -26
  329. package/lib/runtime/GetFullHashRuntimeModule.js +4 -3
  330. package/lib/runtime/GetMainFilenameRuntimeModule.js +5 -2
  331. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +27 -6
  332. package/lib/runtime/GlobalRuntimeModule.js +1 -1
  333. package/lib/runtime/HasOwnPropertyRuntimeModule.js +5 -2
  334. package/lib/runtime/LoadScriptRuntimeModule.js +65 -50
  335. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +5 -2
  336. package/lib/runtime/NonceRuntimeModule.js +1 -1
  337. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -2
  338. package/lib/runtime/PublicPathRuntimeModule.js +9 -2
  339. package/lib/runtime/RelativeUrlRuntimeModule.js +5 -2
  340. package/lib/runtime/RuntimeIdRuntimeModule.js +6 -2
  341. package/lib/runtime/StartupChunkDependenciesPlugin.js +15 -0
  342. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +13 -4
  343. package/lib/runtime/StartupEntrypointRuntimeModule.js +11 -7
  344. package/lib/runtime/SystemContextRuntimeModule.js +1 -1
  345. package/lib/schemes/DataUriPlugin.js +16 -3
  346. package/lib/schemes/HttpUriPlugin.js +38 -0
  347. package/lib/serialization/ArraySerializer.js +22 -6
  348. package/lib/serialization/BinaryMiddleware.js +164 -1
  349. package/lib/serialization/DateObjectSerializer.js +15 -4
  350. package/lib/serialization/ErrorObjectSerializer.js +23 -8
  351. package/lib/serialization/FileMiddleware.js +17 -0
  352. package/lib/serialization/MapObjectSerializer.js +24 -8
  353. package/lib/serialization/NullPrototypeObjectSerializer.js +25 -8
  354. package/lib/serialization/ObjectMiddleware.js +33 -2
  355. package/lib/serialization/PlainObjectSerializer.js +23 -12
  356. package/lib/serialization/RegExpObjectSerializer.js +16 -5
  357. package/lib/serialization/SetObjectSerializer.js +21 -6
  358. package/lib/serialization/types.js +1 -1
  359. package/lib/sharing/ConsumeSharedFallbackDependency.js +3 -0
  360. package/lib/sharing/ConsumeSharedModule.js +13 -2
  361. package/lib/sharing/ConsumeSharedPlugin.js +4 -0
  362. package/lib/sharing/ConsumeSharedRuntimeModule.js +22 -7
  363. package/lib/sharing/ProvideSharedDependency.js +17 -0
  364. package/lib/sharing/ProvideSharedModule.js +11 -1
  365. package/lib/sharing/ProvideSharedModuleFactory.js +1 -1
  366. package/lib/sharing/ProvideSharedPlugin.js +22 -21
  367. package/lib/sharing/ShareRuntimeModule.js +19 -9
  368. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  369. package/lib/sharing/utils.js +320 -7
  370. package/lib/stats/DefaultStatsFactoryPlugin.js +105 -29
  371. package/lib/stats/DefaultStatsPresetPlugin.js +9 -0
  372. package/lib/stats/DefaultStatsPrinterPlugin.js +43 -0
  373. package/lib/util/AsyncQueue.js +4 -2
  374. package/lib/util/LazySet.js +10 -2
  375. package/lib/util/MapHelpers.js +19 -5
  376. package/lib/util/ParallelismFactorCalculator.js +10 -0
  377. package/lib/util/Semaphore.js +1 -1
  378. package/lib/util/StackedCacheMap.js +6 -0
  379. package/lib/util/StringXor.js +51 -0
  380. package/lib/util/binarySearchBounds.js +49 -0
  381. package/lib/util/compileBooleanMatcher.js +31 -0
  382. package/lib/util/createHash.js +35 -13
  383. package/lib/util/deprecation.js +18 -3
  384. package/lib/util/deterministicGrouping.js +50 -11
  385. package/lib/util/findGraphRoots.js +4 -2
  386. package/lib/util/hash/md4.js +2 -2
  387. package/lib/util/hash/xxhash64.js +1 -1
  388. package/lib/util/identifier.js +4 -0
  389. package/lib/util/internalSerializables.js +1 -0
  390. package/lib/util/makeSerializable.js +7 -0
  391. package/lib/util/memoize.js +3 -3
  392. package/lib/util/numberHash.js +75 -21
  393. package/lib/util/processAsyncTree.js +7 -1
  394. package/lib/util/propertyAccess.js +9 -54
  395. package/lib/util/propertyName.js +79 -0
  396. package/lib/util/registerExternalSerializer.js +1 -1
  397. package/lib/util/runtime.js +14 -1
  398. package/lib/util/semver.js +1 -1
  399. package/lib/util/serialization.js +10 -0
  400. package/lib/util/smartGrouping.js +1 -1
  401. package/lib/validateSchema.js +6 -2
  402. package/lib/wasm/EnableWasmLoadingPlugin.js +4 -0
  403. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +15 -2
  404. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +9 -1
  405. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +14 -3
  406. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +28 -8
  407. package/lib/wasm-async/AsyncWebAssemblyParser.js +11 -4
  408. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +39 -8
  409. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +17 -6
  410. package/lib/wasm-sync/WebAssemblyGenerator.js +19 -5
  411. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
  412. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +53 -43
  413. package/lib/wasm-sync/WebAssemblyParser.js +15 -4
  414. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  415. package/lib/web/FetchCompileAsyncWasmPlugin.js +11 -1
  416. package/lib/web/FetchCompileWasmPlugin.js +59 -42
  417. package/lib/web/JsonpChunkLoadingPlugin.js +9 -0
  418. package/lib/web/JsonpChunkLoadingRuntimeModule.js +26 -9
  419. package/lib/webpack.js +12 -3
  420. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +9 -0
  421. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +20 -17
  422. package/module.d.ts +55 -37
  423. package/package.json +59 -56
  424. package/schemas/WebpackOptions.check.js +1 -1
  425. package/schemas/WebpackOptions.json +132 -5
  426. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  427. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  428. package/schemas/plugins/SourceMapDevToolPlugin.json +4 -0
  429. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  430. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  431. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  432. package/schemas/plugins/container/ModuleFederationPlugin.json +8 -0
  433. package/schemas/plugins/css/CssGeneratorOptions.json +1 -1
  434. package/schemas/plugins/css/CssParserOptions.json +1 -1
  435. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  436. package/types.d.ts +1608 -667
@@ -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
  }
@@ -16,7 +16,7 @@ const { UsageState } = require("../ExportsInfo");
16
16
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
17
17
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
18
18
 
19
- /** @typedef {Map<TopLevelSymbol | null, Set<string | TopLevelSymbol> | true>} InnerGraph */
19
+ /** @typedef {Map<TopLevelSymbol | null, Set<string | TopLevelSymbol> | true | undefined>} InnerGraph */
20
20
  /** @typedef {function(boolean | Set<string> | undefined): void} UsageCallback */
21
21
 
22
22
  /**
@@ -34,7 +34,7 @@ const topLevelSymbolTag = Symbol("top level symbol");
34
34
 
35
35
  /**
36
36
  * @param {ParserState} parserState parser state
37
- * @returns {State} state
37
+ * @returns {State | undefined} state
38
38
  */
39
39
  function getState(parserState) {
40
40
  return parserStateMap.get(parserState);
@@ -235,7 +235,7 @@ exports.onUsage = (state, onUsageCallback) => {
235
235
 
236
236
  /**
237
237
  * @param {ParserState} state parser state
238
- * @param {TopLevelSymbol} symbol the symbol
238
+ * @param {TopLevelSymbol | undefined} symbol the symbol
239
239
  */
240
240
  exports.setTopLevelSymbol = (state, symbol) => {
241
241
  const innerGraphState = getState(state);
@@ -260,7 +260,7 @@ exports.getTopLevelSymbol = state => {
260
260
  /**
261
261
  * @param {JavascriptParser} parser parser
262
262
  * @param {string} name name of variable
263
- * @returns {TopLevelSymbol} symbol
263
+ * @returns {TopLevelSymbol | undefined} symbol
264
264
  */
265
265
  exports.tagTopLevelSymbol = (parser, name) => {
266
266
  const innerGraphState = getState(parser.state);
@@ -309,7 +309,7 @@ exports.isDependencyUsedByExports = (
309
309
 
310
310
  /**
311
311
  * @param {Dependency} dependency the dependency
312
- * @param {Set<string> | boolean} usedByExports usedByExports info
312
+ * @param {Set<string> | boolean | undefined} usedByExports usedByExports info
313
313
  * @param {ModuleGraph} moduleGraph moduleGraph
314
314
  * @returns {null | false | function(ModuleGraphConnection, RuntimeSpec): ConnectionState} function to determine if the connection is active
315
315
  */