@depup/webpack 5.106.1-depup.0 → 5.109.2-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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -7,29 +7,76 @@
7
7
 
8
8
  const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
+ const memoize = require("../util/memoize");
11
+ const {
12
+ ESM_MODULE_EXPORTS_NAME,
13
+ getRequireEsmModuleExportsAccess,
14
+ isRequireEsmModuleExportsModule
15
+ } = require("./CommonJsDependencyHelpers");
10
16
  const ModuleDependency = require("./ModuleDependency");
11
- const ModuleDependencyTemplateAsId = require("./ModuleDependencyTemplateAsId");
12
17
 
18
+ /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
19
+ /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
13
20
  /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
14
21
  /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
22
+ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
23
+ /** @typedef {import("../Module")} Module */
15
24
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
16
25
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
19
26
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
27
+ /** @typedef {import("./HarmonyImportGuard").DependencyGuard} DependencyGuard */
28
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[RawReferencedExports | null, Range | undefined, DependencyGuard[] | undefined]>} ObjectDeserializerContext */
29
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[RawReferencedExports | null, Range | undefined, DependencyGuard[] | undefined]>} ObjectSerializerContext */
30
+
31
+ const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
32
+
33
+ /**
34
+ * Trims a member-access path at the first segment that is definitively not a
35
+ * provided export of the module. Such a segment is a runtime property (e.g. an
36
+ * array/object prototype method like `arr.includes`), so only the value up to
37
+ * that point is observed; referencing the whole value keeps its data intact
38
+ * instead of tree-shaking it away. Real named exports (`utils.foo`) are kept.
39
+ * @param {import("../ExportsInfo")} exportsInfo module exports info
40
+ * @param {string[]} name member-access path
41
+ * @returns {string[]} the provided prefix of the path
42
+ */
43
+ const trimToProvidedPrefix = (exportsInfo, name) => {
44
+ let current = exportsInfo;
45
+ for (let i = 0; i < name.length; i++) {
46
+ const exportInfo = current.getReadOnlyExportInfo(name[i]);
47
+ if (exportInfo.provided === false) return name.slice(0, i);
48
+ const nested = exportInfo.exportsInfo;
49
+ if (!nested) return name;
50
+ current = nested;
51
+ }
52
+ return name;
53
+ };
20
54
 
21
55
  class CommonJsRequireDependency extends ModuleDependency {
22
56
  /**
57
+ * Creates an instance of CommonJsRequireDependency.
23
58
  * @param {string} request request
24
- * @param {Range=} range location in source code
59
+ * @param {Range=} range location in source code of the string-literal argument (gets replaced by the module id)
25
60
  * @param {string=} context request context
26
61
  * @param {RawReferencedExports | null=} referencedExports list of referenced exports
62
+ * @param {Range=} valueRange location in source code of the whole `require(...)` call (for `require(esm)` interop)
27
63
  */
28
- constructor(request, range, context, referencedExports = null) {
64
+ constructor(
65
+ request,
66
+ range,
67
+ context,
68
+ referencedExports = null,
69
+ valueRange = undefined
70
+ ) {
29
71
  super(request);
30
72
  this.range = range;
73
+ /** @type {string | undefined} */
31
74
  this._context = context;
75
+ /** @type {RawReferencedExports | null} */
32
76
  this.referencedExports = referencedExports;
77
+ this.valueRange = valueRange;
78
+ /** @type {DependencyGuard[] | undefined} */
79
+ this.branchGuards = undefined;
33
80
  }
34
81
 
35
82
  get type() {
@@ -40,6 +87,18 @@ class CommonJsRequireDependency extends ModuleDependency {
40
87
  return "commonjs";
41
88
  }
42
89
 
90
+ /**
91
+ * Returns function to determine if the connection is active.
92
+ * @param {ModuleGraph} moduleGraph module graph
93
+ * @returns {null | false | GetConditionFn} function to determine if the connection is active
94
+ */
95
+ getCondition(moduleGraph) {
96
+ const guards = this.branchGuards;
97
+ if (guards === undefined) return null;
98
+ return (connection, runtime) =>
99
+ !getHarmonyImportGuard().isDeadByGuards(guards, moduleGraph, runtime);
100
+ }
101
+
43
102
  /**
44
103
  * Returns list of exports referenced by this dependency
45
104
  * @param {ModuleGraph} moduleGraph module graph
@@ -47,33 +106,96 @@ class CommonJsRequireDependency extends ModuleDependency {
47
106
  * @returns {ReferencedExports} referenced exports
48
107
  */
49
108
  getReferencedExports(moduleGraph, runtime) {
109
+ const importedModule = moduleGraph.getModule(this);
110
+ if (
111
+ importedModule &&
112
+ isRequireEsmModuleExportsModule(importedModule, moduleGraph)
113
+ ) {
114
+ // `require(esm)` will unwrap the "module.exports" named export; only
115
+ // that export is observable through this `require()` call.
116
+ return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
117
+ }
50
118
  if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
119
+ const exportsInfo = importedModule
120
+ ? moduleGraph.getExportsInfo(importedModule)
121
+ : undefined;
51
122
  return this.referencedExports.map((name) => ({
52
- name,
53
- canMangle: false
123
+ name: exportsInfo ? trimToProvidedPrefix(exportsInfo, name) : name,
124
+ canMangle: false,
125
+ canInline: false
54
126
  }));
55
127
  }
56
128
 
57
129
  /**
130
+ * Serializes this instance into the provided serializer context.
58
131
  * @param {ObjectSerializerContext} context context
59
132
  */
60
133
  serialize(context) {
61
- const { write } = context;
62
- write(this.referencedExports);
134
+ context
135
+ .write(this.referencedExports)
136
+ .write(this.valueRange)
137
+ .write(this.branchGuards);
63
138
  super.serialize(context);
64
139
  }
65
140
 
66
141
  /**
142
+ * Restores this instance from the provided deserializer context.
67
143
  * @param {ObjectDeserializerContext} context context
68
144
  */
69
145
  deserialize(context) {
70
- const { read } = context;
71
- this.referencedExports = read();
72
- super.deserialize(context);
146
+ this.referencedExports = context.read();
147
+ const c1 = context.rest;
148
+ this.valueRange = c1.read();
149
+ const c2 = c1.rest;
150
+ this.branchGuards = c2.read();
151
+ super.deserialize(c2.rest);
73
152
  }
74
153
  }
75
154
 
76
- CommonJsRequireDependency.Template = ModuleDependencyTemplateAsId;
155
+ CommonJsRequireDependency.Template = class CommonJsRequireDependencyTemplate extends (
156
+ ModuleDependency.Template
157
+ ) {
158
+ /**
159
+ * Applies the plugin by registering its hooks on the compiler.
160
+ * @param {Dependency} dependency the dependency for which the template should be applied
161
+ * @param {ReplaceSource} source the current replace source which can be modified
162
+ * @param {DependencyTemplateContext} templateContext the context object
163
+ * @returns {void}
164
+ */
165
+ apply(
166
+ dependency,
167
+ source,
168
+ { runtimeTemplate, moduleGraph, chunkGraph, runtime }
169
+ ) {
170
+ const dep = /** @type {CommonJsRequireDependency} */ (dependency);
171
+ if (!dep.range) return;
172
+ const connection = moduleGraph.getConnection(dep);
173
+ // Dead branch: module is excluded and has no id; code is never executed.
174
+ if (connection && !connection.isTargetActive(runtime)) {
175
+ source.replace(dep.range[0], dep.range[1] - 1, "null /* dead branch */");
176
+ return;
177
+ }
178
+ const importedModule = /** @type {Module} */ (moduleGraph.getModule(dep));
179
+ const content = runtimeTemplate.moduleId({
180
+ module: importedModule,
181
+ chunkGraph,
182
+ request: dep.request,
183
+ weak: dep.weak
184
+ });
185
+ source.replace(dep.range[0], dep.range[1] - 1, content);
186
+
187
+ if (dep.valueRange && importedModule) {
188
+ const access = getRequireEsmModuleExportsAccess(
189
+ importedModule,
190
+ moduleGraph,
191
+ runtime
192
+ );
193
+ if (access !== null) {
194
+ source.insert(dep.valueRange[1], access);
195
+ }
196
+ }
197
+ }
198
+ };
77
199
 
78
200
  makeSerializable(
79
201
  CommonJsRequireDependency,
@@ -9,6 +9,7 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const { equals } = require("../util/ArrayHelpers");
10
10
  const makeSerializable = require("../util/makeSerializable");
11
11
  const { propertyAccess } = require("../util/property");
12
+ const { getConcatenatedExportAccess } = require("./CommonJsDependencyHelpers");
12
13
  const NullDependency = require("./NullDependency");
13
14
 
14
15
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
@@ -18,13 +19,14 @@ const NullDependency = require("./NullDependency");
18
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
20
  /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
20
21
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
22
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
24
23
  /** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
24
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, CommonJSDependencyBaseKeywords, ExportInfoName[], boolean]>} ObjectDeserializerContext */
25
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, CommonJSDependencyBaseKeywords, ExportInfoName[], boolean]>} ObjectSerializerContext */
25
26
 
26
27
  class CommonJsSelfReferenceDependency extends NullDependency {
27
28
  /**
29
+ * Creates an instance of CommonJsSelfReferenceDependency.
28
30
  * @param {Range} range range
29
31
  * @param {CommonJSDependencyBaseKeywords} base base
30
32
  * @param {ExportInfoName[]} names names
@@ -33,8 +35,11 @@ class CommonJsSelfReferenceDependency extends NullDependency {
33
35
  constructor(range, base, names, call) {
34
36
  super();
35
37
  this.range = range;
38
+ /** @type {CommonJSDependencyBaseKeywords} */
36
39
  this.base = base;
40
+ /** @type {string[]} */
37
41
  this.names = names;
42
+ /** @type {boolean} */
38
43
  this.call = call;
39
44
  }
40
45
 
@@ -47,6 +52,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
47
52
  }
48
53
 
49
54
  /**
55
+ * Returns an identifier to merge equal requests.
50
56
  * @returns {string | null} an identifier to merge equal requests
51
57
  */
52
58
  getResourceIdentifier() {
@@ -64,27 +70,31 @@ class CommonJsSelfReferenceDependency extends NullDependency {
64
70
  }
65
71
 
66
72
  /**
73
+ * Serializes this instance into the provided serializer context.
67
74
  * @param {ObjectSerializerContext} context context
68
75
  */
69
76
  serialize(context) {
70
- const { write } = context;
71
- write(this.range);
72
- write(this.base);
73
- write(this.names);
74
- write(this.call);
77
+ context
78
+ .write(this.range)
79
+ .write(this.base)
80
+ .write(this.names)
81
+ .write(this.call);
75
82
  super.serialize(context);
76
83
  }
77
84
 
78
85
  /**
86
+ * Restores this instance from the provided deserializer context.
79
87
  * @param {ObjectDeserializerContext} context context
80
88
  */
81
89
  deserialize(context) {
82
- const { read } = context;
83
- this.range = read();
84
- this.base = read();
85
- this.names = read();
86
- this.call = read();
87
- super.deserialize(context);
90
+ this.range = context.read();
91
+ const c1 = context.rest;
92
+ this.base = c1.read();
93
+ const c2 = c1.rest;
94
+ this.names = c2.read();
95
+ const c3 = c2.rest;
96
+ this.call = c3.read();
97
+ super.deserialize(c3.rest);
88
98
  }
89
99
  }
90
100
 
@@ -97,6 +107,7 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
97
107
  NullDependency.Template
98
108
  ) {
99
109
  /**
110
+ * Applies the plugin by registering its hooks on the compiler.
100
111
  * @param {Dependency} dependency the dependency for which the template should be applied
101
112
  * @param {ReplaceSource} source the current replace source which can be modified
102
113
  * @param {DependencyTemplateContext} templateContext the context object
@@ -105,19 +116,52 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
105
116
  apply(
106
117
  dependency,
107
118
  source,
108
- { module, moduleGraph, runtime, runtimeRequirements }
119
+ {
120
+ module,
121
+ moduleGraph,
122
+ runtime,
123
+ runtimeRequirements,
124
+ initFragments,
125
+ concatenationScope
126
+ }
109
127
  ) {
110
128
  const dep = /** @type {CommonJsSelfReferenceDependency} */ (dependency);
129
+ // CJS exports are never inlined
111
130
  const used =
112
131
  dep.names.length === 0
113
132
  ? dep.names
114
- : moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime);
133
+ : /** @type {string | string[] | false} */ (
134
+ moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
135
+ );
115
136
  if (!used) {
116
137
  throw new Error(
117
138
  "Self-reference dependency has unused export name: This should not happen"
118
139
  );
119
140
  }
120
141
 
142
+ if (concatenationScope) {
143
+ // eligibility (non-empty names, exports/module.exports base) is enforced
144
+ // by JavascriptGenerator.getConcatenationBailoutReason
145
+ if (
146
+ dep.names.length === 0 ||
147
+ (dep.base !== "exports" && dep.base !== "module.exports")
148
+ ) {
149
+ throw new Error(
150
+ `Unsupported self-reference ${dep.base} in concatenated CommonJS module`
151
+ );
152
+ }
153
+ source.replace(
154
+ dep.range[0],
155
+ dep.range[1] - 1,
156
+ getConcatenatedExportAccess(
157
+ concatenationScope,
158
+ initFragments,
159
+ dep.names
160
+ )
161
+ );
162
+ return;
163
+ }
164
+
121
165
  /** @type {string} */
122
166
  let base;
123
167
  switch (dep.base) {
@@ -148,7 +192,7 @@ CommonJsSelfReferenceDependency.Template = class CommonJsSelfReferenceDependency
148
192
  source.replace(
149
193
  dep.range[0],
150
194
  dep.range[1] - 1,
151
- `${base}${propertyAccess(used)}`
195
+ `${base}${propertyAccess(/** @type {string[]} */ (used))}`
152
196
  );
153
197
  }
154
198
  };
@@ -16,20 +16,23 @@ const NullDependency = require("./NullDependency");
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
18
18
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
19
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
20
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
19
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, number | Range, Set<string> | null]>} ObjectDeserializerContext */
20
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, number | Range, Set<string> | null]>} ObjectSerializerContext */
21
21
  /** @typedef {import("../util/Hash")} Hash */
22
22
 
23
23
  class ConstDependency extends NullDependency {
24
24
  /**
25
+ * Creates an instance of ConstDependency.
25
26
  * @param {string} expression the expression
26
27
  * @param {number | Range} range the source range
27
28
  * @param {RawRuntimeRequirements | null=} runtimeRequirements runtime requirements
28
29
  */
29
30
  constructor(expression, range, runtimeRequirements) {
30
31
  super();
32
+ /** @type {string} */
31
33
  this.expression = expression;
32
34
  this.range = range;
35
+ /** @type {Set<string> | null} */
33
36
  this.runtimeRequirements = runtimeRequirements
34
37
  ? new Set(runtimeRequirements)
35
38
  : null;
@@ -38,7 +41,7 @@ class ConstDependency extends NullDependency {
38
41
  }
39
42
 
40
43
  /**
41
- * Update the hash
44
+ * Updates the hash with the data contributed by this instance.
42
45
  * @param {Hash} hash hash to be updated
43
46
  * @param {UpdateHashContext} context context
44
47
  * @returns {void}
@@ -58,6 +61,7 @@ class ConstDependency extends NullDependency {
58
61
  }
59
62
 
60
63
  /**
64
+ * Gets module evaluation side effects state.
61
65
  * @param {ModuleGraph} moduleGraph the module graph
62
66
  * @returns {ConnectionState} how this dependency connects the module to referencing modules
63
67
  */
@@ -66,25 +70,30 @@ class ConstDependency extends NullDependency {
66
70
  }
67
71
 
68
72
  /**
73
+ * Serializes this instance into the provided serializer context.
69
74
  * @param {ObjectSerializerContext} context context
70
75
  */
71
76
  serialize(context) {
72
- const { write } = context;
73
- write(this.expression);
74
- write(this.range);
75
- write(this.runtimeRequirements);
77
+ // chain writes so each position is type-checked against the tuple
78
+ context
79
+ .write(this.expression)
80
+ .write(this.range)
81
+ .write(this.runtimeRequirements);
76
82
  super.serialize(context);
77
83
  }
78
84
 
79
85
  /**
86
+ * Restores this instance from the provided deserializer context.
80
87
  * @param {ObjectDeserializerContext} context context
81
88
  */
82
89
  deserialize(context) {
83
- const { read } = context;
84
- this.expression = read();
85
- this.range = read();
86
- this.runtimeRequirements = read();
87
- super.deserialize(context);
90
+ // advance the cursor via `rest` so each read is type-checked by position
91
+ this.expression = context.read();
92
+ const c1 = context.rest;
93
+ this.range = c1.read();
94
+ const c2 = c1.rest;
95
+ this.runtimeRequirements = c2.read();
96
+ super.deserialize(c2.rest);
88
97
  }
89
98
  }
90
99
 
@@ -94,6 +103,7 @@ ConstDependency.Template = class ConstDependencyTemplate extends (
94
103
  NullDependency.Template
95
104
  ) {
96
105
  /**
106
+ * Applies the plugin by registering its hooks on the compiler.
97
107
  * @param {Dependency} dependency the dependency for which the template should be applied
98
108
  * @param {ReplaceSource} source the current replace source which can be modified
99
109
  * @param {DependencyTemplateContext} templateContext the context object
@@ -14,7 +14,7 @@ const memoize = require("../util/memoize");
14
14
  /** @typedef {import("../ContextModule").ContextOptions} ContextOptions */
15
15
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
- /** @typedef {import("../WebpackError")} WebpackError */
17
+ /** @typedef {import("../errors/WebpackError")} WebpackError */
18
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
20
 
@@ -27,6 +27,7 @@ const getCriticalDependencyWarning = memoize(() =>
27
27
  /** @typedef {{ value: string, range: Range }[]} Replaces */
28
28
 
29
29
  /**
30
+ * Returns stringified regexp.
30
31
  * @param {RegExp | false | null | undefined} r regexp
31
32
  * @returns {string} stringified regexp
32
33
  */
@@ -34,16 +35,20 @@ const regExpToString = (r) => (r ? String(r) : "");
34
35
 
35
36
  class ContextDependency extends Dependency {
36
37
  /**
38
+ * Creates an instance of ContextDependency.
37
39
  * @param {ContextDependencyOptions} options options for the context module
38
40
  * @param {string=} context request context
39
41
  */
40
42
  constructor(options, context) {
41
43
  super();
42
44
 
45
+ /** @type {ContextDependencyOptions} */
43
46
  this.options = options;
47
+ /** @type {string} */
44
48
  this.userRequest = this.options && this.options.request;
45
49
  /** @type {false | undefined | string} */
46
50
  this.critical = false;
51
+ /** @type {boolean} */
47
52
  this.hadGlobalOrStickyRegExp = false;
48
53
 
49
54
  if (
@@ -65,10 +70,12 @@ class ContextDependency extends Dependency {
65
70
  this.inShorthand = undefined;
66
71
  /** @type {Replaces | undefined} */
67
72
  this.replaces = undefined;
73
+ /** @type {string | undefined} */
68
74
  this._requestContext = context;
69
75
  }
70
76
 
71
77
  /**
78
+ * Returns a request context.
72
79
  * @returns {string | undefined} a request context
73
80
  */
74
81
  getContext() {
@@ -80,6 +87,7 @@ class ContextDependency extends Dependency {
80
87
  }
81
88
 
82
89
  /**
90
+ * Could affect referencing module.
83
91
  * @returns {boolean | TRANSITIVE} true, when changes to the referenced module could affect the referencing module; TRANSITIVE, when changes to the referenced module could affect referencing modules of the referencing module
84
92
  */
85
93
  couldAffectReferencingModule() {
@@ -87,6 +95,7 @@ class ContextDependency extends Dependency {
87
95
  }
88
96
 
89
97
  /**
98
+ * Returns an identifier to merge equal requests.
90
99
  * @returns {string | null} an identifier to merge equal requests
91
100
  */
92
101
  getResourceIdentifier() {
@@ -108,7 +117,7 @@ class ContextDependency extends Dependency {
108
117
  }
109
118
 
110
119
  /**
111
- * Returns warnings
120
+ * Returns warnings.
112
121
  * @param {ModuleGraph} moduleGraph module graph
113
122
  * @returns {WebpackError[] | null | undefined} warnings
114
123
  */
@@ -135,6 +144,7 @@ class ContextDependency extends Dependency {
135
144
  }
136
145
 
137
146
  /**
147
+ * Serializes this instance into the provided serializer context.
138
148
  * @param {ObjectSerializerContext} context context
139
149
  */
140
150
  serialize(context) {
@@ -154,6 +164,7 @@ class ContextDependency extends Dependency {
154
164
  }
155
165
 
156
166
  /**
167
+ * Restores this instance from the provided deserializer context.
157
168
  * @param {ObjectDeserializerContext} context context
158
169
  */
159
170
  deserialize(context) {
@@ -25,6 +25,7 @@ const { parseResource } = require("../util/identifier");
25
25
  const quoteMeta = (str) => str.replace(/[-[\]\\/{}()*+?.^$|]/g, "\\$&");
26
26
 
27
27
  /**
28
+ * Split context from prefix.
28
29
  * @param {string} prefix prefix
29
30
  * @returns {{ prefix: string, context: string }} result
30
31
  */
@@ -45,11 +46,13 @@ const splitContextFromPrefix = (prefix) => {
45
46
  /** @typedef {{ new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...args: EXPECTED_ANY[]): ContextDependency }} ContextDependencyConstructor */
46
47
 
47
48
  /**
49
+ * Defines the get additional dep args type used by this module.
48
50
  * @template T
49
- * @typedef {T extends new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...remains: infer R) => EXPECTED_ANY ? R : []} GetAdditionalDepArgs
51
+ * @typedef {T extends new (options: ContextDependencyOptions, range: Range, valueRange: Range, ...remains: infer R) => ContextDependency ? R : []} GetAdditionalDepArgs
50
52
  */
51
53
 
52
54
  /**
55
+ * Returns the created Dependency.
53
56
  * @template {ContextDependencyConstructor} T
54
57
  * @param {T} Dep the Dependency class
55
58
  * @param {Range} range source range
@@ -123,7 +126,7 @@ module.exports.create = (
123
126
  valueRange,
124
127
  ...depArgs
125
128
  );
126
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
129
+ dep.loc = parser.getLocation(expr);
127
130
 
128
131
  /** @type {Replaces} */
129
132
  const replaces = [];
@@ -221,7 +224,7 @@ module.exports.create = (
221
224
  valueRange,
222
225
  ...depArgs
223
226
  );
224
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
227
+ dep.loc = parser.getLocation(expr);
225
228
  /** @type {Replaces} */
226
229
  const replaces = [];
227
230
  if (prefixRange) {
@@ -266,7 +269,7 @@ module.exports.create = (
266
269
  /** @type {Range} */ (param.range),
267
270
  ...depArgs
268
271
  );
269
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
272
+ dep.loc = parser.getLocation(expr);
270
273
  dep.critical =
271
274
  options.exprContextCritical &&
272
275
  "the request of a dependency is an expression";
@@ -14,6 +14,7 @@ const ContextDependency = require("./ContextDependency");
14
14
 
15
15
  class ContextDependencyTemplateAsId extends ContextDependency.Template {
16
16
  /**
17
+ * Applies the plugin by registering its hooks on the compiler.
17
18
  * @param {Dependency} dependency the dependency for which the template should be applied
18
19
  * @param {ReplaceSource} source the current replace source which can be modified
19
20
  * @param {DependencyTemplateContext} templateContext the context object
@@ -30,7 +31,7 @@ class ContextDependencyTemplateAsId extends ContextDependency.Template {
30
31
  module,
31
32
  chunkGraph,
32
33
  request: /** @type {string} */ (dep.request),
33
- weak: dep.weak,
34
+ weak: /** @type {{ weak?: boolean }} */ (dep).weak,
34
35
  runtimeRequirements
35
36
  });
36
37
 
@@ -16,6 +16,7 @@ class ContextDependencyTemplateAsRequireCall
16
16
  extends ContextDependency.Template
17
17
  {
18
18
  /**
19
+ * Applies the plugin by registering its hooks on the compiler.
19
20
  * @param {Dependency} dependency the dependency for which the template should be applied
20
21
  * @param {ReplaceSource} source the current replace source which can be modified
21
22
  * @param {DependencyTemplateContext} templateContext the context object