@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
@@ -9,15 +9,14 @@ const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const ModuleDependency = require("./ModuleDependency");
11
11
 
12
- /** @typedef {import("../ContextModule")} ContextModule */
13
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
14
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
15
- /** @typedef {import("../Module")} Module */
16
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
- /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
18
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined]>} ObjectDeserializerContext */
20
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined]>} ObjectSerializerContext */
12
+ /** @import ContextModule from "../ContextModule" */
13
+ /** @import { RawReferencedExports, ReferencedExports } from "../Dependency" */
14
+ /** @import Module from "../Module" */
15
+ /** @import ModuleGraph from "../ModuleGraph" */
16
+ /** @import { ImportAttributes } from "../javascript/JavascriptParser" */
17
+ /** @import { RuntimeSpec } from "../util/runtime" */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined, string | undefined]>} ObjectDeserializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string | undefined, string, RawReferencedExports | null | undefined, ImportAttributes | undefined, string | undefined]>} ObjectSerializerContext */
21
20
 
22
21
  class ContextElementDependency extends ModuleDependency {
23
22
  /**
@@ -29,6 +28,7 @@ class ContextElementDependency extends ModuleDependency {
29
28
  * @param {RawReferencedExports | null=} referencedExports referenced exports
30
29
  * @param {string=} context context
31
30
  * @param {ImportAttributes=} attributes import assertions
31
+ * @param {string=} contextRequest the request of the context as written by the user, without query and fragment
32
32
  */
33
33
  constructor(
34
34
  request,
@@ -37,7 +37,8 @@ class ContextElementDependency extends ModuleDependency {
37
37
  category,
38
38
  referencedExports,
39
39
  context,
40
- attributes
40
+ attributes,
41
+ contextRequest
41
42
  ) {
42
43
  super(request);
43
44
 
@@ -56,6 +57,21 @@ class ContextElementDependency extends ModuleDependency {
56
57
  this._context = context || undefined;
57
58
  /** @type {ImportAttributes | undefined} */
58
59
  this.attributes = attributes;
60
+ /** @type {string | undefined} */
61
+ this._contextRequest = contextRequest || undefined;
62
+ }
63
+
64
+ /**
65
+ * The request as the user wrote it, e.g. `#configs/file.mjs` where `request`
66
+ * is the `./file.mjs` relative to the resolved `#configs` directory.
67
+ * @returns {string} the original request
68
+ */
69
+ get originalRequest() {
70
+ const request = this.request;
71
+ if (this._contextRequest === undefined || !request.startsWith("./")) {
72
+ return request;
73
+ }
74
+ return this._contextRequest + request.slice(1);
59
75
  }
60
76
 
61
77
  get type() {
@@ -132,7 +148,8 @@ class ContextElementDependency extends ModuleDependency {
132
148
  .write(this._typePrefix)
133
149
  .write(this._category)
134
150
  .write(this.referencedExports)
135
- .write(this.attributes);
151
+ .write(this.attributes)
152
+ .write(this._contextRequest);
136
153
  super.serialize(context);
137
154
  }
138
155
 
@@ -148,7 +165,9 @@ class ContextElementDependency extends ModuleDependency {
148
165
  this.referencedExports = c2.read();
149
166
  const c3 = c2.rest;
150
167
  this.attributes = c3.read();
151
- super.deserialize(c3.rest);
168
+ const c4 = c3.rest;
169
+ this._contextRequest = c4.read();
170
+ super.deserialize(c4.rest);
152
171
  }
153
172
  }
154
173
 
@@ -17,13 +17,18 @@ const {
17
17
  const CommonJsImportsParserPlugin = require("./CommonJsImportsParserPlugin");
18
18
  const ConstDependency = require("./ConstDependency");
19
19
 
20
- /** @typedef {import("estree").CallExpression} CallExpression */
21
- /** @typedef {import("estree").Expression} Expression */
22
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
23
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
24
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
25
- /** @typedef {import("../javascript/JavascriptParser").ImportSource} ImportSource */
26
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
20
+ /** @import { CallExpression, Expression } from "estree" */
21
+ /**
22
+ * @import {
23
+ * JavascriptParserOptions
24
+ * } from "../../declarations/WebpackOptions"
25
+ */
26
+ /**
27
+ * @import JavascriptParser, {
28
+ * ImportSource,
29
+ * Range
30
+ * } from "../javascript/JavascriptParser"
31
+ */
27
32
 
28
33
  /**
29
34
  * Defines the common js import settings type used by this module.
@@ -9,10 +9,10 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
- /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
12
+ /** @import { ReplaceSource } from "webpack-sources" */
13
+ /** @import Dependency from "../Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
+ /** @import { Range } from "../javascript/JavascriptParser" */
16
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range]>} ObjectDeserializerContext */
17
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range]>} ObjectSerializerContext */
18
18
 
@@ -20,27 +20,38 @@ const NullDependency = require("./NullDependency");
20
20
 
21
21
  const getCssTokens = memoize(() => require("../css/syntax"));
22
22
 
23
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
24
- /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
25
- /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorLocalIdentName} CssGeneratorLocalIdentName */
26
- /** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
27
- /** @typedef {import("../css/CssGenerator")} CssGenerator */
28
- /** @typedef {import("../css/CssModule")} CssModule */
29
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
30
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
31
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
32
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
33
- /** @typedef {import("../Dependency")} Dependency */
34
- /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
35
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
36
- /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
37
- /** @typedef {import("../css/CssParser").Range} Range */
38
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
23
+ /** @import { ReplaceSource } from "webpack-sources" */
24
+ /**
25
+ * @import {
26
+ * CssGeneratorExportsConvention,
27
+ * CssGeneratorLocalIdentName,
28
+ * HashFunction
29
+ * } from "../../declarations/WebpackOptions"
30
+ */
31
+ /** @import CssGenerator from "../css/CssGenerator" */
32
+ /** @import CssModule from "../css/CssModule" */
33
+ /** @import ChunkGraph from "../ChunkGraph" */
34
+ /**
35
+ * @import Dependency, {
36
+ * ExportsSpec,
37
+ * ReferencedExports,
38
+ * UpdateHashContext,
39
+ * DependencyLocation
40
+ * } from "../Dependency"
41
+ */
42
+ /**
43
+ * @import {
44
+ * CssDependencyTemplateContext as DependencyTemplateContext
45
+ * } from "../DependencyTemplate"
46
+ */
47
+ /** @import ModuleGraph from "../ModuleGraph" */
48
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
49
+ /** @import { Range } from "../css/CssParser" */
39
50
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<(number | string | Value | Range | boolean | ExportMode | ExportType | DependencyLocation | undefined)[]>} ObjectDeserializerContext */
40
51
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<(number | string | Value | Range | boolean | ExportMode | ExportType | DependencyLocation | undefined)[]>} ObjectSerializerContext */
41
- /** @typedef {import("../util/Hash")} Hash */
42
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
43
- /** @typedef {import("../errors/WebpackError")} WebpackErrorType */
52
+ /** @import Hash from "../util/Hash" */
53
+ /** @import { RuntimeSpec } from "../util/runtime" */
54
+ /** @import WebpackErrorType from "../errors/WebpackError" */
44
55
 
45
56
  /** @typedef {string | [string, string] | [string, string, string]} Value */
46
57
  /** @typedef {(name: string) => string | string[]} ExportsConventionFn */
@@ -201,21 +212,23 @@ const getLocalIdent = (local, module, chunkGraph, runtimeTemplate) => {
201
212
  * Module-level reference so `moduleGraph.cached` can use it as a stable
202
213
  * computer key — repeated lookups during a build skip `cssExportConvention`,
203
214
  * `getLocalIdent` (with its content / path hashing) and `escapeIdentifier`.
215
+ * Parameters are ordered by rising cardinality because `cached` keys a trie on
216
+ * them — see the call site.
204
217
  * @param {ModuleGraph} _moduleGraph module graph (unused, kept for `cached` signature)
205
218
  * @param {CssModule} module css module the value resolves in
206
- * @param {string} value raw value to interpolate
207
- * @param {ExportType} exportType export type discriminator
208
219
  * @param {ChunkGraph} chunkGraph chunk graph
209
220
  * @param {RuntimeTemplate} runtimeTemplate runtime template
221
+ * @param {ExportType} exportType export type discriminator
222
+ * @param {string} value raw value to interpolate
210
223
  * @returns {string} interpolated identifier
211
224
  */
212
225
  const computeInterpolatedIdentifier = (
213
226
  _moduleGraph,
214
227
  module,
215
- value,
216
- exportType,
217
228
  chunkGraph,
218
- runtimeTemplate
229
+ runtimeTemplate,
230
+ exportType,
231
+ value
219
232
  ) => {
220
233
  const generator = /** @type {CssGenerator} */ (module.generator);
221
234
  const local = cssExportConvention(
@@ -690,7 +703,16 @@ CssIcssExportDependency.Template = class CssIcssExportDependencyTemplate extends
690
703
  if (!module) return undefined;
691
704
 
692
705
  const matches = getExportIndex(cache, module).get(importName);
693
- const exportEntry = matches && matches[0];
706
+ // Skip demoted (`NONE`) cross-kind entries so `@value name from` picks the same winner as the JS export map.
707
+ let exportEntry;
708
+ if (matches) {
709
+ for (const m of matches) {
710
+ if (m.exportMode !== EXPORT_MODE.NONE) {
711
+ exportEntry = m;
712
+ break;
713
+ }
714
+ }
715
+ }
694
716
  if (!exportEntry) return undefined;
695
717
  if (seen.has(exportEntry)) return undefined;
696
718
  seen.add(exportEntry);
@@ -754,6 +776,7 @@ CssIcssExportDependency.Template = class CssIcssExportDependencyTemplate extends
754
776
  const matches = getExportIndex(cache, module).get(name);
755
777
  if (matches) {
756
778
  for (const d of matches) {
779
+ if (d.exportMode === EXPORT_MODE.NONE) continue;
757
780
  if (Array.isArray(d.value)) {
758
781
  references.push(
759
782
  ...CssIcssExportDependencyTemplate.resolveReferences(
@@ -789,6 +812,7 @@ CssIcssExportDependency.Template = class CssIcssExportDependencyTemplate extends
789
812
  ).get(/** @type {string} */ (entry.value));
790
813
  if (matches) {
791
814
  for (const d of matches) {
815
+ if (d.exportMode === EXPORT_MODE.NONE) continue;
792
816
  if (d.exportType !== EXPORT_TYPE.COMPOSES) continue;
793
817
  if (Array.isArray(d.value)) {
794
818
  references.push(
@@ -826,13 +850,17 @@ CssIcssExportDependency.Template = class CssIcssExportDependencyTemplate extends
826
850
  if (!entry.interpolate) return value;
827
851
  const { moduleGraph, module, chunkGraph, runtimeTemplate } =
828
852
  templateContext;
853
+ // Key order is by rising cardinality: `moduleGraph.cached` is a trie that
854
+ // allocates a node per level per new prefix, so the per-export `value` goes
855
+ // last — otherwise every export name forks the trie and re-allocates the
856
+ // three elements below it, which are constant for the whole compilation.
829
857
  return moduleGraph.cached(
830
858
  computeInterpolatedIdentifier,
831
859
  /** @type {CssModule} */ (module),
832
- value,
833
- entry.exportType,
834
860
  chunkGraph,
835
- runtimeTemplate
861
+ runtimeTemplate,
862
+ entry.exportType,
863
+ value
836
864
  );
837
865
  }
838
866
 
@@ -10,21 +10,25 @@ const { cssExportConvention } = require("../util/conventions");
10
10
  const makeSerializable = require("../util/makeSerializable");
11
11
  const CssImportDependency = require("./CssImportDependency");
12
12
 
13
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../Dependency")} Dependency */
15
- /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
16
- /** @typedef {import("../Module")} Module */
17
- /** @typedef {import("../css/CssGenerator")} CssGenerator */
18
- /** @typedef {import("../css/CssModule")} CssModule */
19
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
21
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+ /** @import { ReplaceSource } from "webpack-sources" */
14
+ /** @import Dependency, { ReferencedExports } from "../Dependency" */
15
+ /**
16
+ * @import {
17
+ * CssDependencyTemplateContext as DependencyTemplateContext
18
+ * } from "../DependencyTemplate"
19
+ */
20
+ /** @import CssGenerator from "../css/CssGenerator" */
21
+ /** @import CssModule from "../css/CssModule" */
22
+ /** @import ModuleGraph from "../ModuleGraph" */
23
+ /** @import { RuntimeSpec } from "../util/runtime" */
24
+ /** @import { Range } from "../javascript/JavascriptParser" */
22
25
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string]>} ObjectDeserializerContext */
23
26
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string]>} ObjectSerializerContext */
24
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
25
- /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
26
- /** @typedef {import("./CssIcssExportDependency").ExportMode} ExportMode */
27
- /** @typedef {import("./CssIcssExportDependency").ExportType} ExportType */
27
+ /**
28
+ * @import {
29
+ * CssGeneratorExportsConvention
30
+ * } from "../../declarations/WebpackOptions"
31
+ */
28
32
 
29
33
  class CssIcssImportDependency extends CssImportDependency {
30
34
  /**
@@ -10,18 +10,17 @@ const makeSerializable = require("../util/makeSerializable");
10
10
  const CssIcssExportDependency = require("./CssIcssExportDependency");
11
11
  const NullDependency = require("./NullDependency");
12
12
 
13
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../Dependency")} Dependency */
15
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
16
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
17
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
18
- /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
19
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
- /** @typedef {import("../css/CssParser").Range} Range */
13
+ /** @import { ReplaceSource } from "webpack-sources" */
14
+ /** @import Dependency, { UpdateHashContext } from "../Dependency" */
15
+ /**
16
+ * @import {
17
+ * CssDependencyTemplateContext as DependencyTemplateContext
18
+ * } from "../DependencyTemplate"
19
+ */
20
+ /** @import { Range } from "../css/CssParser" */
21
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, Range, string | undefined, string | undefined, string | undefined]>} ObjectDeserializerContext */
22
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, Range, string | undefined, string | undefined, string | undefined]>} ObjectSerializerContext */
23
- /** @typedef {import("../util/Hash")} Hash */
24
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
23
+ /** @import Hash from "../util/Hash" */
25
24
 
26
25
  class CssIcssSymbolDependency extends NullDependency {
27
26
  /**
@@ -8,14 +8,22 @@
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
 
11
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
- /** @typedef {import("../../declarations/WebpackOptions").CssParserExportType} CssParserExportType */
13
- /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
15
- /** @typedef {import("../css/CssModule").Inheritance} Inheritance */
16
- /** @typedef {import("../css/CssParser").Range} Range */
17
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
11
+ /** @import { ReplaceSource } from "webpack-sources" */
12
+ /** @import { CssParserExportType } from "../../declarations/WebpackOptions" */
13
+ /** @import Dependency from "../Dependency" */
14
+ /**
15
+ * @import {
16
+ * CssDependencyTemplateContext as DependencyTemplateContext
17
+ * } from "../DependencyTemplate"
18
+ */
19
+ /** @import { Inheritance } from "../css/CssModule" */
20
+ /** @import { Range } from "../css/CssParser" */
21
+ /**
22
+ * @import {
23
+ * ObjectDeserializerContext,
24
+ * ObjectSerializerContext
25
+ * } from "../serialization/ObjectMiddleware"
26
+ */
19
27
 
20
28
  class CssImportDependency extends ModuleDependency {
21
29
  /**
@@ -65,9 +73,10 @@ class CssImportDependency extends ModuleDependency {
65
73
 
66
74
  /**
67
75
  * Returns true if this dependency can be concatenated
76
+ * @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
68
77
  * @returns {boolean} true if this dependency can be concatenated
69
78
  */
70
- canConcatenate() {
79
+ canConcatenate(concatenateCommonJsModules) {
71
80
  return true;
72
81
  }
73
82
 
@@ -11,21 +11,21 @@ const makeSerializable = require("../util/makeSerializable");
11
11
  const memoize = require("../util/memoize");
12
12
  const ModuleDependency = require("./ModuleDependency");
13
13
 
14
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
15
- /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
16
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
17
- /** @typedef {import("../Dependency")} Dependency */
18
- /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
19
- /** @typedef {import("../Module")} Module */
20
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
21
- /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
22
- /** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
23
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
+ /** @import { ReplaceSource } from "webpack-sources" */
15
+ /** @import CodeGenerationResults from "../CodeGenerationResults" */
16
+ /** @import Dependency, { UpdateHashContext } from "../Dependency" */
17
+ /**
18
+ * @import {
19
+ * CssDependencyTemplateContext as DependencyTemplateContext
20
+ * } from "../DependencyTemplate"
21
+ */
22
+ /** @import Module from "../Module" */
23
+ /** @import { Range } from "../javascript/JavascriptParser" */
24
24
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<["string" | "url" | "src", true | undefined, true | undefined, ("high" | "low" | "auto" | undefined), string | undefined, string | undefined, string | undefined]>} ObjectDeserializerContext */
25
25
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<["string" | "url" | "src", true | undefined, true | undefined, ("high" | "low" | "auto" | undefined), string | undefined, string | undefined, string | undefined]>} ObjectSerializerContext */
26
- /** @typedef {import("../util/Hash")} Hash */
27
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
28
- /** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
26
+ /** @import Hash from "../util/Hash" */
27
+ /** @import { RuntimeSpec } from "../util/runtime" */
28
+ /** @import { NormalModuleBuildInfo } from "../NormalModule" */
29
29
 
30
30
  const getIgnoredRawDataUrlModule = memoize(
31
31
  () => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
@@ -64,6 +64,10 @@ class CssUrlDependency extends ModuleDependency {
64
64
  return "url";
65
65
  }
66
66
 
67
+ get referencedSourceType() {
68
+ return ASSET_URL_TYPE;
69
+ }
70
+
67
71
  /**
68
72
  * Creates an ignored module.
69
73
  * @param {string} context context directory
@@ -8,7 +8,7 @@
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
- /** @typedef {import("./EntryDependency")} EntryDependency */
11
+ /** @import EntryDependency from "./EntryDependency" */
12
12
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[EntryDependency[], string]>} ObjectDeserializerContext */
13
13
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[EntryDependency[], string]>} ObjectSerializerContext */
14
14
 
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
9
- /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
8
+ /** @import { BuildMeta } from "../Module" */
9
+ /** @import { JavascriptParserState } from "../javascript/JavascriptParser" */
10
10
 
11
11
  /** @type {WeakMap<JavascriptParserState, boolean>} */
12
12
  const parserStateExportsState = new WeakMap();
@@ -8,9 +8,9 @@
8
8
  const InitFragment = require("../InitFragment");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
10
 
11
- /** @typedef {import("webpack-sources").Source} Source */
12
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
13
- /** @typedef {import("../ExportsInfo").UsedName} UsedName */
11
+ /** @import { Source } from "webpack-sources" */
12
+ /** @import { GenerateContext } from "../Generator" */
13
+ /** @import { UsedName } from "../ExportsInfo" */
14
14
 
15
15
  /**
16
16
  * @typedef {object} ExportBinding
@@ -19,6 +19,14 @@ const RuntimeGlobals = require("../RuntimeGlobals");
19
19
  * @property {"getter" | "value"=} bindingType "value" for value binding, defaults to "getter"
20
20
  */
21
21
 
22
+ /**
23
+ * Offered the rendered `d()` call and where it sits, and answers whether it took it
24
+ * over. A consumer that does emits the call itself where it is actually read — or
25
+ * leaves it out. Value bindings read the declarations above them, so one placed at
26
+ * the end cannot be moved before the module body.
27
+ * @typedef {(source: string, placeAtEnd: boolean) => boolean} OnDemandGeneration
28
+ */
29
+
22
30
  /**
23
31
  * Init fragment for const export bindings.
24
32
  * Generates a flat-array __webpack_require__.d() call.
@@ -35,8 +43,14 @@ class ExportBindingInitFragment extends InitFragment {
35
43
  * @param {string} exportsArgument the exports identifier
36
44
  * @param {ExportBinding[]} bindings list of export bindings
37
45
  * @param {boolean=} placeAtEnd when true, place the d() call at the end of the module
46
+ * @param {OnDemandGeneration=} onDemand offered the call instead of emitting it
38
47
  */
39
- constructor(exportsArgument, bindings, placeAtEnd = false) {
48
+ constructor(
49
+ exportsArgument,
50
+ bindings,
51
+ placeAtEnd = false,
52
+ onDemand = undefined
53
+ ) {
40
54
  super(
41
55
  undefined,
42
56
  InitFragment.STAGE_HARMONY_EXPORTS,
@@ -49,6 +63,8 @@ class ExportBindingInitFragment extends InitFragment {
49
63
  this.bindings = bindings;
50
64
  /** @type {boolean} */
51
65
  this.placeAtEnd = placeAtEnd;
66
+ /** @type {OnDemandGeneration | undefined} */
67
+ this.onDemand = onDemand;
52
68
  }
53
69
 
54
70
  /**
@@ -75,7 +91,8 @@ class ExportBindingInitFragment extends InitFragment {
75
91
  return new ExportBindingInitFragment(
76
92
  this.exportsArgument,
77
93
  bindings,
78
- placeAtEnd
94
+ placeAtEnd,
95
+ this.onDemand
79
96
  );
80
97
  }
81
98
 
@@ -103,7 +120,8 @@ class ExportBindingInitFragment extends InitFragment {
103
120
  return new ExportBindingInitFragment(
104
121
  this.exportsArgument,
105
122
  bindings,
106
- this.placeAtEnd || other.placeAtEnd
123
+ this.placeAtEnd || other.placeAtEnd,
124
+ this.onDemand || other.onDemand
107
125
  );
108
126
  }
109
127
 
@@ -131,11 +149,20 @@ class ExportBindingInitFragment extends InitFragment {
131
149
  }
132
150
  }
133
151
 
152
+ // Requested even when the call is taken over below: whoever took it may still
153
+ // emit it, and by then the requirement set is closed.
134
154
  runtimeRequirements.add(RuntimeGlobals.exports);
135
155
  runtimeRequirements.add(RuntimeGlobals.definePropertyGetters);
136
- return `/* harmony export */ ${RuntimeGlobals.definePropertyGetters}(${
137
- this.exportsArgument
138
- }, [${items.join(",")}\n/* harmony export */ ]);\n`;
156
+ // Only this fragment emits the array form, so the runtime helper drops the
157
+ // branch reading it unless this asks for it.
158
+ runtimeRequirements.add(RuntimeGlobals.definePropertyGettersFromArray);
159
+ const definition = `/* harmony export */ ${
160
+ RuntimeGlobals.definePropertyGetters
161
+ }(${this.exportsArgument}, [${items.join(",")}\n/* harmony export */ ]);\n`;
162
+ return this.onDemand !== undefined &&
163
+ this.onDemand(definition, this.placeAtEnd)
164
+ ? ""
165
+ : definition;
139
166
  }
140
167
 
141
168
  /**
@@ -9,14 +9,13 @@ const { UsageState } = require("../ExportsInfo");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
- /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
- /** @typedef {import("../Module")} Module */
16
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
- /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
18
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
19
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
12
+ /** @import { ReplaceSource } from "webpack-sources" */
13
+ /** @import Dependency, { ExportInfoName } from "../Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
+ /** @import Module from "../Module" */
16
+ /** @import ModuleGraph from "../ModuleGraph" */
17
+ /** @import { Range } from "../javascript/JavascriptParser" */
18
+ /** @import { RuntimeSpec } from "../util/runtime" */
20
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, ExportInfoName[] | null, string | null]>} ObjectDeserializerContext */
21
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, ExportInfoName[] | null, string | null]>} ObjectSerializerContext */
22
21
 
@@ -9,11 +9,15 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const CachedConstDependency = require("./CachedConstDependency");
10
10
  const ExternalModuleInitFragment = require("./ExternalModuleInitFragment");
11
11
 
12
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
- /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
16
- /** @typedef {import("../dependencies/ExternalModuleInitFragment").ArrayImportSpecifiers} ArrayImportSpecifiers */
12
+ /** @import { ReplaceSource } from "webpack-sources" */
13
+ /** @import Dependency from "../Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
+ /** @import { Range } from "../javascript/JavascriptParser" */
16
+ /**
17
+ * @import {
18
+ * ArrayImportSpecifiers
19
+ * } from "../dependencies/ExternalModuleInitFragment"
20
+ */
17
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<(string | ArrayImportSpecifiers | undefined)[]>} ObjectDeserializerContext */
18
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<(string | ArrayImportSpecifiers | undefined)[]>} ObjectSerializerContext */
19
23
 
@@ -8,8 +8,8 @@
8
8
  const InitFragment = require("../InitFragment");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
 
11
- /** @typedef {import("webpack-sources").Source} Source */
12
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
11
+ /** @import { Source } from "webpack-sources" */
12
+ /** @import { GenerateContext } from "../Generator" */
13
13
  /** @typedef {{ name: string, value?: string }[]} ArrayImportSpecifiers */
14
14
  /** @typedef {Set<string>} ImportSpecifier */
15
15
  /** @typedef {Map<string, ImportSpecifier>} ImportSpecifiers */
@@ -10,11 +10,14 @@ const makeSerializable = require("../util/makeSerializable");
10
10
  const ExternalModuleInitFragment = require("./ExternalModuleInitFragment");
11
11
  const NullDependency = require("./NullDependency");
12
12
 
13
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../Dependency")} Dependency */
15
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
- /** @typedef {import("../dependencies/ExternalModuleInitFragment").ArrayImportSpecifiers} ArrayImportSpecifiers */
13
+ /** @import { ReplaceSource } from "webpack-sources" */
14
+ /** @import Dependency from "../Dependency" */
15
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
16
+ /**
17
+ * @import {
18
+ * ArrayImportSpecifiers
19
+ * } from "../dependencies/ExternalModuleInitFragment"
20
+ */
18
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ArrayImportSpecifiers, string | undefined]>} ObjectDeserializerContext */
19
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ArrayImportSpecifiers, string | undefined]>} ObjectSerializerContext */
20
23