@depup/webpack 5.109.0-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  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/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -0,0 +1,102 @@
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 makeSerializable = require("../util/makeSerializable");
9
+ const ConstDependency = require("./ConstDependency");
10
+ const NullDependency = require("./NullDependency");
11
+
12
+ /** @import { ReplaceSource } from "webpack-sources" */
13
+ /** @import Dependency, { UpdateHashContext } from "../Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
+ /** @import { Range } from "../javascript/JavascriptParser" */
16
+ /**
17
+ * @import {
18
+ * ObjectDeserializerContext,
19
+ * ObjectSerializerContext
20
+ * } from "../serialization/ObjectMiddleware"
21
+ */
22
+ /** @import Hash from "../util/Hash" */
23
+
24
+ /**
25
+ * A constant replacement whose source is only valid in emitted output (e.g.
26
+ * native `import.meta`), with a separate expression for build-time execution.
27
+ */
28
+ class BuildTimeConstDependency extends ConstDependency {
29
+ /**
30
+ * Creates an instance of BuildTimeConstDependency.
31
+ * @param {string} expression the expression
32
+ * @param {string} buildTimeExpression the expression for build-time execution
33
+ * @param {Range} range the source range
34
+ * @param {(string[] | null)=} runtimeRequirements runtime requirements
35
+ */
36
+ constructor(expression, buildTimeExpression, range, runtimeRequirements) {
37
+ super(expression, range, runtimeRequirements);
38
+ /** @type {string} */
39
+ this.buildTimeExpression = buildTimeExpression;
40
+ }
41
+
42
+ /**
43
+ * Updates the hash with the data contributed by this instance.
44
+ * @param {Hash} hash hash to be updated
45
+ * @param {UpdateHashContext} context context
46
+ * @returns {void}
47
+ */
48
+ updateHash(hash, context) {
49
+ super.updateHash(hash, context);
50
+ hash.update(this.buildTimeExpression);
51
+ }
52
+
53
+ /**
54
+ * Serializes this instance into the provided serializer context.
55
+ * @param {ObjectSerializerContext} context context
56
+ */
57
+ serialize(context) {
58
+ context.write(this.buildTimeExpression);
59
+ super.serialize(context);
60
+ }
61
+
62
+ /**
63
+ * Restores this instance from the provided deserializer context.
64
+ * @param {ObjectDeserializerContext} context context
65
+ */
66
+ deserialize(context) {
67
+ this.buildTimeExpression = context.read();
68
+ super.deserialize(context.rest);
69
+ }
70
+ }
71
+
72
+ makeSerializable(
73
+ BuildTimeConstDependency,
74
+ "webpack/lib/dependencies/BuildTimeConstDependency"
75
+ );
76
+
77
+ BuildTimeConstDependency.Template = class BuildTimeConstDependencyTemplate extends (
78
+ NullDependency.Template
79
+ ) {
80
+ /**
81
+ * Applies the plugin by registering its hooks on the compiler.
82
+ * @param {Dependency} dependency the dependency for which the template should be applied
83
+ * @param {ReplaceSource} source the current replace source which can be modified
84
+ * @param {DependencyTemplateContext} templateContext the context object
85
+ * @returns {void}
86
+ */
87
+ apply(dependency, source, templateContext) {
88
+ const dep = /** @type {BuildTimeConstDependency} */ (dependency);
89
+ if (dep.runtimeRequirements) {
90
+ for (const req of dep.runtimeRequirements) {
91
+ templateContext.runtimeRequirements.add(req);
92
+ }
93
+ }
94
+ const expression = templateContext.chunkGraph.buildTimeExecution
95
+ ? dep.buildTimeExpression
96
+ : dep.expression;
97
+ const range = /** @type {Range} */ (dep.range);
98
+ source.replace(range[0], range[1] - 1, expression);
99
+ }
100
+ };
101
+
102
+ module.exports = BuildTimeConstDependency;
@@ -10,14 +10,17 @@ const InitFragment = require("../InitFragment");
10
10
  const makeSerializable = require("../util/makeSerializable");
11
11
  const NullDependency = require("./NullDependency");
12
12
 
13
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../Dependency")} Dependency */
15
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
16
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
- /** @typedef {import("../util/Hash")} Hash */
13
+ /** @import { ReplaceSource } from "webpack-sources" */
14
+ /** @import Dependency, { UpdateHashContext } from "../Dependency" */
15
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
16
+ /** @import { Range } from "../javascript/JavascriptParser" */
17
+ /**
18
+ * @import {
19
+ * ObjectDeserializerContext,
20
+ * ObjectSerializerContext
21
+ * } from "../serialization/ObjectMiddleware"
22
+ */
23
+ /** @import Hash from "../util/Hash" */
21
24
 
22
25
  class CachedConstDependency extends NullDependency {
23
26
  /**
@@ -5,17 +5,15 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const InitFragment = require("../InitFragment");
8
+ const Entrypoint = require("../Entrypoint");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
- const Template = require("../Template");
11
10
  const { propertyAccess } = require("../util/property");
12
11
 
13
- /** @typedef {import("../ConcatenationScope")} ConcatenationScope */
14
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
15
- /** @typedef {import("../Module")} Module */
16
- /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
17
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
12
+ /** @import ChunkGraph from "../ChunkGraph" */
13
+ /** @import Module, { RuntimeRequirements } from "../Module" */
14
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
15
+ /** @import ModuleGraph from "../ModuleGraph" */
16
+ /** @import { RuntimeSpec } from "../util/runtime" */
19
17
  /** @typedef {"exports" | "module.exports" | "this" | "Object.defineProperty(exports)" | "Object.defineProperty(module.exports)" | "Object.defineProperty(this)"} CommonJSDependencyBaseKeywords */
20
18
 
21
19
  /**
@@ -75,54 +73,65 @@ const getRequireEsmModuleExportsAccess = (
75
73
 
76
74
  module.exports.ESM_MODULE_EXPORTS_NAME = ESM_MODULE_EXPORTS_NAME;
77
75
 
76
+ module.exports.getRequireEsmModuleExportsAccess =
77
+ getRequireEsmModuleExportsAccess;
78
+
78
79
  /**
79
- * Rewrites an `exports.<names>` reference of a concatenated CommonJS module to
80
- * a hoisted module-scope variable and registers that variable as the export's
81
- * symbol, so other concatenated modules bind to it directly.
82
- * @param {ConcatenationScope} concatenationScope the concatenation scope
83
- * @param {InitFragment<GenerateContext>[]} initFragments init fragments (receives the `var` declaration)
84
- * @param {string[]} names full member chain of the reference (at least one entry)
85
- * @returns {string} replacement expression for the whole reference
80
+ * Whether the base keyword reads the module's top-level `this`.
81
+ * @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base
82
+ * @returns {boolean} true when the base is `this`
86
83
  */
87
- module.exports.getConcatenatedExportAccess = (
88
- concatenationScope,
89
- initFragments,
90
- names
91
- ) => {
92
- const name = names[0];
93
- const identifier = Template.toIdentifier(name);
94
- // A sanitized name could collide with another export ("a-b" vs "a_b"),
95
- // so non-identifier names get a hex suffix of the raw name.
96
- const symbol = `__WEBPACK_CJS_EXPORT_${
97
- identifier === name
98
- ? name
99
- : `${identifier}_${Buffer.from(name, "utf8").toString("hex")}`
100
- }__`;
101
- initFragments.push(
102
- new InitFragment(
103
- `var ${symbol};\n`,
104
- InitFragment.STAGE_CONSTANTS,
105
- 0,
106
- `cjs concatenated export ${name}`
107
- )
108
- );
109
- concatenationScope.registerExport(name, symbol);
110
- return `${symbol}${propertyAccess(names, 1)}`;
84
+ const isThisBase = (depBase) =>
85
+ depBase === "this" || depBase === "Object.defineProperty(this)";
86
+
87
+ /**
88
+ * A classic worker script's top-level `this` is its global scope, not the
89
+ * module's exports. True only for a runtime every entry of which is a worker,
90
+ * so a module imported elsewhere keeps exports semantics in that runtime.
91
+ * @param {Module} module the module
92
+ * @param {ChunkGraph} chunkGraph the chunk graph
93
+ * @param {RuntimeSpec} runtime the runtime code is generated for
94
+ * @param {RuntimeTemplate=} runtimeTemplate the runtime template
95
+ * @returns {boolean} true when `this` is the worker's global scope
96
+ */
97
+ const isWorkerEntryThis = (module, chunkGraph, runtime, runtimeTemplate) => {
98
+ // a module worker or worklet is an ES module, where `this` is undefined and
99
+ // there is nothing to resolve it to
100
+ if (
101
+ typeof runtime !== "string" ||
102
+ runtimeTemplate === undefined ||
103
+ runtimeTemplate.isModule()
104
+ ) {
105
+ return false;
106
+ }
107
+ let workerEntry = false;
108
+ for (const chunk of chunkGraph.getModuleChunks(module)) {
109
+ if (chunk.runtime !== runtime) continue;
110
+ for (const group of chunk.groupsIterable) {
111
+ if (!(group instanceof Entrypoint)) continue;
112
+ const { options } = group;
113
+ // an entry may pin a worker to a non-worker entry's runtime, leaving one
114
+ // code generation for both roles: keep exports, the only safe answer
115
+ if (!options.worker || options.worklet) return false;
116
+ workerEntry = true;
117
+ }
118
+ }
119
+ return workerEntry;
111
120
  };
112
- module.exports.getRequireEsmModuleExportsAccess =
113
- getRequireEsmModuleExportsAccess;
114
121
 
115
122
  /**
116
123
  * Returns type and base.
117
124
  * @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base
118
125
  * @param {Module} module module
119
126
  * @param {RuntimeRequirements} runtimeRequirements runtime requirements
127
+ * @param {boolean=} isWorkerEntry whether `this` is a classic worker's global scope
120
128
  * @returns {[string, string]} type and base
121
129
  */
122
130
  module.exports.handleDependencyBase = (
123
131
  depBase,
124
132
  module,
125
- runtimeRequirements
133
+ runtimeRequirements,
134
+ isWorkerEntry
126
135
  ) => {
127
136
  /** @type {string} */
128
137
  let base;
@@ -140,8 +149,13 @@ module.exports.handleDependencyBase = (
140
149
  type = "expression";
141
150
  break;
142
151
  case "this":
143
- runtimeRequirements.add(RuntimeGlobals.thisAsExports);
144
- base = "this";
152
+ if (isWorkerEntry) {
153
+ runtimeRequirements.add(RuntimeGlobals.global);
154
+ base = RuntimeGlobals.global;
155
+ } else {
156
+ runtimeRequirements.add(RuntimeGlobals.thisAsExports);
157
+ base = "this";
158
+ }
145
159
  type = "expression";
146
160
  break;
147
161
  case "Object.defineProperty(exports)":
@@ -155,8 +169,13 @@ module.exports.handleDependencyBase = (
155
169
  type = "Object.defineProperty";
156
170
  break;
157
171
  case "Object.defineProperty(this)":
158
- runtimeRequirements.add(RuntimeGlobals.thisAsExports);
159
- base = "this";
172
+ if (isWorkerEntry) {
173
+ runtimeRequirements.add(RuntimeGlobals.global);
174
+ base = RuntimeGlobals.global;
175
+ } else {
176
+ runtimeRequirements.add(RuntimeGlobals.thisAsExports);
177
+ base = "this";
178
+ }
160
179
  type = "Object.defineProperty";
161
180
  break;
162
181
  default:
@@ -167,3 +186,5 @@ module.exports.handleDependencyBase = (
167
186
  };
168
187
  module.exports.isRequireEsmModuleExportsModule =
169
188
  isRequireEsmModuleExportsModule;
189
+ module.exports.isThisBase = isThisBase;
190
+ module.exports.isWorkerEntryThis = isWorkerEntryThis;
@@ -20,20 +20,29 @@ const {
20
20
  const ModuleDependency = require("./ModuleDependency");
21
21
  const processExportInfo = require("./processExportInfo");
22
22
 
23
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
24
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
25
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
26
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
27
- /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
28
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
29
- /** @typedef {import("../ExportsInfo")} ExportsInfo */
30
- /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
31
- /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
32
- /** @typedef {import("../Module")} Module */
33
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
34
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
35
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
36
- /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
23
+ /** @import { ReplaceSource } from "webpack-sources" */
24
+ /**
25
+ * @import {
26
+ * ExportsSpec,
27
+ * GetConditionFn,
28
+ * RawReferencedExports,
29
+ * ReferencedExports,
30
+ * TRANSITIVE,
31
+ * ExportInfoName
32
+ * } from "../Dependency"
33
+ */
34
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
35
+ /** @import ExportsInfo, { ExportInfo } from "../ExportsInfo" */
36
+ /** @import Module from "../Module" */
37
+ /** @import ModuleGraph from "../ModuleGraph" */
38
+ /** @import ModuleGraphConnection from "../ModuleGraphConnection" */
39
+ /** @import { Range } from "../javascript/JavascriptParser" */
40
+ /** @import { RuntimeSpec } from "../util/runtime" */
41
+ /**
42
+ * @import {
43
+ * CommonJSDependencyBaseKeywords
44
+ * } from "./CommonJsDependencyHelpers"
45
+ */
37
46
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectDeserializerContext */
38
47
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectSerializerContext */
39
48
 
@@ -93,6 +102,40 @@ class CommonJsExportRequireDependency extends ModuleDependency {
93
102
  return Dependency.TRANSITIVE;
94
103
  }
95
104
 
105
+ /**
106
+ * Returns true if this dependency can be concatenated
107
+ * @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
108
+ * @returns {boolean} true if this dependency can be concatenated
109
+ */
110
+ canConcatenate(concatenateCommonJsModules) {
111
+ return concatenateCommonJsModules;
112
+ }
113
+
114
+ /**
115
+ * Returns function to determine if the connection is active.
116
+ * @param {ModuleGraph} moduleGraph module graph
117
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
118
+ */
119
+ getCondition(moduleGraph) {
120
+ // Conservative: keep `module.exports = require(...)` (names empty) active even
121
+ // when the parent is evaluation-only and the target is side-effect-free.
122
+ if (this.resultUsed || this.names.length === 0) return null;
123
+ const names = this.names;
124
+ const getter = this.getter;
125
+ return (connection, runtime) => {
126
+ const parentModule = moduleGraph.getParentModule(this);
127
+ if (!parentModule) return true;
128
+ const used = moduleGraph
129
+ .getExportsInfo(parentModule)
130
+ .getUsedName(names, runtime);
131
+ if (used !== false) return true;
132
+ if (getter) return false;
133
+ const refModule = connection.resolvedModule;
134
+ if (!refModule) return true;
135
+ return refModule.getSideEffectsConnectionState(moduleGraph);
136
+ };
137
+ }
138
+
96
139
  /**
97
140
  * Returns the imported id.
98
141
  * @param {ModuleGraph} moduleGraph the module graph
@@ -149,7 +192,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
149
192
  );
150
193
  for (const name of this.names) {
151
194
  const exportInfo =
152
- /** @type {ExportInfo} */
195
+ /** @type {InstanceType<ExportInfo>} */
153
196
  (exportsInfo.getReadOnlyExportInfo(name));
154
197
  const used = exportInfo.getUsed(runtime);
155
198
  if (used === UsageState.Unused) return Dependency.NO_EXPORTS_REFERENCED;
@@ -240,6 +283,25 @@ class CommonJsExportRequireDependency extends ModuleDependency {
240
283
  dependencies: [from.module]
241
284
  };
242
285
  }
286
+ // The imported namespace ESM hasn't been flagged by
287
+ // FlagDependencyExportsPlugin yet (no exports determined), so its
288
+ // `"module.exports"` unwrap eligibility is still unknown. Star-reexporting
289
+ // now would add `__esModule` (and names) the monotonic merge can't retract
290
+ // once the module turns out to unwrap, making the result order-dependent
291
+ // across runtimes; defer — the `from.module` dependency re-queues us once
292
+ // its exports (owned names, or dynamic `other`) become known.
293
+ if (
294
+ importedModule &&
295
+ importedModule.getExportsType(moduleGraph, false) === "namespace"
296
+ ) {
297
+ const importedExportsInfo = moduleGraph.getExportsInfo(importedModule);
298
+ if (
299
+ importedExportsInfo.otherExportsInfo.provided === false &&
300
+ importedExportsInfo.ownedExports[Symbol.iterator]().next().done
301
+ ) {
302
+ return { exports: [], dependencies: [from.module] };
303
+ }
304
+ }
243
305
  const reexportInfo = this.getStarReexports(
244
306
  moduleGraph,
245
307
  undefined,
@@ -421,7 +483,8 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
421
483
  chunkGraph,
422
484
  moduleGraph,
423
485
  runtimeRequirements,
424
- runtime
486
+ runtime,
487
+ concatenationScope
425
488
  }
426
489
  ) {
427
490
  const dep = /** @type {CommonJsExportRequireDependency} */ (dependency);
@@ -430,6 +493,16 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
430
493
  moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
431
494
  );
432
495
 
496
+ const connection = /** @type {ModuleGraphConnection | undefined} */ (
497
+ moduleGraph.getConnection(dep)
498
+ );
499
+ // Inactive unused reexport: no module id; drop to a no-op.
500
+ // Missing connection (e.g. IgnorePlugin) must keep the require so it throws.
501
+ if (!used && connection && !connection.isTargetActive(runtime)) {
502
+ source.replace(dep.range[0], dep.range[1] - 1, "/* unused reexport */ 0");
503
+ return;
504
+ }
505
+
433
506
  const [type, base] = handleDependencyBase(
434
507
  dep.base,
435
508
  module,
@@ -437,32 +510,55 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
437
510
  );
438
511
 
439
512
  const importedModule = moduleGraph.getModule(dep);
440
- let requireExpr = runtimeTemplate.moduleExports({
441
- module: importedModule,
442
- chunkGraph,
443
- request: dep.request,
444
- weak: dep.weak,
445
- runtimeRequirements
446
- });
447
- if (importedModule) {
513
+ /** @type {string} */
514
+ let requireExpr;
515
+ if (
516
+ concatenationScope &&
517
+ importedModule &&
518
+ concatenationScope.isModuleInScope(importedModule)
519
+ ) {
520
+ // The alias reads the target's exports value, so it binds like `require()`
521
+ // rather than an ESM import: no interop.
448
522
  const ids = dep.getIds(moduleGraph);
449
- const esmRequireAccess = getRequireEsmModuleExportsAccess(
523
+ const requestedIds = isRequireEsmModuleExportsModule(
450
524
  importedModule,
451
- moduleGraph,
452
- runtime
453
- );
454
- if (esmRequireAccess !== null) {
455
- requireExpr += `${esmRequireAccess}${propertyAccess(ids)}`;
456
- } else {
457
- // CJS exports are never inlined
458
- const usedImported = /** @type {string | string[] | false} */ (
459
- moduleGraph.getExportsInfo(importedModule).getUsedName(ids, runtime)
525
+ moduleGraph
526
+ )
527
+ ? [ESM_MODULE_EXPORTS_NAME, ...ids]
528
+ : ids;
529
+ requireExpr = concatenationScope.createModuleReference(importedModule, {
530
+ ids: requestedIds.length > 0 ? requestedIds : undefined,
531
+ asiSafe: true,
532
+ moduleExportsAccess: true
533
+ });
534
+ } else {
535
+ requireExpr = runtimeTemplate.moduleExports({
536
+ module: importedModule,
537
+ chunkGraph,
538
+ request: dep.request,
539
+ weak: dep.weak,
540
+ runtimeRequirements
541
+ });
542
+ if (importedModule) {
543
+ const ids = dep.getIds(moduleGraph);
544
+ const esmRequireAccess = getRequireEsmModuleExportsAccess(
545
+ importedModule,
546
+ moduleGraph,
547
+ runtime
460
548
  );
461
- if (usedImported) {
462
- const comment = equals(usedImported, ids)
463
- ? ""
464
- : `${Template.toNormalComment(propertyAccess(ids))} `;
465
- requireExpr += `${comment}${propertyAccess(/** @type {string[]} */ (usedImported))}`;
549
+ if (esmRequireAccess !== null) {
550
+ requireExpr += `${esmRequireAccess}${propertyAccess(ids)}`;
551
+ } else {
552
+ // CJS exports are never inlined
553
+ const usedImported = /** @type {string | string[] | false} */ (
554
+ moduleGraph.getExportsInfo(importedModule).getUsedName(ids, runtime)
555
+ );
556
+ if (usedImported) {
557
+ const comment = equals(usedImported, ids)
558
+ ? ""
559
+ : `${Template.toNormalComment(propertyAccess(ids))} `;
560
+ requireExpr += `${comment}${propertyAccess(/** @type {string[]} */ (usedImported))}`;
561
+ }
466
562
  }
467
563
  }
468
564
  }
@@ -483,14 +579,12 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
483
579
  // barrel files (e.g. webpack's own `lib/index.js`).
484
580
  const valueRange = /** @type {Range} */ (dep.valueRange);
485
581
  if (!used) {
486
- // A lazy getter never runs `require` until accessed, so an unused
487
- // one can be dropped entirely; an eager value must keep side effects.
582
+ // Active unused eager reexport: keep side effects. Unused getters
583
+ // are inactive and already replaced with `0` above.
488
584
  source.replace(
489
585
  dep.range[0],
490
586
  dep.range[1] - 1,
491
- dep.getter
492
- ? "/* unused reexport */ 0"
493
- : `/* unused reexport */ ${requireExpr}`
587
+ `/* unused reexport */ ${requireExpr}`
494
588
  );
495
589
  return;
496
590
  }
@@ -514,5 +608,6 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
514
608
  }
515
609
  };
516
610
 
611
+ CommonJsExportRequireDependency.idsSymbol = idsSymbol;
612
+
517
613
  module.exports = CommonJsExportRequireDependency;
518
- module.exports.idsSymbol = idsSymbol;