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
@@ -30,6 +30,7 @@ const DEFAULT_SOURCE = {
30
30
  return new RawSource("throw new Error('No source available');");
31
31
  },
32
32
  /**
33
+ * Returns the estimated size for the requested source type.
33
34
  * @returns {number} size of the DEFAULT_SOURCE.source()
34
35
  */
35
36
  size() {
@@ -42,6 +43,7 @@ const DEFAULT_SOURCE = {
42
43
 
43
44
  const deprecatedGetInitFragments = util.deprecate(
44
45
  /**
46
+ * Handles the callback logic for this hook.
45
47
  * @param {DependencyTemplate} template template
46
48
  * @param {Dependency} dependency dependency
47
49
  * @param {DependencyTemplateContext} templateContext template context
@@ -56,6 +58,7 @@ const deprecatedGetInitFragments = util.deprecate(
56
58
 
57
59
  class JavascriptGenerator extends Generator {
58
60
  /**
61
+ * Returns the source types available for this module.
59
62
  * @param {NormalModule} module fresh module
60
63
  * @returns {SourceTypes} available types (do not mutate)
61
64
  */
@@ -64,6 +67,7 @@ class JavascriptGenerator extends Generator {
64
67
  }
65
68
 
66
69
  /**
70
+ * Returns the estimated size for the requested source type.
67
71
  * @param {NormalModule} module the module
68
72
  * @param {SourceType=} type source type
69
73
  * @returns {number} estimate size of the module
@@ -77,6 +81,7 @@ class JavascriptGenerator extends Generator {
77
81
  }
78
82
 
79
83
  /**
84
+ * Returns the reason this module cannot be concatenated, when one exists.
80
85
  * @param {NormalModule} module module for which the bailout reason should be determined
81
86
  * @param {ConcatenationBailoutReasonContext} context context
82
87
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
@@ -103,6 +108,7 @@ class JavascriptGenerator extends Generator {
103
108
  }
104
109
 
105
110
  /**
111
+ * Processes the provided module.
106
112
  * @param {Module} module the current module
107
113
  * @param {Dependency} dependency the dependency to generate
108
114
  * @param {InitFragment<GenerateContext>[]} initFragments mutable list of init fragments
@@ -173,6 +179,7 @@ class JavascriptGenerator extends Generator {
173
179
  }
174
180
 
175
181
  /**
182
+ * Processes the provided module.
176
183
  * @param {Module} module the module to generate
177
184
  * @param {DependenciesBlock} block the dependencies block which will be processed
178
185
  * @param {InitFragment<GenerateContext>[]} initFragments mutable list of init fragments
@@ -203,6 +210,7 @@ class JavascriptGenerator extends Generator {
203
210
  }
204
211
 
205
212
  /**
213
+ * Processes the provided module.
206
214
  * @param {Module} module the module to generate
207
215
  * @param {InitFragment<GenerateContext>[]} initFragments mutable list of init fragments
208
216
  * @param {ReplaceSource} source the current replace source which can be modified
@@ -244,6 +252,7 @@ class JavascriptGenerator extends Generator {
244
252
  }
245
253
 
246
254
  /**
255
+ * Generates generated code for this runtime module.
247
256
  * @param {NormalModule} module module for which the code should be generated
248
257
  * @param {GenerateContext} generateContext context for generate
249
258
  * @returns {Source | null} generated code
@@ -264,6 +273,7 @@ class JavascriptGenerator extends Generator {
264
273
  }
265
274
 
266
275
  /**
276
+ * Generates fallback output for the provided error condition.
267
277
  * @param {Error} error the error
268
278
  * @param {NormalModule} module module for which the code should be generated
269
279
  * @param {GenerateContext} generateContext context for generate
@@ -17,7 +17,6 @@ const {
17
17
  ReplaceSource
18
18
  } = require("webpack-sources");
19
19
  const Compilation = require("../Compilation");
20
- const { tryRunOrWebpackError } = require("../HookWebpackError");
21
20
  const HotUpdateChunk = require("../HotUpdateChunk");
22
21
  const InitFragment = require("../InitFragment");
23
22
  const { JAVASCRIPT_TYPE } = require("../ModuleSourceTypeConstants");
@@ -30,6 +29,7 @@ const {
30
29
  const NormalModule = require("../NormalModule");
31
30
  const RuntimeGlobals = require("../RuntimeGlobals");
32
31
  const Template = require("../Template");
32
+ const { tryRunOrWebpackError } = require("../errors/HookWebpackError");
33
33
  const { last, someInIterable } = require("../util/IterableHelpers");
34
34
  const StringXor = require("../util/StringXor");
35
35
  const { compareModulesByFullName } = require("../util/comparators");
@@ -48,10 +48,24 @@ const { intersectRuntime } = require("../util/runtime");
48
48
  const JavascriptGenerator = require("./JavascriptGenerator");
49
49
  const JavascriptParser = require("./JavascriptParser");
50
50
 
51
- /** @typedef {import("eslint-scope").Reference} Reference */
52
- /** @typedef {import("eslint-scope").Scope} Scope */
53
- /** @typedef {import("eslint-scope").Variable} Variable */
54
51
  /** @typedef {import("estree").Program} Program */
52
+ /** @typedef {import("estree").Node} Node */
53
+ /** @typedef {import("estree").Identifier} Identifier */
54
+ /** @typedef {import("estree").CatchClause} CatchClause */
55
+ /** @typedef {import("estree").ClassDeclaration} ClassDeclaration */
56
+ /** @typedef {import("estree").ClassExpression} ClassExpression */
57
+ /** @typedef {import("estree").FunctionDeclaration} FunctionDeclaration */
58
+ /** @typedef {import("estree").FunctionExpression} FunctionExpression */
59
+ /** @typedef {import("estree").ArrowFunctionExpression} ArrowFunctionExpression */
60
+ /** @typedef {import("estree").VariableDeclarator} VariableDeclarator */
61
+ /** @typedef {import("estree").VariableDeclaration} VariableDeclaration */
62
+ /** @typedef {import("estree").ImportDeclaration} ImportDeclaration */
63
+ /** @typedef {import("estree").ImportSpecifier} ImportSpecifier */
64
+ /** @typedef {import("estree").ImportDefaultSpecifier} ImportDefaultSpecifier */
65
+ /** @typedef {import("estree").ImportNamespaceSpecifier} ImportNamespaceSpecifier */
66
+ /** @typedef {import("estree").AssignmentExpression} AssignmentExpression */
67
+ /** @typedef {import("estree").ForInStatement} ForInStatement */
68
+ /** @typedef {import("estree").ForOfStatement} ForOfStatement */
55
69
  /** @typedef {import("webpack-sources").Source} Source */
56
70
  /** @typedef {import("../config/defaults").OutputNormalizedWithDefaults} OutputOptions */
57
71
  /** @typedef {import("../Chunk")} Chunk */
@@ -70,16 +84,72 @@ const JavascriptParser = require("./JavascriptParser");
70
84
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
71
85
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
72
86
  /** @typedef {import("../TemplatedPathPlugin").TemplatePath} TemplatePath */
73
- /** @typedef {import("../WebpackError")} WebpackError */
87
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
74
88
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
75
89
  /** @typedef {import("../util/Hash")} Hash */
76
90
  /** @typedef {import("../util/concatenate").ScopeSet} ScopeSet */
77
91
  /** @typedef {import("../util/concatenate").UsedNamesInScopeInfo} UsedNamesInScopeInfo */
78
92
 
93
+ // TODO remove these types when we will update `eslint-scope` to the latest version and import them from `eslint-scope`
94
+ /**
95
+ * @typedef {object} Scope
96
+ * @property {"block" | "catch" | "class" | "class-field-initializer" | "class-static-block" | "for" | "function" | "function-expression-name" | "global" | "module" | "switch" | "with" | "TDZ"} type
97
+ * @property {boolean} isStrict
98
+ * @property {Scope | null} upper
99
+ * @property {Scope[]} childScopes
100
+ * @property {Scope} variableScope
101
+ * @property {Node} block
102
+ * @property {Variable[]} variables
103
+ * @property {Map<string, Variable>} set
104
+ * @property {Reference[]} references
105
+ * @property {Reference[]} through
106
+ * @property {boolean} functionExpressionScope
107
+ * @property {{ variables: Variable[], set: Map<string, Variable> }=} implicit
108
+ */
109
+
110
+ /**
111
+ * @typedef {
112
+ * | { type: "CatchClause", node: CatchClause, parent: null }
113
+ * | { type: "ClassName", node: ClassDeclaration | ClassExpression, parent: null }
114
+ * | { type: "FunctionName", node: FunctionDeclaration | FunctionExpression, parent: null }
115
+ * | { type: "ImplicitGlobalVariable", node: AssignmentExpression | ForInStatement | ForOfStatement, parent: null }
116
+ * | { type: "ImportBinding", node: ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier, parent: ImportDeclaration }
117
+ * | { type: "Parameter", node: FunctionDeclaration | FunctionExpression | ArrowFunctionExpression, parent: null }
118
+ * | { type: "TDZ", node: any, parent: null }
119
+ * | { type: "Variable", node: VariableDeclarator, parent: VariableDeclaration }
120
+ * } DefinitionType
121
+ */
122
+
123
+ /** @typedef {DefinitionType & { name: Identifier }} Definition */
124
+
125
+ /**
126
+ * @typedef {object} Variable
127
+ * @property {string} name
128
+ * @property {Scope} scope
129
+ * @property {Identifier[]} identifiers
130
+ * @property {Reference[]} references
131
+ * @property {Definition[]} defs
132
+ */
133
+
134
+ /**
135
+ * @typedef {object} Reference
136
+ * @property {Identifier} identifier
137
+ * @property {Scope} from
138
+ * @property {Variable | null} resolved
139
+ * @property {Node | null} writeExpr
140
+ * @property {boolean} init
141
+ * @property {() => boolean} isWrite
142
+ * @property {() => boolean} isRead
143
+ * @property {() => boolean} isWriteOnly
144
+ * @property {() => boolean} isReadOnly
145
+ * @property {() => boolean} isReadWrite
146
+ */
147
+
79
148
  /** @type {WeakMap<ChunkGraph, WeakMap<Chunk, boolean>>} */
80
149
  const chunkHasJsCache = new WeakMap();
81
150
 
82
151
  /**
152
+ * Returns true, when a JS file is needed for this chunk.
83
153
  * @param {Chunk} chunk a chunk
84
154
  * @param {ChunkGraph} chunkGraph the chunk graph
85
155
  * @returns {boolean} true, when a JS file is needed for this chunk
@@ -99,6 +169,7 @@ const _chunkHasJs = (chunk, chunkGraph) => {
99
169
  };
100
170
 
101
171
  /**
172
+ * Returns true, when a JS file is needed for this chunk.
102
173
  * @param {Chunk} chunk a chunk
103
174
  * @param {ChunkGraph} chunkGraph the chunk graph
104
175
  * @returns {boolean} true, when a JS file is needed for this chunk
@@ -121,6 +192,7 @@ const chunkHasJs = (chunk, chunkGraph) => {
121
192
  };
122
193
 
123
194
  /**
195
+ * Chunk has runtime or js.
124
196
  * @param {Chunk} chunk a chunk
125
197
  * @param {ChunkGraph} chunkGraph the chunk graph
126
198
  * @returns {boolean} true, when a JS file is needed for this chunk
@@ -148,6 +220,7 @@ const chunkHasRuntimeOrJs = (chunk, chunkGraph) => {
148
220
  };
149
221
 
150
222
  /**
223
+ * Print generated code for stack.
151
224
  * @param {Module} module a module
152
225
  * @param {string} code the code
153
226
  * @returns {string} generated code for the stack
@@ -158,6 +231,7 @@ const printGeneratedCodeForStack = (module, code) => {
158
231
  return `\n\nGenerated code for ${module.identifier()}\n${lines
159
232
  .map(
160
233
  /**
234
+ * Handles the callback logic for this hook.
161
235
  * @param {string} line the line
162
236
  * @param {number} i the index
163
237
  * @param {string[]} _lines the lines
@@ -172,6 +246,7 @@ const printGeneratedCodeForStack = (module, code) => {
172
246
  };
173
247
 
174
248
  /**
249
+ * Defines the render context type used by this module.
175
250
  * @typedef {object} RenderContext
176
251
  * @property {Chunk} chunk the chunk
177
252
  * @property {DependencyTemplates} dependencyTemplates the dependency templates
@@ -183,6 +258,7 @@ const printGeneratedCodeForStack = (module, code) => {
183
258
  */
184
259
 
185
260
  /**
261
+ * Defines the main render context type used by this module.
186
262
  * @typedef {object} MainRenderContext
187
263
  * @property {Chunk} chunk the chunk
188
264
  * @property {DependencyTemplates} dependencyTemplates the dependency templates
@@ -195,6 +271,7 @@ const printGeneratedCodeForStack = (module, code) => {
195
271
  */
196
272
 
197
273
  /**
274
+ * Defines the chunk render context type used by this module.
198
275
  * @typedef {object} ChunkRenderContext
199
276
  * @property {Chunk} chunk the chunk
200
277
  * @property {DependencyTemplates} dependencyTemplates the dependency templates
@@ -207,6 +284,7 @@ const printGeneratedCodeForStack = (module, code) => {
207
284
  */
208
285
 
209
286
  /**
287
+ * Defines the render bootstrap context type used by this module.
210
288
  * @typedef {object} RenderBootstrapContext
211
289
  * @property {Chunk} chunk the chunk
212
290
  * @property {CodeGenerationResults} codeGenerationResults results of code generation
@@ -217,6 +295,7 @@ const printGeneratedCodeForStack = (module, code) => {
217
295
  */
218
296
 
219
297
  /**
298
+ * Defines the startup render context type used by this module.
220
299
  * @typedef {object} StartupRenderContext
221
300
  * @property {Chunk} chunk the chunk
222
301
  * @property {DependencyTemplates} dependencyTemplates the dependency templates
@@ -231,6 +310,7 @@ const printGeneratedCodeForStack = (module, code) => {
231
310
  */
232
311
 
233
312
  /**
313
+ * Defines the module render context type used by this module.
234
314
  * @typedef {object} ModuleRenderContext
235
315
  * @property {Chunk} chunk the chunk
236
316
  * @property {DependencyTemplates} dependencyTemplates the dependency templates
@@ -246,6 +326,7 @@ const printGeneratedCodeForStack = (module, code) => {
246
326
  */
247
327
 
248
328
  /**
329
+ * Defines the compilation hooks type used by this module.
249
330
  * @typedef {object} CompilationHooks
250
331
  * @property {SyncWaterfallHook<[Source, Module, ModuleRenderContext]>} renderModuleContent
251
332
  * @property {SyncWaterfallHook<[Source, Module, ModuleRenderContext]>} renderModuleContainer
@@ -272,6 +353,7 @@ const PLUGIN_NAME = "JavascriptModulesPlugin";
272
353
 
273
354
  class JavascriptModulesPlugin {
274
355
  /**
356
+ * Returns the attached hooks.
275
357
  * @param {Compilation} compilation the compilation
276
358
  * @returns {CompilationHooks} the attached hooks
277
359
  */
@@ -327,7 +409,7 @@ class JavascriptModulesPlugin {
327
409
  }
328
410
 
329
411
  /**
330
- * Apply the plugin
412
+ * Applies the plugin by registering its hooks on the compiler.
331
413
  * @param {Compiler} compiler the compiler instance
332
414
  * @returns {void}
333
415
  */
@@ -347,16 +429,21 @@ class JavascriptModulesPlugin {
347
429
  .tap(PLUGIN_NAME, (options) => {
348
430
  switch (type) {
349
431
  case JAVASCRIPT_MODULE_TYPE_AUTO: {
350
- return new JavascriptParser("auto", { parse: options.parse });
432
+ return new JavascriptParser("auto", {
433
+ parse: options.parse,
434
+ typescript: options.typescript
435
+ });
351
436
  }
352
437
  case JAVASCRIPT_MODULE_TYPE_DYNAMIC: {
353
438
  return new JavascriptParser("script", {
354
- parse: options.parse
439
+ parse: options.parse,
440
+ typescript: options.typescript
355
441
  });
356
442
  }
357
443
  case JAVASCRIPT_MODULE_TYPE_ESM: {
358
444
  return new JavascriptParser("module", {
359
- parse: options.parse
445
+ parse: options.parse,
446
+ typescript: options.typescript
360
447
  });
361
448
  }
362
449
  }
@@ -642,6 +729,7 @@ class JavascriptModulesPlugin {
642
729
  }
643
730
 
644
731
  /**
732
+ * Gets chunk filename template.
645
733
  * @param {Chunk} chunk chunk
646
734
  * @param {OutputOptions} outputOptions output options
647
735
  * @returns {TemplatePath} used filename template
@@ -658,6 +746,7 @@ class JavascriptModulesPlugin {
658
746
  }
659
747
 
660
748
  /**
749
+ * Renders the newly generated source from rendering.
661
750
  * @param {Module} module the rendered module
662
751
  * @param {ModuleRenderContext} renderContext options object
663
752
  * @param {CompilationHooks} hooks hooks
@@ -797,6 +886,7 @@ class JavascriptModulesPlugin {
797
886
  }
798
887
 
799
888
  /**
889
+ * Renders the rendered source.
800
890
  * @param {RenderContext} renderContext the render context
801
891
  * @param {CompilationHooks} hooks hooks
802
892
  * @returns {Source} the rendered source
@@ -875,6 +965,7 @@ class JavascriptModulesPlugin {
875
965
  }
876
966
 
877
967
  /**
968
+ * Renders the newly generated source from rendering.
878
969
  * @param {MainRenderContext} renderContext options object
879
970
  * @param {CompilationHooks} hooks hooks
880
971
  * @param {Compilation} compilation the compilation
@@ -1240,6 +1331,7 @@ class JavascriptModulesPlugin {
1240
1331
  }
1241
1332
 
1242
1333
  /**
1334
+ * Updates hash with bootstrap.
1243
1335
  * @param {Hash} hash the hash to be updated
1244
1336
  * @param {RenderBootstrapContext} renderContext options object
1245
1337
  * @param {CompilationHooks} hooks hooks
@@ -1260,6 +1352,7 @@ class JavascriptModulesPlugin {
1260
1352
  }
1261
1353
 
1262
1354
  /**
1355
+ * Renders the generated source of the bootstrap code.
1263
1356
  * @param {RenderBootstrapContext} renderContext options object
1264
1357
  * @param {CompilationHooks} hooks hooks
1265
1358
  * @returns {Bootstrap} the generated source of the bootstrap code
@@ -1334,6 +1427,13 @@ class JavascriptModulesPlugin {
1334
1427
  // is evaluated.
1335
1428
  buf.push("// The deferred module cache");
1336
1429
  buf.push("var __webpack_module_deferred_exports__ = {};");
1430
+ // Per the TC39 import-defer spec, every defer-import call site for
1431
+ // the same module must yield the same Deferred Module Namespace
1432
+ // Exotic Object (and a distinct one from any eager namespace).
1433
+ // Cache the deferred namespace proxy here so calls from different
1434
+ // files share identity.
1435
+ buf.push("// The deferred namespace cache");
1436
+ buf.push("var __webpack_module_deferred_namespace_cache__ = {};");
1337
1437
  buf.push("");
1338
1438
  }
1339
1439
 
@@ -1605,6 +1705,7 @@ class JavascriptModulesPlugin {
1605
1705
  }
1606
1706
 
1607
1707
  /**
1708
+ * Renders the generated source of the require function.
1608
1709
  * @param {RenderBootstrapContext} renderContext options object
1609
1710
  * @param {CompilationHooks} hooks hooks
1610
1711
  * @returns {string} the generated source of the require function
@@ -1618,6 +1719,7 @@ class JavascriptModulesPlugin {
1618
1719
  const runtimeRequirements = chunkGraph.getTreeRuntimeRequirements(chunk);
1619
1720
 
1620
1721
  /**
1722
+ * Renders missing module error.
1621
1723
  * @param {string} condition guard expression
1622
1724
  * @returns {string[]} source
1623
1725
  */
@@ -1742,6 +1844,7 @@ class JavascriptModulesPlugin {
1742
1844
  }
1743
1845
 
1744
1846
  /**
1847
+ * Get renamed inline module.
1745
1848
  * @param {Compilation} compilation compilation
1746
1849
  * @param {Module[]} allModules allModules
1747
1850
  * @param {MainRenderContext} renderContext renderContext