@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
@@ -6,8 +6,8 @@
6
6
  "use strict";
7
7
 
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
- const formatLocation = require("../formatLocation");
10
9
  const { evaluateToString } = require("../javascript/JavascriptParserHelpers");
10
+ const formatLocation = require("../util/formatLocation");
11
11
  const { propertyAccess } = require("../util/property");
12
12
  const CommonJsExportRequireDependency = require("./CommonJsExportRequireDependency");
13
13
  const CommonJsExportsDependency = require("./CommonJsExportsDependency");
@@ -19,7 +19,9 @@ const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
19
19
  /** @typedef {import("estree").AssignmentExpression} AssignmentExpression */
20
20
  /** @typedef {import("estree").CallExpression} CallExpression */
21
21
  /** @typedef {import("estree").Expression} Expression */
22
+ /** @typedef {import("estree").Node} Node */
22
23
  /** @typedef {import("estree").Super} Super */
24
+ /** @typedef {import("estree").ThisExpression} ThisExpression */
23
25
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
24
26
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
25
27
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
@@ -29,7 +31,7 @@ const ModuleDecoratorDependency = require("./ModuleDecoratorDependency");
29
31
  /** @typedef {import("../javascript/JavascriptParser").Members} Members */
30
32
  /** @typedef {import("../javascript/JavascriptParser").StatementPath} StatementPath */
31
33
  /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
32
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
34
+ /** @typedef {import("../javascript/JavascriptModule").JavascriptModuleBuildMeta} JavascriptModuleBuildMeta */
33
35
 
34
36
  /**
35
37
  * This function takes a generic expression and detects whether it is an ObjectExpression.
@@ -59,6 +61,55 @@ const getValueOfPropertyDescription = (expr) => {
59
61
  }
60
62
  };
61
63
 
64
+ /**
65
+ * Extracts the re-exportable expression from a property descriptor, handling
66
+ * both the eager `{ value: <expr> }` form and the lazy
67
+ * `{ get: () => <expr> }` / `{ get() { return <expr>; } }` accessor form used
68
+ * by barrel files (e.g. webpack's own `lib/index.js`). A `set` accessor cannot
69
+ * be reproduced by the rewritten descriptor, so descriptors with a setter are
70
+ * left to the generic handler (which keeps the descriptor verbatim).
71
+ * @param {Expression} expr property descriptor expression
72
+ * @returns {{ expr: Expression, getter: boolean } | undefined} the value expression and whether it is a lazy getter
73
+ */
74
+ const getReexportOfPropertyDescriptor = (expr) => {
75
+ if (expr.type !== "ObjectExpression") return;
76
+ /** @type {Expression | undefined} */
77
+ let valueExpr;
78
+ /** @type {Expression | undefined} */
79
+ let getFn;
80
+ for (const property of expr.properties) {
81
+ if (property.type === "SpreadElement" || property.computed) continue;
82
+ const key = property.key;
83
+ if (key.type !== "Identifier") continue;
84
+ // A setter would be silently dropped by the rewrite — bail out.
85
+ if (key.name === "set") return;
86
+ if (key.name === "value") {
87
+ valueExpr = /** @type {Expression} */ (property.value);
88
+ } else if (key.name === "get") {
89
+ getFn = /** @type {Expression} */ (property.value);
90
+ }
91
+ }
92
+ if (valueExpr) return { expr: valueExpr, getter: false };
93
+ if (
94
+ getFn &&
95
+ (getFn.type === "FunctionExpression" ||
96
+ getFn.type === "ArrowFunctionExpression")
97
+ ) {
98
+ // Arrow with expression body: `() => require("./x")`.
99
+ if (getFn.body.type !== "BlockStatement") {
100
+ return { expr: /** @type {Expression} */ (getFn.body), getter: true };
101
+ }
102
+ // Function body must be exactly `return <expr>;`.
103
+ if (
104
+ getFn.body.body.length === 1 &&
105
+ getFn.body.body[0].type === "ReturnStatement" &&
106
+ getFn.body.body[0].argument
107
+ ) {
108
+ return { expr: getFn.body.body[0].argument, getter: true };
109
+ }
110
+ }
111
+ };
112
+
62
113
  /**
63
114
  * The purpose of this function is to check whether an expression is a truthy literal or not. This is
64
115
  * useful when parsing CommonJS exports, because CommonJS modules can export any value, including falsy
@@ -94,6 +145,7 @@ const isFalsyLiteral = (expr) => {
94
145
  };
95
146
 
96
147
  /**
148
+ * Parses require call.
97
149
  * @param {JavascriptParser} parser the parser
98
150
  * @param {Expression} expr expression
99
151
  * @returns {{ argument: BasicEvaluatedExpression, ids: ExportInfoName[] } | undefined} parsed call
@@ -128,17 +180,119 @@ const parseRequireCall = (parser, expr) => {
128
180
  return { argument: argValue, ids: ids.reverse() };
129
181
  };
130
182
 
183
+ /**
184
+ * Checks if a value is an AST node.
185
+ * @param {unknown} value candidate
186
+ * @returns {value is Node} true when the value is an AST node
187
+ */
188
+ const isNode = (value) =>
189
+ typeof value === "object" &&
190
+ value !== null &&
191
+ typeof (/** @type {{ type?: unknown }} */ (value).type) === "string";
192
+
193
+ /** Positional/metadata keys that never hold child AST nodes. */
194
+ const NON_CHILD_KEYS = new Set([
195
+ "type",
196
+ "start",
197
+ "end",
198
+ "loc",
199
+ "range",
200
+ "leadingComments",
201
+ "trailingComments"
202
+ ]);
203
+
204
+ /** @type {Map<string, string[]>} per node type: own keys that may hold child nodes */
205
+ const childKeysByType = new Map();
206
+
207
+ /**
208
+ * Returns the keys of a node that may hold child nodes, excluding positional
209
+ * metadata. Computed once per node type and cached: acorn initializes every
210
+ * field of a given type (to `null` when absent), so the key set is stable, and
211
+ * the cache stays allocation-free on the hot path after the first node of each
212
+ * type is seen.
213
+ * @param {Node} node node
214
+ * @returns {string[]} candidate child keys
215
+ */
216
+ const getChildKeys = (node) => {
217
+ let keys = childKeysByType.get(node.type);
218
+ if (keys === undefined) {
219
+ keys = Object.keys(node).filter((key) => !NON_CHILD_KEYS.has(key));
220
+ childKeysByType.set(node.type, keys);
221
+ }
222
+ return keys;
223
+ };
224
+
225
+ /**
226
+ * Searches for a `this` belonging to the scanned function's own `this`-scope.
227
+ * Descends into arrow functions, but not into nested functions, static blocks
228
+ * and class field values, which have their own `this`. Class method bodies are
229
+ * function expressions and are skipped by the same rule, while computed keys
230
+ * and `extends` clauses evaluate in the outer scope and are searched. The
231
+ * `this`-scope boundary is enforced when a node is popped, so the generic
232
+ * branch may enumerate any child without crossing it.
233
+ * @param {Node[]} initialNodes nodes to search
234
+ * @returns {ThisExpression | undefined} first own `this` expression
235
+ */
236
+ const findOwnThisExpression = (initialNodes) => {
237
+ const stack = [...initialNodes];
238
+ let node;
239
+ while ((node = stack.pop()) !== undefined) {
240
+ switch (node.type) {
241
+ case "ThisExpression":
242
+ return node;
243
+ case "FunctionExpression":
244
+ case "FunctionDeclaration":
245
+ case "StaticBlock":
246
+ break;
247
+ case "PropertyDefinition":
248
+ if (node.computed) stack.push(node.key);
249
+ break;
250
+ default: {
251
+ const children =
252
+ /** @type {Record<string, unknown>} */
253
+ (/** @type {unknown} */ (node));
254
+ const keys = getChildKeys(node);
255
+ for (let i = 0; i < keys.length; i++) {
256
+ const value = children[keys[i]];
257
+ if (Array.isArray(value)) {
258
+ for (const item of value) {
259
+ if (isNode(item)) stack.push(item);
260
+ }
261
+ } else if (isNode(value)) {
262
+ stack.push(value);
263
+ }
264
+ }
265
+ }
266
+ }
267
+ }
268
+ };
269
+
270
+ /**
271
+ * Returns the own `this` of a function-expression export value. When such a
272
+ * function is called as a method of the exports object, `this` is the exports
273
+ * object and may reach any sibling export (#21178).
274
+ * @param {Node} expr the exported value
275
+ * @returns {ThisExpression | undefined} first own `this` expression
276
+ */
277
+ const getThisAccessInExportedValue = (expr) =>
278
+ expr.type === "FunctionExpression"
279
+ ? findOwnThisExpression([...expr.params, expr.body])
280
+ : undefined;
281
+
131
282
  const PLUGIN_NAME = "CommonJsExportsParserPlugin";
132
283
 
133
284
  class CommonJsExportsParserPlugin {
134
285
  /**
286
+ * Creates an instance of CommonJsExportsParserPlugin.
135
287
  * @param {ModuleGraph} moduleGraph module graph
136
288
  */
137
289
  constructor(moduleGraph) {
290
+ /** @type {ModuleGraph} */
138
291
  this.moduleGraph = moduleGraph;
139
292
  }
140
293
 
141
294
  /**
295
+ * Applies the plugin by registering its hooks on the compiler.
142
296
  * @param {JavascriptParser} parser the parser
143
297
  * @returns {void}
144
298
  */
@@ -148,6 +302,7 @@ class CommonJsExportsParserPlugin {
148
302
  };
149
303
 
150
304
  /**
305
+ * Checks namespace.
151
306
  * @param {boolean} topLevel true, when the export is on top level
152
307
  * @param {Members} members members of the export
153
308
  * @param {Expression | undefined} valueExpr expression for the value
@@ -164,6 +319,7 @@ class CommonJsExportsParserPlugin {
164
319
  }
165
320
  };
166
321
  /**
322
+ * Processes the provided reason.
167
323
  * @param {string=} reason reason
168
324
  */
169
325
  const bailout = (reason) => {
@@ -171,6 +327,7 @@ class CommonJsExportsParserPlugin {
171
327
  if (reason) bailoutHint(reason);
172
328
  };
173
329
  /**
330
+ * Processes the provided reason.
174
331
  * @param {string} reason reason
175
332
  */
176
333
  const bailoutHint = (reason) => {
@@ -178,6 +335,36 @@ class CommonJsExportsParserPlugin {
178
335
  .getOptimizationBailout(parser.state.module)
179
336
  .push(`CommonJS bailout: ${reason}`);
180
337
  };
338
+ /** @type {unknown} */
339
+ let keptAllExportsForState;
340
+ /**
341
+ * An exported function accessing its own `this` may reach any export
342
+ * through it when called as a method of the exports object, so the
343
+ * whole exports object must be kept (#21178).
344
+ * @param {Node} valueExpr the exported value
345
+ * @param {CommonJSDependencyBaseKeywords} base commonjs base keywords
346
+ * @returns {void}
347
+ */
348
+ const keepAllExportsOnThisAccess = (valueExpr, base) => {
349
+ // One bailout per module is enough
350
+ if (keptAllExportsForState === parser.state) return;
351
+ const thisExpr = getThisAccessInExportedValue(valueExpr);
352
+ if (thisExpr === undefined) return;
353
+ keptAllExportsForState = parser.state;
354
+ bailoutHint(
355
+ `this in exported function may access any export, so all exports are kept, at ${formatLocation(
356
+ parser.getLocation(thisExpr)
357
+ )}`
358
+ );
359
+ const dep = new CommonJsSelfReferenceDependency(
360
+ /** @type {Range} */ (thisExpr.range),
361
+ base,
362
+ [],
363
+ false
364
+ );
365
+ dep.loc = parser.getLocation(thisExpr);
366
+ parser.state.module.addDependency(dep);
367
+ };
181
368
 
182
369
  // metadata //
183
370
  parser.hooks.evaluateTypeof
@@ -190,6 +377,7 @@ class CommonJsExportsParserPlugin {
190
377
  // exporting //
191
378
 
192
379
  /**
380
+ * Handle assign export.
193
381
  * @param {AssignmentExpression} expr expression
194
382
  * @param {CommonJSDependencyBaseKeywords} base commonjs base keywords
195
383
  * @param {Members} members members of the export
@@ -216,10 +404,10 @@ class CommonJsExportsParserPlugin {
216
404
  requireCall.ids,
217
405
  !parser.isStatementLevelExpression(expr)
218
406
  );
219
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
407
+ dep.loc = parser.getLocation(expr);
220
408
  dep.optional = Boolean(parser.scope.inTry);
221
409
  parser.state.module.addDependency(dep);
222
- /** @type {BuildMeta} */ (
410
+ /** @type {JavascriptModuleBuildMeta} */ (
223
411
  parser.state.module.buildMeta
224
412
  ).treatAsCommonJs = true;
225
413
 
@@ -241,10 +429,12 @@ class CommonJsExportsParserPlugin {
241
429
  base,
242
430
  remainingMembers
243
431
  );
244
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
432
+ dep.loc = parser.getLocation(expr);
245
433
  parser.state.module.addDependency(dep);
246
- /** @type {BuildMeta} */ (parser.state.module.buildMeta).treatAsCommonJs =
247
- true;
434
+ /** @type {JavascriptModuleBuildMeta} */ (
435
+ parser.state.module.buildMeta
436
+ ).treatAsCommonJs = true;
437
+ keepAllExportsOnThisAccess(expr.right, base);
248
438
  parser.walkExpression(expr.right);
249
439
  return true;
250
440
  };
@@ -288,6 +478,33 @@ class CommonJsExportsParserPlugin {
288
478
  if (typeof property !== "string") return;
289
479
  enableStructuredExports();
290
480
  const descArg = expr.arguments[2];
481
+ // Handle reexporting: `Object.defineProperty(exports, "x", { value: require("./y")[.z] })`
482
+ // and the lazy getter form `{ get: () => require("./y")[.z] }`.
483
+ if (property !== "__esModule") {
484
+ const reexport = getReexportOfPropertyDescriptor(descArg);
485
+ const requireCall =
486
+ reexport && parseRequireCall(parser, reexport.expr);
487
+ if (reexport && requireCall && requireCall.argument.isString()) {
488
+ const dep = new CommonJsExportRequireDependency(
489
+ /** @type {Range} */ (expr.range),
490
+ /** @type {Range} */ (reexport.expr.range),
491
+ `Object.defineProperty(${exportsArg.identifier})`,
492
+ [property],
493
+ /** @type {string} */ (requireCall.argument.string),
494
+ requireCall.ids,
495
+ false
496
+ );
497
+ dep.getter = reexport.getter;
498
+ dep.loc = parser.getLocation(expr);
499
+ dep.optional = Boolean(parser.scope.inTry);
500
+ parser.state.module.addDependency(dep);
501
+ /** @type {JavascriptModuleBuildMeta} */ (
502
+ parser.state.module.buildMeta
503
+ ).treatAsCommonJs = true;
504
+
505
+ return true;
506
+ }
507
+ }
291
508
  checkNamespace(
292
509
  /** @type {StatementPath} */
293
510
  (parser.statementPath).length === 1,
@@ -300,12 +517,24 @@ class CommonJsExportsParserPlugin {
300
517
  `Object.defineProperty(${exportsArg.identifier})`,
301
518
  [property]
302
519
  );
303
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
520
+ dep.loc = parser.getLocation(expr);
304
521
  parser.state.module.addDependency(dep);
305
- /** @type {BuildMeta} */ (
522
+ /** @type {JavascriptModuleBuildMeta} */ (
306
523
  parser.state.module.buildMeta
307
524
  ).treatAsCommonJs = true;
308
525
 
526
+ if (descArg.type === "ObjectExpression") {
527
+ // `value`, `get` and `set` descriptor functions are all called
528
+ // with the exports object as `this`
529
+ for (const descProperty of descArg.properties) {
530
+ if (descProperty.type === "SpreadElement") continue;
531
+ keepAllExportsOnThisAccess(
532
+ descProperty.value,
533
+ /** @type {CommonJSDependencyBaseKeywords} */
534
+ (exportsArg.identifier)
535
+ );
536
+ }
537
+ }
309
538
  parser.walkExpression(expr.arguments[2]);
310
539
  return true;
311
540
  });
@@ -313,6 +542,7 @@ class CommonJsExportsParserPlugin {
313
542
  // Self reference //
314
543
 
315
544
  /**
545
+ * Handle access export.
316
546
  * @param {Expression | Super} expr expression
317
547
  * @param {CommonJSDependencyBaseKeywords} base commonjs base keywords
318
548
  * @param {Members} members members of the export
@@ -324,7 +554,7 @@ class CommonJsExportsParserPlugin {
324
554
  if (members.length === 0) {
325
555
  bailout(
326
556
  `${base} is used directly at ${formatLocation(
327
- /** @type {DependencyLocation} */ (expr.loc)
557
+ parser.getLocation(expr)
328
558
  )}`
329
559
  );
330
560
  }
@@ -333,7 +563,7 @@ class CommonJsExportsParserPlugin {
333
563
  `${base}${propertyAccess(
334
564
  members
335
565
  )}(...) prevents optimization as ${base} is passed as call context at ${formatLocation(
336
- /** @type {DependencyLocation} */ (expr.loc)
566
+ parser.getLocation(expr)
337
567
  )}`
338
568
  );
339
569
  }
@@ -343,10 +573,11 @@ class CommonJsExportsParserPlugin {
343
573
  members,
344
574
  Boolean(call)
345
575
  );
346
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
576
+ dep.loc = parser.getLocation(expr);
347
577
  parser.state.module.addDependency(dep);
348
- /** @type {BuildMeta} */ (parser.state.module.buildMeta).treatAsCommonJs =
349
- true;
578
+ /** @type {JavascriptModuleBuildMeta} */ (
579
+ parser.state.module.buildMeta
580
+ ).treatAsCommonJs = true;
350
581
 
351
582
  if (call) {
352
583
  parser.walkExpressions(call.arguments);
@@ -415,7 +646,7 @@ class CommonJsExportsParserPlugin {
415
646
  : RuntimeGlobals.nodeModuleDecorator,
416
647
  !isHarmony
417
648
  );
418
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
649
+ dep.loc = parser.getLocation(expr);
419
650
  parser.state.module.addDependency(dep);
420
651
  return true;
421
652
  });
@@ -9,23 +9,34 @@ const Template = require("../Template");
9
9
  const { equals } = require("../util/ArrayHelpers");
10
10
  const { getTrimmedIdsAndRange } = require("../util/chainedImports");
11
11
  const makeSerializable = require("../util/makeSerializable");
12
+ const memoize = require("../util/memoize");
12
13
  const { propertyAccess } = require("../util/property");
14
+ const {
15
+ ESM_MODULE_EXPORTS_NAME,
16
+ getRequireEsmModuleExportsAccess,
17
+ isRequireEsmModuleExportsModule
18
+ } = require("./CommonJsDependencyHelpers");
13
19
  const ModuleDependency = require("./ModuleDependency");
14
20
 
15
21
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
16
22
  /** @typedef {import("../Dependency")} Dependency */
23
+ /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
17
24
  /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
18
25
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
26
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
27
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
28
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
23
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
24
29
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
25
30
  /** @typedef {import("../util/chainedImports").IdRanges} IdRanges */
31
+ /** @typedef {import("./HarmonyImportGuard").DependencyGuard} DependencyGuard */
32
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ExportInfoName[], IdRanges | undefined, boolean, undefined | boolean, DependencyGuard[] | undefined]>} ObjectDeserializerContext */
33
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ExportInfoName[], IdRanges | undefined, boolean, undefined | boolean, DependencyGuard[] | undefined]>} ObjectSerializerContext */
34
+
35
+ const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
26
36
 
27
37
  class CommonJsFullRequireDependency extends ModuleDependency {
28
38
  /**
39
+ * Creates an instance of CommonJsFullRequireDependency.
29
40
  * @param {string} request the request string
30
41
  * @param {Range} range location in source code
31
42
  * @param {ExportInfoName[]} names accessed properties on module
@@ -39,12 +50,28 @@ class CommonJsFullRequireDependency extends ModuleDependency {
39
50
  ) {
40
51
  super(request);
41
52
  this.range = range;
53
+ /** @type {string[]} */
42
54
  this.names = names;
55
+ /** @type {IdRanges | undefined} */
43
56
  this.idRanges = idRanges;
44
57
  /** @type {boolean} */
45
58
  this.call = false;
46
59
  /** @type {undefined | boolean} */
47
60
  this.asiSafe = undefined;
61
+ /** @type {DependencyGuard[] | undefined} */
62
+ this.branchGuards = undefined;
63
+ }
64
+
65
+ /**
66
+ * Returns function to determine if the connection is active.
67
+ * @param {ModuleGraph} moduleGraph module graph
68
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
69
+ */
70
+ getCondition(moduleGraph) {
71
+ const guards = this.branchGuards;
72
+ if (guards === undefined) return null;
73
+ return (connection, runtime) =>
74
+ !getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime);
48
75
  }
49
76
 
50
77
  /**
@@ -54,40 +81,56 @@ class CommonJsFullRequireDependency extends ModuleDependency {
54
81
  * @returns {ReferencedExports} referenced exports
55
82
  */
56
83
  getReferencedExports(moduleGraph, runtime) {
57
- if (this.call) {
58
- const importedModule = moduleGraph.getModule(this);
59
- if (
60
- !importedModule ||
61
- importedModule.getExportsType(moduleGraph, false) !== "namespace"
62
- ) {
63
- return [this.names.slice(0, -1)];
64
- }
84
+ const importedModule = moduleGraph.getModule(this);
85
+ // CommonJS property access is never rewritten to a literal, so it can't inline
86
+ if (
87
+ importedModule &&
88
+ isRequireEsmModuleExportsModule(importedModule, moduleGraph)
89
+ ) {
90
+ // When `require(esm)` unwraps a `"module.exports"` named export, the
91
+ // user's property access lands on that value (which webpack does not
92
+ // model), so only the "module.exports" export itself is referenced.
93
+ return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
94
+ }
95
+ if (
96
+ this.call &&
97
+ (!importedModule ||
98
+ importedModule.getExportsType(moduleGraph, false) !== "namespace")
99
+ ) {
100
+ return [{ name: this.names.slice(0, -1), canInline: false }];
65
101
  }
66
- return [this.names];
102
+ return [{ name: this.names, canInline: false }];
67
103
  }
68
104
 
69
105
  /**
106
+ * Serializes this instance into the provided serializer context.
70
107
  * @param {ObjectSerializerContext} context context
71
108
  */
72
109
  serialize(context) {
73
- const { write } = context;
74
- write(this.names);
75
- write(this.idRanges);
76
- write(this.call);
77
- write(this.asiSafe);
110
+ context
111
+ .write(this.names)
112
+ .write(this.idRanges)
113
+ .write(this.call)
114
+ .write(this.asiSafe)
115
+ .write(this.branchGuards);
78
116
  super.serialize(context);
79
117
  }
80
118
 
81
119
  /**
120
+ * Restores this instance from the provided deserializer context.
82
121
  * @param {ObjectDeserializerContext} context context
83
122
  */
84
123
  deserialize(context) {
85
- const { read } = context;
86
- this.names = read();
87
- this.idRanges = read();
88
- this.call = read();
89
- this.asiSafe = read();
90
- super.deserialize(context);
124
+ this.names = context.read();
125
+ const c1 = context.rest;
126
+ this.idRanges = c1.read();
127
+ const c2 = c1.rest;
128
+ this.call = c2.read();
129
+ const c3 = c2.rest;
130
+ this.asiSafe = c3.read();
131
+ const c4 = c3.rest;
132
+ this.branchGuards = c4.read();
133
+ super.deserialize(c4.rest);
91
134
  }
92
135
 
93
136
  get type() {
@@ -103,6 +146,7 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
103
146
  ModuleDependency.Template
104
147
  ) {
105
148
  /**
149
+ * Applies the plugin by registering its hooks on the compiler.
106
150
  * @param {Dependency} dependency the dependency for which the template should be applied
107
151
  * @param {ReplaceSource} source the current replace source which can be modified
108
152
  * @param {DependencyTemplateContext} templateContext the context object
@@ -115,6 +159,13 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
115
159
  ) {
116
160
  const dep = /** @type {CommonJsFullRequireDependency} */ (dependency);
117
161
  if (!dep.range) return;
162
+ const connection = moduleGraph.getConnection(dep);
163
+ // Dead branch: module is excluded and has no id; code is never executed.
164
+ if (connection && !connection.isTargetActive(runtime)) {
165
+ // Replaces the whole member chain, so no property access is left dangling
166
+ source.replace(dep.range[0], dep.range[1] - 1, "null /* dead branch */");
167
+ return;
168
+ }
118
169
  const importedModule = moduleGraph.getModule(dep);
119
170
  let requireExpr = runtimeTemplate.moduleExports({
120
171
  module: importedModule,
@@ -124,6 +175,10 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
124
175
  runtimeRequirements
125
176
  });
126
177
 
178
+ const esmRequireAccess = importedModule
179
+ ? getRequireEsmModuleExportsAccess(importedModule, moduleGraph, runtime)
180
+ : null;
181
+
127
182
  const {
128
183
  trimmedRange: [trimmedRangeStart, trimmedRangeEnd],
129
184
  trimmedIds
@@ -135,15 +190,24 @@ CommonJsFullRequireDependency.Template = class CommonJsFullRequireDependencyTemp
135
190
  dep
136
191
  );
137
192
 
138
- if (importedModule) {
139
- const usedImported = moduleGraph
140
- .getExportsInfo(importedModule)
141
- .getUsedName(trimmedIds, runtime);
193
+ if (esmRequireAccess !== null) {
194
+ const access = `${esmRequireAccess}${propertyAccess(trimmedIds)}`;
195
+ requireExpr =
196
+ dep.asiSafe === true
197
+ ? `(${requireExpr}${access})`
198
+ : `${requireExpr}${access}`;
199
+ } else if (importedModule) {
200
+ // CJS exports are never inlined
201
+ const usedImported = /** @type {string | string[] | false} */ (
202
+ moduleGraph
203
+ .getExportsInfo(importedModule)
204
+ .getUsedName(trimmedIds, runtime)
205
+ );
142
206
  if (usedImported) {
143
207
  const comment = equals(usedImported, trimmedIds)
144
208
  ? ""
145
209
  : `${Template.toNormalComment(propertyAccess(trimmedIds))} `;
146
- const access = `${comment}${propertyAccess(usedImported)}`;
210
+ const access = `${comment}${propertyAccess(/** @type {string[]} */ (usedImported))}`;
147
211
  requireExpr =
148
212
  dep.asiSafe === true
149
213
  ? `(${requireExpr}${access})`