webpack 5.109.2 → 5.110.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 (639) hide show
  1. package/README.md +2 -0
  2. package/lib/APIPlugin.js +123 -17
  3. package/lib/AsyncDependenciesBlock.js +10 -7
  4. package/lib/AutomaticPrefetchPlugin.js +1 -1
  5. package/lib/BannerPlugin.js +10 -6
  6. package/lib/CacheFacade.js +6 -6
  7. package/lib/Chunk.js +14 -11
  8. package/lib/ChunkGraph.js +26 -17
  9. package/lib/ChunkGroup.js +7 -7
  10. package/lib/ChunkTemplate.js +35 -44
  11. package/lib/CircularModulesPlugin.js +205 -28
  12. package/lib/CleanPlugin.js +4 -7
  13. package/lib/CodeGenerationResults.js +11 -8
  14. package/lib/CompatibilityPlugin.js +7 -7
  15. package/lib/Compilation.js +688 -409
  16. package/lib/Compiler.js +53 -38
  17. package/lib/ConcatenationScope.js +117 -8
  18. package/lib/ConditionalInitFragment.js +3 -3
  19. package/lib/ConstPlugin.js +13 -11
  20. package/lib/ContextExclusionPlugin.js +1 -1
  21. package/lib/ContextModule.js +146 -54
  22. package/lib/ContextModuleFactory.js +46 -14
  23. package/lib/ContextReplacementPlugin.js +12 -14
  24. package/lib/DefinePlugin.js +121 -37
  25. package/lib/DependenciesBlock.js +9 -6
  26. package/lib/Dependency.js +36 -16
  27. package/lib/DependencyTemplate.js +11 -12
  28. package/lib/DependencyTemplates.js +3 -3
  29. package/lib/DotenvPlugin.js +50 -13
  30. package/lib/DynamicEntryPlugin.js +8 -4
  31. package/lib/EntryOptionPlugin.js +8 -4
  32. package/lib/EntryPlugin.js +2 -2
  33. package/lib/Entrypoint.js +6 -2
  34. package/lib/EnvironmentPlugin.js +2 -2
  35. package/lib/EvalDevToolModulePlugin.js +8 -4
  36. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  37. package/lib/ExportsInfo.js +101 -14
  38. package/lib/ExportsInfoApiPlugin.js +2 -4
  39. package/lib/ExternalModule.js +232 -77
  40. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  41. package/lib/ExternalsPlugin.js +10 -6
  42. package/lib/FileSystemInfo.js +27 -68
  43. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  44. package/lib/FlagDependencyExportsPlugin.js +76 -19
  45. package/lib/FlagDependencyUsagePlugin.js +32 -47
  46. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  47. package/lib/Generator.js +19 -15
  48. package/lib/HotModuleReplacementPlugin.js +16 -44
  49. package/lib/IgnorePlugin.js +8 -4
  50. package/lib/IgnoreWarningsPlugin.js +2 -2
  51. package/lib/InitFragment.js +8 -4
  52. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  53. package/lib/LazyBarrel.js +3 -4
  54. package/lib/LibraryTemplatePlugin.js +10 -6
  55. package/lib/LoaderOptionsPlugin.js +7 -3
  56. package/lib/LoaderTargetPlugin.js +1 -1
  57. package/lib/MainTemplate.js +49 -42
  58. package/lib/ManifestPlugin.js +12 -11
  59. package/lib/Module.js +62 -33
  60. package/lib/ModuleFactory.js +3 -3
  61. package/lib/ModuleFilenameHelpers.js +9 -4
  62. package/lib/ModuleGraph.js +195 -21
  63. package/lib/ModuleGraphConnection.js +6 -13
  64. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  65. package/lib/ModuleTemplate.js +62 -63
  66. package/lib/MultiCompiler.js +130 -64
  67. package/lib/MultiStats.js +40 -9
  68. package/lib/MultiWatching.js +3 -3
  69. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  70. package/lib/NodeStuffPlugin.js +29 -19
  71. package/lib/NormalModule.js +138 -82
  72. package/lib/NormalModuleFactory.js +555 -110
  73. package/lib/NormalModuleReplacementPlugin.js +5 -8
  74. package/lib/NullFactory.js +6 -2
  75. package/lib/OptionsApply.js +7 -3
  76. package/lib/Parser.js +7 -3
  77. package/lib/PlatformPlugin.js +2 -2
  78. package/lib/PrefetchPlugin.js +1 -1
  79. package/lib/ProgressPlugin.js +16 -13
  80. package/lib/ProvidePlugin.js +3 -5
  81. package/lib/RawModule.js +25 -17
  82. package/lib/RecordIdsPlugin.js +3 -3
  83. package/lib/RequestShortener.js +1 -1
  84. package/lib/ResolverFactory.js +2 -2
  85. package/lib/RuntimeGlobals.js +22 -10
  86. package/lib/RuntimeModule.js +29 -19
  87. package/lib/RuntimePlugin.js +332 -169
  88. package/lib/RuntimeTemplate.js +2792 -352
  89. package/lib/SelfModuleFactory.js +7 -3
  90. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  91. package/lib/SourceMapDevToolPlugin.js +30 -20
  92. package/lib/Stats.js +3 -4
  93. package/lib/Template.js +32 -22
  94. package/lib/TemplatedPathPlugin.js +96 -14
  95. package/lib/UseStrictPlugin.js +4 -6
  96. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  97. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  98. package/lib/WarnNoModeSetPlugin.js +1 -1
  99. package/lib/WatchIgnorePlugin.js +8 -6
  100. package/lib/Watching.js +8 -8
  101. package/lib/WebpackIsIncludedPlugin.js +2 -4
  102. package/lib/WebpackOptionsApply.js +308 -18
  103. package/lib/WebpackOptionsDefaulter.js +6 -2
  104. package/lib/asset/AssetBytesGenerator.js +11 -7
  105. package/lib/asset/AssetBytesParser.js +2 -4
  106. package/lib/asset/AssetGenerator.js +187 -92
  107. package/lib/asset/AssetModule.js +7 -3
  108. package/lib/asset/AssetModulesPlugin.js +110 -38
  109. package/lib/asset/AssetParser.js +9 -7
  110. package/lib/asset/AssetSourceGenerator.js +59 -10
  111. package/lib/asset/AssetSourceParser.js +2 -4
  112. package/lib/asset/RawDataUrlModule.js +24 -16
  113. package/lib/asset/WebManifestGenerator.js +8 -10
  114. package/lib/asset/WebManifestParser.js +24 -10
  115. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  118. package/lib/async-modules/isGeneratorLowered.js +4 -4
  119. package/lib/buildChunkGraph.js +36 -27
  120. package/lib/bun/BunTargetPlugin.js +1 -1
  121. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  122. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  123. package/lib/cache/IdleFileCachePlugin.js +2 -2
  124. package/lib/cache/MemoryCachePlugin.js +18 -10
  125. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  126. package/lib/cache/PackFileCacheStrategy.js +30 -23
  127. package/lib/cache/ResolverCachePlugin.js +38 -18
  128. package/lib/cache/getLazyHashedEtag.js +1 -2
  129. package/lib/cache/mergeEtags.js +1 -1
  130. package/lib/cli.js +1 -3
  131. package/lib/config/browserslistTargetHandler.js +41 -5
  132. package/lib/config/defaults.js +255 -79
  133. package/lib/config/defineConfig.js +10 -2
  134. package/lib/config/getClaimedAssetTypes.js +65 -0
  135. package/lib/config/normalization.js +36 -16
  136. package/lib/config/target.js +46 -3
  137. package/lib/container/ContainerEntryDependency.js +1 -1
  138. package/lib/container/ContainerEntryModule.js +24 -15
  139. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  140. package/lib/container/ContainerPlugin.js +9 -10
  141. package/lib/container/ContainerReferencePlugin.js +6 -2
  142. package/lib/container/FallbackDependency.js +1 -1
  143. package/lib/container/FallbackModule.js +24 -17
  144. package/lib/container/FallbackModuleFactory.js +7 -3
  145. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  146. package/lib/container/ModuleFederationPlugin.js +7 -24
  147. package/lib/container/RemoteModule.js +27 -19
  148. package/lib/container/RemoteRuntimeModule.js +10 -8
  149. package/lib/container/moduleFederationHooks.js +32 -0
  150. package/lib/css/CssGenerator.js +170 -40
  151. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  152. package/lib/css/CssLoadingRuntimeModule.js +57 -24
  153. package/lib/css/CssModule.js +10 -7
  154. package/lib/css/CssModulesPlugin.js +168 -88
  155. package/lib/css/CssParser.js +1113 -568
  156. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  157. package/lib/css/cssMinify.js +168 -0
  158. package/lib/css/data.js +5324 -0
  159. package/lib/css/syntax.js +9579 -232
  160. package/lib/debug/ProfilingPlugin.js +14 -9
  161. package/lib/deno/DenoTargetPlugin.js +1 -1
  162. package/lib/dependencies/AMDDefineDependency.js +112 -87
  163. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  164. package/lib/dependencies/AMDPlugin.js +9 -7
  165. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  166. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  167. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  168. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  169. package/lib/dependencies/AMDRequireDependency.js +8 -7
  170. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  171. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  172. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  173. package/lib/dependencies/CachedConstDependency.js +11 -8
  174. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  175. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  176. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  177. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  178. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  179. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  180. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  181. package/lib/dependencies/CommonJsPlugin.js +35 -6
  182. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  183. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  184. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  185. package/lib/dependencies/ConstDependency.js +8 -9
  186. package/lib/dependencies/ContextDependency.js +12 -8
  187. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  188. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  189. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  190. package/lib/dependencies/ContextElementDependency.js +31 -12
  191. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  192. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  193. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  194. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  195. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  196. package/lib/dependencies/CssImportDependency.js +18 -9
  197. package/lib/dependencies/CssUrlDependency.js +17 -13
  198. package/lib/dependencies/DllEntryDependency.js +1 -1
  199. package/lib/dependencies/DynamicExports.js +2 -2
  200. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  201. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  202. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  203. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  204. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  205. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  206. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  207. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  208. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
  209. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  210. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  211. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  212. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  213. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  214. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  215. package/lib/dependencies/HarmonyExports.js +7 -4
  216. package/lib/dependencies/HarmonyImportDependency.js +27 -19
  217. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  218. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  219. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  220. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  221. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  222. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  223. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  224. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  225. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  226. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  227. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  228. package/lib/dependencies/ImportContextDependency.js +2 -2
  229. package/lib/dependencies/ImportDependency.js +24 -20
  230. package/lib/dependencies/ImportEagerDependency.js +6 -9
  231. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  232. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  233. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  234. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  235. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  236. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  237. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  238. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  240. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  241. package/lib/dependencies/ImportParserPlugin.js +49 -35
  242. package/lib/dependencies/ImportPhase.js +12 -5
  243. package/lib/dependencies/ImportPlugin.js +7 -3
  244. package/lib/dependencies/ImportWeakDependency.js +6 -9
  245. package/lib/dependencies/JsonExportsDependency.js +11 -7
  246. package/lib/dependencies/LoaderDependency.js +2 -2
  247. package/lib/dependencies/LoaderImportDependency.js +2 -2
  248. package/lib/dependencies/LoaderPlugin.js +11 -7
  249. package/lib/dependencies/LocalModuleDependency.js +5 -5
  250. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  251. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  252. package/lib/dependencies/ModuleDependency.js +9 -6
  253. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  254. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  255. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  256. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  257. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  258. package/lib/dependencies/NullDependency.js +3 -3
  259. package/lib/dependencies/ProvidedDependency.js +14 -10
  260. package/lib/dependencies/PureExpressionDependency.js +9 -10
  261. package/lib/dependencies/RequireContextDependency.js +2 -2
  262. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  263. package/lib/dependencies/RequireContextPlugin.js +8 -4
  264. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  265. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  266. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  267. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  268. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  269. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  270. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  271. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  272. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  273. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  274. package/lib/dependencies/RequireResolveDependency.js +4 -4
  275. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  276. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  277. package/lib/dependencies/StaticExportsDependency.js +2 -2
  278. package/lib/dependencies/SystemPlugin.js +10 -6
  279. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  280. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  281. package/lib/dependencies/URLContextDependency.js +2 -2
  282. package/lib/dependencies/URLDependency.js +110 -64
  283. package/lib/dependencies/URLPlugin.js +7 -3
  284. package/lib/dependencies/UnsupportedDependency.js +4 -4
  285. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  286. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  287. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  288. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  289. package/lib/dependencies/WorkerDependency.js +28 -22
  290. package/lib/dependencies/WorkletDependency.js +15 -14
  291. package/lib/dependencies/getFunctionExpression.js +8 -4
  292. package/lib/dependencies/processExportInfo.js +5 -5
  293. package/lib/dll/DelegatedModule.js +34 -22
  294. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  295. package/lib/dll/DelegatedPlugin.js +2 -2
  296. package/lib/dll/DllEntryPlugin.js +2 -2
  297. package/lib/dll/DllModule.js +22 -15
  298. package/lib/dll/DllModuleFactory.js +7 -3
  299. package/lib/dll/DllPlugin.js +7 -5
  300. package/lib/dll/DllReferencePlugin.js +10 -7
  301. package/lib/dll/LibManifestPlugin.js +5 -5
  302. package/lib/electron/ElectronTargetPlugin.js +53 -49
  303. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  304. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  305. package/lib/errors/BroadContextsWarning.js +43 -0
  306. package/lib/errors/BuildCycleError.js +1 -1
  307. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  308. package/lib/errors/ChunkRenderError.js +1 -1
  309. package/lib/errors/CircularDependenciesWarning.js +38 -0
  310. package/lib/errors/CodeGenerationError.js +1 -1
  311. package/lib/errors/CommentCompilationWarning.js +1 -1
  312. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  313. package/lib/errors/DuplicateModulesWarning.js +45 -0
  314. package/lib/errors/DynamicExportsWarning.js +30 -0
  315. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  316. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  317. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  318. package/lib/errors/EvalUsageWarning.js +28 -0
  319. package/lib/errors/HookWebpackError.js +5 -5
  320. package/lib/errors/HotspotsWarning.js +57 -0
  321. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  322. package/lib/errors/InlinedAssetsWarning.js +36 -0
  323. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  324. package/lib/errors/LargeModulesWarning.js +45 -0
  325. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  326. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  327. package/lib/errors/MixedExportsWarning.js +41 -0
  328. package/lib/errors/ModuleDependencyError.js +13 -16
  329. package/lib/errors/ModuleDependencyWarning.js +5 -15
  330. package/lib/errors/ModuleHashingError.js +1 -1
  331. package/lib/errors/ModuleNotFoundError.js +2 -2
  332. package/lib/errors/ModuleParseError.js +1 -2
  333. package/lib/errors/ModuleRestoreError.js +1 -1
  334. package/lib/errors/ModuleStoreError.js +1 -1
  335. package/lib/errors/NodeStuffInWebError.js +1 -1
  336. package/lib/errors/OsDependentRuleWarning.js +31 -0
  337. package/lib/errors/PureAnnotationsWarning.js +36 -0
  338. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  339. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  340. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  341. package/lib/errors/TinyChunksWarning.js +40 -0
  342. package/lib/errors/TopLevelThisWarning.js +34 -0
  343. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  344. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  345. package/lib/errors/UnusedAliasesWarning.js +29 -0
  346. package/lib/errors/UnusedDefinesWarning.js +29 -0
  347. package/lib/errors/UnusedExternalsWarning.js +29 -0
  348. package/lib/errors/UnusedReexportsWarning.js +42 -0
  349. package/lib/errors/UnusedRuleWarning.js +29 -0
  350. package/lib/errors/WebpackError.js +9 -5
  351. package/lib/errors/deriveStackFromNestedError.js +90 -0
  352. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  353. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  354. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  355. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  356. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  357. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  358. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  359. package/lib/hmr/lazyCompilationBackend.js +9 -6
  360. package/lib/hmr/parserHooks.js +56 -0
  361. package/lib/html/HtmlGenerator.js +276 -76
  362. package/lib/html/HtmlModule.js +7 -3
  363. package/lib/html/HtmlModulesPlugin.js +282 -162
  364. package/lib/html/HtmlParser.js +31 -86
  365. package/lib/html/data.js +1928 -0
  366. package/lib/html/htmlMinify.js +288 -0
  367. package/lib/html/syntax.js +5557 -1155
  368. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  369. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  370. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  371. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  372. package/lib/ids/IdHelpers.js +7 -8
  373. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  374. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  375. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  376. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  377. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  378. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  379. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  380. package/lib/index.js +10 -0
  381. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  382. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  383. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  384. package/lib/javascript/ChunkHelpers.js +1 -1
  385. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  386. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  387. package/lib/javascript/JavascriptGenerator.js +64 -164
  388. package/lib/javascript/JavascriptModule.js +9 -3
  389. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  390. package/lib/javascript/JavascriptParser.js +242 -99
  391. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  392. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  393. package/lib/javascript/StartupHelpers.js +55 -9
  394. package/lib/javascript/syntax.js +2678 -232
  395. package/lib/json/JsonData.js +8 -4
  396. package/lib/json/JsonGenerator.js +37 -15
  397. package/lib/json/JsonModule.js +7 -3
  398. package/lib/json/JsonModulesPlugin.js +1 -1
  399. package/lib/json/JsonParser.js +5 -6
  400. package/lib/library/AbstractLibraryPlugin.js +20 -14
  401. package/lib/library/AmdLibraryPlugin.js +11 -7
  402. package/lib/library/AssignLibraryPlugin.js +19 -13
  403. package/lib/library/EnableLibraryPlugin.js +2 -2
  404. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  405. package/lib/library/JsonpLibraryPlugin.js +11 -7
  406. package/lib/library/ModuleLibraryPlugin.js +256 -64
  407. package/lib/library/SystemLibraryPlugin.js +12 -8
  408. package/lib/library/UmdLibraryPlugin.js +62 -25
  409. package/lib/loaders/LoaderRunner.js +14 -1
  410. package/lib/loaders/loadLoader.js +8 -4
  411. package/lib/logging/createConsoleLogger.js +7 -4
  412. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  413. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  414. package/lib/node/NodeSourcePlugin.js +1 -1
  415. package/lib/node/NodeTargetPlugin.js +4 -3
  416. package/lib/node/NodeTemplatePlugin.js +1 -1
  417. package/lib/node/NodeWatchFileSystem.js +70 -9
  418. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  419. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  420. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  421. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  422. package/lib/node/nodeConsole.js +7 -3
  423. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  424. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  425. package/lib/optimize/ConcatenatedModule.js +985 -470
  426. package/lib/optimize/ConstExportsPlugin.js +11 -7
  427. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  428. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  429. package/lib/optimize/InlineExports.js +9 -5
  430. package/lib/optimize/InnerGraph.js +28 -12
  431. package/lib/optimize/InnerGraphPlugin.js +23 -18
  432. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  433. package/lib/optimize/MangleExportsPlugin.js +7 -8
  434. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  435. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  436. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  437. package/lib/optimize/RealContentHashPlugin.js +10 -6
  438. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  439. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  440. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  441. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  442. package/lib/optimize/SplitChunksPlugin.js +86 -24
  443. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  444. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  445. package/lib/performance/BroadContextsPlugin.js +142 -0
  446. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  447. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  448. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  449. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  450. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  451. package/lib/performance/DynamicExportsPlugin.js +120 -0
  452. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  453. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  454. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  455. package/lib/performance/EvalUsagePlugin.js +115 -0
  456. package/lib/performance/HotspotsPlugin.js +296 -0
  457. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  458. package/lib/performance/LargeModulesPlugin.js +126 -0
  459. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  460. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  461. package/lib/performance/MixedExportsPlugin.js +136 -0
  462. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  463. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  464. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  465. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  466. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  467. package/lib/performance/SizeLimitsPlugin.js +139 -7
  468. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  469. package/lib/performance/TinyChunksPlugin.js +128 -0
  470. package/lib/performance/TopLevelThisPlugin.js +208 -0
  471. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  472. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  473. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  474. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  475. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  476. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  477. package/lib/performance/getModuleSize.js +22 -0
  478. package/lib/performance/getSourceModules.js +22 -0
  479. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  480. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  481. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  482. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  483. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  484. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  486. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  487. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  488. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  489. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  490. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  491. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  492. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  493. package/lib/rules/RuleSetCompiler.js +146 -12
  494. package/lib/rules/UseEffectRulePlugin.js +18 -11
  495. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  496. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  497. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  498. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  499. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  500. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  501. package/lib/runtime/CompatRuntimeModule.js +5 -3
  502. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  503. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  504. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  505. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  506. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  507. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  508. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  509. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  510. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  511. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  512. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  513. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  514. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  515. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  516. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  517. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  518. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  519. package/lib/runtime/NonceRuntimeModule.js +10 -0
  520. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  521. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  522. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  523. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  524. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  525. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  526. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  527. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  528. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  529. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  530. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  531. package/lib/runtime/baseUri.js +63 -0
  532. package/lib/schemes/DataUriPlugin.js +1 -1
  533. package/lib/schemes/FileUriPlugin.js +1 -1
  534. package/lib/schemes/HttpUriPlugin.js +24 -15
  535. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  536. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  537. package/lib/serialization/BinaryMiddleware.js +4 -4
  538. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  539. package/lib/serialization/FileMiddleware.js +7 -7
  540. package/lib/serialization/ObjectMiddleware.js +11 -6
  541. package/lib/serialization/PlainObjectSerializer.js +19 -16
  542. package/lib/sharing/ConsumeSharedModule.js +30 -21
  543. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  544. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  545. package/lib/sharing/ProvideSharedModule.js +25 -16
  546. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  547. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  548. package/lib/sharing/SharePlugin.js +17 -5
  549. package/lib/sharing/ShareRuntimeModule.js +4 -4
  550. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  551. package/lib/sharing/utils.js +1 -3
  552. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  553. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  554. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  555. package/lib/stats/StatsFactory.js +25 -26
  556. package/lib/stats/StatsPrinter.js +16 -12
  557. package/lib/typescript/TypeScriptPlugin.js +12 -14
  558. package/lib/url/URLParserPlugin.js +26 -13
  559. package/lib/util/AsyncQueue.js +4 -3
  560. package/lib/util/Hash.js +5 -1
  561. package/lib/util/LazySet.js +35 -22
  562. package/lib/util/LocConverter.js +36 -13
  563. package/lib/util/SourceProcessor.js +1050 -24
  564. package/lib/util/StringXor.js +1 -1
  565. package/lib/util/chainedImports.js +9 -5
  566. package/lib/util/cleverMerge.js +1 -1
  567. package/lib/util/comparators.js +45 -14
  568. package/lib/util/concatenate.js +203 -77
  569. package/lib/util/conventions.js +5 -1
  570. package/lib/util/createHash.js +2 -2
  571. package/lib/util/createHooksRegistry.js +8 -10
  572. package/lib/util/dataURL.js +225 -1
  573. package/lib/util/extractSourceMap.js +4 -3
  574. package/lib/util/findCaseMismatch.js +139 -0
  575. package/lib/util/formatLocation.js +1 -2
  576. package/lib/util/fs.js +22 -5
  577. package/lib/util/globUtils.js +298 -24
  578. package/lib/util/hash/BatchedHash.js +5 -1
  579. package/lib/util/hash/BulkUpdateHash.js +5 -1
  580. package/lib/util/hash/DebugHash.js +5 -1
  581. package/lib/util/hash/hash-digest.js +6 -2
  582. package/lib/util/identifier.js +4 -0
  583. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  584. package/lib/util/internalSerializables.js +6 -0
  585. package/lib/util/lazyModule.js +56 -0
  586. package/lib/util/makeSerializable.js +7 -3
  587. package/lib/util/matchAlias.js +25 -0
  588. package/lib/util/mimeTypes.js +11 -5
  589. package/lib/util/nonNumericOnlyHash.js +4 -3
  590. package/lib/util/parseJson.js +5 -3
  591. package/lib/util/preloadModuleType.js +32 -0
  592. package/lib/util/registerExternalSerializer.js +7 -5
  593. package/lib/util/runtime.js +2 -2
  594. package/lib/util/semver.js +1 -1
  595. package/lib/util/serialization.js +28 -28
  596. package/lib/util/source.js +2 -2
  597. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  598. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  599. package/lib/wasm/wasmModuleFilename.js +54 -0
  600. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  601. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  602. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  603. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  604. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +54 -16
  605. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  606. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  607. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  608. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  609. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  610. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  611. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  612. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  613. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -6
  614. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  615. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  616. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  617. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  618. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  619. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  620. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  621. package/lib/web/JsonpTemplatePlugin.js +2 -2
  622. package/lib/webpack.js +22 -11
  623. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  624. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  625. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  626. package/module.d.ts +1 -0
  627. package/package.json +22 -15
  628. package/schemas/WebpackOptions.check.js +1 -1
  629. package/schemas/WebpackOptions.json +670 -36
  630. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  631. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  633. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  635. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  636. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  638. package/types.d.ts +3138 -456
  639. 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 getExtractSourceMap = memoize(() => require("./util/extractSourceMap"));
59
+
60
+ const getInvalidDependenciesModuleWarning = memoize(() =>
61
+ require("./errors/InvalidDependenciesModuleWarning")
62
+ );
63
+
64
+ const getUnhandledSchemeError = memoize(() =>
65
+ require("./errors/UnhandledSchemeError")
66
+ );
67
+
68
+ const getNonErrorEmittedError = memoize(() =>
69
+ require("./errors/NonErrorEmittedError")
70
+ );
71
+
72
+ const getModuleWarning = memoize(() => require("./errors/ModuleWarning"));
73
+
74
+ const getModuleParseError = memoize(() => require("./errors/ModuleParseError"));
75
+
76
+ const getModuleError = memoize(() => require("./errors/ModuleError"));
77
+
78
+ const getModuleBuildError = memoize(() => require("./errors/ModuleBuildError"));
79
+
80
+ /** @import { ResolveContext, ResolveRequest } from "enhanced-resolve" */
81
+ /** @import { Source, RawSourceMap } from "webpack-sources" */
82
+ /**
83
+ * @import {
84
+ * ResolveOptions,
85
+ * NoParse,
86
+ * HashFunction
87
+ * } from "../declarations/WebpackOptions"
88
+ */
89
+ /**
90
+ * @import Compilation, {
91
+ * FileSystemDependencies,
92
+ * UnsafeCacheData
93
+ * } from "./Compilation"
94
+ */
95
+ /**
96
+ * @import {
97
+ * WebpackOptionsNormalizedWithDefaults as WebpackOptions
98
+ * } from "./config/defaults"
99
+ */
100
+ /** @import { UpdateHashContext } from "./Dependency" */
101
+ /** @import Generator, { GenerateErrorFn } from "./Generator" */
102
+ /** @import { Snapshot } from "./FileSystemInfo" */
103
+ /**
104
+ * @import {
105
+ * BuildInfo,
106
+ * ValueCacheVersions,
107
+ * BuildMeta,
108
+ * CodeGenerationContext,
109
+ * CodeGenerationResult,
110
+ * CodeGenerationResultData,
111
+ * ConcatenationBailoutReasonContext,
112
+ * KnownBuildInfo,
113
+ * LibIdentOptions,
114
+ * LibIdent,
115
+ * NameForCondition,
116
+ * NeedBuildContext,
117
+ * NeedBuildCallback,
118
+ * BuildCallback,
119
+ * RuntimeRequirements,
120
+ * Sources,
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
 
@@ -815,6 +840,29 @@ class NormalModule extends Module {
815
840
  this._sideEffectsStateValue = undefined;
816
841
  }
817
842
 
843
+ /**
844
+ * Releases the cached parser between incremental rebuilds so it doesn't keep
845
+ * the previous compilation alive.
846
+ * @returns {void}
847
+ */
848
+ _cleanupParserForCache() {
849
+ this.parser = undefined;
850
+ }
851
+
852
+ /**
853
+ * Re-acquire factory-derived helpers (parser/generator) for an incremental
854
+ * rebuild so this compilation's plugin hooks apply.
855
+ * @param {NormalModuleFactory} normalModuleFactory the normal module factory
856
+ * @returns {void}
857
+ */
858
+ _restoreParserAndGenerator(normalModuleFactory) {
859
+ this.parser = normalModuleFactory.getParser(this.type, this.parserOptions);
860
+ this.generator = normalModuleFactory.getGenerator(
861
+ this.type,
862
+ this.generatorOptions
863
+ );
864
+ }
865
+
818
866
  /**
819
867
  * Module should be unsafe cached. Get data that's needed for that.
820
868
  * This data will be passed to restoreFromUnsafeCache later.
@@ -1036,10 +1084,10 @@ class NormalModule extends Module {
1036
1084
  /** @type {LoaderContext<EXPECTED_ANY>["emitWarning"]} */
1037
1085
  emitWarning: (warning) => {
1038
1086
  if (!(warning instanceof Error)) {
1039
- warning = new NonErrorEmittedError(warning);
1087
+ warning = new (getNonErrorEmittedError())(warning);
1040
1088
  }
1041
1089
  this.addWarning(
1042
- new ModuleWarning(warning, {
1090
+ new (getModuleWarning())(warning, {
1043
1091
  from: getCurrentLoaderName()
1044
1092
  })
1045
1093
  );
@@ -1047,10 +1095,10 @@ class NormalModule extends Module {
1047
1095
  /** @type {LoaderContext<EXPECTED_ANY>["emitError"]} */
1048
1096
  emitError: (error) => {
1049
1097
  if (!(error instanceof Error)) {
1050
- error = new NonErrorEmittedError(error);
1098
+ error = new (getNonErrorEmittedError())(error);
1051
1099
  }
1052
1100
  this.addError(
1053
- new ModuleError(error, {
1101
+ new (getModuleError())(error, {
1054
1102
  from: getCurrentLoaderName()
1055
1103
  })
1056
1104
  );
@@ -1243,10 +1291,10 @@ class NormalModule extends Module {
1243
1291
  const processResult = (err, result_) => {
1244
1292
  if (err) {
1245
1293
  if (!(err instanceof Error)) {
1246
- err = new NonErrorEmittedError(err);
1294
+ err = new (getNonErrorEmittedError())(err);
1247
1295
  }
1248
1296
  const currentLoader = this.getCurrentLoader(loaderContext);
1249
- const error = new ModuleBuildError(err, {
1297
+ const error = new (getModuleBuildError())(err, {
1250
1298
  from:
1251
1299
  currentLoader &&
1252
1300
  compilation.runtimeTemplate.requestShortener.shorten(
@@ -1275,7 +1323,7 @@ class NormalModule extends Module {
1275
1323
  : "unknown"
1276
1324
  }) didn't return a Buffer or String`
1277
1325
  );
1278
- const error = new ModuleBuildError(err);
1326
+ const error = new (getModuleBuildError())(err);
1279
1327
  return callback(error);
1280
1328
  }
1281
1329
 
@@ -1349,7 +1397,7 @@ class NormalModule extends Module {
1349
1397
  } else {
1350
1398
  if (typeof result !== "string" && !result) {
1351
1399
  return reject(
1352
- new UnhandledSchemeError(
1400
+ new (getUnhandledSchemeError())(
1353
1401
  /** @type {string} */
1354
1402
  (scheme),
1355
1403
  resourcePath
@@ -1397,7 +1445,9 @@ class NormalModule extends Module {
1397
1445
  );
1398
1446
  return callback(null, source, sourceMap);
1399
1447
  } catch (err) {
1400
- this.addWarning(new ModuleWarning(/** @type {Error} */ (err)));
1448
+ this.addWarning(
1449
+ new (getModuleWarning())(/** @type {Error} */ (err))
1450
+ );
1401
1451
  return callback(null, result);
1402
1452
  }
1403
1453
  }
@@ -1575,7 +1625,8 @@ class NormalModule extends Module {
1575
1625
  pureFunctions: undefined,
1576
1626
  inlineExports: undefined,
1577
1627
  moduleConcatenationBailout: undefined,
1578
- needCreateRequire: undefined
1628
+ needCreateRequire: undefined,
1629
+ usesTopLevelUsingDeclaration: undefined
1579
1630
  };
1580
1631
 
1581
1632
  const startTime = compilation.compiler.fsStartTime || Date.now();
@@ -1599,7 +1650,12 @@ class NormalModule extends Module {
1599
1650
  const loaders = this.loaders.map((item) =>
1600
1651
  contextify(options.context, item.loader, compilation.compiler.root)
1601
1652
  );
1602
- const error = new ModuleParseError(source, e, loaders, this.type);
1653
+ const error = new (getModuleParseError())(
1654
+ source,
1655
+ e,
1656
+ loaders,
1657
+ this.type
1658
+ );
1603
1659
  this.markModuleAsErrored(error);
1604
1660
  this._initBuildHash(compilation);
1605
1661
  return callback();
@@ -1779,7 +1835,7 @@ class NormalModule extends Module {
1779
1835
  return walkSideEffects(
1780
1836
  this,
1781
1837
  moduleGraph,
1782
- getHarmonyImportSideEffectDependency()
1838
+ HarmonyImportSideEffectDependency
1783
1839
  );
1784
1840
  }
1785
1841