@depup/webpack 5.109.2-depup.0 → 5.110.3-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 (647) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +46 -35
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +107 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +91 -26
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +111 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +40 -49
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +152 -103
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +12 -6
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5334 -0
  160. package/lib/css/syntax.js +9647 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +170 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +49 -31
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +73 -49
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +50 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -0,0 +1,102 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const makeSerializable = require("../util/makeSerializable");
9
+ const ConstDependency = require("./ConstDependency");
10
+ const NullDependency = require("./NullDependency");
11
+
12
+ /** @import { ReplaceSource } from "webpack-sources" */
13
+ /** @import Dependency, { UpdateHashContext } from "../Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
+ /** @import { Range } from "../javascript/JavascriptParser" */
16
+ /**
17
+ * @import {
18
+ * ObjectDeserializerContext,
19
+ * ObjectSerializerContext
20
+ * } from "../serialization/ObjectMiddleware"
21
+ */
22
+ /** @import Hash from "../util/Hash" */
23
+
24
+ /**
25
+ * A constant replacement whose source is only valid in emitted output (e.g.
26
+ * native `import.meta`), with a separate expression for build-time execution.
27
+ */
28
+ class BuildTimeConstDependency extends ConstDependency {
29
+ /**
30
+ * Creates an instance of BuildTimeConstDependency.
31
+ * @param {string} expression the expression
32
+ * @param {string} buildTimeExpression the expression for build-time execution
33
+ * @param {Range} range the source range
34
+ * @param {(string[] | null)=} runtimeRequirements runtime requirements
35
+ */
36
+ constructor(expression, buildTimeExpression, range, runtimeRequirements) {
37
+ super(expression, range, runtimeRequirements);
38
+ /** @type {string} */
39
+ this.buildTimeExpression = buildTimeExpression;
40
+ }
41
+
42
+ /**
43
+ * Updates the hash with the data contributed by this instance.
44
+ * @param {Hash} hash hash to be updated
45
+ * @param {UpdateHashContext} context context
46
+ * @returns {void}
47
+ */
48
+ updateHash(hash, context) {
49
+ super.updateHash(hash, context);
50
+ hash.update(this.buildTimeExpression);
51
+ }
52
+
53
+ /**
54
+ * Serializes this instance into the provided serializer context.
55
+ * @param {ObjectSerializerContext} context context
56
+ */
57
+ serialize(context) {
58
+ context.write(this.buildTimeExpression);
59
+ super.serialize(context);
60
+ }
61
+
62
+ /**
63
+ * Restores this instance from the provided deserializer context.
64
+ * @param {ObjectDeserializerContext} context context
65
+ */
66
+ deserialize(context) {
67
+ this.buildTimeExpression = context.read();
68
+ super.deserialize(context.rest);
69
+ }
70
+ }
71
+
72
+ makeSerializable(
73
+ BuildTimeConstDependency,
74
+ "webpack/lib/dependencies/BuildTimeConstDependency"
75
+ );
76
+
77
+ BuildTimeConstDependency.Template = class BuildTimeConstDependencyTemplate extends (
78
+ NullDependency.Template
79
+ ) {
80
+ /**
81
+ * Applies the plugin by registering its hooks on the compiler.
82
+ * @param {Dependency} dependency the dependency for which the template should be applied
83
+ * @param {ReplaceSource} source the current replace source which can be modified
84
+ * @param {DependencyTemplateContext} templateContext the context object
85
+ * @returns {void}
86
+ */
87
+ apply(dependency, source, templateContext) {
88
+ const dep = /** @type {BuildTimeConstDependency} */ (dependency);
89
+ if (dep.runtimeRequirements) {
90
+ for (const req of dep.runtimeRequirements) {
91
+ templateContext.runtimeRequirements.add(req);
92
+ }
93
+ }
94
+ const expression = templateContext.chunkGraph.buildTimeExecution
95
+ ? dep.buildTimeExpression
96
+ : dep.expression;
97
+ const range = /** @type {Range} */ (dep.range);
98
+ source.replace(range[0], range[1] - 1, expression);
99
+ }
100
+ };
101
+
102
+ module.exports = BuildTimeConstDependency;
@@ -10,14 +10,17 @@ const InitFragment = require("../InitFragment");
10
10
  const makeSerializable = require("../util/makeSerializable");
11
11
  const NullDependency = require("./NullDependency");
12
12
 
13
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../Dependency")} Dependency */
15
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
16
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
- /** @typedef {import("../util/Hash")} Hash */
13
+ /** @import { ReplaceSource } from "webpack-sources" */
14
+ /** @import Dependency, { UpdateHashContext } from "../Dependency" */
15
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
16
+ /** @import { Range } from "../javascript/JavascriptParser" */
17
+ /**
18
+ * @import {
19
+ * ObjectDeserializerContext,
20
+ * ObjectSerializerContext
21
+ * } from "../serialization/ObjectMiddleware"
22
+ */
23
+ /** @import Hash from "../util/Hash" */
21
24
 
22
25
  class CachedConstDependency extends NullDependency {
23
26
  /**
@@ -5,17 +5,15 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const InitFragment = require("../InitFragment");
8
+ const Entrypoint = require("../Entrypoint");
9
9
  const RuntimeGlobals = require("../RuntimeGlobals");
10
- const Template = require("../Template");
11
10
  const { propertyAccess } = require("../util/property");
12
11
 
13
- /** @typedef {import("../ConcatenationScope")} ConcatenationScope */
14
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
15
- /** @typedef {import("../Module")} Module */
16
- /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
17
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
12
+ /** @import ChunkGraph from "../ChunkGraph" */
13
+ /** @import Module, { RuntimeRequirements } from "../Module" */
14
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
15
+ /** @import ModuleGraph from "../ModuleGraph" */
16
+ /** @import { RuntimeSpec } from "../util/runtime" */
19
17
  /** @typedef {"exports" | "module.exports" | "this" | "Object.defineProperty(exports)" | "Object.defineProperty(module.exports)" | "Object.defineProperty(this)"} CommonJSDependencyBaseKeywords */
20
18
 
21
19
  /**
@@ -75,54 +73,65 @@ const getRequireEsmModuleExportsAccess = (
75
73
 
76
74
  module.exports.ESM_MODULE_EXPORTS_NAME = ESM_MODULE_EXPORTS_NAME;
77
75
 
76
+ module.exports.getRequireEsmModuleExportsAccess =
77
+ getRequireEsmModuleExportsAccess;
78
+
78
79
  /**
79
- * Rewrites an `exports.<names>` reference of a concatenated CommonJS module to
80
- * a hoisted module-scope variable and registers that variable as the export's
81
- * symbol, so other concatenated modules bind to it directly.
82
- * @param {ConcatenationScope} concatenationScope the concatenation scope
83
- * @param {InitFragment<GenerateContext>[]} initFragments init fragments (receives the `var` declaration)
84
- * @param {string[]} names full member chain of the reference (at least one entry)
85
- * @returns {string} replacement expression for the whole reference
80
+ * Whether the base keyword reads the module's top-level `this`.
81
+ * @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base
82
+ * @returns {boolean} true when the base is `this`
86
83
  */
87
- module.exports.getConcatenatedExportAccess = (
88
- concatenationScope,
89
- initFragments,
90
- names
91
- ) => {
92
- const name = names[0];
93
- const identifier = Template.toIdentifier(name);
94
- // A sanitized name could collide with another export ("a-b" vs "a_b"),
95
- // so non-identifier names get a hex suffix of the raw name.
96
- const symbol = `__WEBPACK_CJS_EXPORT_${
97
- identifier === name
98
- ? name
99
- : `${identifier}_${Buffer.from(name, "utf8").toString("hex")}`
100
- }__`;
101
- initFragments.push(
102
- new InitFragment(
103
- `var ${symbol};\n`,
104
- InitFragment.STAGE_CONSTANTS,
105
- 0,
106
- `cjs concatenated export ${name}`
107
- )
108
- );
109
- concatenationScope.registerExport(name, symbol);
110
- return `${symbol}${propertyAccess(names, 1)}`;
84
+ const isThisBase = (depBase) =>
85
+ depBase === "this" || depBase === "Object.defineProperty(this)";
86
+
87
+ /**
88
+ * A classic worker script's top-level `this` is its global scope, not the
89
+ * module's exports. True only for a runtime every entry of which is a worker,
90
+ * so a module imported elsewhere keeps exports semantics in that runtime.
91
+ * @param {Module} module the module
92
+ * @param {ChunkGraph} chunkGraph the chunk graph
93
+ * @param {RuntimeSpec} runtime the runtime code is generated for
94
+ * @param {RuntimeTemplate=} runtimeTemplate the runtime template
95
+ * @returns {boolean} true when `this` is the worker's global scope
96
+ */
97
+ const isWorkerEntryThis = (module, chunkGraph, runtime, runtimeTemplate) => {
98
+ // a module worker or worklet is an ES module, where `this` is undefined and
99
+ // there is nothing to resolve it to
100
+ if (
101
+ typeof runtime !== "string" ||
102
+ runtimeTemplate === undefined ||
103
+ runtimeTemplate.isModule()
104
+ ) {
105
+ return false;
106
+ }
107
+ let workerEntry = false;
108
+ for (const chunk of chunkGraph.getModuleChunks(module)) {
109
+ if (chunk.runtime !== runtime) continue;
110
+ for (const group of chunk.groupsIterable) {
111
+ if (!(group instanceof Entrypoint)) continue;
112
+ const { options } = group;
113
+ // an entry may pin a worker to a non-worker entry's runtime, leaving one
114
+ // code generation for both roles: keep exports, the only safe answer
115
+ if (!options.worker || options.worklet) return false;
116
+ workerEntry = true;
117
+ }
118
+ }
119
+ return workerEntry;
111
120
  };
112
- module.exports.getRequireEsmModuleExportsAccess =
113
- getRequireEsmModuleExportsAccess;
114
121
 
115
122
  /**
116
123
  * Returns type and base.
117
124
  * @param {CommonJSDependencyBaseKeywords} depBase commonjs dependency base
118
125
  * @param {Module} module module
119
126
  * @param {RuntimeRequirements} runtimeRequirements runtime requirements
127
+ * @param {boolean=} isWorkerEntry whether `this` is a classic worker's global scope
120
128
  * @returns {[string, string]} type and base
121
129
  */
122
130
  module.exports.handleDependencyBase = (
123
131
  depBase,
124
132
  module,
125
- runtimeRequirements
133
+ runtimeRequirements,
134
+ isWorkerEntry
126
135
  ) => {
127
136
  /** @type {string} */
128
137
  let base;
@@ -140,8 +149,13 @@ module.exports.handleDependencyBase = (
140
149
  type = "expression";
141
150
  break;
142
151
  case "this":
143
- runtimeRequirements.add(RuntimeGlobals.thisAsExports);
144
- base = "this";
152
+ if (isWorkerEntry) {
153
+ runtimeRequirements.add(RuntimeGlobals.global);
154
+ base = RuntimeGlobals.global;
155
+ } else {
156
+ runtimeRequirements.add(RuntimeGlobals.thisAsExports);
157
+ base = "this";
158
+ }
145
159
  type = "expression";
146
160
  break;
147
161
  case "Object.defineProperty(exports)":
@@ -155,8 +169,13 @@ module.exports.handleDependencyBase = (
155
169
  type = "Object.defineProperty";
156
170
  break;
157
171
  case "Object.defineProperty(this)":
158
- runtimeRequirements.add(RuntimeGlobals.thisAsExports);
159
- base = "this";
172
+ if (isWorkerEntry) {
173
+ runtimeRequirements.add(RuntimeGlobals.global);
174
+ base = RuntimeGlobals.global;
175
+ } else {
176
+ runtimeRequirements.add(RuntimeGlobals.thisAsExports);
177
+ base = "this";
178
+ }
160
179
  type = "Object.defineProperty";
161
180
  break;
162
181
  default:
@@ -167,3 +186,5 @@ module.exports.handleDependencyBase = (
167
186
  };
168
187
  module.exports.isRequireEsmModuleExportsModule =
169
188
  isRequireEsmModuleExportsModule;
189
+ module.exports.isThisBase = isThisBase;
190
+ module.exports.isWorkerEntryThis = isWorkerEntryThis;
@@ -20,20 +20,29 @@ const {
20
20
  const ModuleDependency = require("./ModuleDependency");
21
21
  const processExportInfo = require("./processExportInfo");
22
22
 
23
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
24
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
25
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
26
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
27
- /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
28
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
29
- /** @typedef {import("../ExportsInfo")} ExportsInfo */
30
- /** @typedef {import("../ExportsInfo").ExportInfo} ExportInfo */
31
- /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
32
- /** @typedef {import("../Module")} Module */
33
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
34
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
35
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
36
- /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
23
+ /** @import { ReplaceSource } from "webpack-sources" */
24
+ /**
25
+ * @import {
26
+ * ExportsSpec,
27
+ * GetConditionFn,
28
+ * RawReferencedExports,
29
+ * ReferencedExports,
30
+ * TRANSITIVE,
31
+ * ExportInfoName
32
+ * } from "../Dependency"
33
+ */
34
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
35
+ /** @import ExportsInfo, { ExportInfo } from "../ExportsInfo" */
36
+ /** @import Module from "../Module" */
37
+ /** @import ModuleGraph from "../ModuleGraph" */
38
+ /** @import ModuleGraphConnection from "../ModuleGraphConnection" */
39
+ /** @import { Range } from "../javascript/JavascriptParser" */
40
+ /** @import { RuntimeSpec } from "../util/runtime" */
41
+ /**
42
+ * @import {
43
+ * CommonJSDependencyBaseKeywords
44
+ * } from "./CommonJsDependencyHelpers"
45
+ */
37
46
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectDeserializerContext */
38
47
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectSerializerContext */
39
48
 
@@ -93,6 +102,40 @@ class CommonJsExportRequireDependency extends ModuleDependency {
93
102
  return Dependency.TRANSITIVE;
94
103
  }
95
104
 
105
+ /**
106
+ * Returns true if this dependency can be concatenated
107
+ * @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
108
+ * @returns {boolean} true if this dependency can be concatenated
109
+ */
110
+ canConcatenate(concatenateCommonJsModules) {
111
+ return concatenateCommonJsModules;
112
+ }
113
+
114
+ /**
115
+ * Returns function to determine if the connection is active.
116
+ * @param {ModuleGraph} moduleGraph module graph
117
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
118
+ */
119
+ getCondition(moduleGraph) {
120
+ // Conservative: keep `module.exports = require(...)` (names empty) active even
121
+ // when the parent is evaluation-only and the target is side-effect-free.
122
+ if (this.resultUsed || this.names.length === 0) return null;
123
+ const names = this.names;
124
+ const getter = this.getter;
125
+ return (connection, runtime) => {
126
+ const parentModule = moduleGraph.getParentModule(this);
127
+ if (!parentModule) return true;
128
+ const used = moduleGraph
129
+ .getExportsInfo(parentModule)
130
+ .getUsedName(names, runtime);
131
+ if (used !== false) return true;
132
+ if (getter) return false;
133
+ const refModule = connection.resolvedModule;
134
+ if (!refModule) return true;
135
+ return refModule.getSideEffectsConnectionState(moduleGraph);
136
+ };
137
+ }
138
+
96
139
  /**
97
140
  * Returns the imported id.
98
141
  * @param {ModuleGraph} moduleGraph the module graph
@@ -149,7 +192,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
149
192
  );
150
193
  for (const name of this.names) {
151
194
  const exportInfo =
152
- /** @type {ExportInfo} */
195
+ /** @type {InstanceType<ExportInfo>} */
153
196
  (exportsInfo.getReadOnlyExportInfo(name));
154
197
  const used = exportInfo.getUsed(runtime);
155
198
  if (used === UsageState.Unused) return Dependency.NO_EXPORTS_REFERENCED;
@@ -440,7 +483,8 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
440
483
  chunkGraph,
441
484
  moduleGraph,
442
485
  runtimeRequirements,
443
- runtime
486
+ runtime,
487
+ concatenationScope
444
488
  }
445
489
  ) {
446
490
  const dep = /** @type {CommonJsExportRequireDependency} */ (dependency);
@@ -449,6 +493,16 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
449
493
  moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
450
494
  );
451
495
 
496
+ const connection = /** @type {ModuleGraphConnection | undefined} */ (
497
+ moduleGraph.getConnection(dep)
498
+ );
499
+ // Inactive unused reexport: no module id; drop to a no-op.
500
+ // Missing connection (e.g. IgnorePlugin) must keep the require so it throws.
501
+ if (!used && connection && !connection.isTargetActive(runtime)) {
502
+ source.replace(dep.range[0], dep.range[1] - 1, "/* unused reexport */ 0");
503
+ return;
504
+ }
505
+
452
506
  const [type, base] = handleDependencyBase(
453
507
  dep.base,
454
508
  module,
@@ -456,32 +510,55 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
456
510
  );
457
511
 
458
512
  const importedModule = moduleGraph.getModule(dep);
459
- let requireExpr = runtimeTemplate.moduleExports({
460
- module: importedModule,
461
- chunkGraph,
462
- request: dep.request,
463
- weak: dep.weak,
464
- runtimeRequirements
465
- });
466
- if (importedModule) {
513
+ /** @type {string} */
514
+ let requireExpr;
515
+ if (
516
+ concatenationScope &&
517
+ importedModule &&
518
+ concatenationScope.isModuleInScope(importedModule)
519
+ ) {
520
+ // The alias reads the target's exports value, so it binds like `require()`
521
+ // rather than an ESM import: no interop.
467
522
  const ids = dep.getIds(moduleGraph);
468
- const esmRequireAccess = getRequireEsmModuleExportsAccess(
523
+ const requestedIds = isRequireEsmModuleExportsModule(
469
524
  importedModule,
470
- moduleGraph,
471
- runtime
472
- );
473
- if (esmRequireAccess !== null) {
474
- requireExpr += `${esmRequireAccess}${propertyAccess(ids)}`;
475
- } else {
476
- // CJS exports are never inlined
477
- const usedImported = /** @type {string | string[] | false} */ (
478
- moduleGraph.getExportsInfo(importedModule).getUsedName(ids, runtime)
525
+ moduleGraph
526
+ )
527
+ ? [ESM_MODULE_EXPORTS_NAME, ...ids]
528
+ : ids;
529
+ requireExpr = concatenationScope.createModuleReference(importedModule, {
530
+ ids: requestedIds.length > 0 ? requestedIds : undefined,
531
+ asiSafe: true,
532
+ moduleExportsAccess: true
533
+ });
534
+ } else {
535
+ requireExpr = runtimeTemplate.moduleExports({
536
+ module: importedModule,
537
+ chunkGraph,
538
+ request: dep.request,
539
+ weak: dep.weak,
540
+ runtimeRequirements
541
+ });
542
+ if (importedModule) {
543
+ const ids = dep.getIds(moduleGraph);
544
+ const esmRequireAccess = getRequireEsmModuleExportsAccess(
545
+ importedModule,
546
+ moduleGraph,
547
+ runtime
479
548
  );
480
- if (usedImported) {
481
- const comment = equals(usedImported, ids)
482
- ? ""
483
- : `${Template.toNormalComment(propertyAccess(ids))} `;
484
- requireExpr += `${comment}${propertyAccess(/** @type {string[]} */ (usedImported))}`;
549
+ if (esmRequireAccess !== null) {
550
+ requireExpr += `${esmRequireAccess}${propertyAccess(ids)}`;
551
+ } else {
552
+ // CJS exports are never inlined
553
+ const usedImported = /** @type {string | string[] | false} */ (
554
+ moduleGraph.getExportsInfo(importedModule).getUsedName(ids, runtime)
555
+ );
556
+ if (usedImported) {
557
+ const comment = equals(usedImported, ids)
558
+ ? ""
559
+ : `${Template.toNormalComment(propertyAccess(ids))} `;
560
+ requireExpr += `${comment}${propertyAccess(/** @type {string[]} */ (usedImported))}`;
561
+ }
485
562
  }
486
563
  }
487
564
  }
@@ -502,14 +579,12 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
502
579
  // barrel files (e.g. webpack's own `lib/index.js`).
503
580
  const valueRange = /** @type {Range} */ (dep.valueRange);
504
581
  if (!used) {
505
- // A lazy getter never runs `require` until accessed, so an unused
506
- // one can be dropped entirely; an eager value must keep side effects.
582
+ // Active unused eager reexport: keep side effects. Unused getters
583
+ // are inactive and already replaced with `0` above.
507
584
  source.replace(
508
585
  dep.range[0],
509
586
  dep.range[1] - 1,
510
- dep.getter
511
- ? "/* unused reexport */ 0"
512
- : `/* unused reexport */ ${requireExpr}`
587
+ `/* unused reexport */ ${requireExpr}`
513
588
  );
514
589
  return;
515
590
  }
@@ -533,5 +608,6 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
533
608
  }
534
609
  };
535
610
 
611
+ CommonJsExportRequireDependency.idsSymbol = idsSymbol;
612
+
536
613
  module.exports = CommonJsExportRequireDependency;
537
- module.exports.idsSymbol = idsSymbol;
@@ -9,19 +9,29 @@ const InitFragment = require("../InitFragment");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const { propertyAccess } = require("../util/property");
11
11
  const {
12
- getConcatenatedExportAccess,
13
- handleDependencyBase
12
+ handleDependencyBase,
13
+ isThisBase,
14
+ isWorkerEntryThis
14
15
  } = require("./CommonJsDependencyHelpers");
15
16
  const NullDependency = require("./NullDependency");
16
17
 
17
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
18
- /** @typedef {import("../Dependency")} Dependency */
19
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
20
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
21
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
22
- /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
23
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
24
- /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
18
+ /** @import { ReplaceSource } from "webpack-sources" */
19
+ /**
20
+ * @import Dependency, {
21
+ * ExportsSpec,
22
+ * UpdateHashContext,
23
+ * ExportInfoName
24
+ * } from "../Dependency"
25
+ */
26
+ /** @import Hash from "../util/Hash" */
27
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
28
+ /** @import ModuleGraph from "../ModuleGraph" */
29
+ /** @import { Range } from "../javascript/JavascriptParser" */
30
+ /**
31
+ * @import {
32
+ * CommonJSDependencyBaseKeywords
33
+ * } from "./CommonJsDependencyHelpers"
34
+ */
25
35
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectDeserializerContext */
26
36
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectSerializerContext */
27
37
 
@@ -70,6 +80,26 @@ class CommonJsExportsDependency extends NullDependency {
70
80
  };
71
81
  }
72
82
 
83
+ /**
84
+ * Updates the hash with the data contributed by this instance.
85
+ * @param {Hash} hash hash to be updated
86
+ * @param {UpdateHashContext} context context
87
+ * @returns {void}
88
+ */
89
+ updateHash(hash, context) {
90
+ // a classic worker entry generates `this` as the global scope, so it must
91
+ // not share one code generation with a runtime that generates it as exports
92
+ if (!isThisBase(this.base)) return;
93
+ const { chunkGraph, runtime, runtimeTemplate } = context;
94
+ const module = chunkGraph.moduleGraph.getParentModule(this);
95
+ hash.update(
96
+ module !== undefined &&
97
+ isWorkerEntryThis(module, chunkGraph, runtime, runtimeTemplate)
98
+ ? "worker global"
99
+ : "exports"
100
+ );
101
+ }
102
+
73
103
  /**
74
104
  * Serializes this instance into the provided serializer context.
75
105
  * @param {ObjectSerializerContext} context context
@@ -120,57 +150,31 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
120
150
  {
121
151
  module,
122
152
  moduleGraph,
153
+ chunkGraph,
123
154
  initFragments,
124
155
  runtimeRequirements,
125
156
  runtime,
126
- concatenationScope
157
+ runtimeTemplate
127
158
  }
128
159
  ) {
129
160
  const dep = /** @type {CommonJsExportsDependency} */ (dependency);
161
+ // a classic worker entry writes to its global scope, not to an export, so
162
+ // the names stay as written and are never dropped as unused
163
+ const isWorkerEntry =
164
+ isThisBase(dep.base) &&
165
+ isWorkerEntryThis(module, chunkGraph, runtime, runtimeTemplate);
130
166
  // CJS exports are never inlined
131
- const used = /** @type {string | string[] | false} */ (
132
- moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
133
- );
134
-
135
- if (concatenationScope) {
136
- // eligibility is enforced by JavascriptGenerator.getConcatenationBailoutReason
137
- if (dep.base !== "exports" && dep.base !== "module.exports") {
138
- throw new Error(
139
- `Unsupported base ${dep.base} in concatenated CommonJS module`
167
+ const used = isWorkerEntry
168
+ ? dep.names
169
+ : /** @type {string | string[] | false} */ (
170
+ moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
140
171
  );
141
- }
142
- if (!used) {
143
- initFragments.push(
144
- new InitFragment(
145
- "var __webpack_unused_export__;\n",
146
- InitFragment.STAGE_CONSTANTS,
147
- 0,
148
- "__webpack_unused_export__"
149
- )
150
- );
151
- source.replace(
152
- dep.range[0],
153
- dep.range[1] - 1,
154
- "__webpack_unused_export__"
155
- );
156
- return;
157
- }
158
- source.replace(
159
- dep.range[0],
160
- dep.range[1] - 1,
161
- getConcatenatedExportAccess(
162
- concatenationScope,
163
- initFragments,
164
- dep.names
165
- )
166
- );
167
- return;
168
- }
169
172
 
170
173
  const [type, base] = handleDependencyBase(
171
174
  dep.base,
172
175
  module,
173
- runtimeRequirements
176
+ runtimeRequirements,
177
+ isWorkerEntry
174
178
  );
175
179
 
176
180
  switch (type) {