@depup/webpack 5.109.0-depup.0 → 5.110.1-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (641) hide show
  1. package/README.md +7 -7
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +10 -10
  4. package/lib/APIPlugin.js +123 -17
  5. package/lib/AsyncDependenciesBlock.js +10 -7
  6. package/lib/AutomaticPrefetchPlugin.js +1 -1
  7. package/lib/BannerPlugin.js +10 -6
  8. package/lib/CacheFacade.js +6 -6
  9. package/lib/Chunk.js +14 -11
  10. package/lib/ChunkGraph.js +43 -32
  11. package/lib/ChunkGroup.js +7 -7
  12. package/lib/ChunkTemplate.js +35 -44
  13. package/lib/CircularModulesPlugin.js +205 -28
  14. package/lib/CleanPlugin.js +15 -16
  15. package/lib/CodeGenerationResults.js +11 -8
  16. package/lib/CompatibilityPlugin.js +38 -7
  17. package/lib/Compilation.js +709 -414
  18. package/lib/Compiler.js +69 -42
  19. package/lib/ConcatenationScope.js +117 -8
  20. package/lib/ConditionalInitFragment.js +3 -3
  21. package/lib/ConstPlugin.js +13 -11
  22. package/lib/ContextExclusionPlugin.js +1 -1
  23. package/lib/ContextModule.js +146 -54
  24. package/lib/ContextModuleFactory.js +46 -14
  25. package/lib/ContextReplacementPlugin.js +12 -14
  26. package/lib/DefinePlugin.js +168 -57
  27. package/lib/DependenciesBlock.js +9 -6
  28. package/lib/Dependency.js +36 -16
  29. package/lib/DependencyTemplate.js +11 -12
  30. package/lib/DependencyTemplates.js +3 -3
  31. package/lib/DotenvPlugin.js +50 -13
  32. package/lib/DynamicEntryPlugin.js +8 -4
  33. package/lib/EntryOptionPlugin.js +8 -4
  34. package/lib/EntryPlugin.js +2 -2
  35. package/lib/Entrypoint.js +6 -2
  36. package/lib/EnvironmentPlugin.js +2 -2
  37. package/lib/EvalDevToolModulePlugin.js +8 -4
  38. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  39. package/lib/ExportsInfo.js +123 -19
  40. package/lib/ExportsInfoApiPlugin.js +2 -4
  41. package/lib/ExternalModule.js +242 -84
  42. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  43. package/lib/ExternalsPlugin.js +10 -6
  44. package/lib/FileSystemInfo.js +116 -42
  45. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  46. package/lib/FlagDependencyExportsPlugin.js +76 -19
  47. package/lib/FlagDependencyUsagePlugin.js +63 -57
  48. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  49. package/lib/Generator.js +36 -15
  50. package/lib/HotModuleReplacementPlugin.js +16 -44
  51. package/lib/IgnorePlugin.js +8 -4
  52. package/lib/IgnoreWarningsPlugin.js +2 -2
  53. package/lib/InitFragment.js +28 -36
  54. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  55. package/lib/LazyBarrel.js +3 -4
  56. package/lib/LibraryTemplatePlugin.js +10 -6
  57. package/lib/LoaderOptionsPlugin.js +7 -3
  58. package/lib/LoaderTargetPlugin.js +1 -1
  59. package/lib/MainTemplate.js +49 -42
  60. package/lib/ManifestPlugin.js +12 -11
  61. package/lib/Module.js +62 -33
  62. package/lib/ModuleFactory.js +3 -3
  63. package/lib/ModuleFilenameHelpers.js +22 -6
  64. package/lib/ModuleGraph.js +195 -21
  65. package/lib/ModuleGraphConnection.js +6 -13
  66. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  67. package/lib/ModuleTemplate.js +62 -63
  68. package/lib/MultiCompiler.js +130 -64
  69. package/lib/MultiStats.js +40 -9
  70. package/lib/MultiWatching.js +3 -3
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +29 -19
  73. package/lib/NormalModule.js +221 -156
  74. package/lib/NormalModuleFactory.js +563 -112
  75. package/lib/NormalModuleReplacementPlugin.js +5 -8
  76. package/lib/NullFactory.js +6 -2
  77. package/lib/OptionsApply.js +7 -3
  78. package/lib/Parser.js +7 -3
  79. package/lib/PlatformPlugin.js +2 -2
  80. package/lib/PrefetchPlugin.js +1 -1
  81. package/lib/ProgressPlugin.js +16 -13
  82. package/lib/ProvidePlugin.js +3 -5
  83. package/lib/RawModule.js +25 -17
  84. package/lib/RecordIdsPlugin.js +3 -3
  85. package/lib/RequestShortener.js +1 -1
  86. package/lib/ResolverFactory.js +2 -2
  87. package/lib/RuntimeGlobals.js +22 -10
  88. package/lib/RuntimeModule.js +29 -19
  89. package/lib/RuntimePlugin.js +346 -256
  90. package/lib/RuntimeTemplate.js +2792 -352
  91. package/lib/SelfModuleFactory.js +7 -3
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  93. package/lib/SourceMapDevToolPlugin.js +30 -20
  94. package/lib/Stats.js +3 -4
  95. package/lib/Template.js +55 -25
  96. package/lib/TemplatedPathPlugin.js +96 -14
  97. package/lib/UseStrictPlugin.js +4 -6
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  99. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  100. package/lib/WarnNoModeSetPlugin.js +1 -1
  101. package/lib/WatchIgnorePlugin.js +8 -6
  102. package/lib/Watching.js +8 -8
  103. package/lib/WebpackIsIncludedPlugin.js +2 -4
  104. package/lib/WebpackOptionsApply.js +308 -18
  105. package/lib/WebpackOptionsDefaulter.js +6 -2
  106. package/lib/asset/AssetBytesGenerator.js +12 -10
  107. package/lib/asset/AssetBytesParser.js +2 -4
  108. package/lib/asset/AssetGenerator.js +188 -95
  109. package/lib/asset/AssetModule.js +7 -3
  110. package/lib/asset/AssetModulesPlugin.js +110 -38
  111. package/lib/asset/AssetParser.js +9 -7
  112. package/lib/asset/AssetSourceGenerator.js +60 -13
  113. package/lib/asset/AssetSourceParser.js +2 -4
  114. package/lib/asset/RawDataUrlModule.js +24 -16
  115. package/lib/asset/WebManifestGenerator.js +8 -10
  116. package/lib/asset/WebManifestParser.js +24 -10
  117. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  118. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  119. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  120. package/lib/async-modules/isGeneratorLowered.js +4 -4
  121. package/lib/buildChunkGraph.js +36 -27
  122. package/lib/bun/BunTargetPlugin.js +1 -1
  123. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  124. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  125. package/lib/cache/IdleFileCachePlugin.js +2 -2
  126. package/lib/cache/MemoryCachePlugin.js +18 -10
  127. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  128. package/lib/cache/PackFileCacheStrategy.js +289 -28
  129. package/lib/cache/ResolverCachePlugin.js +38 -18
  130. package/lib/cache/getLazyHashedEtag.js +1 -2
  131. package/lib/cache/mergeEtags.js +1 -1
  132. package/lib/cli.js +1 -3
  133. package/lib/config/browserslistTargetHandler.js +41 -5
  134. package/lib/config/defaults.js +282 -81
  135. package/lib/config/defineConfig.js +10 -2
  136. package/lib/config/getClaimedAssetTypes.js +65 -0
  137. package/lib/config/normalization.js +36 -16
  138. package/lib/config/target.js +46 -3
  139. package/lib/container/ContainerEntryDependency.js +1 -1
  140. package/lib/container/ContainerEntryModule.js +24 -15
  141. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  142. package/lib/container/ContainerPlugin.js +9 -10
  143. package/lib/container/ContainerReferencePlugin.js +6 -2
  144. package/lib/container/FallbackDependency.js +1 -1
  145. package/lib/container/FallbackModule.js +24 -17
  146. package/lib/container/FallbackModuleFactory.js +7 -3
  147. package/lib/container/HoistContainerReferencesPlugin.js +53 -66
  148. package/lib/container/ModuleFederationPlugin.js +7 -18
  149. package/lib/container/RemoteModule.js +27 -19
  150. package/lib/container/RemoteRuntimeModule.js +10 -8
  151. package/lib/container/moduleFederationHooks.js +32 -0
  152. package/lib/css/CssGenerator.js +178 -44
  153. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  154. package/lib/css/CssLoadingRuntimeModule.js +82 -36
  155. package/lib/css/CssModule.js +10 -7
  156. package/lib/css/CssModulesPlugin.js +197 -106
  157. package/lib/css/CssParser.js +1248 -618
  158. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  159. package/lib/css/cssMinify.js +168 -0
  160. package/lib/css/data.js +5324 -0
  161. package/lib/css/syntax.js +10396 -952
  162. package/lib/debug/ProfilingPlugin.js +14 -9
  163. package/lib/deno/DenoTargetPlugin.js +1 -1
  164. package/lib/dependencies/AMDDefineDependency.js +112 -87
  165. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  166. package/lib/dependencies/AMDPlugin.js +9 -7
  167. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  168. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  169. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  170. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  171. package/lib/dependencies/AMDRequireDependency.js +8 -7
  172. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  173. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  174. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  175. package/lib/dependencies/CachedConstDependency.js +11 -8
  176. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  177. package/lib/dependencies/CommonJsExportRequireDependency.js +140 -45
  178. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  179. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  180. package/lib/dependencies/CommonJsFullRequireDependency.js +140 -26
  181. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -48
  182. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  183. package/lib/dependencies/CommonJsPlugin.js +35 -6
  184. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  185. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  186. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  187. package/lib/dependencies/ConstDependency.js +8 -9
  188. package/lib/dependencies/ContextDependency.js +12 -8
  189. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  190. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  191. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  192. package/lib/dependencies/ContextElementDependency.js +31 -12
  193. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  194. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  195. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  196. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  197. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  198. package/lib/dependencies/CssImportDependency.js +18 -9
  199. package/lib/dependencies/CssUrlDependency.js +17 -13
  200. package/lib/dependencies/DllEntryDependency.js +1 -1
  201. package/lib/dependencies/DynamicExports.js +2 -2
  202. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  203. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  204. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  205. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  206. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  207. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  208. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  209. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  210. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +15 -11
  211. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  212. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  213. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  214. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +159 -71
  215. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  216. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  217. package/lib/dependencies/HarmonyExports.js +7 -4
  218. package/lib/dependencies/HarmonyImportDependency.js +28 -20
  219. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  220. package/lib/dependencies/HarmonyImportGuard.js +21 -30
  221. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  222. package/lib/dependencies/HarmonyImportSpecifierDependency.js +106 -55
  223. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  224. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  225. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  226. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  227. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  228. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  229. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  230. package/lib/dependencies/ImportContextDependency.js +2 -2
  231. package/lib/dependencies/ImportDependency.js +24 -20
  232. package/lib/dependencies/ImportEagerDependency.js +6 -9
  233. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  234. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  235. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  236. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  237. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  238. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  239. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  241. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  242. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  243. package/lib/dependencies/ImportParserPlugin.js +49 -35
  244. package/lib/dependencies/ImportPhase.js +12 -5
  245. package/lib/dependencies/ImportPlugin.js +7 -3
  246. package/lib/dependencies/ImportWeakDependency.js +6 -9
  247. package/lib/dependencies/JsonExportsDependency.js +11 -7
  248. package/lib/dependencies/LoaderDependency.js +2 -2
  249. package/lib/dependencies/LoaderImportDependency.js +2 -2
  250. package/lib/dependencies/LoaderPlugin.js +11 -7
  251. package/lib/dependencies/LocalModuleDependency.js +5 -5
  252. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  253. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  254. package/lib/dependencies/ModuleDependency.js +9 -6
  255. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  256. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  257. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  258. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  259. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  260. package/lib/dependencies/NullDependency.js +3 -3
  261. package/lib/dependencies/ProvidedDependency.js +14 -10
  262. package/lib/dependencies/PureExpressionDependency.js +9 -10
  263. package/lib/dependencies/RequireContextDependency.js +2 -2
  264. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  265. package/lib/dependencies/RequireContextPlugin.js +8 -4
  266. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  267. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  268. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  269. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  270. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  271. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  272. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  273. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  274. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  275. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  276. package/lib/dependencies/RequireResolveDependency.js +4 -4
  277. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  278. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  279. package/lib/dependencies/StaticExportsDependency.js +2 -2
  280. package/lib/dependencies/SystemPlugin.js +10 -6
  281. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  282. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  283. package/lib/dependencies/URLContextDependency.js +2 -2
  284. package/lib/dependencies/URLDependency.js +110 -64
  285. package/lib/dependencies/URLPlugin.js +7 -3
  286. package/lib/dependencies/UnsupportedDependency.js +4 -4
  287. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  288. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  289. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  290. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  291. package/lib/dependencies/WorkerDependency.js +28 -22
  292. package/lib/dependencies/WorkletDependency.js +15 -14
  293. package/lib/dependencies/getFunctionExpression.js +8 -4
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DuplicateModulesWarning.js +45 -0
  316. package/lib/errors/DynamicExportsWarning.js +30 -0
  317. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  318. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  319. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  320. package/lib/errors/EvalUsageWarning.js +28 -0
  321. package/lib/errors/HookWebpackError.js +5 -5
  322. package/lib/errors/HotspotsWarning.js +57 -0
  323. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  324. package/lib/errors/InlinedAssetsWarning.js +36 -0
  325. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  326. package/lib/errors/LargeModulesWarning.js +45 -0
  327. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  328. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  329. package/lib/errors/MixedExportsWarning.js +41 -0
  330. package/lib/errors/ModuleDependencyError.js +13 -16
  331. package/lib/errors/ModuleDependencyWarning.js +5 -15
  332. package/lib/errors/ModuleHashingError.js +1 -1
  333. package/lib/errors/ModuleNotFoundError.js +2 -2
  334. package/lib/errors/ModuleParseError.js +1 -2
  335. package/lib/errors/ModuleRestoreError.js +1 -1
  336. package/lib/errors/ModuleStoreError.js +1 -1
  337. package/lib/errors/NodeStuffInWebError.js +1 -1
  338. package/lib/errors/OsDependentRuleWarning.js +31 -0
  339. package/lib/errors/PureAnnotationsWarning.js +36 -0
  340. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  341. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  342. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  343. package/lib/errors/TinyChunksWarning.js +40 -0
  344. package/lib/errors/TopLevelThisWarning.js +34 -0
  345. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  346. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  347. package/lib/errors/UnusedAliasesWarning.js +29 -0
  348. package/lib/errors/UnusedDefinesWarning.js +29 -0
  349. package/lib/errors/UnusedExternalsWarning.js +29 -0
  350. package/lib/errors/UnusedReexportsWarning.js +42 -0
  351. package/lib/errors/UnusedRuleWarning.js +29 -0
  352. package/lib/errors/WebpackError.js +9 -5
  353. package/lib/errors/deriveStackFromNestedError.js +90 -0
  354. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  355. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  356. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  357. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +170 -71
  358. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  359. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  360. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  361. package/lib/hmr/lazyCompilationBackend.js +28 -10
  362. package/lib/hmr/parserHooks.js +56 -0
  363. package/lib/html/HtmlGenerator.js +299 -79
  364. package/lib/html/HtmlModule.js +7 -3
  365. package/lib/html/HtmlModulesPlugin.js +312 -174
  366. package/lib/html/HtmlParser.js +31 -86
  367. package/lib/html/data.js +1928 -0
  368. package/lib/html/htmlMinify.js +288 -0
  369. package/lib/html/syntax.js +7819 -3331
  370. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  371. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  372. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  373. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  374. package/lib/ids/IdHelpers.js +31 -18
  375. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  376. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  377. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  378. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  379. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  380. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  381. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  382. package/lib/index.js +10 -0
  383. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  384. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  385. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  386. package/lib/javascript/ChunkHelpers.js +1 -1
  387. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  388. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  389. package/lib/javascript/JavascriptGenerator.js +65 -165
  390. package/lib/javascript/JavascriptModule.js +9 -3
  391. package/lib/javascript/JavascriptModulesPlugin.js +181 -162
  392. package/lib/javascript/JavascriptParser.js +291 -112
  393. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  394. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  395. package/lib/javascript/StartupHelpers.js +55 -9
  396. package/lib/javascript/syntax.js +3403 -300
  397. package/lib/json/JsonData.js +8 -4
  398. package/lib/json/JsonGenerator.js +38 -16
  399. package/lib/json/JsonModule.js +7 -3
  400. package/lib/json/JsonModulesPlugin.js +1 -1
  401. package/lib/json/JsonParser.js +5 -6
  402. package/lib/library/AbstractLibraryPlugin.js +20 -14
  403. package/lib/library/AmdLibraryPlugin.js +11 -7
  404. package/lib/library/AssignLibraryPlugin.js +19 -13
  405. package/lib/library/EnableLibraryPlugin.js +2 -2
  406. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  407. package/lib/library/JsonpLibraryPlugin.js +11 -7
  408. package/lib/library/ModuleLibraryPlugin.js +256 -64
  409. package/lib/library/SystemLibraryPlugin.js +12 -8
  410. package/lib/library/UmdLibraryPlugin.js +62 -25
  411. package/lib/loaders/LoaderRunner.js +14 -1
  412. package/lib/loaders/loadLoader.js +8 -4
  413. package/lib/logging/createConsoleLogger.js +7 -4
  414. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  415. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  416. package/lib/node/NodeSourcePlugin.js +1 -1
  417. package/lib/node/NodeTargetPlugin.js +4 -3
  418. package/lib/node/NodeTemplatePlugin.js +1 -1
  419. package/lib/node/NodeWatchFileSystem.js +70 -9
  420. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  421. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +81 -20
  422. package/lib/node/ReadFileCompileWasmPlugin.js +37 -17
  423. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  424. package/lib/node/nodeConsole.js +7 -3
  425. package/lib/optimize/AggressiveMergingPlugin.js +21 -17
  426. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  427. package/lib/optimize/ConcatenatedModule.js +996 -477
  428. package/lib/optimize/ConstExportsPlugin.js +11 -7
  429. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  430. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  431. package/lib/optimize/InlineExports.js +9 -5
  432. package/lib/optimize/InnerGraph.js +28 -12
  433. package/lib/optimize/InnerGraphPlugin.js +23 -18
  434. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  435. package/lib/optimize/MangleExportsPlugin.js +7 -8
  436. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  437. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  438. package/lib/optimize/ModuleConcatenationPlugin.js +124 -59
  439. package/lib/optimize/RealContentHashPlugin.js +20 -13
  440. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  441. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  442. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  443. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  444. package/lib/optimize/SplitChunksPlugin.js +232 -68
  445. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  446. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  447. package/lib/performance/BroadContextsPlugin.js +142 -0
  448. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  449. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  450. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  451. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  452. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  453. package/lib/performance/DynamicExportsPlugin.js +120 -0
  454. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  455. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  456. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  457. package/lib/performance/EvalUsagePlugin.js +115 -0
  458. package/lib/performance/HotspotsPlugin.js +296 -0
  459. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  460. package/lib/performance/LargeModulesPlugin.js +126 -0
  461. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  462. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  463. package/lib/performance/MixedExportsPlugin.js +136 -0
  464. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  465. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  466. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  467. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  468. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  469. package/lib/performance/SizeLimitsPlugin.js +139 -7
  470. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  471. package/lib/performance/TinyChunksPlugin.js +128 -0
  472. package/lib/performance/TopLevelThisPlugin.js +208 -0
  473. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  474. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  475. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  476. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  477. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  478. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  479. package/lib/performance/getModuleSize.js +22 -0
  480. package/lib/performance/getSourceModules.js +22 -0
  481. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  482. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  483. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  484. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  485. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  487. package/lib/prefetch/ResourceHintPlugin.js +377 -136
  488. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  489. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  490. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  491. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  492. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  493. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  494. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  495. package/lib/rules/RuleSetCompiler.js +146 -12
  496. package/lib/rules/UseEffectRulePlugin.js +18 -11
  497. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  498. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  499. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  500. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  501. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  502. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  503. package/lib/runtime/CompatRuntimeModule.js +5 -3
  504. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  505. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  506. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  507. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  508. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  509. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  510. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  511. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  512. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  513. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  514. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  515. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  516. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  517. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  518. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  519. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  520. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  521. package/lib/runtime/NonceRuntimeModule.js +10 -0
  522. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  523. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  524. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  525. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  526. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  527. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  528. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  529. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  530. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  531. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  532. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  533. package/lib/runtime/baseUri.js +63 -0
  534. package/lib/schemes/DataUriPlugin.js +1 -1
  535. package/lib/schemes/FileUriPlugin.js +1 -1
  536. package/lib/schemes/HttpUriPlugin.js +24 -15
  537. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  538. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  539. package/lib/serialization/BinaryMiddleware.js +274 -942
  540. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  541. package/lib/serialization/FileMiddleware.js +305 -66
  542. package/lib/serialization/ObjectMiddleware.js +139 -114
  543. package/lib/serialization/PlainObjectSerializer.js +19 -16
  544. package/lib/sharing/ConsumeSharedModule.js +30 -21
  545. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  546. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  547. package/lib/sharing/ProvideSharedModule.js +25 -16
  548. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  549. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  550. package/lib/sharing/SharePlugin.js +17 -5
  551. package/lib/sharing/ShareRuntimeModule.js +4 -4
  552. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  553. package/lib/sharing/utils.js +1 -3
  554. package/lib/stats/DefaultStatsFactoryPlugin.js +253 -226
  555. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  556. package/lib/stats/DefaultStatsPrinterPlugin.js +60 -192
  557. package/lib/stats/StatsFactory.js +56 -35
  558. package/lib/stats/StatsPrinter.js +16 -12
  559. package/lib/typescript/TypeScriptPlugin.js +12 -14
  560. package/lib/url/URLParserPlugin.js +26 -13
  561. package/lib/util/AsyncQueue.js +4 -3
  562. package/lib/util/Hash.js +5 -1
  563. package/lib/util/LazySet.js +35 -22
  564. package/lib/util/LocConverter.js +36 -13
  565. package/lib/util/SourceProcessor.js +1050 -24
  566. package/lib/util/StringXor.js +1 -1
  567. package/lib/util/chainedImports.js +9 -5
  568. package/lib/util/cleverMerge.js +1 -1
  569. package/lib/util/comparators.js +45 -14
  570. package/lib/util/concatenate.js +203 -77
  571. package/lib/util/conventions.js +5 -1
  572. package/lib/util/createHash.js +2 -2
  573. package/lib/util/createHooksRegistry.js +8 -10
  574. package/lib/util/dataURL.js +225 -1
  575. package/lib/util/extractSourceMap.js +4 -3
  576. package/lib/util/findCaseMismatch.js +139 -0
  577. package/lib/util/formatLocation.js +1 -2
  578. package/lib/util/fs.js +22 -5
  579. package/lib/util/globUtils.js +298 -24
  580. package/lib/util/hash/BatchedHash.js +5 -1
  581. package/lib/util/hash/BulkUpdateHash.js +5 -1
  582. package/lib/util/hash/DebugHash.js +5 -1
  583. package/lib/util/hash/hash-digest.js +6 -2
  584. package/lib/util/identifier.js +25 -1
  585. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  586. package/lib/util/internalSerializables.js +6 -0
  587. package/lib/util/lazyModule.js +56 -0
  588. package/lib/util/makeSerializable.js +7 -3
  589. package/lib/util/matchAlias.js +25 -0
  590. package/lib/util/mimeTypes.js +11 -5
  591. package/lib/util/nonNumericOnlyHash.js +4 -3
  592. package/lib/util/parseJson.js +5 -3
  593. package/lib/util/preloadModuleType.js +32 -0
  594. package/lib/util/registerExternalSerializer.js +7 -5
  595. package/lib/util/runtime.js +2 -2
  596. package/lib/util/semver.js +1 -1
  597. package/lib/util/serialization.js +28 -28
  598. package/lib/util/source.js +2 -2
  599. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  600. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  601. package/lib/wasm/wasmModuleFilename.js +54 -0
  602. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  603. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  604. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  605. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  606. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  607. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  608. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  609. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  610. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  611. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  612. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  613. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  614. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  615. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  616. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  617. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  618. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  619. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  620. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  621. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  622. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  623. package/lib/web/JsonpTemplatePlugin.js +2 -2
  624. package/lib/webpack.js +22 -11
  625. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  626. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  627. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  628. package/module.d.ts +1 -0
  629. package/package.json +37 -30
  630. package/schemas/WebpackOptions.check.js +1 -1
  631. package/schemas/WebpackOptions.json +780 -91
  632. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  634. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  635. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  636. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  637. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  639. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  640. package/types.d.ts +4013 -738
  641. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -7,25 +7,27 @@
7
7
 
8
8
  const asyncLib = require("neo-async");
9
9
  const Queue = require("./util/Queue");
10
+ const { compareModulesByIdentifier } = require("./util/comparators");
10
11
  const createHash = require("./util/createHash");
11
12
 
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
14
- /** @typedef {import("./Dependency")} Dependency */
15
- /** @typedef {import("./Dependency").ExportSpec} ExportSpec */
16
- /** @typedef {import("./Dependency").ExportsSpec} ExportsSpec */
17
- /** @typedef {import("./ExportsInfo")} ExportsInfo */
18
- /** @typedef {import("./ExportsInfo").ExportInfoName} ExportInfoName */
19
- /** @typedef {import("./ExportsInfo").RestoreProvidedData} RestoreProvidedData */
20
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
21
- /** @typedef {import("./LazyBarrel")} LazyBarrelController */
22
- /** @typedef {import("./Module")} Module */
23
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
13
+ /** @import Compiler from "./Compiler" */
14
+ /** @import DependenciesBlock from "./DependenciesBlock" */
15
+ /**
16
+ * @import Dependency, {
17
+ * ExportSpec,
18
+ * ExportsSpec,
19
+ * ExportInfoName
20
+ * } from "./Dependency"
21
+ */
22
+ /** @import ExportsInfo, { RestoreProvidedData } from "./ExportsInfo" */
23
+ /** @import { HashFunction } from "../declarations/WebpackOptions" */
24
+ /** @import LazyBarrelController from "./LazyBarrel" */
25
+ /** @import Module, { BuildInfo } from "./Module" */
24
26
 
25
27
  const PLUGIN_NAME = "FlagDependencyExportsPlugin";
26
28
  const PLUGIN_LOGGER_NAME = `webpack.${PLUGIN_NAME}`;
27
29
 
28
- /** @typedef {{ etag: string, data: RestoreProvidedData }} MemCacheEntry */
30
+ /** @typedef {{ etag: string, data: InstanceType<RestoreProvidedData> }} MemCacheEntry */
29
31
 
30
32
  /**
31
33
  * @param {Module} module the module
@@ -70,6 +72,8 @@ class FlagDependencyExportsPlugin {
70
72
 
71
73
  /** @type {Queue<Module>} */
72
74
  const queue = new Queue();
75
+ /** @type {Set<Module>} */
76
+ const modulesToAnalyse = new Set();
73
77
 
74
78
  // Step 1: Try to restore cached provided export info from cache
75
79
  logger.time("restore cached provided exports");
@@ -97,8 +101,8 @@ class FlagDependencyExportsPlugin {
97
101
  "string"
98
102
  ) {
99
103
  statFlaggedUncached++;
100
- // Enqueue uncacheable module for determining the exports
101
- queue.enqueue(module);
104
+ // Determined below, in a stable order
105
+ modulesToAnalyse.add(module);
102
106
  exportsInfo.setHasProvideInfo();
103
107
  return callback();
104
108
  }
@@ -133,8 +137,8 @@ class FlagDependencyExportsPlugin {
133
137
  exportsInfo.restoreProvided(result);
134
138
  } else {
135
139
  statNotCached++;
136
- // Without cached info enqueue module for determining the exports
137
- queue.enqueue(module);
140
+ // Without cached info determine the exports below
141
+ modulesToAnalyse.add(module);
138
142
  exportsInfo.setHasProvideInfo();
139
143
  }
140
144
  callback();
@@ -145,6 +149,59 @@ class FlagDependencyExportsPlugin {
145
149
  logger.timeEnd("restore cached provided exports");
146
150
  if (err) return callback(err);
147
151
 
152
+ // Seed the queue with targets before the modules that read
153
+ // them. Enqueueing at the two branches above ordered the work by
154
+ // how fast each cache lookup answered — one is synchronous, the
155
+ // other a `cache.get` callback — so the persistent cache decided
156
+ // it. A module analysed before the module it re-exports from
157
+ // reads exports that are not determined yet and over-estimates,
158
+ // and this loop can add exports info but never retract it, so
159
+ // the over-estimate survives the pass that corrects it. The
160
+ // roots are sorted so the walk is stable, and post-order visits
161
+ // each module after everything it points at.
162
+ /** @type {Set<Module>} */
163
+ const visited = new Set();
164
+ /** @type {Module[]} */
165
+ const stack = [];
166
+ /** @type {Set<Module>} */
167
+ const expanded = new Set();
168
+ for (const root of [...modulesToAnalyse].sort(
169
+ compareModulesByIdentifier
170
+ )) {
171
+ if (visited.has(root)) continue;
172
+ stack.push(root);
173
+ while (stack.length > 0) {
174
+ const current = stack[stack.length - 1];
175
+ if (expanded.has(current)) {
176
+ stack.pop();
177
+ if (!visited.has(current)) {
178
+ visited.add(current);
179
+ if (modulesToAnalyse.has(current)) {
180
+ queue.enqueue(current);
181
+ }
182
+ }
183
+ continue;
184
+ }
185
+ expanded.add(current);
186
+ for (const connection of moduleGraph.getOutgoingConnections(
187
+ current
188
+ )) {
189
+ const target = connection.module;
190
+ // A module restored from cache is already final, so
191
+ // nothing has to be ordered before it and the walk stops
192
+ // there — on an incremental build that is most of them.
193
+ if (
194
+ target !== undefined &&
195
+ target !== null &&
196
+ modulesToAnalyse.has(target) &&
197
+ !expanded.has(target)
198
+ ) {
199
+ stack.push(target);
200
+ }
201
+ }
202
+ }
203
+ }
204
+
148
205
  /** @type {Set<Module>} */
149
206
  const modulesToStore = new Set();
150
207
 
@@ -489,7 +546,7 @@ class FlagDependencyExportsPlugin {
489
546
  }
490
547
  );
491
548
 
492
- /** @type {WeakMap<Module, RestoreProvidedData>} */
549
+ /** @type {WeakMap<Module, InstanceType<RestoreProvidedData>>} */
493
550
  const providedExportsCache = new WeakMap();
494
551
  compilation.hooks.rebuildModule.tap(PLUGIN_NAME, (module) => {
495
552
  providedExportsCache.set(
@@ -499,7 +556,7 @@ class FlagDependencyExportsPlugin {
499
556
  });
500
557
  compilation.hooks.finishRebuildingModule.tap(PLUGIN_NAME, (module) => {
501
558
  moduleGraph.getExportsInfo(module).restoreProvided(
502
- /** @type {RestoreProvidedData} */
559
+ /** @type {InstanceType<RestoreProvidedData>} */
503
560
  (providedExportsCache.get(module))
504
561
  );
505
562
  });
@@ -11,15 +11,15 @@ const ModuleGraphConnection = require("./ModuleGraphConnection");
11
11
  const { STAGE_DEFAULT } = require("./OptimizationStages");
12
12
  const ArrayQueue = require("./util/ArrayQueue");
13
13
  const TupleQueue = require("./util/TupleQueue");
14
+ const TupleSet = require("./util/TupleSet");
14
15
  const { getEntryRuntime, mergeRuntimeOwned } = require("./util/runtime");
15
16
 
16
- /** @typedef {import("./Compiler")} Compiler */
17
- /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
18
- /** @typedef {import("./Dependency").ReferencedExport} ReferencedExport */
19
- /** @typedef {import("./Dependency").ReferencedExports} ReferencedExports */
20
- /** @typedef {import("./ExportsInfo")} ExportsInfo */
21
- /** @typedef {import("./Module")} Module */
22
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
17
+ /** @import Compiler from "./Compiler" */
18
+ /** @import DependenciesBlock from "./DependenciesBlock" */
19
+ /** @import { ReferencedExport, ReferencedExports } from "./Dependency" */
20
+ /** @import ExportsInfo from "./ExportsInfo" */
21
+ /** @import Module from "./Module" */
22
+ /** @import { RuntimeSpec } from "./util/runtime" */
23
23
 
24
24
  const {
25
25
  NO_EXPORTS_REFERENCED,
@@ -30,6 +30,19 @@ const {
30
30
  const PLUGIN_NAME = "FlagDependencyUsagePlugin";
31
31
  const PLUGIN_LOGGER_NAME = `webpack.${PLUGIN_NAME}`;
32
32
 
33
+ // Hoisted stateless predicates for setUsedConditionally on the innermost
34
+ // used-export loop, so they aren't re-allocated per export.
35
+ /**
36
+ * @param {import("./ExportsInfo").UsageStateType} used usage state
37
+ * @returns {boolean} whether unused
38
+ */
39
+ const IS_UNUSED = (used) => used === UsageState.Unused;
40
+ /**
41
+ * @param {import("./ExportsInfo").UsageStateType} used usage state
42
+ * @returns {boolean} whether not used
43
+ */
44
+ const IS_NOT_USED = (used) => used !== UsageState.Used;
45
+
33
46
  class FlagDependencyUsagePlugin {
34
47
  /**
35
48
  * Creates an instance of FlagDependencyUsagePlugin.
@@ -67,20 +80,17 @@ class FlagDependencyUsagePlugin {
67
80
  /** @type {TupleQueue<Module, RuntimeSpec>} */
68
81
  const queue = new TupleQueue();
69
82
 
83
+ /** @type {TupleSet<Module, RuntimeSpec> | undefined} */
84
+ let walkedSideEffectFreeModules;
85
+
70
86
  /**
71
87
  * Process referenced module.
72
88
  * @param {Module} module module to process
73
89
  * @param {ReferencedExports} usedExports list of used exports
74
90
  * @param {RuntimeSpec} runtime part of which runtime
75
- * @param {boolean} forceSideEffects always apply side effects
76
91
  * @returns {void}
77
92
  */
78
- const processReferencedModule = (
79
- module,
80
- usedExports,
81
- runtime,
82
- forceSideEffects
83
- ) => {
93
+ const processReferencedModule = (module, usedExports, runtime) => {
84
94
  const exportsInfo = moduleGraph.getExportsInfo(module);
85
95
  if (usedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE) {
86
96
  // The whole namespace object escapes via a reference that codegen
@@ -162,7 +172,7 @@ class FlagDependencyUsagePlugin {
162
172
  if (nestedInfo) {
163
173
  if (
164
174
  exportInfo.setUsedConditionally(
165
- (used) => used === UsageState.Unused,
175
+ IS_UNUSED,
166
176
  UsageState.OnlyPropertiesUsed,
167
177
  runtime
168
178
  )
@@ -181,7 +191,7 @@ class FlagDependencyUsagePlugin {
181
191
  }
182
192
  if (
183
193
  exportInfo.setUsedConditionally(
184
- (v) => v !== UsageState.Used,
194
+ IS_NOT_USED,
185
195
  UsageState.Used,
186
196
  runtime
187
197
  )
@@ -198,20 +208,22 @@ class FlagDependencyUsagePlugin {
198
208
  }
199
209
  }
200
210
  }
201
- } else {
202
- // for a module without side effects we stop tracking usage here when no export is used
203
- // This module won't be evaluated in this case
204
- // TODO webpack 6 remove this check
205
- if (
206
- !forceSideEffects &&
207
- module.factoryMeta !== undefined &&
208
- module.factoryMeta.sideEffectFree
209
- ) {
210
- return;
211
+ } else if (
212
+ module.factoryMeta !== undefined &&
213
+ module.factoryMeta.sideEffectFree
214
+ ) {
215
+ // Nothing is used and the module has no side effects, so it is
216
+ // not used for them either. An active connection still evaluates
217
+ // it, so keep walking it to count the references it makes itself.
218
+ if (walkedSideEffectFreeModules === undefined) {
219
+ walkedSideEffectFreeModules = new TupleSet();
211
220
  }
212
- if (exportsInfo.setUsedForSideEffectsOnly(runtime)) {
221
+ if (!walkedSideEffectFreeModules.has(module, runtime)) {
222
+ walkedSideEffectFreeModules.add(module, runtime);
213
223
  queue.enqueue(module, runtime);
214
224
  }
225
+ } else if (exportsInfo.setUsedForSideEffectsOnly(runtime)) {
226
+ queue.enqueue(module, runtime);
215
227
  }
216
228
  };
217
229
 
@@ -219,18 +231,18 @@ class FlagDependencyUsagePlugin {
219
231
  * Processes the provided module.
220
232
  * @param {DependenciesBlock} module the module
221
233
  * @param {RuntimeSpec} runtime part of which runtime
222
- * @param {boolean} forceSideEffects always apply side effects
223
234
  * @returns {void}
224
235
  */
225
- const processModule = (module, runtime, forceSideEffects) => {
236
+ const processModule = (module, runtime) => {
226
237
  /** @typedef {Map<string, string[] | ReferencedExport>} ExportMaps */
227
238
  /** @type {Map<Module, ReferencedExports | ExportMaps>} */
228
239
  const map = new Map();
229
240
  // Modules whose whole namespace object escapes in a mangleable way.
230
241
  // Tracked separately so specific member references are still merged
231
242
  // (and marked used) instead of being dropped by the escape marker.
232
- /** @type {Set<Module>} */
233
- const mangleableEscapeModules = new Set();
243
+ // Lazily allocated — usually empty.
244
+ /** @type {Set<Module> | undefined} */
245
+ let mangleableEscapeModules;
234
246
 
235
247
  /** @type {ArrayQueue<DependenciesBlock>} */
236
248
  const queue = new ArrayQueue();
@@ -244,8 +256,7 @@ class FlagDependencyUsagePlugin {
244
256
  b,
245
257
  this.global
246
258
  ? undefined
247
- : b.groupOptions.entryOptions.runtime || undefined,
248
- true
259
+ : b.groupOptions.entryOptions.runtime || undefined
249
260
  );
250
261
  } else {
251
262
  queue.enqueue(b);
@@ -260,7 +271,7 @@ class FlagDependencyUsagePlugin {
260
271
  if (activeState === false) continue;
261
272
  const { module } = connection;
262
273
  if (activeState === ModuleGraphConnection.TRANSITIVE_ONLY) {
263
- processModule(module, runtime, false);
274
+ processModule(module, runtime);
264
275
  continue;
265
276
  }
266
277
  const oldReferencedExports = map.get(module);
@@ -273,7 +284,9 @@ class FlagDependencyUsagePlugin {
273
284
  // conservative result and always wins.
274
285
  if (referencedExports === EXPORTS_OBJECT_REFERENCED) {
275
286
  map.set(module, EXPORTS_OBJECT_REFERENCED);
276
- mangleableEscapeModules.delete(module);
287
+ if (mangleableEscapeModules) {
288
+ mangleableEscapeModules.delete(module);
289
+ }
277
290
  continue;
278
291
  }
279
292
  // A mangleable whole-object escape keeps the module's exports
@@ -284,6 +297,9 @@ class FlagDependencyUsagePlugin {
284
297
  if (
285
298
  referencedExports === EXPORTS_OBJECT_REFERENCED_MANGLEABLE
286
299
  ) {
300
+ if (mangleableEscapeModules === undefined) {
301
+ mangleableEscapeModules = new Set();
302
+ }
287
303
  mangleableEscapeModules.add(module);
288
304
  continue;
289
305
  }
@@ -343,28 +359,23 @@ class FlagDependencyUsagePlugin {
343
359
 
344
360
  for (const [module, referencedExports] of map) {
345
361
  if (Array.isArray(referencedExports)) {
346
- processReferencedModule(
347
- module,
348
- referencedExports,
349
- runtime,
350
- forceSideEffects
351
- );
362
+ processReferencedModule(module, referencedExports, runtime);
352
363
  } else {
353
364
  processReferencedModule(
354
365
  module,
355
366
  [...referencedExports.values()],
356
- runtime,
357
- forceSideEffects
367
+ runtime
358
368
  );
359
369
  }
360
370
  }
361
- for (const module of mangleableEscapeModules) {
362
- processReferencedModule(
363
- module,
364
- EXPORTS_OBJECT_REFERENCED_MANGLEABLE,
365
- runtime,
366
- forceSideEffects
367
- );
371
+ if (mangleableEscapeModules) {
372
+ for (const module of mangleableEscapeModules) {
373
+ processReferencedModule(
374
+ module,
375
+ EXPORTS_OBJECT_REFERENCED_MANGLEABLE,
376
+ runtime
377
+ );
378
+ }
368
379
  }
369
380
  };
370
381
 
@@ -386,12 +397,7 @@ class FlagDependencyUsagePlugin {
386
397
  const processEntryDependency = (dep, runtime) => {
387
398
  const module = moduleGraph.getModule(dep);
388
399
  if (module) {
389
- processReferencedModule(
390
- module,
391
- NO_EXPORTS_REFERENCED,
392
- runtime,
393
- true
394
- );
400
+ processReferencedModule(module, NO_EXPORTS_REFERENCED, runtime);
395
401
  }
396
402
  };
397
403
  /** @type {RuntimeSpec} */
@@ -422,7 +428,7 @@ class FlagDependencyUsagePlugin {
422
428
  const [module, runtime] = /** @type {[Module, RuntimeSpec]} */ (
423
429
  queue.dequeue()
424
430
  );
425
- processModule(module, runtime, false);
431
+ processModule(module, runtime);
426
432
  }
427
433
  logger.timeEnd("trace exports usage in graph");
428
434
  }
@@ -7,7 +7,7 @@
7
7
 
8
8
  const { getEntryRuntime } = require("./util/runtime");
9
9
 
10
- /** @typedef {import("./Compiler")} Compiler */
10
+ /** @import Compiler from "./Compiler" */
11
11
 
12
12
  const PLUGIN_NAME = "FlagEntryExportAsUsedPlugin";
13
13
 
package/lib/Generator.js CHANGED
@@ -6,22 +6,27 @@
6
6
  "use strict";
7
7
 
8
8
  const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
9
+ const memoize = require("./util/memoize");
9
10
 
10
- /** @typedef {import("webpack-sources").Source} Source */
11
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
12
- /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
13
- /** @typedef {import("./ConcatenationScope")} ConcatenationScope */
14
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
15
- /** @typedef {import("./Module").CodeGenerationResultData} CodeGenerationResultData */
16
- /** @typedef {import("./Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
17
- /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
18
- /** @typedef {import("./Module").SourceType} SourceType */
19
- /** @typedef {import("./Module").SourceTypes} SourceTypes */
20
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
21
- /** @typedef {import("./NormalModule")} NormalModule */
22
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
23
- /** @typedef {import("./util/Hash")} Hash */
24
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
11
+ /** @import { Source } from "webpack-sources" */
12
+ /** @import ChunkGraph from "./ChunkGraph" */
13
+ /** @import CodeGenerationResults from "./CodeGenerationResults" */
14
+ /** @import ConcatenationScope from "./ConcatenationScope" */
15
+ /** @import DependencyTemplates from "./DependencyTemplates" */
16
+ /**
17
+ * @import {
18
+ * CodeGenerationResultData,
19
+ * ConcatenationBailoutReasonContext,
20
+ * RuntimeRequirements,
21
+ * SourceType,
22
+ * SourceTypes
23
+ * } from "./Module"
24
+ */
25
+ /** @import ModuleGraph from "./ModuleGraph" */
26
+ /** @import NormalModule from "./NormalModule" */
27
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
28
+ /** @import Hash from "./util/Hash" */
29
+ /** @import { RuntimeSpec } from "./util/runtime" */
25
30
 
26
31
  /**
27
32
  * Defines the generate context type used by this module.
@@ -56,6 +61,8 @@ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
56
61
  * @property {RuntimeTemplate=} runtimeTemplate
57
62
  */
58
63
 
64
+ const getModuleParseError = memoize(() => require("./errors/ModuleParseError"));
65
+
59
66
  class Generator {
60
67
  /**
61
68
  * Returns generator by type.
@@ -66,6 +73,20 @@ class Generator {
66
73
  return new ByTypeGenerator(map);
67
74
  }
68
75
 
76
+ /**
77
+ * Returns the statement a module that failed to build throws when executed.
78
+ * @param {Error} error the build error
79
+ * @param {string=} parseErrorConstructor constructor for a rejected source, defaults to `SyntaxError` (WebAssembly rejects with `WebAssembly.CompileError` instead)
80
+ * @returns {string} javascript statement
81
+ */
82
+ static throwBuildErrorCode(error, parseErrorConstructor = "SyntaxError") {
83
+ // A source the parser rejected throws what a native load of it would.
84
+ const name =
85
+ error instanceof getModuleParseError() ? parseErrorConstructor : "Error";
86
+
87
+ return `throw new ${name}(${JSON.stringify(error.message)});`;
88
+ }
89
+
69
90
  /* istanbul ignore next */
70
91
  /**
71
92
  * Returns the source types available for this module.
@@ -5,7 +5,6 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const { SyncBailHook } = require("tapable");
9
8
  const { RawSource } = require("webpack-sources");
10
9
  const ChunkGraph = require("./ChunkGraph");
11
10
  const Compilation = require("./Compilation");
@@ -27,7 +26,7 @@ const ModuleHotAcceptDependency = require("./dependencies/ModuleHotAcceptDepende
27
26
  const ModuleHotDeclineDependency = require("./dependencies/ModuleHotDeclineDependency");
28
27
  const WebpackError = require("./errors/WebpackError");
29
28
  const HotModuleReplacementRuntimeModule = require("./hmr/HotModuleReplacementRuntimeModule");
30
- const JavascriptParser = require("./javascript/JavascriptParser");
29
+ const getParserHooks = require("./hmr/parserHooks");
31
30
  const {
32
31
  evaluateToIdentifier
33
32
  } = require("./javascript/JavascriptParserHelpers");
@@ -44,34 +43,22 @@ const {
44
43
  subtractRuntime
45
44
  } = require("./util/runtime");
46
45
 
47
- /** @typedef {import("estree").CallExpression} CallExpression */
48
- /** @typedef {import("estree").Expression} Expression */
49
- /** @typedef {import("estree").SpreadElement} SpreadElement */
50
- /** @typedef {import("./Chunk")} Chunk */
51
- /** @typedef {import("./Chunk").ChunkId} ChunkId */
52
- /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
53
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
54
- /** @typedef {import("./Compilation").Records} Records */
55
- /** @typedef {import("./Compiler")} Compiler */
56
- /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
57
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
58
- /** @typedef {import("./Module")} Module */
59
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
60
- /** @typedef {import("./css/CssModule").CssModuleBuildMeta} CssModuleBuildMeta */
61
- /** @typedef {import("./RuntimeModule")} RuntimeModule */
62
- /** @typedef {import("./javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
63
- /** @typedef {import("./javascript/JavascriptParserHelpers").Range} Range */
64
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
46
+ /** @import { CallExpression, Expression } from "estree" */
47
+ /** @import Chunk, { ChunkId } from "./Chunk" */
48
+ /** @import { ModuleId } from "./ChunkGraph" */
49
+ /** @import { AssetInfo } from "./Compilation" */
50
+ /** @import Compiler, { Records } from "./Compiler" */
51
+ /** @import CodeGenerationResults from "./CodeGenerationResults" */
52
+ /** @import Module, { BuildInfo } from "./Module" */
53
+ /** @import { CssModuleBuildMeta } from "./css/CssModule" */
54
+ /** @import { HMRJavascriptParserHooks } from "./hmr/parserHooks" */
55
+ /** @import RuntimeModule from "./RuntimeModule" */
56
+ /** @import BasicEvaluatedExpression from "./javascript/BasicEvaluatedExpression" */
57
+ /** @import JavascriptParser, { Range } from "./javascript/JavascriptParser" */
58
+ /** @import { RuntimeSpec } from "./util/runtime" */
65
59
 
66
60
  /** @typedef {string[]} Requests */
67
61
 
68
- /**
69
- * Defines the hmr javascript parser hooks type used by this module.
70
- * @typedef {object} HMRJavascriptParserHooks
71
- * @property {SyncBailHook<[Expression | SpreadElement, Requests], void>} hotAcceptCallback
72
- * @property {SyncBailHook<[CallExpression, Requests], void>} hotAcceptWithoutCallback
73
- */
74
-
75
62
  /** @typedef {number} HotIndex */
76
63
  /** @typedef {Record<string, string>} FullHashChunkModuleHashes */
77
64
  /** @typedef {Record<string, string>} ChunkModuleHashes */
@@ -85,9 +72,6 @@ const {
85
72
  /** @typedef {{ updatedChunkIds: ChunkIds, removedChunkIds: ChunkIds, removedModules: ModuleSet, forceLoadChunkIds: ChunkIds, filename: string, assetInfo: AssetInfo }} HotUpdateMainContentByRuntimeItem */
86
73
  /** @typedef {Map<string, HotUpdateMainContentByRuntimeItem>} HotUpdateMainContentByRuntime */
87
74
 
88
- /** @type {WeakMap<JavascriptParser, HMRJavascriptParserHooks>} */
89
- const parserHooksMap = new WeakMap();
90
-
91
75
  const PLUGIN_NAME = "HotModuleReplacementPlugin";
92
76
 
93
77
  class HotModuleReplacementPlugin {
@@ -97,20 +81,7 @@ class HotModuleReplacementPlugin {
97
81
  * @returns {HMRJavascriptParserHooks} the attached hooks
98
82
  */
99
83
  static getParserHooks(parser) {
100
- if (!(parser instanceof JavascriptParser)) {
101
- throw new TypeError(
102
- "The 'parser' argument must be an instance of JavascriptParser"
103
- );
104
- }
105
- let hooks = parserHooksMap.get(parser);
106
- if (hooks === undefined) {
107
- hooks = {
108
- hotAcceptCallback: new SyncBailHook(["expression", "requests"]),
109
- hotAcceptWithoutCallback: new SyncBailHook(["expression", "requests"])
110
- };
111
- parserHooksMap.set(parser, hooks);
112
- }
113
- return hooks;
84
+ return getParserHooks(parser);
114
85
  }
115
86
 
116
87
  /**
@@ -132,6 +103,7 @@ class HotModuleReplacementPlugin {
132
103
  * @returns {(expr: CallExpression) => boolean | undefined} callback
133
104
  */
134
105
  const createAcceptHandler = (parser, ParamDependency) => {
106
+ // through the static method: replacing it stays a way to intercept
135
107
  const { hotAcceptCallback, hotAcceptWithoutCallback } =
136
108
  HotModuleReplacementPlugin.getParserHooks(parser);
137
109
 
@@ -8,10 +8,14 @@
8
8
  const RawModule = require("./RawModule");
9
9
  const EntryDependency = require("./dependencies/EntryDependency");
10
10
 
11
- /** @typedef {import("../declarations/plugins/IgnorePlugin").IgnorePluginOptions} IgnorePluginOptions */
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./NormalModuleFactory").ResolveData} ResolveData */
14
- /** @typedef {import("./ContextModuleFactory").BeforeContextResolveData} BeforeContextResolveData */
11
+ /**
12
+ * @import {
13
+ * IgnorePluginOptions
14
+ * } from "../declarations/plugins/IgnorePlugin"
15
+ */
16
+ /** @import Compiler from "./Compiler" */
17
+ /** @import { ResolveData } from "./NormalModuleFactory" */
18
+ /** @import { BeforeContextResolveData } from "./ContextModuleFactory" */
15
19
 
16
20
  /** @typedef {(resource: string, context: string) => boolean} CheckResourceFn */
17
21
 
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("./Compiler")} Compiler */
9
- /** @typedef {import("./Compilation")} Compilation */
8
+ /** @import Compiler from "./Compiler" */
9
+ /** @import Compilation from "./Compilation" */
10
10
 
11
11
  /** @typedef {(warning: Error, compilation: Compilation) => boolean} IgnoreFn */
12
12