@depup/webpack 5.106.0-depup.0 → 5.109.0-depup.0

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