@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
@@ -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
 
@@ -628,10 +656,36 @@ const getRuntimeRequirements = (code) => {
628
656
  : [RuntimeGlobals.requireScope];
629
657
  };
630
658
 
659
+ const createCompilationHooks = () => ({
660
+ /**
661
+ * @type {SyncWaterfallHook<[Record<string, CodeValue>]>}
662
+ * @since 5.104.0
663
+ */
664
+ definitions: new SyncWaterfallHook(["definitions"])
665
+ });
666
+
631
667
  /**
632
- * Defines the define plugin hooks type used by this module.
633
- * @typedef {object} DefinePluginHooks
634
- * @property {SyncWaterfallHook<[Record<string, CodeValue>]>} definitions
668
+ * Prefixes an evaluation error with the offending define key so a bare
669
+ * "Unexpected token" becomes actionable. The original error is mutated and
670
+ * returned (not re-wrapped) so its `loc`/`stack` survive for ModuleParseError's
671
+ * code frame instead of being dumped into the message.
672
+ * @param {string} key the defined key
673
+ * @param {CodeValue} code the defined value
674
+ * @param {unknown} error the original evaluation error
675
+ * @returns {Error} the annotated error
676
+ */
677
+ const annotateEvaluationError = (key, code, error) => {
678
+ const value = typeof code === "string" ? code : JSON.stringify(code);
679
+ const prefix = `DefinePlugin: failed to evaluate value for "${key}" (\`${value}\`)`;
680
+ if (error instanceof Error) {
681
+ error.message = `${prefix}: ${error.message}`;
682
+ return error;
683
+ }
684
+ return new WebpackError(`${prefix}: ${error}`);
685
+ };
686
+
687
+ /**
688
+ * @typedef {ReturnType<typeof createCompilationHooks>} DefinePluginHooks
635
689
  */
636
690
 
637
691
  /** @typedef {Record<string, CodeValue>} Definitions */
@@ -666,6 +720,22 @@ class DefinePlugin {
666
720
  PLUGIN_NAME,
667
721
  (compilation, { normalModuleFactory }) => {
668
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
+ }
669
739
  const hooks = DefinePlugin.getCompilationHooks(compilation);
670
740
 
671
741
  hooks.definitions.tap(PLUGIN_NAME, (previousDefinitions) => ({
@@ -954,17 +1024,23 @@ class DefinePlugin {
954
1024
  });
955
1025
  parser.hooks.typeof.for(key).tap(PLUGIN_NAME, (expr) => {
956
1026
  addValueDependency(originalKey);
957
- const codeCode = toCode(
958
- code,
959
- parser,
960
- compilation.valueCacheVersions,
961
- originalKey,
962
- runtimeTemplate,
963
- logger,
964
- null
965
- );
966
- const typeofCode = isTypeof ? codeCode : `typeof (${codeCode})`;
967
- const res = parser.evaluate(typeofCode);
1027
+ /** @type {BasicEvaluatedExpression} */
1028
+ let res;
1029
+ try {
1030
+ const codeCode = toCode(
1031
+ code,
1032
+ parser,
1033
+ compilation.valueCacheVersions,
1034
+ originalKey,
1035
+ runtimeTemplate,
1036
+ logger,
1037
+ null
1038
+ );
1039
+ const typeofCode = isTypeof ? codeCode : `typeof (${codeCode})`;
1040
+ res = parser.evaluate(typeofCode);
1041
+ } catch (err) {
1042
+ throw annotateEvaluationError(originalKey, code, err);
1043
+ }
968
1044
  if (!res.isString()) return;
969
1045
  return toConstantDependency(
970
1046
  parser,
@@ -1088,7 +1164,7 @@ class DefinePlugin {
1088
1164
  const chainRoot = isMeta ? "import.meta" : chainParts[0];
1089
1165
  const chainPrefix = chainParts.slice(isMeta ? 2 : 1);
1090
1166
  /**
1091
- * 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.
1092
1168
  * Walks the merged view so dotted keys of every instance count.
1093
1169
  * Collects every define key consulted so the caller can record a
1094
1170
  * value dependency on each (a sibling key like `OBJECT.SUB2` affects
@@ -1096,12 +1172,12 @@ class DefinePlugin {
1096
1172
  * Inherited members (e.g. `toString`) stay defined.
1097
1173
  * @param {Members} members chain members (after the root)
1098
1174
  * @param {string[]} deps consulted define keys (mutated)
1099
- * @returns {boolean} true when the access resolves to `undefined`
1175
+ * @returns {number} index of the member resolving to `undefined`, or -1
1100
1176
  */
1101
- const isUndefinedMemberAccess = (members, deps) => {
1102
- if (members.length <= chainPrefix.length) return false;
1177
+ const findUndefinedMemberAccess = (members, deps) => {
1178
+ if (members.length <= chainPrefix.length) return -1;
1103
1179
  for (let i = 0; i < chainPrefix.length; i++) {
1104
- if (members[i] !== chainPrefix[i]) return false;
1180
+ if (members[i] !== chainPrefix[i]) return -1;
1105
1181
  }
1106
1182
  /** @type {MergedDefinitionNode | undefined} */
1107
1183
  let value = definition;
@@ -1114,9 +1190,9 @@ class DefinePlugin {
1114
1190
  deps.push(nextPath);
1115
1191
  value = value.get(member);
1116
1192
  } else if (member in EMPTY_OBJECT) {
1117
- return false;
1193
+ return -1;
1118
1194
  } else {
1119
- return true;
1195
+ return i;
1120
1196
  }
1121
1197
  } else if (isObjectDefinition(value)) {
1122
1198
  // non-expandable object leaf (e.g. an array)
@@ -1132,37 +1208,45 @@ class DefinePlugin {
1132
1208
  deps.push(nextPath);
1133
1209
  value = mergedDefinitions.definitions[nextPath];
1134
1210
  } else {
1135
- return true;
1211
+ return i;
1136
1212
  }
1137
1213
  } else {
1138
1214
  // a leaf with members left is a real property access on a value
1139
- return false;
1215
+ return -1;
1140
1216
  }
1141
1217
  path = nextPath;
1142
1218
  }
1143
- return false;
1219
+ return -1;
1144
1220
  };
1145
1221
  parser.hooks.expressionMemberChain
1146
1222
  .for(chainRoot)
1147
1223
  .tap(PLUGIN_NAME, (expr, members) => {
1148
1224
  const deps = [key];
1149
- if (!isUndefinedMemberAccess(members, deps)) return;
1225
+ if (findUndefinedMemberAccess(members, deps) === -1) return;
1150
1226
  for (const dep of deps) addValueDependency(dep);
1151
1227
  return toConstantDependency(parser, "undefined")(expr);
1152
1228
  });
1153
- // In a call, replace only the callee so the call itself is kept:
1154
- // `x.MISSING()` stays a (throwing) call and `x.MISSING?.()`
1155
- // 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.
1156
1231
  parser.hooks.callMemberChain
1157
1232
  .for(chainRoot)
1158
- .tap(PLUGIN_NAME, (expr, members) => {
1233
+ .tap(PLUGIN_NAME, (expr, members, membersOptionals) => {
1159
1234
  const deps = [key];
1160
- if (!isUndefinedMemberAccess(members, deps)) return;
1235
+ const undefinedIndex = findUndefinedMemberAccess(members, deps);
1236
+ if (undefinedIndex === -1) return;
1161
1237
  for (const dep of deps) addValueDependency(dep);
1238
+ if (membersOptionals[undefinedIndex + 1]) {
1239
+ return toConstantDependency(parser, "undefined")(expr);
1240
+ }
1162
1241
  toConstantDependency(
1163
1242
  parser,
1164
1243
  "undefined"
1165
- )(/** @type {Expression} */ (expr.callee));
1244
+ )(
1245
+ dropTrailingMembers(
1246
+ /** @type {Expression} */ (expr.callee),
1247
+ members.length - 1 - undefinedIndex
1248
+ )
1249
+ );
1166
1250
  parser.walkExpressions(expr.arguments);
1167
1251
  return true;
1168
1252
  });
@@ -1213,6 +1297,17 @@ class DefinePlugin {
1213
1297
  warning.hideStack = true;
1214
1298
  compilation.warnings.push(warning);
1215
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
+
1216
1311
  if (isObjectDefinition(code)) {
1217
1312
  walkDefinitionsForValues(
1218
1313
  /** @type {Definitions} */ (code),
@@ -1233,17 +1328,33 @@ class DefinePlugin {
1233
1328
  }
1234
1329
  }
1235
1330
 
1236
- DefinePlugin.getCompilationHooks = createHooksRegistry(
1237
- () =>
1238
- /** @type {DefinePluginHooks} */ ({
1239
- definitions: new SyncWaterfallHook(["definitions"])
1240
- })
1241
- );
1331
+ DefinePlugin.getCompilationHooks = createHooksRegistry(createCompilationHooks);
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;
1242
1359
 
1243
1360
  module.exports = DefinePlugin;
1244
- module.exports.VALUE_DEP_MAIN = VALUE_DEP_MAIN;
1245
- module.exports.VALUE_DEP_PREFIX = VALUE_DEP_PREFIX;
1246
- module.exports.getMergedDefinitionNode = getMergedDefinitionNode;
1247
- module.exports.getRuntimeRequirements = getRuntimeRequirements;
1248
- module.exports.stringifyMergedDefinition = stringifyMergedDefinition;
1249
- 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