webpack 5.111.1 → 5.112.1

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 (793) hide show
  1. package/README.md +1 -1
  2. package/bin/webpack.js +13 -7
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +373 -163
  5. package/lib/Compiler.js +31 -44
  6. package/lib/Dependency.js +3 -551
  7. package/lib/DependencyTemplate.js +3 -70
  8. package/lib/EntryPlugin.js +3 -68
  9. package/lib/Entrypoint.js +3 -121
  10. package/lib/ExternalsPlugin.js +3 -92
  11. package/lib/FileSystemInfo.js +3 -4629
  12. package/lib/InitFragment.js +3 -204
  13. package/lib/LibraryTemplatePlugin.js +3 -46
  14. package/lib/ModuleFilenameHelpers.js +3 -400
  15. package/lib/ModuleNotFoundError.js +2 -2
  16. package/lib/MultiCompiler.js +37 -8
  17. package/lib/NormalModule.js +3 -2242
  18. package/lib/NullFactory.js +3 -22
  19. package/lib/ProgressPlugin.js +3 -908
  20. package/lib/RawModule.js +3 -197
  21. package/lib/RequestShortener.js +3 -37
  22. package/lib/SingleEntryPlugin.js +1 -1
  23. package/lib/WebpackError.js +2 -2
  24. package/lib/asset/AssetBytesGenerator.js +21 -13
  25. package/lib/asset/AssetBytesParser.js +12 -10
  26. package/lib/asset/AssetGenerator.js +71 -69
  27. package/lib/asset/AssetModule.js +13 -2
  28. package/lib/asset/AssetModulesPlugin.js +10 -12
  29. package/lib/asset/AssetParser.js +10 -10
  30. package/lib/asset/AssetSourceGenerator.js +23 -15
  31. package/lib/asset/AssetSourceParser.js +12 -10
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +17 -12
  34. package/lib/asset/WebManifestParser.js +8 -8
  35. package/lib/async-modules/AsyncModuleHelpers.js +12 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +9 -3
  38. package/lib/async-modules/isGeneratorLowered.js +3 -3
  39. package/lib/bun/BunTargetPlugin.js +1 -1
  40. package/lib/cache/AddBuildDependenciesPlugin.js +2 -19
  41. package/lib/{Cache.js → cache/Cache.js} +1 -1
  42. package/lib/{CacheFacade.js → cache/CacheFacade.js} +6 -6
  43. package/lib/cache/IdleFileCachePlugin.js +2 -2
  44. package/lib/cache/MemoryCachePlugin.js +2 -2
  45. package/lib/cache/MemoryWithGcCachePlugin.js +2 -2
  46. package/lib/cache/PackFileCacheStrategy.js +13 -19
  47. package/lib/cache/ResolverCachePlugin.js +65 -11
  48. package/lib/cache/mergeEtags.js +1 -1
  49. package/lib/{OptionsApply.js → config/OptionsApply.js} +3 -3
  50. package/lib/{PlatformPlugin.js → config/PlatformPlugin.js} +2 -2
  51. package/lib/{WebpackOptionsApply.js → config/WebpackOptionsApply.js} +209 -212
  52. package/lib/{WebpackOptionsDefaulter.js → config/WebpackOptionsDefaulter.js} +3 -3
  53. package/lib/config/browserslistTargetHandler.js +1 -1
  54. package/lib/{cli.js → config/cli.js} +14 -164
  55. package/lib/config/defaults.js +166 -59
  56. package/lib/config/getClaimedAssetTypes.js +22 -14
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +11 -1
  59. package/lib/container/ContainerEntryDependency.js +1 -1
  60. package/lib/container/ContainerEntryModule.js +13 -11
  61. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  62. package/lib/container/ContainerExposedDependency.js +1 -1
  63. package/lib/container/ContainerPlugin.js +178 -5
  64. package/lib/container/ContainerReferencePlugin.js +75 -14
  65. package/lib/container/FallbackDependency.js +1 -1
  66. package/lib/container/FallbackItemDependency.js +1 -1
  67. package/lib/container/FallbackModule.js +12 -10
  68. package/lib/container/FallbackModuleFactory.js +2 -2
  69. package/lib/container/HoistContainerReferencesPlugin.js +10 -11
  70. package/lib/container/ModuleFederationPlugin.js +306 -7
  71. package/lib/container/RemoteModule.js +14 -10
  72. package/lib/container/RemoteRuntimeModule.js +5 -5
  73. package/lib/container/RemoteToExternalDependency.js +1 -1
  74. package/lib/container/moduleFederationHooks.js +1 -1
  75. package/lib/context/ContextModule.js +37 -26
  76. package/lib/context/ContextModuleFactory.js +14 -11
  77. package/lib/context/ContextReplacementPlugin.js +6 -12
  78. package/lib/css/CssGenerator.js +78 -68
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +37 -29
  82. package/lib/css/CssModulesPlugin.js +129 -45
  83. package/lib/css/CssParser.js +714 -322
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/{util → css}/conventions.js +1 -1
  86. package/lib/css/cssMinify.js +110 -37
  87. package/lib/css/data.js +6990 -5125
  88. package/lib/css/syntax-parser.js +20734 -0
  89. package/lib/css/syntax-printer.js +6092 -0
  90. package/lib/css/syntax.js +37 -18686
  91. package/lib/debug/ProfilingPlugin.js +106 -51
  92. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +416 -55
  93. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +19 -15
  94. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +6 -4
  95. package/lib/deno/DenoTargetPlugin.js +1 -1
  96. package/lib/dependencies/ConstDependency.js +3 -120
  97. package/lib/dependencies/ContextElementDependency.js +5 -172
  98. package/lib/dependencies/NullDependency.js +3 -37
  99. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  100. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -11
  101. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  102. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  103. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  104. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  105. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +14 -11
  106. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  107. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  108. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  109. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  110. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  111. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  112. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  113. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  114. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  115. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -36
  116. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  117. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +154 -92
  118. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  119. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +36 -33
  120. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +17 -16
  121. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +48 -39
  122. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  123. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  124. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
  125. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  126. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  127. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +9 -6
  128. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  129. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  130. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  131. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  132. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  133. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  134. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  135. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  136. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  137. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  138. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  139. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  140. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
  141. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  142. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  143. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  144. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  145. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +10 -11
  146. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  147. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  148. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +7 -10
  149. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +17 -19
  150. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  151. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  152. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  153. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +21 -17
  154. package/lib/dependencies/core/ConstDependency.js +131 -0
  155. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  156. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  157. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  158. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  159. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  160. package/lib/dependencies/core/NullDependency.js +44 -0
  161. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  162. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  163. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +375 -99
  164. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +24 -19
  165. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  166. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  167. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +25 -22
  168. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  169. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  170. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  171. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
  172. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +20 -20
  173. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  174. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  175. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  176. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  177. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  178. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +146 -133
  179. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  180. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +78 -37
  181. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -12
  182. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  183. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +86 -68
  184. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +104 -100
  185. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +36 -51
  186. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  187. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +98 -60
  188. package/lib/dependencies/esm/ESMLiveExportDependency.js +311 -0
  189. package/lib/dependencies/esm/ESMLiveExportParserPlugin.js +862 -0
  190. package/lib/dependencies/esm/ESMModulesPlugin.js +205 -0
  191. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  192. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -18
  193. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +5 -7
  194. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  195. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  196. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  197. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  198. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  199. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  200. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  201. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +52 -151
  202. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -15
  203. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -23
  204. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -18
  205. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  206. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  207. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  208. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  209. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +22 -25
  210. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  211. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  212. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  213. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  214. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  215. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +122 -103
  216. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  217. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  218. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  219. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  220. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  221. package/lib/{url → dependencies/url}/URLParserPlugin.js +17 -19
  222. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  223. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  224. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  225. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  226. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +82 -53
  227. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  228. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  229. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  230. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  231. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  232. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  233. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +155 -27
  234. package/lib/{util → devtool}/generateDebugId.js +1 -1
  235. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  236. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  237. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  238. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  239. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  240. package/lib/dll/DelegatedModule.js +23 -21
  241. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  242. package/lib/dll/DelegatedPlugin.js +1 -1
  243. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  244. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  245. package/lib/dll/DllEntryPlugin.js +3 -3
  246. package/lib/dll/DllModule.js +14 -10
  247. package/lib/dll/DllModuleFactory.js +3 -3
  248. package/lib/dll/DllPlugin.js +18 -6
  249. package/lib/dll/DllReferencePlugin.js +103 -30
  250. package/lib/dll/LibManifestPlugin.js +9 -7
  251. package/lib/electron/ElectronTargetPlugin.js +2 -2
  252. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  253. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  254. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  255. package/lib/entry/EntryPlugin.js +75 -0
  256. package/lib/errors/AbstractMethodError.js +1 -1
  257. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  258. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  259. package/lib/errors/BuildCycleError.js +1 -1
  260. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  261. package/lib/errors/ChunkRenderError.js +1 -1
  262. package/lib/errors/CodeGenerationError.js +1 -1
  263. package/lib/errors/CommentCompilationWarning.js +1 -1
  264. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  265. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  266. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  267. package/lib/errors/DllManifestError.js +26 -0
  268. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  269. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  270. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  271. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  272. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +9 -6
  273. package/lib/errors/ExternalStarReexportError.js +2 -2
  274. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  275. package/lib/errors/HookWebpackError.js +6 -5
  276. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  277. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  278. package/lib/errors/JSONParseError.js +4 -4
  279. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  280. package/lib/errors/ModuleBuildError.js +1 -1
  281. package/lib/errors/ModuleDependencyError.js +2 -2
  282. package/lib/errors/ModuleDependencyWarning.js +2 -2
  283. package/lib/errors/ModuleError.js +1 -1
  284. package/lib/errors/ModuleHashingError.js +1 -1
  285. package/lib/errors/ModuleNotFoundError.js +3 -3
  286. package/lib/errors/ModuleParseError.js +1 -1
  287. package/lib/errors/ModuleRestoreError.js +1 -1
  288. package/lib/errors/ModuleStoreError.js +1 -1
  289. package/lib/errors/ModuleWarning.js +1 -1
  290. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  291. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  292. package/lib/errors/NodeStuffInWebError.js +7 -2
  293. package/lib/errors/PathVariableError.js +31 -0
  294. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  295. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  296. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  297. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  298. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  299. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  300. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  301. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  302. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  303. package/lib/errors/WebpackError.js +13 -3
  304. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  305. package/lib/esm/ModuleChunkFormatPlugin.js +55 -20
  306. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  307. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  308. package/lib/{ExternalModule.js → externals/ExternalModule.js} +90 -63
  309. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +42 -41
  310. package/lib/externals/ExternalsPlugin.js +99 -0
  311. package/lib/fs/FileSystemInfo.js +4642 -0
  312. package/lib/{util → fs}/fs.js +22 -9
  313. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  314. package/lib/graph/Chunk.js +985 -0
  315. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +192 -80
  316. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  317. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  318. package/lib/graph/Dependency.js +634 -0
  319. package/lib/graph/Entrypoint.js +136 -0
  320. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +131 -83
  321. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  322. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +44 -33
  323. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  324. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +169 -76
  325. package/lib/{util → graph}/findGraphRoots.js +15 -9
  326. package/lib/graph/isDependencyKind.js +23 -0
  327. package/lib/hmr/HotModuleReplacement.runtime.js +12 -11
  328. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +51 -57
  329. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  330. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +25 -26
  331. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  332. package/lib/hmr/LazyCompilationPlugin.js +32 -28
  333. package/lib/html/HtmlGenerator.js +132 -60
  334. package/lib/html/HtmlModule.js +16 -2
  335. package/lib/html/HtmlModulesPlugin.js +184 -87
  336. package/lib/html/HtmlParser.js +511 -160
  337. package/lib/html/builtinEmbeddedRenderer.js +70 -25
  338. package/lib/html/data.js +44 -22
  339. package/lib/html/htmlMinify.js +114 -41
  340. package/lib/html/syntax-parser.js +15795 -0
  341. package/lib/html/syntax-printer.js +1033 -0
  342. package/lib/html/syntax.js +37 -13952
  343. package/lib/html/xmlMinify.js +70 -0
  344. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  345. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  346. package/lib/ids/HashedModuleIdsPlugin.js +32 -5
  347. package/lib/ids/IdHelpers.js +4 -4
  348. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  349. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  350. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  351. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  352. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  353. package/lib/{util → ids}/numberHash.js +1 -1
  354. package/lib/index.js +312 -105
  355. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +31 -37
  356. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  357. package/lib/javascript/BasicEvaluatedExpression.js +9 -9
  358. package/lib/javascript/ChunkHelpers.js +64 -4
  359. package/lib/javascript/CommonJsChunkFormatPlugin.js +5 -13
  360. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  361. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +75 -8
  362. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  363. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  364. package/lib/javascript/JavascriptGenerator.js +32 -27
  365. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +8 -20
  366. package/lib/javascript/JavascriptModule.js +14 -3
  367. package/lib/javascript/JavascriptModulesPlugin.js +441 -214
  368. package/lib/javascript/JavascriptParser.js +318 -144
  369. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  370. package/lib/javascript/MergedEntryExports.js +196 -0
  371. package/lib/javascript/ScopeAnalyzer.js +3924 -13
  372. package/lib/javascript/StartupHelpers.js +6 -6
  373. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +13 -19
  374. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  375. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  376. package/lib/javascript/data.js +533 -122
  377. package/lib/javascript/jsMinify.js +272 -0
  378. package/lib/javascript/regexp.js +67 -32
  379. package/lib/javascript/syntax-parser.js +19169 -0
  380. package/lib/javascript/syntax-printer-data.js +1099 -0
  381. package/lib/javascript/syntax-printer.js +53878 -0
  382. package/lib/javascript/syntax.js +20 -11274
  383. package/lib/json/JsonData.js +1 -1
  384. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  385. package/lib/json/JsonGenerator.js +24 -16
  386. package/lib/json/JsonModule.js +13 -2
  387. package/lib/json/JsonModulesPlugin.js +1 -1
  388. package/lib/json/JsonParser.js +11 -10
  389. package/lib/json/jsonMinify.js +69 -0
  390. package/lib/library/AbstractLibraryPlugin.js +28 -15
  391. package/lib/library/AmdLibraryPlugin.js +4 -4
  392. package/lib/library/AssignLibraryPlugin.js +28 -12
  393. package/lib/library/EnableLibraryPlugin.js +1 -1
  394. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  395. package/lib/library/JsonpLibraryPlugin.js +2 -2
  396. package/lib/library/LibraryTemplatePlugin.js +53 -0
  397. package/lib/library/ModuleLibraryPlugin.js +557 -187
  398. package/lib/library/SystemLibraryPlugin.js +6 -8
  399. package/lib/library/UmdLibraryPlugin.js +3 -4
  400. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  401. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  402. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  403. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  404. package/lib/loaders/LoaderRunner.js +94 -46
  405. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  406. package/lib/loaders/loadLoader.js +16 -10
  407. package/lib/logging/Logger.js +7 -9
  408. package/lib/logging/ProgressPlugin.js +957 -0
  409. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  410. package/lib/{Generator.js → module/Generator.js} +33 -23
  411. package/lib/{Module.js → module/Module.js} +121 -53
  412. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  413. package/lib/module/NormalModule.js +2350 -0
  414. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +64 -71
  415. package/lib/module/NullFactory.js +29 -0
  416. package/lib/{Parser.js → module/Parser.js} +12 -5
  417. package/lib/module/RawModule.js +208 -0
  418. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  419. package/lib/{util → module}/extractSourceMap.js +71 -20
  420. package/lib/{util → module}/findCaseMismatch.js +4 -4
  421. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  422. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  423. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +7 -6
  424. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  425. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  426. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  427. package/lib/node/NodeTargetPlugin.js +1 -1
  428. package/lib/node/NodeWatchFileSystem.js +58 -6
  429. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  430. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +13 -19
  431. package/lib/node/ReadFileCompileWasmPlugin.js +9 -11
  432. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  433. package/lib/node/nodeConsole.js +6 -7
  434. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  435. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  436. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +14 -14
  437. package/lib/optimize/ConcatenatedModule.js +231 -220
  438. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  439. package/lib/optimize/ConstExportsPlugin.js +7 -7
  440. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  441. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  442. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +23 -28
  443. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +44 -19
  444. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  445. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  446. package/lib/optimize/InlineExports.js +12 -7
  447. package/lib/optimize/InnerGraph.js +5 -13
  448. package/lib/optimize/InnerGraphPlugin.js +10 -10
  449. package/lib/optimize/LazyBarrels.js +620 -0
  450. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  451. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  452. package/lib/optimize/MangleExportsPlugin.js +5 -5
  453. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  454. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  455. package/lib/optimize/ModuleConcatenationPlugin.js +28 -22
  456. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  457. package/lib/optimize/RealContentHashPlugin.js +18 -13
  458. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  459. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  460. package/lib/optimize/SideEffectsFlagPlugin.js +24 -38
  461. package/lib/optimize/SplitChunksPlugin.js +719 -174
  462. package/lib/{util → optimize}/TupleQueue.js +9 -9
  463. package/lib/optimize/chunkSetIntersections.js +437 -0
  464. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  465. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  466. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +69 -25
  467. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +144 -70
  468. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  469. package/lib/output/SSRManifestPlugin.js +349 -0
  470. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  471. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  472. package/lib/performance/BroadContextsPlugin.js +4 -4
  473. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  474. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  475. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  476. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  477. package/lib/performance/DynamicExportsPlugin.js +2 -2
  478. package/lib/performance/EvalUsagePlugin.js +4 -6
  479. package/lib/performance/HotspotsPlugin.js +39 -14
  480. package/lib/performance/LargeModulesPlugin.js +2 -3
  481. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  482. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  483. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  484. package/lib/performance/PureAnnotationsPlugin.js +19 -13
  485. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  486. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  487. package/lib/performance/SizeLimitsPlugin.js +11 -12
  488. package/lib/performance/TopLevelThisPlugin.js +22 -13
  489. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  490. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  491. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  492. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  493. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  494. package/lib/performance/UnusedFederationPlugin.js +2 -4
  495. package/lib/performance/UnusedModulesPlugin.js +5 -4
  496. package/lib/performance/getModuleSize.js +1 -1
  497. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  498. package/lib/performance/isOnlyReexported.js +7 -6
  499. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  500. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  501. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  502. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  503. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  504. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  505. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  506. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  507. package/lib/prefetch/ResourceHintPlugin.js +66 -45
  508. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  509. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  510. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  511. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  512. package/lib/{dependencies → provide}/ProvidedDependency.js +50 -17
  513. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  514. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  515. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  516. package/lib/resolve/getResolveOptionsKey.js +59 -0
  517. package/lib/rules/BasicEffectRulePlugin.js +1 -1
  518. package/lib/rules/RuleSetCompiler.js +42 -51
  519. package/lib/rules/UseEffectRulePlugin.js +1 -3
  520. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  521. package/lib/runtime/AsyncModuleRuntimeModule.js +14 -5
  522. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  523. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  524. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  525. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  526. package/lib/runtime/CompatRuntimeModule.js +4 -4
  527. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  528. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  529. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  530. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  531. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  532. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  533. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  534. package/lib/runtime/GetChunkFilenameRuntimeModule.js +7 -11
  535. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  536. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  537. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  538. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  539. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  540. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  541. package/lib/runtime/HelperRuntimeModule.js +16 -1
  542. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  543. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  544. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  545. package/lib/runtime/NonceRuntimeModule.js +2 -2
  546. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  547. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  548. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  549. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +24 -1
  550. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  551. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  552. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +50 -50
  553. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  554. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  555. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  556. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  557. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  558. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  559. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  560. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  561. package/lib/runtime/baseUri.js +1 -1
  562. package/lib/schemes/DataUriPlugin.js +1 -1
  563. package/lib/schemes/HttpUriPlugin.js +68 -13
  564. package/lib/schemes/VirtualUrlPlugin.js +52 -16
  565. package/lib/serialization/AggregateErrorSerializer.js +4 -4
  566. package/lib/serialization/BinaryMiddleware.js +4 -1
  567. package/lib/serialization/ErrorObjectSerializer.js +2 -5
  568. package/lib/serialization/FileMiddleware.js +3 -3
  569. package/lib/serialization/ObjectMiddleware.js +62 -29
  570. package/lib/serialization/PlainObjectSerializer.js +3 -7
  571. package/lib/serialization/Serializer.js +21 -11
  572. package/lib/serialization/SerializerMiddleware.js +10 -8
  573. package/lib/serialization/SingleItemMiddleware.js +4 -2
  574. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  575. package/lib/sharing/ConsumeSharedModule.js +18 -14
  576. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  577. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  578. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  579. package/lib/sharing/ProvideSharedDependency.js +1 -1
  580. package/lib/sharing/ProvideSharedModule.js +11 -9
  581. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  582. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  583. package/lib/sharing/SharePlugin.js +102 -9
  584. package/lib/sharing/ShareRuntimeModule.js +6 -6
  585. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  586. package/lib/{util → sharing}/semver.js +14 -16
  587. package/lib/sharing/utils.js +59 -2
  588. package/lib/stats/DefaultStatsFactoryPlugin.js +57 -54
  589. package/lib/stats/DefaultStatsPresetPlugin.js +3 -7
  590. package/lib/stats/DefaultStatsPrinterPlugin.js +15 -14
  591. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  592. package/lib/{Stats.js → stats/Stats.js} +4 -4
  593. package/lib/stats/StatsFactory.js +208 -37
  594. package/lib/stats/StatsPrinter.js +126 -13
  595. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  596. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  597. package/lib/template/DependencyTemplate.js +77 -0
  598. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  599. package/lib/template/InitFragment.js +223 -0
  600. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  601. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  602. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  603. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +158 -95
  604. package/lib/{Template.js → template/Template.js} +14 -12
  605. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  606. package/lib/typescript/TypeScriptPlugin.js +3 -3
  607. package/lib/util/RequestShortener.js +44 -0
  608. package/lib/util/SortableSet.js +87 -22
  609. package/lib/util/SourceProcessor.js +439 -51
  610. package/lib/util/TupleSet.js +27 -27
  611. package/lib/util/WeakTupleMap.js +20 -16
  612. package/lib/util/buildDiagnostics.js +2 -2
  613. package/lib/util/cleverMerge.js +61 -33
  614. package/lib/util/comparators.js +19 -15
  615. package/lib/util/concatenate.js +28 -147
  616. package/lib/util/createMappings.js +111 -0
  617. package/lib/util/dataURL.js +96 -15
  618. package/lib/util/deprecation.js +5 -4
  619. package/lib/util/extractComments.js +118 -0
  620. package/lib/util/formatLocation.js +1 -1
  621. package/lib/util/globUtils.js +198 -20
  622. package/lib/util/haltVisitors.js +51 -0
  623. package/lib/util/handlerKeys.js +2 -2
  624. package/lib/util/identifier.js +117 -1
  625. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  626. package/lib/util/internalSerializables.js +296 -102
  627. package/lib/util/magicComment.js +12 -7
  628. package/lib/util/makeSerializable.js +28 -7
  629. package/lib/util/memoize.js +1 -1
  630. package/lib/util/parseJson.js +2 -2
  631. package/lib/util/preloadModuleType.js +5 -2
  632. package/lib/util/registerExternalSerializer.js +2 -2
  633. package/lib/util/removeBOM.js +1 -1
  634. package/lib/util/runtime.js +1 -1
  635. package/lib/util/serialization.js +35 -28
  636. package/lib/util/source.js +2 -2
  637. package/lib/util/terminalColors.js +161 -0
  638. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  639. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  640. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +19 -5
  641. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +17 -9
  642. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +24 -15
  643. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  644. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +14 -12
  645. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  646. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +11 -13
  647. package/lib/wasm/wasmModuleFilename.js +2 -2
  648. package/lib/wasm-sync/SyncWasmModule.js +18 -3
  649. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  650. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  651. package/lib/wasm-sync/WebAssemblyGenerator.js +22 -16
  652. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +28 -21
  653. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  654. package/lib/wasm-sync/WebAssemblyParser.js +15 -17
  655. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  656. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  657. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  658. package/lib/{Watching.js → watch/Watching.js} +8 -8
  659. package/lib/web/FetchCompileAsyncWasmPlugin.js +12 -18
  660. package/lib/web/FetchCompileWasmPlugin.js +8 -10
  661. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  662. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  663. package/lib/web/JsonpTemplatePlugin.js +1 -1
  664. package/lib/webpack.js +27 -17
  665. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  666. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  667. package/package.json +57 -36
  668. package/schemas/WebpackOptions.check.js +4 -3
  669. package/schemas/WebpackOptions.d.json.ts +2 -0
  670. package/schemas/WebpackOptions.json +295 -75
  671. package/schemas/plugins/BannerPlugin.check.js +4 -3
  672. package/schemas/plugins/BannerPlugin.json +29 -2
  673. package/schemas/plugins/HtmlGeneratorOptions.check.js +4 -3
  674. package/schemas/plugins/HtmlParserOptions.check.js +4 -3
  675. package/schemas/plugins/IgnorePlugin.check.js +4 -3
  676. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  677. package/schemas/plugins/IgnorePlugin.json +1 -1
  678. package/schemas/plugins/LoaderOptionsPlugin.check.js +4 -3
  679. package/schemas/plugins/ManifestPlugin.check.js +4 -3
  680. package/schemas/plugins/ManifestPlugin.json +3 -3
  681. package/schemas/plugins/ProgressPlugin.check.js +4 -3
  682. package/schemas/plugins/ProgressPlugin.json +2 -7
  683. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  684. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  685. package/schemas/plugins/SourceMapDevToolPlugin.check.js +4 -3
  686. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  687. package/schemas/plugins/WatchIgnorePlugin.check.js +4 -3
  688. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  689. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +4 -3
  690. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +4 -3
  691. package/schemas/plugins/asset/AssetParserOptions.check.js +4 -3
  692. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +4 -3
  693. package/schemas/plugins/container/ContainerPlugin.check.js +4 -3
  694. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  695. package/schemas/plugins/container/ContainerReferencePlugin.check.js +4 -3
  696. package/schemas/plugins/container/ExternalsType.check.js +4 -3
  697. package/schemas/plugins/container/ModuleFederationPlugin.check.js +4 -3
  698. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  699. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +4 -3
  700. package/schemas/plugins/css/CssGeneratorOptions.check.js +4 -3
  701. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +4 -3
  702. package/schemas/plugins/css/CssModuleParserOptions.check.js +4 -3
  703. package/schemas/plugins/css/CssParserOptions.check.js +4 -3
  704. package/schemas/plugins/debug/ProfilingPlugin.check.js +4 -3
  705. package/schemas/plugins/define/DotenvPluginOptions.check.js +7 -0
  706. package/schemas/plugins/define/DotenvPluginOptions.json +3 -0
  707. package/schemas/plugins/dll/DllPlugin.check.js +4 -3
  708. package/schemas/plugins/dll/DllReferencePlugin.check.js +4 -3
  709. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  710. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +4 -3
  711. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +4 -3
  712. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +4 -3
  713. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +4 -3
  714. package/schemas/plugins/json/JsonModulesPluginParser.check.js +4 -3
  715. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +4 -3
  716. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +4 -3
  717. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +4 -3
  718. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +4 -3
  719. package/schemas/plugins/output/CleanOptions.check.js +7 -0
  720. package/schemas/plugins/output/CleanOptions.json +3 -0
  721. package/schemas/plugins/schemes/HttpUriPlugin.check.js +4 -3
  722. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +4 -3
  723. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +4 -3
  724. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  725. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +4 -3
  726. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  727. package/schemas/plugins/sharing/SharePlugin.check.js +4 -3
  728. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  729. package/types.d.ts +20780 -14174
  730. package/lib/LazyBarrel.js +0 -388
  731. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  732. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  733. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  734. package/lib/javascript/grammar.js +0 -5546
  735. package/lib/javascript/parser.js +0 -1500
  736. package/lib/javascript/regexpData.js +0 -51
  737. package/lib/performance/getSourceModules.js +0 -22
  738. package/lib/util/Semaphore.js +0 -65
  739. package/lib/util/objectToMap.js +0 -15
  740. package/schemas/WebpackOptions.check.d.ts +0 -7
  741. package/schemas/_container.json +0 -155
  742. package/schemas/_sharing.json +0 -118
  743. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  744. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  745. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  747. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  752. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  753. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  754. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  755. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  756. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  759. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  761. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  762. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  763. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  764. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  765. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  766. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  767. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  768. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  769. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  770. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  771. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  772. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  773. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  774. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  775. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  776. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  777. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  778. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  779. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  780. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  781. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  782. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  783. /package/lib/{util → css}/topologicalSort.js +0 -0
  784. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  785. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  786. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  787. /package/lib/{util → javascript}/StackedMap.js +0 -0
  788. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  789. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  790. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  791. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  792. /package/lib/{util → optimize}/Queue.js +0 -0
  793. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -7,8 +7,8 @@
7
7
 
8
8
  const path = require("path");
9
9
  const { RawSource } = require("webpack-sources");
10
- const ConcatenationScope = require("../ConcatenationScope");
11
- const Generator = require("../Generator");
10
+ const isDependencyKind = require("../graph/isDependencyKind");
11
+ const Generator = require("../module/Generator");
12
12
  const {
13
13
  ASSET_AND_ASSET_URL_TYPES,
14
14
  ASSET_AND_JAVASCRIPT_AND_ASSET_URL_TYPES,
@@ -20,14 +20,17 @@ const {
20
20
  JAVASCRIPT_TYPE,
21
21
  JAVASCRIPT_TYPES,
22
22
  NO_TYPES
23
- } = require("../ModuleSourceTypeConstants");
24
- const { ASSET_MODULE_TYPE } = require("../ModuleTypeConstants");
25
- const RuntimeGlobals = require("../RuntimeGlobals");
26
- const { toTemplateSourceFileName } = require("../TemplatedPathPlugin");
27
- const URLDependency = require("../dependencies/URLDependency");
23
+ } = require("../module/ModuleSourceTypeConstants");
24
+ const { ASSET_MODULE_TYPE } = require("../module/ModuleTypeConstants");
25
+ const ConcatenationScope = require("../optimize/ConcatenationScope");
26
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
27
+ const { toTemplateSourceFileName } = require("../template/TemplatedPathPlugin");
28
28
  const { getScheme } = require("../util/URLAbsoluteSpecifier");
29
29
  const createHash = require("../util/createHash");
30
- const { languageOfMediaType } = require("../util/dataURL");
30
+ const {
31
+ encodeDataURIPayload,
32
+ languageOfMediaType
33
+ } = require("../util/dataURL");
31
34
  const { makePathsRelative, parseResource } = require("../util/identifier");
32
35
  const memoize = require("../util/memoize");
33
36
  const nonNumericOnlyHash = require("../util/nonNumericOnlyHash");
@@ -39,6 +42,7 @@ const { updateHashFromSource } = require("../util/source");
39
42
 
40
43
  const getMimeTypes = memoize(() => require("../util/mimeTypes"));
41
44
 
45
+ /** @import { BuiltAssetModule, AssetNormalModule } from "./AssetModule" */
42
46
  /** @import { Source } from "webpack-sources" */
43
47
  /**
44
48
  * @import {
@@ -50,20 +54,18 @@ const getMimeTypes = memoize(() => require("../util/mimeTypes"));
50
54
  * RawPublicPath
51
55
  * } from "../../declarations/WebpackOptions"
52
56
  */
53
- /** @import ChunkGraph from "../ChunkGraph" */
57
+ /** @import ChunkGraph from "../graph/ChunkGraph" */
54
58
  /** @import Compilation, { AssetInfo } from "../Compilation" */
55
- /** @import { GenerateContext, UpdateHashContext } from "../Generator" */
59
+ /** @import { GenerateContext, UpdateHashContext } from "../module/Generator" */
56
60
  /**
57
61
  * @import Module, {
58
62
  * ConcatenationBailoutReasonContext,
59
63
  * SourceType,
60
64
  * SourceTypes
61
- * } from "../Module"
65
+ * } from "../module/Module"
62
66
  */
63
- /** @import { AssetModuleBuildInfo } from "./AssetModule" */
64
- /** @import ModuleGraph from "../ModuleGraph" */
65
- /** @import NormalModule from "../NormalModule" */
66
- /** @import RuntimeTemplate from "../RuntimeTemplate" */
67
+ /** @import ModuleGraph from "../graph/ModuleGraph" */
68
+ /** @import RuntimeTemplate from "../template/RuntimeTemplate" */
67
69
  /** @import Hash from "../util/Hash" */
68
70
  /** @import { RuntimeSpec } from "../util/runtime" */
69
71
 
@@ -203,6 +205,14 @@ const decodeDataUriContent = (encoding, content) => {
203
205
 
204
206
  const DEFAULT_ENCODING = "base64";
205
207
 
208
+ /**
209
+ * The module type the JSDoc inherited from `Generator` names.
210
+ * @typedef {AssetNormalModule} TModule
211
+ */
212
+
213
+ /**
214
+ * @extends {Generator<TModule>}
215
+ */
206
216
  class AssetGenerator extends Generator {
207
217
  /**
208
218
  * Creates an instance of AssetGenerator.
@@ -242,7 +252,7 @@ class AssetGenerator extends Generator {
242
252
 
243
253
  /**
244
254
  * Gets source file name.
245
- * @param {NormalModule} module module
255
+ * @param {TModule} module module
246
256
  * @param {RuntimeTemplate} runtimeTemplate runtime template
247
257
  * @returns {string} source file name
248
258
  */
@@ -257,13 +267,11 @@ class AssetGenerator extends Generator {
257
267
  /**
258
268
  * The resource this asset is named after, which something that re-encoded it
259
269
  * may have changed. Its emitted name and inlined media type both read this.
260
- * @param {NormalModule} module module
270
+ * @param {TModule} module module
261
271
  * @returns {string} the resource
262
272
  */
263
273
  static getAssetResource(module) {
264
- const buildInfo = /** @type {AssetModuleBuildInfo | undefined} */ (
265
- module.buildInfo
266
- );
274
+ const buildInfo = module.buildInfo;
267
275
 
268
276
  return /** @type {string} */ (
269
277
  (buildInfo && buildInfo.assetResource) || module.getResource()
@@ -272,10 +280,10 @@ class AssetGenerator extends Generator {
272
280
 
273
281
  /**
274
282
  * Gets the source file name as seen by a filename template. With
275
- * `experiments.futureDefaults` (webpack 6 default) `[path]` and `[file]` of a
283
+ * `experiments.futureDefaults` (the next major release's default) `[path]` and `[file]` of a
276
284
  * module outside of `context` behave like `[containedpath]`/`[containedfile]`,
277
285
  * so they can't emit the asset outside of `output.path`.
278
- * @param {NormalModule} module module
286
+ * @param {TModule} module module
279
287
  * @param {RuntimeTemplate} runtimeTemplate runtime template
280
288
  * @returns {string} source file name for the filename template
281
289
  */
@@ -288,7 +296,7 @@ class AssetGenerator extends Generator {
288
296
 
289
297
  /**
290
298
  * Gets full content hash.
291
- * @param {NormalModule} module module
299
+ * @param {TModule} module module
292
300
  * @param {RuntimeTemplate} runtimeTemplate runtime template
293
301
  * @returns {[string, string]} return full hash and non-numeric full hash
294
302
  */
@@ -323,7 +331,7 @@ class AssetGenerator extends Generator {
323
331
 
324
332
  /**
325
333
  * Gets filename with info.
326
- * @param {NormalModule} module module for which the code should be generated
334
+ * @param {TModule} module module for which the code should be generated
327
335
  * @param {Pick<AssetResourceGeneratorOptions, "filename" | "outputPath">} generatorOptions generator options
328
336
  * @param {{ runtime: RuntimeSpec, runtimeTemplate: RuntimeTemplate, chunkGraph: ChunkGraph }} generateContext context for generate
329
337
  * @param {string} contentHash the content hash
@@ -381,7 +389,7 @@ class AssetGenerator extends Generator {
381
389
 
382
390
  /**
383
391
  * Gets asset path with info.
384
- * @param {NormalModule} module module for which the code should be generated
392
+ * @param {TModule} module module for which the code should be generated
385
393
  * @param {Pick<AssetResourceGeneratorOptions, "publicPath">} generatorOptions generator options
386
394
  * @param {GenerateContext} generateContext context for generate
387
395
  * @param {string} filename the filename
@@ -493,7 +501,7 @@ class AssetGenerator extends Generator {
493
501
 
494
502
  /**
495
503
  * Returns the reason this module cannot be concatenated, when one exists.
496
- * @param {NormalModule} module module for which the bailout reason should be determined
504
+ * @param {TModule} module module for which the bailout reason should be determined
497
505
  * @param {ConcatenationBailoutReasonContext} context context
498
506
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
499
507
  */
@@ -503,7 +511,7 @@ class AssetGenerator extends Generator {
503
511
 
504
512
  /**
505
513
  * Returns mime type.
506
- * @param {NormalModule} module module
514
+ * @param {TModule} module module
507
515
  * @returns {string} mime type
508
516
  */
509
517
  getMimeType(module) {
@@ -554,14 +562,14 @@ class AssetGenerator extends Generator {
554
562
  );
555
563
  }
556
564
 
557
- return /** @type {string} */ (mimeType);
565
+ return mimeType;
558
566
  }
559
567
 
560
568
  /**
561
569
  * Offer the payload to `renderEmbeddedSource` before it is encoded, so the
562
570
  * encoding covers what came back. Declines what names no language, and a
563
571
  * `dataUrl` function, which is handed the source itself.
564
- * @param {NormalModule} module the module holding the payload
572
+ * @param {TModule} module the module holding the payload
565
573
  * @param {GenerateContext["runtimeTemplate"]} runtimeTemplate runtime template
566
574
  * @returns {Source | undefined} the rendered payload, when one came back
567
575
  */
@@ -589,7 +597,7 @@ class AssetGenerator extends Generator {
589
597
 
590
598
  /**
591
599
  * Generates data uri.
592
- * @param {NormalModule} module module for which the code should be generated
600
+ * @param {TModule} module module for which the code should be generated
593
601
  * @param {Source=} renderedSource the payload to encode, when a hook rendered it
594
602
  * @returns {string} DataURI
595
603
  */
@@ -635,11 +643,19 @@ class AssetGenerator extends Generator {
635
643
  encodedContent =
636
644
  /** @type {string} */
637
645
  (module.resourceResolveData.encodedContent);
638
- } else {
639
- encodedContent = encodeDataUri(
640
- /** @type {"base64" | false} */ (encoding),
641
- source
646
+ } else if (
647
+ renderedSource !== undefined &&
648
+ encoding === false &&
649
+ module.resourceResolveData &&
650
+ module.resourceResolveData.encoding === false
651
+ ) {
652
+ // A rendered payload of a `data:` URI written as text is written back
653
+ // as text: percent-encoding all of it outgrows what minifying saved.
654
+ encodedContent = encodeDataURIPayload(
655
+ /** @type {string} */ (source.source())
642
656
  );
657
+ } else {
658
+ encodedContent = encodeDataUri(encoding, source);
643
659
  }
644
660
 
645
661
  encodedSource = `data:${mimeType}${
@@ -652,7 +668,7 @@ class AssetGenerator extends Generator {
652
668
 
653
669
  /**
654
670
  * Generates generated code for this runtime module.
655
- * @param {NormalModule} module module for which the code should be generated
671
+ * @param {TModule} module module for which the code should be generated
656
672
  * @param {GenerateContext} generateContext context for generate
657
673
  * @returns {Source | null} generated code
658
674
  */
@@ -670,19 +686,15 @@ class AssetGenerator extends Generator {
670
686
 
671
687
  const needContent = type === JAVASCRIPT_TYPE || type === ASSET_URL_TYPE;
672
688
  const data = getData ? getData() : undefined;
689
+ const { buildInfo } = /** @type {BuiltAssetModule} */ (module);
673
690
 
674
- if (
675
- /** @type {AssetModuleBuildInfo} */
676
- (module.buildInfo).dataUrl &&
677
- needContent
678
- ) {
679
- // A payload bound for CSS or HTML is offered by their serializers, which
680
- // see the `url()` it ends up in; only the JavaScript one is ours.
691
+ if (buildInfo.dataUrl && needContent) {
692
+ // WHY: CSS and HTML serializers offer the payload in the `url()` or
693
+ // attribute it lands in, but the `asset-url` value is also what an
694
+ // analyzable `new URL` copies into JavaScript, which nothing re-reads.
681
695
  const encodedSource = this.generateDataUri(
682
696
  module,
683
- type === JAVASCRIPT_TYPE
684
- ? this._renderEmbedded(module, runtimeTemplate)
685
- : undefined
697
+ this._renderEmbedded(module, runtimeTemplate)
686
698
  );
687
699
  content =
688
700
  type === JAVASCRIPT_TYPE
@@ -703,8 +715,7 @@ class AssetGenerator extends Generator {
703
715
  data.set("contentHash", contentHash);
704
716
  }
705
717
 
706
- /** @type {AssetModuleBuildInfo} */
707
- (module.buildInfo).fullContentHash = fullContentHash;
718
+ buildInfo.fullContentHash = fullContentHash;
708
719
 
709
720
  const { originalFilename, filename, assetInfo } =
710
721
  AssetGenerator.getFilenameWithInfo(
@@ -748,12 +759,10 @@ class AssetGenerator extends Generator {
748
759
 
749
760
  // Due to code generation caching module.buildInfo.XXX can't used to store such information
750
761
  // It need to be stored in the code generation results instead, where it's cached too
751
- // TODO webpack 6 For back-compat reasons we also store in on module.buildInfo
752
- /** @type {AssetModuleBuildInfo} */
753
- (module.buildInfo).filename = filename;
762
+ // TODO in the next major release: remove the back-compat writes to module.buildInfo
763
+ buildInfo.filename = filename;
754
764
 
755
- /** @type {AssetModuleBuildInfo} */
756
- (module.buildInfo).assetInfo = newAssetInfo;
765
+ buildInfo.assetInfo = newAssetInfo;
757
766
 
758
767
  content = assetPath;
759
768
  }
@@ -784,7 +793,7 @@ class AssetGenerator extends Generator {
784
793
  /**
785
794
  * Generates fallback output for the provided error condition.
786
795
  * @param {Error} error the error
787
- * @param {NormalModule} module module for which the code should be generated
796
+ * @param {TModule} module module for which the code should be generated
788
797
  * @param {GenerateContext} generateContext context for generate
789
798
  * @returns {Source | null} generated code
790
799
  */
@@ -834,7 +843,7 @@ class AssetGenerator extends Generator {
834
843
 
835
844
  /**
836
845
  * Returns the source types available for this module.
837
- * @param {NormalModule} module fresh module
846
+ * @param {TModule} module fresh module
838
847
  * @returns {SourceTypes} available types (do not mutate)
839
848
  */
840
849
  getTypes(module) {
@@ -842,10 +851,7 @@ class AssetGenerator extends Generator {
842
851
 
843
852
  // One that emits nothing has no name to build a literal from, so expose its url.
844
853
  const emits =
845
- !(
846
- module.buildInfo &&
847
- /** @type {AssetModuleBuildInfo} */ (module.buildInfo).dataUrl
848
- ) && this.emit !== false;
854
+ !(module.buildInfo && module.buildInfo.dataUrl) && this.emit !== false;
849
855
 
850
856
  // WHY: only analyzable ESM output can drop a bare `new URL()` to an asset
851
857
  // url; without it every JS consumer needs the wrapper, so the per-connection
@@ -889,7 +895,8 @@ class AssetGenerator extends Generator {
889
895
  // keeps the runtime form and its wrapper. A prefetch or preload ref needs
890
896
  // none: its `<link>` resolves the href at chunk startup.
891
897
  isModule &&
892
- dependency instanceof URLDependency &&
898
+ dependency !== null &&
899
+ isDependencyKind(dependency, "url") &&
893
900
  !dependency.relative
894
901
  ) {
895
902
  hasUrlJs = true;
@@ -946,7 +953,7 @@ class AssetGenerator extends Generator {
946
953
 
947
954
  /**
948
955
  * Returns the estimated size for the requested source type.
949
- * @param {NormalModule} module the module
956
+ * @param {TModule} module the module
950
957
  * @param {SourceType=} type source type
951
958
  * @returns {number} estimate size of the module
952
959
  */
@@ -962,10 +969,7 @@ class AssetGenerator extends Generator {
962
969
  return originalSource.size();
963
970
  }
964
971
  default:
965
- if (
966
- module.buildInfo &&
967
- /** @type {AssetModuleBuildInfo} */ (module.buildInfo).dataUrl
968
- ) {
972
+ if (module.buildInfo && module.buildInfo.dataUrl) {
969
973
  const originalSource = module.originalSource();
970
974
 
971
975
  if (!originalSource) {
@@ -985,15 +989,13 @@ class AssetGenerator extends Generator {
985
989
  /**
986
990
  * Updates the hash with the data contributed by this instance.
987
991
  * @param {Hash} hash hash that will be modified
988
- * @param {UpdateHashContext} updateHashContext context for updating hash
992
+ * @param {UpdateHashContext<TModule>} updateHashContext context for updating hash
989
993
  */
990
994
  updateHash(hash, updateHashContext) {
991
995
  const { module } = updateHashContext;
996
+ const { buildInfo } = /** @type {BuiltAssetModule} */ (module);
992
997
 
993
- if (
994
- /** @type {AssetModuleBuildInfo} */
995
- (module.buildInfo).dataUrl
996
- ) {
998
+ if (buildInfo.dataUrl) {
997
999
  hash.update("data-url");
998
1000
  // What a tap varies on has to reach the key, or a changed option replays.
999
1001
  const { runtimeTemplate } = updateHashContext;
@@ -4,15 +4,16 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- const NormalModule = require("../NormalModule");
7
+ const NormalModule = require("../module/NormalModule");
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
 
10
10
  /** @import { AssetInfo } from "../Compilation" */
11
+ /** @import { BuildMeta } from "../module/Module" */
11
12
  /**
12
13
  * @import {
13
14
  * NormalModuleBuildInfo,
14
15
  * NormalModuleCreateData
15
- * } from "../NormalModule"
16
+ * } from "../module/NormalModule"
16
17
  */
17
18
 
18
19
  /**
@@ -29,6 +30,16 @@ const makeSerializable = require("../util/makeSerializable");
29
30
 
30
31
  /** @typedef {NormalModuleBuildInfo & KnownAssetModuleBuildInfo} AssetModuleBuildInfo */
31
32
 
33
+ /**
34
+ * An asset module before or after its build, typed with its build info.
35
+ * @typedef {NormalModule & { buildInfo?: AssetModuleBuildInfo }} AssetNormalModule
36
+ */
37
+
38
+ /**
39
+ * A built asset module, typed with its build info and build meta.
40
+ * @typedef {NormalModule & { buildInfo: AssetModuleBuildInfo, buildMeta: BuildMeta }} BuiltAssetModule
41
+ */
42
+
32
43
  /**
33
44
  * Module class for all `asset/*` modules. Asset-specific properties should live here instead of `NormalModule`.
34
45
  */
@@ -6,11 +6,10 @@
6
6
  "use strict";
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
- const HotUpdateChunk = require("../HotUpdateChunk");
10
9
  const {
11
10
  ASSET_URL_TYPE,
12
11
  JAVASCRIPT_TYPE
13
- } = require("../ModuleSourceTypeConstants");
12
+ } = require("../module/ModuleSourceTypeConstants");
14
13
  const {
15
14
  ASSET_MODULE_TYPE,
16
15
  ASSET_MODULE_TYPE_BYTES,
@@ -18,7 +17,7 @@ const {
18
17
  ASSET_MODULE_TYPE_RESOURCE,
19
18
  ASSET_MODULE_TYPE_SOURCE,
20
19
  ASSET_MODULE_TYPE_WEBMANIFEST
21
- } = require("../ModuleTypeConstants");
20
+ } = require("../module/ModuleTypeConstants");
22
21
  const { compareModulesByFullName } = require("../util/comparators");
23
22
  const createHash = require("../util/createHash");
24
23
  const { getUndoPath } = require("../util/identifier");
@@ -44,9 +43,8 @@ const { PUBLIC_PATH_AUTO } = require("../util/publicPathPlaceholder");
44
43
  * } from "../Compilation"
45
44
  */
46
45
  /** @import Compiler from "../Compiler" */
47
- /** @import { AssetModuleBuildInfo } from "./AssetModule" */
48
- /** @import { CodeGenerationResult } from "../Module" */
49
- /** @import NormalModule from "../NormalModule" */
46
+ /** @import { AssetModuleBuildInfo, BuiltAssetModule } from "./AssetModule" */
47
+ /** @import { CodeGenerationResult } from "../module/Module" */
50
48
 
51
49
  /**
52
50
  * Returns definition.
@@ -54,9 +52,7 @@ const { PUBLIC_PATH_AUTO } = require("../util/publicPathPlaceholder");
54
52
  * @returns {Schema} definition
55
53
  */
56
54
  const getSchema = (name) => {
57
- const { definitions } =
58
- /** @type {EXPECTED_ANY} */
59
- (require("../../schemas/WebpackOptions.json"));
55
+ const { definitions } = require("../../schemas/WebpackOptions.json");
60
56
 
61
57
  return {
62
58
  definitions,
@@ -348,7 +344,9 @@ class AssetModulesPlugin {
348
344
  let entryHash;
349
345
 
350
346
  if (errored) {
351
- const erroredModule = /** @type {NormalModule} */ (module);
347
+ const erroredModule = /** @type {BuiltAssetModule} */ (
348
+ module
349
+ );
352
350
  const AssetGenerator = getAssetGenerator.loaded();
353
351
  const [fullContentHash, contentHash] =
354
352
  AssetGenerator.getFullContentHash(
@@ -432,7 +430,7 @@ class AssetModulesPlugin {
432
430
  PLUGIN_NAME,
433
431
  (result, options) => {
434
432
  const { chunk, codeGenerationResults } = options;
435
- if (chunk instanceof HotUpdateChunk) return result;
433
+ if (chunk.isHotUpdate()) return result;
436
434
  const { chunkGraph, outputOptions } = compilation;
437
435
  const modules =
438
436
  chunkGraph.getOrderedChunkModulesIterableBySourceType(
@@ -457,7 +455,7 @@ class AssetModulesPlugin {
457
455
  // Icon URLs resolve relative to the manifest's own location.
458
456
  const undoPath = getUndoPath(
459
457
  filename,
460
- /** @type {string} */ (outputOptions.path),
458
+ outputOptions.path,
461
459
  false
462
460
  );
463
461
  const content = source
@@ -5,20 +5,23 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const Parser = require("../Parser");
8
+ const Parser = require("../module/Parser");
9
9
 
10
+ /** @import { BuiltAssetModule } from "./AssetModule" */
10
11
  /**
11
12
  * @import {
12
13
  * AssetParserDataUrlOptions,
13
14
  * AssetParserOptions
14
15
  * } from "../../declarations/WebpackOptions"
15
16
  */
16
- /** @import Module, { BuildMeta } from "../Module" */
17
- /** @import { AssetModuleBuildInfo } from "./AssetModule" */
18
- /** @import { ParserState, PreparsedAst } from "../Parser" */
17
+ /** @import Module from "../module/Module" */
18
+ /** @import { ParserState, PreparsedAst } from "../module/Parser" */
19
19
 
20
20
  /** @typedef {((source: string | Buffer, context: { filename: string, module: Module }) => boolean)} AssetParserDataUrlFunction */
21
21
 
22
+ /**
23
+ * @extends {Parser<BuiltAssetModule>}
24
+ */
22
25
  class AssetParser extends Parser {
23
26
  /**
24
27
  * Creates an instance of AssetParser.
@@ -41,13 +44,10 @@ class AssetParser extends Parser {
41
44
  throw new Error("AssetParser doesn't accept preparsed AST");
42
45
  }
43
46
 
44
- const buildInfo =
45
- /** @type {AssetModuleBuildInfo} */
46
- (state.module.buildInfo);
47
+ const { buildInfo, buildMeta } = /** @type {BuiltAssetModule} */ (
48
+ state.module
49
+ );
47
50
  buildInfo.strict = true;
48
- const buildMeta =
49
- /** @type {BuildMeta} */
50
- (state.module.buildMeta);
51
51
  buildMeta.exportsType = "default";
52
52
  buildMeta.defaultObject = false;
53
53
 
@@ -6,8 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const { RawSource } = require("webpack-sources");
9
- const ConcatenationScope = require("../ConcatenationScope");
10
- const Generator = require("../Generator");
9
+ const Generator = require("../module/Generator");
11
10
  const {
12
11
  ASSET_URL_TYPE,
13
12
  ASSET_URL_TYPES,
@@ -17,23 +16,32 @@ const {
17
16
  JAVASCRIPT_TYPE,
18
17
  JAVASCRIPT_TYPES,
19
18
  NO_TYPES
20
- } = require("../ModuleSourceTypeConstants");
21
- const RuntimeGlobals = require("../RuntimeGlobals");
19
+ } = require("../module/ModuleSourceTypeConstants");
20
+ const ConcatenationScope = require("../optimize/ConcatenationScope");
21
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
22
22
  const { languageOfFilename } = require("../util/dataURL");
23
23
 
24
+ /** @import { AssetNormalModule } from "./AssetModule" */
24
25
  /** @import { Source } from "webpack-sources" */
25
- /** @import { GenerateContext, UpdateHashContext } from "../Generator" */
26
+ /** @import { GenerateContext, UpdateHashContext } from "../module/Generator" */
26
27
  /** @import Hash from "../util/Hash" */
27
28
  /**
28
29
  * @import {
29
30
  * ConcatenationBailoutReasonContext,
30
31
  * SourceType,
31
32
  * SourceTypes
32
- * } from "../Module"
33
+ * } from "../module/Module"
33
34
  */
34
- /** @import ModuleGraph from "../ModuleGraph" */
35
- /** @import NormalModule from "../NormalModule" */
35
+ /** @import ModuleGraph from "../graph/ModuleGraph" */
36
36
 
37
+ /**
38
+ * The module type the JSDoc inherited from `Generator` names.
39
+ * @typedef {AssetNormalModule} TModule
40
+ */
41
+
42
+ /**
43
+ * @extends {Generator<TModule>}
44
+ */
37
45
  class AssetSourceGenerator extends Generator {
38
46
  /**
39
47
  * Creates an instance of AssetSourceGenerator.
@@ -48,7 +56,7 @@ class AssetSourceGenerator extends Generator {
48
56
 
49
57
  /**
50
58
  * Generates generated code for this runtime module.
51
- * @param {NormalModule} module module for which the code should be generated
59
+ * @param {TModule} module module for which the code should be generated
52
60
  * @param {GenerateContext} generateContext context for generate
53
61
  * @returns {Source | null} generated code
54
62
  */
@@ -111,7 +119,7 @@ class AssetSourceGenerator extends Generator {
111
119
  /**
112
120
  * Offer the file's text to `renderEmbeddedSource` before it is embedded in
113
121
  * JavaScript. Declines a file whose name names no language webpack knows.
114
- * @param {NormalModule} module the module holding the text
122
+ * @param {TModule} module the module holding the text
115
123
  * @param {string} text the file's text
116
124
  * @param {GenerateContext["runtimeTemplate"]} runtimeTemplate runtime template
117
125
  * @returns {string} the rendered text, or `text` when nothing rendered it
@@ -134,7 +142,7 @@ class AssetSourceGenerator extends Generator {
134
142
  /**
135
143
  * Updates the hash with the data contributed by this instance.
136
144
  * @param {Hash} hash hash that will be modified
137
- * @param {UpdateHashContext} updateHashContext context for updating hash
145
+ * @param {UpdateHashContext<TModule>} updateHashContext context for updating hash
138
146
  */
139
147
  updateHash(hash, updateHashContext) {
140
148
  const { module, runtimeTemplate } = updateHashContext;
@@ -151,7 +159,7 @@ class AssetSourceGenerator extends Generator {
151
159
  /**
152
160
  * Generates fallback output for the provided error condition.
153
161
  * @param {Error} error the error
154
- * @param {NormalModule} module module for which the code should be generated
162
+ * @param {TModule} module module for which the code should be generated
155
163
  * @param {GenerateContext} generateContext context for generate
156
164
  * @returns {Source | null} generated code
157
165
  */
@@ -173,7 +181,7 @@ class AssetSourceGenerator extends Generator {
173
181
 
174
182
  /**
175
183
  * Returns the reason this module cannot be concatenated, when one exists.
176
- * @param {NormalModule} module module for which the bailout reason should be determined
184
+ * @param {TModule} module module for which the bailout reason should be determined
177
185
  * @param {ConcatenationBailoutReasonContext} context context
178
186
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
179
187
  */
@@ -183,7 +191,7 @@ class AssetSourceGenerator extends Generator {
183
191
 
184
192
  /**
185
193
  * Returns the source types available for this module.
186
- * @param {NormalModule} module fresh module
194
+ * @param {TModule} module fresh module
187
195
  * @returns {SourceTypes} available types (do not mutate)
188
196
  */
189
197
  getTypes(module) {
@@ -223,7 +231,7 @@ class AssetSourceGenerator extends Generator {
223
231
 
224
232
  /**
225
233
  * Returns the estimated size for the requested source type.
226
- * @param {NormalModule} module the module
234
+ * @param {TModule} module the module
227
235
  * @param {SourceType=} type source type
228
236
  * @returns {number} estimate size of the module
229
237
  */
@@ -5,11 +5,14 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const Parser = require("../Parser");
8
+ const Parser = require("../module/Parser");
9
9
 
10
- /** @import { BuildInfo, BuildMeta } from "../Module" */
11
- /** @import { ParserState, PreparsedAst } from "../Parser" */
10
+ /** @import { BuiltAssetModule } from "./AssetModule" */
11
+ /** @import { ParserState, PreparsedAst } from "../module/Parser" */
12
12
 
13
+ /**
14
+ * @extends {Parser<BuiltAssetModule>}
15
+ */
13
16
  class AssetSourceParser extends Parser {
14
17
  /**
15
18
  * Parses the provided source and updates the parser state.
@@ -21,13 +24,12 @@ class AssetSourceParser extends Parser {
21
24
  if (typeof source === "object" && !Buffer.isBuffer(source)) {
22
25
  throw new Error("AssetSourceParser doesn't accept preparsed AST");
23
26
  }
24
- const { module } = state;
25
- /** @type {BuildInfo} */
26
- (module.buildInfo).strict = true;
27
- /** @type {BuildMeta} */
28
- (module.buildMeta).exportsType = "default";
29
- /** @type {BuildMeta} */
30
- (state.module.buildMeta).defaultObject = false;
27
+ const { buildInfo, buildMeta } = /** @type {BuiltAssetModule} */ (
28
+ state.module
29
+ );
30
+ buildInfo.strict = true;
31
+ buildMeta.exportsType = "default";
32
+ buildMeta.defaultObject = false;
31
33
 
32
34
  return state;
33
35
  }