@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
@@ -11,9 +11,9 @@ const {
11
11
  compareModulesByPreOrderIndexOrIdentifier
12
12
  } = require("../util/comparators");
13
13
 
14
- /** @typedef {import("../Compiler")} Compiler */
15
- /** @typedef {import("../Module")} Module */
16
- /** @typedef {import("../ChunkGraph").ModuleComparator} ModuleComparator */
14
+ /** @import Compiler from "../Compiler" */
15
+ /** @import Module from "../Module" */
16
+ /** @import { ModuleComparator } from "../ChunkGraph" */
17
17
 
18
18
  /**
19
19
  * Defines the chunk module id range plugin options type used by this module.
@@ -12,7 +12,7 @@ const {
12
12
  getUsedChunkIds
13
13
  } = require("./IdHelpers");
14
14
 
15
- /** @typedef {import("../Compiler")} Compiler */
15
+ /** @import Compiler from "../Compiler" */
16
16
 
17
17
  /**
18
18
  * Defines the deterministic chunk ids plugin options type used by this module.
@@ -14,8 +14,8 @@ const {
14
14
  getUsedModuleIdsAndModules
15
15
  } = require("./IdHelpers");
16
16
 
17
- /** @typedef {import("../Compiler")} Compiler */
18
- /** @typedef {import("../Module")} Module */
17
+ /** @import Compiler from "../Compiler" */
18
+ /** @import Module from "../Module" */
19
19
 
20
20
  /**
21
21
  * Defines the deterministic module ids plugin options type used by this module.
@@ -15,8 +15,12 @@ const {
15
15
  getUsedModuleIdsAndModules
16
16
  } = require("./IdHelpers");
17
17
 
18
- /** @typedef {import("../../declarations/plugins/ids/HashedModuleIdsPlugin").HashedModuleIdsPluginOptions} HashedModuleIdsPluginOptions */
19
- /** @typedef {import("../Compiler")} Compiler */
18
+ /**
19
+ * @import {
20
+ * HashedModuleIdsPluginOptions
21
+ * } from "../../declarations/plugins/ids/HashedModuleIdsPlugin"
22
+ */
23
+ /** @import Compiler from "../Compiler" */
20
24
 
21
25
  const PLUGIN_NAME = "HashedModuleIdsPlugin";
22
26
 
@@ -9,14 +9,13 @@ const createHash = require("../util/createHash");
9
9
  const { makePathsRelative } = require("../util/identifier");
10
10
  const numberHash = require("../util/numberHash");
11
11
 
12
- /** @typedef {import("../Chunk")} Chunk */
13
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
14
- /** @typedef {import("../Compilation")} Compilation */
15
- /** @typedef {import("../Module")} Module */
16
- /** @typedef {import("../util/Hash").HashFunction} HashFunction */
17
- /** @typedef {import("../util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
18
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
19
- /** @typedef {import("../css/CssModule").CssModuleBuildMeta} CssModuleBuildMeta */
12
+ /** @import Chunk from "../Chunk" */
13
+ /** @import ChunkGraph from "../ChunkGraph" */
14
+ /** @import Compilation from "../Compilation" */
15
+ /** @import Module from "../Module" */
16
+ /** @import { HashFunction } from "../util/Hash" */
17
+ /** @import { AssociatedObjectForCache } from "../util/identifier" */
18
+ /** @import { CssModuleBuildMeta } from "../css/CssModule" */
20
19
 
21
20
  // Numbers longer than this are written in exponential form ("...e+xx"), so a
22
21
  // longer string can't be a plain integer id.
@@ -14,7 +14,7 @@ const {
14
14
  getUsedChunkIds
15
15
  } = require("./IdHelpers");
16
16
 
17
- /** @typedef {import("../Compiler")} Compiler */
17
+ /** @import Compiler from "../Compiler" */
18
18
 
19
19
  /**
20
20
  * Defines the named chunk ids plugin options type used by this module.
@@ -14,7 +14,7 @@ const {
14
14
  getUsedModuleIdsAndModules
15
15
  } = require("./IdHelpers");
16
16
 
17
- /** @typedef {import("../Compiler")} Compiler */
17
+ /** @import Compiler from "../Compiler" */
18
18
 
19
19
  /**
20
20
  * Defines the named module ids plugin options type used by this module.
@@ -8,8 +8,8 @@
8
8
  const { compareChunksNatural } = require("../util/comparators");
9
9
  const { assignAscendingChunkIds } = require("./IdHelpers");
10
10
 
11
- /** @typedef {import("../Chunk")} Chunk */
12
- /** @typedef {import("../Compiler")} Compiler */
11
+ /** @import Chunk from "../Chunk" */
12
+ /** @import Compiler from "../Compiler" */
13
13
 
14
14
  const PLUGIN_NAME = "NaturalChunkIdsPlugin";
15
15
 
@@ -13,7 +13,7 @@ const {
13
13
  getUsedModuleIdsAndModules
14
14
  } = require("./IdHelpers");
15
15
 
16
- /** @typedef {import("../Compiler")} Compiler */
16
+ /** @import Compiler from "../Compiler" */
17
17
 
18
18
  const PLUGIN_NAME = "NaturalModuleIdsPlugin";
19
19
 
@@ -8,9 +8,13 @@
8
8
  const { compareChunksNatural } = require("../util/comparators");
9
9
  const { assignAscendingChunkIds } = require("./IdHelpers");
10
10
 
11
- /** @typedef {import("../../declarations/plugins/ids/OccurrenceChunkIdsPlugin").OccurrenceChunkIdsPluginOptions} OccurrenceChunkIdsPluginOptions */
12
- /** @typedef {import("../Chunk")} Chunk */
13
- /** @typedef {import("../Compiler")} Compiler */
11
+ /**
12
+ * @import {
13
+ * OccurrenceChunkIdsPluginOptions
14
+ * } from "../../declarations/plugins/ids/OccurrenceChunkIdsPlugin"
15
+ */
16
+ /** @import Chunk from "../Chunk" */
17
+ /** @import Compiler from "../Compiler" */
14
18
 
15
19
  const PLUGIN_NAME = "OccurrenceChunkIdsPlugin";
16
20
 
@@ -13,9 +13,13 @@ const {
13
13
  getUsedModuleIdsAndModules
14
14
  } = require("./IdHelpers");
15
15
 
16
- /** @typedef {import("../../declarations/plugins/ids/OccurrenceModuleIdsPlugin").OccurrenceModuleIdsPluginOptions} OccurrenceModuleIdsPluginOptions */
17
- /** @typedef {import("../Compiler")} Compiler */
18
- /** @typedef {import("../Module")} Module */
16
+ /**
17
+ * @import {
18
+ * OccurrenceModuleIdsPluginOptions
19
+ * } from "../../declarations/plugins/ids/OccurrenceModuleIdsPlugin"
20
+ */
21
+ /** @import Compiler from "../Compiler" */
22
+ /** @import Module from "../Module" */
19
23
 
20
24
  const PLUGIN_NAME = "OccurrenceModuleIdsPlugin";
21
25
 
@@ -8,10 +8,10 @@
8
8
  const { WebpackError } = require("..");
9
9
  const { getUsedModuleIdsAndModules } = require("./IdHelpers");
10
10
 
11
- /** @typedef {import("../Compiler")} Compiler */
12
- /** @typedef {import("../Module")} Module */
13
- /** @typedef {import("../Module").ModuleId} ModuleId */
14
- /** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
11
+ /** @import { ModuleId } from "../ChunkGraph" */
12
+ /** @import Compiler from "../Compiler" */
13
+ /** @import Module from "../Module" */
14
+ /** @import { IntermediateFileSystem } from "../util/fs" */
15
15
 
16
16
  /** @typedef {{ [key: string]: ModuleId }} JSONContent */
17
17
 
package/lib/index.js CHANGED
@@ -603,12 +603,22 @@ module.exports = mergeExports(fn, {
603
603
  css: {
604
604
  get CssModulesPlugin() {
605
605
  return require("./css/CssModulesPlugin");
606
+ },
607
+ // Experimental native CSS parser + safe minifying serializer (its
608
+ // `SourceProcessor` / `printer` exports carry the `@experimental` tag).
609
+ get syntax() {
610
+ return require("./css/syntax");
606
611
  }
607
612
  },
608
613
 
609
614
  html: {
610
615
  get HtmlModulesPlugin() {
611
616
  return require("./html/HtmlModulesPlugin");
617
+ },
618
+ // Experimental native HTML parser + safe minifying serializer (its
619
+ // `SourceProcessor` / `printer` exports carry the `@experimental` tag).
620
+ get syntax() {
621
+ return require("./html/syntax");
612
622
  }
613
623
  },
614
624
 
@@ -15,9 +15,9 @@ const {
15
15
  updateHashForEntryStartup
16
16
  } = require("./StartupHelpers");
17
17
 
18
- /** @typedef {import("../Compiler")} Compiler */
19
- /** @typedef {import("../ChunkGraph").EntryModuleWithChunkGroup} EntryModuleWithChunkGroup */
20
- /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
18
+ /** @import Compiler from "../Compiler" */
19
+ /** @import { EntryModuleWithChunkGroup } from "../ChunkGraph" */
20
+ /** @import CodeGenerationResults from "../CodeGenerationResults" */
21
21
 
22
22
  const PLUGIN_NAME = "ArrayPushCallbackChunkFormatPlugin";
23
23
 
@@ -5,12 +5,16 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("estree").Node} Node */
9
- /** @typedef {import("./JavascriptParser").Range} Range */
10
- /** @typedef {import("./JavascriptParser").VariableInfo} VariableInfo */
11
- /** @typedef {import("./JavascriptParser").Members} Members */
12
- /** @typedef {import("./JavascriptParser").MembersOptionals} MembersOptionals */
13
- /** @typedef {import("./JavascriptParser").MemberRanges} MemberRanges */
8
+ /** @import { Node } from "estree" */
9
+ /**
10
+ * @import {
11
+ * Range,
12
+ * VariableInfo,
13
+ * Members,
14
+ * MembersOptionals,
15
+ * MemberRanges
16
+ * } from "./JavascriptParser"
17
+ */
14
18
 
15
19
  const TypeUnknown = 0;
16
20
  const TypeUndefined = 1;
@@ -302,32 +306,32 @@ class BasicEvaluatedExpression {
302
306
  }
303
307
 
304
308
  /**
305
- * @returns {string | VariableInfo | undefined} identifier
309
+ * @returns {string | InstanceType<VariableInfo> | undefined} identifier
306
310
  */
307
311
  get identifier() {
308
312
  return this.type === TypeIdentifier
309
- ? /** @type {string | VariableInfo} */ (this._v1)
313
+ ? /** @type {string | InstanceType<VariableInfo>} */ (this._v1)
310
314
  : undefined;
311
315
  }
312
316
 
313
317
  /**
314
- * @param {string | VariableInfo | undefined} value identifier
318
+ * @param {string | InstanceType<VariableInfo> | undefined} value identifier
315
319
  */
316
320
  set identifier(value) {
317
321
  this._v1 = value;
318
322
  }
319
323
 
320
324
  /**
321
- * @returns {string | VariableInfo | undefined} root info
325
+ * @returns {string | InstanceType<VariableInfo> | undefined} root info
322
326
  */
323
327
  get rootInfo() {
324
328
  return this.type === TypeIdentifier
325
- ? /** @type {string | VariableInfo} */ (this._v2)
329
+ ? /** @type {string | InstanceType<VariableInfo>} */ (this._v2)
326
330
  : undefined;
327
331
  }
328
332
 
329
333
  /**
330
- * @param {string | VariableInfo | undefined} value root info
334
+ * @param {string | InstanceType<VariableInfo> | undefined} value root info
331
335
  */
332
336
  set rootInfo(value) {
333
337
  this._v2 = value;
@@ -692,8 +696,8 @@ class BasicEvaluatedExpression {
692
696
 
693
697
  /**
694
698
  * Set's the value of this expression to a particular identifier and its members.
695
- * @param {string | VariableInfo} identifier identifier to set
696
- * @param {string | VariableInfo} rootInfo root info
699
+ * @param {string | InstanceType<VariableInfo>} identifier identifier to set
700
+ * @param {string | InstanceType<VariableInfo>} rootInfo root info
697
701
  * @param {GetMembers} getMembers members
698
702
  * @param {GetMembersOptionals=} getMembersOptionals optional members
699
703
  * @param {GetMemberRanges=} getMemberRanges ranges of progressively increasing sub-expressions
@@ -7,12 +7,12 @@
7
7
 
8
8
  const { updateHashForEntryStartup } = require("./StartupHelpers");
9
9
 
10
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
11
- /** @typedef {import("../Module")} Module */
12
- /** @typedef {import("../Chunk")} Chunk */
13
- /** @typedef {import("../Entrypoint")} Entrypoint */
14
- /** @typedef {import("../util/Hash")} Hash */
15
- /** @typedef {import("../Compilation").ChunkHashContext} ChunkHashContext */
10
+ /** @import ChunkGraph from "../ChunkGraph" */
11
+ /** @import Module from "../Module" */
12
+ /** @import Chunk from "../Chunk" */
13
+ /** @import Entrypoint from "../Entrypoint" */
14
+ /** @import Hash from "../util/Hash" */
15
+ /** @import { ChunkHashContext } from "../Compilation" */
16
16
 
17
17
  /**
18
18
  * Returns } Object containing chunk entries and runtime chunk.
@@ -7,7 +7,7 @@
7
7
 
8
8
  const Entrypoint = require("../Entrypoint");
9
9
 
10
- /** @typedef {import("../Chunk")} Chunk */
10
+ /** @import Chunk from "../Chunk" */
11
11
 
12
12
  /**
13
13
  * Returns chunks.
@@ -17,10 +17,13 @@ const {
17
17
  getChunkFilenameTemplate,
18
18
  getCompilationHooks
19
19
  } = require("./JavascriptModulesPlugin");
20
- const { generateEntryStartup } = require("./StartupHelpers");
20
+ const {
21
+ entryStartupAwaitsChunks,
22
+ generateEntryStartup
23
+ } = require("./StartupHelpers");
21
24
 
22
- /** @typedef {import("../Chunk")} Chunk */
23
- /** @typedef {import("../Compiler")} Compiler */
25
+ /** @import Chunk from "../Chunk" */
26
+ /** @import Compiler from "../Compiler" */
24
27
 
25
28
  const PLUGIN_NAME = "CommonJsChunkFormatPlugin";
26
29
 
@@ -38,7 +41,11 @@ class CommonJsChunkFormatPlugin {
38
41
  if (chunk.hasRuntime()) return;
39
42
  if (chunkGraph.getNumberOfEntryModules(chunk) > 0) {
40
43
  set.add(RuntimeGlobals.require);
41
- set.add(RuntimeGlobals.startupEntrypoint);
44
+ // An entry with nothing to wait for is called straight, so the
45
+ // helper that waits would have no call site.
46
+ if (entryStartupAwaitsChunks(chunkGraph, chunk)) {
47
+ set.add(RuntimeGlobals.startupEntrypoint);
48
+ }
42
49
  set.add(RuntimeGlobals.externalInstallChunk);
43
50
  }
44
51
  }
@@ -47,7 +54,6 @@ class CommonJsChunkFormatPlugin {
47
54
  hooks.renderChunk.tap(PLUGIN_NAME, (modules, renderContext) => {
48
55
  const { chunk, chunkGraph, runtimeTemplate } = renderContext;
49
56
  const source = new ConcatSource();
50
- source.add(`exports.id = ${JSON.stringify(chunk.id)};\n`);
51
57
  source.add(`exports.ids = ${JSON.stringify(chunk.ids)};\n`);
52
58
  source.add("exports.modules = ");
53
59
  source.add(modules);
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("../../declarations/WebpackOptions").ChunkLoadingType} ChunkLoadingType */
9
- /** @typedef {import("../Compiler")} Compiler */
8
+ /** @import { ChunkLoadingType } from "../../declarations/WebpackOptions" */
9
+ /** @import Compiler from "../Compiler" */
10
10
 
11
11
  /** @typedef {Set<ChunkLoadingType>} ChunkLoadingTypes */
12
12
 
@@ -10,29 +10,29 @@ const { RawSource, ReplaceSource } = require("webpack-sources");
10
10
  const Generator = require("../Generator");
11
11
  const InitFragment = require("../InitFragment");
12
12
  const { JAVASCRIPT_TYPES } = require("../ModuleSourceTypeConstants");
13
+
13
14
  const RuntimeGlobals = require("../RuntimeGlobals");
14
- const CommonJsExportsDependency = require("../dependencies/CommonJsExportsDependency");
15
- const CommonJsFullRequireDependency = require("../dependencies/CommonJsFullRequireDependency");
16
- const CommonJsRequireDependency = require("../dependencies/CommonJsRequireDependency");
17
- const CommonJsSelfReferenceDependency = require("../dependencies/CommonJsSelfReferenceDependency");
18
- const ContextDependency = require("../dependencies/ContextDependency");
19
15
  const HarmonyCompatibilityDependency = require("../dependencies/HarmonyCompatibilityDependency");
20
- const ImportDependency = require("../dependencies/ImportDependency");
21
- const RequireResolveDependency = require("../dependencies/RequireResolveDependency");
22
16
 
23
- /** @typedef {import("webpack-sources").Source} Source */
24
- /** @typedef {import("../Compilation").DependencyConstructor} DependencyConstructor */
25
- /** @typedef {import("../DependenciesBlock")} DependenciesBlock */
26
- /** @typedef {import("../Dependency")} Dependency */
27
- /** @typedef {import("../DependencyTemplate")} DependencyTemplate */
28
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
29
- /** @typedef {import("../Generator").GenerateContext} GenerateContext */
30
- /** @typedef {import("../Module")} Module */
31
- /** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
32
- /** @typedef {import("../Module").SourceType} SourceType */
33
- /** @typedef {import("../Module").SourceTypes} SourceTypes */
34
- /** @typedef {import("./JavascriptModule").JavascriptModuleBuildInfo} JavascriptModuleBuildInfo */
35
- /** @typedef {import("../NormalModule")} NormalModule */
17
+ /** @import { Source } from "webpack-sources" */
18
+ /** @import { DependencyConstructor } from "../Compilation" */
19
+ /** @import DependenciesBlock from "../DependenciesBlock" */
20
+ /** @import Dependency from "../Dependency" */
21
+ /**
22
+ * @import DependencyTemplate, {
23
+ * DependencyTemplateContext
24
+ * } from "../DependencyTemplate"
25
+ */
26
+ /** @import { GenerateContext } from "../Generator" */
27
+ /**
28
+ * @import Module, {
29
+ * ConcatenationBailoutReasonContext,
30
+ * SourceType,
31
+ * SourceTypes
32
+ * } from "../Module"
33
+ */
34
+ /** @import { JavascriptModuleBuildInfo } from "./JavascriptModule" */
35
+ /** @import NormalModule from "../NormalModule" */
36
36
 
37
37
  const DEFAULT_SOURCE = {
38
38
  source() {
@@ -50,21 +50,6 @@ const DEFAULT_SOURCE = {
50
50
  // TODO: clean up this file
51
51
  // replace with newer constructs
52
52
 
53
- // Runtime requirements whose presence on a presentational dependency means the
54
- // code references the module/exports objects, which do not exist for an inner
55
- // concatenated module (e.g. `module.id`, `module.hot`, top-level `this`).
56
- /** @type {ReadonlySet<string>} */
57
- const CONCATENATION_INCOMPATIBLE_RUNTIME_REQUIREMENTS = new Set([
58
- RuntimeGlobals.module,
59
- RuntimeGlobals.moduleId,
60
- RuntimeGlobals.moduleLoaded,
61
- RuntimeGlobals.moduleCache,
62
- RuntimeGlobals.exports,
63
- RuntimeGlobals.thisAsExports,
64
- RuntimeGlobals.harmonyModuleDecorator,
65
- RuntimeGlobals.nodeModuleDecorator
66
- ]);
67
-
68
53
  // A wrapped CommonJS module keeps real `module`/`exports` objects and top-level
69
54
  // `this`, so only requirements that need a module object webpack does not
70
55
  // synthesize here (id, loaded state, cache, decorators) block wrapping.
@@ -77,116 +62,6 @@ const WRAPPING_INCOMPATIBLE_RUNTIME_REQUIREMENTS = new Set([
77
62
  RuntimeGlobals.nodeModuleDecorator
78
63
  ]);
79
64
 
80
- /**
81
- * Returns the reason a CommonJS module cannot take part in concatenation at
82
- * all — neither hoisted (as a "nice" module) nor wrapped. A module passing
83
- * this check can be hoisted or wrapped; {@link isCommonJsHoistable} decides
84
- * which.
85
- * @param {NormalModule} module the module
86
- * @returns {string | undefined} reason it can't be concatenated
87
- */
88
- const getCommonJsConcatenationBailoutReason = (module) => {
89
- const buildMeta = module.buildMeta;
90
- // "flagged"/"default" are hoistable; a dynamic (undefined) exports type is a
91
- // reassigned/computed `module.exports`, only reachable by wrapping. Proper ESM
92
- // modules ("namespace") never reach this path.
93
- if (
94
- !buildMeta ||
95
- (buildMeta.exportsType !== "flagged" &&
96
- buildMeta.exportsType !== "default" &&
97
- buildMeta.exportsType !== undefined)
98
- ) {
99
- return "Module is not an ECMAScript module";
100
- }
101
- // Sloppy-mode modules bail out in ModuleConcatenationPlugin anyway,
102
- // so skip the dependency scan for them (most of node_modules)
103
- if (!(/** @type {JavascriptModuleBuildInfo} */ (module.buildInfo).strict)) {
104
- return "Module is not in strict mode";
105
- }
106
- const wrapped = !isCommonJsHoistable(module);
107
- // A dynamic exports type only makes sense when wrapping; a hoistable module
108
- // with no static exports keeps its previous (bailed) behavior.
109
- if (buildMeta.exportsType === undefined && !wrapped) {
110
- return "Module is not an ECMAScript module";
111
- }
112
- for (const dep of module.dependencies) {
113
- if (
114
- dep instanceof CommonJsExportsDependency ||
115
- dep instanceof CommonJsSelfReferenceDependency
116
- ) {
117
- // Any export shape is fine: hoisted modules restrict these below,
118
- // wrapped modules keep them verbatim inside the wrapper.
119
- continue;
120
- } else if (
121
- dep instanceof CommonJsRequireDependency ||
122
- dep instanceof CommonJsFullRequireDependency ||
123
- dep instanceof RequireResolveDependency ||
124
- dep instanceof ContextDependency
125
- ) {
126
- // A wrapped module renders with its own module ids intact, so a
127
- // require() target that is itself inlined (no id) would break. Only
128
- // hoisted ("nice") modules — whose require targets always stay
129
- // external — may keep these.
130
- if (wrapped) {
131
- return `Module uses ${dep.type} which is not supported when wrapping`;
132
- }
133
- } else if (!(dep instanceof ImportDependency)) {
134
- return `Module uses an unsupported dependency (${dep.type})`;
135
- }
136
- }
137
- if (module.presentationalDependencies !== undefined) {
138
- const incompatible = wrapped
139
- ? WRAPPING_INCOMPATIBLE_RUNTIME_REQUIREMENTS
140
- : CONCATENATION_INCOMPATIBLE_RUNTIME_REQUIREMENTS;
141
- for (const dep of module.presentationalDependencies) {
142
- const runtimeRequirements =
143
- /** @type {{ runtimeRequirements?: ReadonlySet<string> | null }} */
144
- (dep).runtimeRequirements;
145
- if (!runtimeRequirements) continue;
146
- for (const requirement of runtimeRequirements) {
147
- if (incompatible.has(requirement)) {
148
- return `Module uses ${requirement}`;
149
- }
150
- }
151
- }
152
- }
153
- return undefined;
154
- };
155
-
156
- /**
157
- * A "nice" CommonJS module has a static list of exports, assigned only via
158
- * plain `exports.x = …` / `module.exports.x = …`, and never uses the
159
- * `module`/`exports` objects in any other way, so every reference can be
160
- * rewritten to a hoisted module-scope variable. Modules eligible for
161
- * concatenation but not hoistable are wrapped instead.
162
- * @param {NormalModule} module the module
163
- * @returns {boolean} true when the module can be hoisted rather than wrapped
164
- */
165
- const isCommonJsHoistable = (module) => {
166
- for (const dep of module.dependencies) {
167
- if (dep instanceof CommonJsExportsDependency) {
168
- if (dep.base !== "exports" && dep.base !== "module.exports") return false;
169
- if (dep.names.length === 0) return false;
170
- } else if (dep instanceof CommonJsSelfReferenceDependency) {
171
- if (dep.base !== "exports" && dep.base !== "module.exports") return false;
172
- if (dep.names.length === 0) return false;
173
- // `exports.f()` passes the exports object as `this`
174
- if (dep.call && dep.names.length === 1) return false;
175
- }
176
- }
177
- return true;
178
- };
179
-
180
- /**
181
- * Whether a concatenation-eligible CommonJS module must be wrapped (rendered
182
- * inside an IIFE with real `module`/`exports` objects) rather than hoisted.
183
- * @param {NormalModule} module the module
184
- * @returns {boolean} true when the module needs wrapping
185
- */
186
- const isCommonJsWrapped = (module) =>
187
- getCommonJsConcatenationBailoutReason(module) === undefined &&
188
- !isCommonJsHoistable(module);
189
-
190
65
  const deprecatedGetInitFragments = util.deprecate(
191
66
  /**
192
67
  * Handles the callback logic for this hook.
@@ -233,30 +108,56 @@ class JavascriptGenerator extends Generator {
233
108
  * @returns {string | undefined} reason why this module can't be concatenated, undefined when it can be concatenated
234
109
  */
235
110
  getConcatenationBailoutReason(module, context) {
236
- // Harmony modules and CommonJS modules with statically rewritable
237
- // exports are valid for optimization
238
- if (
239
- !module.buildMeta ||
240
- module.buildMeta.exportsType !== "namespace" ||
241
- module.presentationalDependencies === undefined ||
242
- !module.presentationalDependencies.some(
111
+ const buildMeta = module.buildMeta;
112
+ const buildInfo = /** @type {JavascriptModuleBuildInfo | undefined} */ (
113
+ module.buildInfo
114
+ );
115
+ const presentationalDependencies = module.presentationalDependencies;
116
+ // An ESM is a "namespace" module carrying the interop flag the harmony
117
+ // parser emits; anything else is treated as CommonJS below
118
+ const isESM =
119
+ buildMeta !== undefined &&
120
+ buildMeta.exportsType === "namespace" &&
121
+ presentationalDependencies !== undefined &&
122
+ presentationalDependencies.some(
243
123
  (d) => d instanceof HarmonyCompatibilityDependency
244
- )
245
- ) {
246
- // CommonJS concatenation is opt-in via optimization.concatenateCommonJsModules
247
- const reason = context.concatenateCommonJsModules
248
- ? getCommonJsConcatenationBailoutReason(module)
249
- : "Module is not an ECMAScript module";
250
- if (reason !== undefined) return reason;
124
+ );
125
+
126
+ if (!isESM) {
127
+ // CommonJS concatenation is opt-in via optimization.concatenateModules.commonjs
128
+ if (!context.concatenateCommonJsModules) {
129
+ return "Module is not an ECMAScript module";
130
+ }
131
+ // Concatenated CommonJS always runs wrapped, with real `module`/`exports`,
132
+ // so only a foreign exports shape rules the module out (an undefined
133
+ // exports type is a dynamic `module.exports`, which wrapping supports)
134
+ if (buildMeta === undefined) {
135
+ return "Module is neither an ECMAScript module nor a CommonJS";
136
+ }
137
+ // Sloppy-mode modules bail out in ModuleConcatenationPlugin anyway,
138
+ // so skip the dependency scan for them (most of node_modules)
139
+ if (buildInfo === undefined || !buildInfo.strict) {
140
+ return "Module is not in strict mode";
141
+ }
142
+ if (presentationalDependencies !== undefined) {
143
+ for (const dep of presentationalDependencies) {
144
+ const runtimeRequirements =
145
+ /** @type {{ runtimeRequirements?: ReadonlySet<string> | null }} */
146
+ (dep).runtimeRequirements;
147
+ if (!runtimeRequirements) continue;
148
+ for (const requirement of runtimeRequirements) {
149
+ if (WRAPPING_INCOMPATIBLE_RUNTIME_REQUIREMENTS.has(requirement)) {
150
+ return `Module uses ${requirement}`;
151
+ }
152
+ }
153
+ }
154
+ }
251
155
  }
252
156
 
253
157
  // Some expressions are not compatible with module concatenation
254
158
  // because they may produce unexpected results. The plugin bails out
255
159
  // if some were detected upfront.
256
- const buildInfo = /** @type {JavascriptModuleBuildInfo | undefined} */ (
257
- module.buildInfo
258
- );
259
- if (buildInfo && buildInfo.moduleConcatenationBailout) {
160
+ if (buildInfo !== undefined && buildInfo.moduleConcatenationBailout) {
260
161
  return `Module uses ${buildInfo.moduleConcatenationBailout}`;
261
162
  }
262
163
  }
@@ -431,9 +332,8 @@ class JavascriptGenerator extends Generator {
431
332
  * @returns {Source | null} generated code
432
333
  */
433
334
  generateError(error, module, generateContext) {
434
- return new RawSource(`throw new Error(${JSON.stringify(error.message)});`);
335
+ return new RawSource(Generator.throwBuildErrorCode(error));
435
336
  }
436
337
  }
437
338
 
438
339
  module.exports = JavascriptGenerator;
439
- module.exports.isCommonJsWrapped = isCommonJsWrapped;