@depup/webpack 5.106.1-depup.0 → 5.109.2-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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -11,7 +11,12 @@ const Template = require("../Template");
11
11
  const { equals } = require("../util/ArrayHelpers");
12
12
  const makeSerializable = require("../util/makeSerializable");
13
13
  const { propertyAccess } = require("../util/property");
14
- const { handleDependencyBase } = require("./CommonJsDependencyHelpers");
14
+ const {
15
+ ESM_MODULE_EXPORTS_NAME,
16
+ getRequireEsmModuleExportsAccess,
17
+ handleDependencyBase,
18
+ isRequireEsmModuleExportsModule
19
+ } = require("./CommonJsDependencyHelpers");
15
20
  const ModuleDependency = require("./ModuleDependency");
16
21
  const processExportInfo = require("./processExportInfo");
17
22
 
@@ -27,10 +32,10 @@ const processExportInfo = require("./processExportInfo");
27
32
  /** @typedef {import("../Module")} Module */
28
33
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
29
34
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
30
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
31
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
32
35
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
33
36
  /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
37
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectDeserializerContext */
38
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectSerializerContext */
34
39
 
35
40
  const idsSymbol = /** @type {symbol} */ (
36
41
  Symbol("CommonJsExportRequireDependency.ids")
@@ -43,6 +48,7 @@ const EMPTY_OBJECT = {};
43
48
 
44
49
  class CommonJsExportRequireDependency extends ModuleDependency {
45
50
  /**
51
+ * Creates an instance of CommonJsExportRequireDependency.
46
52
  * @param {Range} range range
47
53
  * @param {Range | null} valueRange value range
48
54
  * @param {CommonJSDependencyBaseKeywords} base base
@@ -55,12 +61,20 @@ class CommonJsExportRequireDependency extends ModuleDependency {
55
61
  super(request);
56
62
  this.range = range;
57
63
  this.valueRange = valueRange;
64
+ /** @type {CommonJSDependencyBaseKeywords} */
58
65
  this.base = base;
66
+ /** @type {string[]} */
59
67
  this.names = names;
68
+ /** @type {string[]} */
60
69
  this.ids = ids;
70
+ /** @type {boolean} */
61
71
  this.resultUsed = resultUsed;
62
72
  /** @type {undefined | boolean} */
63
73
  this.asiSafe = undefined;
74
+ // true when the reexport is a lazy `{ get: () => require(...) }` accessor
75
+ // (as produced by `Object.defineProperty`) rather than an eager value.
76
+ /** @type {boolean} */
77
+ this.getter = false;
64
78
  }
65
79
 
66
80
  get type() {
@@ -72,6 +86,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
72
86
  }
73
87
 
74
88
  /**
89
+ * Could affect referencing module.
75
90
  * @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module
76
91
  */
77
92
  couldAffectReferencingModule() {
@@ -79,6 +94,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
79
94
  }
80
95
 
81
96
  /**
97
+ * Returns the imported id.
82
98
  * @param {ModuleGraph} moduleGraph the module graph
83
99
  * @returns {ExportInfoName[]} the imported id
84
100
  */
@@ -87,6 +103,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
87
103
  }
88
104
 
89
105
  /**
106
+ * Updates ids using the provided module graph.
90
107
  * @param {ModuleGraph} moduleGraph the module graph
91
108
  * @param {ExportInfoName[]} ids the imported ids
92
109
  * @returns {void}
@@ -103,6 +120,16 @@ class CommonJsExportRequireDependency extends ModuleDependency {
103
120
  */
104
121
  getReferencedExports(moduleGraph, runtime) {
105
122
  const ids = this.getIds(moduleGraph);
123
+ const importedModule = moduleGraph.getModule(this);
124
+ if (
125
+ importedModule &&
126
+ isRequireEsmModuleExportsModule(importedModule, moduleGraph)
127
+ ) {
128
+ // `require(esm)` unwraps the "module.exports" named export; any
129
+ // further property access lands on that value (which webpack does
130
+ // not model), so only the "module.exports" export is observable.
131
+ return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
132
+ }
106
133
  const getFullResult = () => {
107
134
  if (ids.length === 0) {
108
135
  return Dependency.EXPORTS_OBJECT_REFERENCED;
@@ -110,7 +137,8 @@ class CommonJsExportRequireDependency extends ModuleDependency {
110
137
  return [
111
138
  {
112
139
  name: ids,
113
- canMangle: false
140
+ canMangle: false,
141
+ canInline: false
114
142
  }
115
143
  ];
116
144
  };
@@ -145,7 +173,8 @@ class CommonJsExportRequireDependency extends ModuleDependency {
145
173
  }
146
174
  return referencedExports.map((name) => ({
147
175
  name,
148
- canMangle: false
176
+ canMangle: false,
177
+ canInline: false
149
178
  }));
150
179
  }
151
180
 
@@ -155,17 +184,26 @@ class CommonJsExportRequireDependency extends ModuleDependency {
155
184
  * @returns {ExportsSpec | undefined} export names
156
185
  */
157
186
  getExports(moduleGraph) {
187
+ const importedModule = moduleGraph.getModule(this);
188
+ const esmUnwrap =
189
+ importedModule &&
190
+ isRequireEsmModuleExportsModule(importedModule, moduleGraph);
158
191
  if (this.names.length === 1) {
159
192
  const ids = this.getIds(moduleGraph);
160
193
  const name = this.names[0];
161
194
  const from = moduleGraph.getConnection(this);
162
195
  if (!from) return;
196
+ const exportChain = esmUnwrap
197
+ ? [ESM_MODULE_EXPORTS_NAME, ...ids]
198
+ : ids.length === 0
199
+ ? null
200
+ : ids;
163
201
  return {
164
202
  exports: [
165
203
  {
166
204
  name,
167
205
  from,
168
- export: ids.length === 0 ? null : ids,
206
+ export: exportChain,
169
207
  // we can't mangle names that are in an empty object
170
208
  // because one could access the prototype property
171
209
  // when export isn't set yet
@@ -191,6 +229,36 @@ class CommonJsExportRequireDependency extends ModuleDependency {
191
229
  }
192
230
  const from = moduleGraph.getConnection(this);
193
231
  if (!from) return;
232
+ if (esmUnwrap) {
233
+ // Full re-export `module.exports = require("./esm")` of a module
234
+ // with a `"module.exports"` named export: the wrapping module's
235
+ // `module.exports` becomes the unwrapped value, whose own
236
+ // properties webpack cannot enumerate statically.
237
+ return {
238
+ exports: true,
239
+ canMangle: false,
240
+ dependencies: [from.module]
241
+ };
242
+ }
243
+ // The imported namespace ESM hasn't been flagged by
244
+ // FlagDependencyExportsPlugin yet (no exports determined), so its
245
+ // `"module.exports"` unwrap eligibility is still unknown. Star-reexporting
246
+ // now would add `__esModule` (and names) the monotonic merge can't retract
247
+ // once the module turns out to unwrap, making the result order-dependent
248
+ // across runtimes; defer — the `from.module` dependency re-queues us once
249
+ // its exports (owned names, or dynamic `other`) become known.
250
+ if (
251
+ importedModule &&
252
+ importedModule.getExportsType(moduleGraph, false) === "namespace"
253
+ ) {
254
+ const importedExportsInfo = moduleGraph.getExportsInfo(importedModule);
255
+ if (
256
+ importedExportsInfo.otherExportsInfo.provided === false &&
257
+ importedExportsInfo.ownedExports[Symbol.iterator]().next().done
258
+ ) {
259
+ return { exports: [], dependencies: [from.module] };
260
+ }
261
+ }
194
262
  const reexportInfo = this.getStarReexports(
195
263
  moduleGraph,
196
264
  undefined,
@@ -209,7 +277,6 @@ class CommonJsExportRequireDependency extends ModuleDependency {
209
277
  canMangle: !(name in EMPTY_OBJECT) && false
210
278
  })
211
279
  ),
212
- // TODO handle deep reexports
213
280
  dependencies: [from.module]
214
281
  };
215
282
  }
@@ -222,6 +289,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
222
289
  }
223
290
 
224
291
  /**
292
+ * Gets star reexports.
225
293
  * @param {ModuleGraph} moduleGraph the module graph
226
294
  * @param {RuntimeSpec} runtime the runtime
227
295
  * @param {Module} importedModule the imported module (optional)
@@ -308,33 +376,43 @@ class CommonJsExportRequireDependency extends ModuleDependency {
308
376
  }
309
377
 
310
378
  /**
379
+ * Serializes this instance into the provided serializer context.
311
380
  * @param {ObjectSerializerContext} context context
312
381
  */
313
382
  serialize(context) {
314
- const { write } = context;
315
- write(this.asiSafe);
316
- write(this.range);
317
- write(this.valueRange);
318
- write(this.base);
319
- write(this.names);
320
- write(this.ids);
321
- write(this.resultUsed);
383
+ context
384
+ .write(this.asiSafe)
385
+ .write(this.range)
386
+ .write(this.valueRange)
387
+ .write(this.base)
388
+ .write(this.names)
389
+ .write(this.ids)
390
+ .write(this.resultUsed)
391
+ .write(this.getter);
322
392
  super.serialize(context);
323
393
  }
324
394
 
325
395
  /**
396
+ * Restores this instance from the provided deserializer context.
326
397
  * @param {ObjectDeserializerContext} context context
327
398
  */
328
399
  deserialize(context) {
329
- const { read } = context;
330
- this.asiSafe = read();
331
- this.range = read();
332
- this.valueRange = read();
333
- this.base = read();
334
- this.names = read();
335
- this.ids = read();
336
- this.resultUsed = read();
337
- super.deserialize(context);
400
+ this.asiSafe = context.read();
401
+ const c1 = context.rest;
402
+ this.range = c1.read();
403
+ const c2 = c1.rest;
404
+ this.valueRange = c2.read();
405
+ const c3 = c2.rest;
406
+ this.base = c3.read();
407
+ const c4 = c3.rest;
408
+ this.names = c4.read();
409
+ const c5 = c4.rest;
410
+ this.ids = c5.read();
411
+ const c6 = c5.rest;
412
+ this.resultUsed = c6.read();
413
+ const c7 = c6.rest;
414
+ this.getter = c7.read();
415
+ super.deserialize(c7.rest);
338
416
  }
339
417
  }
340
418
 
@@ -347,6 +425,7 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
347
425
  ModuleDependency.Template
348
426
  ) {
349
427
  /**
428
+ * Applies the plugin by registering its hooks on the compiler.
350
429
  * @param {Dependency} dependency the dependency for which the template should be applied
351
430
  * @param {ReplaceSource} source the current replace source which can be modified
352
431
  * @param {DependencyTemplateContext} templateContext the context object
@@ -365,9 +444,10 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
365
444
  }
366
445
  ) {
367
446
  const dep = /** @type {CommonJsExportRequireDependency} */ (dependency);
368
- const used = moduleGraph
369
- .getExportsInfo(module)
370
- .getUsedName(dep.names, runtime);
447
+ // CJS exports are never inlined
448
+ const used = /** @type {string | string[] | false} */ (
449
+ moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
450
+ );
371
451
 
372
452
  const [type, base] = handleDependencyBase(
373
453
  dep.base,
@@ -385,14 +465,24 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
385
465
  });
386
466
  if (importedModule) {
387
467
  const ids = dep.getIds(moduleGraph);
388
- const usedImported = moduleGraph
389
- .getExportsInfo(importedModule)
390
- .getUsedName(ids, runtime);
391
- if (usedImported) {
392
- const comment = equals(usedImported, ids)
393
- ? ""
394
- : `${Template.toNormalComment(propertyAccess(ids))} `;
395
- requireExpr += `${comment}${propertyAccess(usedImported)}`;
468
+ const esmRequireAccess = getRequireEsmModuleExportsAccess(
469
+ importedModule,
470
+ moduleGraph,
471
+ runtime
472
+ );
473
+ if (esmRequireAccess !== null) {
474
+ requireExpr += `${esmRequireAccess}${propertyAccess(ids)}`;
475
+ } else {
476
+ // CJS exports are never inlined
477
+ const usedImported = /** @type {string | string[] | false} */ (
478
+ moduleGraph.getExportsInfo(importedModule).getUsedName(ids, runtime)
479
+ );
480
+ if (usedImported) {
481
+ const comment = equals(usedImported, ids)
482
+ ? ""
483
+ : `${Template.toNormalComment(propertyAccess(ids))} `;
484
+ requireExpr += `${comment}${propertyAccess(/** @type {string[]} */ (usedImported))}`;
485
+ }
396
486
  }
397
487
  }
398
488
 
@@ -402,12 +492,41 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
402
492
  dep.range[0],
403
493
  dep.range[1] - 1,
404
494
  used
405
- ? `${base}${propertyAccess(used)} = ${requireExpr}`
495
+ ? `${base}${propertyAccess(/** @type {string[]} */ (used))} = ${requireExpr}`
406
496
  : `/* unused reexport */ ${requireExpr}`
407
497
  );
408
498
  return;
409
- case "Object.defineProperty":
410
- throw new Error("TODO");
499
+ case "Object.defineProperty": {
500
+ // `Object.defineProperty(exports, "name", { value: require("...") })`
501
+ // or the lazy getter form `{ get: () => require("...") }` used by
502
+ // barrel files (e.g. webpack's own `lib/index.js`).
503
+ const valueRange = /** @type {Range} */ (dep.valueRange);
504
+ if (!used) {
505
+ // A lazy getter never runs `require` until accessed, so an unused
506
+ // one can be dropped entirely; an eager value must keep side effects.
507
+ source.replace(
508
+ dep.range[0],
509
+ dep.range[1] - 1,
510
+ dep.getter
511
+ ? "/* unused reexport */ 0"
512
+ : `/* unused reexport */ ${requireExpr}`
513
+ );
514
+ return;
515
+ }
516
+ const descriptor = dep.getter
517
+ ? "enumerable: true, get: () => ("
518
+ : "value: (";
519
+ source.replace(
520
+ dep.range[0],
521
+ valueRange[0] - 1,
522
+ `Object.defineProperty(${base}${propertyAccess(
523
+ /** @type {string[]} */ (used).slice(0, -1)
524
+ )}, ${JSON.stringify(used[used.length - 1])}, { ${descriptor}`
525
+ );
526
+ source.replace(valueRange[0], valueRange[1] - 1, requireExpr);
527
+ source.replace(valueRange[1], dep.range[1] - 1, ") })");
528
+ return;
529
+ }
411
530
  default:
412
531
  throw new Error("Unexpected type");
413
532
  }
@@ -8,7 +8,10 @@
8
8
  const InitFragment = require("../InitFragment");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const { propertyAccess } = require("../util/property");
11
- const { handleDependencyBase } = require("./CommonJsDependencyHelpers");
11
+ const {
12
+ getConcatenatedExportAccess,
13
+ handleDependencyBase
14
+ } = require("./CommonJsDependencyHelpers");
12
15
  const NullDependency = require("./NullDependency");
13
16
 
14
17
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
@@ -18,14 +21,15 @@ const NullDependency = require("./NullDependency");
18
21
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
22
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
20
23
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
24
  /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
25
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectDeserializerContext */
26
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectSerializerContext */
24
27
 
25
28
  const EMPTY_OBJECT = {};
26
29
 
27
30
  class CommonJsExportsDependency extends NullDependency {
28
31
  /**
32
+ * Creates an instance of CommonJsExportsDependency.
29
33
  * @param {Range} range range
30
34
  * @param {Range | null} valueRange value range
31
35
  * @param {CommonJSDependencyBaseKeywords} base base
@@ -35,7 +39,9 @@ class CommonJsExportsDependency extends NullDependency {
35
39
  super();
36
40
  this.range = range;
37
41
  this.valueRange = valueRange;
42
+ /** @type {CommonJSDependencyBaseKeywords} */
38
43
  this.base = base;
44
+ /** @type {string[]} */
39
45
  this.names = names;
40
46
  }
41
47
 
@@ -65,27 +71,31 @@ class CommonJsExportsDependency extends NullDependency {
65
71
  }
66
72
 
67
73
  /**
74
+ * Serializes this instance into the provided serializer context.
68
75
  * @param {ObjectSerializerContext} context context
69
76
  */
70
77
  serialize(context) {
71
- const { write } = context;
72
- write(this.range);
73
- write(this.valueRange);
74
- write(this.base);
75
- write(this.names);
78
+ context
79
+ .write(this.range)
80
+ .write(this.valueRange)
81
+ .write(this.base)
82
+ .write(this.names);
76
83
  super.serialize(context);
77
84
  }
78
85
 
79
86
  /**
87
+ * Restores this instance from the provided deserializer context.
80
88
  * @param {ObjectDeserializerContext} context context
81
89
  */
82
90
  deserialize(context) {
83
- const { read } = context;
84
- this.range = read();
85
- this.valueRange = read();
86
- this.base = read();
87
- this.names = read();
88
- super.deserialize(context);
91
+ this.range = context.read();
92
+ const c1 = context.rest;
93
+ this.valueRange = c1.read();
94
+ const c2 = c1.rest;
95
+ this.base = c2.read();
96
+ const c3 = c2.rest;
97
+ this.names = c3.read();
98
+ super.deserialize(c3.rest);
89
99
  }
90
100
  }
91
101
 
@@ -98,6 +108,7 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
98
108
  NullDependency.Template
99
109
  ) {
100
110
  /**
111
+ * Applies the plugin by registering its hooks on the compiler.
101
112
  * @param {Dependency} dependency the dependency for which the template should be applied
102
113
  * @param {ReplaceSource} source the current replace source which can be modified
103
114
  * @param {DependencyTemplateContext} templateContext the context object
@@ -106,12 +117,55 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
106
117
  apply(
107
118
  dependency,
108
119
  source,
109
- { module, moduleGraph, initFragments, runtimeRequirements, runtime }
120
+ {
121
+ module,
122
+ moduleGraph,
123
+ initFragments,
124
+ runtimeRequirements,
125
+ runtime,
126
+ concatenationScope
127
+ }
110
128
  ) {
111
129
  const dep = /** @type {CommonJsExportsDependency} */ (dependency);
112
- const used = moduleGraph
113
- .getExportsInfo(module)
114
- .getUsedName(dep.names, runtime);
130
+ // CJS exports are never inlined
131
+ const used = /** @type {string | string[] | false} */ (
132
+ moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
133
+ );
134
+
135
+ if (concatenationScope) {
136
+ // eligibility is enforced by JavascriptGenerator.getConcatenationBailoutReason
137
+ if (dep.base !== "exports" && dep.base !== "module.exports") {
138
+ throw new Error(
139
+ `Unsupported base ${dep.base} in concatenated CommonJS module`
140
+ );
141
+ }
142
+ if (!used) {
143
+ initFragments.push(
144
+ new InitFragment(
145
+ "var __webpack_unused_export__;\n",
146
+ InitFragment.STAGE_CONSTANTS,
147
+ 0,
148
+ "__webpack_unused_export__"
149
+ )
150
+ );
151
+ source.replace(
152
+ dep.range[0],
153
+ dep.range[1] - 1,
154
+ "__webpack_unused_export__"
155
+ );
156
+ return;
157
+ }
158
+ source.replace(
159
+ dep.range[0],
160
+ dep.range[1] - 1,
161
+ getConcatenatedExportAccess(
162
+ concatenationScope,
163
+ initFragments,
164
+ dep.names
165
+ )
166
+ );
167
+ return;
168
+ }
115
169
 
116
170
  const [type, base] = handleDependencyBase(
117
171
  dep.base,
@@ -140,7 +194,7 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
140
194
  source.replace(
141
195
  dep.range[0],
142
196
  dep.range[1] - 1,
143
- `${base}${propertyAccess(used)}`
197
+ `${base}${propertyAccess(/** @type {string[]} */ (used))}`
144
198
  );
145
199
  return;
146
200
  case "Object.defineProperty":
@@ -169,7 +223,7 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
169
223
  dep.range[0],
170
224
  /** @type {Range} */ (dep.valueRange)[0] - 1,
171
225
  `Object.defineProperty(${base}${propertyAccess(
172
- used.slice(0, -1)
226
+ /** @type {string[]} */ (used).slice(0, -1)
173
227
  )}, ${JSON.stringify(used[used.length - 1])}, (`
174
228
  );
175
229
  source.replace(