webpack 5.97.1 → 5.104.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -26,11 +26,12 @@ const getFunctionExpression = require("./getFunctionExpression");
26
26
  /** @typedef {import("estree").SpreadElement} SpreadElement */
27
27
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
28
28
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
29
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
30
29
  /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
31
30
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
32
31
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
33
32
 
33
+ const PLUGIN_NAME = "AMDRequireDependenciesBlockParserPlugin";
34
+
34
35
  class AMDRequireDependenciesBlockParserPlugin {
35
36
  /**
36
37
  * @param {JavascriptParserOptions} options parserOptions
@@ -50,7 +51,7 @@ class AMDRequireDependenciesBlockParserPlugin {
50
51
  if (fnData) {
51
52
  parser.inScope(
52
53
  fnData.fn.params.filter(
53
- i =>
54
+ (i) =>
54
55
  !["require", "module", "exports"].includes(
55
56
  /** @type {Identifier} */ (i).name
56
57
  )
@@ -80,10 +81,7 @@ class AMDRequireDependenciesBlockParserPlugin {
80
81
  apply(parser) {
81
82
  parser.hooks.call
82
83
  .for("require")
83
- .tap(
84
- "AMDRequireDependenciesBlockParserPlugin",
85
- this.processCallRequire.bind(this, parser)
86
- );
84
+ .tap(PLUGIN_NAME, this.processCallRequire.bind(this, parser));
87
85
  }
88
86
 
89
87
  /**
@@ -104,7 +102,7 @@ class AMDRequireDependenciesBlockParserPlugin {
104
102
  } else if (param.isConstArray()) {
105
103
  /** @type {(string | LocalModuleDependency | AMDRequireItemDependency)[]} */
106
104
  const deps = [];
107
- for (const request of /** @type {any[]} */ (param.array)) {
105
+ for (const request of /** @type {EXPECTED_ANY[]} */ (param.array)) {
108
106
  let dep;
109
107
  let localModule;
110
108
  if (request === "require") {
@@ -126,7 +124,8 @@ class AMDRequireDependenciesBlockParserPlugin {
126
124
  }
127
125
  const dep = this.newRequireArrayDependency(
128
126
  deps,
129
- /** @type {Range} */ (param.range)
127
+ /** @type {Range} */
128
+ (param.range)
130
129
  );
131
130
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
132
131
  dep.optional = Boolean(parser.scope.inTry);
@@ -158,34 +157,37 @@ class AMDRequireDependenciesBlockParserPlugin {
158
157
  if (param.string === "require") {
159
158
  dep = new ConstDependency(
160
159
  RuntimeGlobals.require,
161
- /** @type {TODO} */ (param.string),
160
+ /** @type {Range} */
161
+ (param.range),
162
162
  [RuntimeGlobals.require]
163
163
  );
164
164
  } else if (param.string === "module") {
165
165
  dep = new ConstDependency(
166
- /** @type {BuildInfo} */
167
- (parser.state.module.buildInfo).moduleArgument,
168
- /** @type {Range} */ (param.range),
166
+ parser.state.module.moduleArgument,
167
+ /** @type {Range} */
168
+ (param.range),
169
169
  [RuntimeGlobals.module]
170
170
  );
171
171
  } else if (param.string === "exports") {
172
172
  dep = new ConstDependency(
173
- /** @type {BuildInfo} */
174
- (parser.state.module.buildInfo).exportsArgument,
175
- /** @type {Range} */ (param.range),
173
+ parser.state.module.exportsArgument,
174
+ /** @type {Range} */
175
+ (param.range),
176
176
  [RuntimeGlobals.exports]
177
177
  );
178
178
  } else if (
179
179
  (localModule = getLocalModule(
180
180
  parser.state,
181
- /** @type {string} */ (param.string)
181
+ /** @type {string} */
182
+ (param.string)
182
183
  ))
183
184
  ) {
184
185
  localModule.flagUsed();
185
186
  dep = new LocalModuleDependency(localModule, param.range, false);
186
187
  } else {
187
188
  dep = this.newRequireItemDependency(
188
- /** @type {string} */ (param.string),
189
+ /** @type {string} */
190
+ (param.string),
189
191
  param.range
190
192
  );
191
193
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
@@ -208,7 +210,8 @@ class AMDRequireDependenciesBlockParserPlugin {
208
210
  processContext(parser, expr, param) {
209
211
  const dep = ContextDependencyHelpers.create(
210
212
  AMDRequireContextDependency,
211
- /** @type {Range} */ (param.range),
213
+ /** @type {Range} */
214
+ (param.range),
212
215
  param,
213
216
  expr,
214
217
  this.options,
@@ -232,7 +235,7 @@ class AMDRequireDependenciesBlockParserPlugin {
232
235
  if (param.isArray()) {
233
236
  const result =
234
237
  /** @type {BasicEvaluatedExpression[]} */
235
- (param.items).map(item => this.processItemForRequestString(item));
238
+ (param.items).map((item) => this.processItemForRequestString(item));
236
239
  if (result.every(Boolean)) return result.join(" ");
237
240
  } else if (param.isConstArray()) {
238
241
  return /** @type {string[]} */ (param.array).join(" ");
@@ -247,7 +250,7 @@ class AMDRequireDependenciesBlockParserPlugin {
247
250
  if (param.isConditional()) {
248
251
  const result =
249
252
  /** @type {BasicEvaluatedExpression[]} */
250
- (param.options).map(item => this.processItemForRequestString(item));
253
+ (param.options).map((item) => this.processItemForRequestString(item));
251
254
  if (result.every(Boolean)) return result.join("|");
252
255
  } else if (param.isString()) {
253
256
  return param.string;
@@ -292,7 +295,7 @@ class AMDRequireDependenciesBlockParserPlugin {
292
295
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
293
296
  depBlock.addDependency(dep);
294
297
 
295
- parser.state.current = /** @type {TODO} */ (depBlock);
298
+ parser.state.current = /** @type {EXPECTED_ANY} */ (depBlock);
296
299
  }
297
300
 
298
301
  if (expr.arguments.length === 1) {
@@ -300,13 +303,15 @@ class AMDRequireDependenciesBlockParserPlugin {
300
303
  result = this.processArray(
301
304
  parser,
302
305
  expr,
303
- /** @type {BasicEvaluatedExpression} */ (param)
306
+ /** @type {BasicEvaluatedExpression} */
307
+ (param)
304
308
  );
305
309
  });
306
310
  parser.state.current = old;
307
311
  if (!result) return;
308
312
  parser.state.current.addBlock(
309
- /** @type {AMDRequireDependenciesBlock} */ (depBlock)
313
+ /** @type {AMDRequireDependenciesBlock} */
314
+ (depBlock)
310
315
  );
311
316
  return true;
312
317
  }
@@ -317,13 +322,15 @@ class AMDRequireDependenciesBlockParserPlugin {
317
322
  result = this.processArray(
318
323
  parser,
319
324
  expr,
320
- /** @type {BasicEvaluatedExpression} */ (param)
325
+ /** @type {BasicEvaluatedExpression} */
326
+ (param)
321
327
  );
322
328
  });
323
329
  if (!result) {
324
330
  const dep = new UnsupportedDependency(
325
331
  "unsupported",
326
- /** @type {Range} */ (expr.range)
332
+ /** @type {Range} */
333
+ (expr.range)
327
334
  );
328
335
  old.addPresentationalDependency(dep);
329
336
  if (parser.state.module) {
@@ -332,7 +339,8 @@ class AMDRequireDependenciesBlockParserPlugin {
332
339
  `Cannot statically analyse 'require(…, …)' in line ${
333
340
  /** @type {SourceLocation} */ (expr.loc).start.line
334
341
  }`,
335
- /** @type {DependencyLocation} */ (expr.loc)
342
+ /** @type {DependencyLocation} */
343
+ (expr.loc)
336
344
  )
337
345
  );
338
346
  }
@@ -407,4 +415,5 @@ class AMDRequireDependenciesBlockParserPlugin {
407
415
  return new AMDRequireArrayDependency(depsArray, range);
408
416
  }
409
417
  }
418
+
410
419
  module.exports = AMDRequireDependenciesBlockParserPlugin;
@@ -8,6 +8,8 @@ const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
10
 
11
+ /** @typedef {import("./AMDPlugin").AmdOptions} AmdOptions */
12
+
11
13
  class AMDDefineRuntimeModule extends RuntimeModule {
12
14
  constructor() {
13
15
  super("amd define");
@@ -27,7 +29,7 @@ class AMDDefineRuntimeModule extends RuntimeModule {
27
29
 
28
30
  class AMDOptionsRuntimeModule extends RuntimeModule {
29
31
  /**
30
- * @param {Record<string, boolean | number | string>} options the AMD options
32
+ * @param {AmdOptions} options the AMD options
31
33
  */
32
34
  constructor(options) {
33
35
  super("amd options");
@@ -11,13 +11,9 @@ const makeSerializable = require("../util/makeSerializable");
11
11
  const NullDependency = require("./NullDependency");
12
12
 
13
13
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
15
14
  /** @typedef {import("../Dependency")} Dependency */
16
15
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
17
16
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
- /** @typedef {import("../DependencyTemplates")} DependencyTemplates */
19
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
21
17
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
22
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
23
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
@@ -26,15 +22,22 @@ const NullDependency = require("./NullDependency");
26
22
  class CachedConstDependency extends NullDependency {
27
23
  /**
28
24
  * @param {string} expression expression
29
- * @param {Range} range range
25
+ * @param {Range | null} range range
30
26
  * @param {string} identifier identifier
27
+ * @param {number=} place place where we inject the expression
31
28
  */
32
- constructor(expression, range, identifier) {
29
+ constructor(
30
+ expression,
31
+ range,
32
+ identifier,
33
+ place = CachedConstDependency.PLACE_MODULE
34
+ ) {
33
35
  super();
34
36
 
35
37
  this.expression = expression;
36
38
  this.range = range;
37
39
  this.identifier = identifier;
40
+ this.place = place;
38
41
  this._hashUpdate = undefined;
39
42
  }
40
43
 
@@ -42,7 +45,7 @@ class CachedConstDependency extends NullDependency {
42
45
  * @returns {string} hash update
43
46
  */
44
47
  _createHashUpdate() {
45
- return `${this.identifier}${this.range}${this.expression}`;
48
+ return `${this.place}${this.identifier}${this.range}${this.expression}`;
46
49
  }
47
50
 
48
51
  /**
@@ -67,6 +70,7 @@ class CachedConstDependency extends NullDependency {
67
70
  write(this.expression);
68
71
  write(this.range);
69
72
  write(this.identifier);
73
+ write(this.place);
70
74
 
71
75
  super.serialize(context);
72
76
  }
@@ -80,11 +84,15 @@ class CachedConstDependency extends NullDependency {
80
84
  this.expression = read();
81
85
  this.range = read();
82
86
  this.identifier = read();
87
+ this.place = read();
83
88
 
84
89
  super.deserialize(context);
85
90
  }
86
91
  }
87
92
 
93
+ CachedConstDependency.PLACE_MODULE = 10;
94
+ CachedConstDependency.PLACE_CHUNK = 20;
95
+
88
96
  makeSerializable(
89
97
  CachedConstDependency,
90
98
  "webpack/lib/dependencies/CachedConstDependency"
@@ -99,29 +107,27 @@ CachedConstDependency.Template = class CachedConstDependencyTemplate extends (
99
107
  * @param {DependencyTemplateContext} templateContext the context object
100
108
  * @returns {void}
101
109
  */
102
- apply(
103
- dependency,
104
- source,
105
- { runtimeTemplate, dependencyTemplates, initFragments }
106
- ) {
110
+ apply(dependency, source, { initFragments, chunkInitFragments }) {
107
111
  const dep = /** @type {CachedConstDependency} */ (dependency);
108
112
 
109
- initFragments.push(
113
+ (dep.place === CachedConstDependency.PLACE_MODULE
114
+ ? initFragments
115
+ : chunkInitFragments
116
+ ).push(
110
117
  new InitFragment(
111
118
  `var ${dep.identifier} = ${dep.expression};\n`,
112
119
  InitFragment.STAGE_CONSTANTS,
113
- 0,
120
+ // For a chunk we inject expression after imports
121
+ dep.place === CachedConstDependency.PLACE_MODULE ? 0 : 10,
114
122
  `const ${dep.identifier}`
115
123
  )
116
124
  );
117
125
 
118
126
  if (typeof dep.range === "number") {
119
127
  source.insert(dep.range, dep.identifier);
120
-
121
- return;
128
+ } else if (dep.range !== null) {
129
+ source.replace(dep.range[0], dep.range[1] - 1, dep.identifier);
122
130
  }
123
-
124
- source.replace(dep.range[0], dep.range[1] - 1, dep.identifier);
125
131
  }
126
132
  };
127
133
 
@@ -17,11 +17,13 @@ const processExportInfo = require("./processExportInfo");
17
17
 
18
18
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
19
19
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
20
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
20
+ /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
21
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
21
22
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
22
23
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
23
24
  /** @typedef {import("../ExportsInfo")} ExportsInfo */
24
25
  /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
26
+ /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
25
27
  /** @typedef {import("../Module")} Module */
26
28
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
27
29
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
@@ -34,14 +36,17 @@ const idsSymbol = Symbol("CommonJsExportRequireDependency.ids");
34
36
 
35
37
  const EMPTY_OBJECT = {};
36
38
 
39
+ /** @typedef {Set<string>} Exports */
40
+ /** @typedef {Set<string>} Checked */
41
+
37
42
  class CommonJsExportRequireDependency extends ModuleDependency {
38
43
  /**
39
44
  * @param {Range} range range
40
45
  * @param {Range | null} valueRange value range
41
46
  * @param {CommonJSDependencyBaseKeywords} base base
42
- * @param {string[]} names names
47
+ * @param {ExportInfoName[]} names names
43
48
  * @param {string} request request
44
- * @param {string[]} ids ids
49
+ * @param {ExportInfoName[]} ids ids
45
50
  * @param {boolean} resultUsed true, when the result is used
46
51
  */
47
52
  constructor(range, valueRange, base, names, request, ids, resultUsed) {
@@ -68,28 +73,26 @@ class CommonJsExportRequireDependency extends ModuleDependency {
68
73
 
69
74
  /**
70
75
  * @param {ModuleGraph} moduleGraph the module graph
71
- * @returns {string[]} the imported id
76
+ * @returns {ExportInfoName[]} the imported id
72
77
  */
73
78
  getIds(moduleGraph) {
74
- return (
75
- /** @type {TODO} */ (moduleGraph.getMeta(this))[idsSymbol] || this.ids
76
- );
79
+ return moduleGraph.getMeta(this)[idsSymbol] || this.ids;
77
80
  }
78
81
 
79
82
  /**
80
83
  * @param {ModuleGraph} moduleGraph the module graph
81
- * @param {string[]} ids the imported ids
84
+ * @param {ExportInfoName[]} ids the imported ids
82
85
  * @returns {void}
83
86
  */
84
87
  setIds(moduleGraph, ids) {
85
- /** @type {TODO} */ (moduleGraph.getMeta(this))[idsSymbol] = ids;
88
+ moduleGraph.getMeta(this)[idsSymbol] = ids;
86
89
  }
87
90
 
88
91
  /**
89
92
  * Returns list of exports referenced by this dependency
90
93
  * @param {ModuleGraph} moduleGraph module graph
91
94
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
92
- * @returns {(string[] | ReferencedExport)[]} referenced exports
95
+ * @returns {ReferencedExports} referenced exports
93
96
  */
94
97
  getReferencedExports(moduleGraph, runtime) {
95
98
  const ids = this.getIds(moduleGraph);
@@ -110,9 +113,9 @@ class CommonJsExportRequireDependency extends ModuleDependency {
110
113
  /** @type {Module} */ (moduleGraph.getParentModule(this))
111
114
  );
112
115
  for (const name of this.names) {
113
- const exportInfo = /** @type {ExportInfo} */ (
114
- exportsInfo.getReadOnlyExportInfo(name)
115
- );
116
+ const exportInfo =
117
+ /** @type {ExportInfo} */
118
+ (exportsInfo.getReadOnlyExportInfo(name));
116
119
  const used = exportInfo.getUsed(runtime);
117
120
  if (used === UsageState.Unused) return Dependency.NO_EXPORTS_REFERENCED;
118
121
  if (used !== UsageState.OnlyPropertiesUsed) return getFullResult();
@@ -122,18 +125,18 @@ class CommonJsExportRequireDependency extends ModuleDependency {
122
125
  if (exportsInfo.otherExportsInfo.getUsed(runtime) !== UsageState.Unused) {
123
126
  return getFullResult();
124
127
  }
125
- /** @type {string[][]} */
128
+ /** @type {RawReferencedExports} */
126
129
  const referencedExports = [];
127
130
  for (const exportInfo of exportsInfo.orderedExports) {
128
131
  processExportInfo(
129
132
  runtime,
130
133
  referencedExports,
131
- ids.concat(exportInfo.name),
134
+ [...ids, exportInfo.name],
132
135
  exportInfo,
133
136
  false
134
137
  );
135
138
  }
136
- return referencedExports.map(name => ({
139
+ return referencedExports.map((name) => ({
137
140
  name,
138
141
  canMangle: false
139
142
  }));
@@ -190,11 +193,12 @@ class CommonJsExportRequireDependency extends ModuleDependency {
190
193
  if (reexportInfo) {
191
194
  return {
192
195
  exports: Array.from(
193
- /** @type {TODO} */ (reexportInfo).exports,
194
- name => ({
196
+ /** @type {Exports} */
197
+ (reexportInfo.exports),
198
+ (name) => ({
195
199
  name,
196
200
  from,
197
- export: ids.concat(name),
201
+ export: [...ids, name],
198
202
  canMangle: !(name in EMPTY_OBJECT) && false
199
203
  })
200
204
  ),
@@ -214,7 +218,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
214
218
  * @param {ModuleGraph} moduleGraph the module graph
215
219
  * @param {RuntimeSpec} runtime the runtime
216
220
  * @param {Module} importedModule the imported module (optional)
217
- * @returns {{exports?: Set<string>, checked?: Set<string>} | undefined} information
221
+ * @returns {{ exports?: Exports, checked?: Checked } | undefined} information
218
222
  */
219
223
  getStarReexports(
220
224
  moduleGraph,
@@ -224,14 +228,16 @@ class CommonJsExportRequireDependency extends ModuleDependency {
224
228
  /** @type {ExportsInfo | undefined} */
225
229
  let importedExportsInfo = moduleGraph.getExportsInfo(importedModule);
226
230
  const ids = this.getIds(moduleGraph);
227
- if (ids.length > 0)
231
+ if (ids.length > 0) {
228
232
  importedExportsInfo = importedExportsInfo.getNestedExportsInfo(ids);
233
+ }
229
234
  /** @type {ExportsInfo | undefined} */
230
235
  let exportsInfo = moduleGraph.getExportsInfo(
231
236
  /** @type {Module} */ (moduleGraph.getParentModule(this))
232
237
  );
233
- if (this.names.length > 0)
238
+ if (this.names.length > 0) {
234
239
  exportsInfo = exportsInfo.getNestedExportsInfo(this.names);
240
+ }
235
241
 
236
242
  const noExtraExports =
237
243
  importedExportsInfo &&
@@ -247,9 +253,9 @@ class CommonJsExportRequireDependency extends ModuleDependency {
247
253
  const isNamespaceImport =
248
254
  importedModule.getExportsType(moduleGraph, false) === "namespace";
249
255
 
250
- /** @type {Set<string>} */
256
+ /** @type {Exports} */
251
257
  const exports = new Set();
252
- /** @type {Set<string>} */
258
+ /** @type {Checked} */
253
259
  const checked = new Set();
254
260
 
255
261
  if (noExtraImports) {
@@ -402,3 +408,4 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
402
408
  };
403
409
 
404
410
  module.exports = CommonJsExportRequireDependency;
411
+ module.exports.idsSymbol = idsSymbol;
@@ -16,6 +16,7 @@ const NullDependency = require("./NullDependency");
16
16
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
17
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
18
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
+ /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
19
20
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
20
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
21
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
@@ -28,7 +29,7 @@ class CommonJsExportsDependency extends NullDependency {
28
29
  * @param {Range} range range
29
30
  * @param {Range | null} valueRange value range
30
31
  * @param {CommonJSDependencyBaseKeywords} base base
31
- * @param {string[]} names names
32
+ * @param {ExportInfoName[]} names names
32
33
  */
33
34
  constructor(range, valueRange, base, names) {
34
35
  super();