@depup/webpack 5.109.0-depup.0 → 5.110.1-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 (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  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/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -6,8 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const RuntimeGlobals = require("../RuntimeGlobals");
9
- const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
10
- const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
9
+
11
10
  const {
12
11
  evaluateToIdentifier,
13
12
  evaluateToString,
@@ -21,6 +20,7 @@ const CommonJsRequireContextDependency = require("./CommonJsRequireContextDepend
21
20
  const CommonJsRequireDependency = require("./CommonJsRequireDependency");
22
21
  const ConstDependency = require("./ConstDependency");
23
22
  const ContextDependencyHelpers = require("./ContextDependencyHelpers");
23
+ const HarmonyImportGuard = require("./HarmonyImportGuard");
24
24
  const LocalModuleDependency = require("./LocalModuleDependency");
25
25
  const { getLocalModule } = require("./LocalModulesHelpers");
26
26
  const RequireHeaderDependency = require("./RequireHeaderDependency");
@@ -28,19 +28,30 @@ const RequireResolveContextDependency = require("./RequireResolveContextDependen
28
28
  const RequireResolveDependency = require("./RequireResolveDependency");
29
29
  const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency");
30
30
 
31
- /** @typedef {import("estree").CallExpression} CallExpression */
32
- /** @typedef {import("estree").Expression} Expression */
33
- /** @typedef {import("estree").NewExpression} NewExpression */
34
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
35
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
36
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
37
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
38
- /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
39
- /** @typedef {import("../javascript/JavascriptParser").ImportSource} ImportSource */
40
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
41
- /** @typedef {import("../javascript/JavascriptParser").Members} Members */
42
- /** @typedef {import("../javascript/JavascriptParser").CalleeMembers} CalleeMembers */
43
- /** @typedef {import("./LocalModule")} LocalModule */
31
+ const getUnsupportedFeatureWarning = memoize(() =>
32
+ require("../errors/UnsupportedFeatureWarning")
33
+ );
34
+
35
+ const getCommentCompilationWarning = memoize(() =>
36
+ require("../errors/CommentCompilationWarning")
37
+ );
38
+
39
+ /** @import { CallExpression, Expression, NewExpression } from "estree" */
40
+ /**
41
+ * @import {
42
+ * JavascriptParserOptions
43
+ * } from "../../declarations/WebpackOptions"
44
+ */
45
+ /** @import { RawReferencedExports } from "../Dependency" */
46
+ /**
47
+ * @import JavascriptParser, {
48
+ * Range,
49
+ * Members,
50
+ * CalleeMembers
51
+ * } from "../javascript/JavascriptParser"
52
+ */
53
+ /** @import BasicEvaluatedExpression from "../javascript/BasicEvaluatedExpression" */
54
+ /** @import LocalModule from "./LocalModule" */
44
55
 
45
56
  /**
46
57
  * Defines the common js import settings type used by this module.
@@ -58,8 +69,6 @@ const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency
58
69
  * @property {InstanceType<typeof import("./CommonJsRequireDependency")> | null} dep dependency for the `require()` call, null until the `require()` is walked; kept so a later whole-namespace use can null its list directly
59
70
  */
60
71
 
61
- const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
62
-
63
72
  const REQUIRE_BINDING_TAG = Symbol(
64
73
  "CommonJsImportsParserPlugin require binding"
65
74
  );
@@ -170,9 +179,10 @@ const createRequireCallHandler = (
170
179
  * Process require item.
171
180
  * @param {CallExpression | NewExpression} expr expression
172
181
  * @param {BasicEvaluatedExpression} param param
173
- * @returns {boolean | void} true when handled
182
+ * @param {boolean=} allowEvaluationOnly when false (conditional require), keep full namespace use
183
+ * @returns {CommonJsRequireDependency | undefined} created dependency when handled
174
184
  */
175
- const processRequireItem = (expr, param) => {
185
+ const processRequireItem = (expr, param, allowEvaluationOnly = true) => {
176
186
  if (param.isString()) {
177
187
  let referencedExports = getRequireReferencedExportsFromDestructuring(
178
188
  parser,
@@ -185,6 +195,14 @@ const createRequireCallHandler = (
185
195
  // `const NAME = require(LITERAL)` — let later member-access walks
186
196
  // on `NAME` populate the dependency's referenced exports.
187
197
  referencedExports = binding.referencedExports;
198
+ } else if (
199
+ allowEvaluationOnly &&
200
+ referencedExports === null &&
201
+ !binding &&
202
+ parser.isStatementLevelExpression(expr)
203
+ ) {
204
+ // Bare `require(...)` as a statement: result discarded → evaluation only.
205
+ referencedExports = [];
188
206
  }
189
207
  const dep = new CommonJsRequireDependency(
190
208
  /** @type {string} */ (param.string),
@@ -197,8 +215,8 @@ const createRequireCallHandler = (
197
215
  dep.loc = parser.getLocation(expr);
198
216
  dep.optional = Boolean(parser.scope.inTry);
199
217
  parser.state.current.addDependency(dep);
200
- getHarmonyImportGuard().attachDependencyGuards(parser, dep);
201
- return true;
218
+ HarmonyImportGuard.attachDependencyGuards(parser, dep);
219
+ return dep;
202
220
  }
203
221
  };
204
222
  /**
@@ -242,7 +260,7 @@ const createRequireCallHandler = (
242
260
  for (const e of commentErrors) {
243
261
  const { comment } = e;
244
262
  parser.state.module.addWarning(
245
- new CommentCompilationWarning(
263
+ new (getCommentCompilationWarning())(
246
264
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
247
265
  parser.getLocation(comment)
248
266
  )
@@ -252,7 +270,7 @@ const createRequireCallHandler = (
252
270
  if (requireOptions && requireOptions.webpackIgnore !== undefined) {
253
271
  if (typeof requireOptions.webpackIgnore !== "boolean") {
254
272
  parser.state.module.addWarning(
255
- new UnsupportedFeatureWarning(
273
+ new (getUnsupportedFeatureWarning())(
256
274
  `\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
257
275
  parser.getLocation(expr)
258
276
  )
@@ -273,8 +291,9 @@ const createRequireCallHandler = (
273
291
  for (const p of /** @type {BasicEvaluatedExpression[]} */ (
274
292
  param.options
275
293
  )) {
276
- const result = processRequireItem(expr, p);
277
- if (result === undefined) {
294
+ // Shared valueRange across branches: never mark evaluation-only.
295
+ const requireDep = processRequireItem(expr, p, false);
296
+ if (requireDep === undefined) {
278
297
  isExpression = true;
279
298
  }
280
299
  }
@@ -303,12 +322,17 @@ const createRequireCallHandler = (
303
322
  dep.loc = parser.getLocation(expr);
304
323
  parser.state.module.addPresentationalDependency(dep);
305
324
  } else {
306
- const result = processRequireItem(expr, param);
307
- if (result === undefined) {
325
+ const requireDep = processRequireItem(expr, param);
326
+ if (requireDep === undefined) {
308
327
  processRequireContext(expr, param);
309
328
  } else {
329
+ requireDep._canConcatenate = true;
330
+ // concatenation replaces the whole NewExpression; the template
331
+ // reapplies the `new` return-value rule
332
+ requireDep.callNew = callNew;
310
333
  const dep = new RequireHeaderDependency(
311
- /** @type {Range} */ (expr.callee.range)
334
+ /** @type {Range} */ (expr.callee.range),
335
+ requireDep
312
336
  );
313
337
  dep.loc = parser.getLocation(expr);
314
338
  parser.state.module.addPresentationalDependency(dep);
@@ -384,7 +408,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
384
408
  for (const e of commentErrors) {
385
409
  const { comment } = e;
386
410
  parser.state.module.addWarning(
387
- new CommentCompilationWarning(
411
+ new (getCommentCompilationWarning())(
388
412
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
389
413
  parser.getLocation(comment)
390
414
  )
@@ -394,7 +418,7 @@ const createProcessResolveHandler = (parser, options, getContext) => {
394
418
  if (requireOptions && requireOptions.webpackIgnore !== undefined) {
395
419
  if (typeof requireOptions.webpackIgnore !== "boolean") {
396
420
  parser.state.module.addWarning(
397
- new UnsupportedFeatureWarning(
421
+ new (getUnsupportedFeatureWarning())(
398
422
  `\`webpackIgnore\` expected a boolean, but received: ${requireOptions.webpackIgnore}.`,
399
423
  parser.getLocation(expr)
400
424
  )
@@ -458,6 +482,13 @@ class CommonJsImportsParserPlugin {
458
482
  PLUGIN_NAME,
459
483
  (expr) => {
460
484
  if (isRequireCallExpression(expr)) return true;
485
+ // `const NAME = require(…); const { a } = NAME;`
486
+ if (
487
+ expr.type === "Identifier" &&
488
+ parser.getTagData(expr.name, REQUIRE_BINDING_TAG)
489
+ ) {
490
+ return true;
491
+ }
461
492
  }
462
493
  );
463
494
 
@@ -640,8 +671,10 @@ class CommonJsImportsParserPlugin {
640
671
  /** @type {Range} */ (expr.range)[0]
641
672
  );
642
673
  dep.optional = Boolean(parser.scope.inTry);
674
+ dep._canConcatenate = true;
643
675
  dep.loc = parser.getLocation(expr);
644
676
  parser.state.current.addDependency(dep);
677
+ HarmonyImportGuard.attachDependencyGuards(parser, dep);
645
678
  return true;
646
679
  }
647
680
  };
@@ -674,12 +707,17 @@ class CommonJsImportsParserPlugin {
674
707
  /** @type {Range[]} */ memberRanges
675
708
  );
676
709
  dep.call = true;
710
+ dep.namespaceObjectAsContext = Boolean(
711
+ options.strictThisContextOnImports
712
+ );
677
713
  dep.asiSafe = !parser.isAsiPosition(
678
714
  /** @type {Range} */ (expr.range)[0]
679
715
  );
680
716
  dep.optional = Boolean(parser.scope.inTry);
717
+ dep._canConcatenate = true;
681
718
  dep.loc = parser.getLocation(expr.callee);
682
719
  parser.state.current.addDependency(dep);
720
+ HarmonyImportGuard.attachDependencyGuards(parser, dep);
683
721
  parser.walkExpressions(expr.arguments);
684
722
  return true;
685
723
  }
@@ -734,20 +772,31 @@ class CommonJsImportsParserPlugin {
734
772
  return true;
735
773
  });
736
774
 
737
- parser.hooks.expression.for(REQUIRE_BINDING_TAG).tap(PLUGIN_NAME, () => {
738
- const binding =
739
- /** @type {RequireBindingData} */
740
- (parser.currentTagData);
741
- if (binding) {
742
- // `NAME` is read as a value (not as the object of a static member
743
- // chain), so we have to assume the whole exports object is used.
744
- binding.referencedExports = null;
745
- if (binding.dep) {
746
- binding.dep.referencedExports = null;
775
+ parser.hooks.expression
776
+ .for(REQUIRE_BINDING_TAG)
777
+ .tap(PLUGIN_NAME, (expr) => {
778
+ const binding =
779
+ /** @type {RequireBindingData} */
780
+ (parser.currentTagData);
781
+ if (binding) {
782
+ const properties = parser.destructuringAssignmentPropertiesFor(expr);
783
+ if (properties && binding.referencedExports) {
784
+ // `const { a } = NAME` — only the destructured keys are read.
785
+ const referencedExports = binding.referencedExports;
786
+ traverseDestructuringAssignmentProperties(properties, (stack) =>
787
+ referencedExports.push(stack.map((p) => p.id))
788
+ );
789
+ } else {
790
+ // `NAME` is read as a value (not as the object of a static member
791
+ // chain), so we have to assume the whole exports object is used.
792
+ binding.referencedExports = null;
793
+ if (binding.dep) {
794
+ binding.dep.referencedExports = null;
795
+ }
796
+ }
747
797
  }
748
- }
749
- return true;
750
- });
798
+ return true;
799
+ });
751
800
 
752
801
  parser.hooks.expressionMemberChain
753
802
  .for(REQUIRE_BINDING_TAG)
@@ -827,9 +876,12 @@ class CommonJsImportsParserPlugin {
827
876
  }
828
877
  }
829
878
 
830
- module.exports = CommonJsImportsParserPlugin;
831
- module.exports.createProcessResolveHandler = createProcessResolveHandler;
832
- module.exports.createRequireAsExpressionHandler =
879
+ CommonJsImportsParserPlugin.createProcessResolveHandler =
880
+ createProcessResolveHandler;
881
+ CommonJsImportsParserPlugin.createRequireAsExpressionHandler =
833
882
  createRequireAsExpressionHandler;
834
- module.exports.createRequireCacheDependency = createRequireCacheDependency;
835
- module.exports.createRequireHandler = createRequireCallHandler;
883
+ CommonJsImportsParserPlugin.createRequireCacheDependency =
884
+ createRequireCacheDependency;
885
+ CommonJsImportsParserPlugin.createRequireHandler = createRequireCallHandler;
886
+
887
+ module.exports = CommonJsImportsParserPlugin;
@@ -0,0 +1,188 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Natsu @xiaoxiaojx
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const makeSerializable = require("../util/makeSerializable");
9
+ const { propertyName } = require("../util/property");
10
+ const NullDependency = require("./NullDependency");
11
+
12
+ /** @import { ReplaceSource } from "webpack-sources" */
13
+ /** @import Dependency, { ExportsSpec, ExportInfoName } from "../Dependency" */
14
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
15
+ /** @import ModuleGraph from "../ModuleGraph" */
16
+ /** @import { Range } from "../javascript/JavascriptParser" */
17
+ /** @typedef {"keyValue" | "shorthand" | "get" | "set" | "method" | "asyncMethod" | "generatorMethod" | "asyncGeneratorMethod"} CommonJsObjectExportKind */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range, Range, ExportInfoName, CommonJsObjectExportKind, boolean]>} ObjectDeserializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range, Range, ExportInfoName, CommonJsObjectExportKind, boolean]>} ObjectSerializerContext */
20
+
21
+ const EMPTY_OBJECT = {};
22
+
23
+ /** @type {ReadonlyMap<CommonJsObjectExportKind, string>} */
24
+ const FUNCTION_PROPERTY_DROP_HEAD = new Map([
25
+ ["get", "...void (function "],
26
+ ["set", "...void (function "],
27
+ ["method", "...void (function "],
28
+ ["asyncMethod", "...void (async function "],
29
+ ["generatorMethod", "...void (function* "],
30
+ ["asyncGeneratorMethod", "...void (async function* "]
31
+ ]);
32
+
33
+ class CommonJsObjectExportDependency extends NullDependency {
34
+ /**
35
+ * @param {Range} range property range
36
+ * @param {Range} keyRange key range
37
+ * @param {Range} valueRange value / function range
38
+ * @param {ExportInfoName} name export name
39
+ * @param {CommonJsObjectExportKind} kind property kind
40
+ * @param {boolean} pure value is known to be side-effect free
41
+ */
42
+ constructor(range, keyRange, valueRange, name, kind, pure) {
43
+ super();
44
+ this.range = range;
45
+ this.keyRange = keyRange;
46
+ this.valueRange = valueRange;
47
+ /** @type {ExportInfoName} */
48
+ this.name = name;
49
+ /** @type {CommonJsObjectExportKind} */
50
+ this.kind = kind;
51
+ /** @type {boolean} */
52
+ this.pure = pure;
53
+ }
54
+
55
+ get type() {
56
+ return "cjs object exports";
57
+ }
58
+
59
+ /**
60
+ * Returns the exported names
61
+ * @param {ModuleGraph} moduleGraph module graph
62
+ * @returns {ExportsSpec | undefined} export names
63
+ */
64
+ getExports(moduleGraph) {
65
+ const name = this.name;
66
+ return {
67
+ exports: [
68
+ {
69
+ name,
70
+ // Keep __esModule stable: the template never renames it.
71
+ canMangle: name !== "__esModule" && !(name in EMPTY_OBJECT)
72
+ }
73
+ ],
74
+ dependencies: undefined
75
+ };
76
+ }
77
+
78
+ /**
79
+ * Serializes this instance into the provided serializer context.
80
+ * @param {ObjectSerializerContext} context context
81
+ */
82
+ serialize(context) {
83
+ context
84
+ .write(this.range)
85
+ .write(this.keyRange)
86
+ .write(this.valueRange)
87
+ .write(this.name)
88
+ .write(this.kind)
89
+ .write(this.pure);
90
+ super.serialize(context);
91
+ }
92
+
93
+ /**
94
+ * Restores this instance from the provided deserializer context.
95
+ * @param {ObjectDeserializerContext} context context
96
+ */
97
+ deserialize(context) {
98
+ this.range = context.read();
99
+ const c1 = context.rest;
100
+ this.keyRange = c1.read();
101
+ const c2 = c1.rest;
102
+ this.valueRange = c2.read();
103
+ const c3 = c2.rest;
104
+ this.name = c3.read();
105
+ const c4 = c3.rest;
106
+ this.kind = c4.read();
107
+ const c5 = c4.rest;
108
+ this.pure = c5.read();
109
+ super.deserialize(c5.rest);
110
+ }
111
+ }
112
+
113
+ makeSerializable(
114
+ CommonJsObjectExportDependency,
115
+ "webpack/lib/dependencies/CommonJsObjectExportDependency"
116
+ );
117
+
118
+ CommonJsObjectExportDependency.Template = class CommonJsObjectExportDependencyTemplate extends (
119
+ NullDependency.Template
120
+ ) {
121
+ /**
122
+ * Applies the plugin by registering its hooks on the compiler.
123
+ * @param {Dependency} dependency the dependency for which the template should be applied
124
+ * @param {ReplaceSource} source the current replace source which can be modified
125
+ * @param {DependencyTemplateContext} templateContext the context object
126
+ * @returns {void}
127
+ */
128
+ apply(dependency, source, { module, moduleGraph, runtime, runtimeTemplate }) {
129
+ const dep = /** @type {CommonJsObjectExportDependency} */ (dependency);
130
+ // Interop marker must stay even when unused.
131
+ if (dep.name === "__esModule") return;
132
+ const used = /** @type {string | false} */ (
133
+ moduleGraph.getExportsInfo(module).getUsedName(dep.name, runtime)
134
+ );
135
+ if (!used) {
136
+ // Object spread rewrite needs environment.spread.
137
+ if (!runtimeTemplate.supportsSpread()) return;
138
+ const range = /** @type {Range} */ (dep.range);
139
+ if (FUNCTION_PROPERTY_DROP_HEAD.has(dep.kind)) {
140
+ // Keep the function body so nested dependency replaces stay valid.
141
+ const valueRange = /** @type {Range} */ (dep.valueRange);
142
+ source.replace(
143
+ range[0],
144
+ valueRange[0] - 1,
145
+ /** @type {string} */ (FUNCTION_PROPERTY_DROP_HEAD.get(dep.kind))
146
+ );
147
+ source.insert(valueRange[1], ")");
148
+ return;
149
+ }
150
+ if (dep.kind === "shorthand") {
151
+ source.replace(range[0], range[1] - 1, `...void (${dep.name})`);
152
+ return;
153
+ }
154
+ // keyValue: keep the value's side effects in place.
155
+ const valueRange = /** @type {Range} */ (dep.valueRange);
156
+ if (dep.pure) {
157
+ // spreading null adds nothing; the text stays so nested replaces hold
158
+ source.replace(
159
+ range[0],
160
+ valueRange[0] - 1,
161
+ "...(/* unused pure expression */ null && ("
162
+ );
163
+ source.replace(valueRange[1], range[1] - 1, "))");
164
+ return;
165
+ }
166
+ source.replace(range[0], valueRange[0] - 1, "...void (");
167
+ source.replace(valueRange[1], range[1] - 1, ")");
168
+ return;
169
+ }
170
+ if (used === dep.name) return;
171
+ // Rename the key to the mangled export name.
172
+ const keyRange = /** @type {Range} */ (dep.keyRange);
173
+ if (dep.kind === "shorthand") {
174
+ source.replace(
175
+ keyRange[0],
176
+ keyRange[1] - 1,
177
+ `${propertyName(used)}: ${dep.name}`
178
+ );
179
+ return;
180
+ }
181
+ source.replace(keyRange[0], keyRange[1] - 1, propertyName(used));
182
+ }
183
+ };
184
+
185
+ CommonJsObjectExportDependency.FUNCTION_PROPERTY_DROP_HEAD =
186
+ FUNCTION_PROPERTY_DROP_HEAD;
187
+
188
+ module.exports = CommonJsObjectExportDependency;
@@ -23,6 +23,7 @@ const CommonJsExportsDependency = require("./CommonJsExportsDependency");
23
23
  const CommonJsExportsParserPlugin = require("./CommonJsExportsParserPlugin");
24
24
  const CommonJsFullRequireDependency = require("./CommonJsFullRequireDependency");
25
25
  const CommonJsImportsParserPlugin = require("./CommonJsImportsParserPlugin");
26
+ const CommonJsObjectExportDependency = require("./CommonJsObjectExportDependency");
26
27
  const CommonJsRequireContextDependency = require("./CommonJsRequireContextDependency");
27
28
  const CommonJsRequireDependency = require("./CommonJsRequireDependency");
28
29
  const CommonJsSelfReferenceDependency = require("./CommonJsSelfReferenceDependency");
@@ -33,12 +34,15 @@ const RequireResolveDependency = require("./RequireResolveDependency");
33
34
  const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency");
34
35
  const RuntimeRequirementsDependency = require("./RuntimeRequirementsDependency");
35
36
 
36
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
37
- /** @typedef {import("../Compilation")} Compilation */
38
- /** @typedef {import("../Compiler")} Compiler */
39
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
40
- /** @typedef {import("../Module").BuildInfo} BuildInfo */
41
- /** @typedef {import("../javascript/JavascriptParser")} Parser */
37
+ /**
38
+ * @import {
39
+ * JavascriptParserOptions
40
+ * } from "../../declarations/WebpackOptions"
41
+ */
42
+ /** @import Compilation from "../Compilation" */
43
+ /** @import Compiler from "../Compiler" */
44
+ /** @import { BuildInfo } from "../Module" */
45
+ /** @import Parser from "../javascript/JavascriptParser" */
42
46
 
43
47
  const PLUGIN_NAME = "CommonJsPlugin";
44
48
 
@@ -112,6 +116,11 @@ class CommonJsPlugin {
112
116
  new CommonJsExportsDependency.Template()
113
117
  );
114
118
 
119
+ compilation.dependencyTemplates.set(
120
+ CommonJsObjectExportDependency,
121
+ new CommonJsObjectExportDependency.Template()
122
+ );
123
+
115
124
  compilation.dependencyFactories.set(
116
125
  CommonJsExportRequireDependency,
117
126
  normalModuleFactory
@@ -266,6 +275,16 @@ class HarmonyModuleDecoratorRuntimeModule extends RuntimeModule {
266
275
  super("harmony module decorator");
267
276
  }
268
277
 
278
+ /**
279
+ * Returns true, if the runtime module should get it's own scope.
280
+ * When false, `generate()` must emit complete statements ending with `;`
281
+ * so a following runtime IIFE is not parsed as a call (ASI).
282
+ * @returns {boolean} true, if the runtime module should get it's own scope
283
+ */
284
+ shouldIsolate() {
285
+ return false;
286
+ }
287
+
269
288
  /**
270
289
  * Generates runtime code for this runtime module.
271
290
  * @returns {string | null} runtime code
@@ -297,6 +316,16 @@ class NodeModuleDecoratorRuntimeModule extends RuntimeModule {
297
316
  super("node module decorator");
298
317
  }
299
318
 
319
+ /**
320
+ * Returns true, if the runtime module should get it's own scope.
321
+ * When false, `generate()` must emit complete statements ending with `;`
322
+ * so a following runtime IIFE is not parsed as a call (ASI).
323
+ * @returns {boolean} true, if the runtime module should get it's own scope
324
+ */
325
+ shouldIsolate() {
326
+ return false;
327
+ }
328
+
300
329
  /**
301
330
  * Generates runtime code for this runtime module.
302
331
  * @returns {string | null} runtime code
@@ -10,14 +10,13 @@ const makeSerializable = require("../util/makeSerializable");
10
10
  const ContextDependency = require("./ContextDependency");
11
11
  const ContextDependencyTemplateAsRequireCall = require("./ContextDependencyTemplateAsRequireCall");
12
12
 
13
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+ /** @import { Range } from "../javascript/JavascriptParser" */
14
14
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | undefined, boolean | string | undefined]>} ObjectDeserializerContext */
15
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | undefined, boolean | string | undefined]>} ObjectSerializerContext */
16
- /** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
17
- /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
18
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
19
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
20
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
16
+ /** @import { ContextDependencyOptions } from "./ContextDependency" */
17
+ /** @import { ReferencedExports } from "../Dependency" */
18
+ /** @import ModuleGraph from "../ModuleGraph" */
19
+ /** @import { RuntimeSpec } from "../util/runtime" */
21
20
 
22
21
  class CommonJsRequireContextDependency extends ContextDependency {
23
22
  /**