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
@@ -24,6 +24,7 @@ class ChunkPrefetchFunctionRuntimeModule extends RuntimeModule {
24
24
  }
25
25
 
26
26
  /**
27
+ * Generates runtime code for this runtime module.
27
28
  * @returns {string | null} runtime code
28
29
  */
29
30
  generate() {
@@ -15,8 +15,14 @@ const ChunkPreloadTriggerRuntimeModule = require("./ChunkPreloadTriggerRuntimeMo
15
15
 
16
16
  const PLUGIN_NAME = "ChunkPrefetchPreloadPlugin";
17
17
 
18
+ /**
19
+ * Adds runtime support for chunk prefetch and preload relationships discovered
20
+ * in the chunk graph.
21
+ */
18
22
  class ChunkPrefetchPreloadPlugin {
19
23
  /**
24
+ * Registers compilation hooks that emit the runtime modules responsible for
25
+ * scheduling chunk prefetch and preload requests.
20
26
  * @param {Compiler} compiler the compiler
21
27
  * @returns {void}
22
28
  */
@@ -23,6 +23,7 @@ class ChunkPrefetchStartupRuntimeModule extends RuntimeModule {
23
23
  }
24
24
 
25
25
  /**
26
+ * Generates runtime code for this runtime module.
26
27
  * @returns {string | null} runtime code
27
28
  */
28
29
  generate() {
@@ -22,6 +22,7 @@ class ChunkPrefetchTriggerRuntimeModule extends RuntimeModule {
22
22
  }
23
23
 
24
24
  /**
25
+ * Generates runtime code for this runtime module.
25
26
  * @returns {string | null} runtime code
26
27
  */
27
28
  generate() {
@@ -38,10 +39,13 @@ class ChunkPrefetchTriggerRuntimeModule extends RuntimeModule {
38
39
  `${
39
40
  RuntimeGlobals.ensureChunkHandlers
40
41
  }.prefetch = ${runtimeTemplate.expressionFunction(
42
+ // Prefetch is best-effort; silence rejections so a failed chunk
43
+ // load (e.g. chunkLoadTimeout) doesn't surface as an unhandled
44
+ // rejection through this dangling Promise.all chain.
41
45
  `Promise.all(promises).then(${runtimeTemplate.basicFunction(
42
46
  "",
43
47
  body
44
- )})`,
48
+ )}, ${runtimeTemplate.basicFunction("", "")})`,
45
49
  "chunkId, promises"
46
50
  )};`
47
51
  ])
@@ -22,6 +22,7 @@ class ChunkPreloadTriggerRuntimeModule extends RuntimeModule {
22
22
  }
23
23
 
24
24
  /**
25
+ * Generates runtime code for this runtime module.
25
26
  * @returns {string | null} runtime code
26
27
  */
27
28
  generate() {
@@ -9,6 +9,7 @@
9
9
  /** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
10
10
 
11
11
  /**
12
+ * Defines the keys of types type used by this module.
12
13
  * @template T
13
14
  * @template {T[keyof T]} V
14
15
  * @typedef {import("./RuleSetCompiler").KeysOfTypes<T, V>} KeysOfTypes
@@ -20,6 +21,7 @@ const PLUGIN_NAME = "BasicEffectRulePlugin";
20
21
 
21
22
  class BasicEffectRulePlugin {
22
23
  /**
24
+ * Creates an instance of BasicEffectRulePlugin.
23
25
  * @param {BasicEffectRuleKeys} ruleProperty the rule property
24
26
  * @param {string=} effectType the effect type
25
27
  */
@@ -31,6 +33,7 @@ class BasicEffectRulePlugin {
31
33
  }
32
34
 
33
35
  /**
36
+ * Applies the plugin by registering its hooks on the compiler.
34
37
  * @param {RuleSetCompiler} ruleSetCompiler the rule set compiler
35
38
  * @returns {void}
36
39
  */
@@ -11,6 +11,7 @@
11
11
  /** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
12
12
 
13
13
  /**
14
+ * Defines the keys of types type used by this module.
14
15
  * @template T
15
16
  * @template {T[keyof T]} V
16
17
  * @typedef {import("./RuleSetCompiler").KeysOfTypes<T, V>} KeysOfTypes
@@ -22,6 +23,7 @@ const PLUGIN_NAME = "BasicMatcherRulePlugin";
22
23
 
23
24
  class BasicMatcherRulePlugin {
24
25
  /**
26
+ * Creates an instance of BasicMatcherRulePlugin.
25
27
  * @param {BasicMatcherRuleKeys} ruleProperty the rule property
26
28
  * @param {string=} dataProperty the data property
27
29
  * @param {boolean=} invert if true, inverts the condition
@@ -36,6 +38,7 @@ class BasicMatcherRulePlugin {
36
38
  }
37
39
 
38
40
  /**
41
+ * Applies the plugin by registering its hooks on the compiler.
39
42
  * @param {RuleSetCompiler} ruleSetCompiler the rule set compiler
40
43
  * @returns {void}
41
44
  */
@@ -12,6 +12,7 @@
12
12
  /** @typedef {import("./RuleSetCompiler").RuleConditionFunction} RuleConditionFunction */
13
13
 
14
14
  /**
15
+ * Defines the keys of types type used by this module.
15
16
  * @template T
16
17
  * @template {T[keyof T]} V
17
18
  * @typedef {import("./RuleSetCompiler").KeysOfTypes<T, V>} KeysOfTypes
@@ -24,6 +25,7 @@ const PLUGIN_NAME = "ObjectMatcherRulePlugin";
24
25
 
25
26
  class ObjectMatcherRulePlugin {
26
27
  /**
28
+ * Creates an instance of ObjectMatcherRulePlugin.
27
29
  * @param {ObjectMatcherRuleKeys} ruleProperty the rule property
28
30
  * @param {DataProperty=} dataProperty the data property
29
31
  * @param {RuleConditionFunction=} additionalConditionFunction need to check
@@ -38,6 +40,7 @@ class ObjectMatcherRulePlugin {
38
40
  }
39
41
 
40
42
  /**
43
+ * Applies the plugin by registering its hooks on the compiler.
41
44
  * @param {RuleSetCompiler} ruleSetCompiler the rule set compiler
42
45
  * @returns {void}
43
46
  */
@@ -16,10 +16,12 @@ const { SyncHook } = require("tapable");
16
16
  /** @typedef {(Falsy | RuleSetRule)[]} RuleSetRules */
17
17
 
18
18
  /**
19
+ * Defines the rule condition function type used by this module.
19
20
  * @typedef {(value: EffectData[keyof EffectData]) => boolean} RuleConditionFunction
20
21
  */
21
22
 
22
23
  /**
24
+ * Defines the rule condition type used by this module.
23
25
  * @typedef {object} RuleCondition
24
26
  * @property {string | string[]} property
25
27
  * @property {boolean} matchWhenEmpty
@@ -27,12 +29,14 @@ const { SyncHook } = require("tapable");
27
29
  */
28
30
 
29
31
  /**
32
+ * Defines the condition type used by this module.
30
33
  * @typedef {object} Condition
31
34
  * @property {boolean} matchWhenEmpty
32
35
  * @property {RuleConditionFunction} fn
33
36
  */
34
37
 
35
38
  /**
39
+ * Defines the effect data type used by this module.
36
40
  * @typedef {object} EffectData
37
41
  * @property {string=} resource
38
42
  * @property {string=} realResource
@@ -50,6 +54,7 @@ const { SyncHook } = require("tapable");
50
54
  */
51
55
 
52
56
  /**
57
+ * Defines the compiled rule type used by this module.
53
58
  * @typedef {object} CompiledRule
54
59
  * @property {RuleCondition[]} conditions
55
60
  * @property {(Effect | ((effectData: EffectData) => Effect[]))[]} effects
@@ -60,12 +65,14 @@ const { SyncHook } = require("tapable");
60
65
  /** @typedef {"use" | "use-pre" | "use-post"} EffectUseType */
61
66
 
62
67
  /**
68
+ * Defines the effect use type used by this module.
63
69
  * @typedef {object} EffectUse
64
70
  * @property {EffectUseType} type
65
71
  * @property {{ loader: string, options?: string | null | Record<string, EXPECTED_ANY>, ident?: string }} value
66
72
  */
67
73
 
68
74
  /**
75
+ * Defines the effect basic type used by this module.
69
76
  * @typedef {object} EffectBasic
70
77
  * @property {string} type
71
78
  * @property {EXPECTED_ANY} value
@@ -76,12 +83,14 @@ const { SyncHook } = require("tapable");
76
83
  /** @typedef {Map<string, RuleSetLoaderOptions>} References */
77
84
 
78
85
  /**
86
+ * Defines the rule set type used by this module.
79
87
  * @typedef {object} RuleSet
80
88
  * @property {References} references map of references in the rule set (may grow over time)
81
89
  * @property {(effectData: EffectData) => Effect[]} exec execute the rule set
82
90
  */
83
91
 
84
92
  /**
93
+ * Defines the keys of types type used by this module.
85
94
  * @template T
86
95
  * @template {T[keyof T]} V
87
96
  * @typedef {({ [key in keyof Required<T>]: Required<T>[key] extends V ? key : never })[keyof T]} KeysOfTypes
@@ -96,6 +105,7 @@ const { SyncHook } = require("tapable");
96
105
 
97
106
  class RuleSetCompiler {
98
107
  /**
108
+ * Creates an instance of RuleSetCompiler.
99
109
  * @param {RuleSetPlugin[]} plugins plugins
100
110
  */
101
111
  constructor(plugins) {
@@ -117,6 +127,7 @@ class RuleSetCompiler {
117
127
  }
118
128
 
119
129
  /**
130
+ * Returns compiled RuleSet.
120
131
  * @param {RuleSetRules} ruleSet raw user provided rules
121
132
  * @returns {RuleSet} compiled RuleSet
122
133
  */
@@ -126,6 +137,7 @@ class RuleSetCompiler {
126
137
  const rules = this.compileRules("ruleSet", ruleSet, refs);
127
138
 
128
139
  /**
140
+ * Returns true, if the rule has matched.
129
141
  * @param {EffectData} data data passed in
130
142
  * @param {CompiledRule} rule the compiled rule
131
143
  * @param {Effect[]} effects an array where effects are pushed to
@@ -203,6 +215,7 @@ class RuleSetCompiler {
203
215
  }
204
216
 
205
217
  /**
218
+ * Returns rules.
206
219
  * @param {string} path current path
207
220
  * @param {RuleSetRules} rules the raw rules provided by user
208
221
  * @param {References} refs references
@@ -221,6 +234,7 @@ class RuleSetCompiler {
221
234
  }
222
235
 
223
236
  /**
237
+ * Returns normalized and compiled rule for processing.
224
238
  * @param {string} path current path
225
239
  * @param {RuleSetRule} rule the raw rule provided by user
226
240
  * @param {References} refs references
@@ -274,6 +288,7 @@ class RuleSetCompiler {
274
288
  }
275
289
 
276
290
  /**
291
+ * Returns compiled condition.
277
292
  * @param {string} path current path
278
293
  * @param {RuleSetLoaderOptions} condition user provided condition value
279
294
  * @returns {Condition} compiled condition
@@ -395,6 +410,7 @@ class RuleSetCompiler {
395
410
  }
396
411
 
397
412
  /**
413
+ * Combine conditions or.
398
414
  * @param {Condition[]} conditions some conditions
399
415
  * @returns {Condition} merged condition
400
416
  */
@@ -414,6 +430,7 @@ class RuleSetCompiler {
414
430
  }
415
431
 
416
432
  /**
433
+ * Combine conditions and.
417
434
  * @param {Condition[]} conditions some conditions
418
435
  * @returns {Condition} merged condition
419
436
  */
@@ -433,6 +450,7 @@ class RuleSetCompiler {
433
450
  }
434
451
 
435
452
  /**
453
+ * Returns an error object.
436
454
  * @param {string} path current path
437
455
  * @param {EXPECTED_ANY} value value at the error location
438
456
  * @param {string} message message explaining the problem
@@ -13,6 +13,7 @@ const util = require("util");
13
13
  /** @typedef {import("../../declarations/WebpackOptions").RuleSetRule} RuleSetRule */
14
14
  /** @typedef {import("../../declarations/WebpackOptions").RuleSetUse} RuleSetUse */
15
15
  /** @typedef {import("../../declarations/WebpackOptions").RuleSetUseItem} RuleSetUseItem */
16
+ /** @typedef {import("../../declarations/WebpackOptions").RuleSetUseFunction} RuleSetUseFunction */
16
17
  /** @typedef {import("./RuleSetCompiler")} RuleSetCompiler */
17
18
  /** @typedef {import("./RuleSetCompiler").Effect} Effect */
18
19
  /** @typedef {import("./RuleSetCompiler").EffectData} EffectData */
@@ -22,6 +23,7 @@ const PLUGIN_NAME = "UseEffectRulePlugin";
22
23
 
23
24
  class UseEffectRulePlugin {
24
25
  /**
26
+ * Applies the plugin by registering its hooks on the compiler.
25
27
  * @param {RuleSetCompiler} ruleSetCompiler the rule set compiler
26
28
  * @returns {void}
27
29
  */
@@ -30,6 +32,7 @@ class UseEffectRulePlugin {
30
32
  PLUGIN_NAME,
31
33
  (path, rule, unhandledProperties, result, references) => {
32
34
  /**
35
+ * Processes the provided property.
33
36
  * @param {keyof RuleSetRule} property property
34
37
  * @param {string} correctProperty correct property
35
38
  */
@@ -58,6 +61,7 @@ class UseEffectRulePlugin {
58
61
  (enforce ? `use-${enforce}` : "use");
59
62
 
60
63
  /**
64
+ * Returns effect.
61
65
  * @param {string} path options path
62
66
  * @param {string} defaultIdent default ident when none is provided
63
67
  * @param {RuleSetUseItem} item user provided use value
@@ -76,9 +80,10 @@ class UseEffectRulePlugin {
76
80
  };
77
81
 
78
82
  /**
83
+ * Returns effect.
79
84
  * @param {string} path options path
80
85
  * @param {string} defaultIdent default ident when none is provided
81
- * @param {Exclude<NonNullable<RuleSetUseItem>, EXPECTED_FUNCTION>} item user provided use value
86
+ * @param {Exclude<NonNullable<RuleSetUseItem>, RuleSetUseFunction>} item user provided use value
82
87
  * @returns {Effect} effect
83
88
  */
84
89
  const useToEffectRaw = (path, defaultIdent, item) => {
@@ -117,6 +122,7 @@ class UseEffectRulePlugin {
117
122
  };
118
123
 
119
124
  /**
125
+ * Use to effects without ident.
120
126
  * @param {string} path options path
121
127
  * @param {RuleSetUseItem | (Falsy | RuleSetUseItem)[]} items user provided use value
122
128
  * @returns {Effect[]} effects
@@ -127,7 +133,7 @@ class UseEffectRulePlugin {
127
133
  useToEffectRaw(
128
134
  `${path}[${idx}]`,
129
135
  "[[missing ident]]",
130
- /** @type {Exclude<RuleSetUseItem, EXPECTED_FUNCTION>} */
136
+ /** @type {Exclude<RuleSetUseItem, RuleSetUseFunction>} */
131
137
  (item)
132
138
  )
133
139
  );
@@ -136,13 +142,14 @@ class UseEffectRulePlugin {
136
142
  useToEffectRaw(
137
143
  path,
138
144
  "[[missing ident]]",
139
- /** @type {Exclude<RuleSetUseItem, EXPECTED_FUNCTION>} */
145
+ /** @type {Exclude<RuleSetUseItem, RuleSetUseFunction>} */
140
146
  (items)
141
147
  )
142
148
  ];
143
149
  };
144
150
 
145
151
  /**
152
+ * Returns effects.
146
153
  * @param {string} path current path
147
154
  * @param {RuleSetUse} items user provided use value
148
155
  * @returns {(Effect | ((effectData: EffectData) => Effect[]))[]} effects
@@ -21,6 +21,7 @@ class AsyncModuleRuntimeModule extends HelperRuntimeModule {
21
21
  }
22
22
 
23
23
  /**
24
+ * Generates runtime code for this runtime module.
24
25
  * @returns {string | null} runtime code
25
26
  */
26
27
  generate() {
@@ -19,6 +19,7 @@ class AutoPublicPathRuntimeModule extends RuntimeModule {
19
19
  }
20
20
 
21
21
  /**
22
+ * Generates runtime code for this runtime module.
22
23
  * @returns {string | null} runtime code
23
24
  */
24
25
  generate() {
@@ -17,6 +17,7 @@ class BaseUriRuntimeModule extends RuntimeModule {
17
17
  }
18
18
 
19
19
  /**
20
+ * Generates runtime code for this runtime module.
20
21
  * @returns {string | null} runtime code
21
22
  */
22
23
  generate() {
@@ -18,6 +18,7 @@ class ChunkNameRuntimeModule extends RuntimeModule {
18
18
  }
19
19
 
20
20
  /**
21
+ * Generates runtime code for this runtime module.
21
22
  * @returns {string | null} runtime code
22
23
  */
23
24
  generate() {
@@ -16,6 +16,7 @@ class CompatGetDefaultExportRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -19,6 +19,7 @@ class CompatRuntimeModule extends RuntimeModule {
19
19
  }
20
20
 
21
21
  /**
22
+ * Generates runtime code for this runtime module.
22
23
  * @returns {string | null} runtime code
23
24
  */
24
25
  generate() {
@@ -72,6 +73,7 @@ class CompatRuntimeModule extends RuntimeModule {
72
73
  }
73
74
 
74
75
  /**
76
+ * Returns true, if the runtime module should get it's own scope.
75
77
  * @returns {boolean} true, if the runtime module should get it's own scope
76
78
  */
77
79
  shouldIsolate() {
@@ -16,6 +16,7 @@ class CreateFakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -16,6 +16,7 @@ class CreateScriptRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -16,6 +16,7 @@ class CreateScriptUrlRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -16,6 +16,7 @@ class DefinePropertyGettersRuntimeModule extends HelperRuntimeModule {
16
16
  }
17
17
 
18
18
  /**
19
+ * Generates runtime code for this runtime module.
19
20
  * @returns {string | null} runtime code
20
21
  */
21
22
  generate() {
@@ -22,6 +22,7 @@ class EnsureChunkRuntimeModule extends RuntimeModule {
22
22
  }
23
23
 
24
24
  /**
25
+ * Generates runtime code for this runtime module.
25
26
  * @returns {string | null} runtime code
26
27
  */
27
28
  generate() {
@@ -39,6 +39,7 @@ class GetChunkFilenameRuntimeModule extends RuntimeModule {
39
39
  }
40
40
 
41
41
  /**
42
+ * Generates runtime code for this runtime module.
42
43
  * @returns {string | null} runtime code
43
44
  */
44
45
  generate() {
@@ -17,6 +17,7 @@ class GetFullHashRuntimeModule extends RuntimeModule {
17
17
  }
18
18
 
19
19
  /**
20
+ * Generates runtime code for this runtime module.
20
21
  * @returns {string | null} runtime code
21
22
  */
22
23
  generate() {
@@ -26,6 +26,7 @@ class GetMainFilenameRuntimeModule extends RuntimeModule {
26
26
  }
27
27
 
28
28
  /**
29
+ * Generates runtime code for this runtime module.
29
30
  * @returns {string | null} runtime code
30
31
  */
31
32
  generate() {
@@ -22,6 +22,7 @@ class GetTrustedTypesPolicyRuntimeModule extends HelperRuntimeModule {
22
22
  }
23
23
 
24
24
  /**
25
+ * Generates runtime code for this runtime module.
25
26
  * @returns {string | null} runtime code
26
27
  */
27
28
  generate() {
@@ -14,6 +14,7 @@ class GlobalRuntimeModule extends RuntimeModule {
14
14
  }
15
15
 
16
16
  /**
17
+ * Generates runtime code for this runtime module.
17
18
  * @returns {string | null} runtime code
18
19
  */
19
20
  generate() {
@@ -17,6 +17,7 @@ class HasOwnPropertyRuntimeModule extends RuntimeModule {
17
17
  }
18
18
 
19
19
  /**
20
+ * Generates runtime code for this runtime module.
20
21
  * @returns {string | null} runtime code
21
22
  */
22
23
  generate() {
@@ -6,8 +6,13 @@
6
6
 
7
7
  const RuntimeModule = require("../RuntimeModule");
8
8
 
9
+ /**
10
+ * Base class for runtime modules that only emit helper functions and do not
11
+ * need special staging or attachment behavior beyond `RuntimeModule`.
12
+ */
9
13
  class HelperRuntimeModule extends RuntimeModule {
10
14
  /**
15
+ * Creates a helper runtime module with the provided readable name.
11
16
  * @param {string} name a readable name
12
17
  */
13
18
  constructor(name) {
@@ -54,6 +54,7 @@ class LoadScriptRuntimeModule extends HelperRuntimeModule {
54
54
  }
55
55
 
56
56
  /**
57
+ * Generates runtime code for this runtime module.
57
58
  * @returns {string | null} runtime code
58
59
  */
59
60
  generate() {