@depup/webpack 5.109.2-depup.0 → 5.110.1-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +26 -17
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +117 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +50 -13
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +101 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +32 -47
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +141 -85
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +332 -169
  89. package/lib/RuntimeTemplate.js +2792 -352
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +261 -79
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +36 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +57 -24
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +168 -88
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5324 -0
  160. package/lib/css/syntax.js +9579 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +27 -19
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +2 -2
  230. package/lib/dependencies/ImportDependency.js +24 -20
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +49 -35
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  290. package/lib/dependencies/WorkerDependency.js +28 -22
  291. package/lib/dependencies/WorkletDependency.js +15 -14
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/processExportInfo.js +5 -5
  294. package/lib/dll/DelegatedModule.js +34 -22
  295. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  296. package/lib/dll/DelegatedPlugin.js +2 -2
  297. package/lib/dll/DllEntryPlugin.js +2 -2
  298. package/lib/dll/DllModule.js +22 -15
  299. package/lib/dll/DllModuleFactory.js +7 -3
  300. package/lib/dll/DllPlugin.js +7 -5
  301. package/lib/dll/DllReferencePlugin.js +10 -7
  302. package/lib/dll/LibManifestPlugin.js +5 -5
  303. package/lib/electron/ElectronTargetPlugin.js +53 -49
  304. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  305. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  306. package/lib/errors/BroadContextsWarning.js +43 -0
  307. package/lib/errors/BuildCycleError.js +1 -1
  308. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  309. package/lib/errors/ChunkRenderError.js +1 -1
  310. package/lib/errors/CircularDependenciesWarning.js +38 -0
  311. package/lib/errors/CodeGenerationError.js +1 -1
  312. package/lib/errors/CommentCompilationWarning.js +1 -1
  313. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  314. package/lib/errors/DuplicateModulesWarning.js +45 -0
  315. package/lib/errors/DynamicExportsWarning.js +30 -0
  316. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  317. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  318. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  319. package/lib/errors/EvalUsageWarning.js +28 -0
  320. package/lib/errors/HookWebpackError.js +5 -5
  321. package/lib/errors/HotspotsWarning.js +57 -0
  322. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  323. package/lib/errors/InlinedAssetsWarning.js +36 -0
  324. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  325. package/lib/errors/LargeModulesWarning.js +45 -0
  326. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  327. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  328. package/lib/errors/MixedExportsWarning.js +41 -0
  329. package/lib/errors/ModuleDependencyError.js +13 -16
  330. package/lib/errors/ModuleDependencyWarning.js +5 -15
  331. package/lib/errors/ModuleHashingError.js +1 -1
  332. package/lib/errors/ModuleNotFoundError.js +2 -2
  333. package/lib/errors/ModuleParseError.js +1 -2
  334. package/lib/errors/ModuleRestoreError.js +1 -1
  335. package/lib/errors/ModuleStoreError.js +1 -1
  336. package/lib/errors/NodeStuffInWebError.js +1 -1
  337. package/lib/errors/OsDependentRuleWarning.js +31 -0
  338. package/lib/errors/PureAnnotationsWarning.js +36 -0
  339. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  340. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  341. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  342. package/lib/errors/TinyChunksWarning.js +40 -0
  343. package/lib/errors/TopLevelThisWarning.js +34 -0
  344. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  345. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  346. package/lib/errors/UnusedAliasesWarning.js +29 -0
  347. package/lib/errors/UnusedDefinesWarning.js +29 -0
  348. package/lib/errors/UnusedExternalsWarning.js +29 -0
  349. package/lib/errors/UnusedReexportsWarning.js +42 -0
  350. package/lib/errors/UnusedRuleWarning.js +29 -0
  351. package/lib/errors/WebpackError.js +9 -5
  352. package/lib/errors/deriveStackFromNestedError.js +90 -0
  353. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  354. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  355. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  356. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  357. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  358. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  359. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  360. package/lib/hmr/lazyCompilationBackend.js +9 -6
  361. package/lib/hmr/parserHooks.js +56 -0
  362. package/lib/html/HtmlGenerator.js +277 -77
  363. package/lib/html/HtmlModule.js +7 -3
  364. package/lib/html/HtmlModulesPlugin.js +282 -162
  365. package/lib/html/HtmlParser.js +31 -86
  366. package/lib/html/data.js +1928 -0
  367. package/lib/html/htmlMinify.js +288 -0
  368. package/lib/html/syntax.js +5557 -1155
  369. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  370. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  371. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  372. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  373. package/lib/ids/IdHelpers.js +7 -8
  374. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  375. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  376. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  377. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  378. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  379. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  380. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  381. package/lib/index.js +10 -0
  382. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  383. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  384. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  385. package/lib/javascript/ChunkHelpers.js +1 -1
  386. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  387. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  388. package/lib/javascript/JavascriptGenerator.js +65 -165
  389. package/lib/javascript/JavascriptModule.js +9 -3
  390. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  391. package/lib/javascript/JavascriptParser.js +242 -99
  392. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  393. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  394. package/lib/javascript/StartupHelpers.js +55 -9
  395. package/lib/javascript/syntax.js +2678 -232
  396. package/lib/json/JsonData.js +8 -4
  397. package/lib/json/JsonGenerator.js +38 -16
  398. package/lib/json/JsonModule.js +7 -3
  399. package/lib/json/JsonModulesPlugin.js +1 -1
  400. package/lib/json/JsonParser.js +5 -6
  401. package/lib/library/AbstractLibraryPlugin.js +20 -14
  402. package/lib/library/AmdLibraryPlugin.js +11 -7
  403. package/lib/library/AssignLibraryPlugin.js +19 -13
  404. package/lib/library/EnableLibraryPlugin.js +2 -2
  405. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  406. package/lib/library/JsonpLibraryPlugin.js +11 -7
  407. package/lib/library/ModuleLibraryPlugin.js +256 -64
  408. package/lib/library/SystemLibraryPlugin.js +12 -8
  409. package/lib/library/UmdLibraryPlugin.js +62 -25
  410. package/lib/loaders/LoaderRunner.js +14 -1
  411. package/lib/loaders/loadLoader.js +8 -4
  412. package/lib/logging/createConsoleLogger.js +7 -4
  413. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  414. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  415. package/lib/node/NodeSourcePlugin.js +1 -1
  416. package/lib/node/NodeTargetPlugin.js +4 -3
  417. package/lib/node/NodeTemplatePlugin.js +1 -1
  418. package/lib/node/NodeWatchFileSystem.js +70 -9
  419. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  420. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  421. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  422. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/nodeConsole.js +7 -3
  424. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  425. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  426. package/lib/optimize/ConcatenatedModule.js +985 -470
  427. package/lib/optimize/ConstExportsPlugin.js +11 -7
  428. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  429. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  430. package/lib/optimize/InlineExports.js +9 -5
  431. package/lib/optimize/InnerGraph.js +28 -12
  432. package/lib/optimize/InnerGraphPlugin.js +23 -18
  433. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  434. package/lib/optimize/MangleExportsPlugin.js +7 -8
  435. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  436. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  437. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  438. package/lib/optimize/RealContentHashPlugin.js +10 -6
  439. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  440. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  441. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  442. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  443. package/lib/optimize/SplitChunksPlugin.js +86 -24
  444. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  445. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  446. package/lib/performance/BroadContextsPlugin.js +142 -0
  447. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  448. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  449. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  450. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  451. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  452. package/lib/performance/DynamicExportsPlugin.js +120 -0
  453. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  454. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  455. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  456. package/lib/performance/EvalUsagePlugin.js +115 -0
  457. package/lib/performance/HotspotsPlugin.js +296 -0
  458. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  459. package/lib/performance/LargeModulesPlugin.js +126 -0
  460. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  461. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  462. package/lib/performance/MixedExportsPlugin.js +136 -0
  463. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  464. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  465. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  466. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  467. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  468. package/lib/performance/SizeLimitsPlugin.js +139 -7
  469. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  470. package/lib/performance/TinyChunksPlugin.js +128 -0
  471. package/lib/performance/TopLevelThisPlugin.js +208 -0
  472. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  473. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  474. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  475. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  476. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  477. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  478. package/lib/performance/getModuleSize.js +22 -0
  479. package/lib/performance/getSourceModules.js +22 -0
  480. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  481. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  482. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  483. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  484. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  487. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  488. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  489. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  490. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  491. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  492. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  493. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  494. package/lib/rules/RuleSetCompiler.js +146 -12
  495. package/lib/rules/UseEffectRulePlugin.js +18 -11
  496. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  497. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  498. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  499. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  500. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  501. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  502. package/lib/runtime/CompatRuntimeModule.js +5 -3
  503. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  504. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  505. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  506. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  507. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  508. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  509. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  510. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  511. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  512. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  513. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  514. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  515. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  516. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  517. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  518. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  519. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  520. package/lib/runtime/NonceRuntimeModule.js +10 -0
  521. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  522. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  523. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  524. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  525. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  526. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  527. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  528. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  529. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  530. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  531. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  532. package/lib/runtime/baseUri.js +63 -0
  533. package/lib/schemes/DataUriPlugin.js +1 -1
  534. package/lib/schemes/FileUriPlugin.js +1 -1
  535. package/lib/schemes/HttpUriPlugin.js +24 -15
  536. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  537. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  538. package/lib/serialization/BinaryMiddleware.js +4 -4
  539. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  540. package/lib/serialization/FileMiddleware.js +7 -7
  541. package/lib/serialization/ObjectMiddleware.js +139 -114
  542. package/lib/serialization/PlainObjectSerializer.js +19 -16
  543. package/lib/sharing/ConsumeSharedModule.js +30 -21
  544. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  545. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  546. package/lib/sharing/ProvideSharedModule.js +25 -16
  547. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  548. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  549. package/lib/sharing/SharePlugin.js +17 -5
  550. package/lib/sharing/ShareRuntimeModule.js +4 -4
  551. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  552. package/lib/sharing/utils.js +1 -3
  553. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  554. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  555. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  556. package/lib/stats/StatsFactory.js +25 -26
  557. package/lib/stats/StatsPrinter.js +16 -12
  558. package/lib/typescript/TypeScriptPlugin.js +12 -14
  559. package/lib/url/URLParserPlugin.js +26 -13
  560. package/lib/util/AsyncQueue.js +4 -3
  561. package/lib/util/Hash.js +5 -1
  562. package/lib/util/LazySet.js +35 -22
  563. package/lib/util/LocConverter.js +36 -13
  564. package/lib/util/SourceProcessor.js +1050 -24
  565. package/lib/util/StringXor.js +1 -1
  566. package/lib/util/chainedImports.js +9 -5
  567. package/lib/util/cleverMerge.js +1 -1
  568. package/lib/util/comparators.js +45 -14
  569. package/lib/util/concatenate.js +203 -77
  570. package/lib/util/conventions.js +5 -1
  571. package/lib/util/createHash.js +2 -2
  572. package/lib/util/createHooksRegistry.js +8 -10
  573. package/lib/util/dataURL.js +225 -1
  574. package/lib/util/extractSourceMap.js +4 -3
  575. package/lib/util/findCaseMismatch.js +139 -0
  576. package/lib/util/formatLocation.js +1 -2
  577. package/lib/util/fs.js +22 -5
  578. package/lib/util/globUtils.js +298 -24
  579. package/lib/util/hash/BatchedHash.js +5 -1
  580. package/lib/util/hash/BulkUpdateHash.js +5 -1
  581. package/lib/util/hash/DebugHash.js +5 -1
  582. package/lib/util/hash/hash-digest.js +6 -2
  583. package/lib/util/identifier.js +4 -0
  584. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  585. package/lib/util/internalSerializables.js +6 -0
  586. package/lib/util/lazyModule.js +56 -0
  587. package/lib/util/makeSerializable.js +7 -3
  588. package/lib/util/matchAlias.js +25 -0
  589. package/lib/util/mimeTypes.js +11 -5
  590. package/lib/util/nonNumericOnlyHash.js +4 -3
  591. package/lib/util/parseJson.js +5 -3
  592. package/lib/util/preloadModuleType.js +32 -0
  593. package/lib/util/registerExternalSerializer.js +7 -5
  594. package/lib/util/runtime.js +2 -2
  595. package/lib/util/semver.js +1 -1
  596. package/lib/util/serialization.js +28 -28
  597. package/lib/util/source.js +2 -2
  598. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  599. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  600. package/lib/wasm/wasmModuleFilename.js +54 -0
  601. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  602. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  603. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  604. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  605. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  606. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  607. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  608. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  609. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  610. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  611. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  612. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  613. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  614. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  615. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  616. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  617. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  618. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  619. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  620. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  621. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  622. package/lib/web/JsonpTemplatePlugin.js +2 -2
  623. package/lib/webpack.js +22 -11
  624. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  625. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  626. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  627. package/module.d.ts +1 -0
  628. package/package.json +32 -25
  629. package/schemas/WebpackOptions.check.js +1 -1
  630. package/schemas/WebpackOptions.json +670 -36
  631. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  634. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  635. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  636. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  639. package/types.d.ts +3144 -454
  640. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -11,15 +11,15 @@ const ModuleGraphConnection = require("./ModuleGraphConnection");
11
11
  const { STAGE_DEFAULT } = require("./OptimizationStages");
12
12
  const ArrayQueue = require("./util/ArrayQueue");
13
13
  const TupleQueue = require("./util/TupleQueue");
14
+ const TupleSet = require("./util/TupleSet");
14
15
  const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
15
16
 
16
- /** @typedef {import("./Compiler")} Compiler */
17
- /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
18
- /** @typedef {import("./Dependency").ReferencedExport} ReferencedExport */
19
- /** @typedef {import("./Dependency").ReferencedExports} ReferencedExports */
20
- /** @typedef {import("./ExportsInfo")} ExportsInfo */
21
- /** @typedef {import("./Module")} Module */
22
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
17
+ /** @import Compiler from "./Compiler" */
18
+ /** @import DependenciesBlock from "./DependenciesBlock" */
19
+ /** @import { ReferencedExport, ReferencedExports } from "./Dependency" */
20
+ /** @import ExportsInfo from "./ExportsInfo" */
21
+ /** @import Module from "./Module" */
22
+ /** @import { RuntimeSpec } from "./util/runtime" */
23
23
 
24
24
  const {
25
25
  NO_EXPORTS_REFERENCED,
@@ -80,20 +80,17 @@ class FlagDependencyUsagePlugin {
80
80
  /** @type {TupleQueue<Module, RuntimeSpec>} */
81
81
  const queue = new TupleQueue();
82
82
 
83
+ /** @type {TupleSet<Module, RuntimeSpec> | undefined} */
84
+ let walkedSideEffectFreeModules;
85
+
83
86
  /**
84
87
  * Process referenced module.
85
88
  * @param {Module} module module to process
86
89
  * @param {ReferencedExports} usedExports list of used exports
87
90
  * @param {RuntimeSpec} runtime part of which runtime
88
- * @param {boolean} forceSideEffects always apply side effects
89
91
  * @returns {void}
90
92
  */
91
- const processReferencedModule = (
92
- module,
93
- usedExports,
94
- runtime,
95
- forceSideEffects
96
- ) => {
93
+ const processReferencedModule = (module, usedExports, runtime) => {
97
94
  const exportsInfo = moduleGraph.getExportsInfo(module);
98
95
  if (usedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE) {
99
96
  // The whole namespace object escapes via a reference that codegen
@@ -211,20 +208,22 @@ class FlagDependencyUsagePlugin {
211
208
  }
212
209
  }
213
210
  }
214
- } else {
215
- // for a module without side effects we stop tracking usage here when no export is used
216
- // This module won't be evaluated in this case
217
- // TODO webpack 6 remove this check
218
- if (
219
- !forceSideEffects &&
220
- module.factoryMeta !== undefined &&
221
- module.factoryMeta.sideEffectFree
222
- ) {
223
- return;
211
+ } else if (
212
+ module.factoryMeta !== undefined &&
213
+ module.factoryMeta.sideEffectFree
214
+ ) {
215
+ // Nothing is used and the module has no side effects, so it is
216
+ // not used for them either. An active connection still evaluates
217
+ // it, so keep walking it to count the references it makes itself.
218
+ if (walkedSideEffectFreeModules === undefined) {
219
+ walkedSideEffectFreeModules = new TupleSet();
224
220
  }
225
- if (exportsInfo.setUsedForSideEffectsOnly(runtime)) {
221
+ if (!walkedSideEffectFreeModules.has(module, runtime)) {
222
+ walkedSideEffectFreeModules.add(module, runtime);
226
223
  queue.enqueue(module, runtime);
227
224
  }
225
+ } else if (exportsInfo.setUsedForSideEffectsOnly(runtime)) {
226
+ queue.enqueue(module, runtime);
228
227
  }
229
228
  };
230
229
 
@@ -232,10 +231,9 @@ class FlagDependencyUsagePlugin {
232
231
  * Processes the provided module.
233
232
  * @param {DependenciesBlock} module the module
234
233
  * @param {RuntimeSpec} runtime part of which runtime
235
- * @param {boolean} forceSideEffects always apply side effects
236
234
  * @returns {void}
237
235
  */
238
- const processModule = (module, runtime, forceSideEffects) => {
236
+ const processModule = (module, runtime) => {
239
237
  /** @typedef {Map<string, string[] | ReferencedExport>} ExportMaps */
240
238
  /** @type {Map<Module, ReferencedExports | ExportMaps>} */
241
239
  const map = new Map();
@@ -258,8 +256,7 @@ class FlagDependencyUsagePlugin {
258
256
  b,
259
257
  this.global
260
258
  ? undefined
261
- : b.groupOptions.entryOptions.runtime || undefined,
262
- true
259
+ : b.groupOptions.entryOptions.runtime || undefined
263
260
  );
264
261
  } else {
265
262
  queue.enqueue(b);
@@ -274,7 +271,7 @@ class FlagDependencyUsagePlugin {
274
271
  if (activeState === false) continue;
275
272
  const { module } = connection;
276
273
  if (activeState === ModuleGraphConnection.TRANSITIVE_ONLY) {
277
- processModule(module, runtime, false);
274
+ processModule(module, runtime);
278
275
  continue;
279
276
  }
280
277
  const oldReferencedExports = map.get(module);
@@ -362,18 +359,12 @@ class FlagDependencyUsagePlugin {
362
359
 
363
360
  for (const [module, referencedExports] of map) {
364
361
  if (Array.isArray(referencedExports)) {
365
- processReferencedModule(
366
- module,
367
- referencedExports,
368
- runtime,
369
- forceSideEffects
370
- );
362
+ processReferencedModule(module, referencedExports, runtime);
371
363
  } else {
372
364
  processReferencedModule(
373
365
  module,
374
366
  [...referencedExports.values()],
375
- runtime,
376
- forceSideEffects
367
+ runtime
377
368
  );
378
369
  }
379
370
  }
@@ -382,8 +373,7 @@ class FlagDependencyUsagePlugin {
382
373
  processReferencedModule(
383
374
  module,
384
375
  EXPORTS_OBJECT_REFERENCED_MANGLEABLE,
385
- runtime,
386
- forceSideEffects
376
+ runtime
387
377
  );
388
378
  }
389
379
  }
@@ -407,12 +397,7 @@ class FlagDependencyUsagePlugin {
407
397
  const processEntryDependency = (dep, runtime) => {
408
398
  const module = moduleGraph.getModule(dep);
409
399
  if (module) {
410
- processReferencedModule(
411
- module,
412
- NO_EXPORTS_REFERENCED,
413
- runtime,
414
- true
415
- );
400
+ processReferencedModule(module, NO_EXPORTS_REFERENCED, runtime);
416
401
  }
417
402
  };
418
403
  /** @type {RuntimeSpec} */
@@ -443,7 +428,7 @@ class FlagDependencyUsagePlugin {
443
428
  const [module, runtime] = /** @type {[Module, RuntimeSpec]} */ (
444
429
  queue.dequeue()
445
430
  );
446
- processModule(module, runtime, false);
431
+ processModule(module, runtime);
447
432
  }
448
433
  logger.timeEnd("trace exports usage in graph");
449
434
  }
@@ -7,7 +7,7 @@
7
7
 
8
8
  const { getEntryRuntime } = require("./util/runtime");
9
9
 
10
- /** @typedef {import("./Compiler")} Compiler */
10
+ /** @import Compiler from "./Compiler" */
11
11
 
12
12
  const PLUGIN_NAME = "FlagEntryExportAsUsedPlugin";
13
13
 
package/lib/Generator.js CHANGED
@@ -6,22 +6,27 @@
6
6
  "use strict";
7
7
 
8
8
  const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
9
+ const memoize = require("./util/memoize");
9
10
 
10
- /** @typedef {import("webpack-sources").Source} Source */
11
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
12
- /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
13
- /** @typedef {import("./ConcatenationScope")} ConcatenationScope */
14
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
15
- /** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
16
- /** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
17
- /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
18
- /** @typedef {import("./Module").SourceType} SourceType */
19
- /** @typedef {import("./Module").SourceTypes} SourceTypes */
20
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
21
- /** @typedef {import("./NormalModule")} NormalModule */
22
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
23
- /** @typedef {import("./util/Hash")} Hash */
24
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
11
+ /** @import { Source } from "webpack-sources" */
12
+ /** @import ChunkGraph from "./ChunkGraph" */
13
+ /** @import CodeGenerationResults from "./CodeGenerationResults" */
14
+ /** @import ConcatenationScope from "./ConcatenationScope" */
15
+ /** @import DependencyTemplates from "./DependencyTemplates" */
16
+ /**
17
+ * @import {
18
+ * CodeGenerationResultData,
19
+ * ConcatenationBailoutReasonContext,
20
+ * RuntimeRequirements,
21
+ * SourceType,
22
+ * SourceTypes
23
+ * } from "./Module"
24
+ */
25
+ /** @import ModuleGraph from "./ModuleGraph" */
26
+ /** @import NormalModule from "./NormalModule" */
27
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
28
+ /** @import Hash from "./util/Hash" */
29
+ /** @import { RuntimeSpec } from "./util/runtime" */
25
30
 
26
31
  /**
27
32
  * Defines the generate context type used by this module.
@@ -56,6 +61,8 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
56
61
  * @property {RuntimeTemplate=} runtimeTemplate
57
62
  */
58
63
 
64
+ const getModuleParseError = memoize(() => require("./errors/ModuleParseError"));
65
+
59
66
  class Generator {
60
67
  /**
61
68
  * Returns generator by type.
@@ -66,6 +73,20 @@ class Generator {
66
73
  return new ByTypeGenerator(map);
67
74
  }
68
75
 
76
+ /**
77
+ * Returns the statement a module that failed to build throws when executed.
78
+ * @param {Error} error the build error
79
+ * @param {string=} parseErrorConstructor constructor for a rejected source, defaults to `SyntaxError` (WebAssembly rejects with `WebAssembly.CompileError` instead)
80
+ * @returns {string} javascript statement
81
+ */
82
+ static throwBuildErrorCode(error, parseErrorConstructor = "SyntaxError") {
83
+ // A source the parser rejected throws what a native load of it would.
84
+ const name =
85
+ error instanceof getModuleParseError() ? parseErrorConstructor : "Error";
86
+
87
+ return `throw new ${name}(${JSON.stringify(error.message)});`;
88
+ }
89
+
69
90
  /* istanbul ignore next */
70
91
  /**
71
92
  * Returns the source types available for this module.
@@ -5,7 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { SyncBailHook } = require("tapable");
9
8
  const { RawSource } = require("webpack-sources");
10
9
  const ChunkGraph = require("./ChunkGraph");
11
10
  const Compilation = require("./Compilation");
@@ -27,7 +26,7 @@ const ModuleHotAcceptDependency = require("./dependencies/ModuleHotAcceptDepende
27
26
  const ModuleHotDeclineDependency = require("./dependencies/ModuleHotDeclineDependency");
28
27
  const WebpackError = require("./errors/WebpackError");
29
28
  const HotModuleReplacementRuntimeModule = require("./hmr/HotModuleReplacementRuntimeModule");
30
- const JavascriptParser = require("./javascript/JavascriptParser");
29
+ const getParserHooks = require("./hmr/parserHooks");
31
30
  const {
32
31
  evaluateToIdentifier
33
32
  } = require("./javascript/JavascriptParserHelpers");
@@ -44,34 +43,22 @@ const {
44
43
  subtractRuntime
45
44
  } = require("./util/runtime");
46
45
 
47
- /** @typedef {import("estree").CallExpression} CallExpression */
48
- /** @typedef {import("estree").Expression} Expression */
49
- /** @typedef {import("estree").SpreadElement} SpreadElement */
50
- /** @typedef {import("./Chunk")} Chunk */
51
- /** @typedef {import("./Chunk").ChunkId} ChunkId */
52
- /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
53
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
54
- /** @typedef {import("./Compilation").Records} Records */
55
- /** @typedef {import("./Compiler")} Compiler */
56
- /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
57
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
58
- /** @typedef {import("./Module")} Module */
59
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
60
- /** @typedef {import("./css/CssModule").CssModuleBuildMeta} CssModuleBuildMeta */
61
- /** @typedef {import("./RuntimeModule")} RuntimeModule */
62
- /** @typedef {import("./javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
63
- /** @typedef {import("./javascript/JavascriptParserHelpers").Range} Range */
64
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
46
+ /** @import { CallExpression, Expression } from "estree" */
47
+ /** @import Chunk, { ChunkId } from "./Chunk" */
48
+ /** @import { ModuleId } from "./ChunkGraph" */
49
+ /** @import { AssetInfo } from "./Compilation" */
50
+ /** @import Compiler, { Records } from "./Compiler" */
51
+ /** @import CodeGenerationResults from "./CodeGenerationResults" */
52
+ /** @import Module, { BuildInfo } from "./Module" */
53
+ /** @import { CssModuleBuildMeta } from "./css/CssModule" */
54
+ /** @import { HMRJavascriptParserHooks } from "./hmr/parserHooks" */
55
+ /** @import RuntimeModule from "./RuntimeModule" */
56
+ /** @import BasicEvaluatedExpression from "./javascript/BasicEvaluatedExpression" */
57
+ /** @import JavascriptParser, { Range } from "./javascript/JavascriptParser" */
58
+ /** @import { RuntimeSpec } from "./util/runtime" */
65
59
 
66
60
  /** @typedef {string[]} Requests */
67
61
 
68
- /**
69
- * Defines the hmr javascript parser hooks type used by this module.
70
- * @typedef {object} HMRJavascriptParserHooks
71
- * @property {SyncBailHook<[Expression | SpreadElement, Requests], void>} hotAcceptCallback
72
- * @property {SyncBailHook<[CallExpression, Requests], void>} hotAcceptWithoutCallback
73
- */
74
-
75
62
  /** @typedef {number} HotIndex */
76
63
  /** @typedef {Record<string, string>} FullHashChunkModuleHashes */
77
64
  /** @typedef {Record<string, string>} ChunkModuleHashes */
@@ -85,9 +72,6 @@ const {
85
72
  /** @typedef {{ updatedChunkIds: ChunkIds, removedChunkIds: ChunkIds, removedModules: ModuleSet, forceLoadChunkIds: ChunkIds, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
86
73
  /** @typedef {Map<string, HotUpdateMainContentByRuntimeItem>} HotUpdateMainContentByRuntime */
87
74
 
88
- /** @type {WeakMap<JavascriptParser, HMRJavascriptParserHooks>} */
89
- const parserHooksMap = new WeakMap();
90
-
91
75
  const PLUGIN_NAME = "HotModuleReplacementPlugin";
92
76
 
93
77
  class HotModuleReplacementPlugin {
@@ -97,20 +81,7 @@ class HotModuleReplacementPlugin {
97
81
  * @returns {HMRJavascriptParserHooks} the attached hooks
98
82
  */
99
83
  static getParserHooks(parser) {
100
- if (!(parser instanceof JavascriptParser)) {
101
- throw new TypeError(
102
- "The 'parser' argument must be an instance of JavascriptParser"
103
- );
104
- }
105
- let hooks = parserHooksMap.get(parser);
106
- if (hooks === undefined) {
107
- hooks = {
108
- hotAcceptCallback: new SyncBailHook(["expression", "requests"]),
109
- hotAcceptWithoutCallback: new SyncBailHook(["expression", "requests"])
110
- };
111
- parserHooksMap.set(parser, hooks);
112
- }
113
- return hooks;
84
+ return getParserHooks(parser);
114
85
  }
115
86
 
116
87
  /**
@@ -132,6 +103,7 @@ class HotModuleReplacementPlugin {
132
103
  * @returns {(expr: CallExpression) => boolean | undefined} callback
133
104
  */
134
105
  const createAcceptHandler = (parser, ParamDependency) => {
106
+ // through the static method: replacing it stays a way to intercept
135
107
  const { hotAcceptCallback, hotAcceptWithoutCallback } =
136
108
  HotModuleReplacementPlugin.getParserHooks(parser);
137
109
 
@@ -8,10 +8,14 @@
8
8
  const RawModule = require("./RawModule");
9
9
  const EntryDependency = require("./dependencies/EntryDependency");
10
10
 
11
- /** @typedef {import("../declarations/plugins/IgnorePlugin").IgnorePluginOptions} IgnorePluginOptions */
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
14
- /** @typedef {import("./ContextModuleFactory").BeforeContextResolveData} BeforeContextResolveData */
11
+ /**
12
+ * @import {
13
+ * IgnorePluginOptions
14
+ * } from "../declarations/plugins/IgnorePlugin"
15
+ */
16
+ /** @import Compiler from "./Compiler" */
17
+ /** @import { ResolveData } from "./NormalModuleFactory" */
18
+ /** @import { BeforeContextResolveData } from "./ContextModuleFactory" */
15
19
 
16
20
  /** @typedef {(resource: string, context: string) => boolean} CheckResourceFn */
17
21
 
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("./Compiler")} Compiler */
9
- /** @typedef {import("./Compilation")} Compilation */
8
+ /** @import Compiler from "./Compiler" */
9
+ /** @import Compilation from "./Compilation" */
10
10
 
11
11
  /** @typedef {(warning: Error, compilation: Compilation) => boolean} IgnoreFn */
12
12
 
@@ -8,10 +8,14 @@
8
8
  const { ConcatSource } = require("webpack-sources");
9
9
  const makeSerializable = require("./util/makeSerializable");
10
10
 
11
- /** @typedef {import("webpack-sources").Source} Source */
12
- /** @typedef {import("./Generator").GenerateContext} GenerateContext */
13
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
11
+ /** @import { Source } from "webpack-sources" */
12
+ /** @import { GenerateContext } from "./Generator" */
13
+ /**
14
+ * @import {
15
+ * ObjectDeserializerContext,
16
+ * ObjectSerializerContext
17
+ * } from "./serialization/ObjectMiddleware"
18
+ */
15
19
 
16
20
  /** @typedef {string} InitFragmentKey */
17
21
 
@@ -12,10 +12,14 @@ const {
12
12
  } = require("./ModuleTypeConstants");
13
13
  const { getInnerGraphUtils } = require("./optimize/InnerGraph");
14
14
 
15
- /** @typedef {import("./Compiler")} Compiler */
16
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
17
- /** @typedef {import("./javascript/JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
18
- /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
15
+ /** @import Compiler from "./Compiler" */
16
+ /** @import { BuildInfo } from "./Module" */
17
+ /**
18
+ * @import {
19
+ * JavascriptModuleBuildInfo
20
+ * } from "./javascript/JavascriptModule"
21
+ */
22
+ /** @import JavascriptParser from "./javascript/JavascriptParser" */
19
23
 
20
24
  const PLUGIN_NAME = "JavascriptMetaInfoPlugin";
21
25
 
@@ -36,6 +40,26 @@ class JavascriptMetaInfoPlugin {
36
40
  * @returns {void}
37
41
  */
38
42
  const handler = (parser) => {
43
+ parser.hooks.program.tap(PLUGIN_NAME, (ast) => {
44
+ // Nested blocks keep their own disposal scope, only a module-scope
45
+ // declaration ties disposal to the end of module evaluation.
46
+ if (
47
+ ast.body.some(
48
+ (statement) =>
49
+ statement.type === "VariableDeclaration" &&
50
+ (statement.kind === "using" ||
51
+ statement.kind === "await using")
52
+ )
53
+ ) {
54
+ const buildInfo =
55
+ /** @type {JavascriptModuleBuildInfo} */
56
+ (parser.state.module.buildInfo);
57
+ buildInfo.usesTopLevelUsingDeclaration = true;
58
+ // Concatenation would defer disposal to the enclosing scope.
59
+ buildInfo.moduleConcatenationBailout =
60
+ "a top-level using declaration";
61
+ }
62
+ });
39
63
  parser.hooks.call.for("eval").tap(PLUGIN_NAME, () => {
40
64
  const buildInfo =
41
65
  /** @type {JavascriptModuleBuildInfo} */
@@ -45,7 +69,14 @@ class JavascriptMetaInfoPlugin {
45
69
  if (currentSymbol) {
46
70
  innerGraph.addUsage(parser.state, null, currentSymbol);
47
71
  } else {
72
+ // Only worth reporting when the analysis was actually running
73
+ const wasEnabled = innerGraph.isEnabled(parser.state);
48
74
  innerGraph.bailout(parser.state);
75
+ if (wasEnabled) {
76
+ compilation.moduleGraph
77
+ .getOptimizationBailout(parser.state.module)
78
+ .push("Inner graph bailout: eval()");
79
+ }
49
80
  }
50
81
  });
51
82
  parser.hooks.finish.tap(PLUGIN_NAME, () => {
package/lib/LazyBarrel.js CHANGED
@@ -7,10 +7,9 @@
7
7
 
8
8
  const Dependency = require("./Dependency");
9
9
 
10
- /** @typedef {import("./Compilation")} Compilation */
11
- /** @typedef {import("./Compilation").DependencyConstructor} DependencyConstructor */
12
- /** @typedef {import("./Module")} Module */
13
- /** @typedef {import("./ModuleFactory")} ModuleFactory */
10
+ /** @import Compilation, { DependencyConstructor } from "./Compilation" */
11
+ /** @import Module from "./Module" */
12
+ /** @import ModuleFactory from "./ModuleFactory" */
14
13
 
15
14
  /**
16
15
  * Defines the deferred request group type used by this module.
@@ -7,12 +7,16 @@
7
7
 
8
8
  const EnableLibraryPlugin = require("./library/EnableLibraryPlugin");
9
9
 
10
- /** @typedef {import("../declarations/WebpackOptions").AuxiliaryComment} AuxiliaryComment */
11
- /** @typedef {import("../declarations/WebpackOptions").LibraryExport} LibraryExport */
12
- /** @typedef {import("../declarations/WebpackOptions").LibraryName} LibraryName */
13
- /** @typedef {import("../declarations/WebpackOptions").LibraryType} LibraryType */
14
- /** @typedef {import("../declarations/WebpackOptions").UmdNamedDefine} UmdNamedDefine */
15
- /** @typedef {import("./Compiler")} Compiler */
10
+ /**
11
+ * @import {
12
+ * AuxiliaryComment,
13
+ * LibraryExport,
14
+ * LibraryName,
15
+ * LibraryType,
16
+ * UmdNamedDefine
17
+ * } from "../declarations/WebpackOptions"
18
+ */
19
+ /** @import Compiler from "./Compiler" */
16
20
 
17
21
  // TODO webpack 6 remove
18
22
  class LibraryTemplatePlugin {
@@ -8,9 +8,13 @@
8
8
  const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
9
9
  const NormalModule = require("./NormalModule");
10
10
 
11
- /** @typedef {import("../declarations/plugins/LoaderOptionsPlugin").LoaderOptionsPluginOptions} LoaderOptionsPluginOptions */
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./ModuleFilenameHelpers").MatchObject} MatchObject */
11
+ /**
12
+ * @import {
13
+ * LoaderOptionsPluginOptions
14
+ * } from "../declarations/plugins/LoaderOptionsPlugin"
15
+ */
16
+ /** @import Compiler from "./Compiler" */
17
+ /** @import { MatchObject } from "./ModuleFilenameHelpers" */
14
18
 
15
19
  /**
16
20
  * Defines the loader context type used by this module.
@@ -7,7 +7,7 @@
7
7
 
8
8
  const NormalModule = require("./NormalModule");
9
9
 
10
- /** @typedef {import("./Compiler")} Compiler */
10
+ /** @import Compiler from "./Compiler" */
11
11
 
12
12
  const PLUGIN_NAME = "LoaderTargetPlugin";
13
13