@depup/webpack 5.109.2-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 (640) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +26 -17
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +117 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +50 -13
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +101 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +32 -47
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +141 -85
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +332 -169
  89. package/lib/RuntimeTemplate.js +2792 -352
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +2 -2
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +261 -79
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +36 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +57 -24
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +168 -88
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5324 -0
  160. package/lib/css/syntax.js +9579 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +156 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +4 -4
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +13 -10
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +78 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -63
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +27 -19
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -24
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +38 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +37 -29
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +2 -2
  230. package/lib/dependencies/ImportDependency.js +24 -20
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +49 -35
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +51 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +46 -28
  290. package/lib/dependencies/WorkerDependency.js +28 -22
  291. package/lib/dependencies/WorkletDependency.js +15 -14
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/processExportInfo.js +5 -5
  294. package/lib/dll/DelegatedModule.js +34 -22
  295. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  296. package/lib/dll/DelegatedPlugin.js +2 -2
  297. package/lib/dll/DllEntryPlugin.js +2 -2
  298. package/lib/dll/DllModule.js +22 -15
  299. package/lib/dll/DllModuleFactory.js +7 -3
  300. package/lib/dll/DllPlugin.js +7 -5
  301. package/lib/dll/DllReferencePlugin.js +10 -7
  302. package/lib/dll/LibManifestPlugin.js +5 -5
  303. package/lib/electron/ElectronTargetPlugin.js +53 -49
  304. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  305. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  306. package/lib/errors/BroadContextsWarning.js +43 -0
  307. package/lib/errors/BuildCycleError.js +1 -1
  308. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  309. package/lib/errors/ChunkRenderError.js +1 -1
  310. package/lib/errors/CircularDependenciesWarning.js +38 -0
  311. package/lib/errors/CodeGenerationError.js +1 -1
  312. package/lib/errors/CommentCompilationWarning.js +1 -1
  313. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  314. package/lib/errors/DuplicateModulesWarning.js +45 -0
  315. package/lib/errors/DynamicExportsWarning.js +30 -0
  316. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  317. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  318. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  319. package/lib/errors/EvalUsageWarning.js +28 -0
  320. package/lib/errors/HookWebpackError.js +5 -5
  321. package/lib/errors/HotspotsWarning.js +57 -0
  322. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  323. package/lib/errors/InlinedAssetsWarning.js +36 -0
  324. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  325. package/lib/errors/LargeModulesWarning.js +45 -0
  326. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  327. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  328. package/lib/errors/MixedExportsWarning.js +41 -0
  329. package/lib/errors/ModuleDependencyError.js +13 -16
  330. package/lib/errors/ModuleDependencyWarning.js +5 -15
  331. package/lib/errors/ModuleHashingError.js +1 -1
  332. package/lib/errors/ModuleNotFoundError.js +2 -2
  333. package/lib/errors/ModuleParseError.js +1 -2
  334. package/lib/errors/ModuleRestoreError.js +1 -1
  335. package/lib/errors/ModuleStoreError.js +1 -1
  336. package/lib/errors/NodeStuffInWebError.js +1 -1
  337. package/lib/errors/OsDependentRuleWarning.js +31 -0
  338. package/lib/errors/PureAnnotationsWarning.js +36 -0
  339. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  340. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  341. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  342. package/lib/errors/TinyChunksWarning.js +40 -0
  343. package/lib/errors/TopLevelThisWarning.js +34 -0
  344. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  345. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  346. package/lib/errors/UnusedAliasesWarning.js +29 -0
  347. package/lib/errors/UnusedDefinesWarning.js +29 -0
  348. package/lib/errors/UnusedExternalsWarning.js +29 -0
  349. package/lib/errors/UnusedReexportsWarning.js +42 -0
  350. package/lib/errors/UnusedRuleWarning.js +29 -0
  351. package/lib/errors/WebpackError.js +9 -5
  352. package/lib/errors/deriveStackFromNestedError.js +90 -0
  353. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  354. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  355. package/lib/esm/ModuleChunkLoadingPlugin.js +89 -51
  356. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +155 -62
  357. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  358. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  359. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  360. package/lib/hmr/lazyCompilationBackend.js +9 -6
  361. package/lib/hmr/parserHooks.js +56 -0
  362. package/lib/html/HtmlGenerator.js +277 -77
  363. package/lib/html/HtmlModule.js +7 -3
  364. package/lib/html/HtmlModulesPlugin.js +282 -162
  365. package/lib/html/HtmlParser.js +31 -86
  366. package/lib/html/data.js +1928 -0
  367. package/lib/html/htmlMinify.js +288 -0
  368. package/lib/html/syntax.js +5557 -1155
  369. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  370. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  371. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  372. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  373. package/lib/ids/IdHelpers.js +7 -8
  374. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  375. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  376. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  377. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  378. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  379. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  380. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  381. package/lib/index.js +10 -0
  382. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  383. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  384. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  385. package/lib/javascript/ChunkHelpers.js +1 -1
  386. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  387. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  388. package/lib/javascript/JavascriptGenerator.js +65 -165
  389. package/lib/javascript/JavascriptModule.js +9 -3
  390. package/lib/javascript/JavascriptModulesPlugin.js +98 -113
  391. package/lib/javascript/JavascriptParser.js +242 -99
  392. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  393. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  394. package/lib/javascript/StartupHelpers.js +55 -9
  395. package/lib/javascript/syntax.js +2678 -232
  396. package/lib/json/JsonData.js +8 -4
  397. package/lib/json/JsonGenerator.js +38 -16
  398. package/lib/json/JsonModule.js +7 -3
  399. package/lib/json/JsonModulesPlugin.js +1 -1
  400. package/lib/json/JsonParser.js +5 -6
  401. package/lib/library/AbstractLibraryPlugin.js +20 -14
  402. package/lib/library/AmdLibraryPlugin.js +11 -7
  403. package/lib/library/AssignLibraryPlugin.js +19 -13
  404. package/lib/library/EnableLibraryPlugin.js +2 -2
  405. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  406. package/lib/library/JsonpLibraryPlugin.js +11 -7
  407. package/lib/library/ModuleLibraryPlugin.js +256 -64
  408. package/lib/library/SystemLibraryPlugin.js +12 -8
  409. package/lib/library/UmdLibraryPlugin.js +62 -25
  410. package/lib/loaders/LoaderRunner.js +14 -1
  411. package/lib/loaders/loadLoader.js +8 -4
  412. package/lib/logging/createConsoleLogger.js +7 -4
  413. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  414. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  415. package/lib/node/NodeSourcePlugin.js +1 -1
  416. package/lib/node/NodeTargetPlugin.js +4 -3
  417. package/lib/node/NodeTemplatePlugin.js +1 -1
  418. package/lib/node/NodeWatchFileSystem.js +70 -9
  419. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  420. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +72 -19
  421. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  422. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/nodeConsole.js +7 -3
  424. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  425. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  426. package/lib/optimize/ConcatenatedModule.js +985 -470
  427. package/lib/optimize/ConstExportsPlugin.js +11 -7
  428. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  429. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  430. package/lib/optimize/InlineExports.js +9 -5
  431. package/lib/optimize/InnerGraph.js +28 -12
  432. package/lib/optimize/InnerGraphPlugin.js +23 -18
  433. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  434. package/lib/optimize/MangleExportsPlugin.js +7 -8
  435. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  436. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  437. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  438. package/lib/optimize/RealContentHashPlugin.js +10 -6
  439. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  440. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  441. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  442. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  443. package/lib/optimize/SplitChunksPlugin.js +86 -24
  444. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  445. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  446. package/lib/performance/BroadContextsPlugin.js +142 -0
  447. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  448. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  449. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  450. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  451. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  452. package/lib/performance/DynamicExportsPlugin.js +120 -0
  453. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  454. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  455. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  456. package/lib/performance/EvalUsagePlugin.js +115 -0
  457. package/lib/performance/HotspotsPlugin.js +296 -0
  458. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  459. package/lib/performance/LargeModulesPlugin.js +126 -0
  460. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  461. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  462. package/lib/performance/MixedExportsPlugin.js +136 -0
  463. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  464. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  465. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  466. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  467. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  468. package/lib/performance/SizeLimitsPlugin.js +139 -7
  469. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  470. package/lib/performance/TinyChunksPlugin.js +128 -0
  471. package/lib/performance/TopLevelThisPlugin.js +208 -0
  472. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  473. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  474. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  475. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  476. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  477. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  478. package/lib/performance/getModuleSize.js +22 -0
  479. package/lib/performance/getSourceModules.js +22 -0
  480. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  481. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  482. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  483. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  484. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  485. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  486. package/lib/prefetch/ResourceHintPlugin.js +295 -78
  487. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  488. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  489. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  490. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  491. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  492. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  493. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  494. package/lib/rules/RuleSetCompiler.js +146 -12
  495. package/lib/rules/UseEffectRulePlugin.js +18 -11
  496. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  497. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
  498. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  499. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  500. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  501. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  502. package/lib/runtime/CompatRuntimeModule.js +5 -3
  503. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  504. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  505. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  506. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  507. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  508. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  509. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  510. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  511. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  512. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  513. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  514. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  515. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  516. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  517. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  518. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +23 -6
  519. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  520. package/lib/runtime/NonceRuntimeModule.js +10 -0
  521. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  522. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  523. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  524. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  525. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  526. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  527. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  528. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  529. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  530. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  531. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  532. package/lib/runtime/baseUri.js +63 -0
  533. package/lib/schemes/DataUriPlugin.js +1 -1
  534. package/lib/schemes/FileUriPlugin.js +1 -1
  535. package/lib/schemes/HttpUriPlugin.js +24 -15
  536. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  537. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  538. package/lib/serialization/BinaryMiddleware.js +4 -4
  539. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  540. package/lib/serialization/FileMiddleware.js +7 -7
  541. package/lib/serialization/ObjectMiddleware.js +139 -114
  542. package/lib/serialization/PlainObjectSerializer.js +19 -16
  543. package/lib/sharing/ConsumeSharedModule.js +30 -21
  544. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  545. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  546. package/lib/sharing/ProvideSharedModule.js +25 -16
  547. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  548. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  549. package/lib/sharing/SharePlugin.js +17 -5
  550. package/lib/sharing/ShareRuntimeModule.js +4 -4
  551. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  552. package/lib/sharing/utils.js +1 -3
  553. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  554. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  555. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  556. package/lib/stats/StatsFactory.js +25 -26
  557. package/lib/stats/StatsPrinter.js +16 -12
  558. package/lib/typescript/TypeScriptPlugin.js +12 -14
  559. package/lib/url/URLParserPlugin.js +26 -13
  560. package/lib/util/AsyncQueue.js +4 -3
  561. package/lib/util/Hash.js +5 -1
  562. package/lib/util/LazySet.js +35 -22
  563. package/lib/util/LocConverter.js +36 -13
  564. package/lib/util/SourceProcessor.js +1050 -24
  565. package/lib/util/StringXor.js +1 -1
  566. package/lib/util/chainedImports.js +9 -5
  567. package/lib/util/cleverMerge.js +1 -1
  568. package/lib/util/comparators.js +45 -14
  569. package/lib/util/concatenate.js +203 -77
  570. package/lib/util/conventions.js +5 -1
  571. package/lib/util/createHash.js +2 -2
  572. package/lib/util/createHooksRegistry.js +8 -10
  573. package/lib/util/dataURL.js +225 -1
  574. package/lib/util/extractSourceMap.js +4 -3
  575. package/lib/util/findCaseMismatch.js +139 -0
  576. package/lib/util/formatLocation.js +1 -2
  577. package/lib/util/fs.js +22 -5
  578. package/lib/util/globUtils.js +298 -24
  579. package/lib/util/hash/BatchedHash.js +5 -1
  580. package/lib/util/hash/BulkUpdateHash.js +5 -1
  581. package/lib/util/hash/DebugHash.js +5 -1
  582. package/lib/util/hash/hash-digest.js +6 -2
  583. package/lib/util/identifier.js +4 -0
  584. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  585. package/lib/util/internalSerializables.js +6 -0
  586. package/lib/util/lazyModule.js +56 -0
  587. package/lib/util/makeSerializable.js +7 -3
  588. package/lib/util/matchAlias.js +25 -0
  589. package/lib/util/mimeTypes.js +11 -5
  590. package/lib/util/nonNumericOnlyHash.js +4 -3
  591. package/lib/util/parseJson.js +5 -3
  592. package/lib/util/preloadModuleType.js +32 -0
  593. package/lib/util/registerExternalSerializer.js +7 -5
  594. package/lib/util/runtime.js +2 -2
  595. package/lib/util/semver.js +1 -1
  596. package/lib/util/serialization.js +28 -28
  597. package/lib/util/source.js +2 -2
  598. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  599. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  600. package/lib/wasm/wasmModuleFilename.js +54 -0
  601. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +41 -21
  602. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +43 -21
  603. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  604. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  605. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  606. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  607. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  608. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +34 -8
  609. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  610. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  611. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  612. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  613. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  614. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  615. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  616. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  617. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  618. package/lib/web/FetchCompileAsyncWasmPlugin.js +101 -19
  619. package/lib/web/FetchCompileWasmPlugin.js +46 -16
  620. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  621. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  622. package/lib/web/JsonpTemplatePlugin.js +2 -2
  623. package/lib/webpack.js +22 -11
  624. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  625. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  626. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  627. package/module.d.ts +1 -0
  628. package/package.json +32 -25
  629. package/schemas/WebpackOptions.check.js +1 -1
  630. package/schemas/WebpackOptions.json +670 -36
  631. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  632. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  633. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  634. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  635. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  636. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  637. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  638. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  639. package/types.d.ts +3144 -454
  640. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -23,20 +23,26 @@ const {
23
23
  const createHash = require("./util/createHash");
24
24
  const createHooksRegistry = require("./util/createHooksRegistry");
25
25
 
26
- /** @typedef {import("estree").Expression} Expression */
27
- /** @typedef {import("./Compiler")} Compiler */
28
- /** @typedef {import("./Module").BuildInfo} BuildInfo */
29
- /** @typedef {import("./Module").ValueCacheVersion} ValueCacheVersion */
30
- /** @typedef {import("./Module").ValueCacheVersions} ValueCacheVersions */
31
- /** @typedef {import("./NormalModule")} NormalModule */
32
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
33
- /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
34
- /** @typedef {import("./javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
35
- /** @typedef {import("./javascript/JavascriptParser").Members} Members */
36
- /** @typedef {import("./javascript/JavascriptParser").Range} Range */
37
- /** @typedef {import("./logging/Logger").Logger} Logger */
38
- /** @typedef {import("./Compilation")} Compilation */
39
- /** @typedef {import("./NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
26
+ /** @import { Expression, MemberExpression } from "estree" */
27
+ /** @import Compiler from "./Compiler" */
28
+ /**
29
+ * @import {
30
+ * BuildInfo,
31
+ * ValueCacheVersion,
32
+ * ValueCacheVersions
33
+ * } from "./Module"
34
+ */
35
+ /** @import NormalModule, { NormalModuleBuildInfo } from "./NormalModule" */
36
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
37
+ /**
38
+ * @import JavascriptParser, {
39
+ * DestructuringAssignmentProperties,
40
+ * Members,
41
+ * Range
42
+ * } from "./javascript/JavascriptParser"
43
+ */
44
+ /** @import { Logger } from "./logging/Logger" */
45
+ /** @import Compilation from "./Compilation" */
40
46
 
41
47
  /** @typedef {null | undefined | RegExp | EXPECTED_FUNCTION | string | number | boolean | bigint | undefined} CodeValuePrimitive */
42
48
  /** @typedef {RecursiveArrayOrRecord<CodeValuePrimitive | RuntimeValue>} CodeValue */
@@ -158,6 +164,21 @@ const isObjectDefinition = (code) =>
158
164
  !(code instanceof RuntimeValue) &&
159
165
  !(code instanceof RegExp);
160
166
 
167
+ /**
168
+ * Walks a member chain up, dropping its last `count` members.
169
+ * @param {Expression} node member expression
170
+ * @param {number} count members to drop
171
+ * @returns {Expression} the chain without them
172
+ */
173
+ const dropTrailingMembers = (node, count) => {
174
+ while (count--) {
175
+ node = /** @type {Expression} */ (
176
+ /** @type {MemberExpression} */ (node).object
177
+ );
178
+ }
179
+ return node;
180
+ };
181
+
161
182
  /** @typedef {Set<string> | null} ObjKeys */
162
183
  /** @typedef {boolean | undefined | null} AsiSafe */
163
184
 
@@ -353,6 +374,13 @@ const toCacheVersion = (code) => {
353
374
  const PLUGIN_NAME = "DefinePlugin";
354
375
  const VALUE_DEP_PREFIX = `webpack/${PLUGIN_NAME} `;
355
376
  const VALUE_DEP_MAIN = `webpack/${PLUGIN_NAME}_hash`;
377
+
378
+ // Keys webpack injects itself are not the user's to remove, so `performance.unusedDefines`
379
+ // never sees them.
380
+ /** @type {WeakSet<DefinePlugin>} */
381
+ const INTERNAL_PLUGINS = new WeakSet();
382
+ /** @type {WeakMap<Compilation, Set<string>>} */
383
+ const DECLARED_KEYS = new WeakMap();
356
384
  const TYPEOF_OPERATOR_REGEXP = /^typeof\s+/;
357
385
  const EMPTY_OBJECT = {};
358
386
 
@@ -692,6 +720,22 @@ class DefinePlugin {
692
720
  PLUGIN_NAME,
693
721
  (compilation, { normalModuleFactory }) => {
694
722
  const definitions = this.definitions;
723
+ const { performance } = compilation.options;
724
+ // Only `performance.unusedDefines` reads these, so a build without it
725
+ // collects nothing.
726
+ const collectDeclared =
727
+ performance !== false &&
728
+ performance.unusedDefines === true &&
729
+ !INTERNAL_PLUGINS.has(this);
730
+ /** @type {Set<string> | undefined} */
731
+ let declaredKeys;
732
+ if (collectDeclared) {
733
+ declaredKeys = DECLARED_KEYS.get(compilation);
734
+ if (declaredKeys === undefined) {
735
+ declaredKeys = new Set();
736
+ DECLARED_KEYS.set(compilation, declaredKeys);
737
+ }
738
+ }
695
739
  const hooks = DefinePlugin.getCompilationHooks(compilation);
696
740
 
697
741
  hooks.definitions.tap(PLUGIN_NAME, (previousDefinitions) => ({
@@ -1120,7 +1164,7 @@ class DefinePlugin {
1120
1164
  const chainRoot = isMeta ? "import.meta" : chainParts[0];
1121
1165
  const chainPrefix = chainParts.slice(isMeta ? 2 : 1);
1122
1166
  /**
1123
- * Whether a member chain reads a property that is not defined.
1167
+ * Finds the member of a chain that reads a property that is not defined.
1124
1168
  * Walks the merged view so dotted keys of every instance count.
1125
1169
  * Collects every define key consulted so the caller can record a
1126
1170
  * value dependency on each (a sibling key like `OBJECT.SUB2` affects
@@ -1128,12 +1172,12 @@ class DefinePlugin {
1128
1172
  * Inherited members (e.g. `toString`) stay defined.
1129
1173
  * @param {Members} members chain members (after the root)
1130
1174
  * @param {string[]} deps consulted define keys (mutated)
1131
- * @returns {boolean} true when the access resolves to `undefined`
1175
+ * @returns {number} index of the member resolving to `undefined`, or -1
1132
1176
  */
1133
- const isUndefinedMemberAccess = (members, deps) => {
1134
- if (members.length <= chainPrefix.length) return false;
1177
+ const findUndefinedMemberAccess = (members, deps) => {
1178
+ if (members.length <= chainPrefix.length) return -1;
1135
1179
  for (let i = 0; i < chainPrefix.length; i++) {
1136
- if (members[i] !== chainPrefix[i]) return false;
1180
+ if (members[i] !== chainPrefix[i]) return -1;
1137
1181
  }
1138
1182
  /** @type {MergedDefinitionNode | undefined} */
1139
1183
  let value = definition;
@@ -1146,9 +1190,9 @@ class DefinePlugin {
1146
1190
  deps.push(nextPath);
1147
1191
  value = value.get(member);
1148
1192
  } else if (member in EMPTY_OBJECT) {
1149
- return false;
1193
+ return -1;
1150
1194
  } else {
1151
- return true;
1195
+ return i;
1152
1196
  }
1153
1197
  } else if (isObjectDefinition(value)) {
1154
1198
  // non-expandable object leaf (e.g. an array)
@@ -1164,37 +1208,45 @@ class DefinePlugin {
1164
1208
  deps.push(nextPath);
1165
1209
  value = mergedDefinitions.definitions[nextPath];
1166
1210
  } else {
1167
- return true;
1211
+ return i;
1168
1212
  }
1169
1213
  } else {
1170
1214
  // a leaf with members left is a real property access on a value
1171
- return false;
1215
+ return -1;
1172
1216
  }
1173
1217
  path = nextPath;
1174
1218
  }
1175
- return false;
1219
+ return -1;
1176
1220
  };
1177
1221
  parser.hooks.expressionMemberChain
1178
1222
  .for(chainRoot)
1179
1223
  .tap(PLUGIN_NAME, (expr, members) => {
1180
1224
  const deps = [key];
1181
- if (!isUndefinedMemberAccess(members, deps)) return;
1225
+ if (findUndefinedMemberAccess(members, deps) === -1) return;
1182
1226
  for (const dep of deps) addValueDependency(dep);
1183
1227
  return toConstantDependency(parser, "undefined")(expr);
1184
1228
  });
1185
- // In a call, replace only the callee so the call itself is kept:
1186
- // `x.MISSING()` stays a (throwing) call and `x.MISSING?.()`
1187
- // short-circuits, with the object never inlined.
1229
+ // Cut the chain at the undefined member, so what follows still
1230
+ // throws; an optional link there takes the call, arguments unevaluated.
1188
1231
  parser.hooks.callMemberChain
1189
1232
  .for(chainRoot)
1190
- .tap(PLUGIN_NAME, (expr, members) => {
1233
+ .tap(PLUGIN_NAME, (expr, members, membersOptionals) => {
1191
1234
  const deps = [key];
1192
- if (!isUndefinedMemberAccess(members, deps)) return;
1235
+ const undefinedIndex = findUndefinedMemberAccess(members, deps);
1236
+ if (undefinedIndex === -1) return;
1193
1237
  for (const dep of deps) addValueDependency(dep);
1238
+ if (membersOptionals[undefinedIndex + 1]) {
1239
+ return toConstantDependency(parser, "undefined")(expr);
1240
+ }
1194
1241
  toConstantDependency(
1195
1242
  parser,
1196
1243
  "undefined"
1197
- )(/** @type {Expression} */ (expr.callee));
1244
+ )(
1245
+ dropTrailingMembers(
1246
+ /** @type {Expression} */ (expr.callee),
1247
+ members.length - 1 - undefinedIndex
1248
+ )
1249
+ );
1198
1250
  parser.walkExpressions(expr.arguments);
1199
1251
  return true;
1200
1252
  });
@@ -1245,6 +1297,17 @@ class DefinePlugin {
1245
1297
  warning.hideStack = true;
1246
1298
  compilation.warnings.push(warning);
1247
1299
  }
1300
+ // Leaves only: an object key counts as used whenever any of its
1301
+ // members is, which would report the parent as unused. An object
1302
+ // with no members has none, and still substitutes.
1303
+ const isLeaf =
1304
+ !isObjectDefinition(code) ||
1305
+ Object.keys(/** @type {Definitions} */ (code)).length === 0;
1306
+
1307
+ if (declaredKeys !== undefined && isLeaf) {
1308
+ declaredKeys.add(prefix + key);
1309
+ }
1310
+
1248
1311
  if (isObjectDefinition(code)) {
1249
1312
  walkDefinitionsForValues(
1250
1313
  /** @type {Definitions} */ (code),
@@ -1267,10 +1330,31 @@ class DefinePlugin {
1267
1330
 
1268
1331
  DefinePlugin.getCompilationHooks = createHooksRegistry(createCompilationHooks);
1269
1332
 
1333
+ /**
1334
+ * Marks an instance as webpack's own, so `performance.unusedDefines` never
1335
+ * reports the keys it declares against the user.
1336
+ * @param {DefinePlugin} plugin the instance webpack constructed itself
1337
+ * @returns {DefinePlugin} the same instance
1338
+ */
1339
+ const markInternal = (plugin) => {
1340
+ INTERNAL_PLUGINS.add(plugin);
1341
+ return plugin;
1342
+ };
1343
+
1344
+ /**
1345
+ * The keys the configuration declared, webpack's own excluded.
1346
+ * @param {Compilation} compilation the compilation
1347
+ * @returns {Set<string> | undefined} the keys, or undefined when none were collected
1348
+ */
1349
+ const getDeclaredKeys = (compilation) => DECLARED_KEYS.get(compilation);
1350
+
1351
+ DefinePlugin.VALUE_DEP_MAIN = VALUE_DEP_MAIN;
1352
+ DefinePlugin.VALUE_DEP_PREFIX = VALUE_DEP_PREFIX;
1353
+ DefinePlugin.getDeclaredKeys = getDeclaredKeys;
1354
+ DefinePlugin.getMergedDefinitionNode = getMergedDefinitionNode;
1355
+ DefinePlugin.getRuntimeRequirements = getRuntimeRequirements;
1356
+ DefinePlugin.markInternal = markInternal;
1357
+ DefinePlugin.stringifyMergedDefinition = stringifyMergedDefinition;
1358
+ DefinePlugin.toPropertyKey = toPropertyKey;
1359
+
1270
1360
  module.exports = DefinePlugin;
1271
- module.exports.VALUE_DEP_MAIN = VALUE_DEP_MAIN;
1272
- module.exports.VALUE_DEP_PREFIX = VALUE_DEP_PREFIX;
1273
- module.exports.getMergedDefinitionNode = getMergedDefinitionNode;
1274
- module.exports.getRuntimeRequirements = getRuntimeRequirements;
1275
- module.exports.stringifyMergedDefinition = stringifyMergedDefinition;
1276
- module.exports.toPropertyKey = toPropertyKey;
@@ -7,12 +7,15 @@
7
7
 
8
8
  const makeSerializable = require("./util/makeSerializable");
9
9
 
10
- /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
11
- /** @typedef {import("./Dependency")} Dependency */
12
- /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
13
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
15
- /** @typedef {import("./util/Hash")} Hash */
10
+ /** @import AsyncDependenciesBlock from "./AsyncDependenciesBlock" */
11
+ /** @import Dependency, { UpdateHashContext } from "./Dependency" */
12
+ /**
13
+ * @import {
14
+ * ObjectDeserializerContext,
15
+ * ObjectSerializerContext
16
+ * } from "./serialization/ObjectMiddleware"
17
+ */
18
+ /** @import Hash from "./util/Hash" */
16
19
 
17
20
  /** @typedef {(d: Dependency) => boolean} DependencyFilterFunction */
18
21
 
package/lib/Dependency.js CHANGED
@@ -5,21 +5,29 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ const { JAVASCRIPT_TYPE } = require("./ModuleSourceTypeConstants");
8
9
  const memoize = require("./util/memoize");
9
10
 
10
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
11
- /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
12
- /** @typedef {import("./Module")} Module */
13
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
14
- /** @typedef {import("./ModuleGraphConnection")} ModuleGraphConnection */
15
- /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
16
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
17
- /** @typedef {import("./errors/WebpackError")} WebpackError */
18
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
- /** @typedef {import("./util/Hash")} Hash */
21
- /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
22
- /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
11
+ /** @import ChunkGraph from "./ChunkGraph" */
12
+ /** @import DependenciesBlock from "./DependenciesBlock" */
13
+ /** @import Module, { SourceType } from "./Module" */
14
+ /** @import ModuleGraph from "./ModuleGraph" */
15
+ /**
16
+ * @import ModuleGraphConnection, {
17
+ * ConnectionState
18
+ * } from "./ModuleGraphConnection"
19
+ */
20
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
21
+ /** @import WebpackError from "./errors/WebpackError" */
22
+ /**
23
+ * @import {
24
+ * ObjectDeserializerContext,
25
+ * ObjectSerializerContext
26
+ * } from "./serialization/ObjectMiddleware"
27
+ */
28
+ /** @import Hash from "./util/Hash" */
29
+ /** @import { RuntimeSpec } from "./util/runtime" */
30
+ /** @import ModuleDependency from "./dependencies/ModuleDependency" */
23
31
  /**
24
32
  * Defines the update hash context type used by this module.
25
33
  * @typedef {object} UpdateHashContext
@@ -165,6 +173,16 @@ class Dependency {
165
173
  return "unknown";
166
174
  }
167
175
 
176
+ /**
177
+ * Returns the source type this dependency reads from the module it references:
178
+ * `javascript` for anything going through the module wrapper, `asset-url` for a
179
+ * bare url embedded into non-javascript output (css, html, a manifest).
180
+ * @returns {SourceType} the source type read from the referenced module
181
+ */
182
+ get referencedSourceType() {
183
+ return JAVASCRIPT_TYPE;
184
+ }
185
+
168
186
  /**
169
187
  * Returns location.
170
188
  * @returns {DependencyLocation} location
@@ -424,9 +442,10 @@ class Dependency {
424
442
 
425
443
  /**
426
444
  * Returns true if this dependency can be concatenated
445
+ * @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
427
446
  * @returns {boolean} true if this dependency can be concatenated
428
447
  */
429
- canConcatenate() {
448
+ canConcatenate(concatenateCommonJsModules) {
430
449
  return false;
431
450
  }
432
451
 
@@ -506,11 +525,12 @@ Dependency.isLowPriorityDependency = (dependency) =>
506
525
  /**
507
526
  * Returns true if the dependency can be concatenated (scope hoisting).
508
527
  * @param {Dependency} dependency dep
528
+ * @param {boolean} concatenateCommonJsModules whether optimization.concatenateModules.commonjs is enabled
509
529
  * @returns {boolean} true if this dependency supports concatenation
510
530
  */
511
- Dependency.canConcatenate = (dependency) => {
531
+ Dependency.canConcatenate = (dependency, concatenateCommonJsModules) => {
512
532
  if (typeof dependency.canConcatenate === "function") {
513
- return dependency.canConcatenate();
533
+ return dependency.canConcatenate(concatenateCommonJsModules);
514
534
  }
515
535
  return false;
516
536
  };
@@ -5,18 +5,17 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
9
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
10
- /** @typedef {import("./CodeGenerationResults")} CodeGenerationResults */
11
- /** @typedef {import("./ConcatenationScope")} ConcatenationScope */
12
- /** @typedef {import("./Dependency")} Dependency */
13
- /** @typedef {import("./Dependency").RuntimeSpec} RuntimeSpec */
14
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
15
- /** @typedef {import("./Generator").GenerateContext} GenerateContext */
16
- /** @typedef {import("./Module")} Module */
17
- /** @typedef {import("./Module").RuntimeRequirements} RuntimeRequirements */
18
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
19
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
8
+ /** @import { ReplaceSource } from "webpack-sources" */
9
+ /** @import ChunkGraph from "./ChunkGraph" */
10
+ /** @import CodeGenerationResults from "./CodeGenerationResults" */
11
+ /** @import ConcatenationScope from "./ConcatenationScope" */
12
+ /** @import Dependency from "./Dependency" */
13
+ /** @import DependencyTemplates from "./DependencyTemplates" */
14
+ /** @import { GenerateContext } from "./Generator" */
15
+ /** @import Module, { RuntimeRequirements } from "./Module" */
16
+ /** @import ModuleGraph from "./ModuleGraph" */
17
+ /** @import RuntimeTemplate from "./RuntimeTemplate" */
18
+ /** @import { RuntimeSpec } from "./util/runtime" */
20
19
 
21
20
  /**
22
21
  * Defines the init fragment type used by this module.
@@ -8,9 +8,9 @@
8
8
  const { DEFAULTS } = require("./config/defaults");
9
9
  const createHash = require("./util/createHash");
10
10
 
11
- /** @typedef {import("./Compilation").DependencyConstructor} DependencyConstructor */
12
- /** @typedef {import("./DependencyTemplate")} DependencyTemplate */
13
- /** @typedef {import("./util/Hash").HashFunction} HashFunction */
11
+ /** @import { DependencyConstructor } from "./Compilation" */
12
+ /** @import DependencyTemplate from "./DependencyTemplate" */
13
+ /** @import { HashFunction } from "./util/Hash" */
14
14
 
15
15
  class DependencyTemplates {
16
16
  /**
@@ -8,11 +8,11 @@
8
8
  const FileSystemInfo = require("./FileSystemInfo");
9
9
  const { join } = require("./util/fs");
10
10
 
11
- /** @typedef {import("../declarations/WebpackOptions").DotenvPluginOptions} DotenvPluginOptions */
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./CacheFacade").ItemCacheFacade} ItemCacheFacade */
14
- /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
15
- /** @typedef {import("./FileSystemInfo").Snapshot} Snapshot */
11
+ /** @import { DotenvPluginOptions } from "../declarations/WebpackOptions" */
12
+ /** @import Compiler from "./Compiler" */
13
+ /** @import { ItemCacheFacade } from "./CacheFacade" */
14
+ /** @import { InputFileSystem } from "./util/fs" */
15
+ /** @import { Snapshot } from "./FileSystemInfo" */
16
16
 
17
17
  /** @typedef {Exclude<DotenvPluginOptions["prefix"], string | undefined>} Prefix */
18
18
  /** @typedef {Record<string, string>} Env */
@@ -24,8 +24,45 @@ const DEFAULT_TEMPLATE = [
24
24
  ".env.[mode].local"
25
25
  ];
26
26
 
27
+ // cspell:ignore Motte, motdotla
28
+
29
+ /*
30
+ * `LINE`, `parse`, `_resolveEscapeSequences`, `expandValue` and `expand`
31
+ * below are ported from dotenv v17.4.2 and dotenv-expand v13.0.0, both
32
+ * BSD-2-Clause. Links stay version-pinned: later dotenv-expand releases
33
+ * ship different license text.
34
+ *
35
+ * https://github.com/motdotla/dotenv/blob/v17.4.2/lib/main.js
36
+ * https://github.com/motdotla/dotenv-expand/blob/v13.0.0/lib/main.js
37
+ *
38
+ * Copyright (c) 2015, Scott Motte
39
+ * Copyright (c) 2016, Scott Motte
40
+ * All rights reserved.
41
+ *
42
+ * Redistribution and use in source and binary forms, with or without
43
+ * modification, are permitted provided that the following conditions are met:
44
+ *
45
+ * * Redistributions of source code must retain the above copyright notice, this
46
+ * list of conditions and the following disclaimer.
47
+ *
48
+ * * Redistributions in binary form must reproduce the above copyright notice,
49
+ * this list of conditions and the following disclaimer in the documentation
50
+ * and/or other materials provided with the distribution.
51
+ *
52
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
53
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
54
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
55
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
56
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
57
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
58
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
59
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
60
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
61
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
62
+ */
63
+
27
64
  // Regex for parsing .env files
28
- // ported from https://github.com/motdotla/dotenv/blob/master/lib/main.js#L49
65
+ // ported from https://github.com/motdotla/dotenv/blob/v17.4.2/lib/main.js#L38
29
66
  const LINE =
30
67
  /^\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?$/gm;
31
68
 
@@ -33,7 +70,7 @@ const PLUGIN_NAME = "DotenvPlugin";
33
70
 
34
71
  /**
35
72
  * Parse .env file content
36
- * ported from https://github.com/motdotla/dotenv/blob/master/lib/main.js#L49
73
+ * ported from https://github.com/motdotla/dotenv/blob/v17.4.2/lib/main.js#L41
37
74
  * @param {string | Buffer} src the source content to parse
38
75
  * @returns {Env} parsed environment variables object
39
76
  */
@@ -79,7 +116,7 @@ function parse(src) {
79
116
 
80
117
  /**
81
118
  * Resolve escape sequences
82
- * ported from https://github.com/motdotla/dotenv-expand
119
+ * ported from https://github.com/motdotla/dotenv-expand/blob/v13.0.0/lib/main.js#L3
83
120
  * @param {string} value value to resolve
84
121
  * @returns {string} resolved value
85
122
  */
@@ -89,7 +126,7 @@ function _resolveEscapeSequences(value) {
89
126
 
90
127
  /**
91
128
  * Expand environment variable value
92
- * ported from https://github.com/motdotla/dotenv-expand
129
+ * ported from https://github.com/motdotla/dotenv-expand/blob/v13.0.0/lib/main.js#L7
93
130
  * @param {string} value value to expand
94
131
  * @param {Record<string, string | undefined>} processEnv process.env object
95
132
  * @param {Env} runningParsed running parsed object
@@ -158,7 +195,7 @@ function expandValue(value, processEnv, runningParsed) {
158
195
 
159
196
  /**
160
197
  * Expand environment variables in parsed object
161
- * ported from https://github.com/motdotla/dotenv-expand
198
+ * ported from https://github.com/motdotla/dotenv-expand/blob/v13.0.0/lib/main.js#L65
162
199
  * @param {{ parsed: Env, processEnv: Record<string, string | undefined> }} options expand options
163
200
  * @returns {{ parsed: Env }} expanded options
164
201
  */
@@ -257,7 +294,7 @@ class DotenvPlugin {
257
294
  ? compiler.context
258
295
  : this.options.dir;
259
296
 
260
- /** @type {undefined | Snapshot} */
297
+ /** @type {undefined | InstanceType<Snapshot>} */
261
298
  let snapshot;
262
299
 
263
300
  const cache = compiler.getCache(PLUGIN_NAME);
@@ -360,9 +397,9 @@ class DotenvPlugin {
360
397
  * Loads the provided compiler.
361
398
  * @private
362
399
  * @param {Compiler} compiler compiler
363
- * @param {ItemCacheFacade} itemCache item cache facade
400
+ * @param {InstanceType<ItemCacheFacade>} itemCache item cache facade
364
401
  * @param {string} dir directory to read
365
- * @returns {Promise<{ parsed: Env, snapshot: Snapshot }>} parsed result and snapshot
402
+ * @returns {Promise<{ parsed: Env, snapshot: InstanceType<Snapshot> }>} parsed result and snapshot
366
403
  */
367
404
  async _loadEnv(compiler, itemCache, dir) {
368
405
  const fs = /** @type {InputFileSystem} */ (compiler.inputFileSystem);
@@ -9,10 +9,14 @@ const EntryOptionPlugin = require("./EntryOptionPlugin");
9
9
  const EntryPlugin = require("./EntryPlugin");
10
10
  const EntryDependency = require("./dependencies/EntryDependency");
11
11
 
12
- /** @typedef {import("../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescriptionNormalized */
13
- /** @typedef {import("../declarations/WebpackOptions").EntryStatic} EntryStatic */
14
- /** @typedef {import("../declarations/WebpackOptions").EntryStaticNormalized} EntryStaticNormalized */
15
- /** @typedef {import("./Compiler")} Compiler */
12
+ /**
13
+ * @import {
14
+ * EntryDescriptionNormalized,
15
+ * EntryStatic,
16
+ * EntryStaticNormalized
17
+ * } from "../declarations/WebpackOptions"
18
+ */
19
+ /** @import Compiler from "./Compiler" */
16
20
 
17
21
  const PLUGIN_NAME = "DynamicEntryPlugin";
18
22
 
@@ -7,10 +7,14 @@
7
7
 
8
8
  const { SyncBailHook } = require("tapable");
9
9
 
10
- /** @typedef {import("../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescription */
11
- /** @typedef {import("../declarations/WebpackOptions").EntryNormalized} Entry */
12
- /** @typedef {import("./Compiler")} Compiler */
13
- /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
10
+ /**
11
+ * @import {
12
+ * EntryDescriptionNormalized as EntryDescription,
13
+ * EntryNormalized as Entry
14
+ * } from "../declarations/WebpackOptions"
15
+ */
16
+ /** @import Compiler from "./Compiler" */
17
+ /** @import { EntryOptions } from "./Entrypoint" */
14
18
 
15
19
  /**
16
20
  * @typedef {object} EntryOptionPluginHooks
@@ -7,8 +7,8 @@
7
7
 
8
8
  const EntryDependency = require("./dependencies/EntryDependency");
9
9
 
10
- /** @typedef {import("./Compiler")} Compiler */
11
- /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
10
+ /** @import Compiler from "./Compiler" */
11
+ /** @import { EntryOptions } from "./Entrypoint" */
12
12
 
13
13
  const PLUGIN_NAME = "EntryPlugin";
14
14
 
package/lib/Entrypoint.js CHANGED
@@ -8,8 +8,12 @@
8
8
  const ChunkGroup = require("./ChunkGroup");
9
9
  const SortableSet = require("./util/SortableSet");
10
10
 
11
- /** @typedef {import("../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescription */
12
- /** @typedef {import("./Chunk")} Chunk */
11
+ /**
12
+ * @import {
13
+ * EntryDescriptionNormalized as EntryDescription
14
+ * } from "../declarations/WebpackOptions"
15
+ */
16
+ /** @import Chunk from "./Chunk" */
13
17
 
14
18
  /** @typedef {{ name?: string, worklet?: boolean } & Omit<EntryDescription, "import">} EntryOptions */
15
19
 
@@ -8,8 +8,8 @@
8
8
  const DefinePlugin = require("./DefinePlugin");
9
9
  const WebpackError = require("./errors/WebpackError");
10
10
 
11
- /** @typedef {import("./Compiler")} Compiler */
12
- /** @typedef {import("./DefinePlugin").CodeValue} CodeValue */
11
+ /** @import Compiler from "./Compiler" */
12
+ /** @import { CodeValue } from "./DefinePlugin" */
13
13
 
14
14
  const PLUGIN_NAME = "EnvironmentPlugin";
15
15
 
@@ -11,10 +11,14 @@ const ModuleFilenameHelpers = require("./ModuleFilenameHelpers");
11
11
  const RuntimeGlobals = require("./RuntimeGlobals");
12
12
  const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
13
13
 
14
- /** @typedef {import("webpack-sources").Source} Source */
15
- /** @typedef {import("../declarations/WebpackOptions").DevtoolNamespace} DevtoolNamespace */
16
- /** @typedef {import("../declarations/WebpackOptions").DevtoolModuleFilenameTemplate} DevtoolModuleFilenameTemplate */
17
- /** @typedef {import("./Compiler")} Compiler */
14
+ /** @import { Source } from "webpack-sources" */
15
+ /**
16
+ * @import {
17
+ * DevtoolNamespace,
18
+ * DevtoolModuleFilenameTemplate
19
+ * } from "../declarations/WebpackOptions"
20
+ */
21
+ /** @import Compiler from "./Compiler" */
18
22
 
19
23
  /** @type {WeakMap<Source, Source>} */
20
24
  const cache = new WeakMap();