@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
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../util/Hash")} Hash */
8
+ /** @import Hash from "../util/Hash" */
9
9
 
10
10
  /**
11
11
  * StringXor class provides methods for performing
@@ -17,6 +17,7 @@ const _0CharCode = "0".charCodeAt(0);
17
17
  const _9CharCode = "9".charCodeAt(0);
18
18
  const plusCharCode = "+".charCodeAt(0);
19
19
  const hyphenCharCode = "-".charCodeAt(0);
20
+ const dotCharCode = ".".charCodeAt(0);
20
21
  const colonCharCode = ":".charCodeAt(0);
21
22
  const hashCharCode = "#".charCodeAt(0);
22
23
  const queryCharCode = "?".charCodeAt(0);
@@ -46,7 +47,8 @@ function getScheme(specifier) {
46
47
  (ch >= aUpperCaseCharCode && ch <= zUpperCaseCharCode) ||
47
48
  (ch >= _0CharCode && ch <= _9CharCode) ||
48
49
  ch === plusCharCode ||
49
- ch === hyphenCharCode
50
+ ch === hyphenCharCode ||
51
+ ch === dotCharCode
50
52
  ) {
51
53
  if (++i === specifier.length) return;
52
54
  ch = specifier.charCodeAt(i);
@@ -5,10 +5,10 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../Dependency")} Dependency */
9
- /** @typedef {import("../Module")} Module */
10
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
11
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
8
+ /** @import Dependency from "../Dependency" */
9
+ /** @import Module from "../Module" */
10
+ /** @import ModuleGraph from "../ModuleGraph" */
11
+ /** @import { Range } from "../javascript/JavascriptParser" */
12
12
 
13
13
  /** @typedef {Range[]} IdRanges */
14
14
 
@@ -78,7 +78,11 @@ function trimIdsToThoseImported(ids, moduleGraph, dependency) {
78
78
  );
79
79
  for (let i = 0; i < ids.length; i++) {
80
80
  if (i === 0 && ids[i] === "default") {
81
- continue; // ExportInfo for the next level under default is still at the root ExportsInfo, so don't advance currentExportsInfo
81
+ const nestedInfo = currentExportsInfo
82
+ .getExportInfo(ids[i])
83
+ .getNestedExportsInfo();
84
+ if (nestedInfo) currentExportsInfo = nestedInfo;
85
+ continue;
82
86
  }
83
87
  const exportInfo = currentExportsInfo.getExportInfo(ids[i]);
84
88
  if (exportInfo.provided === false) {
@@ -100,7 +100,7 @@ const cachedSetProperty = (obj, property, value) => {
100
100
  * @property {ByValues | undefined} byValues value depending on selector property, merged with base
101
101
  */
102
102
 
103
- /** @typedef {(function(...EXPECTED_ANY): object) & { [DYNAMIC_INFO]: [DynamicFunction, object] }} DynamicFunction */
103
+ /** @typedef {((...x: EXPECTED_ANY) => object) & { [DYNAMIC_INFO]: [DynamicFunction, object] }} DynamicFunction */
104
104
 
105
105
  /**
106
106
  * Defines the parsed object static type used by this module.
@@ -8,20 +8,17 @@
8
8
  const { getFullModuleName } = require("../ids/IdHelpers");
9
9
  const { compareRuntime } = require("./runtime");
10
10
 
11
- /** @typedef {import("../Chunk")} Chunk */
12
- /** @typedef {import("../Chunk").ChunkName} ChunkName */
13
- /** @typedef {import("../Chunk").ChunkId} ChunkId */
14
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
15
- /** @typedef {import("../ChunkGraph").ModuleId} ModuleId */
16
- /** @typedef {import("../ChunkGroup")} ChunkGroup */
17
- /** @typedef {import("../Compiler")} Compiler */
18
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
19
- /** @typedef {import("../Dependency")} Dependency */
20
- /** @typedef {import("../dependencies/HarmonyImportSideEffectDependency")} HarmonyImportSideEffectDependency */
21
- /** @typedef {import("../dependencies/HarmonyImportSpecifierDependency")} HarmonyImportSpecifierDependency */
22
- /** @typedef {import("../Module")} Module */
23
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
24
- /** @typedef {import("../dependencies/ModuleDependency")} ModuleDependency */
11
+ /** @import Chunk, { ChunkName, ChunkId } from "../Chunk" */
12
+ /** @import ChunkGraph, { ModuleId } from "../ChunkGraph" */
13
+ /** @import ChunkGroup from "../ChunkGroup" */
14
+ /** @import Compiler from "../Compiler" */
15
+ /** @import Dependency, { DependencyLocation } from "../Dependency" */
16
+ /** @import HarmonyImportSideEffectDependency from "../dependencies/HarmonyImportSideEffectDependency" */
17
+ /** @import HarmonyImportSpecifierDependency from "../dependencies/HarmonyImportSpecifierDependency" */
18
+ /** @import Module from "../Module" */
19
+ /** @import ModuleGraph from "../ModuleGraph" */
20
+ /** @import WebpackErrorType from "../errors/WebpackError" */
21
+ /** @import ModuleDependency from "../dependencies/ModuleDependency" */
25
22
 
26
23
  /**
27
24
  * Defines the dependency source order type used by this module.
@@ -501,6 +498,38 @@ const compareSelect = (getter, comparator) => {
501
498
  return result;
502
499
  };
503
500
 
501
+ // `compilation.errors`/`warnings`/`hints` are typed as plain `Error`s, so the
502
+ // webpack-specific fields are read through a cast.
503
+ const compareErrors = concatComparators(
504
+ compareSelect(
505
+ /**
506
+ * @param {Error} err error
507
+ * @returns {string} identifier of the module the error belongs to
508
+ */
509
+ (err) => {
510
+ const { module } = /** @type {WebpackErrorType} */ (err);
511
+ return (module && module.identifier()) || "";
512
+ },
513
+ compareStringsNumeric
514
+ ),
515
+ compareSelect(
516
+ /**
517
+ * @param {Error} err error
518
+ * @returns {DependencyLocation | undefined} location
519
+ */
520
+ (err) => /** @type {WebpackErrorType} */ (err).loc,
521
+ compareLocations
522
+ ),
523
+ compareSelect(
524
+ /**
525
+ * @param {Error} err error
526
+ * @returns {string} message
527
+ */
528
+ (err) => `${err.message}`,
529
+ compareStringsNumeric
530
+ )
531
+ );
532
+
504
533
  /** @type {WeakMap<Comparator<EXPECTED_ANY>, Comparator<Iterable<EXPECTED_ANY>>>} */
505
534
  const compareIteratorsCache = new WeakMap();
506
535
 
@@ -629,6 +658,8 @@ module.exports.compareChunksById = (a, b) =>
629
658
  compareIds(/** @type {ChunkId} */ (a.id), /** @type {ChunkId} */ (b.id));
630
659
  module.exports.compareChunksNatural = compareChunksNatural;
631
660
 
661
+ module.exports.compareErrors = compareErrors;
662
+
632
663
  module.exports.compareIds = compareIds;
633
664
 
634
665
  module.exports.compareIterables = compareIterables;
@@ -7,41 +7,199 @@
7
7
 
8
8
  const Template = require("../Template");
9
9
 
10
- /** @typedef {import("estree").Node} Node */
11
- /** @typedef {import("../javascript/JavascriptModulesPlugin").Scope} Scope */
12
- /** @typedef {import("../javascript/JavascriptModulesPlugin").Reference} Reference */
13
- /** @typedef {import("../javascript/JavascriptModulesPlugin").Variable} Variable */
14
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
10
+ /** @import { Identifier, Node } from "estree" */
11
+ /** @import { Optimization } from "../../declarations/WebpackOptions" */
12
+ /**
13
+ * @import {
14
+ * Scope,
15
+ * Reference,
16
+ * Variable
17
+ * } from "../javascript/JavascriptModulesPlugin"
18
+ */
19
+ /** @import { Range } from "../javascript/JavascriptParser" */
20
+ /** @typedef {Node & { start?: number, end?: number }} PositionedNode */
21
+ /** @typedef {Exclude<keyof Node, "range" | "loc" | "leadingComments" | "trailingComments">} ChildKey */
15
22
  /** @typedef {Set<string>} UsedNames */
16
23
 
17
24
  const DEFAULT_EXPORT = "__WEBPACK_DEFAULT_EXPORT__";
18
25
  const NAMESPACE_OBJECT_EXPORT = "__WEBPACK_NAMESPACE_OBJECT__";
19
26
 
27
+ /**
28
+ * Whether CommonJS modules and require edges take part in concatenation.
29
+ * @param {Optimization["concatenateModules"]} concatenateModules the optimization.concatenateModules option
30
+ * @returns {boolean} true when CommonJS concatenation is enabled
31
+ */
32
+ const isCommonJsConcatenationEnabled = (concatenateModules) =>
33
+ typeof concatenateModules === "object"
34
+ ? concatenateModules.commonjs !== false
35
+ : concatenateModules === true;
36
+
37
+ /** @type {WeakMap<Scope, Map<Identifier, Variable>>} */
38
+ const sharedInnerBindingsCache = new WeakMap();
39
+
40
+ /**
41
+ * The inner bindings sharing a declaring identifier with their own scope — a
42
+ * class name binds twice. Indexed once per scope; per binding it is quadratic.
43
+ * @param {Scope} scope the scope whose children to index
44
+ * @returns {Map<Identifier, Variable>} the inner binding sharing each identifier
45
+ */
46
+ const getSharedInnerBindings = (scope) => {
47
+ const cached = sharedInnerBindingsCache.get(scope);
48
+ if (cached !== undefined) return cached;
49
+ /** @type {Map<Identifier, Variable>} */
50
+ const shared = new Map();
51
+ /** @type {Set<Identifier>} */
52
+ const declared = new Set();
53
+ for (const variable of scope.variables) {
54
+ for (const identifier of variable.identifiers) declared.add(identifier);
55
+ }
56
+ if (declared.size !== 0) {
57
+ for (const child of scope.childScopes) {
58
+ for (const innerVariable of child.variables) {
59
+ for (const identifier of innerVariable.identifiers) {
60
+ if (declared.has(identifier)) shared.set(identifier, innerVariable);
61
+ }
62
+ }
63
+ }
64
+ }
65
+ sharedInnerBindingsCache.set(scope, shared);
66
+ return shared;
67
+ };
68
+
20
69
  /**
21
70
  * Gets all references.
22
71
  * @param {Variable} variable variable
23
72
  * @returns {Reference[]} references
24
73
  */
25
74
  const getAllReferences = (variable) => {
75
+ // the inner binding of `class Foo { t() { Foo } }` holds references to the
76
+ // same name, and renaming has to move them too
77
+ const shared = getSharedInnerBindings(variable.scope);
78
+ if (shared.size === 0) return variable.references;
26
79
  let set = variable.references;
27
- // Look for inner scope variables too (like in class Foo { t() { Foo } })
28
- // identifiers is tiny (usually 1 declaration) — indexOf beats a Set here
29
- const identifiers = variable.identifiers;
30
- for (const scope of variable.scope.childScopes) {
31
- for (const innerVar of scope.variables) {
32
- if (innerVar.identifiers.some((id) => identifiers.includes(id))) {
33
- // copy-on-write to keep the common no-match case allocation-free
34
- if (set === variable.references) set = [...set];
35
- for (const ref of innerVar.references) set.push(ref);
36
- break;
80
+ /** @type {Variable | undefined} */
81
+ let last;
82
+ for (const identifier of variable.identifiers) {
83
+ const innerVariable = shared.get(identifier);
84
+ if (innerVariable === undefined || innerVariable === last) continue;
85
+ last = innerVariable;
86
+ // copy-on-write to keep the common no-match case allocation-free
87
+ if (set === variable.references) set = [...set];
88
+ for (const reference of innerVariable.references) set.push(reference);
89
+ }
90
+ return set;
91
+ };
92
+
93
+ /**
94
+ * Tests whether a node covers the searched range. `start`/`end` are read before
95
+ * `range`, because webpack's parser serves `range` from a lazy getter that
96
+ * allocates an array and transitions the node's shape on first access — reading
97
+ * it while walking would pay that for most nodes of the ast.
98
+ * @param {PositionedNode} node node
99
+ * @param {number} start start of the searched range
100
+ * @param {number} end end of the searched range
101
+ * @returns {boolean} whether the node covers the range
102
+ */
103
+ const coversRange = (node, start, end) => {
104
+ const nodeStart = node.start;
105
+ if (typeof nodeStart === "number") {
106
+ return nodeStart <= start && /** @type {number} */ (node.end) >= end;
107
+ }
108
+ const range = node.range;
109
+ return range !== undefined && range[0] <= start && range[1] >= end;
110
+ };
111
+
112
+ /**
113
+ * Returns the single sibling covering the searched range.
114
+ * @param {Node[]} items sibling nodes
115
+ * @param {number} start start of the searched range
116
+ * @param {number} end end of the searched range
117
+ * @returns {Node | undefined} covering sibling
118
+ */
119
+ const findCoveringItem = (items, start, end) => {
120
+ // sibling ranges are ordered and disjoint; binary search the container
121
+ let low = 0;
122
+ let high = items.length - 1;
123
+ while (low <= high) {
124
+ const middle = (low + high) >> 1;
125
+ const item = /** @type {PositionedNode} */ (items[middle]);
126
+ /** @type {number | undefined} */
127
+ let itemStart;
128
+ /** @type {number | undefined} */
129
+ let itemEnd;
130
+ if (item) {
131
+ itemStart = item.start;
132
+ if (typeof itemStart === "number") {
133
+ itemEnd = item.end;
134
+ } else {
135
+ const range = item.range;
136
+ if (range === undefined) {
137
+ itemStart = undefined;
138
+ } else {
139
+ itemStart = range[0];
140
+ itemEnd = range[1];
141
+ }
142
+ }
143
+ }
144
+ if (itemStart === undefined) {
145
+ // holes or range-less nodes: scan the remaining window linearly
146
+ for (let i = low; i <= high; i++) {
147
+ const candidate = items[i];
148
+ if (candidate && coversRange(candidate, start, end)) return candidate;
37
149
  }
150
+ return undefined;
151
+ }
152
+ if (itemStart > start) {
153
+ high = middle - 1;
154
+ } else if (start >= /** @type {number} */ (itemEnd)) {
155
+ low = middle + 1;
156
+ } else {
157
+ return /** @type {number} */ (itemEnd) >= end ? item : undefined;
38
158
  }
39
159
  }
40
- return set;
160
+ return undefined;
161
+ };
162
+
163
+ /**
164
+ * Collects the ancestors of `node` below `parent`, innermost first.
165
+ * Keeps scanning after a covering child turns out not to contain `node`:
166
+ * a shorthand `{ a }` holds two distinct identifiers with the same range.
167
+ * @param {Node} parent node to search in
168
+ * @param {number} start start of the searched range
169
+ * @param {number} end end of the searched range
170
+ * @param {Node} node node to find
171
+ * @param {Node[]} path collected ancestors
172
+ * @returns {boolean} whether the node was found
173
+ */
174
+ const collectPathInNode = (parent, start, end, node, path) => {
175
+ for (const key in parent) {
176
+ // sit in front of the child keys on every node and never hold one, so
177
+ // skipping them by name is what keeps the per-level scan short
178
+ if (key === "type" || key === "start" || key === "end") continue;
179
+ const value = parent[/** @type {ChildKey} */ (key)];
180
+ if (value === null || typeof value !== "object") continue;
181
+ /** @type {Node | undefined} */
182
+ let child;
183
+ if (Array.isArray(value)) {
184
+ // `range` is a number pair on parsers that own the property
185
+ if (key === "range") continue;
186
+ child = findCoveringItem(value, start, end);
187
+ } else if (coversRange(value, start, end)) {
188
+ child = value;
189
+ }
190
+ if (
191
+ child !== undefined &&
192
+ (child === node || collectPathInNode(child, start, end, node, path))
193
+ ) {
194
+ path.push(child);
195
+ return true;
196
+ }
197
+ }
198
+ return false;
41
199
  };
42
200
 
43
201
  /**
44
- * Returns result.
202
+ * Returns the ancestors of `node` up to (but excluding) `ast`, innermost first.
45
203
  * @param {Node | Node[]} ast ast
46
204
  * @param {Node} node node
47
205
  * @returns {undefined | Node[]} result
@@ -51,69 +209,25 @@ const getPathInAst = (ast, node) => {
51
209
  return [];
52
210
  }
53
211
 
54
- const nr = /** @type {Range} */ (node.range);
55
-
56
- /**
57
- * Returns result.
58
- * @param {Node} n node
59
- * @returns {Node[] | undefined} result
60
- */
61
- const enterNode = (n) => {
62
- if (!n) return;
63
- const r = n.range;
64
- if (r && r[0] <= nr[0] && r[1] >= nr[1]) {
65
- const path = getPathInAst(n, node);
66
- if (path) {
67
- path.push(n);
68
- return path;
69
- }
70
- }
71
- };
212
+ const nodeRange = /** @type {Range} */ (node.range);
213
+ const start = nodeRange[0];
214
+ const end = nodeRange[1];
215
+ /** @type {Node[]} */
216
+ const path = [];
72
217
 
73
218
  if (Array.isArray(ast)) {
74
- // sibling ranges are ordered and disjoint; binary search the container
75
- let lo = 0;
76
- let hi = ast.length - 1;
77
- while (lo <= hi) {
78
- const mid = (lo + hi) >> 1;
79
- const item = ast[mid];
80
- const r = item && item.range;
81
- if (!r) {
82
- // holes or range-less nodes: scan the remaining window linearly
83
- for (let i = lo; i <= hi; i++) {
84
- const enterResult = enterNode(ast[i]);
85
- if (enterResult !== undefined) return enterResult;
86
- }
87
- return;
88
- }
89
- if (r[0] > nr[0]) {
90
- hi = mid - 1;
91
- } else if (nr[0] >= r[1]) {
92
- lo = mid + 1;
93
- } else {
94
- return r[1] >= nr[1] ? enterNode(item) : undefined;
95
- }
96
- }
97
- } else if (ast && typeof ast === "object") {
98
- const keys =
99
- /** @type {(keyof Node)[]} */
100
- (Object.keys(ast));
101
- for (let i = 0; i < keys.length; i++) {
102
- // We are making the faster check in `enterNode` using `n.range`
103
- const value =
104
- ast[
105
- /** @type {Exclude<keyof Node, "range" | "loc" | "leadingComments" | "trailingComments">} */
106
- (keys[i])
107
- ];
108
- if (Array.isArray(value)) {
109
- const pathResult = getPathInAst(value, node);
110
- if (pathResult !== undefined) return pathResult;
111
- } else if (value && typeof value === "object") {
112
- const enterResult = enterNode(value);
113
- if (enterResult !== undefined) return enterResult;
114
- }
219
+ const item = findCoveringItem(ast, start, end);
220
+ if (item === undefined) return undefined;
221
+ if (item !== node && !collectPathInNode(item, start, end, node, path)) {
222
+ return undefined;
115
223
  }
224
+ path.push(item);
225
+ return path;
116
226
  }
227
+
228
+ if (!ast || typeof ast !== "object") return undefined;
229
+
230
+ return collectPathInNode(ast, start, end, node, path) ? path : undefined;
117
231
  };
118
232
 
119
233
  /** @type {Map<string, string[]>} */
@@ -210,11 +324,21 @@ const addScopeSymbols = (s, nameSet, scopeSet1, scopeSet2) => {
210
324
  }
211
325
  };
212
326
 
327
+ // Declared by the chunk bootstrap in the scope module code is hoisted into.
328
+ // Hit when a webpack bundle is bundled again, since its output declares exactly
329
+ // these: the `const` one then fails to parse, the `var` one silently clobbers
330
+ // the module table. CompatibilityPlugin renames the other two runtime names.
331
+ const CHUNK_RUNTIME_DECLARATIONS = new Set([
332
+ "__webpack_modules__",
333
+ "__webpack_module_cache__"
334
+ ]);
335
+
213
336
  const RESERVED_NAMES = new Set(
214
337
  [
215
338
  // internal names (should always be renamed)
216
339
  DEFAULT_EXPORT,
217
340
  NAMESPACE_OBJECT_EXPORT,
341
+ ...CHUNK_RUNTIME_DECLARATIONS,
218
342
 
219
343
  // keywords
220
344
  "abstract,arguments,async,await,boolean,break,byte,case,catch,char,class,const,continue",
@@ -277,6 +401,7 @@ const getUsedNamesInScopeInfo = (usedNamesInScopeInfo, module, id) => {
277
401
  };
278
402
 
279
403
  module.exports = {
404
+ CHUNK_RUNTIME_DECLARATIONS,
280
405
  DEFAULT_EXPORT,
281
406
  NAMESPACE_OBJECT_EXPORT,
282
407
  RESERVED_NAMES,
@@ -284,5 +409,6 @@ module.exports = {
284
409
  findNewName,
285
410
  getAllReferences,
286
411
  getPathInAst,
287
- getUsedNamesInScopeInfo
412
+ getUsedNamesInScopeInfo,
413
+ isCommonJsConcatenationEnabled
288
414
  };
@@ -5,7 +5,11 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
8
+ /**
9
+ * @import {
10
+ * CssGeneratorExportsConvention
11
+ * } from "../../declarations/WebpackOptions"
12
+ */
9
13
  // Copy from css-loader
10
14
  /**
11
15
  * Preserve camel case.
@@ -111,7 +115,11 @@ module.exports.cssExportConvention = (input, convention) => {
111
115
  const set = new Set();
112
116
  if (typeof convention === "function") {
113
117
  const result = convention(input);
114
- const validate = (/** @type {string} */ name) => {
118
+ /**
119
+ * @param {string} name name returned by the convention function
120
+ * @returns {void}
121
+ */
122
+ const validate = (name) => {
115
123
  if (typeof name !== "string" || name.length === 0) {
116
124
  throw new Error(
117
125
  `exportsConvention function must return a non-empty string or an array of non-empty strings, got ${safeStringify(result)}`
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("./Hash")} Hash */
9
- /** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
8
+ /** @import Hash from "./Hash" */
9
+ /** @import { HashFunction } from "../../declarations/WebpackOptions" */
10
10
 
11
11
  /** @type {typeof import("crypto") | undefined} */
12
12
  let crypto;
@@ -4,10 +4,6 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const memoize = require("./memoize");
8
-
9
- const getCompilation = memoize(() => require("../Compilation"));
10
-
11
7
  /**
12
8
  * @template T
13
9
  * @param {() => T} createHooks factory that returns a fresh hooks object
@@ -17,10 +13,15 @@ const createHooksRegistry = (createHooks) => {
17
13
  /** @type {WeakMap<import("../Compilation"), T>} */
18
14
  const map = new WeakMap();
19
15
  return (compilation) => {
20
- if (!(compilation instanceof getCompilation())) {
21
- // a compilation from another webpack copy fails instanceof — match the class name
16
+ let hooks = map.get(compilation);
17
+ if (hooks === undefined) {
18
+ // validated once per compilation — this runs on every render and
19
+ // codegen. Matched by class name, not `instanceof`: a compilation from
20
+ // another webpack copy has to pass too, and importing `Compilation`
21
+ // here cycles.
22
22
  const candidate =
23
- /** @type {{ constructor?: { name: string } } | null} */ (compilation);
23
+ /** @type {{ constructor?: { name: string } } | null} */
24
+ (compilation);
24
25
  if (
25
26
  !candidate ||
26
27
  !candidate.constructor ||
@@ -30,9 +31,6 @@ const createHooksRegistry = (createHooks) => {
30
31
  "The 'compilation' argument must be an instance of Compilation"
31
32
  );
32
33
  }
33
- }
34
- let hooks = map.get(compilation);
35
- if (hooks === undefined) {
36
34
  hooks = createHooks();
37
35
  map.set(compilation, hooks);
38
36
  }
@@ -13,9 +13,9 @@
13
13
  * while richer call sites can pass arrays of segments.
14
14
  *
15
15
  * TODO move this encoder into `webpack-sources` and replace the body of this
16
- * file with re-exports. The public shape (`encodeVLQ`, `encodeMappings(lines)`,
17
- * `MappingSegment`, `LineMappings`) is intended to match what would land
18
- * upstream so call sites don't have to change.
16
+ * file with re-exports. The public shape (`encodeVLQ`, `decodeVLQ`,
17
+ * `encodeMappings(lines)`, `MappingSegment`, `LineMappings`) is intended to
18
+ * match what would land upstream so call sites don't have to change.
19
19
  */
20
20
 
21
21
  const VLQ_BASE64 =
@@ -38,6 +38,27 @@ const encodeVLQ = (value) => {
38
38
  return result;
39
39
  };
40
40
 
41
+ /**
42
+ * Decode one base64 VLQ value per the source-map V3 spec.
43
+ * @param {string} mappings a VLQ encoded `mappings` string
44
+ * @param {number} start index of the value's first character
45
+ * @returns {{ value: number, end: number }} the decoded value and the index just past it; `end` equals `start` when there is no valid value at `start`
46
+ */
47
+ const decodeVLQ = (mappings, start) => {
48
+ let value = 0;
49
+ let shift = 0;
50
+ let index = start;
51
+ let digit;
52
+ do {
53
+ digit = index < mappings.length ? VLQ_BASE64.indexOf(mappings[index]) : -1;
54
+ if (digit < 0) return { value: 0, end: start };
55
+ value += (digit & 0x1f) << shift;
56
+ shift += 5;
57
+ index++;
58
+ } while (digit & 0x20);
59
+ return { value: value & 1 ? -(value >>> 1) : value >>> 1, end: index };
60
+ };
61
+
41
62
  /**
42
63
  * @typedef {object} MappingSegment
43
64
  * @property {number=} generatedColumn 0-based generated column (defaults to 0)
@@ -114,5 +135,6 @@ const encodeMappings = (lines) => {
114
135
  return encodedLines.join(";");
115
136
  };
116
137
 
138
+ module.exports.decodeVLQ = decodeVLQ;
117
139
  module.exports.encodeMappings = encodeMappings;
118
140
  module.exports.encodeVLQ = encodeVLQ;