@depup/webpack 5.109.2-depup.0 → 5.110.3-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 (647) 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 +46 -35
  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 +107 -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 +91 -26
  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 +111 -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 +40 -49
  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 +152 -103
  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 +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  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 +12 -6
  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 +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -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 +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  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 +5334 -0
  160. package/lib/css/syntax.js +9647 -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 +170 -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 +24 -11
  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 +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  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 +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -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 +49 -31
  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 +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  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 +73 -49
  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 +50 -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 +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -7,6 +7,7 @@
7
7
 
8
8
  const memoize = require("../util/memoize");
9
9
 
10
+ // browserslist pulls in caniuse-lite; only a browserslist target needs it
10
11
  const getBrowserslistTargetHandler = memoize(() =>
11
12
  require("./browserslistTargetHandler")
12
13
  );
@@ -81,6 +82,8 @@ const getDefaultTarget = (context) => {
81
82
  * @property {boolean | null} templateLiteral template literal is available
82
83
  * @property {boolean | null} asyncFunction async functions and await are available
83
84
  * @property {boolean | null} generator generator functions and yield are available
85
+ * @property {(boolean | null)=} deferImport deferred evaluation (`import defer`, `import.defer()`) is available (optional; absent means "assume unavailable")
86
+ * @property {(boolean | null)=} sourceImport source phase imports (`import source`, `import.source()`) are available (optional; absent means "assume unavailable")
84
87
  */
85
88
 
86
89
  /**
@@ -116,12 +119,16 @@ const versionDependent = (major, minor) => {
116
119
  nMajor > vMajor || (nMajor === vMajor && nMinor >= vMinor);
117
120
  };
118
121
 
122
+ // A `browserslist` target, with an optional `:env` / `:query` / config path
123
+ // after the keyword that `browserslistTargetHandler.load` reads.
124
+ const BROWSERSLIST_TARGET = /^browserslist(?::(.+))?$/;
125
+
119
126
  /** @type {[string, string, RegExp, (...args: string[]) => Partial<TargetProperties>][]} */
120
127
  const TARGETS = [
121
128
  [
122
129
  "browserslist / browserslist:env / browserslist:query / browserslist:path-to-config / browserslist:path-to-config:env",
123
130
  "Resolve features from browserslist. Will resolve browserslist config automatically. Only browser or node queries are supported (electron is not supported). Examples: 'browserslist:modern' to use 'modern' environment from browserslist config",
124
- /^browserslist(?::(.+))?$/,
131
+ BROWSERSLIST_TARGET,
125
132
  (rest, context) => {
126
133
  const browserslistTargetHandler = getBrowserslistTargetHandler();
127
134
  const browsers = browserslistTargetHandler.load(
@@ -267,7 +274,9 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
267
274
  bigIntLiteral: v(10, 4),
268
275
  dynamicImport: v(12, 17),
269
276
  dynamicImportInWorker: v(12, 17),
270
- module: v(12, 17)
277
+ module: v(12, 17),
278
+ // v24.5.0, for WebAssembly only; `import defer` is not implemented
279
+ sourceImport: v(24, 5)
271
280
  };
272
281
  }
273
282
  ],
@@ -319,7 +328,11 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
319
328
  spread: true,
320
329
  templateLiteral: true,
321
330
  asyncFunction: true,
322
- generator: true
331
+ generator: true,
332
+ // import defer - v2.8.0
333
+ deferImport: v(2, 8),
334
+ // import source - v2.6.0
335
+ sourceImport: v(2, 6)
323
336
  };
324
337
  }
325
338
  ],
@@ -536,6 +549,10 @@ const getTargetProperties = (target, context) => {
536
549
  );
537
550
  };
538
551
 
552
+ // Absence means "cannot read it" here, so a target omitting one votes against rather
553
+ // than letting another's `true` stand — `["web", "deno2.8"]` reads neither phase.
554
+ const UNSUPPORTED_WHEN_ABSENT = new Set(["deferImport", "sourceImport"]);
555
+
539
556
  /**
540
557
  * Merges target properties.
541
558
  * @param {TargetProperties[]} targetProperties array of target properties
@@ -563,6 +580,10 @@ const mergeTargetProperties = (targetProperties) => {
563
580
  case false:
564
581
  hasFalse = true;
565
582
  break;
583
+ default:
584
+ if (value === undefined && UNSUPPORTED_WHEN_ABSENT.has(key)) {
585
+ hasFalse = true;
586
+ }
566
587
  }
567
588
  }
568
589
  if (hasTrue || hasFalse) {
@@ -582,6 +603,28 @@ const mergeTargetProperties = (targetProperties) => {
582
603
  const getTargetsProperties = (targets, context) =>
583
604
  mergeTargetProperties(targets.map((t) => getTargetProperties(t, context)));
584
605
 
606
+ /**
607
+ * The raw browserslist selection behind the targets (`["chrome 100", …]`), merged
608
+ * across every `browserslist` target and deduplicated — undefined when none is
609
+ * one, and prefixing stays off with no browser list to prefix for.
610
+ * @param {string[]} targets the targets
611
+ * @param {string} context the context directory
612
+ * @returns {string[] | undefined} the selected browsers, or undefined
613
+ */
614
+ const getTargetsBrowsers = (targets, context) => {
615
+ const { load } = getBrowserslistTargetHandler();
616
+ /** @type {Set<string>} */
617
+ const browsers = new Set();
618
+ for (const target of targets) {
619
+ const match = BROWSERSLIST_TARGET.exec(target);
620
+ if (!match) continue;
621
+ const selected = load(match[1] ? match[1].trim() : null, context);
622
+ if (selected) for (const browser of selected) browsers.add(browser);
623
+ }
624
+ return browsers.size === 0 ? undefined : [...browsers];
625
+ };
626
+
585
627
  module.exports.getDefaultTarget = getDefaultTarget;
586
628
  module.exports.getTargetProperties = getTargetProperties;
629
+ module.exports.getTargetsBrowsers = getTargetsBrowsers;
587
630
  module.exports.getTargetsProperties = getTargetsProperties;
@@ -8,7 +8,7 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
- /** @typedef {import("./ContainerEntryModule").ExposesList} ExposesList */
11
+ /** @import { ExposesList } from "./ContainerEntryModule" */
12
12
 
13
13
  class ContainerEntryDependency extends Dependency {
14
14
  /**
@@ -19,22 +19,30 @@ const StaticExportsDependency = require("../dependencies/StaticExportsDependency
19
19
  const makeSerializable = require("../util/makeSerializable");
20
20
  const ContainerExposedDependency = require("./ContainerExposedDependency");
21
21
 
22
- /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
23
- /** @typedef {import("../Compilation")} Compilation */
24
- /** @typedef {import("../Module").BuildCallback} BuildCallback */
25
- /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
26
- /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
27
- /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
28
- /** @typedef {import("../Module").LibIdent} LibIdent */
29
- /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
30
- /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
31
- /** @typedef {import("../Module").Sources} Sources */
32
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
33
- /** @typedef {import("../RequestShortener")} RequestShortener */
34
- /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
22
+ /**
23
+ * @import {
24
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
25
+ * } from "../config/defaults"
26
+ */
27
+ /** @import Compilation from "../Compilation" */
28
+ /**
29
+ * @import {
30
+ * BuildCallback,
31
+ * CodeGenerationContext,
32
+ * CodeGenerationResult,
33
+ * LibIdentOptions,
34
+ * LibIdent,
35
+ * NeedBuildCallback,
36
+ * NeedBuildContext,
37
+ * Sources,
38
+ * SourceTypes
39
+ * } from "../Module"
40
+ */
41
+ /** @import RequestShortener from "../RequestShortener" */
42
+ /** @import { ResolverWithOptions } from "../ResolverFactory" */
35
43
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ExposesList, string]>} ObjectDeserializerContext */
36
44
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ExposesList, string]>} ObjectSerializerContext */
37
- /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
45
+ /** @import { InputFileSystem } from "../util/fs" */
38
46
 
39
47
  /**
40
48
  * Defines the expose options type used by this module.
@@ -194,7 +202,8 @@ class ContainerEntryModule extends Module {
194
202
  block,
195
203
  message: "",
196
204
  chunkGraph,
197
- runtimeRequirements
205
+ runtimeRequirements,
206
+ originModule: this
198
207
  })}.then(${runtimeTemplate.returningFunction(
199
208
  runtimeTemplate.returningFunction(
200
209
  `(${modules
@@ -8,9 +8,13 @@
8
8
  const ModuleFactory = require("../ModuleFactory");
9
9
  const ContainerEntryModule = require("./ContainerEntryModule");
10
10
 
11
- /** @typedef {import("../ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
12
- /** @typedef {import("../ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
13
- /** @typedef {import("./ContainerEntryDependency")} ContainerEntryDependency */
11
+ /**
12
+ * @import {
13
+ * ModuleFactoryCallback,
14
+ * ModuleFactoryCreateData
15
+ * } from "../ModuleFactory"
16
+ */
17
+ /** @import ContainerEntryDependency from "./ContainerEntryDependency" */
14
18
 
15
19
  module.exports = class ContainerEntryModuleFactory extends ModuleFactory {
16
20
  /**
@@ -5,19 +5,19 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const memoize = require("../util/memoize");
9
8
  const ContainerEntryDependency = require("./ContainerEntryDependency");
10
9
  const ContainerEntryModuleFactory = require("./ContainerEntryModuleFactory");
11
10
  const ContainerExposedDependency = require("./ContainerExposedDependency");
11
+ const getModuleFederationCompilationHooks = require("./moduleFederationHooks");
12
12
  const { parseOptions } = require("./options");
13
13
 
14
- /** @typedef {import("../../declarations/plugins/container/ContainerPlugin").ContainerPluginOptions} ContainerPluginOptions */
15
- /** @typedef {import("../Compiler")} Compiler */
16
- /** @typedef {import("./ContainerEntryModule").ExposesList} ExposesList */
17
-
18
- const getModuleFederationPlugin = memoize(() =>
19
- require("./ModuleFederationPlugin")
20
- );
14
+ /**
15
+ * @import {
16
+ * ContainerPluginOptions
17
+ * } from "../../declarations/plugins/container/ContainerPlugin"
18
+ */
19
+ /** @import Compiler from "../Compiler" */
20
+ /** @import { ExposesList } from "./ContainerEntryModule" */
21
21
 
22
22
  const PLUGIN_NAME = "ContainerPlugin";
23
23
 
@@ -78,8 +78,7 @@ class ContainerPlugin {
78
78
  const shareScope = this.options.shareScope || "default";
79
79
 
80
80
  compiler.hooks.make.tapAsync(PLUGIN_NAME, (compilation, callback) => {
81
- const hooks =
82
- getModuleFederationPlugin().getCompilationHooks(compilation);
81
+ const hooks = getModuleFederationCompilationHooks(compilation);
83
82
  const dep = new ContainerEntryDependency(
84
83
  this.options.name,
85
84
  exposes,
@@ -16,8 +16,12 @@ const RemoteRuntimeModule = require("./RemoteRuntimeModule");
16
16
  const RemoteToExternalDependency = require("./RemoteToExternalDependency");
17
17
  const { parseOptions } = require("./options");
18
18
 
19
- /** @typedef {import("../../declarations/plugins/container/ContainerReferencePlugin").ContainerReferencePluginOptions} ContainerReferencePluginOptions */
20
- /** @typedef {import("../Compiler")} Compiler */
19
+ /**
20
+ * @import {
21
+ * ContainerReferencePluginOptions
22
+ * } from "../../declarations/plugins/container/ContainerReferencePlugin"
23
+ */
24
+ /** @import Compiler from "../Compiler" */
21
25
 
22
26
  const slashCode = "/".charCodeAt(0);
23
27
  const PLUGIN_NAME = "ContainerReferencePlugin";
@@ -8,7 +8,7 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
- /** @typedef {import("./RemoteModule").ExternalRequests} ExternalRequests */
11
+ /** @import { ExternalRequests } from "./RemoteModule" */
12
12
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalRequests]>} ObjectDeserializerContext */
13
13
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalRequests]>} ObjectSerializerContext */
14
14
 
@@ -17,25 +17,32 @@ const Template = require("../Template");
17
17
  const makeSerializable = require("../util/makeSerializable");
18
18
  const FallbackItemDependency = require("./FallbackItemDependency");
19
19
 
20
- /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
21
- /** @typedef {import("../Chunk")} Chunk */
22
- /** @typedef {import("../Compilation")} Compilation */
23
- /** @typedef {import("../Module").BuildCallback} BuildCallback */
24
- /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
25
- /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
26
- /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
27
- /** @typedef {import("../Module").LibIdent} LibIdent */
28
- /** @typedef {import("../Module").NameForCondition} NameForCondition */
29
- /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
30
- /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
31
- /** @typedef {import("../Module").Sources} Sources */
32
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
33
- /** @typedef {import("../RequestShortener")} RequestShortener */
34
- /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
20
+ /**
21
+ * @import {
22
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
23
+ * } from "../config/defaults"
24
+ */
25
+ /** @import Chunk from "../Chunk" */
26
+ /** @import Compilation from "../Compilation" */
27
+ /**
28
+ * @import {
29
+ * BuildCallback,
30
+ * CodeGenerationContext,
31
+ * CodeGenerationResult,
32
+ * LibIdentOptions,
33
+ * LibIdent,
34
+ * NeedBuildCallback,
35
+ * NeedBuildContext,
36
+ * Sources,
37
+ * SourceTypes
38
+ * } from "../Module"
39
+ */
40
+ /** @import RequestShortener from "../RequestShortener" */
41
+ /** @import { ResolverWithOptions } from "../ResolverFactory" */
35
42
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExternalRequests]>} ObjectDeserializerContext */
36
43
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExternalRequests]>} ObjectSerializerContext */
37
- /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
38
- /** @typedef {import("./RemoteModule").ExternalRequests} ExternalRequests */
44
+ /** @import { InputFileSystem } from "../util/fs" */
45
+ /** @import { ExternalRequests } from "./RemoteModule" */
39
46
 
40
47
  const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
41
48
 
@@ -8,9 +8,13 @@
8
8
  const ModuleFactory = require("../ModuleFactory");
9
9
  const FallbackModule = require("./FallbackModule");
10
10
 
11
- /** @typedef {import("../ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
12
- /** @typedef {import("../ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
13
- /** @typedef {import("./FallbackDependency")} FallbackDependency */
11
+ /**
12
+ * @import {
13
+ * ModuleFactoryCallback,
14
+ * ModuleFactoryCreateData
15
+ * } from "../ModuleFactory"
16
+ */
17
+ /** @import FallbackDependency from "./FallbackDependency" */
14
18
 
15
19
  module.exports = class FallbackModuleFactory extends ModuleFactory {
16
20
  /**
@@ -8,17 +8,13 @@
8
8
  const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
9
9
  const ExternalModule = require("../ExternalModule");
10
10
  const { STAGE_ADVANCED } = require("../OptimizationStages");
11
- const memoize = require("../util/memoize");
12
11
  const { forEachRuntime } = require("../util/runtime");
12
+ const getModuleFederationCompilationHooks = require("./moduleFederationHooks");
13
13
 
14
- /** @typedef {import("../Compilation")} Compilation */
15
- /** @typedef {import("../Compiler")} Compiler */
16
- /** @typedef {import("../Dependency")} Dependency */
17
- /** @typedef {import("../Module")} Module */
18
-
19
- const getModuleFederationPlugin = memoize(() =>
20
- require("./ModuleFederationPlugin")
21
- );
14
+ /** @import Compilation from "../Compilation" */
15
+ /** @import Compiler from "../Compiler" */
16
+ /** @import Dependency from "../Dependency" */
17
+ /** @import Module from "../Module" */
22
18
 
23
19
  const PLUGIN_NAME = "HoistContainerReferences";
24
20
 
@@ -32,8 +28,7 @@ class HoistContainerReferences {
32
28
  */
33
29
  apply(compiler) {
34
30
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
35
- const hooks =
36
- getModuleFederationPlugin().getCompilationHooks(compilation);
31
+ const hooks = getModuleFederationCompilationHooks(compilation);
37
32
  /** @type {Set<Dependency>} */
38
33
  const depsToTrace = new Set();
39
34
  /** @type {Set<Dependency>} */
@@ -5,35 +5,20 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { SyncHook } = require("tapable");
9
8
  const isValidExternalsType = require("../../schemas/plugins/container/ExternalsType.check");
10
9
  const SharePlugin = require("../sharing/SharePlugin");
11
- const createHooksRegistry = require("../util/createHooksRegistry");
12
10
  const ContainerPlugin = require("./ContainerPlugin");
13
11
  const ContainerReferencePlugin = require("./ContainerReferencePlugin");
14
12
  const HoistContainerReferences = require("./HoistContainerReferencesPlugin");
15
-
16
- /** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").ExternalsType} ExternalsType */
17
- /** @typedef {import("../../declarations/plugins/container/ModuleFederationPlugin").ModuleFederationPluginOptions} ModuleFederationPluginOptions */
18
- /** @typedef {import("../Compiler")} Compiler */
19
- /** @typedef {import("../Dependency")} Dependency */
20
-
21
- const createCompilationHooks = () => ({
22
- /**
23
- * @type {SyncHook<Dependency>}
24
- * @since 5.96.0
25
- */
26
- addContainerEntryDependency: new SyncHook(["dependency"]),
27
- /**
28
- * @type {SyncHook<Dependency>}
29
- * @since 5.96.0
30
- */
31
- addFederationRuntimeDependency: new SyncHook(["dependency"])
32
- });
13
+ const getCompilationHooks = require("./moduleFederationHooks");
33
14
 
34
15
  /**
35
- * @typedef {ReturnType<typeof createCompilationHooks>} CompilationHooks
16
+ * @import {
17
+ * ExternalsType,
18
+ * ModuleFederationPluginOptions
19
+ * } from "../../declarations/plugins/container/ModuleFederationPlugin"
36
20
  */
21
+ /** @import Compiler from "../Compiler" */
37
22
 
38
23
  const PLUGIN_NAME = "ModuleFederationPlugin";
39
24
 
@@ -120,8 +105,6 @@ class ModuleFederationPlugin {
120
105
  }
121
106
  }
122
107
 
123
- ModuleFederationPlugin.getCompilationHooks = createHooksRegistry(
124
- createCompilationHooks
125
- );
108
+ ModuleFederationPlugin.getCompilationHooks = getCompilationHooks;
126
109
 
127
110
  module.exports = ModuleFederationPlugin;
@@ -17,27 +17,35 @@ const makeSerializable = require("../util/makeSerializable");
17
17
  const FallbackDependency = require("./FallbackDependency");
18
18
  const RemoteToExternalDependency = require("./RemoteToExternalDependency");
19
19
 
20
- /** @typedef {import("../config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
21
- /** @typedef {import("../Compilation")} Compilation */
22
- /** @typedef {import("../Module").BuildCallback} BuildCallback */
23
- /** @typedef {import("../Module").CodeGenerationContext} CodeGenerationContext */
24
- /** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
25
- /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
26
- /** @typedef {import("../Module").LibIdentOptions} LibIdentOptions */
27
- /** @typedef {import("../Module").LibIdent} LibIdent */
28
- /** @typedef {import("../Module").NameForCondition} NameForCondition */
29
- /** @typedef {import("../Module").NeedBuildCallback} NeedBuildCallback */
30
- /** @typedef {import("../Module").NeedBuildContext} NeedBuildContext */
31
- /** @typedef {import("../Module").Sources} Sources */
32
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
33
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
34
- /** @typedef {import("../Module").ExportsType} ExportsType */
35
- /** @typedef {import("../RequestShortener")} RequestShortener */
36
- /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
20
+ /**
21
+ * @import {
22
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
23
+ * } from "../config/defaults"
24
+ */
25
+ /** @import Compilation from "../Compilation" */
26
+ /**
27
+ * @import {
28
+ * BuildCallback,
29
+ * CodeGenerationContext,
30
+ * CodeGenerationResultData,
31
+ * CodeGenerationResult,
32
+ * LibIdentOptions,
33
+ * LibIdent,
34
+ * NameForCondition,
35
+ * NeedBuildCallback,
36
+ * NeedBuildContext,
37
+ * Sources,
38
+ * SourceTypes,
39
+ * ExportsType,
40
+ * BasicSourceTypes
41
+ * } from "../Module"
42
+ */
43
+ /** @import ModuleGraph from "../ModuleGraph" */
44
+ /** @import RequestShortener from "../RequestShortener" */
45
+ /** @import { ResolverWithOptions } from "../ResolverFactory" */
37
46
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ExternalRequests, string, string]>} ObjectDeserializerContext */
38
47
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ExternalRequests, string, string]>} ObjectSerializerContext */
39
- /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
40
- /** @typedef {import("../Module").BasicSourceTypes} BasicSourceTypes */
48
+ /** @import { InputFileSystem } from "../util/fs" */
41
49
 
42
50
  const RUNTIME_REQUIREMENTS = new Set([RuntimeGlobals.module]);
43
51
 
@@ -8,13 +8,12 @@
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
+ const { compareModulesByIdentifier } = require("../util/comparators");
11
12
 
12
- /** @typedef {import("../Chunk")} Chunk */
13
- /** @typedef {import("../Chunk").ChunkId} ChunkId */
14
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
15
- /** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
16
- /** @typedef {import("../Compilation")} Compilation */
17
- /** @typedef {import("./RemoteModule")} RemoteModule */
13
+ /** @import Chunk, { ChunkId } from "../Chunk" */
14
+ /** @import ChunkGraph, { ModuleId } from "../ChunkGraph" */
15
+ /** @import Compilation from "../Compilation" */
16
+ /** @import RemoteModule from "./RemoteModule" */
18
17
 
19
18
  class RemoteRuntimeModule extends RuntimeModule {
20
19
  constructor() {
@@ -36,9 +35,12 @@ class RemoteRuntimeModule extends RuntimeModule {
36
35
  for (const chunk of /** @type {Chunk} */ (
37
36
  this.chunk
38
37
  ).getAllReferencedChunks()) {
39
- const modules = chunkGraph.getChunkModulesIterableBySourceType(
38
+ // ordered explicitly: an unordered read reflects whichever comparator
39
+ // last sorted the chunk's modules, which is not ours to depend on
40
+ const modules = chunkGraph.getOrderedChunkModulesIterableBySourceType(
40
41
  chunk,
41
- "remote"
42
+ "remote",
43
+ compareModulesByIdentifier
42
44
  );
43
45
  if (!modules) continue;
44
46
  /** @type {ModuleId[]} */
@@ -0,0 +1,32 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const { SyncHook } = require("tapable");
9
+ const createHooksRegistry = require("../util/createHooksRegistry");
10
+
11
+ /** @import Dependency from "../Dependency" */
12
+
13
+ const createCompilationHooks = () => ({
14
+ /**
15
+ * @type {SyncHook<Dependency>}
16
+ * @since 5.96.0
17
+ */
18
+ addContainerEntryDependency: new SyncHook(["dependency"]),
19
+ /**
20
+ * @type {SyncHook<Dependency>}
21
+ * @since 5.96.0
22
+ */
23
+ addFederationRuntimeDependency: new SyncHook(["dependency"])
24
+ });
25
+
26
+ /** @typedef {ReturnType<typeof createCompilationHooks>} CompilationHooks */
27
+
28
+ // lives outside `ModuleFederationPlugin` so the plugins it applies can read the
29
+ // hooks without requiring it back
30
+ const getCompilationHooks = createHooksRegistry(createCompilationHooks);
31
+
32
+ module.exports = getCompilationHooks;