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
@@ -22,6 +22,7 @@ const {
22
22
  CSS_MODULE_TYPE_AUTO,
23
23
  CSS_MODULE_TYPE_GLOBAL,
24
24
  CSS_MODULE_TYPE_MODULE,
25
+ HTML_MODULE_TYPE,
25
26
  JAVASCRIPT_MODULE_TYPE_AUTO,
26
27
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
27
28
  JAVASCRIPT_MODULE_TYPE_ESM,
@@ -80,11 +81,13 @@ const {
80
81
  /** @typedef {import("./target").TargetProperties} TargetProperties */
81
82
 
82
83
  /**
84
+ * Defines the recursive non nullable type used by this module.
83
85
  * @template T
84
86
  * @typedef {{ [P in keyof T]-?: T[P] extends object ? RecursiveNonNullable<NonNullable<T[P]>> : NonNullable<T[P]> }} RecursiveNonNullable
85
87
  */
86
88
 
87
89
  /**
90
+ * Defines the shared type used by this module.
88
91
  * @typedef {Output & {
89
92
  * uniqueName: NonNullable<Output["uniqueName"]>,
90
93
  * filename: NonNullable<Output["filename"]>,
@@ -129,6 +132,7 @@ const {
129
132
  */
130
133
 
131
134
  /**
135
+ * Defines the shared type used by this module.
132
136
  * @typedef {SnapshotOptions & {
133
137
  * managedPaths: NonNullable<SnapshotOptions["managedPaths"]>,
134
138
  * unmanagedPaths: NonNullable<SnapshotOptions["unmanagedPaths"]>,
@@ -141,6 +145,7 @@ const {
141
145
  */
142
146
 
143
147
  /**
148
+ * Defines the shared type used by this module.
144
149
  * @typedef {Optimization & {
145
150
  * runtimeChunk: NonNullable<Optimization["runtimeChunk"]>,
146
151
  * splitChunks: NonNullable<Optimization["splitChunks"]>,
@@ -169,6 +174,7 @@ const {
169
174
  */
170
175
 
171
176
  /**
177
+ * Defines the shared type used by this module.
172
178
  * @typedef {ExternalsPresets & {
173
179
  * web: NonNullable<ExternalsPresets["web"]>,
174
180
  * node: NonNullable<ExternalsPresets["node"]>,
@@ -181,6 +187,7 @@ const {
181
187
  */
182
188
 
183
189
  /**
190
+ * Defines the shared type used by this module.
184
191
  * @typedef {InfrastructureLogging & {
185
192
  * stream: NonNullable<InfrastructureLogging["stream"]>,
186
193
  * level: NonNullable<InfrastructureLogging["level"]>,
@@ -191,14 +198,17 @@ const {
191
198
  */
192
199
 
193
200
  /**
201
+ * Defines the webpack options normalized with base defaults type used by this module.
194
202
  * @typedef {WebpackOptionsNormalized & { context: NonNullable<WebpackOptionsNormalized["context"]> } & { infrastructureLogging: InfrastructureLoggingNormalizedWithDefaults }} WebpackOptionsNormalizedWithBaseDefaults
195
203
  */
196
204
 
197
205
  /**
206
+ * Defines the webpack options normalized with defaults type used by this module.
198
207
  * @typedef {WebpackOptionsNormalizedWithBaseDefaults & { target: NonNullable<WebpackOptionsNormalized["target"]> } & { output: OutputNormalizedWithDefaults } & { optimization: OptimizationNormalizedWithDefaults } & { devtool: NonNullable<WebpackOptionsNormalized["devtool"]> } & { stats: NonNullable<WebpackOptionsNormalized["stats"]> } & { node: NonNullable<WebpackOptionsNormalized["node"]> } & { profile: NonNullable<WebpackOptionsNormalized["profile"]> } & { parallelism: NonNullable<WebpackOptionsNormalized["parallelism"]> } & { snapshot: SnapshotNormalizedWithDefaults } & { externalsPresets: ExternalsPresetsNormalizedWithDefaults } & { externalsType: NonNullable<WebpackOptionsNormalized["externalsType"]> } & { watch: NonNullable<WebpackOptionsNormalized["watch"]> } & { performance: NonNullable<WebpackOptionsNormalized["performance"]> } & { recordsInputPath: NonNullable<WebpackOptionsNormalized["recordsInputPath"]> } & { recordsOutputPath: NonNullable<WebpackOptionsNormalized["recordsOutputPath"]> } & { dotenv: NonNullable<WebpackOptionsNormalized["dotenv"]> }} WebpackOptionsNormalizedWithDefaults
199
208
  */
200
209
 
201
210
  /**
211
+ * Defines the resolved options type used by this module.
202
212
  * @typedef {object} ResolvedOptions
203
213
  * @property {PlatformTargetProperties | false} platform - platform target properties
204
214
  */
@@ -211,7 +221,7 @@ const DEFAULTS = {
211
221
  };
212
222
 
213
223
  /**
214
- * Sets a constant default value when undefined
224
+ * Processes the provided obj.
215
225
  * @template T
216
226
  * @template {keyof T} P
217
227
  * @param {T} obj an object
@@ -226,7 +236,7 @@ const D = (obj, prop, value) => {
226
236
  };
227
237
 
228
238
  /**
229
- * Sets a dynamic default value when undefined, by calling the factory function
239
+ * Processes the provided obj.
230
240
  * @template T
231
241
  * @template {keyof T} P
232
242
  * @param {T} obj an object
@@ -282,6 +292,7 @@ const A = (obj, prop, factory) => {
282
292
  };
283
293
 
284
294
  /**
295
+ * Apply webpack options base defaults.
285
296
  * @param {WebpackOptionsNormalized} options options to be modified
286
297
  * @returns {void}
287
298
  */
@@ -291,6 +302,7 @@ const applyWebpackOptionsBaseDefaults = (options) => {
291
302
  };
292
303
 
293
304
  /**
305
+ * Apply webpack options defaults.
294
306
  * @param {WebpackOptionsNormalized} options options to be modified
295
307
  * @param {number=} compilerIndex index of compiler
296
308
  * @returns {ResolvedOptions} Resolved options after apply defaults
@@ -420,6 +432,12 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
420
432
  css:
421
433
  /** @type {NonNullable<ExperimentsNormalized["css"]>} */
422
434
  (options.experiments.css),
435
+ html:
436
+ /** @type {NonNullable<ExperimentsNormalized["html"]>} */
437
+ (options.experiments.html),
438
+ typescript:
439
+ /** @type {NonNullable<ExperimentsNormalized["typescript"]>} */
440
+ (options.experiments.typescript),
423
441
  deferImport:
424
442
  /** @type {NonNullable<ExperimentsNormalized["deferImport"]>} */
425
443
  (options.experiments.deferImport),
@@ -433,7 +451,8 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
433
451
  mode: options.mode,
434
452
  outputModule:
435
453
  /** @type {NonNullable<WebpackOptionsNormalized["output"]["module"]>} */
436
- (options.output.module)
454
+ (options.output.module),
455
+ library: options.output.library
437
456
  });
438
457
 
439
458
  applyExternalsPresetsDefaults(options.externalsPresets, {
@@ -505,7 +524,10 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
505
524
  mode: /** @type {Mode} */ (options.mode),
506
525
  css:
507
526
  /** @type {NonNullable<ExperimentsNormalized["css"]>} */
508
- (options.experiments.css)
527
+ (options.experiments.css),
528
+ typescript:
529
+ /** @type {NonNullable<ExperimentsNormalized["typescript"]>} */
530
+ (options.experiments.typescript)
509
531
  }),
510
532
  options.resolve
511
533
  );
@@ -531,6 +553,7 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
531
553
  };
532
554
 
533
555
  /**
556
+ * Apply experiments defaults.
534
557
  * @param {ExperimentsNormalized} experiments options
535
558
  * @param {object} options options
536
559
  * @param {boolean} options.production is production
@@ -554,6 +577,10 @@ const applyExperimentsDefaults = (
554
577
  D(experiments, "deferImport", false);
555
578
  D(experiments, "sourceImport", false);
556
579
  F(experiments, "css", () => (experiments.futureDefaults ? true : undefined));
580
+ F(experiments, "html", () => (experiments.futureDefaults ? true : undefined));
581
+ F(experiments, "typescript", () =>
582
+ experiments.futureDefaults ? true : undefined
583
+ );
557
584
 
558
585
  if (typeof experiments.buildHttp === "object") {
559
586
  D(experiments.buildHttp, "frozen", production);
@@ -562,6 +589,7 @@ const applyExperimentsDefaults = (
562
589
  };
563
590
 
564
591
  /**
592
+ * Apply cache defaults.
565
593
  * @param {CacheOptionsNormalized} cache options
566
594
  * @param {object} options options
567
595
  * @param {string} options.name name
@@ -644,6 +672,7 @@ const applyCacheDefaults = (
644
672
  };
645
673
 
646
674
  /**
675
+ * Apply snapshot defaults.
647
676
  * @param {SnapshotOptions} snapshot options
648
677
  * @param {object} options options
649
678
  * @param {boolean} options.production is production
@@ -721,6 +750,7 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
721
750
  };
722
751
 
723
752
  /**
753
+ * Apply javascript parser options defaults.
724
754
  * @param {JavascriptParserOptions} parserOptions parser options
725
755
  * @param {object} options options
726
756
  * @param {boolean} options.futureDefaults is future defaults enabled
@@ -728,11 +758,21 @@ const applySnapshotDefaults = (snapshot, { production, futureDefaults }) => {
728
758
  * @param {boolean} options.sourceImport is import source enabled
729
759
  * @param {boolean} options.isNode is node target platform
730
760
  * @param {boolean} options.outputModule is output.module enabled
761
+ * @param {WebpackOptionsNormalized["output"]["library"]} options.library library options
762
+ * @param {boolean} options.typescript is typescript enabled
731
763
  * @returns {void}
732
764
  */
733
765
  const applyJavascriptParserOptionsDefaults = (
734
766
  parserOptions,
735
- { futureDefaults, deferImport, sourceImport, isNode, outputModule }
767
+ {
768
+ futureDefaults,
769
+ deferImport,
770
+ sourceImport,
771
+ isNode,
772
+ outputModule,
773
+ library,
774
+ typescript
775
+ }
736
776
  ) => {
737
777
  D(parserOptions, "unknownContextRequest", ".");
738
778
  D(parserOptions, "unknownContextRegExp", false);
@@ -755,10 +795,13 @@ const applyJavascriptParserOptionsDefaults = (
755
795
  D(parserOptions, "dynamicUrl", true);
756
796
  D(parserOptions, "deferImport", deferImport);
757
797
  D(parserOptions, "sourceImport", sourceImport);
798
+ D(parserOptions, "typescript", typescript);
758
799
  if (futureDefaults) D(parserOptions, "exportsPresence", "error");
800
+ D(parserOptions, "anonymousDefaultExportName", !library);
759
801
  };
760
802
 
761
803
  /**
804
+ * Apply json generator options defaults.
762
805
  * @param {JsonGeneratorOptions} generatorOptions generator options
763
806
  * @returns {void}
764
807
  */
@@ -767,6 +810,7 @@ const applyJsonGeneratorOptionsDefaults = (generatorOptions) => {
767
810
  };
768
811
 
769
812
  /**
813
+ * Apply css generator options defaults.
770
814
  * @param {CssGeneratorOptions} generatorOptions generator options
771
815
  * @param {object} options options
772
816
  * @param {TargetProperties | false} options.targetProperties target properties
@@ -785,12 +829,15 @@ const applyCssGeneratorOptionsDefaults = (
785
829
  };
786
830
 
787
831
  /**
832
+ * Apply module defaults.
788
833
  * @param {ModuleOptions} module options
789
834
  * @param {object} options options
790
835
  * @param {boolean} options.cache is caching enabled
791
836
  * @param {boolean} options.syncWebAssembly is syncWebAssembly enabled
792
837
  * @param {boolean} options.asyncWebAssembly is asyncWebAssembly enabled
838
+ * @param {boolean} options.typescript is typescript enabled
793
839
  * @param {boolean} options.css is css enabled
840
+ * @param {boolean} options.html is html enabled
794
841
  * @param {boolean} options.futureDefaults is future defaults enabled
795
842
  * @param {string} options.uniqueName the unique name
796
843
  * @param {boolean} options.isNode is node target platform
@@ -801,6 +848,7 @@ const applyCssGeneratorOptionsDefaults = (
801
848
  * @param {HashSalt} options.hashSalt hash salt
802
849
  * @param {HashFunction} options.hashFunction hash function
803
850
  * @param {boolean} options.outputModule is output.module enabled
851
+ * @param {WebpackOptionsNormalized["output"]["library"]} options.library library options
804
852
  * @returns {void}
805
853
  */
806
854
  const applyModuleDefaults = (
@@ -812,6 +860,8 @@ const applyModuleDefaults = (
812
860
  syncWebAssembly,
813
861
  asyncWebAssembly,
814
862
  css,
863
+ html,
864
+ typescript,
815
865
  futureDefaults,
816
866
  isNode,
817
867
  uniqueName,
@@ -819,7 +869,8 @@ const applyModuleDefaults = (
819
869
  mode,
820
870
  deferImport,
821
871
  sourceImport,
822
- outputModule
872
+ outputModule,
873
+ library
823
874
  }
824
875
  ) => {
825
876
  if (cache) {
@@ -827,6 +878,7 @@ const applyModuleDefaults = (
827
878
  module,
828
879
  "unsafeCache",
829
880
  /**
881
+ * Handles the callback logic for this hook.
830
882
  * @param {Module} module module
831
883
  * @returns {boolean} true, if we want to cache the module
832
884
  */
@@ -880,11 +932,14 @@ const applyModuleDefaults = (
880
932
  deferImport,
881
933
  sourceImport,
882
934
  isNode,
883
- outputModule
935
+ outputModule,
936
+ library,
937
+ typescript
884
938
  }
885
939
  );
886
940
 
887
941
  F(module.generator, "json", () => ({}));
942
+
888
943
  applyJsonGeneratorOptionsDefaults(
889
944
  /** @type {NonNullable<GeneratorOptionsByModuleTypeKnown["json"]>} */
890
945
  (module.generator.json)
@@ -1027,6 +1082,16 @@ const applyModuleDefaults = (
1027
1082
  }
1028
1083
  }
1029
1084
 
1085
+ if (html) {
1086
+ // `module.generator.html.extract` is intentionally left undefined by
1087
+ // default: HtmlGenerator treats undefined as "extract iff this HTML
1088
+ // module is a compilation entry", which is the HTML-entry-point
1089
+ // behaviour. Setting `extract: true` forces extraction for all HTML
1090
+ // modules (including imported ones); `extract: false` disables it
1091
+ // everywhere.
1092
+ F(module.generator, HTML_MODULE_TYPE, () => ({}));
1093
+ }
1094
+
1030
1095
  A(module, "defaultRules", () => {
1031
1096
  const esm = {
1032
1097
  type: JAVASCRIPT_MODULE_TYPE_ESM,
@@ -1084,6 +1149,7 @@ const applyModuleDefaults = (
1084
1149
  ...esm
1085
1150
  }
1086
1151
  ];
1152
+
1087
1153
  if (asyncWebAssembly) {
1088
1154
  const wasm = {
1089
1155
  type: WEBASSEMBLY_MODULE_TYPE_ASYNC,
@@ -1129,6 +1195,7 @@ const applyModuleDefaults = (
1129
1195
  ...wasm
1130
1196
  });
1131
1197
  }
1198
+
1132
1199
  if (css) {
1133
1200
  const resolve = {
1134
1201
  fullySpecified: true,
@@ -1150,14 +1217,20 @@ const applyModuleDefaults = (
1150
1217
  resolve
1151
1218
  });
1152
1219
  // For CSS modules, i.e. `.class { composes: className from "./style.css" }`
1153
- // We inherit for such constructions
1220
+ // We inherit for such constructions, but skip files that are already
1221
+ // detected as CSS modules by extension (`.module.<ext>`) — they get
1222
+ // the same modules-mode behavior from the auto rule, and forcing a
1223
+ // different type stamp here would create a duplicate module instance.
1224
+ const moduleExtension = /\.module\.\w+$/i;
1154
1225
  rules.push({
1155
1226
  dependency: /css-import-local-module/,
1227
+ exclude: moduleExtension,
1156
1228
  type: CSS_MODULE_TYPE_MODULE,
1157
1229
  resolve
1158
1230
  });
1159
1231
  rules.push({
1160
1232
  dependency: /css-import-global-module/,
1233
+ exclude: moduleExtension,
1161
1234
  type: CSS_MODULE_TYPE_GLOBAL,
1162
1235
  resolve
1163
1236
  });
@@ -1179,6 +1252,72 @@ const applyModuleDefaults = (
1179
1252
  }
1180
1253
  );
1181
1254
  }
1255
+ if (html) {
1256
+ const resolve = {
1257
+ fullySpecified: true,
1258
+ preferRelative: true
1259
+ };
1260
+
1261
+ rules.push({
1262
+ test: /\.html$/i,
1263
+ type: HTML_MODULE_TYPE,
1264
+ resolve
1265
+ });
1266
+ rules.push({
1267
+ mimetype: "text/html",
1268
+ type: HTML_MODULE_TYPE,
1269
+ resolve
1270
+ });
1271
+ if (css) {
1272
+ // Inline `<style>` content in an HTML module is fed into the
1273
+ // CSS pipeline as a `data:text/css` virtual module. We force
1274
+ // `exportType: "text"` so the CSS module exposes the
1275
+ // processed CSS text on the `css-text` codegen channel that
1276
+ // `HtmlInlineStyleDependency.Template` reads back into the
1277
+ // `<style>` tag.
1278
+ rules.push({
1279
+ dependency: "html-style",
1280
+ parser: {
1281
+ exportType: "text"
1282
+ },
1283
+ resolve
1284
+ });
1285
+ }
1286
+ }
1287
+
1288
+ if (typescript) {
1289
+ rules.push(
1290
+ {
1291
+ test: /\.mts$/i,
1292
+ ...esm
1293
+ },
1294
+ {
1295
+ test: /\.ts$/i,
1296
+ descriptionData: {
1297
+ type: "module"
1298
+ },
1299
+ ...esm
1300
+ },
1301
+ {
1302
+ test: /\.cts$/i,
1303
+ ...commonjs
1304
+ },
1305
+ {
1306
+ test: /\.ts$/i,
1307
+ descriptionData: {
1308
+ type: "commonjs"
1309
+ },
1310
+ ...commonjs
1311
+ },
1312
+ {
1313
+ mimetype: {
1314
+ or: ["text/typescript", "application/typescript"]
1315
+ },
1316
+ ...esm
1317
+ }
1318
+ );
1319
+ }
1320
+
1182
1321
  rules.push(
1183
1322
  {
1184
1323
  dependency: "url",
@@ -1216,6 +1355,7 @@ const applyModuleDefaults = (
1216
1355
  };
1217
1356
 
1218
1357
  /**
1358
+ * Apply output defaults.
1219
1359
  * @param {Output} output options
1220
1360
  * @param {object} options options
1221
1361
  * @param {string} options.context context
@@ -1242,6 +1382,7 @@ const applyOutputDefaults = (
1242
1382
  }
1243
1383
  ) => {
1244
1384
  /**
1385
+ * Returns a readable library name.
1245
1386
  * @param {Library=} library the library option
1246
1387
  * @returns {string} a readable library name
1247
1388
  */
@@ -1293,11 +1434,13 @@ const applyOutputDefaults = (
1293
1434
 
1294
1435
  const environment = /** @type {Environment} */ (output.environment);
1295
1436
  /**
1437
+ * Returns true, when v is truthy or undefined.
1296
1438
  * @param {boolean | undefined} v value
1297
1439
  * @returns {boolean} true, when v is truthy or undefined
1298
1440
  */
1299
1441
  const optimistic = (v) => v || v === undefined;
1300
1442
  /**
1443
+ * Conditionally optimistic.
1301
1444
  * @param {boolean | undefined} v value
1302
1445
  * @param {boolean | undefined} c condition
1303
1446
  * @returns {boolean | undefined} true, when v is truthy or undefined, or c is truthy
@@ -1439,6 +1582,43 @@ const applyOutputDefaults = (
1439
1582
  }
1440
1583
  return "[id].css";
1441
1584
  });
1585
+ // Derive html filename defaults from `output.filename` / `output.chunkFilename`
1586
+ // (the same shape the CSS pipeline uses), but if the derived template lacks
1587
+ // any per-module differentiator, fall back to `[name].html` so multiple
1588
+ // extracted HTML modules in one compilation don't collide on the same
1589
+ // emitted file. For example: `output.filename: "bundle.js"` would derive
1590
+ // `bundle.html` — two `.html` modules extracted in the same build would
1591
+ // both want that name and conflict at emit time.
1592
+ const HAS_PATH_PLACEHOLDER_REGEXP =
1593
+ /\[(name|id|chunkhash|contenthash|fullhash|hash)/;
1594
+ /**
1595
+ * @param {string} template html filename template derived from `output.filename`
1596
+ * @returns {string} same template, or `[name].html` if it has no per-module placeholder
1597
+ */
1598
+ const ensureUniqueHtmlTemplate = (template) =>
1599
+ HAS_PATH_PLACEHOLDER_REGEXP.test(template) ? template : "[name].html";
1600
+ F(output, "htmlFilename", () => {
1601
+ const filename =
1602
+ /** @type {NonNullable<Output["htmlFilename"]>} */
1603
+ (output.filename);
1604
+ if (typeof filename !== "function") {
1605
+ return ensureUniqueHtmlTemplate(
1606
+ filename.replace(/\.[mc]?js(\?|$)/, ".html$1")
1607
+ );
1608
+ }
1609
+ return "[name].html";
1610
+ });
1611
+ F(output, "htmlChunkFilename", () => {
1612
+ const chunkFilename =
1613
+ /** @type {NonNullable<Output["htmlChunkFilename"]>} */
1614
+ (output.chunkFilename);
1615
+ if (typeof chunkFilename !== "function") {
1616
+ return ensureUniqueHtmlTemplate(
1617
+ chunkFilename.replace(/\.[mc]?js(\?|$)/, ".html$1")
1618
+ );
1619
+ }
1620
+ return "[name].html";
1621
+ });
1442
1622
  D(output, "assetModuleFilename", "[hash][ext][query][fragment]");
1443
1623
  D(output, "webassemblyModuleFilename", "[hash].module.wasm");
1444
1624
  D(output, "compareBeforeEmit", true);
@@ -1615,6 +1795,7 @@ const applyOutputDefaults = (
1615
1795
  }
1616
1796
 
1617
1797
  /**
1798
+ * Processes the provided fn.
1618
1799
  * @param {(entryDescription: EntryDescription) => void} fn iterator
1619
1800
  * @returns {void}
1620
1801
  */
@@ -1673,6 +1854,7 @@ const applyOutputDefaults = (
1673
1854
  };
1674
1855
 
1675
1856
  /**
1857
+ * Apply externals presets defaults.
1676
1858
  * @param {ExternalsPresets} externalsPresets options
1677
1859
  * @param {object} options options
1678
1860
  * @param {TargetProperties | false} options.targetProperties target properties
@@ -1685,6 +1867,7 @@ const applyExternalsPresetsDefaults = (
1685
1867
  { targetProperties, buildHttp, outputModule }
1686
1868
  ) => {
1687
1869
  /**
1870
+ * Checks whether this object is universal.
1688
1871
  * @param {keyof TargetProperties} key a key
1689
1872
  * @returns {boolean} true when target is universal, otherwise false
1690
1873
  */
@@ -1752,6 +1935,7 @@ const applyExternalsPresetsDefaults = (
1752
1935
  };
1753
1936
 
1754
1937
  /**
1938
+ * Apply loader defaults.
1755
1939
  * @param {Loader} loader options
1756
1940
  * @param {object} options options
1757
1941
  * @param {TargetProperties | false} options.targetProperties target properties
@@ -1776,6 +1960,7 @@ const applyLoaderDefaults = (loader, { targetProperties, environment }) => {
1776
1960
  };
1777
1961
 
1778
1962
  /**
1963
+ * Apply node defaults.
1779
1964
  * @param {WebpackNode} node options
1780
1965
  * @param {object} options options
1781
1966
  * @param {TargetProperties | false} options.targetProperties target properties
@@ -1821,6 +2006,7 @@ const applyNodeDefaults = (
1821
2006
  };
1822
2007
 
1823
2008
  /**
2009
+ * Apply performance defaults.
1824
2010
  * @param {Performance} performance options
1825
2011
  * @param {object} options options
1826
2012
  * @param {boolean} options.production is production
@@ -1834,6 +2020,7 @@ const applyPerformanceDefaults = (performance, { production }) => {
1834
2020
  };
1835
2021
 
1836
2022
  /**
2023
+ * Apply optimization defaults.
1837
2024
  * @param {Optimization} optimization options
1838
2025
  * @param {object} options options
1839
2026
  * @param {boolean} options.production is production
@@ -1931,12 +2118,14 @@ const applyOptimizationDefaults = (
1931
2118
  };
1932
2119
 
1933
2120
  /**
2121
+ * Gets resolve defaults.
1934
2122
  * @param {object} options options
1935
2123
  * @param {boolean} options.cache is cache enable
1936
2124
  * @param {string} options.context build context
1937
2125
  * @param {TargetProperties | false} options.targetProperties target properties
1938
2126
  * @param {Mode} options.mode mode
1939
2127
  * @param {boolean} options.css is css enabled
2128
+ * @param {boolean} options.typescript is typescript enabled
1940
2129
  * @returns {ResolveOptions} resolve options
1941
2130
  */
1942
2131
  const getResolveDefaults = ({
@@ -1944,7 +2133,8 @@ const getResolveDefaults = ({
1944
2133
  context,
1945
2134
  targetProperties,
1946
2135
  mode,
1947
- css
2136
+ css,
2137
+ typescript
1948
2138
  }) => {
1949
2139
  /** @type {string[]} */
1950
2140
  const conditions = ["webpack"];
@@ -1959,24 +2149,43 @@ const getResolveDefaults = ({
1959
2149
  if (targetProperties.nwjs) conditions.push("nwjs");
1960
2150
  }
1961
2151
 
1962
- const jsExtensions = [".js", ".json", ".wasm"];
2152
+ const jsExtensions = typescript
2153
+ ? [".ts", ".js", ".json", ".wasm"]
2154
+ : [".js", ".json", ".wasm"];
1963
2155
 
1964
2156
  const tp = targetProperties;
1965
2157
  const browserField =
1966
2158
  tp && tp.web && (!tp.node || (tp.electron && tp.electronRenderer));
1967
2159
 
2160
+ // When `experiments.typescript` is on, also honor the `typescript`
2161
+ // conditional-exports key so monorepo packages can ship .ts sources via
2162
+ // `package.json#exports` — same convention Node.js's amaro uses.
2163
+ const tsConditionPrefix = typescript ? ["typescript"] : [];
2164
+
1968
2165
  /** @type {() => ResolveOptions} */
1969
2166
  const cjsDeps = () => ({
1970
2167
  aliasFields: browserField ? ["browser"] : [],
1971
2168
  mainFields: browserField ? ["browser", "module", "..."] : ["module", "..."],
1972
- conditionNames: ["require", "module", "..."],
2169
+ conditionNames: [
2170
+ ...tsConditionPrefix,
2171
+ "require",
2172
+ "module-sync",
2173
+ "module",
2174
+ "..."
2175
+ ],
1973
2176
  extensions: [...jsExtensions]
1974
2177
  });
1975
2178
  /** @type {() => ResolveOptions} */
1976
2179
  const esmDeps = () => ({
1977
2180
  aliasFields: browserField ? ["browser"] : [],
1978
2181
  mainFields: browserField ? ["browser", "module", "..."] : ["module", "..."],
1979
- conditionNames: ["import", "module", "..."],
2182
+ conditionNames: [
2183
+ ...tsConditionPrefix,
2184
+ "import",
2185
+ "module-sync",
2186
+ "module",
2187
+ "..."
2188
+ ],
1980
2189
  extensions: [...jsExtensions]
1981
2190
  });
1982
2191
 
@@ -2057,10 +2266,20 @@ const getResolveDefaults = ({
2057
2266
  cssResolveOptions;
2058
2267
  }
2059
2268
 
2269
+ if (typescript) {
2270
+ resolveOptions.tsconfig = true;
2271
+ resolveOptions.extensionAlias = {
2272
+ ".js": [".js", ".ts"],
2273
+ ".cjs": [".cjs", ".cts"],
2274
+ ".mjs": [".mjs", ".mts"]
2275
+ };
2276
+ }
2277
+
2060
2278
  return resolveOptions;
2061
2279
  };
2062
2280
 
2063
2281
  /**
2282
+ * Gets resolve loader defaults.
2064
2283
  * @param {object} options options
2065
2284
  * @param {boolean} options.cache is cache enable
2066
2285
  * @returns {ResolveOptions} resolve options
@@ -2080,6 +2299,7 @@ const getResolveLoaderDefaults = ({ cache }) => {
2080
2299
  };
2081
2300
 
2082
2301
  /**
2302
+ * Apply infrastructure logging defaults.
2083
2303
  * @param {InfrastructureLogging} infrastructureLogging options
2084
2304
  * @returns {void}
2085
2305
  */