@depup/webpack 5.111.1-depup.1 → 5.112.0-depup.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 (775) hide show
  1. package/README.md +4 -7
  2. package/changes.json +3 -15
  3. package/lib/Chunk.js +3 -966
  4. package/lib/Compilation.js +224 -106
  5. package/lib/Compiler.js +19 -19
  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 +8 -8
  25. package/lib/asset/AssetBytesParser.js +3 -3
  26. package/lib/asset/AssetGenerator.js +36 -22
  27. package/lib/asset/AssetModule.js +2 -2
  28. package/lib/asset/AssetModulesPlugin.js +6 -9
  29. package/lib/asset/AssetParser.js +3 -3
  30. package/lib/asset/AssetSourceGenerator.js +8 -8
  31. package/lib/asset/AssetSourceParser.js +3 -3
  32. package/lib/asset/RawDataUrlModule.js +17 -10
  33. package/lib/asset/WebManifestGenerator.js +7 -7
  34. package/lib/asset/WebManifestParser.js +5 -5
  35. package/lib/async-modules/AsyncModuleHelpers.js +6 -5
  36. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -4
  37. package/lib/async-modules/InferAsyncModulesPlugin.js +4 -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} +5 -5
  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 +8 -10
  47. package/lib/cache/ResolverCachePlugin.js +8 -4
  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} +217 -200
  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} +5 -158
  55. package/lib/config/defaults.js +144 -48
  56. package/lib/config/getClaimedAssetTypes.js +21 -13
  57. package/lib/config/normalization.js +18 -7
  58. package/lib/config/target.js +10 -0
  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 +36 -25
  76. package/lib/context/ContextModuleFactory.js +13 -10
  77. package/lib/context/ContextReplacementPlugin.js +3 -3
  78. package/lib/css/CssGenerator.js +38 -31
  79. package/lib/css/CssInjectStyleRuntimeModule.js +36 -30
  80. package/lib/css/CssLoadingRuntimeModule.js +77 -44
  81. package/lib/css/CssModule.js +27 -29
  82. package/lib/css/CssModulesPlugin.js +128 -44
  83. package/lib/css/CssParser.js +682 -291
  84. package/lib/css/CssServerStylesRuntimeModule.js +3 -3
  85. package/lib/css/cssMinify.js +110 -37
  86. package/lib/css/data.js +6985 -5125
  87. package/lib/css/syntax-parser.js +19873 -0
  88. package/lib/css/syntax-printer.js +6037 -0
  89. package/lib/css/syntax.js +37 -18686
  90. package/lib/debug/ProfilingPlugin.js +52 -19
  91. package/lib/{DefinePlugin.js → define/DefinePlugin.js} +407 -41
  92. package/lib/{DotenvPlugin.js → define/DotenvPlugin.js} +9 -9
  93. package/lib/{EnvironmentPlugin.js → define/EnvironmentPlugin.js} +2 -2
  94. package/lib/deno/DenoTargetPlugin.js +1 -1
  95. package/lib/dependencies/ConstDependency.js +3 -120
  96. package/lib/dependencies/ContextElementDependency.js +5 -172
  97. package/lib/dependencies/NullDependency.js +3 -37
  98. package/lib/dependencies/{AMDDefineDependency.js → amd/AMDDefineDependency.js} +12 -11
  99. package/lib/dependencies/{AMDDefineDependencyParserPlugin.js → amd/AMDDefineDependencyParserPlugin.js} +10 -10
  100. package/lib/dependencies/{AMDPlugin.js → amd/AMDPlugin.js} +11 -11
  101. package/lib/dependencies/{AMDRequireArrayDependency.js → amd/AMDRequireArrayDependency.js} +15 -13
  102. package/lib/dependencies/{AMDRequireContextDependency.js → amd/AMDRequireContextDependency.js} +11 -10
  103. package/lib/dependencies/{AMDRequireDependenciesBlock.js → amd/AMDRequireDependenciesBlock.js} +7 -6
  104. package/lib/dependencies/{AMDRequireDependenciesBlockParserPlugin.js → amd/AMDRequireDependenciesBlockParserPlugin.js} +10 -10
  105. package/lib/dependencies/{AMDRequireDependency.js → amd/AMDRequireDependency.js} +13 -12
  106. package/lib/dependencies/{AMDRequireItemDependency.js → amd/AMDRequireItemDependency.js} +8 -7
  107. package/lib/dependencies/{AMDRuntimeModules.js → amd/AMDRuntimeModules.js} +3 -3
  108. package/lib/dependencies/{LocalModule.js → amd/LocalModule.js} +8 -4
  109. package/lib/dependencies/{LocalModuleDependency.js → amd/LocalModuleDependency.js} +17 -10
  110. package/lib/dependencies/{LocalModulesHelpers.js → amd/LocalModulesHelpers.js} +1 -1
  111. package/lib/dependencies/{RequireJsStuffPlugin.js → amd/RequireJsStuffPlugin.js} +9 -9
  112. package/lib/dependencies/{UnsupportedDependency.js → amd/UnsupportedDependency.js} +11 -10
  113. package/lib/dependencies/{CommonJsDependencyHelpers.js → commonjs/CommonJsDependencyHelpers.js} +8 -9
  114. package/lib/dependencies/{CommonJsExportRequireDependency.js → commonjs/CommonJsExportRequireDependency.js} +166 -33
  115. package/lib/dependencies/{CommonJsExportsDependency.js → commonjs/CommonJsExportsDependency.js} +15 -14
  116. package/lib/dependencies/{CommonJsExportsParserPlugin.js → commonjs/CommonJsExportsParserPlugin.js} +138 -61
  117. package/lib/dependencies/{CommonJsFullRequireDependency.js → commonjs/CommonJsFullRequireDependency.js} +32 -24
  118. package/lib/dependencies/{CommonJsImportsParserPlugin.js → commonjs/CommonJsImportsParserPlugin.js} +35 -30
  119. package/lib/dependencies/{CommonJsObjectExportDependency.js → commonjs/CommonJsObjectExportDependency.js} +13 -12
  120. package/lib/dependencies/{CommonJsPlugin.js → commonjs/CommonJsPlugin.js} +47 -35
  121. package/lib/dependencies/{CommonJsRequireContextDependency.js → commonjs/CommonJsRequireContextDependency.js} +15 -14
  122. package/lib/dependencies/{CommonJsRequireDependency.js → commonjs/CommonJsRequireDependency.js} +33 -25
  123. package/lib/dependencies/{CommonJsSelfReferenceDependency.js → commonjs/CommonJsSelfReferenceDependency.js} +17 -16
  124. package/lib/dependencies/{ModuleDecoratorDependency.js → commonjs/ModuleDecoratorDependency.js} +16 -15
  125. package/lib/dependencies/{RequireEnsureDependenciesBlock.js → commonjs/RequireEnsureDependenciesBlock.js} +8 -7
  126. package/lib/dependencies/{RequireEnsureDependenciesBlockParserPlugin.js → commonjs/RequireEnsureDependenciesBlockParserPlugin.js} +5 -5
  127. package/lib/dependencies/{RequireEnsureDependency.js → commonjs/RequireEnsureDependency.js} +13 -12
  128. package/lib/dependencies/{RequireEnsureItemDependency.js → commonjs/RequireEnsureItemDependency.js} +7 -6
  129. package/lib/dependencies/{RequireEnsurePlugin.js → commonjs/RequireEnsurePlugin.js} +8 -8
  130. package/lib/dependencies/{RequireHeaderDependency.js → commonjs/RequireHeaderDependency.js} +14 -13
  131. package/lib/dependencies/{RequireIncludeDependency.js → commonjs/RequireIncludeDependency.js} +13 -12
  132. package/lib/dependencies/{RequireIncludeDependencyParserPlugin.js → commonjs/RequireIncludeDependencyParserPlugin.js} +3 -27
  133. package/lib/dependencies/{RequireIncludePlugin.js → commonjs/RequireIncludePlugin.js} +4 -4
  134. package/lib/dependencies/{RequireResolveContextDependency.js → commonjs/RequireResolveContextDependency.js} +11 -10
  135. package/lib/dependencies/{RequireResolveDependency.js → commonjs/RequireResolveDependency.js} +12 -11
  136. package/lib/dependencies/{RequireResolveHeaderDependency.js → commonjs/RequireResolveHeaderDependency.js} +13 -12
  137. package/lib/dependencies/commonjs/TopLevelThisParserPlugin.js +59 -0
  138. package/lib/dependencies/{ContextDependency.js → context/ContextDependency.js} +15 -14
  139. package/lib/dependencies/{ContextDependencyHelpers.js → context/ContextDependencyHelpers.js} +31 -9
  140. package/lib/dependencies/{ContextDependencyTemplateAsId.js → context/ContextDependencyTemplateAsId.js} +3 -3
  141. package/lib/dependencies/{ContextDependencyTemplateAsRequireCall.js → context/ContextDependencyTemplateAsRequireCall.js} +3 -3
  142. package/lib/dependencies/context/ContextElementDependency.js +198 -0
  143. package/lib/dependencies/{ImportMetaContextDependency.js → context/ImportMetaContextDependency.js} +7 -6
  144. package/lib/dependencies/{ImportMetaContextDependencyParserPlugin.js → context/ImportMetaContextDependencyParserPlugin.js} +9 -9
  145. package/lib/dependencies/{ImportMetaContextPlugin.js → context/ImportMetaContextPlugin.js} +5 -5
  146. package/lib/dependencies/{ImportMetaGlobDependency.js → context/ImportMetaGlobDependency.js} +7 -6
  147. package/lib/dependencies/{ImportMetaGlobDependencyParserPlugin.js → context/ImportMetaGlobDependencyParserPlugin.js} +4 -4
  148. package/lib/dependencies/{ImportMetaGlobHelpers.js → context/ImportMetaGlobHelpers.js} +9 -9
  149. package/lib/dependencies/{RequireContextDependency.js → context/RequireContextDependency.js} +7 -6
  150. package/lib/dependencies/{RequireContextDependencyParserPlugin.js → context/RequireContextDependencyParserPlugin.js} +2 -2
  151. package/lib/dependencies/{RequireContextPlugin.js → context/RequireContextPlugin.js} +5 -5
  152. package/lib/dependencies/{CachedConstDependency.js → core/CachedConstDependency.js} +12 -11
  153. package/lib/dependencies/core/ConstDependency.js +131 -0
  154. package/lib/dependencies/{ImportPhase.js → core/ImportPhase.js} +5 -4
  155. package/lib/dependencies/{ModuleDependency.js → core/ModuleDependency.js} +10 -7
  156. package/lib/dependencies/{ModuleDependencyTemplateAsId.js → core/ModuleDependencyTemplateAsId.js} +3 -3
  157. package/lib/dependencies/{ModuleDependencyTemplateAsRequireId.js → core/ModuleDependencyTemplateAsRequireId.js} +2 -2
  158. package/lib/dependencies/{ModuleInitFragmentDependency.js → core/ModuleInitFragmentDependency.js} +10 -9
  159. package/lib/dependencies/core/NullDependency.js +44 -0
  160. package/lib/dependencies/{RuntimeRequirementsDependency.js → core/RuntimeRequirementsDependency.js} +10 -9
  161. package/lib/dependencies/{StaticExportsDependency.js → core/StaticExportsDependency.js} +15 -8
  162. package/lib/dependencies/{CssIcssExportDependency.js → css/CssIcssExportDependency.js} +369 -92
  163. package/lib/dependencies/{CssIcssImportDependency.js → css/CssIcssImportDependency.js} +23 -16
  164. package/lib/dependencies/{CssIcssSymbolDependency.js → css/CssIcssSymbolDependency.js} +13 -12
  165. package/lib/dependencies/{CssImportDependency.js → css/CssImportDependency.js} +15 -11
  166. package/lib/dependencies/{CssUrlDependency.js → css/CssUrlDependency.js} +23 -16
  167. package/lib/dependencies/{CreateRequireParserPlugin.js → esm/CreateRequireParserPlugin.js} +9 -9
  168. package/lib/dependencies/{HarmonyAcceptDependency.js → esm/ESMAcceptDependency.js} +41 -38
  169. package/lib/dependencies/esm/ESMAcceptImportDependency.js +39 -0
  170. package/lib/dependencies/{HarmonyCompatibilityDependency.js → esm/ESMCompatibilityDependency.js} +29 -21
  171. package/lib/dependencies/{HarmonyDetectionParserPlugin.js → esm/ESMDetectionParserPlugin.js} +19 -17
  172. package/lib/dependencies/{HarmonyEvaluatedImportSpecifierDependency.js → esm/ESMEvaluatedImportSpecifierDependency.js} +33 -30
  173. package/lib/dependencies/{HarmonyExportDependencyParserPlugin.js → esm/ESMExportDependencyParserPlugin.js} +60 -89
  174. package/lib/dependencies/{HarmonyExportExpressionDependency.js → esm/ESMExportExpressionDependency.js} +80 -45
  175. package/lib/dependencies/{HarmonyExportHeaderDependency.js → esm/ESMExportHeaderDependency.js} +17 -15
  176. package/lib/dependencies/esm/ESMExportImportedSideEffectDependency.js +37 -0
  177. package/lib/dependencies/{HarmonyExportImportedSpecifierDependency.js → esm/ESMExportImportedSpecifierDependency.js} +133 -118
  178. package/lib/dependencies/{HarmonyExportInitFragment.js → esm/ESMExportInitFragment.js} +48 -30
  179. package/lib/dependencies/{HarmonyExportSpecifierDependency.js → esm/ESMExportSpecifierDependency.js} +60 -36
  180. package/lib/dependencies/{HarmonyExports.js → esm/ESMExports.js} +4 -4
  181. package/lib/dependencies/{HarmonyImportBareSideEffectDependency.js → esm/ESMImportBareSideEffectDependency.js} +21 -13
  182. package/lib/dependencies/{HarmonyImportDependency.js → esm/ESMImportDependency.js} +74 -71
  183. package/lib/dependencies/{HarmonyImportDependencyParserPlugin.js → esm/ESMImportDependencyParserPlugin.js} +99 -84
  184. package/lib/dependencies/{HarmonyImportGuard.js → esm/ESMImportGuard.js} +26 -29
  185. package/lib/dependencies/{HarmonyImportSideEffectDependency.js → esm/ESMImportSideEffectDependency.js} +83 -39
  186. package/lib/dependencies/{HarmonyImportSpecifierDependency.js → esm/ESMImportSpecifierDependency.js} +94 -59
  187. package/lib/dependencies/esm/ESMModulesPlugin.js +207 -0
  188. package/lib/dependencies/{HarmonyTopLevelThisParserPlugin.js → esm/ESMTopLevelThisParserPlugin.js} +7 -7
  189. package/lib/dependencies/{TopLevelAwaitDependency.js → esm/TopLevelAwaitDependency.js} +12 -11
  190. package/lib/dependencies/{DynamicExports.js → helpers/DynamicExports.js} +2 -2
  191. package/lib/{util → dependencies/helpers}/chainedImports.js +5 -5
  192. package/lib/dependencies/{processExportInfo.js → helpers/processExportInfo.js} +4 -4
  193. package/lib/{util → dependencies/helpers}/traverseDestructuringAssignmentProperties.js +1 -1
  194. package/lib/dependencies/{ImportMetaHotAcceptDependency.js → hmr/ImportMetaHotAcceptDependency.js} +8 -7
  195. package/lib/dependencies/{ImportMetaHotDeclineDependency.js → hmr/ImportMetaHotDeclineDependency.js} +8 -7
  196. package/lib/dependencies/{ModuleHotAcceptDependency.js → hmr/ModuleHotAcceptDependency.js} +8 -7
  197. package/lib/dependencies/{ModuleHotDeclineDependency.js → hmr/ModuleHotDeclineDependency.js} +8 -7
  198. package/lib/dependencies/{HtmlEntryDependency.js → html/HtmlEntryDependency.js} +51 -141
  199. package/lib/dependencies/{HtmlInlineHtmlDependency.js → html/HtmlInlineHtmlDependency.js} +13 -12
  200. package/lib/dependencies/{HtmlInlineScriptDependency.js → html/HtmlInlineScriptDependency.js} +69 -19
  201. package/lib/dependencies/{HtmlInlineStyleDependency.js → html/HtmlInlineStyleDependency.js} +50 -15
  202. package/lib/dependencies/{HtmlSourceDependency.js → html/HtmlSourceDependency.js} +23 -16
  203. package/lib/dependencies/{ImportContextDependency.js → import/ImportContextDependency.js} +24 -10
  204. package/lib/dependencies/{ImportDependency.js → import/ImportDependency.js} +26 -18
  205. package/lib/dependencies/{ImportEagerDependency.js → import/ImportEagerDependency.js} +18 -10
  206. package/lib/dependencies/{ImportParserPlugin.js → import/ImportParserPlugin.js} +20 -20
  207. package/lib/dependencies/{ImportPlugin.js → import/ImportPlugin.js} +4 -4
  208. package/lib/dependencies/{ImportWeakDependency.js → import/ImportWeakDependency.js} +18 -10
  209. package/lib/dependencies/{importOptionsCheck.js → import/importOptionsCheck.js} +2 -2
  210. package/lib/dependencies/{BuildTimeConstDependency.js → import-meta/BuildTimeConstDependency.js} +12 -11
  211. package/lib/dependencies/{ImportMetaMainDependency.js → import-meta/ImportMetaMainDependency.js} +12 -11
  212. package/lib/dependencies/{ImportMetaPlugin.js → import-meta/ImportMetaPlugin.js} +119 -98
  213. package/lib/dependencies/{SystemPlugin.js → system/SystemPlugin.js} +11 -38
  214. package/lib/dependencies/{SystemRuntimeModule.js → system/SystemRuntimeModule.js} +3 -3
  215. package/lib/dependencies/{ImportMetaResolveDependency.js → url/ImportMetaResolveDependency.js} +9 -8
  216. package/lib/dependencies/{URLContextDependency.js → url/URLContextDependency.js} +11 -10
  217. package/lib/dependencies/{URLDependency.js → url/URLDependency.js} +28 -20
  218. package/lib/{url → dependencies/url}/URLParserPlugin.js +16 -18
  219. package/lib/dependencies/{URLPlugin.js → url/URLPlugin.js} +6 -7
  220. package/lib/dependencies/{WebAssemblyExportImportedDependency.js → wasm/WebAssemblyExportImportedDependency.js} +18 -11
  221. package/lib/dependencies/{WebAssemblyImportDependency.js → wasm/WebAssemblyImportDependency.js} +19 -12
  222. package/lib/dependencies/{CreateScriptUrlDependency.js → worker/CreateScriptUrlDependency.js} +12 -11
  223. package/lib/dependencies/{WorkerAndWorkletPlugin.js → worker/WorkerAndWorkletPlugin.js} +31 -33
  224. package/lib/dependencies/{WorkerDependency.js → worker/WorkerDependency.js} +22 -15
  225. package/lib/dependencies/{WorkletDependency.js → worker/WorkletDependency.js} +19 -18
  226. package/lib/{EvalDevToolModulePlugin.js → devtool/EvalDevToolModulePlugin.js} +20 -6
  227. package/lib/{EvalSourceMapDevToolPlugin.js → devtool/EvalSourceMapDevToolPlugin.js} +32 -24
  228. package/lib/devtool/ModuleFilenameHelpers.js +413 -0
  229. package/lib/{SourceMapDevToolModuleOptionsPlugin.js → devtool/SourceMapDevToolModuleOptionsPlugin.js} +10 -3
  230. package/lib/{SourceMapDevToolPlugin.js → devtool/SourceMapDevToolPlugin.js} +154 -26
  231. package/lib/{util → devtool}/generateDebugId.js +1 -1
  232. package/lib/{IgnoreWarningsPlugin.js → diagnostics/IgnoreWarningsPlugin.js} +2 -2
  233. package/lib/{NoEmitOnErrorsPlugin.js → diagnostics/NoEmitOnErrorsPlugin.js} +1 -1
  234. package/lib/diagnostics/WarnCaseSensitiveModulesPlugin.js +64 -0
  235. package/lib/{WarnDeprecatedOptionPlugin.js → diagnostics/WarnDeprecatedOptionPlugin.js} +2 -22
  236. package/lib/diagnostics/WarnNoModeSetPlugin.js +27 -0
  237. package/lib/dll/DelegatedModule.js +20 -18
  238. package/lib/dll/DelegatedModuleFactoryPlugin.js +2 -2
  239. package/lib/dll/DelegatedPlugin.js +1 -1
  240. package/lib/{dependencies → dll}/DelegatedSourceDependency.js +5 -4
  241. package/lib/{dependencies → dll}/DllEntryDependency.js +6 -5
  242. package/lib/dll/DllEntryPlugin.js +3 -3
  243. package/lib/dll/DllModule.js +11 -9
  244. package/lib/dll/DllModuleFactory.js +3 -3
  245. package/lib/dll/DllPlugin.js +18 -6
  246. package/lib/dll/DllReferencePlugin.js +102 -26
  247. package/lib/dll/LibManifestPlugin.js +9 -7
  248. package/lib/electron/ElectronTargetPlugin.js +2 -2
  249. package/lib/{DynamicEntryPlugin.js → entry/DynamicEntryPlugin.js} +3 -3
  250. package/lib/{dependencies → entry}/EntryDependency.js +11 -2
  251. package/lib/{EntryOptionPlugin.js → entry/EntryOptionPlugin.js} +6 -6
  252. package/lib/entry/EntryPlugin.js +75 -0
  253. package/lib/{performance → errors}/AssetsOverSizeLimitWarning.js +2 -2
  254. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  255. package/lib/errors/BuildCycleError.js +1 -1
  256. package/lib/{WarnCaseSensitiveModulesPlugin.js → errors/CaseSensitiveModulesWarning.js} +4 -56
  257. package/lib/errors/ChunkRenderError.js +1 -1
  258. package/lib/errors/CodeGenerationError.js +1 -1
  259. package/lib/errors/CommentCompilationWarning.js +1 -1
  260. package/lib/errors/ConflictingEntryExportsWarning.js +38 -0
  261. package/lib/{dependencies → errors}/CriticalDependencyWarning.js +4 -3
  262. package/lib/errors/DeprecatedOptionWarning.js +30 -0
  263. package/lib/errors/DllManifestError.js +26 -0
  264. package/lib/{performance → errors}/DuplicatePackagesWarning.js +6 -6
  265. package/lib/{dependencies/HarmonyLinkingError.js → errors/ESMLinkingError.js} +4 -4
  266. package/lib/{performance → errors}/EntrypointsOverSizeLimitWarning.js +2 -2
  267. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  268. package/lib/{ErrorHelpers.js → errors/ErrorHelpers.js} +7 -5
  269. package/lib/errors/ExternalStarReexportError.js +2 -2
  270. package/lib/{library → errors}/FalseIIFEUmdWarning.js +1 -1
  271. package/lib/errors/HookWebpackError.js +4 -4
  272. package/lib/errors/IgnoreErrorModuleFactory.js +3 -3
  273. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  274. package/lib/{optimize → errors}/MinMaxSizeWarning.js +1 -1
  275. package/lib/errors/ModuleBuildError.js +1 -1
  276. package/lib/errors/ModuleDependencyError.js +2 -2
  277. package/lib/errors/ModuleDependencyWarning.js +2 -2
  278. package/lib/errors/ModuleError.js +1 -1
  279. package/lib/errors/ModuleHashingError.js +1 -1
  280. package/lib/errors/ModuleNotFoundError.js +3 -3
  281. package/lib/errors/ModuleParseError.js +1 -1
  282. package/lib/errors/ModuleRestoreError.js +1 -1
  283. package/lib/errors/ModuleStoreError.js +1 -1
  284. package/lib/errors/ModuleWarning.js +1 -1
  285. package/lib/{performance → errors}/NoAsyncChunksWarning.js +1 -1
  286. package/lib/{WarnNoModeSetPlugin.js → errors/NoModeWarning.js} +2 -19
  287. package/lib/errors/NodeStuffInWebError.js +7 -2
  288. package/lib/errors/PathVariableError.js +31 -0
  289. package/lib/errors/RequireIncludeDeprecationWarning.js +40 -0
  290. package/lib/{performance → errors}/RuntimeInLargeChunkWarning.js +1 -1
  291. package/lib/errors/RuntimeModuleGenerationError.js +51 -0
  292. package/lib/errors/SSRManifestAutoPublicPathWarning.js +24 -0
  293. package/lib/errors/SystemImportDeprecationWarning.js +43 -0
  294. package/lib/errors/UnmergeableEntryExportsError.js +34 -0
  295. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  296. package/lib/{wasm-sync → errors}/UnsupportedWebAssemblyFeatureError.js +1 -1
  297. package/lib/{wasm-sync → errors}/WebAssemblyInInitialChunkError.js +7 -5
  298. package/lib/errors/WebpackError.js +12 -3
  299. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -2
  300. package/lib/esm/ModuleChunkFormatPlugin.js +19 -19
  301. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -3
  302. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +8 -8
  303. package/lib/{ExternalModule.js → externals/ExternalModule.js} +79 -55
  304. package/lib/{ExternalModuleFactoryPlugin.js → externals/ExternalModuleFactoryPlugin.js} +41 -39
  305. package/lib/externals/ExternalsPlugin.js +99 -0
  306. package/lib/fs/FileSystemInfo.js +4642 -0
  307. package/lib/{util → fs}/fs.js +22 -9
  308. package/lib/{AsyncDependenciesBlock.js → graph/AsyncDependenciesBlock.js} +27 -4
  309. package/lib/graph/Chunk.js +985 -0
  310. package/lib/{ChunkGraph.js → graph/ChunkGraph.js} +187 -80
  311. package/lib/{ChunkGroup.js → graph/ChunkGroup.js} +11 -3
  312. package/lib/{DependenciesBlock.js → graph/DependenciesBlock.js} +16 -4
  313. package/lib/graph/Dependency.js +628 -0
  314. package/lib/graph/Entrypoint.js +136 -0
  315. package/lib/{ExportsInfo.js → graph/ExportsInfo.js} +130 -82
  316. package/lib/{HotUpdateChunk.js → graph/HotUpdateChunk.js} +8 -0
  317. package/lib/{ModuleGraph.js → graph/ModuleGraph.js} +30 -30
  318. package/lib/{ModuleGraphConnection.js → graph/ModuleGraphConnection.js} +2 -2
  319. package/lib/{buildChunkGraph.js → graph/buildChunkGraph.js} +152 -57
  320. package/lib/{util → graph}/findGraphRoots.js +14 -8
  321. package/lib/graph/isDependencyKind.js +23 -0
  322. package/lib/hmr/HotModuleReplacement.runtime.js +2 -2
  323. package/lib/{HotModuleReplacementPlugin.js → hmr/HotModuleReplacementPlugin.js} +47 -47
  324. package/lib/hmr/HotModuleReplacementRuntimeModule.js +3 -3
  325. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +10 -8
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +2 -2
  327. package/lib/hmr/LazyCompilationPlugin.js +31 -21
  328. package/lib/html/HtmlGenerator.js +107 -43
  329. package/lib/html/HtmlModule.js +6 -2
  330. package/lib/html/HtmlModulesPlugin.js +172 -76
  331. package/lib/html/HtmlParser.js +503 -153
  332. package/lib/html/builtinEmbeddedRenderer.js +60 -13
  333. package/lib/html/data.js +2 -1
  334. package/lib/html/htmlMinify.js +111 -41
  335. package/lib/html/syntax-parser.js +15796 -0
  336. package/lib/html/syntax-printer.js +1034 -0
  337. package/lib/html/syntax.js +37 -13952
  338. package/lib/html/xmlMinify.js +67 -0
  339. package/lib/ids/ChunkModuleIdRangePlugin.js +2 -2
  340. package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
  341. package/lib/ids/HashedModuleIdsPlugin.js +31 -4
  342. package/lib/ids/IdHelpers.js +4 -4
  343. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  344. package/lib/ids/OccurrenceChunkIdsPlugin.js +6 -5
  345. package/lib/ids/OccurrenceModuleIdsPlugin.js +6 -5
  346. package/lib/{RecordIdsPlugin.js → ids/RecordIdsPlugin.js} +5 -5
  347. package/lib/ids/SyncModuleIdsPlugin.js +3 -3
  348. package/lib/{util → ids}/numberHash.js +1 -1
  349. package/lib/index.js +303 -97
  350. package/lib/{APIPlugin.js → javascript/APIPlugin.js} +25 -25
  351. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -5
  352. package/lib/javascript/BasicEvaluatedExpression.js +4 -4
  353. package/lib/javascript/ChunkHelpers.js +64 -4
  354. package/lib/javascript/CommonJsChunkFormatPlugin.js +4 -7
  355. package/lib/{CompatibilityPlugin.js → javascript/CompatibilityPlugin.js} +7 -7
  356. package/lib/{ConstPlugin.js → javascript/ConstPlugin.js} +74 -7
  357. package/lib/{ExportsInfoApiPlugin.js → javascript/ExportsInfoApiPlugin.js} +5 -5
  358. package/lib/{dependencies → javascript}/ExportsInfoDependency.js +10 -9
  359. package/lib/javascript/JavascriptGenerator.js +17 -17
  360. package/lib/{JavascriptMetaInfoPlugin.js → javascript/JavascriptMetaInfoPlugin.js} +7 -7
  361. package/lib/javascript/JavascriptModule.js +4 -3
  362. package/lib/javascript/JavascriptModulesPlugin.js +440 -211
  363. package/lib/javascript/JavascriptParser.js +220 -134
  364. package/lib/javascript/JavascriptParserHelpers.js +1 -1
  365. package/lib/javascript/MergedEntryExports.js +196 -0
  366. package/lib/javascript/ScopeAnalyzer.js +3840 -5
  367. package/lib/javascript/StartupHelpers.js +6 -6
  368. package/lib/{UseStrictPlugin.js → javascript/UseStrictPlugin.js} +12 -15
  369. package/lib/{dependencies → javascript}/WebpackIsIncludedDependency.js +10 -9
  370. package/lib/{WebpackIsIncludedPlugin.js → javascript/WebpackIsIncludedPlugin.js} +8 -8
  371. package/lib/javascript/data.js +533 -122
  372. package/lib/javascript/jsMinify.js +272 -0
  373. package/lib/javascript/regexp.js +67 -32
  374. package/lib/javascript/syntax-parser.js +18561 -0
  375. package/lib/javascript/syntax-printer-data.js +933 -0
  376. package/lib/javascript/syntax-printer.js +47106 -0
  377. package/lib/javascript/syntax.js +20 -11274
  378. package/lib/json/JsonData.js +1 -1
  379. package/lib/{dependencies → json}/JsonExportsDependency.js +8 -7
  380. package/lib/json/JsonGenerator.js +10 -10
  381. package/lib/json/JsonModule.js +2 -2
  382. package/lib/json/JsonModulesPlugin.js +1 -1
  383. package/lib/json/JsonParser.js +5 -5
  384. package/lib/json/jsonMinify.js +69 -0
  385. package/lib/library/AbstractLibraryPlugin.js +28 -15
  386. package/lib/library/AmdLibraryPlugin.js +4 -4
  387. package/lib/library/AssignLibraryPlugin.js +27 -11
  388. package/lib/library/EnableLibraryPlugin.js +1 -1
  389. package/lib/library/ExportPropertyLibraryPlugin.js +4 -4
  390. package/lib/library/JsonpLibraryPlugin.js +1 -1
  391. package/lib/library/LibraryTemplatePlugin.js +53 -0
  392. package/lib/library/ModuleLibraryPlugin.js +160 -166
  393. package/lib/library/SystemLibraryPlugin.js +6 -8
  394. package/lib/library/UmdLibraryPlugin.js +3 -4
  395. package/lib/{dependencies → loaders}/LoaderDependency.js +3 -3
  396. package/lib/{dependencies → loaders}/LoaderImportDependency.js +9 -3
  397. package/lib/{LoaderOptionsPlugin.js → loaders/LoaderOptionsPlugin.js} +30 -12
  398. package/lib/{dependencies → loaders}/LoaderPlugin.js +2 -2
  399. package/lib/loaders/LoaderRunner.js +31 -21
  400. package/lib/{LoaderTargetPlugin.js → loaders/LoaderTargetPlugin.js} +2 -2
  401. package/lib/logging/Logger.js +7 -9
  402. package/lib/logging/ProgressPlugin.js +957 -0
  403. package/lib/{CodeGenerationResults.js → module/CodeGenerationResults.js} +7 -7
  404. package/lib/{Generator.js → module/Generator.js} +16 -14
  405. package/lib/{Module.js → module/Module.js} +119 -51
  406. package/lib/{ModuleFactory.js → module/ModuleFactory.js} +3 -3
  407. package/lib/module/NormalModule.js +2348 -0
  408. package/lib/{NormalModuleFactory.js → module/NormalModuleFactory.js} +53 -54
  409. package/lib/module/NullFactory.js +29 -0
  410. package/lib/{Parser.js → module/Parser.js} +3 -3
  411. package/lib/module/RawModule.js +208 -0
  412. package/lib/{SelfModuleFactory.js → module/SelfModuleFactory.js} +1 -1
  413. package/lib/{util → module}/extractSourceMap.js +2 -2
  414. package/lib/{util → module}/findCaseMismatch.js +2 -2
  415. package/lib/node/CommonJsChunkLoadingPlugin.js +3 -3
  416. package/lib/{dependencies → node}/ExternalModuleDependency.js +8 -7
  417. package/lib/{dependencies → node}/ExternalModuleInitFragment.js +6 -5
  418. package/lib/{dependencies → node}/ExternalModuleInitFragmentDependency.js +14 -9
  419. package/lib/node/NodeEnvironmentPlugin.js +11 -1
  420. package/lib/{NodeStuffPlugin.js → node/NodeStuffPlugin.js} +17 -17
  421. package/lib/node/NodeTargetPlugin.js +1 -1
  422. package/lib/node/NodeWatchFileSystem.js +58 -6
  423. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +7 -7
  424. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +9 -7
  425. package/lib/node/ReadFileCompileWasmPlugin.js +7 -5
  426. package/lib/node/RequireChunkLoadingRuntimeModule.js +7 -7
  427. package/lib/node/nodeConsole.js +2 -4
  428. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  429. package/lib/optimize/AggressiveSplittingPlugin.js +12 -8
  430. package/lib/{CircularModulesPlugin.js → optimize/CircularModulesPlugin.js} +13 -13
  431. package/lib/optimize/ConcatenatedModule.js +229 -214
  432. package/lib/{ConcatenationScope.js → optimize/ConcatenationScope.js} +39 -6
  433. package/lib/optimize/ConstExportsPlugin.js +7 -7
  434. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  435. package/lib/{FlagAllModulesAsUsedPlugin.js → optimize/FlagAllModulesAsUsedPlugin.js} +3 -3
  436. package/lib/{FlagDependencyExportsPlugin.js → optimize/FlagDependencyExportsPlugin.js} +17 -17
  437. package/lib/{FlagDependencyUsagePlugin.js → optimize/FlagDependencyUsagePlugin.js} +17 -17
  438. package/lib/{FlagEntryExportAsUsedPlugin.js → optimize/FlagEntryExportAsUsedPlugin.js} +2 -2
  439. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -2
  440. package/lib/optimize/InlineExports.js +11 -3
  441. package/lib/optimize/InnerGraph.js +5 -13
  442. package/lib/optimize/InnerGraphPlugin.js +10 -10
  443. package/lib/optimize/LazyBarrels.js +584 -0
  444. package/lib/{util → optimize}/LazyBucketSortedSet.js +2 -2
  445. package/lib/optimize/LimitChunkCountPlugin.js +16 -7
  446. package/lib/optimize/MangleExportsPlugin.js +5 -5
  447. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -6
  448. package/lib/optimize/MinChunkSizePlugin.js +9 -6
  449. package/lib/optimize/ModuleConcatenationPlugin.js +20 -12
  450. package/lib/{dependencies → optimize}/PureExpressionDependency.js +11 -10
  451. package/lib/optimize/RealContentHashPlugin.js +16 -7
  452. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  453. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  454. package/lib/optimize/SideEffectsFlagPlugin.js +18 -18
  455. package/lib/optimize/SplitChunksPlugin.js +713 -155
  456. package/lib/{util → optimize}/TupleQueue.js +9 -9
  457. package/lib/optimize/chunkSetIntersections.js +437 -0
  458. package/lib/{util → optimize}/deterministicGrouping.js +17 -17
  459. package/lib/{BannerPlugin.js → output/BannerPlugin.js} +82 -14
  460. package/lib/{CleanPlugin.js → output/CleanPlugin.js} +66 -24
  461. package/lib/{CopyPlugin.js → output/CopyPlugin.js} +142 -67
  462. package/lib/{ManifestPlugin.js → output/ManifestPlugin.js} +91 -17
  463. package/lib/output/SSRManifestPlugin.js +349 -0
  464. package/lib/performance/AnalyzableBailoutsPlugin.js +1 -1
  465. package/lib/performance/AsyncChunkWaterfallsPlugin.js +1 -1
  466. package/lib/performance/BroadContextsPlugin.js +4 -4
  467. package/lib/performance/CacheEffectivenessPlugin.js +2 -3
  468. package/lib/performance/ConflictingResourceHintsPlugin.js +1 -1
  469. package/lib/performance/DuplicateModulesPlugin.js +3 -4
  470. package/lib/performance/DuplicatePackagesPlugin.js +3 -3
  471. package/lib/performance/DynamicExportsPlugin.js +2 -2
  472. package/lib/performance/EvalUsagePlugin.js +3 -3
  473. package/lib/performance/HotspotsPlugin.js +11 -10
  474. package/lib/performance/LargeModulesPlugin.js +2 -3
  475. package/lib/performance/LegacyJavascriptPlugin.js +1 -2
  476. package/lib/performance/MissingSideEffectsPlugin.js +2 -3
  477. package/lib/performance/MissingSourceMapsPlugin.js +5 -6
  478. package/lib/performance/PureAnnotationsPlugin.js +3 -3
  479. package/lib/performance/RedundantDynamicImportsPlugin.js +6 -8
  480. package/lib/performance/ScopeHoistingBailoutsPlugin.js +2 -2
  481. package/lib/performance/SizeLimitsPlugin.js +11 -12
  482. package/lib/performance/TopLevelThisPlugin.js +8 -7
  483. package/lib/performance/UnsplitVendorsPlugin.js +1 -2
  484. package/lib/performance/UnusedAliasesPlugin.js +6 -7
  485. package/lib/performance/UnusedAssetsPlugin.js +5 -5
  486. package/lib/performance/UnusedDefinesPlugin.js +2 -2
  487. package/lib/performance/UnusedExternalsPlugin.js +3 -4
  488. package/lib/performance/UnusedFederationPlugin.js +2 -4
  489. package/lib/performance/UnusedModulesPlugin.js +5 -4
  490. package/lib/performance/getModuleSize.js +1 -1
  491. package/lib/performance/hasOnlyUnusedExports.js +4 -4
  492. package/lib/performance/isOnlyReexported.js +7 -6
  493. package/lib/{AutomaticPrefetchPlugin.js → prefetch/AutomaticPrefetchPlugin.js} +4 -5
  494. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +2 -2
  495. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -1
  496. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +4 -4
  497. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +4 -4
  498. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +4 -4
  499. package/lib/{dependencies → prefetch}/PrefetchDependency.js +1 -1
  500. package/lib/{PrefetchPlugin.js → prefetch/PrefetchPlugin.js} +2 -2
  501. package/lib/prefetch/ResourceHintPlugin.js +65 -44
  502. package/lib/prefetch/ResourceHintRuntimeModule.js +3 -3
  503. package/lib/prefetch/StartupAssetHintRuntimeModule.js +3 -3
  504. package/lib/prefetch/parseResourceHintOptions.js +4 -3
  505. package/lib/{ProvidePlugin.js → provide/ProvidePlugin.js} +7 -7
  506. package/lib/{dependencies → provide}/ProvidedDependency.js +14 -13
  507. package/lib/{IgnorePlugin.js → resolve/IgnorePlugin.js} +30 -13
  508. package/lib/{NormalModuleReplacementPlugin.js → resolve/NormalModuleReplacementPlugin.js} +4 -4
  509. package/lib/{ResolverFactory.js → resolve/ResolverFactory.js} +18 -5
  510. package/lib/resolve/getResolveOptionsKey.js +59 -0
  511. package/lib/rules/RuleSetCompiler.js +27 -46
  512. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +2 -2
  513. package/lib/runtime/AsyncModuleRuntimeModule.js +7 -4
  514. package/lib/runtime/AutoPublicPathRuntimeModule.js +5 -5
  515. package/lib/runtime/BaseUriRuntimeModule.js +3 -3
  516. package/lib/runtime/ChunkNameRuntimeModule.js +2 -2
  517. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -2
  518. package/lib/runtime/CompatRuntimeModule.js +4 -4
  519. package/lib/runtime/ConcatenationWrapRuntimeModule.js +2 -2
  520. package/lib/runtime/ConstructRequireRuntimeModule.js +2 -2
  521. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
  522. package/lib/runtime/CreateScriptRuntimeModule.js +2 -2
  523. package/lib/runtime/CreateScriptUrlRuntimeModule.js +2 -2
  524. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +6 -6
  525. package/lib/runtime/EnsureChunkRuntimeModule.js +4 -4
  526. package/lib/runtime/GetChunkFilenameRuntimeModule.js +6 -6
  527. package/lib/runtime/GetFullHashRuntimeModule.js +2 -2
  528. package/lib/runtime/GetMainFilenameRuntimeModule.js +4 -4
  529. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +3 -3
  530. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +3 -3
  531. package/lib/runtime/GlobalRuntimeModule.js +3 -3
  532. package/lib/runtime/HasOwnPropertyRuntimeModule.js +3 -3
  533. package/lib/runtime/HelperRuntimeModule.js +16 -1
  534. package/lib/runtime/LoadScriptRuntimeModule.js +3 -3
  535. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +80 -17
  536. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -2
  537. package/lib/runtime/NonceRuntimeModule.js +2 -2
  538. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  539. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  540. package/lib/runtime/RelativeUrlRuntimeModule.js +2 -2
  541. package/lib/{RuntimeGlobals.js → runtime/RuntimeGlobals.js} +18 -1
  542. package/lib/runtime/RuntimeIdRuntimeModule.js +4 -4
  543. package/lib/{RuntimeModule.js → runtime/RuntimeModule.js} +36 -21
  544. package/lib/{RuntimePlugin.js → runtime/RuntimePlugin.js} +48 -50
  545. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +2 -2
  546. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +2 -2
  547. package/lib/runtime/StartupChunkDependenciesPlugin.js +2 -2
  548. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +5 -5
  549. package/lib/runtime/StartupEntrypointRuntimeModule.js +3 -3
  550. package/lib/runtime/SystemContextRuntimeModule.js +2 -2
  551. package/lib/runtime/ToBinaryRuntimeModule.js +3 -3
  552. package/lib/runtime/WorkerRuntimeModule.js +1 -1
  553. package/lib/runtime/baseUri.js +1 -1
  554. package/lib/schemes/DataUriPlugin.js +1 -1
  555. package/lib/schemes/HttpUriPlugin.js +67 -11
  556. package/lib/schemes/VirtualUrlPlugin.js +50 -16
  557. package/lib/serialization/AggregateErrorSerializer.js +2 -2
  558. package/lib/serialization/FileMiddleware.js +3 -3
  559. package/lib/serialization/ObjectMiddleware.js +47 -16
  560. package/lib/serialization/SerializerMiddleware.js +2 -2
  561. package/lib/serialization/SingleItemMiddleware.js +4 -2
  562. package/lib/sharing/ConsumeSharedFallbackDependency.js +9 -1
  563. package/lib/sharing/ConsumeSharedModule.js +18 -14
  564. package/lib/sharing/ConsumeSharedPlugin.js +148 -42
  565. package/lib/sharing/ConsumeSharedRuntimeModule.js +8 -8
  566. package/lib/sharing/ProvideForSharedDependency.js +9 -1
  567. package/lib/sharing/ProvideSharedDependency.js +1 -1
  568. package/lib/sharing/ProvideSharedModule.js +11 -9
  569. package/lib/sharing/ProvideSharedModuleFactory.js +2 -2
  570. package/lib/sharing/ProvideSharedPlugin.js +111 -20
  571. package/lib/sharing/SharePlugin.js +102 -9
  572. package/lib/sharing/ShareRuntimeModule.js +6 -6
  573. package/lib/sharing/resolveMatchedConfigs.js +1 -1
  574. package/lib/{util → sharing}/semver.js +14 -16
  575. package/lib/sharing/utils.js +59 -2
  576. package/lib/stats/DefaultStatsFactoryPlugin.js +22 -19
  577. package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
  578. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -3
  579. package/lib/{MultiStats.js → stats/MultiStats.js} +4 -4
  580. package/lib/{Stats.js → stats/Stats.js} +4 -4
  581. package/lib/stats/StatsFactory.js +14 -13
  582. package/lib/{ChunkTemplate.js → template/ChunkTemplate.js} +7 -7
  583. package/lib/{ConditionalInitFragment.js → template/ConditionalInitFragment.js} +3 -3
  584. package/lib/template/DependencyTemplate.js +77 -0
  585. package/lib/{DependencyTemplates.js → template/DependencyTemplates.js} +9 -4
  586. package/lib/template/InitFragment.js +223 -0
  587. package/lib/{MainTemplate.js → template/MainTemplate.js} +11 -11
  588. package/lib/{ModuleInfoHeaderPlugin.js → template/ModuleInfoHeaderPlugin.js} +30 -8
  589. package/lib/{ModuleTemplate.js → template/ModuleTemplate.js} +6 -6
  590. package/lib/{RuntimeTemplate.js → template/RuntimeTemplate.js} +145 -63
  591. package/lib/{Template.js → template/Template.js} +13 -11
  592. package/lib/{TemplatedPathPlugin.js → template/TemplatedPathPlugin.js} +19 -23
  593. package/lib/typescript/TypeScriptPlugin.js +3 -3
  594. package/lib/util/RequestShortener.js +44 -0
  595. package/lib/util/SortableSet.js +87 -22
  596. package/lib/util/SourceProcessor.js +349 -44
  597. package/lib/util/TupleSet.js +27 -27
  598. package/lib/util/WeakTupleMap.js +10 -12
  599. package/lib/util/buildDiagnostics.js +2 -2
  600. package/lib/util/comparators.js +10 -10
  601. package/lib/util/concatenate.js +28 -147
  602. package/lib/util/createMappings.js +111 -0
  603. package/lib/util/dataURL.js +94 -15
  604. package/lib/util/deprecation.js +1 -1
  605. package/lib/util/extractComments.js +118 -0
  606. package/lib/util/formatLocation.js +1 -1
  607. package/lib/util/globUtils.js +197 -16
  608. package/lib/util/haltVisitors.js +51 -0
  609. package/lib/util/handlerKeys.js +2 -2
  610. package/lib/util/identifier.js +117 -1
  611. package/lib/util/implicitTypeLoaderFallback.js +6 -4
  612. package/lib/util/internalSerializables.js +294 -102
  613. package/lib/util/magicComment.js +12 -7
  614. package/lib/util/makeSerializable.js +23 -4
  615. package/lib/util/parseJson.js +1 -1
  616. package/lib/util/preloadModuleType.js +5 -2
  617. package/lib/util/registerExternalSerializer.js +2 -2
  618. package/lib/util/removeBOM.js +1 -1
  619. package/lib/util/runtime.js +1 -1
  620. package/lib/util/serialization.js +4 -1
  621. package/lib/util/source.js +2 -2
  622. package/lib/util/terminalColors.js +161 -0
  623. package/lib/{wasm-async → wasm}/AsyncWasmCompileRuntimeModule.js +5 -5
  624. package/lib/{wasm-async → wasm}/AsyncWasmLoadingRuntimeModule.js +5 -5
  625. package/lib/{wasm-async → wasm}/AsyncWasmModule.js +9 -5
  626. package/lib/{wasm-async → wasm}/AsyncWebAssemblyGenerator.js +5 -5
  627. package/lib/{wasm-async → wasm}/AsyncWebAssemblyJavascriptGenerator.js +11 -10
  628. package/lib/{wasm-async → wasm}/AsyncWebAssemblyModulesPlugin.js +26 -10
  629. package/lib/{wasm-async → wasm}/AsyncWebAssemblyParser.js +8 -8
  630. package/lib/wasm/EnableWasmLoadingPlugin.js +1 -1
  631. package/lib/{wasm-async → wasm}/UniversalCompileAsyncWasmPlugin.js +9 -7
  632. package/lib/wasm/wasmModuleFilename.js +2 -2
  633. package/lib/wasm-sync/SyncWasmModule.js +3 -3
  634. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +8 -8
  635. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +3 -3
  636. package/lib/wasm-sync/WebAssemblyGenerator.js +9 -8
  637. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +14 -15
  638. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +9 -7
  639. package/lib/wasm-sync/WebAssemblyParser.js +6 -6
  640. package/lib/wasm-sync/WebAssemblyUtils.js +6 -5
  641. package/lib/{MultiWatching.js → watch/MultiWatching.js} +3 -3
  642. package/lib/{WatchIgnorePlugin.js → watch/WatchIgnorePlugin.js} +43 -9
  643. package/lib/{Watching.js → watch/Watching.js} +8 -8
  644. package/lib/web/FetchCompileAsyncWasmPlugin.js +8 -6
  645. package/lib/web/FetchCompileWasmPlugin.js +6 -4
  646. package/lib/web/JsonpChunkLoadingPlugin.js +3 -3
  647. package/lib/web/JsonpChunkLoadingRuntimeModule.js +6 -6
  648. package/lib/web/JsonpTemplatePlugin.js +1 -1
  649. package/lib/webpack.js +27 -17
  650. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -3
  651. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +6 -6
  652. package/package.json +49 -38
  653. package/schemas/WebpackOptions.check.js +2 -1
  654. package/schemas/WebpackOptions.d.json.ts +2 -0
  655. package/schemas/WebpackOptions.json +294 -74
  656. package/schemas/plugins/BannerPlugin.check.js +2 -1
  657. package/schemas/plugins/BannerPlugin.json +29 -2
  658. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -0
  659. package/schemas/plugins/HtmlParserOptions.check.js +2 -1
  660. package/schemas/plugins/IgnorePlugin.check.js +1 -0
  661. package/schemas/plugins/IgnorePlugin.d.json.ts +2 -0
  662. package/schemas/plugins/IgnorePlugin.json +1 -1
  663. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -0
  664. package/schemas/plugins/ManifestPlugin.check.js +1 -0
  665. package/schemas/plugins/ManifestPlugin.json +3 -3
  666. package/schemas/plugins/ProgressPlugin.check.js +2 -1
  667. package/schemas/plugins/ProgressPlugin.json +2 -7
  668. package/schemas/plugins/SSRManifestPlugin.check.js +7 -0
  669. package/schemas/plugins/SSRManifestPlugin.json +20 -0
  670. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -1
  671. package/schemas/plugins/SourceMapDevToolPlugin.json +44 -12
  672. package/schemas/plugins/WatchIgnorePlugin.check.js +2 -1
  673. package/schemas/plugins/WatchIgnorePlugin.json +12 -3
  674. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -0
  675. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -0
  676. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -0
  677. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -0
  678. package/schemas/plugins/container/ContainerPlugin.check.js +2 -1
  679. package/schemas/plugins/container/ContainerPlugin.json +8 -0
  680. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -0
  681. package/schemas/plugins/container/ExternalsType.check.js +1 -0
  682. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -1
  683. package/schemas/plugins/container/ModuleFederationPlugin.json +40 -0
  684. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -0
  685. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -0
  686. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -0
  687. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -0
  688. package/schemas/plugins/css/CssParserOptions.check.js +1 -0
  689. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -0
  690. package/schemas/plugins/dll/DllPlugin.check.js +1 -0
  691. package/schemas/plugins/dll/DllReferencePlugin.check.js +2 -1
  692. package/schemas/plugins/dll/DllReferencePlugin.json +3 -18
  693. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -0
  694. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -0
  695. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -0
  696. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +1 -0
  697. package/schemas/plugins/json/JsonModulesPluginParser.check.js +1 -0
  698. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -0
  699. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -0
  700. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -0
  701. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -0
  702. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -0
  703. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +1 -0
  704. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +2 -1
  705. package/schemas/plugins/sharing/ConsumeSharedPlugin.json +32 -0
  706. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +2 -1
  707. package/schemas/plugins/sharing/ProvideSharedPlugin.json +32 -0
  708. package/schemas/plugins/sharing/SharePlugin.check.js +2 -1
  709. package/schemas/plugins/sharing/SharePlugin.json +32 -0
  710. package/types.d.ts +19355 -13873
  711. package/lib/LazyBarrel.js +0 -388
  712. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -39
  713. package/lib/dependencies/HarmonyModulesPlugin.js +0 -192
  714. package/lib/javascript/ChunkFormatHelpers.js +0 -72
  715. package/lib/javascript/grammar.js +0 -5546
  716. package/lib/javascript/parser.js +0 -1500
  717. package/lib/javascript/regexpData.js +0 -51
  718. package/lib/performance/getSourceModules.js +0 -22
  719. package/lib/util/Semaphore.js +0 -65
  720. package/lib/util/objectToMap.js +0 -15
  721. package/schemas/WebpackOptions.check.d.ts +0 -7
  722. package/schemas/_container.json +0 -155
  723. package/schemas/_sharing.json +0 -118
  724. package/schemas/plugins/BannerPlugin.check.d.ts +0 -7
  725. package/schemas/plugins/HtmlGeneratorOptions.check.d.ts +0 -7
  726. package/schemas/plugins/HtmlParserOptions.check.d.ts +0 -7
  727. package/schemas/plugins/IgnorePlugin.check.d.ts +0 -7
  728. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +0 -7
  729. package/schemas/plugins/ManifestPlugin.check.d.ts +0 -7
  730. package/schemas/plugins/ProgressPlugin.check.d.ts +0 -7
  731. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +0 -7
  732. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +0 -7
  733. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +0 -7
  734. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +0 -7
  735. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +0 -7
  736. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +0 -7
  737. package/schemas/plugins/container/ContainerPlugin.check.d.ts +0 -7
  738. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +0 -7
  739. package/schemas/plugins/container/ExternalsType.check.d.ts +0 -7
  740. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +0 -7
  741. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +0 -7
  742. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +0 -7
  743. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +0 -7
  744. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +0 -7
  745. package/schemas/plugins/css/CssParserOptions.check.d.ts +0 -7
  746. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +0 -7
  747. package/schemas/plugins/dll/DllPlugin.check.d.ts +0 -7
  748. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +0 -7
  749. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +0 -7
  750. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +0 -7
  751. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +0 -7
  752. package/schemas/plugins/json/JsonModulesPluginGenerator.check.d.ts +0 -7
  753. package/schemas/plugins/json/JsonModulesPluginParser.check.d.ts +0 -7
  754. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +0 -7
  755. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +0 -7
  756. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +0 -7
  757. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +0 -7
  758. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +0 -7
  759. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +0 -7
  760. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +0 -7
  761. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +0 -7
  762. package/schemas/plugins/sharing/SharePlugin.check.d.ts +0 -7
  763. /package/lib/{validateSchema.js → config/validateSchema.js} +0 -0
  764. /package/lib/{util → css}/conventions.js +0 -0
  765. /package/lib/{util → css}/topologicalSort.js +0 -0
  766. /package/lib/dependencies/{getFunctionExpression.js → helpers/getFunctionExpression.js} +0 -0
  767. /package/lib/{util → externals}/extractUrlAndGlobal.js +0 -0
  768. /package/lib/{util → fs}/StackedCacheMap.js +0 -0
  769. /package/lib/{util → javascript}/StackedMap.js +0 -0
  770. /package/lib/{ModuleProfile.js → module/ModuleProfile.js} +0 -0
  771. /package/lib/{ModuleSourceTypeConstants.js → module/ModuleSourceTypeConstants.js} +0 -0
  772. /package/lib/{ModuleTypeConstants.js → module/ModuleTypeConstants.js} +0 -0
  773. /package/lib/{OptimizationStages.js → optimize/OptimizationStages.js} +0 -0
  774. /package/lib/{util → optimize}/Queue.js +0 -0
  775. /package/lib/{util → stats}/smartGrouping.js +0 -0
@@ -6,44 +6,47 @@
6
6
  "use strict";
7
7
 
8
8
  const { SyncWaterfallHook } = require("tapable");
9
+ const ConstDependency = require("../dependencies/core/ConstDependency");
10
+ const WebpackError = require("../errors/WebpackError");
11
+ const BasicEvaluatedExpression = require("../javascript/BasicEvaluatedExpression");
12
+ const { isVariableInfo } = require("../javascript/JavascriptParser");
13
+ const {
14
+ evaluateToString,
15
+ toConstantDependency
16
+ } = require("../javascript/JavascriptParserHelpers");
9
17
  const {
10
18
  JAVASCRIPT_MODULE_TYPE_AUTO,
11
19
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
12
20
  JAVASCRIPT_MODULE_TYPE_ESM
13
- } = require("./ModuleTypeConstants");
14
- const RuntimeGlobals = require("./RuntimeGlobals");
15
- const ConstDependency = require("./dependencies/ConstDependency");
16
- const WebpackError = require("./errors/WebpackError");
17
- const BasicEvaluatedExpression = require("./javascript/BasicEvaluatedExpression");
18
- const { VariableInfo } = require("./javascript/JavascriptParser");
19
- const {
20
- evaluateToString,
21
- toConstantDependency
22
- } = require("./javascript/JavascriptParserHelpers");
23
- const { getBuildDiagnostics } = require("./util/buildDiagnostics");
24
- const createHash = require("./util/createHash");
25
- const createHooksRegistry = require("./util/createHooksRegistry");
21
+ } = require("../module/ModuleTypeConstants");
22
+ const NormalModule = require("../module/NormalModule");
23
+ const RuntimeGlobals = require("../runtime/RuntimeGlobals");
24
+ const { getBuildDiagnostics } = require("../util/buildDiagnostics");
25
+ const createHash = require("../util/createHash");
26
+ const createHooksRegistry = require("../util/createHooksRegistry");
26
27
 
27
28
  /** @import { Expression, MemberExpression } from "estree" */
28
- /** @import Compiler from "./Compiler" */
29
+ /** @import { Source } from "webpack-sources" */
30
+ /** @import Compiler from "../Compiler" */
31
+ /** @import { PreparsedAst } from "../module/Parser" */
29
32
  /**
30
- * @import {
33
+ * @import Module, {
31
34
  * BuildInfo,
32
35
  * ValueCacheVersion,
33
36
  * ValueCacheVersions
34
- * } from "./Module"
37
+ * } from "../module/Module"
35
38
  */
36
- /** @import NormalModule, { NormalModuleBuildInfo } from "./NormalModule" */
37
- /** @import RuntimeTemplate from "./RuntimeTemplate" */
39
+ /** @import { NormalModuleBuildInfo } from "../module/NormalModule" */
40
+ /** @import RuntimeTemplate from "../template/RuntimeTemplate" */
38
41
  /**
39
42
  * @import JavascriptParser, {
40
43
  * DestructuringAssignmentProperties,
41
44
  * Members,
42
45
  * Range
43
- * } from "./javascript/JavascriptParser"
46
+ * } from "../javascript/JavascriptParser"
44
47
  */
45
- /** @import { Logger } from "./logging/Logger" */
46
- /** @import Compilation from "./Compilation" */
48
+ /** @import { Logger } from "../logging/Logger" */
49
+ /** @import Compilation from "../Compilation" */
47
50
 
48
51
  /** @typedef {null | undefined | RegExp | EXPECTED_FUNCTION | string | number | boolean | bigint | undefined} CodeValuePrimitive */
49
52
  /** @typedef {RecursiveArrayOrRecord<CodeValuePrimitive | RuntimeValue>} CodeValue */
@@ -56,9 +59,30 @@ const createHooksRegistry = require("./util/createHooksRegistry");
56
59
  * @property {string[]=} missingDependencies
57
60
  * @property {string[]=} buildDependencies
58
61
  * @property {string | (() => string)=} version
62
+ * @property {boolean=} async resolve the generator before parsing, including promise-returning functions not declared `async`
63
+ */
64
+
65
+ /** @typedef {CodeValuePrimitive | PromiseLike<CodeValuePrimitive>} GeneratedValue */
66
+ /** @typedef {(value: { module: NormalModule, key: string, readonly version: ValueCacheVersion }) => GeneratedValue} GeneratorFn */
67
+
68
+ /**
69
+ * Whether the generator is declared `async`.
70
+ * @param {GeneratorFn} fn generator function
71
+ * @returns {boolean} true when the generator is an async function
59
72
  */
73
+ const isAsyncFunction = (fn) =>
74
+ Object.prototype.toString.call(fn) === "[object AsyncFunction]";
60
75
 
61
- /** @typedef {(value: { module: NormalModule, key: string, readonly version: ValueCacheVersion }) => CodeValuePrimitive} GeneratorFn */
76
+ /**
77
+ * Whether a generated value still has to be awaited.
78
+ * @param {GeneratedValue} value what the generator returned
79
+ * @returns {value is PromiseLike<CodeValuePrimitive>} true for a thenable
80
+ */
81
+ const isThenable = (value) =>
82
+ (typeof value === "object" || typeof value === "function") &&
83
+ value !== null &&
84
+ typeof (/** @type {PromiseLike<CodeValuePrimitive>} */ (value).then) ===
85
+ "function";
62
86
 
63
87
  class RuntimeValue {
64
88
  /**
@@ -76,6 +100,15 @@ class RuntimeValue {
76
100
  }
77
101
  /** @type {true | RuntimeValueOptions} */
78
102
  this.options = options || {};
103
+ /**
104
+ * Resolved before the module is parsed, since the parser cannot wait.
105
+ * Use the option for promise-returning functions not declared `async`.
106
+ * @type {boolean}
107
+ */
108
+ this.async =
109
+ this.options !== true && typeof this.options.async === "boolean"
110
+ ? this.options.async
111
+ : isAsyncFunction(fn);
79
112
  }
80
113
 
81
114
  get fileDependencies() {
@@ -83,14 +116,14 @@ class RuntimeValue {
83
116
  }
84
117
 
85
118
  /**
86
- * Returns code.
87
- * @param {JavascriptParser} parser the parser
88
- * @param {ValueCacheVersions} valueCacheVersions valueCacheVersions
119
+ * Records what the value is computed from on the module it is rendered into,
120
+ * so a change to any of it rebuilds that module.
121
+ * @param {NormalModule} module the module the value is rendered into
89
122
  * @param {string} key the defined key
90
- * @returns {CodeValuePrimitive} code
123
+ * @returns {void}
91
124
  */
92
- exec(parser, valueCacheVersions, key) {
93
- const buildInfo = /** @type {BuildInfo} */ (parser.state.module.buildInfo);
125
+ addDependencies(module, key) {
126
+ const buildInfo = /** @type {BuildInfo} */ (module.buildInfo);
94
127
  if (this.options === true) {
95
128
  buildInfo.cacheable = false;
96
129
  const diagnostics = getBuildDiagnostics(buildInfo);
@@ -125,9 +158,18 @@ class RuntimeValue {
125
158
  }
126
159
  }
127
160
  }
161
+ }
128
162
 
163
+ /**
164
+ * Runs the generator for one module.
165
+ * @param {NormalModule} module the module the value is rendered into
166
+ * @param {ValueCacheVersions} valueCacheVersions valueCacheVersions
167
+ * @param {string} key the defined key
168
+ * @returns {GeneratedValue} the value, or a promise of it
169
+ */
170
+ call(module, valueCacheVersions, key) {
129
171
  return this.fn({
130
- module: parser.state.module,
172
+ module,
131
173
  key,
132
174
  get version() {
133
175
  return /** @type {ValueCacheVersion} */ (
@@ -137,6 +179,32 @@ class RuntimeValue {
137
179
  });
138
180
  }
139
181
 
182
+ /**
183
+ * Returns code.
184
+ * @param {JavascriptParser} parser the parser
185
+ * @param {ValueCacheVersions} valueCacheVersions valueCacheVersions
186
+ * @param {string} key the defined key
187
+ * @returns {CodeValuePrimitive} code
188
+ */
189
+ exec(parser, valueCacheVersions, key) {
190
+ const module = parser.state.module;
191
+ this.addDependencies(module, key);
192
+
193
+ if (this.async) return getResolvedValue(module, this, key);
194
+
195
+ const value = this.call(module, valueCacheVersions, key);
196
+
197
+ if (isThenable(value)) {
198
+ // Consume a rejection even though the synchronous parser cannot await it.
199
+ Promise.resolve(value).catch(() => {});
200
+ throw new WebpackError(
201
+ `DefinePlugin: the runtime value for "${key}" returned a Promise, but the generator was not declared asynchronous. Declare it with \`async\`, or set \`async: true\` in its options, so webpack can resolve it before the module is parsed.`
202
+ );
203
+ }
204
+
205
+ return value;
206
+ }
207
+
140
208
  getCacheVersion() {
141
209
  return this.options === true
142
210
  ? undefined
@@ -400,6 +468,7 @@ const EMPTY_OBJECT = {};
400
468
  * @property {Map<string, Set<string>>} nestedByFinalKey nested object keys by final key segment
401
469
  * @property {Map<string, string[]>} keysByPrefix definition keys below each dotted-key prefix
402
470
  * @property {boolean} hasRuntimeValue renders are module-dependent (RuntimeValue present)
471
+ * @property {boolean} hasAsyncRuntimeValue asynchronous generators need to resolve before parsing
403
472
  * @property {WeakMap<MergedDefinitionMap, string>} codeCache rendered code per node (static trees only)
404
473
  * @property {Logger} logger the logger
405
474
  */
@@ -429,13 +498,14 @@ const toPropertyKey = (key) =>
429
498
  /**
430
499
  * Whether a definition value contains a RuntimeValue (module-dependent code).
431
500
  * @param {CodeValue} value definition value
501
+ * @param {boolean=} asyncOnly whether only asynchronous generators count
432
502
  * @returns {boolean} true when a RuntimeValue is contained
433
503
  */
434
- const containsRuntimeValue = (value) => {
435
- if (value instanceof RuntimeValue) return true;
504
+ const containsRuntimeValue = (value, asyncOnly = false) => {
505
+ if (value instanceof RuntimeValue) return !asyncOnly || value.async;
436
506
  if (isObjectDefinition(value)) {
437
507
  for (const key of Object.keys(value)) {
438
- if (containsRuntimeValue(value[key])) return true;
508
+ if (containsRuntimeValue(value[key], asyncOnly)) return true;
439
509
  }
440
510
  }
441
511
  return false;
@@ -515,11 +585,15 @@ const getMergedDefinitions = (compilation) => {
515
585
  }
516
586
  };
517
587
  let hasRuntimeValue = false;
588
+ let hasAsyncRuntimeValue = false;
518
589
  /** @type {Map<string, string[]>} */
519
590
  const keysByPrefix = new Map();
520
591
  for (const key of Object.keys(definitions)) {
521
- if (TYPEOF_OPERATOR_REGEXP.test(key)) continue;
522
592
  const code = definitions[key];
593
+ if (!hasAsyncRuntimeValue && containsRuntimeValue(code, true)) {
594
+ hasAsyncRuntimeValue = true;
595
+ }
596
+ if (TYPEOF_OPERATOR_REGEXP.test(key)) continue;
523
597
  insertMergedDefinition(root, key.split("."), code);
524
598
  if (!hasRuntimeValue && containsRuntimeValue(code)) hasRuntimeValue = true;
525
599
  // group this key under every ancestor prefix (value deps of object reads)
@@ -536,7 +610,9 @@ const getMergedDefinitions = (compilation) => {
536
610
  keysByPrefix.set(prefix, [key]);
537
611
  }
538
612
  }
539
- if (!code || typeof code === "object") continue;
613
+ // a nested object is walked separately and an empty string renders to
614
+ // no code; every other shape is a destructurable leaf, falsy included
615
+ if (isObjectDefinition(code) || code === "") continue;
540
616
  const idx = key.lastIndexOf(".");
541
617
  if (idx <= 0 || idx >= key.length - 1) continue;
542
618
  const nested = key.slice(0, idx);
@@ -552,6 +628,7 @@ const getMergedDefinitions = (compilation) => {
552
628
  nestedByFinalKey,
553
629
  keysByPrefix,
554
630
  hasRuntimeValue,
631
+ hasAsyncRuntimeValue,
555
632
  codeCache: new WeakMap(),
556
633
  logger: compilation.getLogger("webpack.DefinePlugin")
557
634
  };
@@ -678,15 +755,256 @@ const createCompilationHooks = () => ({
678
755
  * @returns {Error} the annotated error
679
756
  */
680
757
  const annotateEvaluationError = (key, code, error) => {
681
- const value = typeof code === "string" ? code : JSON.stringify(code);
758
+ // a RuntimeValue holds the generator, not code: JSON drops the function and
759
+ // leaves only its options, which says nothing about what failed
760
+ const value =
761
+ code instanceof RuntimeValue
762
+ ? `runtimeValue(${code.fn.name || "anonymous"})`
763
+ : typeof code === "string"
764
+ ? code
765
+ : JSON.stringify(code);
682
766
  const prefix = `DefinePlugin: failed to evaluate value for "${key}" (\`${value}\`)`;
683
767
  if (error instanceof Error) {
684
- error.message = `${prefix}: ${error.message}`;
768
+ // one instance can reach several modules, so prefix it only once
769
+ if (!error.message.startsWith(prefix)) {
770
+ error.message = `${prefix}: ${error.message}`;
771
+ }
685
772
  return error;
686
773
  }
687
774
  return new WebpackError(`${prefix}: ${error}`);
688
775
  };
689
776
 
777
+ /** @typedef {{ value: CodeValuePrimitive } | { error: unknown }} ResolvedRuntimeValue */
778
+ /** @typedef {Map<RuntimeValue, Map<string, ResolvedRuntimeValue>>} ResolvedRuntimeValues */
779
+ /** @typedef {{ value: RuntimeValue, keys: Set<string>, roots: Set<string> }} AsyncRuntimeValue */
780
+
781
+ /**
782
+ * Values resolved during the async build, ready for synchronous parser hooks.
783
+ * @type {WeakMap<Module, ResolvedRuntimeValues>}
784
+ */
785
+ const RESOLVED_RUNTIME_VALUES = new WeakMap();
786
+
787
+ /**
788
+ * @typedef {object} AsyncRuntimeDefinitions
789
+ * @property {Map<RuntimeValue, AsyncRuntimeValue>} values async generators
790
+ * @property {Map<string, string[]>} references replacement code by definition root
791
+ * @property {Set<string>} dynamicRoots roots whose synchronous generators may return more references
792
+ */
793
+
794
+ /** @type {WeakMap<Compilation, AsyncRuntimeDefinitions>} */
795
+ const ASYNC_RUNTIME_VALUES = new WeakMap();
796
+
797
+ /** @type {WeakSet<Compilation>} */
798
+ const ASYNC_RESOLUTION_TAPPED = new WeakSet();
799
+
800
+ /** @type {WeakSet<JavascriptParser>} */
801
+ const ASYNC_PARSERS = new WeakSet();
802
+
803
+ const IDENTIFIER_ESCAPE_REGEXP =
804
+ /\\u(?:\{([\da-fA-F]{1,6})\}|([\da-fA-F]{4}))/g;
805
+
806
+ /**
807
+ * Includes escaped spellings when checking whether source may use a definition.
808
+ * @param {string} source source or replacement code
809
+ * @returns {string} source with Unicode escapes decoded
810
+ */
811
+ const decodeIdentifierEscapes = (source) =>
812
+ source.includes("\\u")
813
+ ? source.replace(IDENTIFIER_ESCAPE_REGEXP, (escape, point, unit) => {
814
+ const value = Number.parseInt(point || unit, 16);
815
+ return value <= 0x10ffff ? String.fromCodePoint(value) : escape;
816
+ })
817
+ : source;
818
+
819
+ /**
820
+ * Collects runtime values under their dotted, object-member and array keys.
821
+ * @param {CodeValue} code definition value
822
+ * @param {Set<string>} keys keys the value can be rendered under
823
+ * @param {string} root first segment of the definition key
824
+ * @param {AsyncRuntimeDefinitions} into collected definitions
825
+ * @returns {void}
826
+ */
827
+ const collectAsyncRuntimeValues = (code, keys, root, into) => {
828
+ if (code instanceof RuntimeValue) {
829
+ if (!code.async) {
830
+ into.dynamicRoots.add(root);
831
+ return;
832
+ }
833
+ const collected = into.values.get(code);
834
+ // one instance can be defined under more than one key
835
+ if (collected === undefined) {
836
+ into.values.set(code, {
837
+ value: code,
838
+ keys: new Set(keys),
839
+ roots: new Set([root])
840
+ });
841
+ return;
842
+ }
843
+ for (const key of keys) collected.keys.add(key);
844
+ collected.roots.add(root);
845
+ return;
846
+ }
847
+ if (!isObjectDefinition(code)) {
848
+ const reference = decodeIdentifierEscapes(String(code));
849
+ const references = into.references.get(root);
850
+ if (references) references.push(reference);
851
+ else into.references.set(root, [reference]);
852
+ return;
853
+ }
854
+ const isArray = Array.isArray(code);
855
+ for (const name of Object.keys(code)) {
856
+ /** @type {Set<string>} */
857
+ const childKeys = new Set(
858
+ isArray ? keys : [name, name.slice(name.lastIndexOf(".") + 1)]
859
+ );
860
+ for (const key of keys) childKeys.add(`${key}.${name}`);
861
+ collectAsyncRuntimeValues(code[name], childKeys, root, into);
862
+ }
863
+ };
864
+
865
+ /**
866
+ * The asynchronous runtime values of every definition, collected once per
867
+ * compilation.
868
+ * @param {Compilation} compilation the compilation
869
+ * @returns {AsyncRuntimeDefinitions} the definitions
870
+ */
871
+ const getAsyncRuntimeValues = (compilation) => {
872
+ const cached = ASYNC_RUNTIME_VALUES.get(compilation);
873
+ if (cached) return cached;
874
+
875
+ /** @type {AsyncRuntimeDefinitions} */
876
+ const collected = {
877
+ values: new Map(),
878
+ references: new Map(),
879
+ dynamicRoots: new Set()
880
+ };
881
+ const { definitions } = getMergedDefinitions(compilation);
882
+
883
+ for (const key of Object.keys(definitions)) {
884
+ const name = key.replace(TYPEOF_OPERATOR_REGEXP, "");
885
+ const dot = name.indexOf(".");
886
+ const keys = new Set([key]);
887
+ if (name === key && dot !== -1) {
888
+ keys.add(key.slice(key.lastIndexOf(".") + 1));
889
+ }
890
+ collectAsyncRuntimeValues(
891
+ definitions[key],
892
+ keys,
893
+ dot === -1 ? name : name.slice(0, dot),
894
+ collected
895
+ );
896
+ }
897
+
898
+ ASYNC_RUNTIME_VALUES.set(compilation, collected);
899
+ return collected;
900
+ };
901
+
902
+ /**
903
+ * Whether source or replacement code may reference a definition root.
904
+ * @param {string[]} sources module source and reachable replacement code
905
+ * @param {Iterable<string>} roots first segments of definition keys
906
+ * @returns {boolean} false only when the module cannot reference the value
907
+ */
908
+ const mayReference = (sources, roots) => {
909
+ for (const root of roots) {
910
+ for (const source of sources) {
911
+ if (source.includes(root)) return true;
912
+ }
913
+ }
914
+ return false;
915
+ };
916
+
917
+ /**
918
+ * Resolves the asynchronous runtime values a module may reference, while the
919
+ * module is still building and a promise can still be awaited.
920
+ * @param {Compilation} compilation the compilation
921
+ * @param {NormalModule} module the module about to be parsed
922
+ * @param {boolean} resolveAll whether a custom AST can introduce additional references
923
+ * @returns {Promise<void>} resolves once every value the module may use is known
924
+ */
925
+ const resolveAsyncRuntimeValues = async (compilation, module, resolveAll) => {
926
+ const definitions = getAsyncRuntimeValues(compilation);
927
+ const remaining = new Set(definitions.values.values());
928
+ const references = new Map(definitions.references);
929
+ /** @type {ResolvedRuntimeValues} */
930
+ const resolved = new Map();
931
+ const { valueCacheVersions } = compilation;
932
+ const source = /** @type {Source} */ (module.originalSource()).source();
933
+ const sources = [decodeIdentifierEscapes(source.toString())];
934
+
935
+ while (remaining.size > 0) {
936
+ let addedReferences;
937
+ do {
938
+ addedReferences = false;
939
+ for (const [root, code] of references) {
940
+ if (!mayReference(sources, [root])) continue;
941
+ references.delete(root);
942
+ sources.push(...code);
943
+ addedReferences = true;
944
+ }
945
+ } while (addedReferences);
946
+ // A synchronous generator may return arbitrary code. Keep its invocation
947
+ // at parse time, but prepare any async values that code might reference.
948
+ resolveAll = resolveAll || mayReference(sources, definitions.dynamicRoots);
949
+ /** @type {Promise<void>[]} */
950
+ const pending = [];
951
+ for (const entry of remaining) {
952
+ const { value, keys, roots } = entry;
953
+ if (!resolveAll && !mayReference(sources, roots)) continue;
954
+ remaining.delete(entry);
955
+ /** @type {Map<string, ResolvedRuntimeValue>} */
956
+ const byKey = new Map();
957
+ resolved.set(value, byKey);
958
+ for (const key of keys) {
959
+ pending.push(
960
+ Promise.resolve()
961
+ .then(() => value.call(module, valueCacheVersions, key))
962
+ .then(
963
+ (code) => {
964
+ byKey.set(key, { value: code });
965
+ sources.push(decodeIdentifierEscapes(String(code)));
966
+ },
967
+ (error) => {
968
+ // Text matching can include unused members or shadowed names,
969
+ // so keep the rejection as it is and annotate it in
970
+ // `getResolvedValue`, only for the module that consumes it
971
+ byKey.set(key, { error });
972
+ }
973
+ )
974
+ );
975
+ }
976
+ }
977
+ if (pending.length === 0) break;
978
+ await Promise.all(pending);
979
+ }
980
+
981
+ // last, so that a rebuild never reads what the previous build resolved
982
+ RESOLVED_RUNTIME_VALUES.set(module, resolved);
983
+ };
984
+
985
+ /**
986
+ * What an asynchronous generator produced for this module, resolved before the
987
+ * module was parsed.
988
+ * @param {NormalModule} module the module being parsed
989
+ * @param {RuntimeValue} runtimeValue the runtime value
990
+ * @param {string} key the defined key
991
+ * @returns {CodeValuePrimitive} the value
992
+ */
993
+ const getResolvedValue = (module, runtimeValue, key) => {
994
+ const resolved = RESOLVED_RUNTIME_VALUES.get(module);
995
+ const byKey = resolved && resolved.get(runtimeValue);
996
+ const result = byKey && byKey.get(key);
997
+ if (result === undefined) {
998
+ throw new WebpackError(
999
+ `DefinePlugin: the asynchronous runtime value for "${key}" was not resolved before the module was parsed.`
1000
+ );
1001
+ }
1002
+ if ("error" in result) {
1003
+ throw annotateEvaluationError(key, runtimeValue, result.error);
1004
+ }
1005
+ return result.value;
1006
+ };
1007
+
690
1008
  /**
691
1009
  * @typedef {ReturnType<typeof createCompilationHooks>} DefinePluginHooks
692
1010
  */
@@ -704,7 +1022,8 @@ class DefinePlugin {
704
1022
  }
705
1023
 
706
1024
  /**
707
- * Returns runtime value.
1025
+ * Creates a runtime value. Async generators resolve once per module and key
1026
+ * before parsing; promise-returning functions require the `async` option.
708
1027
  * @param {GeneratorFn} fn generator function
709
1028
  * @param {true | string[] | RuntimeValueOptions=} options options
710
1029
  * @returns {RuntimeValue} runtime value
@@ -768,6 +1087,52 @@ class DefinePlugin {
768
1087
  // built lazily here: every definitions hook is tapped by the time
769
1088
  // parsers are created, and the result is cached per compilation
770
1089
  const mergedDefinitions = getMergedDefinitions(compilation);
1090
+ // a parser is created before the module it parses is built, so this
1091
+ // is in place before the first value has to be resolved
1092
+ if (mergedDefinitions.hasAsyncRuntimeValue) {
1093
+ ASYNC_PARSERS.add(parser);
1094
+ if (!ASYNC_RESOLUTION_TAPPED.has(compilation)) {
1095
+ ASYNC_RESOLUTION_TAPPED.add(compilation);
1096
+ NormalModule.getCompilationHooks(
1097
+ compilation
1098
+ ).beforeParse.tapPromise(
1099
+ { name: PLUGIN_NAME, stage: Infinity },
1100
+ async (module) => {
1101
+ const moduleParser = /** @type {JavascriptParser} */ (
1102
+ module.parser
1103
+ );
1104
+ if (
1105
+ !ASYNC_PARSERS.has(moduleParser) ||
1106
+ module.shouldPreventParsing(
1107
+ compilation.options.module.noParse,
1108
+ module.request
1109
+ )
1110
+ ) {
1111
+ return;
1112
+ }
1113
+ // A loader-provided AST or a custom parse function means the
1114
+ // module is parsed from something other than its source text,
1115
+ // so scanning that text cannot find every reference.
1116
+ const hasPreparsedAst =
1117
+ /** @type {{ _ast: PreparsedAst | null }} */ (
1118
+ /** @type {unknown} */ (module)
1119
+ )._ast !== null;
1120
+ await resolveAsyncRuntimeValues(
1121
+ compilation,
1122
+ module,
1123
+ hasPreparsedAst ||
1124
+ typeof moduleParser.options.parse === "function"
1125
+ );
1126
+ }
1127
+ );
1128
+ compilation.hooks.succeedModule.tap(PLUGIN_NAME, (module) => {
1129
+ RESOLVED_RUNTIME_VALUES.delete(module);
1130
+ });
1131
+ compilation.hooks.failedModule.tap(PLUGIN_NAME, (module) => {
1132
+ RESOLVED_RUNTIME_VALUES.delete(module);
1133
+ });
1134
+ }
1135
+ }
771
1136
  /** @type {Set<string>} */
772
1137
  const hooked = new Set();
773
1138
  const mainValue =
@@ -852,9 +1217,7 @@ class DefinePlugin {
852
1217
  if (fullKey === "import" || fullKey === "import.meta") continue;
853
1218
  parser.hooks.canRename.for(fullKey).tap(PLUGIN_NAME, () => {
854
1219
  addValueDependency(key);
855
- if (
856
- parser.scope.definitions.get(firstKey) instanceof VariableInfo
857
- ) {
1220
+ if (isVariableInfo(parser.scope.definitions.get(firstKey))) {
858
1221
  return false;
859
1222
  }
860
1223
  return true;
@@ -898,7 +1261,10 @@ class DefinePlugin {
898
1261
  if (
899
1262
  !finalSet ||
900
1263
  !finalSet.has(id) ||
901
- !mergedDefinitions.definitions[fullKey]
1264
+ !Object.prototype.hasOwnProperty.call(
1265
+ mergedDefinitions.definitions,
1266
+ fullKey
1267
+ )
902
1268
  ) {
903
1269
  return;
904
1270
  }
@@ -42,15 +42,15 @@
42
42
 
43
43
  "use strict";
44
44
 
45
- const FileSystemInfo = require("./FileSystemInfo");
46
- const DotenvFileError = require("./errors/DotenvFileError");
47
- const { join } = require("./util/fs");
45
+ const DotenvFileError = require("../errors/DotenvFileError");
46
+ const FileSystemInfo = require("../fs/FileSystemInfo");
47
+ const { join } = require("../fs/fs");
48
48
 
49
- /** @import { DotenvPluginOptions } from "../declarations/WebpackOptions" */
50
- /** @import Compiler from "./Compiler" */
51
- /** @import { ItemCacheFacade } from "./CacheFacade" */
52
- /** @import { InputFileSystem } from "./util/fs" */
53
- /** @import { Snapshot } from "./FileSystemInfo" */
49
+ /** @import { DotenvPluginOptions } from "../../declarations/WebpackOptions" */
50
+ /** @import Compiler from "../Compiler" */
51
+ /** @import { ItemCacheFacade } from "../cache/CacheFacade" */
52
+ /** @import { InputFileSystem } from "../fs/fs" */
53
+ /** @import { Snapshot } from "../fs/FileSystemInfo" */
54
54
 
55
55
  /** @typedef {Exclude<DotenvPluginOptions["prefix"], string | undefined>} Prefix */
56
56
  /** @typedef {Record<string, string>} Env */
@@ -270,7 +270,7 @@ class DotenvPlugin {
270
270
  compiler.hooks.validate.tap(PLUGIN_NAME, () => {
271
271
  compiler.validate(
272
272
  () => {
273
- const { definitions } = require("../schemas/WebpackOptions.json");
273
+ const { definitions } = require("../../schemas/WebpackOptions.json");
274
274
 
275
275
  return {
276
276
  definitions,
@@ -5,10 +5,10 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const WebpackError = require("../errors/WebpackError");
8
9
  const DefinePlugin = require("./DefinePlugin");
9
- const WebpackError = require("./errors/WebpackError");
10
10
 
11
- /** @import Compiler from "./Compiler" */
11
+ /** @import Compiler from "../Compiler" */
12
12
  /** @import { CodeValue } from "./DefinePlugin" */
13
13
 
14
14
  const PLUGIN_NAME = "EnvironmentPlugin";
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const ExternalsPlugin = require("../ExternalsPlugin");
8
+ const ExternalsPlugin = require("../externals/ExternalsPlugin");
9
9
  const { coreModules } = require("../node/nodeBuiltins");
10
10
 
11
11
  /** @import Compiler from "../Compiler" */