webpack 5.106.1 → 5.107.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 (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -6,33 +6,44 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Strong-key child map used for tuple elements that cannot be stored in a
10
+ * `WeakMap`.
9
11
  * @template {EXPECTED_ANY[]} T
10
12
  * @template V
11
13
  * @typedef {Map<EXPECTED_ANY, WeakTupleMap<T, V>>} M
12
14
  */
13
15
 
14
16
  /**
17
+ * Weak-key child map used for tuple elements that are objects and can be held
18
+ * without preventing garbage collection.
15
19
  * @template {EXPECTED_ANY[]} T
16
20
  * @template V
17
21
  * @typedef {WeakMap<EXPECTED_OBJECT, WeakTupleMap<T, V>>} W
18
22
  */
19
23
 
20
24
  /**
25
+ * Reports whether a tuple element can be stored in a `WeakMap`.
21
26
  * @param {EXPECTED_ANY} thing thing
22
27
  * @returns {boolean} true if is weak
23
28
  */
24
29
  const isWeakKey = (thing) => typeof thing === "object" && thing !== null;
25
30
 
26
31
  /**
32
+ * Extracts the element type from a tuple-like array.
27
33
  * @template {unknown[]} T
28
34
  * @typedef {T extends ReadonlyArray<infer ElementType> ? ElementType : never} ArrayElement
29
35
  */
30
36
 
31
37
  /**
38
+ * Stores values by tuple keys while using `WeakMap` for object elements so the
39
+ * cache can release entries when those objects are collected.
32
40
  * @template {EXPECTED_ANY[]} K
33
41
  * @template V
34
42
  */
35
43
  class WeakTupleMap {
44
+ /**
45
+ * Initializes an empty tuple trie node with optional value and child maps.
46
+ */
36
47
  constructor() {
37
48
  /** @private */
38
49
  this.f = 0;
@@ -54,6 +65,7 @@ class WeakTupleMap {
54
65
  }
55
66
 
56
67
  /**
68
+ * Stores a value at the node identified by the provided tuple key.
57
69
  * @param {[...K, V]} args tuple
58
70
  * @returns {void}
59
71
  */
@@ -67,6 +79,7 @@ class WeakTupleMap {
67
79
  }
68
80
 
69
81
  /**
82
+ * Checks whether the exact tuple key has a stored value.
70
83
  * @param {K} args tuple
71
84
  * @returns {boolean} true, if the tuple is in the Set
72
85
  */
@@ -81,6 +94,7 @@ class WeakTupleMap {
81
94
  }
82
95
 
83
96
  /**
97
+ * Returns the value stored for the exact tuple key, if any.
84
98
  * @param {K} args tuple
85
99
  * @returns {V | undefined} the value
86
100
  */
@@ -95,6 +109,8 @@ class WeakTupleMap {
95
109
  }
96
110
 
97
111
  /**
112
+ * Returns an existing value for the tuple or computes, stores, and returns a
113
+ * new one when the tuple is missing.
98
114
  * @param {[...K, (...args: K) => V]} args tuple
99
115
  * @returns {V} the value
100
116
  */
@@ -112,6 +128,7 @@ class WeakTupleMap {
112
128
  }
113
129
 
114
130
  /**
131
+ * Removes the value stored for the tuple key without pruning the trie.
115
132
  * @param {K} args tuple
116
133
  * @returns {void}
117
134
  */
@@ -126,6 +143,7 @@ class WeakTupleMap {
126
143
  }
127
144
 
128
145
  /**
146
+ * Clears the stored value and all strong and weak child maps from this node.
129
147
  * @returns {void}
130
148
  */
131
149
  clear() {
@@ -135,15 +153,24 @@ class WeakTupleMap {
135
153
  this.m = undefined;
136
154
  }
137
155
 
156
+ /**
157
+ * Returns the value stored directly on this trie node.
158
+ * @returns {V | undefined} stored value
159
+ */
138
160
  _getValue() {
139
161
  return this.v;
140
162
  }
141
163
 
164
+ /**
165
+ * Reports whether this trie node currently stores a value.
166
+ * @returns {boolean} true when a value is present
167
+ */
142
168
  _hasValue() {
143
169
  return (this.f & 1) === 1;
144
170
  }
145
171
 
146
172
  /**
173
+ * Stores a value directly on this trie node.
147
174
  * @param {V} v value
148
175
  * @private
149
176
  */
@@ -152,12 +179,16 @@ class WeakTupleMap {
152
179
  this.v = v;
153
180
  }
154
181
 
182
+ /**
183
+ * Removes the value stored directly on this trie node.
184
+ */
155
185
  _deleteValue() {
156
186
  this.f &= 6;
157
187
  this.v = undefined;
158
188
  }
159
189
 
160
190
  /**
191
+ * Returns the child node for a tuple element without creating one.
161
192
  * @param {ArrayElement<K>} thing thing
162
193
  * @returns {WeakTupleMap<K, V> | undefined} thing
163
194
  * @private
@@ -176,6 +207,8 @@ class WeakTupleMap {
176
207
  }
177
208
 
178
209
  /**
210
+ * Returns the child node for a tuple element, creating and storing it when
211
+ * necessary.
179
212
  * @private
180
213
  * @param {ArrayElement<K>} thing thing
181
214
  * @returns {WeakTupleMap<K, V>} value
@@ -65,6 +65,7 @@ const compileSearch = (funcName, predicate, reversed, extraArgs, earlyOut) => {
65
65
  };
66
66
 
67
67
  /**
68
+ * Defines the search type used by this module.
68
69
  * @template T
69
70
  * @typedef {(items: T[], start: number, compareFn?: number | ((item: T, needle: number) => number), l?: number, h?: number) => number} Search
70
71
  */
@@ -51,6 +51,7 @@ const cachedCleverMerge = (first, second) => {
51
51
  };
52
52
 
53
53
  /**
54
+ * Caches d set property.
54
55
  * @template T
55
56
  * @param {Partial<T>} obj object
56
57
  * @param {string} property property
@@ -86,10 +87,12 @@ const cachedSetProperty = (obj, property, value) => {
86
87
  };
87
88
 
88
89
  /**
90
+ * Defines the by values type used by this module.
89
91
  * @typedef {Map<string, EXPECTED_ANY>} ByValues
90
92
  */
91
93
 
92
94
  /**
95
+ * Defines the object parsed property entry type used by this module.
93
96
  * @template T
94
97
  * @typedef {object} ObjectParsedPropertyEntry
95
98
  * @property {T[keyof T] | undefined} base base value
@@ -100,16 +103,19 @@ const cachedSetProperty = (obj, property, value) => {
100
103
  /** @typedef {(function(...EXPECTED_ANY): object) & { [DYNAMIC_INFO]: [DynamicFunction, object] }} DynamicFunction */
101
104
 
102
105
  /**
106
+ * Defines the parsed object static type used by this module.
103
107
  * @template {object} T
104
108
  * @typedef {Map<keyof T, ObjectParsedPropertyEntry<T>>} ParsedObjectStatic
105
109
  */
106
110
 
107
111
  /**
112
+ * Defines the parsed object dynamic type used by this module.
108
113
  * @template {object} T
109
114
  * @typedef {{ byProperty: `by${string}`, fn: DynamicFunction }} ParsedObjectDynamic
110
115
  */
111
116
 
112
117
  /**
118
+ * Defines the parsed object type used by this module.
113
119
  * @template {object} T
114
120
  * @typedef {object} ParsedObject
115
121
  * @property {ParsedObjectStatic<T>} static static properties (key is property name)
@@ -120,21 +126,23 @@ const cachedSetProperty = (obj, property, value) => {
120
126
  const parseCache = new WeakMap();
121
127
 
122
128
  /**
129
+ * Caches d parse object.
123
130
  * @template {object} T
124
131
  * @param {T} obj the object
125
132
  * @returns {ParsedObject<T>} parsed object
126
133
  */
127
134
  const cachedParseObject = (obj) => {
128
- const entry = parseCache.get(/** @type {EXPECTED_OBJECT} */ (obj));
135
+ const entry = parseCache.get(obj);
129
136
  if (entry !== undefined) return entry;
130
137
  const result = parseObject(obj);
131
- parseCache.set(/** @type {EXPECTED_OBJECT} */ (obj), result);
138
+ parseCache.set(obj, result);
132
139
  return result;
133
140
  };
134
141
 
135
142
  /** @typedef {{ [p: string]: { [p: string]: EXPECTED_ANY } } | DynamicFunction} ByObject */
136
143
 
137
144
  /**
145
+ * Returns parsed object.
138
146
  * @template {object} T
139
147
  * @param {T} obj the object
140
148
  * @returns {ParsedObject<T>} parsed object
@@ -145,6 +153,7 @@ const parseObject = (obj) => {
145
153
  /** @type {ParsedObjectDynamic<T> | undefined} */
146
154
  let dynamicInfo;
147
155
  /**
156
+ * Returns object parsed property entry.
148
157
  * @param {keyof T} p path
149
158
  * @returns {Partial<ObjectParsedPropertyEntry<T>>} object parsed property entry
150
159
  */
@@ -221,6 +230,7 @@ const parseObject = (obj) => {
221
230
  };
222
231
 
223
232
  /**
233
+ * Returns the object.
224
234
  * @template {object} T
225
235
  * @param {ParsedObjectStatic<T>} info static properties (key is property name)
226
236
  * @param {{ byProperty: `by${string}`, fn: DynamicFunction } | undefined} dynamicInfo dynamic part
@@ -269,6 +279,7 @@ const VALUE_TYPE_OBJECT = 3;
269
279
  const VALUE_TYPE_DELETE = 4;
270
280
 
271
281
  /**
282
+ * Returns value type.
272
283
  * @template T
273
284
  * @param {T} value a single value
274
285
  * @returns {VALUE_TYPE_UNDEFINED | VALUE_TYPE_ATOM | VALUE_TYPE_ARRAY_EXTEND | VALUE_TYPE_OBJECT | VALUE_TYPE_DELETE} value type
@@ -311,6 +322,7 @@ const cleverMerge = (first, second) => {
311
322
  };
312
323
 
313
324
  /**
325
+ * Returns merged object of first and second object.
314
326
  * @template {object} T
315
327
  * @template {object} O
316
328
  * Merges two objects. Objects are deeply clever merged.
@@ -378,6 +390,7 @@ const _cleverMerge = (first, second, internalCaching = false) => {
378
390
  };
379
391
 
380
392
  /**
393
+ * Merges the provided values into a single result.
381
394
  * @template T, O
382
395
  * @param {ObjectParsedPropertyEntry<T>} firstEntry a
383
396
  * @param {ObjectParsedPropertyEntry<O>} secondEntry b
@@ -510,6 +523,7 @@ const mergeEntries = (firstEntry, secondEntry, internalCaching) => {
510
523
  };
511
524
 
512
525
  /**
526
+ * Gets from by values.
513
527
  * @template V
514
528
  * @param {ByValues} byValues all values
515
529
  * @param {string} key value of the selector
@@ -523,6 +537,7 @@ const getFromByValues = (byValues, key) => {
523
537
  };
524
538
 
525
539
  /**
540
+ * Merges single value.
526
541
  * @template A
527
542
  * @template B
528
543
  * @param {A | A[]} a value
@@ -585,6 +600,7 @@ const mergeSingleValue = (a, b, internalCaching) => {
585
600
  };
586
601
 
587
602
  /**
603
+ * Removes operations.
588
604
  * @template {object} T
589
605
  * @param {T} obj the object
590
606
  * @param {(keyof T)[]=} keysToKeepOriginalValue keys to keep original value
@@ -632,6 +648,7 @@ const removeOperations = (obj, keysToKeepOriginalValue = []) => {
632
648
  };
633
649
 
634
650
  /**
651
+ * Resolves by property.
635
652
  * @template T
636
653
  * @template {keyof T} P
637
654
  * @template V
@@ -24,50 +24,57 @@ const { compareRuntime } = require("./runtime");
24
24
  /** @typedef {import("../dependencies/ModuleDependency")} ModuleDependency */
25
25
 
26
26
  /**
27
+ * Defines the dependency source order type used by this module.
27
28
  * @typedef {object} DependencySourceOrder
28
29
  * @property {number} main the main source order
29
30
  * @property {number} sub the sub source order
30
31
  */
31
32
 
32
33
  /**
34
+ * Defines the comparator type used by this module.
33
35
  * @template T
34
36
  * @typedef {(a: T, b: T) => -1 | 0 | 1} Comparator
35
37
  */
36
38
  /**
39
+ * Defines the raw parameterized comparator type used by this module.
37
40
  * @template {object} TArg
38
41
  * @template T
39
42
  * @typedef {(tArg: TArg, a: T, b: T) => -1 | 0 | 1} RawParameterizedComparator
40
43
  */
41
44
  /**
45
+ * Defines the parameterized comparator type used by this module.
42
46
  * @template {object} TArg
43
47
  * @template T
44
48
  * @typedef {(tArg: TArg) => Comparator<T>} ParameterizedComparator
45
49
  */
46
50
 
47
51
  /**
52
+ * Creates a cached parameterized comparator.
48
53
  * @template {object} TArg
49
54
  * @template {object} T
50
55
  * @param {RawParameterizedComparator<TArg, T>} fn comparator with argument
51
56
  * @returns {ParameterizedComparator<TArg, T>} comparator
52
57
  */
53
58
  const createCachedParameterizedComparator = (fn) => {
54
- /** @type {WeakMap<EXPECTED_OBJECT, Comparator<T>>} */
59
+ /** @type {WeakMap<TArg, Comparator<T>>} */
55
60
  const map = new WeakMap();
56
61
  return (arg) => {
57
- const cachedResult = map.get(/** @type {EXPECTED_OBJECT} */ (arg));
62
+ const cachedResult = map.get(arg);
58
63
  if (cachedResult !== undefined) return cachedResult;
59
64
  /**
65
+ * Returns compare result.
60
66
  * @param {T} a first item
61
67
  * @param {T} b second item
62
68
  * @returns {-1 | 0 | 1} compare result
63
69
  */
64
70
  const result = fn.bind(null, arg);
65
- map.set(/** @type {EXPECTED_OBJECT} */ (arg), result);
71
+ map.set(arg, result);
66
72
  return result;
67
73
  };
68
74
  };
69
75
 
70
76
  /**
77
+ * Compares the provided values and returns their ordering.
71
78
  * @param {string | number} a first id
72
79
  * @param {string | number} b second id
73
80
  * @returns {-1 | 0 | 1} compare result
@@ -82,6 +89,7 @@ const compareIds = (a, b) => {
82
89
  };
83
90
 
84
91
  /**
92
+ * Compares iterables.
85
93
  * @template T
86
94
  * @param {Comparator<T>} elementComparator comparator for elements
87
95
  * @returns {Comparator<Iterable<T>>} comparator for iterables of elements
@@ -90,6 +98,7 @@ const compareIterables = (elementComparator) => {
90
98
  const cacheEntry = compareIteratorsCache.get(elementComparator);
91
99
  if (cacheEntry !== undefined) return cacheEntry;
92
100
  /**
101
+ * Returns compare result.
93
102
  * @param {Iterable<T>} a first value
94
103
  * @param {Iterable<T>} b second value
95
104
  * @returns {-1 | 0 | 1} compare result
@@ -177,6 +186,7 @@ const compareLocations = (a, b) => {
177
186
  };
178
187
 
179
188
  /**
189
+ * Compares modules by id.
180
190
  * @param {ChunkGraph} chunkGraph the chunk graph
181
191
  * @param {Module} a module
182
192
  * @param {Module} b module
@@ -189,6 +199,7 @@ const compareModulesById = (chunkGraph, a, b) =>
189
199
  );
190
200
 
191
201
  /**
202
+ * Compares the provided values and returns their ordering.
192
203
  * @param {number} a number
193
204
  * @param {number} b number
194
205
  * @returns {-1 | 0 | 1} compare result
@@ -203,6 +214,7 @@ const compareNumbers = (a, b) => {
203
214
  };
204
215
 
205
216
  /**
217
+ * Compares strings numeric.
206
218
  * @param {string} a string
207
219
  * @param {string} b string
208
220
  * @returns {-1 | 0 | 1} compare result
@@ -274,6 +286,7 @@ const compareStringsNumeric = (a, b) => {
274
286
  };
275
287
 
276
288
  /**
289
+ * Compares modules by post order index or identifier.
277
290
  * @param {ModuleGraph} moduleGraph the module graph
278
291
  * @param {Module} a module
279
292
  * @param {Module} b module
@@ -289,6 +302,7 @@ const compareModulesByPostOrderIndexOrIdentifier = (moduleGraph, a, b) => {
289
302
  };
290
303
 
291
304
  /**
305
+ * Compares modules by pre order index or identifier.
292
306
  * @param {ModuleGraph} moduleGraph the module graph
293
307
  * @param {Module} a module
294
308
  * @param {Module} b module
@@ -304,6 +318,7 @@ const compareModulesByPreOrderIndexOrIdentifier = (moduleGraph, a, b) => {
304
318
  };
305
319
 
306
320
  /**
321
+ * Compares modules by id or identifier.
307
322
  * @param {ChunkGraph} chunkGraph the chunk graph
308
323
  * @param {Module} a module
309
324
  * @param {Module} b module
@@ -332,6 +347,7 @@ const compareModulesByFullName = (compiler, a, b) => {
332
347
  };
333
348
 
334
349
  /**
350
+ * Compares the provided values and returns their ordering.
335
351
  * @param {ChunkGraph} chunkGraph the chunk graph
336
352
  * @param {Chunk} a chunk
337
353
  * @param {Chunk} b chunk
@@ -340,6 +356,7 @@ const compareModulesByFullName = (compiler, a, b) => {
340
356
  const compareChunks = (chunkGraph, a, b) => chunkGraph.compareChunks(a, b);
341
357
 
342
358
  /**
359
+ * Compares the provided values and returns their ordering.
343
360
  * @param {string} a first string
344
361
  * @param {string} b second string
345
362
  * @returns {-1 | 0 | 1} compare result
@@ -351,6 +368,7 @@ const compareStrings = (a, b) => {
351
368
  };
352
369
 
353
370
  /**
371
+ * Compares chunk groups by index.
354
372
  * @param {ChunkGroup} a first chunk group
355
373
  * @param {ChunkGroup} b second chunk group
356
374
  * @returns {-1 | 0 | 1} compare result
@@ -359,6 +377,7 @@ const compareChunkGroupsByIndex = (a, b) =>
359
377
  /** @type {number} */ (a.index) < /** @type {number} */ (b.index) ? -1 : 1;
360
378
 
361
379
  /**
380
+ * Represents TwoKeyWeakMap.
362
381
  * @template {EXPECTED_OBJECT} K1
363
382
  * @template {EXPECTED_OBJECT} K2
364
383
  * @template T
@@ -373,6 +392,7 @@ class TwoKeyWeakMap {
373
392
  }
374
393
 
375
394
  /**
395
+ * Returns value.
376
396
  * @param {K1} key1 first key
377
397
  * @param {K2} key2 second key
378
398
  * @returns {T | undefined} value
@@ -386,6 +406,7 @@ class TwoKeyWeakMap {
386
406
  }
387
407
 
388
408
  /**
409
+ * Updates value using the provided key1.
389
410
  * @param {K1} key1 first key
390
411
  * @param {K2} key2 second key
391
412
  * @param {T | undefined} value new value
@@ -405,6 +426,7 @@ class TwoKeyWeakMap {
405
426
  const concatComparatorsCache = new TwoKeyWeakMap();
406
427
 
407
428
  /**
429
+ * Concat comparators.
408
430
  * @template T
409
431
  * @param {Comparator<T>} c1 comparator
410
432
  * @param {Comparator<T>} c2 comparator
@@ -421,6 +443,7 @@ const concatComparators = (c1, c2, ...cRest) => {
421
443
  );
422
444
  if (cacheEntry !== undefined) return cacheEntry;
423
445
  /**
446
+ * Returns compare result.
424
447
  * @param {T} a first value
425
448
  * @param {T} b second value
426
449
  * @returns {-1 | 0 | 1} compare result
@@ -435,6 +458,7 @@ const concatComparators = (c1, c2, ...cRest) => {
435
458
  };
436
459
 
437
460
  /**
461
+ * Defines the selector type used by this module.
438
462
  * @template A, B
439
463
  * @typedef {(input: A) => B | undefined | null} Selector
440
464
  */
@@ -443,6 +467,7 @@ const concatComparators = (c1, c2, ...cRest) => {
443
467
  const compareSelectCache = new TwoKeyWeakMap();
444
468
 
445
469
  /**
470
+ * Compares the provided values and returns their ordering.
446
471
  * @template T
447
472
  * @template R
448
473
  * @param {Selector<T, R>} getter getter for value
@@ -453,6 +478,7 @@ const compareSelect = (getter, comparator) => {
453
478
  const cacheEntry = compareSelectCache.get(getter, comparator);
454
479
  if (cacheEntry !== undefined) return cacheEntry;
455
480
  /**
481
+ * Returns compare result.
456
482
  * @param {T} a first value
457
483
  * @param {T} b second value
458
484
  * @returns {-1 | 0 | 1} compare result
@@ -481,6 +507,7 @@ const compareIteratorsCache = new WeakMap();
481
507
  // TODO this is no longer needed when minimum node.js version is >= 12
482
508
  // since these versions ship with a stable sort function
483
509
  /**
510
+ * Keep original order.
484
511
  * @template T
485
512
  * @param {Iterable<T>} iterable original ordered list
486
513
  * @returns {Comparator<T>} comparator
@@ -500,6 +527,7 @@ const keepOriginalOrder = (iterable) => {
500
527
  };
501
528
 
502
529
  /**
530
+ * Compares chunks natural.
503
531
  * @param {ChunkGraph} chunkGraph the chunk graph
504
532
  * @returns {Comparator<Chunk>} comparator
505
533
  */
@@ -511,6 +539,7 @@ const compareChunksNatural = (chunkGraph) => {
511
539
  compareSelect((chunk) => chunk.runtime, compareRuntime),
512
540
  compareSelect(
513
541
  /**
542
+ * Handles the callback logic for this hook.
514
543
  * @param {Chunk} chunk a chunk
515
544
  * @returns {Iterable<Module>} modules
516
545
  */
@@ -591,6 +620,7 @@ module.exports.compareChunkGroupsByIndex = compareChunkGroupsByIndex;
591
620
  module.exports.compareChunks =
592
621
  createCachedParameterizedComparator(compareChunks);
593
622
  /**
623
+ * Returns compare result.
594
624
  * @param {Chunk} a chunk
595
625
  * @param {Chunk} b chunk
596
626
  * @returns {-1 | 0 | 1} compare result
@@ -617,6 +647,7 @@ module.exports.compareModulesById =
617
647
  module.exports.compareModulesByIdOrIdentifier =
618
648
  createCachedParameterizedComparator(compareModulesByIdOrIdentifier);
619
649
  /**
650
+ * Returns compare result.
620
651
  * @param {Module} a module
621
652
  * @param {Module} b module
622
653
  * @returns {-1 | 0 | 1} compare result
@@ -6,12 +6,14 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Returns quoted meta.
9
10
  * @param {string} str string
10
11
  * @returns {string} quoted meta
11
12
  */
12
13
  const quoteMeta = (str) => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
13
14
 
14
15
  /**
16
+ * Quote meta in char class.
15
17
  * @param {string} char character to escape for use in character class
16
18
  * @returns {string} escaped character
17
19
  */
@@ -85,6 +87,7 @@ const formatRange = (start, end) => {
85
87
  };
86
88
 
87
89
  /**
90
+ * Returns string.
88
91
  * @param {string} str string
89
92
  * @returns {string} string
90
93
  */
@@ -96,6 +99,7 @@ const toSimpleString = (str) => {
96
99
  };
97
100
 
98
101
  /**
102
+ * Compile boolean matcher.
99
103
  * @param {Record<string | number, boolean>} map value map
100
104
  * @returns {boolean | ((value: string) => string)} true/false, when unconditionally true/false, or a template function to determine the value at runtime
101
105
  */
@@ -108,6 +112,7 @@ const compileBooleanMatcher = (map) => {
108
112
  };
109
113
 
110
114
  /**
115
+ * Compile boolean matcher from lists.
111
116
  * @param {string[]} positiveItems positive items
112
117
  * @param {string[]} negativeItems negative items
113
118
  * @returns {(value: string) => string} a template function to determine the value at runtime
@@ -132,6 +137,7 @@ const compileBooleanMatcherFromLists = (positiveItems, negativeItems) => {
132
137
  /** @typedef {string[][]} ListOfCommonItems */
133
138
 
134
139
  /**
140
+ * Returns list of common items.
135
141
  * @param {Set<string>} itemsSet items set
136
142
  * @param {(str: string) => string | false} getKey get key function
137
143
  * @param {(str: string[]) => boolean} condition condition
@@ -166,6 +172,7 @@ const popCommonItems = (itemsSet, getKey, condition) => {
166
172
  };
167
173
 
168
174
  /**
175
+ * Gets common prefix.
169
176
  * @param {string[]} items items
170
177
  * @returns {string} common prefix
171
178
  */
@@ -184,6 +191,7 @@ const getCommonPrefix = (items) => {
184
191
  };
185
192
 
186
193
  /**
194
+ * Gets common suffix.
187
195
  * @param {string[]} items items
188
196
  * @returns {string} common suffix
189
197
  */
@@ -202,6 +210,7 @@ const getCommonSuffix = (items) => {
202
210
  };
203
211
 
204
212
  /**
213
+ * Returns regexp.
205
214
  * @param {string[]} itemsArr array of items
206
215
  * @returns {string} regexp
207
216
  */
@@ -7,10 +7,10 @@
7
7
 
8
8
  const Template = require("../Template");
9
9
 
10
- /** @typedef {import("eslint-scope").Scope} Scope */
11
- /** @typedef {import("eslint-scope").Reference} Reference */
12
- /** @typedef {import("eslint-scope").Variable} Variable */
13
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
14
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
15
15
  /** @typedef {Set<string>} UsedNames */
16
16
 
@@ -18,6 +18,7 @@ const DEFAULT_EXPORT = "__WEBPACK_DEFAULT_EXPORT__";
18
18
  const NAMESPACE_OBJECT_EXPORT = "__WEBPACK_NAMESPACE_OBJECT__";
19
19
 
20
20
  /**
21
+ * Gets all references.
21
22
  * @param {Variable} variable variable
22
23
  * @returns {Reference[]} references
23
24
  */
@@ -37,6 +38,7 @@ const getAllReferences = (variable) => {
37
38
  };
38
39
 
39
40
  /**
41
+ * Returns result.
40
42
  * @param {Node | Node[]} ast ast
41
43
  * @param {Node} node node
42
44
  * @returns {undefined | Node[]} result
@@ -49,6 +51,7 @@ const getPathInAst = (ast, node) => {
49
51
  const nr = /** @type {Range} */ (node.range);
50
52
 
51
53
  /**
54
+ * Returns result.
52
55
  * @param {Node} n node
53
56
  * @returns {Node[] | undefined} result
54
57
  */
@@ -92,6 +95,7 @@ const getPathInAst = (ast, node) => {
92
95
  };
93
96
 
94
97
  /**
98
+ * Returns found new name.
95
99
  * @param {string} oldName old name
96
100
  * @param {UsedNames} usedNamed1 used named 1
97
101
  * @param {UsedNames} usedNamed2 used named 2
@@ -142,6 +146,7 @@ function findNewName(oldName, usedNamed1, usedNamed2, extraInfo) {
142
146
  /** @typedef {Set<Scope>} ScopeSet */
143
147
 
144
148
  /**
149
+ * Adds scope symbols.
145
150
  * @param {Scope | null} s scope
146
151
  * @param {UsedNames} nameSet name set
147
152
  * @param {ScopeSet} scopeSet1 scope set 1
@@ -202,6 +207,7 @@ const RESERVED_NAMES = new Set(
202
207
  /** @typedef {Map<string, ScopeInfo>} UsedNamesInScopeInfo */
203
208
 
204
209
  /**
210
+ * Gets used names in scope info.
205
211
  * @param {UsedNamesInScopeInfo} usedNamesInScopeInfo used names in scope info
206
212
  * @param {string} module module identifier
207
213
  * @param {string} id export id