@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
@@ -36,41 +36,44 @@ const {
36
36
  const makeSerializable = require("./util/makeSerializable");
37
37
  const { propertyAccess } = require("./util/property");
38
38
 
39
- /** @typedef {import("webpack-sources").Source} Source */
40
- /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
41
- /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
42
- /** @typedef {import("./Chunk")} Chunk */
43
- /** @typedef {import("./Chunk").ChunkId} ChunkId */
44
- /** @typedef {import("./Chunk").ChunkName} ChunkName */
45
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
46
- /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
47
- /** @typedef {import("./ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
48
- /** @typedef {import("./Compilation")} Compilation */
49
- /** @typedef {import("./Dependency")} Dependency */
50
- /** @typedef {import("./Dependency").RawReferencedExports} RawReferencedExports */
51
- /** @typedef {import("./Generator").SourceTypes} SourceTypes */
52
- /** @typedef {import("./FileSystemInfo").Snapshot} Snapshot */
53
- /** @typedef {import("./Module").BuildCallback} BuildCallback */
54
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
55
- /** @typedef {import("./Module").FileSystemDependencies} FileSystemDependencies */
56
- /** @typedef {import("./Module").BuildMeta} BuildMeta */
57
- /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
58
- /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
59
- /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
60
- /** @typedef {import("./Module").LibIdent} LibIdent */
61
- /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
62
- /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
63
- /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
64
- /** @typedef {import("./Module").Sources} Sources */
65
- /** @typedef {import("./RequestShortener")} RequestShortener */
66
- /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
67
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
68
- /** @typedef {import("./dependencies/ContextElementDependency")} ContextElementDependency */
69
- /** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
39
+ /** @import { Source } from "webpack-sources" */
40
+ /** @import { ResolveOptions } from "../declarations/WebpackOptions" */
41
+ /**
42
+ * @import {
43
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
44
+ * } from "./config/defaults"
45
+ */
46
+ /** @import Chunk, { ChunkId, ChunkName } from "./Chunk" */
47
+ /** @import ChunkGraph, { ModuleId } from "./ChunkGraph" */
48
+ /** @import { RawChunkGroupOptions } from "./ChunkGroup" */
49
+ /** @import Compilation, { FileSystemDependencies } from "./Compilation" */
50
+ /** @import Dependency, { RawReferencedExports } from "./Dependency" */
51
+ /** @import { Snapshot } from "./FileSystemInfo" */
52
+ /**
53
+ * @import {
54
+ * BuildCallback,
55
+ * BuildInfo,
56
+ * BuildMeta,
57
+ * CodeGenerationContext,
58
+ * CodeGenerationResult,
59
+ * LibIdentOptions,
60
+ * LibIdent,
61
+ * NeedBuildCallback,
62
+ * NeedBuildContext,
63
+ * RuntimeRequirements,
64
+ * Sources,
65
+ * SourceTypes
66
+ * } from "./Module"
67
+ */
68
+ /** @import RequestShortener from "./RequestShortener" */
69
+ /** @import { ResolverWithOptions } from "./ResolverFactory" */
70
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
71
+ /** @import ContextElementDependency from "./dependencies/ContextElementDependency" */
72
+ /** @import { ImportAttributes } from "./javascript/JavascriptParser" */
70
73
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext<[string, boolean]>} ObjectDeserializerContext */
71
74
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext<[string, boolean]>} ObjectSerializerContext */
72
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
73
- /** @typedef {import("./dependencies/ImportPhase").ImportPhaseType} ImportPhaseType */
75
+ /** @import { InputFileSystem } from "./util/fs" */
76
+ /** @import { ImportPhaseType } from "./dependencies/ImportPhase" */
74
77
 
75
78
  /** @typedef {"sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once"} ContextMode Context mode */
76
79
 
@@ -100,6 +103,7 @@ const { propertyAccess } = require("./util/property");
100
103
 
101
104
  /**
102
105
  * @typedef {object} ContextModuleOptionsExtras
106
+ * @property {string=} request the request of the context as written by the user, before it was resolved
103
107
  * @property {false | string | string[]} resource
104
108
  * @property {string=} resourceQuery
105
109
  * @property {string=} resourceFragment
@@ -131,7 +135,7 @@ const { propertyAccess } = require("./util/property");
131
135
  /**
132
136
  * Defines the build info properties specific to context modules.
133
137
  * @typedef {object} KnownContextModuleBuildInfo
134
- * @property {(Snapshot | null)=} snapshot
138
+ * @property {(InstanceType<Snapshot> | null)=} snapshot
135
139
  */
136
140
 
137
141
  /** @typedef {BuildInfo & KnownContextModuleBuildInfo} ContextModuleBuildInfo */
@@ -1081,6 +1085,7 @@ module.exports = webpackAsyncContext;`;
1081
1085
  * @param {object} options options object
1082
1086
  * @param {RuntimeTemplate} options.runtimeTemplate the runtime template
1083
1087
  * @param {ChunkGraph} options.chunkGraph the chunk graph
1088
+ * @param {RuntimeRequirements} options.runtimeRequirements runtime requirements
1084
1089
  * @returns {string} source code
1085
1090
  */
1086
1091
  getLazyOnceSource(
@@ -1088,14 +1093,14 @@ module.exports = webpackAsyncContext;`;
1088
1093
  dependencies,
1089
1094
  id,
1090
1095
  phase,
1091
- { runtimeTemplate, chunkGraph }
1096
+ { runtimeTemplate, chunkGraph, runtimeRequirements }
1092
1097
  ) {
1093
1098
  const promise = runtimeTemplate.blockPromise({
1094
1099
  chunkGraph,
1095
1100
  block,
1096
1101
  message: "lazy-once context",
1097
- /** @type {RuntimeRequirements} */
1098
- runtimeRequirements: new Set()
1102
+ runtimeRequirements,
1103
+ originModule: this
1099
1104
  });
1100
1105
  const map = this.getUserRequestMap(dependencies, chunkGraph);
1101
1106
  const fakeMap = this.getFakeMap(dependencies, chunkGraph);
@@ -1146,9 +1151,15 @@ module.exports = webpackAsyncContext;`;
1146
1151
  * @param {object} context context
1147
1152
  * @param {ChunkGraph} context.chunkGraph the chunk graph
1148
1153
  * @param {RuntimeTemplate} context.runtimeTemplate the chunk graph
1154
+ * @param {RuntimeRequirements} context.runtimeRequirements runtime requirements
1149
1155
  * @returns {string} source code
1150
1156
  */
1151
- getLazySource(blocks, id, phase, { chunkGraph, runtimeTemplate }) {
1157
+ getLazySource(
1158
+ blocks,
1159
+ id,
1160
+ phase,
1161
+ { chunkGraph, runtimeTemplate, runtimeRequirements }
1162
+ ) {
1152
1163
  const moduleGraph = chunkGraph.moduleGraph;
1153
1164
  let hasMultipleOrNoChunks = false;
1154
1165
  let hasNoChunk = true;
@@ -1200,10 +1211,61 @@ module.exports = webpackAsyncContext;`;
1200
1211
  }
1201
1212
  }
1202
1213
  const shortMode = hasNoChunk && hasNoModuleDeferred && !hasFakeMap;
1214
+ // Sorted before anything is keyed by request, so two items sharing one leave the
1215
+ // same last writer in the map and in the loaders beside it.
1203
1216
  const sortedItems = items.sort((a, b) => {
1204
1217
  if (a.userRequest === b.userRequest) return 0;
1205
1218
  return a.userRequest < b.userRequest ? -1 : 1;
1206
1219
  });
1220
+ let needEnsureChunk = !hasNoChunk;
1221
+ /** @type {Map<string, string[]> | undefined} */
1222
+ let loaders;
1223
+ // Only module output can name a chunk in an `import()`, so nothing else pays for
1224
+ // building the loaders just to throw them away.
1225
+ if (!hasNoChunk && runtimeTemplate.isModule()) {
1226
+ /** @type {Map<string, string[]>} */
1227
+ const perRequest = new Map();
1228
+ let hasAnalyzable = false;
1229
+ let hasFallback = false;
1230
+ /**
1231
+ * @param {Chunk} chunk one chunk a request needs
1232
+ * @returns {string} a thunk loading it, by literal name where the chunk has one
1233
+ */
1234
+ const loaderFor = (chunk) => {
1235
+ // `.ei` always imports, where `.e` skips a chunk already loaded — the same
1236
+ // filter `blockPromise` applies before reaching for it.
1237
+ const analyzable =
1238
+ chunk.hasRuntime() || chunk.id === null
1239
+ ? null
1240
+ : runtimeTemplate.analyzableChunkImport(
1241
+ chunk,
1242
+ "",
1243
+ runtimeRequirements,
1244
+ this,
1245
+ chunkGraph
1246
+ );
1247
+ if (analyzable !== null) {
1248
+ hasAnalyzable = true;
1249
+ return runtimeTemplate.returningFunction(analyzable);
1250
+ }
1251
+ hasFallback = true;
1252
+ return runtimeTemplate.returningFunction(
1253
+ `${RuntimeGlobals.ensureChunk}(${JSON.stringify(chunk.id)})`
1254
+ );
1255
+ };
1256
+ for (const item of sortedItems) {
1257
+ perRequest.set(
1258
+ item.userRequest,
1259
+ /** @type {Chunk[]} */ (item.chunks).map(loaderFor)
1260
+ );
1261
+ }
1262
+ // Nothing gained when no chunk can be spelled out, and the plain id map is
1263
+ // smaller, so the loaders are only written when at least one names its chunk.
1264
+ if (hasAnalyzable) {
1265
+ loaders = perRequest;
1266
+ needEnsureChunk = hasFallback;
1267
+ }
1268
+ }
1207
1269
  /** @type {Record<string, ModuleId | (ModuleId | FakeMapType | ChunkId[] | (ModuleId[] | undefined))[]>} */
1208
1270
  const map = Object.create(null);
1209
1271
  for (const item of sortedItems) {
@@ -1237,9 +1299,18 @@ module.exports = webpackAsyncContext;`;
1237
1299
  const asyncDepsPosition = hasNoChunk ? chunksPosition : chunksPosition + 1;
1238
1300
  const requestPrefix = hasNoChunk
1239
1301
  ? "Promise.resolve()"
1240
- : hasMultipleOrNoChunks
1241
- ? `Promise.all(ids[${chunksPosition}].map(${RuntimeGlobals.ensureChunk}))`
1242
- : `${RuntimeGlobals.ensureChunk}(ids[${chunksPosition}][0])`;
1302
+ : loaders !== undefined
1303
+ ? hasMultipleOrNoChunks
1304
+ ? `Promise.all(ids[${chunksPosition}].map(${runtimeTemplate.returningFunction("load()", "load")}))`
1305
+ : `ids[${chunksPosition}][0]()`
1306
+ : hasMultipleOrNoChunks
1307
+ ? `Promise.all(ids[${chunksPosition}].map(${RuntimeGlobals.ensureChunk}))`
1308
+ : `${RuntimeGlobals.ensureChunk}(ids[${chunksPosition}][0])`;
1309
+ // Only the id map reads it; nothing loads a chunk when there is none to load, and
1310
+ // a map of loaders spells out every one it could reach for.
1311
+ if (needEnsureChunk) {
1312
+ runtimeRequirements.add(RuntimeGlobals.ensureChunk);
1313
+ }
1243
1314
  const returnModuleObject = this.getReturnModuleObjectSource(
1244
1315
  fakeMap,
1245
1316
  true,
@@ -1281,7 +1352,28 @@ function webpackAsyncContext(req) {
1281
1352
  return ${requestPrefix}.then(${runtimeTemplate.returningFunction(returnModuleObject)});
1282
1353
  }`;
1283
1354
 
1284
- return `${cst} map = ${JSON.stringify(map, null, "\t")};
1355
+ // A loader is source, not data, so the map holding one is written out rather than
1356
+ // serialized — one entry per line, keeping the request next to what loads it.
1357
+ const mapSource =
1358
+ loaders === undefined
1359
+ ? JSON.stringify(map, null, "\t")
1360
+ : `{\n${Object.keys(map)
1361
+ .map((request) => {
1362
+ const slots =
1363
+ /** @type {(ModuleId | FakeMapType | ChunkId[] | (ModuleId[] | undefined))[]} */
1364
+ (map[request]).map((slot, index) =>
1365
+ index === chunksPosition
1366
+ ? `[${/** @type {string[]} */ (loaders.get(request)).join(", ")}]`
1367
+ : // An absent `asyncDeps` slot is `null` to `JSON.stringify`.
1368
+ slot === undefined
1369
+ ? "null"
1370
+ : JSON.stringify(slot)
1371
+ );
1372
+ return `\t${JSON.stringify(request)}: [${slots.join(", ")}]`;
1373
+ })
1374
+ .join(",\n")}\n}`;
1375
+
1376
+ return `${cst} map = ${mapSource};
1285
1377
  ${webpackAsyncContext}
1286
1378
  webpackAsyncContext.keys = ${runtimeTemplate.returningFunction(
1287
1379
  "Object.keys(map)"
@@ -1415,7 +1507,8 @@ module.exports = webpackEmptyAsyncContext;`;
1415
1507
  message: "import.meta.glob",
1416
1508
  strict: this.options.namespaceObject === "strict",
1417
1509
  dependency: info.dependency,
1418
- runtimeRequirements: localRuntimeRequirements
1510
+ runtimeRequirements: localRuntimeRequirements,
1511
+ originModule: this
1419
1512
  });
1420
1513
  if (globImportAccess) {
1421
1514
  importPromise = `${importPromise}.then(function(m) { return m${globImportAccess}; })`;
@@ -1500,7 +1593,7 @@ module.exports = webpackEmptyAsyncContext;`;
1500
1593
  /**
1501
1594
  * @param {string} asyncMode module mode
1502
1595
  * @param {ImportPhaseType} phase import phase
1503
- * @param {CodeGenerationContext & { runtimeRequirements?: RuntimeRequirements }} context context info
1596
+ * @param {CodeGenerationContext & { runtimeRequirements: RuntimeRequirements }} context context info
1504
1597
  * @returns {string} the source code
1505
1598
  */
1506
1599
  getSourceString(asyncMode, phase, context) {
@@ -1513,17 +1606,18 @@ module.exports = webpackEmptyAsyncContext;`;
1513
1606
  /**
1514
1607
  * @param {string} asyncMode module mode
1515
1608
  * @param {ImportPhaseType} phase import phase
1516
- * @param {CodeGenerationContext & { runtimeRequirements?: RuntimeRequirements }} context context info
1609
+ * @param {CodeGenerationContext & { runtimeRequirements: RuntimeRequirements }} context context info
1517
1610
  * @returns {string} the source code
1518
1611
  */
1519
1612
  getContextSourceString(asyncMode, phase, context) {
1520
- const { runtimeTemplate, chunkGraph } = context;
1613
+ const { runtimeTemplate, chunkGraph, runtimeRequirements } = context;
1521
1614
  const id = /** @type {ModuleId} */ (chunkGraph.getModuleId(this));
1522
1615
  if (asyncMode === "lazy") {
1523
1616
  if (this.blocks && this.blocks.length > 0) {
1524
1617
  return this.getLazySource(this.blocks, id, phase, {
1525
1618
  runtimeTemplate,
1526
- chunkGraph
1619
+ chunkGraph,
1620
+ runtimeRequirements
1527
1621
  });
1528
1622
  }
1529
1623
  return this.getSourceForEmptyAsyncContext(id, runtimeTemplate);
@@ -1542,7 +1636,8 @@ module.exports = webpackEmptyAsyncContext;`;
1542
1636
  if (block) {
1543
1637
  return this.getLazyOnceSource(block, block.dependencies, id, phase, {
1544
1638
  runtimeTemplate,
1545
- chunkGraph
1639
+ chunkGraph,
1640
+ runtimeRequirements
1546
1641
  });
1547
1642
  }
1548
1643
  return this.getSourceForEmptyAsyncContext(id, runtimeTemplate);
@@ -1635,13 +1730,10 @@ module.exports = webpackEmptyAsyncContext;`;
1635
1730
  if (allDeps.length > 0) {
1636
1731
  const asyncMode = this.options.mode;
1637
1732
  set.add(RuntimeGlobals.require);
1638
- if (asyncMode === "weak") {
1639
- set.add(RuntimeGlobals.moduleFactories);
1640
- } else if (asyncMode === "async-weak") {
1733
+ // `ensureChunk` is not listed per mode: the source generators above add it
1734
+ // where they emit a call, so a baked context or one with no chunk drops it.
1735
+ if (asyncMode === "weak" || asyncMode === "async-weak") {
1641
1736
  set.add(RuntimeGlobals.moduleFactories);
1642
- set.add(RuntimeGlobals.ensureChunk);
1643
- } else if (asyncMode === "lazy" || asyncMode === "lazy-once") {
1644
- set.add(RuntimeGlobals.ensureChunk);
1645
1737
  }
1646
1738
  if (this.getFakeMap(allDeps, chunkGraph) !== 9) {
1647
1739
  set.add(RuntimeGlobals.createFakeNamespaceObject);
@@ -21,25 +21,32 @@ const {
21
21
  resolveContextModuleGlobPattern
22
22
  } = require("./util/globUtils");
23
23
 
24
- /** @typedef {import("./util/globUtils").ResolvedContextModuleGlobPattern} ResolvedContextModuleGlobPattern */
24
+ /** @import { ResolvedContextModuleGlobPattern } from "./util/globUtils" */
25
25
  /** @typedef {(context: string, subResource: string, callback: () => void, resolvedGlobPatterns?: ResolvedContextModuleGlobPattern[]) => void} AddSubDirectoryFn */
26
- /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
27
- /** @typedef {import("./Compilation").FileSystemDependencies} FileSystemDependencies */
28
- /** @typedef {import("./ContextModule").ContextModuleOptions} ContextModuleOptions */
29
- /** @typedef {import("./ContextModule").ResolveDependenciesCallback} ResolveDependenciesCallback */
30
- /** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
31
- /** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
32
- /** @typedef {import("./ResolverFactory")} ResolverFactory */
33
- /** @typedef {import("./dependencies/ContextDependency")} ContextDependency */
34
- /** @typedef {import("./dependencies/ContextDependency").ContextOptions} ContextOptions */
26
+ /** @import { ResolveRequest } from "enhanced-resolve" */
27
+ /** @import { FileSystemDependencies } from "./Compilation" */
28
+ /**
29
+ * @import {
30
+ * ContextModuleOptions,
31
+ * ResolveDependenciesCallback,
32
+ * ContextOptions
33
+ * } from "./ContextModule"
34
+ */
35
+ /**
36
+ * @import {
37
+ * ModuleFactoryCreateData,
38
+ * ModuleFactoryCallback
39
+ * } from "./ModuleFactory"
40
+ */
41
+ /** @import ResolverFactory from "./ResolverFactory" */
42
+ /** @import ContextDependency from "./dependencies/ContextDependency" */
35
43
 
36
44
  /**
37
45
  * Defines the shared type used by this module.
38
46
  * @template T
39
47
  * @typedef {import("./util/deprecation").FakeHook<T>} FakeHook<T>
40
48
  */
41
- /** @typedef {import("./util/fs").IStats} IStats */
42
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
49
+ /** @import { IStats, InputFileSystem } from "./util/fs" */
43
50
  /** @typedef {{ context: string, request: string }} ContextAlternativeRequest */
44
51
 
45
52
  /**
@@ -59,6 +66,22 @@ const {
59
66
 
60
67
  const EMPTY_RESOLVE_OPTIONS = {};
61
68
 
69
+ /**
70
+ * Strips the query and fragment the elements of the context carry themselves, so
71
+ * the remainder can be joined with an element request again.
72
+ * @param {string | undefined} request the request of the context as written by the user
73
+ * @param {string | undefined} resourceQuery query of the resolved context
74
+ * @param {string | undefined} resourceFragment fragment of the resolved context
75
+ * @returns {string | undefined} the request without query and fragment
76
+ */
77
+ const getContextRequest = (request, resourceQuery, resourceFragment) => {
78
+ if (request === undefined) return undefined;
79
+ const suffix = (resourceQuery || "") + (resourceFragment || "");
80
+ return suffix && request.endsWith(suffix)
81
+ ? request.slice(0, -suffix.length)
82
+ : request;
83
+ };
84
+
62
85
  class ContextModuleFactory extends ModuleFactory {
63
86
  /**
64
87
  * Creates an instance of ContextModuleFactory.
@@ -344,6 +367,13 @@ class ContextModuleFactory extends ModuleFactory {
344
367
  } = options;
345
368
  const isImportMetaGlob = Boolean(patterns && requestContext);
346
369
  if ((!regExp && !isImportMetaGlob) || !resource) return callback(null, []);
370
+ // the request the user wrote (`#configs`, `./dir`, …) before it was resolved
371
+ // to a directory — elements keep it so they can report an original request
372
+ const contextRequest = getContextRequest(
373
+ options.request,
374
+ resourceQuery,
375
+ resourceFragment
376
+ );
347
377
 
348
378
  /**
349
379
  * Adds directory checked.
@@ -493,7 +523,8 @@ class ContextModuleFactory extends ModuleFactory {
493
523
  (category),
494
524
  referencedExports,
495
525
  ctx,
496
- attributes
526
+ attributes,
527
+ contextRequest
497
528
  );
498
529
  dep.optional = true;
499
530
  globDeps.push(dep);
@@ -569,7 +600,8 @@ class ContextModuleFactory extends ModuleFactory {
569
600
  (category),
570
601
  referencedExports,
571
602
  alt.context,
572
- attributes
603
+ attributes,
604
+ contextRequest
573
605
  );
574
606
  dep.optional = true;
575
607
  flattenedResult.push(dep);
@@ -6,13 +6,17 @@
6
6
  "use strict";
7
7
 
8
8
  const ContextElementDependency = require("./dependencies/ContextElementDependency");
9
- const { join } = require("./util/fs");
9
+ const { isAbsolute, join } = require("./util/fs");
10
10
 
11
- /** @typedef {import("./Compiler")} Compiler */
12
- /** @typedef {import("./ContextModule").ContextModuleOptions} ContextModuleOptions */
13
- /** @typedef {import("./ContextModuleFactory").BeforeContextResolveData} BeforeContextResolveData */
14
- /** @typedef {import("./ContextModuleFactory").AfterContextResolveData} AfterContextResolveData */
15
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
11
+ /** @import Compiler from "./Compiler" */
12
+ /** @import { ContextModuleOptions } from "./ContextModule" */
13
+ /**
14
+ * @import {
15
+ * BeforeContextResolveData,
16
+ * AfterContextResolveData
17
+ * } from "./ContextModuleFactory"
18
+ */
19
+ /** @import { InputFileSystem } from "./util/fs" */
16
20
 
17
21
  /** @typedef {Record<string, string>} NewContentCreateContextMap */
18
22
 
@@ -139,10 +143,7 @@ class ContextReplacementPlugin {
139
143
  };
140
144
  if (isMatchResourceRegExp()) {
141
145
  if (newContentResource !== undefined) {
142
- if (
143
- newContentResource.startsWith("/") ||
144
- (newContentResource.length > 1 && newContentResource[1] === ":")
145
- ) {
146
+ if (isAbsolute(newContentResource)) {
146
147
  result.resource = newContentResource;
147
148
  } else {
148
149
  const rootPath =
@@ -179,10 +180,7 @@ class ContextReplacementPlugin {
179
180
  : [result.resource];
180
181
 
181
182
  for (let i = 0; i < newResource.length; i++) {
182
- if (
183
- !newResource[i].startsWith("/") &&
184
- (newResource[i].length <= 1 || newResource[i][1] !== ":")
185
- ) {
183
+ if (!isAbsolute(newResource[i])) {
186
184
  // When the function changed it to an relative path
187
185
  newResource[i] = join(
188
186
  /** @type {InputFileSystem} */