@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
@@ -16,20 +16,26 @@ const ConstDependency = require("./dependencies/ConstDependency");
16
16
  const ExternalModuleDependency = require("./dependencies/ExternalModuleDependency");
17
17
  const ExternalModuleInitFragmentDependency = require("./dependencies/ExternalModuleInitFragmentDependency");
18
18
  const ImportMetaPlugin = require("./dependencies/ImportMetaPlugin");
19
- const NodeStuffInWebError = require("./errors/NodeStuffInWebError");
20
19
  const { evaluateToString } = require("./javascript/JavascriptParserHelpers");
21
20
  const { relative } = require("./util/fs");
22
21
  const { parseResource } = require("./util/identifier");
23
-
24
- /** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
25
- /** @typedef {import("../declarations/WebpackOptions").NodeOptions} NodeOptions */
26
- /** @typedef {import("./Compiler")} Compiler */
27
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
28
- /** @typedef {import("./NormalModule")} NormalModule */
29
- /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
30
- /** @typedef {import("./javascript/JavascriptParser").Expression} Expression */
31
- /** @typedef {import("./javascript/JavascriptParser").Range} Range */
32
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
22
+ const memoize = require("./util/memoize");
23
+
24
+ const getNodeStuffInWebError = memoize(() =>
25
+ require("./errors/NodeStuffInWebError")
26
+ );
27
+
28
+ /** @import { Expression } from "estree" */
29
+ /**
30
+ * @import {
31
+ * JavascriptParserOptions,
32
+ * NodeOptions
33
+ * } from "../declarations/WebpackOptions"
34
+ */
35
+ /** @import Compiler from "./Compiler" */
36
+ /** @import NormalModule from "./NormalModule" */
37
+ /** @import JavascriptParser, { Range } from "./javascript/JavascriptParser" */
38
+ /** @import { InputFileSystem } from "./util/fs" */
33
39
 
34
40
  const PLUGIN_NAME = "NodeStuffPlugin";
35
41
  const URL_MODULE_CONSTANT_FUNCTION_NAME = "__webpack_fileURLToPath__";
@@ -103,7 +109,7 @@ class NodeStuffPlugin {
103
109
 
104
110
  if (withWarning) {
105
111
  parser.state.module.addWarning(
106
- new NodeStuffInWebError(
112
+ new (getNodeStuffInWebError())(
107
113
  dep.loc,
108
114
  "global",
109
115
  "The global namespace object is a Node.js feature and isn't available in browsers."
@@ -125,7 +131,7 @@ class NodeStuffPlugin {
125
131
  /**
126
132
  * Sets module constant.
127
133
  * @param {JavascriptParser} parser the parser
128
- * @param {"__filename" | "__dirname" | "import.meta.filename" | "import.meta.dirname"} expressionName expression name
134
+ * @param {string} expressionName expression name
129
135
  * @param {(module: NormalModule) => string} fn function
130
136
  * @param {"filename" | "dirname"} property a property
131
137
  * @returns {void}
@@ -159,7 +165,7 @@ class NodeStuffPlugin {
159
165
  /**
160
166
  * Sets cached module constant.
161
167
  * @param {JavascriptParser} parser the parser
162
- * @param {"__filename" | "__dirname" | "import.meta.filename" | "import.meta.dirname"} expressionName expression name
168
+ * @param {string} expressionName expression name
163
169
  * @param {(module: NormalModule) => string} fn function
164
170
  * @param {"filename" | "dirname"} property a property
165
171
  * @param {string=} warning warning
@@ -186,7 +192,11 @@ class NodeStuffPlugin {
186
192
 
187
193
  if (warning) {
188
194
  parser.state.module.addWarning(
189
- new NodeStuffInWebError(dep.loc, expressionName, warning)
195
+ new (getNodeStuffInWebError())(
196
+ dep.loc,
197
+ expressionName,
198
+ warning
199
+ )
190
200
  );
191
201
  }
192
202
 
@@ -201,7 +211,7 @@ class NodeStuffPlugin {
201
211
  if (property === usingProperty.id) {
202
212
  if (warning) {
203
213
  parser.state.module.addWarning(
204
- new NodeStuffInWebError(
214
+ new (getNodeStuffInWebError())(
205
215
  parser.getLocation(usingProperty),
206
216
  expressionName,
207
217
  warning
@@ -220,7 +230,7 @@ class NodeStuffPlugin {
220
230
  /**
221
231
  * Updates constant using the provided parser.
222
232
  * @param {JavascriptParser} parser the parser
223
- * @param {"__filename" | "__dirname" | "import.meta.filename" | "import.meta.dirname"} expressionName expression name
233
+ * @param {string} expressionName expression name
224
234
  * @param {string} value value
225
235
  * @param {"filename" | "dirname"} property a property
226
236
  * @param {string=} warning warning
@@ -244,7 +254,7 @@ class NodeStuffPlugin {
244
254
  /**
245
255
  * Sets url module constant.
246
256
  * @param {JavascriptParser} parser the parser
247
- * @param {"__filename" | "__dirname" | "import.meta.filename" | "import.meta.dirname"} expressionName expression name
257
+ * @param {string} expressionName expression name
248
258
  * @param {"dirname" | "filename"} property property
249
259
  * @param {() => string} value function to get value
250
260
  * @returns {void}
@@ -358,7 +368,7 @@ class NodeStuffPlugin {
358
368
  * Dirname and filename handler.
359
369
  * @param {JavascriptParser} parser the parser
360
370
  * @param {NodeOptions} nodeOptions options
361
- * @param {{ dirname: "__dirname" | "import.meta.dirname", filename: "__filename" | "import.meta.filename", dirnameEnabled?: boolean, filenameEnabled?: boolean }} identifiers options
371
+ * @param {{ dirname: string, filename: string, dirnameEnabled?: boolean, filenameEnabled?: boolean }} identifiers options
362
372
  * @returns {void}
363
373
  */
364
374
  const dirnameAndFilenameHandler = (
@@ -23,13 +23,8 @@ const Module = require("./Module");
23
23
  const ModuleGraphConnection = require("./ModuleGraphConnection");
24
24
  const { JAVASCRIPT_MODULE_TYPE_AUTO } = require("./ModuleTypeConstants");
25
25
  const RuntimeGlobals = require("./RuntimeGlobals");
26
+ const HarmonyImportSideEffectDependency = require("./dependencies/HarmonyImportSideEffectDependency");
26
27
  const HookWebpackError = require("./errors/HookWebpackError");
27
- const ModuleBuildError = require("./errors/ModuleBuildError");
28
- const ModuleError = require("./errors/ModuleError");
29
- const ModuleParseError = require("./errors/ModuleParseError");
30
- const ModuleWarning = require("./errors/ModuleWarning");
31
- const NonErrorEmittedError = require("./errors/NonErrorEmittedError");
32
- const UnhandledSchemeError = require("./errors/UnhandledSchemeError");
33
28
  const {
34
29
  createLoaderContext,
35
30
  getContext,
@@ -58,57 +53,99 @@ const makeSerializable = require("./util/makeSerializable");
58
53
  const memoize = require("./util/memoize");
59
54
  const parseJson = require("./util/parseJson");
60
55
 
61
- /** @typedef {import("enhanced-resolve").ResolveContext} ResolveContext */
62
- /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
63
- /** @typedef {import("webpack-sources").Source} Source */
64
- /** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
65
- /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
66
- /** @typedef {import("../declarations/WebpackOptions").NoParse} NoParse */
67
- /** @typedef {import("./Compilation")} Compilation */
68
- /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
69
- /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
70
- /** @typedef {import("./Generator")} Generator */
71
- /** @typedef {import("./Generator").GenerateErrorFn} GenerateErrorFn */
72
- /** @typedef {import("./FileSystemInfo").Snapshot} Snapshot */
73
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
74
- /** @typedef {import("./Module").FileSystemDependencies} FileSystemDependencies */
75
- /** @typedef {import("./Module").ValueCacheVersions} ValueCacheVersions */
76
- /** @typedef {import("./Module").BuildMeta} BuildMeta */
77
- /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
78
- /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
79
- /** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
80
- /** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
81
- /** @typedef {import("./Module").KnownBuildInfo} KnownBuildInfo */
82
- /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
83
- /** @typedef {import("./Module").LibIdent} LibIdent */
84
- /** @typedef {import("./Module").NameForCondition} NameForCondition */
85
- /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
86
- /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
87
- /** @typedef {import("./Module").BuildCallback} BuildCallback */
88
- /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
89
- /** @typedef {import("./Module").Sources} Sources */
90
- /** @typedef {import("./Module").SourceType} SourceType */
91
- /** @typedef {import("./Module").SourceTypes} SourceTypes */
92
- /** @typedef {import("./Module").UnsafeCacheData} UnsafeCacheData */
93
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
94
- /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
95
- /** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
96
- /** @typedef {import("./NormalModuleFactory").NormalModuleTypes} NormalModuleTypes */
97
- /** @typedef {import("./NormalModuleFactory").ParserByType} ParserByType */
98
- /** @typedef {import("./NormalModuleFactory").ParserOptionsByType} ParserOptionsByType */
99
- /** @typedef {import("./NormalModuleFactory").GeneratorByType} GeneratorByType */
100
- /** @typedef {import("./NormalModuleFactory").GeneratorOptionsByType} GeneratorOptionsByType */
101
- /** @typedef {import("./NormalModuleFactory").ResourceSchemeData} ResourceSchemeData */
102
- /** @typedef {import("./Parser")} Parser */
103
- /** @typedef {import("./Parser").PreparsedAst} PreparsedAst */
104
- /** @typedef {import("./RequestShortener")} RequestShortener */
105
- /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
106
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
107
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
108
- /** @typedef {import("./util/Hash")} Hash */
109
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
110
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
111
- /** @typedef {import("./util/identifier").AssociatedObjectForCache} AssociatedObjectForCache */
56
+ const getValidate = memoize(() => require("schema-utils").validate);
57
+
58
+ const getGenerator = memoize(() => require("./Generator"));
59
+
60
+ const getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
61
+
62
+ const getInvalidDependenciesModuleWarning = memoize(() =>
63
+ require("./errors/InvalidDependenciesModuleWarning")
64
+ );
65
+
66
+ const getUnhandledSchemeError = memoize(() =>
67
+ require("./errors/UnhandledSchemeError")
68
+ );
69
+
70
+ const getNonErrorEmittedError = memoize(() =>
71
+ require("./errors/NonErrorEmittedError")
72
+ );
73
+
74
+ const getModuleWarning = memoize(() => require("./errors/ModuleWarning"));
75
+
76
+ const getModuleParseError = memoize(() => require("./errors/ModuleParseError"));
77
+
78
+ const getModuleError = memoize(() => require("./errors/ModuleError"));
79
+
80
+ const getModuleBuildError = memoize(() => require("./errors/ModuleBuildError"));
81
+
82
+ /** @import { ResolveContext, ResolveRequest } from "enhanced-resolve" */
83
+ /** @import { Source, RawSourceMap } from "webpack-sources" */
84
+ /**
85
+ * @import {
86
+ * ResolveOptions,
87
+ * NoParse,
88
+ * HashFunction
89
+ * } from "../declarations/WebpackOptions"
90
+ */
91
+ /**
92
+ * @import Compilation, {
93
+ * FileSystemDependencies,
94
+ * UnsafeCacheData
95
+ * } from "./Compilation"
96
+ */
97
+ /**
98
+ * @import {
99
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
100
+ * } from "./config/defaults"
101
+ */
102
+ /** @import { UpdateHashContext } from "./Dependency" */
103
+ /** @import Generator, { GenerateErrorFn } from "./Generator" */
104
+ /** @import { Snapshot } from "./FileSystemInfo" */
105
+ /**
106
+ * @import {
107
+ * BuildInfo,
108
+ * ValueCacheVersions,
109
+ * BuildMeta,
110
+ * CodeGenerationContext,
111
+ * CodeGenerationResult,
112
+ * ConcatenationBailoutReasonContext,
113
+ * KnownBuildInfo,
114
+ * LibIdentOptions,
115
+ * LibIdent,
116
+ * NameForCondition,
117
+ * NeedBuildContext,
118
+ * NeedBuildCallback,
119
+ * BuildCallback,
120
+ * RuntimeRequirements,
121
+ * SourceType,
122
+ * SourceTypes
123
+ * } from "./Module"
124
+ */
125
+ /** @import ModuleGraph from "./ModuleGraph" */
126
+ /** @import { ConnectionState } from "./ModuleGraphConnection" */
127
+ /**
128
+ * @import NormalModuleFactory, {
129
+ * NormalModuleTypes,
130
+ * ParserByType,
131
+ * ParserOptionsByType,
132
+ * GeneratorByType,
133
+ * GeneratorOptionsByType,
134
+ * ResourceSchemeData
135
+ * } from "./NormalModuleFactory"
136
+ */
137
+ /** @import Parser, { PreparsedAst } from "./Parser" */
138
+ /** @import RequestShortener from "./RequestShortener" */
139
+ /** @import { ResolverWithOptions } from "./ResolverFactory" */
140
+ /**
141
+ * @import {
142
+ * ObjectDeserializerContext,
143
+ * ObjectSerializerContext
144
+ * } from "./serialization/ObjectMiddleware"
145
+ */
146
+ /** @import Hash from "./util/Hash" */
147
+ /** @import { InputFileSystem } from "./util/fs" */
148
+ /** @import { AssociatedObjectForCache } from "./util/identifier" */
112
149
  /**
113
150
  * @template T
114
151
  * @typedef {import("./util/deprecation").FakeHook<T>} FakeHook
@@ -129,18 +166,6 @@ const parseJson = require("./util/parseJson");
129
166
 
130
167
  /** @typedef {(content: string) => boolean} NoParseFn */
131
168
 
132
- const getInvalidDependenciesModuleWarning = memoize(() =>
133
- require("./errors/InvalidDependenciesModuleWarning")
134
- );
135
-
136
- const getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
137
-
138
- const getValidate = memoize(() => require("schema-utils").validate);
139
-
140
- const getHarmonyImportSideEffectDependency = memoize(() =>
141
- require("./dependencies/HarmonyImportSideEffectDependency")
142
- );
143
-
144
169
  /**
145
170
  * @param {NormalModule} mod the module
146
171
  * @param {ModuleGraph} moduleGraph the module graph
@@ -566,7 +591,7 @@ const createCompilationHooks = () => {
566
591
  * @property {FileSystemDependencies=} missingDependencies
567
592
  * @property {FileSystemDependencies=} buildDependencies
568
593
  * @property {ValueCacheVersions=} valueDependencies
569
- * @property {(Snapshot | null)=} snapshot
594
+ * @property {(InstanceType<Snapshot> | null)=} snapshot
570
595
  * @property {string=} resourceIntegrity using in HttpUriPlugin
571
596
  */
572
597
 
@@ -701,11 +726,6 @@ class NormalModule extends Module {
701
726
  this._sideEffectsStateGraph = undefined;
702
727
  /** @type {ConnectionState | undefined} */
703
728
  this._sideEffectsStateValue = undefined;
704
- /**
705
- * @private
706
- * @type {CodeGenerationResultData}
707
- */
708
- this._codeGeneratorData = new Map();
709
729
  }
710
730
 
711
731
  /**
@@ -815,6 +835,29 @@ class NormalModule extends Module {
815
835
  this._sideEffectsStateValue = undefined;
816
836
  }
817
837
 
838
+ /**
839
+ * Releases the cached parser between incremental rebuilds so it doesn't keep
840
+ * the previous compilation alive.
841
+ * @returns {void}
842
+ */
843
+ _cleanupParserForCache() {
844
+ this.parser = undefined;
845
+ }
846
+
847
+ /**
848
+ * Re-acquire factory-derived helpers (parser/generator) for an incremental
849
+ * rebuild so this compilation's plugin hooks apply.
850
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory
851
+ * @returns {void}
852
+ */
853
+ _restoreParserAndGenerator(normalModuleFactory) {
854
+ this.parser = normalModuleFactory.getParser(this.type, this.parserOptions);
855
+ this.generator = normalModuleFactory.getGenerator(
856
+ this.type,
857
+ this.generatorOptions
858
+ );
859
+ }
860
+
818
861
  /**
819
862
  * Module should be unsafe cached. Get data that's needed for that.
820
863
  * This data will be passed to restoreFromUnsafeCache later.
@@ -1036,10 +1079,10 @@ class NormalModule extends Module {
1036
1079
  /** @type {LoaderContext<EXPECTED_ANY>["emitWarning"]} */
1037
1080
  emitWarning: (warning) => {
1038
1081
  if (!(warning instanceof Error)) {
1039
- warning = new NonErrorEmittedError(warning);
1082
+ warning = new (getNonErrorEmittedError())(warning);
1040
1083
  }
1041
1084
  this.addWarning(
1042
- new ModuleWarning(warning, {
1085
+ new (getModuleWarning())(warning, {
1043
1086
  from: getCurrentLoaderName()
1044
1087
  })
1045
1088
  );
@@ -1047,10 +1090,10 @@ class NormalModule extends Module {
1047
1090
  /** @type {LoaderContext<EXPECTED_ANY>["emitError"]} */
1048
1091
  emitError: (error) => {
1049
1092
  if (!(error instanceof Error)) {
1050
- error = new NonErrorEmittedError(error);
1093
+ error = new (getNonErrorEmittedError())(error);
1051
1094
  }
1052
1095
  this.addError(
1053
- new ModuleError(error, {
1096
+ new (getModuleError())(error, {
1054
1097
  from: getCurrentLoaderName()
1055
1098
  })
1056
1099
  );
@@ -1243,10 +1286,10 @@ class NormalModule extends Module {
1243
1286
  const processResult = (err, result_) => {
1244
1287
  if (err) {
1245
1288
  if (!(err instanceof Error)) {
1246
- err = new NonErrorEmittedError(err);
1289
+ err = new (getNonErrorEmittedError())(err);
1247
1290
  }
1248
1291
  const currentLoader = this.getCurrentLoader(loaderContext);
1249
- const error = new ModuleBuildError(err, {
1292
+ const error = new (getModuleBuildError())(err, {
1250
1293
  from:
1251
1294
  currentLoader &&
1252
1295
  compilation.runtimeTemplate.requestShortener.shorten(
@@ -1275,7 +1318,7 @@ class NormalModule extends Module {
1275
1318
  : "unknown"
1276
1319
  }) didn't return a Buffer or String`
1277
1320
  );
1278
- const error = new ModuleBuildError(err);
1321
+ const error = new (getModuleBuildError())(err);
1279
1322
  return callback(error);
1280
1323
  }
1281
1324
 
@@ -1349,7 +1392,7 @@ class NormalModule extends Module {
1349
1392
  } else {
1350
1393
  if (typeof result !== "string" && !result) {
1351
1394
  return reject(
1352
- new UnhandledSchemeError(
1395
+ new (getUnhandledSchemeError())(
1353
1396
  /** @type {string} */
1354
1397
  (scheme),
1355
1398
  resourcePath
@@ -1397,7 +1440,9 @@ class NormalModule extends Module {
1397
1440
  );
1398
1441
  return callback(null, source, sourceMap);
1399
1442
  } catch (err) {
1400
- this.addWarning(new ModuleWarning(/** @type {Error} */ (err)));
1443
+ this.addWarning(
1444
+ new (getModuleWarning())(/** @type {Error} */ (err))
1445
+ );
1401
1446
  return callback(null, result);
1402
1447
  }
1403
1448
  }
@@ -1575,7 +1620,8 @@ class NormalModule extends Module {
1575
1620
  pureFunctions: undefined,
1576
1621
  inlineExports: undefined,
1577
1622
  moduleConcatenationBailout: undefined,
1578
- needCreateRequire: undefined
1623
+ needCreateRequire: undefined,
1624
+ usesTopLevelUsingDeclaration: undefined
1579
1625
  };
1580
1626
 
1581
1627
  const startTime = compilation.compiler.fsStartTime || Date.now();
@@ -1599,7 +1645,12 @@ class NormalModule extends Module {
1599
1645
  const loaders = this.loaders.map((item) =>
1600
1646
  contextify(options.context, item.loader, compilation.compiler.root)
1601
1647
  );
1602
- const error = new ModuleParseError(source, e, loaders, this.type);
1648
+ const error = new (getModuleParseError())(
1649
+ source,
1650
+ e,
1651
+ loaders,
1652
+ this.type
1653
+ );
1603
1654
  this.markModuleAsErrored(error);
1604
1655
  this._initBuildHash(compilation);
1605
1656
  return callback();
@@ -1779,7 +1830,7 @@ class NormalModule extends Module {
1779
1830
  return walkSideEffects(
1780
1831
  this,
1781
1832
  moduleGraph,
1782
- getHarmonyImportSideEffectDependency()
1833
+ HarmonyImportSideEffectDependency
1783
1834
  );
1784
1835
  }
1785
1836
 
@@ -1834,10 +1885,19 @@ class NormalModule extends Module {
1834
1885
  runtimeRequirements.add(RuntimeGlobals.thisAsExports);
1835
1886
  }
1836
1887
 
1837
- const getData = () => this._codeGeneratorData;
1888
+ /** @type {CodeGenerationResult} */
1889
+ const resultEntry = {
1890
+ sources: new Map(),
1891
+ runtimeRequirements,
1892
+ data: undefined,
1893
+ hash: undefined
1894
+ };
1895
+
1896
+ const getData = () => {
1897
+ if (resultEntry.data === undefined) resultEntry.data = new Map();
1898
+ return resultEntry.data;
1899
+ };
1838
1900
 
1839
- /** @type {Sources} */
1840
- const sources = new Map();
1841
1901
  for (const type of sourceTypes || chunkGraph.getModuleSourceTypes(this)) {
1842
1902
  // TODO webpack@6 make generateError required
1843
1903
  const generator =
@@ -1857,9 +1917,7 @@ class NormalModule extends Module {
1857
1917
  getData,
1858
1918
  type
1859
1919
  })
1860
- : new RawSource(
1861
- `throw new Error(${JSON.stringify(this.error.message)});`
1862
- )
1920
+ : new RawSource(getGenerator().throwBuildErrorCode(this.error))
1863
1921
  : generator.generate(this, {
1864
1922
  dependencyTemplates,
1865
1923
  runtimeTemplate,
@@ -1874,17 +1932,10 @@ class NormalModule extends Module {
1874
1932
  });
1875
1933
 
1876
1934
  if (source) {
1877
- sources.set(type, new CachedSource(source));
1935
+ resultEntry.sources.set(type, new CachedSource(source));
1878
1936
  }
1879
1937
  }
1880
1938
 
1881
- /** @type {CodeGenerationResult} */
1882
- const resultEntry = {
1883
- sources,
1884
- runtimeRequirements,
1885
- data: this._codeGeneratorData,
1886
- hash: undefined
1887
- };
1888
1939
  return resultEntry;
1889
1940
  }
1890
1941
 
@@ -2060,7 +2111,6 @@ class NormalModule extends Module {
2060
2111
  write(this.error);
2061
2112
  write(this._lastSuccessfulBuildMeta);
2062
2113
  write(this._forceBuild);
2063
- write(this._codeGeneratorData);
2064
2114
  write(this.hot);
2065
2115
  super.serialize(context);
2066
2116
  }
@@ -2104,7 +2154,6 @@ class NormalModule extends Module {
2104
2154
  this.error = read();
2105
2155
  this._lastSuccessfulBuildMeta = read();
2106
2156
  this._forceBuild = read();
2107
- this._codeGeneratorData = read();
2108
2157
  this.hot = read();
2109
2158
  super.deserialize(context);
2110
2159
  }