webpack 5.101.2 → 5.102.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 (323) hide show
  1. package/README.md +21 -26
  2. package/lib/APIPlugin.js +30 -36
  3. package/lib/AsyncDependenciesBlock.js +1 -4
  4. package/lib/BannerPlugin.js +0 -1
  5. package/lib/Cache.js +7 -6
  6. package/lib/CacheFacade.js +0 -1
  7. package/lib/Chunk.js +49 -31
  8. package/lib/ChunkGraph.js +35 -25
  9. package/lib/ChunkGroup.js +8 -10
  10. package/lib/ChunkTemplate.js +1 -1
  11. package/lib/CleanPlugin.js +3 -3
  12. package/lib/CodeGenerationResults.js +2 -1
  13. package/lib/CompatibilityPlugin.js +29 -12
  14. package/lib/Compilation.js +204 -185
  15. package/lib/Compiler.js +36 -35
  16. package/lib/ConcatenationScope.js +6 -1
  17. package/lib/ConditionalInitFragment.js +1 -1
  18. package/lib/ConstPlugin.js +18 -10
  19. package/lib/ContextExclusionPlugin.js +0 -1
  20. package/lib/ContextModule.js +22 -20
  21. package/lib/ContextModuleFactory.js +30 -11
  22. package/lib/ContextReplacementPlugin.js +38 -15
  23. package/lib/DefinePlugin.js +18 -8
  24. package/lib/DelegatedModule.js +7 -11
  25. package/lib/DependenciesBlock.js +0 -2
  26. package/lib/Dependency.js +9 -11
  27. package/lib/DependencyTemplates.js +1 -3
  28. package/lib/DllModule.js +1 -7
  29. package/lib/DllReferencePlugin.js +2 -4
  30. package/lib/DynamicEntryPlugin.js +0 -2
  31. package/lib/EntryOptionPlugin.js +0 -5
  32. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  33. package/lib/EvalDevToolModulePlugin.js +4 -3
  34. package/lib/EvalSourceMapDevToolPlugin.js +3 -4
  35. package/lib/ExportsInfo.js +50 -49
  36. package/lib/ExternalModule.js +84 -52
  37. package/lib/ExternalModuleFactoryPlugin.js +27 -7
  38. package/lib/ExternalsPlugin.js +24 -17
  39. package/lib/FileSystemInfo.js +96 -78
  40. package/lib/FlagDependencyUsagePlugin.js +3 -4
  41. package/lib/Generator.js +2 -13
  42. package/lib/GraphHelpers.js +0 -3
  43. package/lib/HookWebpackError.js +0 -2
  44. package/lib/HotModuleReplacementPlugin.js +22 -24
  45. package/lib/HotUpdateChunk.js +0 -3
  46. package/lib/IgnorePlugin.js +5 -2
  47. package/lib/InitFragment.js +41 -29
  48. package/lib/InvalidDependenciesModuleWarning.js +0 -1
  49. package/lib/LibManifestPlugin.js +4 -6
  50. package/lib/LoaderOptionsPlugin.js +1 -10
  51. package/lib/MainTemplate.js +8 -19
  52. package/lib/Module.js +32 -20
  53. package/lib/ModuleFactory.js +1 -1
  54. package/lib/ModuleFilenameHelpers.js +41 -24
  55. package/lib/ModuleGraph.js +30 -16
  56. package/lib/ModuleInfoHeaderPlugin.js +0 -1
  57. package/lib/ModuleTemplate.js +0 -2
  58. package/lib/ModuleTypeConstants.js +11 -1
  59. package/lib/MultiCompiler.js +23 -15
  60. package/lib/MultiWatching.js +6 -10
  61. package/lib/NodeStuffPlugin.js +2 -10
  62. package/lib/NormalModule.js +145 -88
  63. package/lib/NormalModuleFactory.js +59 -40
  64. package/lib/OptionsApply.js +1 -1
  65. package/lib/Parser.js +1 -1
  66. package/lib/ProgressPlugin.js +6 -10
  67. package/lib/ProvidePlugin.js +5 -7
  68. package/lib/RawModule.js +1 -6
  69. package/lib/RecordIdsPlugin.js +10 -6
  70. package/lib/ResolverFactory.js +0 -2
  71. package/lib/RuntimeGlobals.js +5 -0
  72. package/lib/RuntimeModule.js +1 -3
  73. package/lib/RuntimePlugin.js +26 -22
  74. package/lib/RuntimeTemplate.js +12 -11
  75. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -2
  76. package/lib/SourceMapDevToolPlugin.js +6 -11
  77. package/lib/Stats.js +0 -1
  78. package/lib/Template.js +6 -11
  79. package/lib/TemplatedPathPlugin.js +2 -1
  80. package/lib/WatchIgnorePlugin.js +2 -3
  81. package/lib/Watching.js +15 -15
  82. package/lib/WebpackIsIncludedPlugin.js +0 -2
  83. package/lib/WebpackOptionsApply.js +74 -107
  84. package/lib/asset/AssetBytesGenerator.js +166 -0
  85. package/lib/asset/AssetBytesParser.js +37 -0
  86. package/lib/asset/AssetGenerator.js +20 -34
  87. package/lib/asset/AssetModulesPlugin.js +34 -16
  88. package/lib/asset/AssetParser.js +7 -3
  89. package/lib/asset/AssetSourceGenerator.js +1 -1
  90. package/lib/asset/RawDataUrlModule.js +3 -2
  91. package/lib/async-modules/AsyncModuleHelpers.js +6 -4
  92. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -1
  93. package/lib/buildChunkGraph.js +0 -1
  94. package/lib/cache/MemoryCachePlugin.js +0 -2
  95. package/lib/cache/MemoryWithGcCachePlugin.js +0 -2
  96. package/lib/cache/PackFileCacheStrategy.js +14 -1
  97. package/lib/cache/ResolverCachePlugin.js +9 -15
  98. package/lib/config/defaults.js +155 -21
  99. package/lib/config/normalization.js +18 -3
  100. package/lib/container/ContainerEntryDependency.js +0 -1
  101. package/lib/container/ContainerEntryModule.js +3 -7
  102. package/lib/container/ContainerPlugin.js +1 -2
  103. package/lib/container/ContainerReferencePlugin.js +0 -1
  104. package/lib/container/FallbackDependency.js +2 -1
  105. package/lib/container/FallbackModule.js +6 -7
  106. package/lib/container/ModuleFederationPlugin.js +0 -1
  107. package/lib/container/RemoteModule.js +8 -8
  108. package/lib/container/RemoteRuntimeModule.js +2 -2
  109. package/lib/css/CssGenerator.js +3 -6
  110. package/lib/css/CssLoadingRuntimeModule.js +6 -9
  111. package/lib/css/CssModulesPlugin.js +11 -13
  112. package/lib/css/CssParser.js +3 -3
  113. package/lib/css/walkCssTokens.js +1 -1
  114. package/lib/debug/ProfilingPlugin.js +35 -8
  115. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -17
  116. package/lib/dependencies/AMDPlugin.js +2 -2
  117. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -2
  118. package/lib/dependencies/CachedConstDependency.js +0 -4
  119. package/lib/dependencies/CommonJsExportRequireDependency.js +20 -14
  120. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  121. package/lib/dependencies/CommonJsExportsParserPlugin.js +20 -5
  122. package/lib/dependencies/CommonJsFullRequireDependency.js +6 -4
  123. package/lib/dependencies/CommonJsImportsParserPlugin.js +16 -7
  124. package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
  125. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  126. package/lib/dependencies/ConstDependency.js +2 -2
  127. package/lib/dependencies/ContextDependency.js +9 -4
  128. package/lib/dependencies/ContextDependencyHelpers.js +2 -2
  129. package/lib/dependencies/ContextDependencyTemplateAsId.js +9 -9
  130. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +9 -9
  131. package/lib/dependencies/ContextElementDependency.js +22 -11
  132. package/lib/dependencies/CssIcssImportDependency.js +0 -2
  133. package/lib/dependencies/CssIcssSymbolDependency.js +2 -2
  134. package/lib/dependencies/CssImportDependency.js +0 -8
  135. package/lib/dependencies/CssLocalIdentifierDependency.js +3 -4
  136. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -2
  137. package/lib/dependencies/CssUrlDependency.js +0 -6
  138. package/lib/dependencies/ExportsInfoDependency.js +7 -9
  139. package/lib/dependencies/ExternalModuleDependency.js +0 -3
  140. package/lib/dependencies/ExternalModuleInitFragment.js +1 -1
  141. package/lib/dependencies/HarmonyAcceptDependency.js +1 -1
  142. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -4
  143. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  144. package/lib/dependencies/HarmonyDetectionParserPlugin.js +0 -14
  145. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +3 -3
  146. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +4 -1
  147. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +29 -35
  148. package/lib/dependencies/HarmonyImportDependency.js +30 -14
  149. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +38 -24
  150. package/lib/dependencies/HarmonyImportSideEffectDependency.js +0 -4
  151. package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -31
  152. package/lib/dependencies/HarmonyModulesPlugin.js +3 -3
  153. package/lib/dependencies/ImportDependency.js +18 -6
  154. package/lib/dependencies/ImportEagerDependency.js +2 -3
  155. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -5
  156. package/lib/dependencies/ImportMetaContextPlugin.js +0 -1
  157. package/lib/dependencies/ImportMetaPlugin.js +8 -1
  158. package/lib/dependencies/ImportParserPlugin.js +294 -45
  159. package/lib/dependencies/ImportWeakDependency.js +2 -3
  160. package/lib/dependencies/JsonExportsDependency.js +0 -1
  161. package/lib/dependencies/LoaderDependency.js +0 -3
  162. package/lib/dependencies/LoaderImportDependency.js +0 -3
  163. package/lib/dependencies/LoaderPlugin.js +11 -5
  164. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  165. package/lib/dependencies/ModuleDependency.js +3 -9
  166. package/lib/dependencies/NullDependency.js +2 -0
  167. package/lib/dependencies/ProvidedDependency.js +6 -8
  168. package/lib/dependencies/PureExpressionDependency.js +0 -1
  169. package/lib/dependencies/RequireEnsureDependenciesBlock.js +0 -1
  170. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -2
  171. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  172. package/lib/dependencies/RequireResolveDependency.js +2 -2
  173. package/lib/dependencies/RuntimeRequirementsDependency.js +2 -3
  174. package/lib/dependencies/StaticExportsDependency.js +3 -5
  175. package/lib/dependencies/URLDependency.js +2 -7
  176. package/lib/dependencies/URLPlugin.js +1 -2
  177. package/lib/dependencies/WebAssemblyExportImportedDependency.js +2 -2
  178. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  179. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  180. package/lib/dependencies/WorkerDependency.js +2 -3
  181. package/lib/dependencies/WorkerPlugin.js +3 -9
  182. package/lib/dependencies/processExportInfo.js +2 -3
  183. package/lib/esm/ModuleChunkFormatPlugin.js +0 -3
  184. package/lib/esm/ModuleChunkLoadingPlugin.js +2 -1
  185. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -7
  186. package/lib/hmr/LazyCompilationPlugin.js +6 -4
  187. package/lib/hmr/lazyCompilationBackend.js +13 -10
  188. package/lib/ids/DeterministicChunkIdsPlugin.js +0 -1
  189. package/lib/ids/NamedChunkIdsPlugin.js +1 -6
  190. package/lib/ids/NamedModuleIdsPlugin.js +1 -5
  191. package/lib/ids/NaturalChunkIdsPlugin.js +0 -1
  192. package/lib/ids/NaturalModuleIdsPlugin.js +0 -1
  193. package/lib/ids/OccurrenceChunkIdsPlugin.js +0 -1
  194. package/lib/ids/OccurrenceModuleIdsPlugin.js +0 -1
  195. package/lib/ids/SyncModuleIdsPlugin.js +4 -3
  196. package/lib/index.js +8 -7
  197. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -1
  198. package/lib/javascript/BasicEvaluatedExpression.js +13 -6
  199. package/lib/javascript/ChunkFormatHelpers.js +1 -1
  200. package/lib/javascript/CommonJsChunkFormatPlugin.js +0 -1
  201. package/lib/javascript/JavascriptGenerator.js +2 -3
  202. package/lib/javascript/JavascriptModulesPlugin.js +44 -21
  203. package/lib/javascript/JavascriptParser.js +159 -93
  204. package/lib/javascript/JavascriptParserHelpers.js +2 -2
  205. package/lib/javascript/StartupHelpers.js +2 -4
  206. package/lib/json/JsonData.js +1 -1
  207. package/lib/json/JsonGenerator.js +4 -5
  208. package/lib/json/JsonModulesPlugin.js +0 -3
  209. package/lib/json/JsonParser.js +4 -2
  210. package/lib/library/AbstractLibraryPlugin.js +2 -2
  211. package/lib/library/AmdLibraryPlugin.js +0 -1
  212. package/lib/library/AssignLibraryPlugin.js +23 -12
  213. package/lib/library/EnableLibraryPlugin.js +7 -11
  214. package/lib/library/ExportPropertyLibraryPlugin.js +8 -20
  215. package/lib/library/JsonpLibraryPlugin.js +5 -2
  216. package/lib/library/ModuleLibraryPlugin.js +88 -43
  217. package/lib/library/SystemLibraryPlugin.js +0 -1
  218. package/lib/library/UmdLibraryPlugin.js +12 -18
  219. package/lib/logging/Logger.js +12 -10
  220. package/lib/logging/createConsoleLogger.js +15 -14
  221. package/lib/logging/truncateArgs.js +1 -1
  222. package/lib/node/CommonJsChunkLoadingPlugin.js +2 -1
  223. package/lib/node/NodeWatchFileSystem.js +4 -4
  224. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  225. package/lib/node/RequireChunkLoadingRuntimeModule.js +5 -2
  226. package/lib/node/nodeConsole.js +2 -2
  227. package/lib/optimize/AggressiveSplittingPlugin.js +2 -0
  228. package/lib/optimize/ConcatenatedModule.js +142 -100
  229. package/lib/optimize/InnerGraph.js +17 -11
  230. package/lib/optimize/InnerGraphPlugin.js +0 -3
  231. package/lib/optimize/ModuleConcatenationPlugin.js +3 -4
  232. package/lib/optimize/RuntimeChunkPlugin.js +0 -1
  233. package/lib/optimize/SideEffectsFlagPlugin.js +3 -10
  234. package/lib/optimize/SplitChunksPlugin.js +46 -40
  235. package/lib/performance/SizeLimitsPlugin.js +2 -1
  236. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  237. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +0 -2
  238. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +0 -1
  239. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  240. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  241. package/lib/rules/BasicMatcherRulePlugin.js +0 -2
  242. package/lib/rules/ObjectMatcherRulePlugin.js +0 -1
  243. package/lib/rules/RuleSetCompiler.js +8 -6
  244. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  245. package/lib/runtime/CompatRuntimeModule.js +0 -1
  246. package/lib/runtime/GetChunkFilenameRuntimeModule.js +8 -9
  247. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  248. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +1 -1
  249. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  250. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  251. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  252. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  253. package/lib/schemes/DataUriPlugin.js +2 -28
  254. package/lib/schemes/FileUriPlugin.js +5 -2
  255. package/lib/schemes/HttpUriPlugin.js +4 -2
  256. package/lib/schemes/VirtualUrlPlugin.js +11 -11
  257. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  258. package/lib/serialization/ObjectMiddleware.js +30 -19
  259. package/lib/serialization/SerializerMiddleware.js +1 -3
  260. package/lib/serialization/types.js +1 -1
  261. package/lib/sharing/ConsumeSharedModule.js +3 -5
  262. package/lib/sharing/ConsumeSharedPlugin.js +2 -4
  263. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -6
  264. package/lib/sharing/ProvideSharedModule.js +3 -7
  265. package/lib/sharing/SharePlugin.js +0 -2
  266. package/lib/sharing/ShareRuntimeModule.js +4 -1
  267. package/lib/sharing/resolveMatchedConfigs.js +14 -6
  268. package/lib/sharing/utils.js +0 -6
  269. package/lib/stats/DefaultStatsFactoryPlugin.js +178 -94
  270. package/lib/stats/DefaultStatsPresetPlugin.js +15 -9
  271. package/lib/stats/DefaultStatsPrinterPlugin.js +77 -113
  272. package/lib/stats/StatsFactory.js +14 -11
  273. package/lib/url/URLParserPlugin.js +2 -4
  274. package/lib/util/ArrayHelpers.js +4 -4
  275. package/lib/util/AsyncQueue.js +1 -0
  276. package/lib/util/LazySet.js +2 -2
  277. package/lib/util/StackedCacheMap.js +0 -2
  278. package/lib/util/TupleSet.js +9 -4
  279. package/lib/util/URLAbsoluteSpecifier.js +0 -1
  280. package/lib/util/WeakTupleMap.js +1 -1
  281. package/lib/util/chainedImports.js +3 -1
  282. package/lib/util/cleverMerge.js +15 -18
  283. package/lib/util/comparators.js +2 -4
  284. package/lib/util/compileBooleanMatcher.js +11 -9
  285. package/lib/util/concatenate.js +1 -2
  286. package/lib/util/create-schema-validation.js +0 -1
  287. package/lib/util/dataURL.js +39 -0
  288. package/lib/util/deprecation.js +29 -31
  289. package/lib/util/deterministicGrouping.js +34 -30
  290. package/lib/util/extractSourceMap.js +319 -0
  291. package/lib/util/findGraphRoots.js +15 -5
  292. package/lib/util/fs.js +29 -8
  293. package/lib/util/semver.js +9 -8
  294. package/lib/util/smartGrouping.js +41 -26
  295. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  296. package/lib/wasm/EnableWasmLoadingPlugin.js +3 -2
  297. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +5 -1
  298. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +2 -13
  299. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +2 -9
  300. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  301. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -4
  302. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -3
  303. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -4
  304. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +2 -7
  305. package/lib/wasm-sync/WebAssemblyParser.js +1 -4
  306. package/lib/web/JsonpChunkLoadingPlugin.js +2 -1
  307. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
  308. package/lib/web/JsonpTemplatePlugin.js +0 -1
  309. package/lib/webpack.js +21 -8
  310. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +2 -1
  311. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  312. package/package.json +13 -13
  313. package/schemas/WebpackOptions.check.js +1 -1
  314. package/schemas/WebpackOptions.json +77 -93
  315. package/schemas/plugins/BannerPlugin.check.js +1 -1
  316. package/schemas/plugins/BannerPlugin.json +4 -0
  317. package/schemas/plugins/IgnorePlugin.json +1 -1
  318. package/schemas/plugins/ProgressPlugin.json +1 -1
  319. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  320. package/schemas/plugins/SourceMapDevToolPlugin.json +5 -1
  321. package/schemas/plugins/schemes/VirtualUrlPlugin.json +3 -3
  322. package/types.d.ts +1140 -505
  323. package/SECURITY.md +0 -9
@@ -38,6 +38,14 @@ const RequireResolveHeaderDependency = require("./RequireResolveHeaderDependency
38
38
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
39
39
  /** @typedef {import("../javascript/JavascriptParser").ImportSource} ImportSource */
40
40
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
41
+ /** @typedef {import("../javascript/JavascriptParser").Members} Members */
42
+ /** @typedef {import("../javascript/JavascriptParser").CalleeMembers} CalleeMembers */
43
+
44
+ /**
45
+ * @typedef {object} CommonJsImportSettings
46
+ * @property {string=} name
47
+ * @property {string} context
48
+ */
41
49
 
42
50
  const createRequireSpecifierTag = Symbol("createRequire");
43
51
  const createdRequireIdentifierTag = Symbol("createRequire()");
@@ -58,10 +66,11 @@ class CommonJsImportsParserPlugin {
58
66
  */
59
67
  apply(parser) {
60
68
  const options = this.options;
61
-
62
69
  const getContext = () => {
63
70
  if (parser.currentTagData) {
64
- const { context } = parser.currentTagData;
71
+ const { context } =
72
+ /** @type {CommonJsImportSettings} */
73
+ (parser.currentTagData);
65
74
  return context;
66
75
  }
67
76
  };
@@ -69,7 +78,7 @@ class CommonJsImportsParserPlugin {
69
78
  // #region metadata
70
79
  /**
71
80
  * @param {string} expression expression
72
- * @param {() => string[]} getMembers get members
81
+ * @param {() => Members} getMembers get members
73
82
  */
74
83
  const tapRequireExpression = (expression, getMembers) => {
75
84
  parser.hooks.typeof
@@ -366,9 +375,9 @@ class CommonJsImportsParserPlugin {
366
375
  // #region Require with property access
367
376
  /**
368
377
  * @param {Expression} expr expression
369
- * @param {string[]} calleeMembers callee members
378
+ * @param {CalleeMembers} calleeMembers callee members
370
379
  * @param {CallExpression} callExpr call expression
371
- * @param {string[]} members members
380
+ * @param {Members} members members
372
381
  * @param {Range[]} memberRanges member ranges
373
382
  * @returns {boolean | void} true when handled
374
383
  */
@@ -402,9 +411,9 @@ class CommonJsImportsParserPlugin {
402
411
  };
403
412
  /**
404
413
  * @param {CallExpression} expr expression
405
- * @param {string[]} calleeMembers callee members
414
+ * @param {CalleeMembers} calleeMembers callee members
406
415
  * @param {CallExpression} callExpr call expression
407
- * @param {string[]} members members
416
+ * @param {Members} members members
408
417
  * @param {Range[]} memberRanges member ranges
409
418
  * @returns {boolean | void} true when handled
410
419
  */
@@ -20,7 +20,7 @@ class CommonJsRequireContextDependency extends ContextDependency {
20
20
  * @param {Range} range location in source code
21
21
  * @param {Range | undefined} valueRange location of the require call
22
22
  * @param {boolean | string } inShorthand true or name
23
- * @param {string} context context
23
+ * @param {string=} context context
24
24
  */
25
25
  constructor(options, range, valueRange, inShorthand, context) {
26
26
  super(options, context);
@@ -13,10 +13,10 @@ const NullDependency = require("./NullDependency");
13
13
 
14
14
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
15
15
  /** @typedef {import("../Dependency")} Dependency */
16
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
17
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
16
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
18
17
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
18
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
+ /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
20
20
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
@@ -27,7 +27,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
27
27
  /**
28
28
  * @param {Range} range range
29
29
  * @param {CommonJSDependencyBaseKeywords} base base
30
- * @param {string[]} names names
30
+ * @param {ExportInfoName[]} names names
31
31
  * @param {boolean} call is a call
32
32
  */
33
33
  constructor(range, base, names, call) {
@@ -57,7 +57,7 @@ class CommonJsSelfReferenceDependency extends NullDependency {
57
57
  * Returns list of exports referenced by this dependency
58
58
  * @param {ModuleGraph} moduleGraph module graph
59
59
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
60
- * @returns {(string[] | ReferencedExport)[]} referenced exports
60
+ * @returns {ReferencedExports} referenced exports
61
61
  */
62
62
  getReferencedExports(moduleGraph, runtime) {
63
63
  return [this.call ? this.names.slice(0, -1) : this.names];
@@ -9,7 +9,7 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const NullDependency = require("./NullDependency");
10
10
 
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
12
+ /** @typedef {import("./NullDependency").RawRuntimeRequirements} RawRuntimeRequirements */
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
14
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
15
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
@@ -24,7 +24,7 @@ class ConstDependency extends NullDependency {
24
24
  /**
25
25
  * @param {string} expression the expression
26
26
  * @param {number | Range} range the source range
27
- * @param {(string[] | null)=} runtimeRequirements runtime requirements
27
+ * @param {RawRuntimeRequirements | null=} runtimeRequirements runtime requirements
28
28
  */
29
29
  constructor(expression, range, runtimeRequirements) {
30
30
  super();
@@ -10,6 +10,7 @@ const DependencyTemplate = require("../DependencyTemplate");
10
10
  const makeSerializable = require("../util/makeSerializable");
11
11
  const memoize = require("../util/memoize");
12
12
 
13
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
14
  /** @typedef {import("../ContextModule").ContextOptions} ContextOptions */
14
15
  /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
15
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
@@ -23,8 +24,10 @@ const getCriticalDependencyWarning = memoize(() =>
23
24
 
24
25
  /** @typedef {ContextOptions & { request: string }} ContextDependencyOptions */
25
26
 
27
+ /** @typedef {{ value: string, range: Range }[]} Replaces */
28
+
26
29
  /**
27
- * @param {RegExp | null | undefined} r regexp
30
+ * @param {RegExp | false | null | undefined} r regexp
28
31
  * @returns {string} stringified regexp
29
32
  */
30
33
  const regExpToString = (r) => (r ? String(r) : "");
@@ -45,18 +48,22 @@ class ContextDependency extends Dependency {
45
48
 
46
49
  if (
47
50
  this.options &&
51
+ this.options.regExp &&
48
52
  (this.options.regExp.global || this.options.regExp.sticky)
49
53
  ) {
50
54
  this.options = { ...this.options, regExp: null };
51
55
  this.hadGlobalOrStickyRegExp = true;
52
56
  }
53
57
 
58
+ /** @type {string | undefined} */
54
59
  this.request = undefined;
60
+ /** @type {Range | undefined} */
55
61
  this.range = undefined;
62
+ /** @type {Range | undefined} */
56
63
  this.valueRange = undefined;
57
64
  /** @type {boolean | string | undefined} */
58
65
  this.inShorthand = undefined;
59
- // TODO refactor this
66
+ /** @type {Replaces | undefined} */
60
67
  this.replaces = undefined;
61
68
  this._requestContext = context;
62
69
  }
@@ -141,7 +148,6 @@ class ContextDependency extends Dependency {
141
148
  write(this._requestContext);
142
149
  write(this.range);
143
150
  write(this.valueRange);
144
- write(this.prepend);
145
151
  write(this.replaces);
146
152
 
147
153
  super.serialize(context);
@@ -161,7 +167,6 @@ class ContextDependency extends Dependency {
161
167
  this._requestContext = read();
162
168
  this.range = read();
163
169
  this.valueRange = read();
164
- this.prepend = read();
165
170
  this.replaces = read();
166
171
 
167
172
  super.deserialize(context);
@@ -9,13 +9,13 @@ const { parseResource } = require("../util/identifier");
9
9
 
10
10
  /** @typedef {import("estree").Expression} Expression */
11
11
  /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
12
- /** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
13
12
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
14
13
  /** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
15
14
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
16
15
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
16
  /** @typedef {import("./ContextDependency")} ContextDependency */
18
17
  /** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
18
+ /** @typedef {import("./ContextDependency").Replaces} Replaces */
19
19
 
20
20
  /**
21
21
  * Escapes regular expression metacharacters
@@ -119,7 +119,7 @@ module.exports.create = (
119
119
  );
120
120
  dep.loc = /** @type {DependencyLocation} */ (expr.loc);
121
121
 
122
- /** @type {{ value: string, range: Range }[]} */
122
+ /** @type {Replaces} */
123
123
  const replaces = [];
124
124
  const parts = /** @type {BasicEvaluatedExpression[]} */ (param.parts);
125
125
 
@@ -8,6 +8,7 @@
8
8
  const ContextDependency = require("./ContextDependency");
9
9
 
10
10
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
11
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
11
12
  /** @typedef {import("../Dependency")} Dependency */
12
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
13
14
 
@@ -28,11 +29,13 @@ class ContextDependencyTemplateAsId extends ContextDependency.Template {
28
29
  const moduleExports = runtimeTemplate.moduleExports({
29
30
  module,
30
31
  chunkGraph,
31
- request: dep.request,
32
+ request: /** @type {string} */ (dep.request),
32
33
  weak: dep.weak,
33
34
  runtimeRequirements
34
35
  });
35
36
 
37
+ const range = /** @type {Range} */ (dep.range);
38
+
36
39
  if (module) {
37
40
  if (dep.valueRange) {
38
41
  if (Array.isArray(dep.replaces)) {
@@ -41,21 +44,18 @@ class ContextDependencyTemplateAsId extends ContextDependency.Template {
41
44
  source.replace(rep.range[0], rep.range[1] - 1, rep.value);
42
45
  }
43
46
  }
44
- source.replace(dep.valueRange[1], dep.range[1] - 1, ")");
47
+
48
+ source.replace(dep.valueRange[1], range[1] - 1, ")");
45
49
  source.replace(
46
- dep.range[0],
50
+ range[0],
47
51
  dep.valueRange[0] - 1,
48
52
  `${moduleExports}.resolve(`
49
53
  );
50
54
  } else {
51
- source.replace(
52
- dep.range[0],
53
- dep.range[1] - 1,
54
- `${moduleExports}.resolve`
55
- );
55
+ source.replace(range[0], range[1] - 1, `${moduleExports}.resolve`);
56
56
  }
57
57
  } else {
58
- source.replace(dep.range[0], dep.range[1] - 1, moduleExports);
58
+ source.replace(range[0], range[1] - 1, moduleExports);
59
59
  }
60
60
  }
61
61
  }
@@ -8,6 +8,7 @@
8
8
  const ContextDependency = require("./ContextDependency");
9
9
 
10
10
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
11
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
11
12
  /** @typedef {import("../Dependency")} Dependency */
12
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
13
14
 
@@ -27,13 +28,16 @@ class ContextDependencyTemplateAsRequireCall extends ContextDependency.Template
27
28
  let moduleExports = runtimeTemplate.moduleExports({
28
29
  module: moduleGraph.getModule(dep),
29
30
  chunkGraph,
30
- request: dep.request,
31
+ request: /** @type {string} */ (dep.request),
31
32
  runtimeRequirements
32
33
  });
33
34
 
34
35
  if (dep.inShorthand) {
35
36
  moduleExports = `${dep.inShorthand}: ${moduleExports}`;
36
37
  }
38
+
39
+ const range = /** @type {Range} */ (dep.range);
40
+
37
41
  if (moduleGraph.getModule(dep)) {
38
42
  if (dep.valueRange) {
39
43
  if (Array.isArray(dep.replaces)) {
@@ -42,17 +46,13 @@ class ContextDependencyTemplateAsRequireCall extends ContextDependency.Template
42
46
  source.replace(rep.range[0], rep.range[1] - 1, rep.value);
43
47
  }
44
48
  }
45
- source.replace(dep.valueRange[1], dep.range[1] - 1, ")");
46
- source.replace(
47
- dep.range[0],
48
- dep.valueRange[0] - 1,
49
- `${moduleExports}(`
50
- );
49
+ source.replace(dep.valueRange[1], range[1] - 1, ")");
50
+ source.replace(range[0], dep.valueRange[0] - 1, `${moduleExports}(`);
51
51
  } else {
52
- source.replace(dep.range[0], dep.range[1] - 1, moduleExports);
52
+ source.replace(range[0], range[1] - 1, moduleExports);
53
53
  }
54
54
  } else {
55
- source.replace(dep.range[0], dep.range[1] - 1, moduleExports);
55
+ source.replace(range[0], range[1] - 1, moduleExports);
56
56
  }
57
57
  }
58
58
  }
@@ -10,9 +10,9 @@ const makeSerializable = require("../util/makeSerializable");
10
10
  const ModuleDependency = require("./ModuleDependency");
11
11
 
12
12
  /** @typedef {import("../ContextModule")} ContextModule */
13
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
13
+ /** @typedef {import("../Dependency").RawReferencedExports} RawReferencedExports */
14
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
14
15
  /** @typedef {import("../Module")} Module */
15
- /** @typedef {import("../Module").BuildMeta} BuildMeta */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../javascript/JavascriptParser").ImportAttributes} ImportAttributes */
18
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
@@ -25,7 +25,7 @@ class ContextElementDependency extends ModuleDependency {
25
25
  * @param {string | undefined} userRequest user request
26
26
  * @param {string | undefined} typePrefix type prefix
27
27
  * @param {string} category category
28
- * @param {(string[][] | null)=} referencedExports referenced exports
28
+ * @param {RawReferencedExports | null=} referencedExports referenced exports
29
29
  * @param {string=} context context
30
30
  * @param {ImportAttributes=} attributes import assertions
31
31
  */
@@ -39,16 +39,16 @@ class ContextElementDependency extends ModuleDependency {
39
39
  attributes
40
40
  ) {
41
41
  super(request);
42
- this.referencedExports = referencedExports;
43
- this._typePrefix = typePrefix;
44
- this._category = category;
45
- this._context = context || undefined;
46
42
 
47
43
  if (userRequest) {
48
44
  this.userRequest = userRequest;
49
45
  }
50
46
 
51
- this.assertions = attributes;
47
+ this._typePrefix = typePrefix;
48
+ this._category = category;
49
+ this.referencedExports = referencedExports;
50
+ this._context = context || undefined;
51
+ this.attributes = attributes;
52
52
  }
53
53
 
54
54
  get type() {
@@ -63,11 +63,22 @@ class ContextElementDependency extends ModuleDependency {
63
63
  return this._category;
64
64
  }
65
65
 
66
+ /**
67
+ * @returns {string | null} an identifier to merge equal requests
68
+ */
69
+ getResourceIdentifier() {
70
+ let str = super.getResourceIdentifier();
71
+ if (this.attributes !== undefined) {
72
+ str += JSON.stringify(this.attributes);
73
+ }
74
+ return str;
75
+ }
76
+
66
77
  /**
67
78
  * Returns list of exports referenced by this dependency
68
79
  * @param {ModuleGraph} moduleGraph module graph
69
80
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
70
- * @returns {(string[] | ReferencedExport)[]} referenced exports
81
+ * @returns {ReferencedExports} referenced exports
71
82
  */
72
83
  getReferencedExports(moduleGraph, runtime) {
73
84
  if (!this.referencedExports) return Dependency.EXPORTS_OBJECT_REFERENCED;
@@ -110,7 +121,7 @@ class ContextElementDependency extends ModuleDependency {
110
121
  write(this._typePrefix);
111
122
  write(this._category);
112
123
  write(this.referencedExports);
113
- write(this.assertions);
124
+ write(this.attributes);
114
125
  super.serialize(context);
115
126
  }
116
127
 
@@ -122,7 +133,7 @@ class ContextElementDependency extends ModuleDependency {
122
133
  this._typePrefix = read();
123
134
  this._category = read();
124
135
  this.referencedExports = read();
125
- this.assertions = read();
136
+ this.attributes = read();
126
137
  super.deserialize(context);
127
138
  }
128
139
  }
@@ -12,10 +12,8 @@ const ModuleDependency = require("./ModuleDependency");
12
12
 
13
13
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
14
  /** @typedef {import("../Dependency")} Dependency */
15
- /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
16
15
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
17
16
  /** @typedef {import("../Module")} Module */
18
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
19
17
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
20
18
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
21
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
@@ -11,7 +11,7 @@ const NullDependency = require("./NullDependency");
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
12
  /** @typedef {import("../Dependency")} Dependency */
13
13
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
14
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
15
15
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
16
16
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
17
17
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
@@ -77,7 +77,7 @@ class CssIcssSymbolDependency extends NullDependency {
77
77
  * Returns list of exports referenced by this dependency
78
78
  * @param {ModuleGraph} moduleGraph module graph
79
79
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
80
- * @returns {(string[] | ReferencedExport)[]} referenced exports
80
+ * @returns {ReferencedExports} referenced exports
81
81
  */
82
82
  getReferencedExports(moduleGraph, runtime) {
83
83
  return [[this.name]];
@@ -9,19 +9,11 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const ModuleDependency = require("./ModuleDependency");
10
10
 
11
11
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
13
12
  /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
13
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
- /** @typedef {import("../Module")} Module */
17
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
- /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
19
- /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
20
14
  /** @typedef {import("../css/CssParser").Range} Range */
21
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
23
- /** @typedef {import("../util/Hash")} Hash */
24
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
25
17
 
26
18
  class CssImportDependency extends ModuleDependency {
27
19
  /**
@@ -15,7 +15,6 @@ const NullDependency = require("./NullDependency");
15
15
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
16
16
  /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
17
17
  /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorLocalIdentName} CssGeneratorLocalIdentName */
18
- /** @typedef {import("../../declarations/WebpackOptions").HashFunction} HashFunction */
19
18
  /** @typedef {import("../ChunkGraph")} ChunkGraph */
20
19
  /** @typedef {import("../CssModule")} CssModule */
21
20
  /** @typedef {import("../Dependency")} Dependency */
@@ -23,7 +22,6 @@ const NullDependency = require("./NullDependency");
23
22
  /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
24
23
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
25
24
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
26
- /** @typedef {import("../NormalModuleFactory").ResourceDataWithData} ResourceDataWithData */
27
25
  /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
28
26
  /** @typedef {import("../css/CssGenerator")} CssGenerator */
29
27
  /** @typedef {import("../css/CssParser").Range} Range */
@@ -48,12 +46,13 @@ const getLocalIdent = (local, module, chunkGraph, runtimeTemplate) => {
48
46
  const relativeResourcePath = makePathsRelative(
49
47
  /** @type {string} */
50
48
  (module.context),
51
- module.matchResource || module.resource,
49
+ /** @type {string} */
50
+ (module.getResource()),
52
51
  runtimeTemplate.compilation.compiler.root
53
52
  );
54
53
  const { hashFunction, hashDigest, hashDigestLength, hashSalt, uniqueName } =
55
54
  runtimeTemplate.outputOptions;
56
- const hash = createHash(/** @type {HashFunction} */ (hashFunction));
55
+ const hash = createHash(hashFunction);
57
56
 
58
57
  if (hashSalt) {
59
58
  hash.update(hashSalt);
@@ -11,7 +11,7 @@ const CssLocalIdentifierDependency = require("./CssLocalIdentifierDependency");
11
11
 
12
12
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
13
  /** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
14
- /** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
14
+ /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
15
15
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
16
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
17
  /** @typedef {import("../css/CssParser").Range} Range */
@@ -60,7 +60,7 @@ class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency {
60
60
  * Returns list of exports referenced by this dependency
61
61
  * @param {ModuleGraph} moduleGraph module graph
62
62
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
63
- * @returns {(string[] | ReferencedExport)[]} referenced exports
63
+ * @returns {ReferencedExports} referenced exports
64
64
  */
65
65
  getReferencedExports(moduleGraph, runtime) {
66
66
  if (this.declaredSet && !this.declaredSet.has(this.name)) {
@@ -11,20 +11,14 @@ const memoize = require("../util/memoize");
11
11
  const ModuleDependency = require("./ModuleDependency");
12
12
 
13
13
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
15
14
  /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
16
15
  /** @typedef {import("../Dependency")} Dependency */
17
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
18
16
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
17
  /** @typedef {import("../Module")} Module */
20
18
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
21
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
22
- /** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
23
- /** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
24
19
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
25
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
26
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
27
- /** @typedef {import("../util/Hash")} Hash */
28
22
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
29
23
 
30
24
  const getIgnoredRawDataUrlModule = memoize(
@@ -10,16 +10,14 @@ const makeSerializable = require("../util/makeSerializable");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
12
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
14
13
  /** @typedef {import("../Dependency")} Dependency */
15
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
16
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
15
  /** @typedef {import("../Module")} Module */
18
16
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
+ /** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
19
18
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
20
19
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
21
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
22
- /** @typedef {import("../util/Hash")} Hash */
23
21
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
24
22
 
25
23
  /**
@@ -30,13 +28,13 @@ const NullDependency = require("./NullDependency");
30
28
  /**
31
29
  * @param {ModuleGraph} moduleGraph the module graph
32
30
  * @param {Module} module the module
33
- * @param {string[] | null} _exportName name of the export if any
31
+ * @param {ExportInfoName[] | null} exportName_ name of the export if any
34
32
  * @param {string | null} property name of the requested property
35
33
  * @param {RuntimeSpec} runtime for which runtime
36
- * @returns {undefined | null | number | boolean | string[] | SortableSet<string>} value of the property
34
+ * @returns {undefined | null | boolean | ExportInfoName[]} value of the property
37
35
  */
38
- const getProperty = (moduleGraph, module, _exportName, property, runtime) => {
39
- if (!_exportName) {
36
+ const getProperty = (moduleGraph, module, exportName_, property, runtime) => {
37
+ if (!exportName_) {
40
38
  switch (property) {
41
39
  case "usedExports": {
42
40
  const usedExports = moduleGraph
@@ -53,7 +51,7 @@ const getProperty = (moduleGraph, module, _exportName, property, runtime) => {
53
51
  }
54
52
  }
55
53
  }
56
- const exportName = /** @type {string[]} */ (_exportName);
54
+ const exportName = /** @type {ExportInfoName[]} */ (exportName_);
57
55
  switch (property) {
58
56
  case "canMangle": {
59
57
  const exportsInfo = moduleGraph.getExportsInfo(module);
@@ -92,7 +90,7 @@ const getProperty = (moduleGraph, module, _exportName, property, runtime) => {
92
90
  class ExportsInfoDependency extends NullDependency {
93
91
  /**
94
92
  * @param {Range} range range
95
- * @param {string[] | null} exportName export name
93
+ * @param {ExportInfoName[] | null} exportName export name
96
94
  * @param {string | null} property property
97
95
  */
98
96
  constructor(range, exportName, property) {
@@ -11,13 +11,10 @@ const ExternalModuleInitFragment = require("./ExternalModuleInitFragment");
11
11
 
12
12
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
13
  /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
14
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
- /** @typedef {import("../javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
17
15
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
18
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
- /** @typedef {import("../util/Hash")} Hash */
21
18
 
22
19
  class ExternalModuleDependency extends CachedConstDependency {
23
20
  /**
@@ -20,7 +20,7 @@ const makeSerializable = require("../util/makeSerializable");
20
20
  class ExternalModuleInitFragment extends InitFragment {
21
21
  /**
22
22
  * @param {string} importedModule imported module
23
- * @param {Array<{ name: string, value?: string }> | ImportSpecifiers} specifiers import specifiers
23
+ * @param {{ name: string, value?: string }[] | ImportSpecifiers} specifiers import specifiers
24
24
  * @param {string=} defaultImport default import
25
25
  */
26
26
  constructor(importedModule, specifiers, defaultImport) {
@@ -120,7 +120,7 @@ HarmonyAcceptDependency.Template = class HarmonyAcceptDependencyTemplate extends
120
120
  for (const d of module.dependencies) {
121
121
  if (deferDependency && noDeferredDependency) break;
122
122
  if (isRelatedHarmonyImportDependency(dependency, d)) {
123
- if (d.defer) {
123
+ if (/** @type {HarmonyImportDependency} */ (d).defer) {
124
124
  deferDependency = /** @type {HarmonyImportDependency} */ (d);
125
125
  } else {
126
126
  noDeferredDependency = /** @type {HarmonyImportDependency} */ (d);
@@ -9,10 +9,6 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const HarmonyImportDependency = require("./HarmonyImportDependency");
10
10
  const NullDependency = require("./NullDependency");
11
11
 
12
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
- /** @typedef {import("../Dependency")} Dependency */
14
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
-
16
12
  class HarmonyAcceptImportDependency extends HarmonyImportDependency {
17
13
  /**
18
14
  * @param {string} request the request string
@@ -14,7 +14,6 @@ const NullDependency = require("./NullDependency");
14
14
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
15
15
  /** @typedef {import("../Dependency")} Dependency */
16
16
  /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
17
- /** @typedef {import("../Module")} Module */
18
17
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
19
18
 
20
19
  class HarmonyCompatibilityDependency extends NullDependency {