webpack 5.101.3 → 5.102.1

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 (339) 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 +37 -27
  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 +3 -2
  13. package/lib/CompatibilityPlugin.js +29 -12
  14. package/lib/Compilation.js +209 -196
  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 +6 -5
  19. package/lib/ContextExclusionPlugin.js +0 -1
  20. package/lib/ContextModule.js +25 -21
  21. package/lib/ContextModuleFactory.js +30 -11
  22. package/lib/ContextReplacementPlugin.js +38 -15
  23. package/lib/DefinePlugin.js +5 -9
  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 +2 -4
  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 +105 -90
  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 +42 -25
  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 +146 -89
  63. package/lib/NormalModuleFactory.js +132 -42
  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 +22 -12
  75. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -2
  76. package/lib/SourceMapDevToolPlugin.js +11 -18
  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 +167 -0
  85. package/lib/asset/AssetBytesParser.js +37 -0
  86. package/lib/asset/AssetGenerator.js +22 -37
  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/buildChunkGraph.js +0 -1
  93. package/lib/cache/MemoryCachePlugin.js +0 -2
  94. package/lib/cache/MemoryWithGcCachePlugin.js +0 -2
  95. package/lib/cache/PackFileCacheStrategy.js +14 -1
  96. package/lib/cache/ResolverCachePlugin.js +9 -15
  97. package/lib/cache/getLazyHashedEtag.js +1 -1
  98. package/lib/config/browserslistTargetHandler.js +77 -76
  99. package/lib/config/defaults.js +162 -23
  100. package/lib/config/normalization.js +18 -3
  101. package/lib/config/target.js +1 -1
  102. package/lib/container/ContainerEntryDependency.js +0 -1
  103. package/lib/container/ContainerEntryModule.js +3 -7
  104. package/lib/container/ContainerPlugin.js +1 -2
  105. package/lib/container/ContainerReferencePlugin.js +0 -1
  106. package/lib/container/FallbackDependency.js +2 -1
  107. package/lib/container/FallbackModule.js +6 -7
  108. package/lib/container/ModuleFederationPlugin.js +0 -1
  109. package/lib/container/RemoteModule.js +8 -8
  110. package/lib/container/RemoteRuntimeModule.js +2 -2
  111. package/lib/css/CssGenerator.js +3 -6
  112. package/lib/css/CssLoadingRuntimeModule.js +6 -9
  113. package/lib/css/CssModulesPlugin.js +13 -19
  114. package/lib/css/CssParser.js +3 -3
  115. package/lib/css/walkCssTokens.js +2 -2
  116. package/lib/debug/ProfilingPlugin.js +35 -8
  117. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -17
  118. package/lib/dependencies/AMDPlugin.js +2 -2
  119. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -2
  120. package/lib/dependencies/CachedConstDependency.js +0 -4
  121. package/lib/dependencies/CommonJsExportRequireDependency.js +20 -14
  122. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  123. package/lib/dependencies/CommonJsExportsParserPlugin.js +20 -5
  124. package/lib/dependencies/CommonJsFullRequireDependency.js +6 -4
  125. package/lib/dependencies/CommonJsImportsParserPlugin.js +16 -7
  126. package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
  127. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  128. package/lib/dependencies/ConstDependency.js +2 -2
  129. package/lib/dependencies/ContextDependency.js +9 -4
  130. package/lib/dependencies/ContextDependencyHelpers.js +2 -2
  131. package/lib/dependencies/ContextDependencyTemplateAsId.js +9 -9
  132. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +9 -9
  133. package/lib/dependencies/ContextElementDependency.js +22 -11
  134. package/lib/dependencies/CssIcssImportDependency.js +0 -2
  135. package/lib/dependencies/CssIcssSymbolDependency.js +2 -2
  136. package/lib/dependencies/CssImportDependency.js +0 -8
  137. package/lib/dependencies/CssLocalIdentifierDependency.js +4 -7
  138. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -2
  139. package/lib/dependencies/CssUrlDependency.js +0 -6
  140. package/lib/dependencies/ExportsInfoDependency.js +7 -9
  141. package/lib/dependencies/ExternalModuleDependency.js +0 -3
  142. package/lib/dependencies/ExternalModuleInitFragment.js +1 -1
  143. package/lib/dependencies/HarmonyAcceptDependency.js +1 -1
  144. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -4
  145. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  146. package/lib/dependencies/HarmonyDetectionParserPlugin.js +0 -14
  147. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +3 -3
  148. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +4 -1
  149. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +29 -35
  150. package/lib/dependencies/HarmonyImportDependency.js +33 -14
  151. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +20 -23
  152. package/lib/dependencies/HarmonyImportSideEffectDependency.js +0 -4
  153. package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -31
  154. package/lib/dependencies/HarmonyModulesPlugin.js +3 -3
  155. package/lib/dependencies/ImportContextDependency.js +13 -0
  156. package/lib/dependencies/ImportDependency.js +18 -6
  157. package/lib/dependencies/ImportEagerDependency.js +2 -3
  158. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -5
  159. package/lib/dependencies/ImportMetaContextPlugin.js +0 -1
  160. package/lib/dependencies/ImportMetaPlugin.js +3 -2
  161. package/lib/dependencies/ImportParserPlugin.js +288 -45
  162. package/lib/dependencies/ImportWeakDependency.js +2 -3
  163. package/lib/dependencies/JsonExportsDependency.js +0 -1
  164. package/lib/dependencies/LoaderDependency.js +0 -3
  165. package/lib/dependencies/LoaderImportDependency.js +0 -3
  166. package/lib/dependencies/LoaderPlugin.js +11 -5
  167. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  168. package/lib/dependencies/ModuleDependency.js +3 -9
  169. package/lib/dependencies/NullDependency.js +2 -0
  170. package/lib/dependencies/ProvidedDependency.js +6 -8
  171. package/lib/dependencies/PureExpressionDependency.js +0 -1
  172. package/lib/dependencies/RequireEnsureDependenciesBlock.js +0 -1
  173. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -2
  174. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  175. package/lib/dependencies/RequireResolveDependency.js +2 -2
  176. package/lib/dependencies/RuntimeRequirementsDependency.js +2 -3
  177. package/lib/dependencies/StaticExportsDependency.js +3 -5
  178. package/lib/dependencies/URLDependency.js +2 -7
  179. package/lib/dependencies/URLPlugin.js +1 -2
  180. package/lib/dependencies/WebAssemblyExportImportedDependency.js +2 -2
  181. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  182. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  183. package/lib/dependencies/WorkerDependency.js +2 -3
  184. package/lib/dependencies/WorkerPlugin.js +4 -12
  185. package/lib/dependencies/processExportInfo.js +2 -3
  186. package/lib/esm/ModuleChunkFormatPlugin.js +0 -3
  187. package/lib/esm/ModuleChunkLoadingPlugin.js +2 -1
  188. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -7
  189. package/lib/hmr/LazyCompilationPlugin.js +6 -4
  190. package/lib/hmr/lazyCompilationBackend.js +13 -10
  191. package/lib/ids/DeterministicChunkIdsPlugin.js +0 -1
  192. package/lib/ids/HashedModuleIdsPlugin.js +5 -7
  193. package/lib/ids/IdHelpers.js +1 -1
  194. package/lib/ids/NamedChunkIdsPlugin.js +1 -6
  195. package/lib/ids/NamedModuleIdsPlugin.js +1 -5
  196. package/lib/ids/NaturalChunkIdsPlugin.js +0 -1
  197. package/lib/ids/NaturalModuleIdsPlugin.js +0 -1
  198. package/lib/ids/OccurrenceChunkIdsPlugin.js +0 -1
  199. package/lib/ids/OccurrenceModuleIdsPlugin.js +0 -1
  200. package/lib/ids/SyncModuleIdsPlugin.js +4 -3
  201. package/lib/index.js +8 -7
  202. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -1
  203. package/lib/javascript/BasicEvaluatedExpression.js +13 -6
  204. package/lib/javascript/ChunkFormatHelpers.js +1 -1
  205. package/lib/javascript/CommonJsChunkFormatPlugin.js +0 -1
  206. package/lib/javascript/JavascriptGenerator.js +2 -3
  207. package/lib/javascript/JavascriptModulesPlugin.js +46 -24
  208. package/lib/javascript/JavascriptParser.js +120 -55
  209. package/lib/javascript/JavascriptParserHelpers.js +2 -2
  210. package/lib/javascript/StartupHelpers.js +2 -4
  211. package/lib/json/JsonData.js +1 -1
  212. package/lib/json/JsonGenerator.js +4 -5
  213. package/lib/json/JsonModulesPlugin.js +0 -3
  214. package/lib/json/JsonParser.js +4 -2
  215. package/lib/library/AbstractLibraryPlugin.js +2 -2
  216. package/lib/library/AmdLibraryPlugin.js +0 -1
  217. package/lib/library/AssignLibraryPlugin.js +23 -12
  218. package/lib/library/EnableLibraryPlugin.js +7 -11
  219. package/lib/library/ExportPropertyLibraryPlugin.js +8 -20
  220. package/lib/library/JsonpLibraryPlugin.js +5 -2
  221. package/lib/library/ModuleLibraryPlugin.js +88 -43
  222. package/lib/library/SystemLibraryPlugin.js +15 -6
  223. package/lib/library/UmdLibraryPlugin.js +12 -18
  224. package/lib/logging/Logger.js +12 -10
  225. package/lib/logging/createConsoleLogger.js +15 -14
  226. package/lib/logging/truncateArgs.js +1 -1
  227. package/lib/node/CommonJsChunkLoadingPlugin.js +2 -1
  228. package/lib/node/NodeWatchFileSystem.js +4 -4
  229. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  230. package/lib/node/RequireChunkLoadingRuntimeModule.js +5 -2
  231. package/lib/node/nodeConsole.js +2 -2
  232. package/lib/optimize/AggressiveSplittingPlugin.js +2 -0
  233. package/lib/optimize/ConcatenatedModule.js +142 -100
  234. package/lib/optimize/InnerGraph.js +17 -11
  235. package/lib/optimize/InnerGraphPlugin.js +0 -3
  236. package/lib/optimize/ModuleConcatenationPlugin.js +3 -4
  237. package/lib/optimize/RealContentHashPlugin.js +5 -3
  238. package/lib/optimize/RuntimeChunkPlugin.js +0 -1
  239. package/lib/optimize/SideEffectsFlagPlugin.js +3 -10
  240. package/lib/optimize/SplitChunksPlugin.js +46 -40
  241. package/lib/performance/SizeLimitsPlugin.js +2 -1
  242. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  243. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +0 -2
  244. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +0 -1
  245. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  246. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  247. package/lib/rules/BasicMatcherRulePlugin.js +0 -2
  248. package/lib/rules/ObjectMatcherRulePlugin.js +0 -1
  249. package/lib/rules/RuleSetCompiler.js +8 -6
  250. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  251. package/lib/runtime/CompatRuntimeModule.js +0 -1
  252. package/lib/runtime/GetChunkFilenameRuntimeModule.js +8 -9
  253. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  254. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +1 -1
  255. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  256. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  257. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  258. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  259. package/lib/schemes/DataUriPlugin.js +2 -28
  260. package/lib/schemes/FileUriPlugin.js +5 -2
  261. package/lib/schemes/HttpUriPlugin.js +4 -2
  262. package/lib/schemes/VirtualUrlPlugin.js +11 -11
  263. package/lib/serialization/FileMiddleware.js +1 -1
  264. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  265. package/lib/serialization/ObjectMiddleware.js +31 -20
  266. package/lib/serialization/SerializerMiddleware.js +1 -3
  267. package/lib/serialization/types.js +1 -1
  268. package/lib/sharing/ConsumeSharedModule.js +3 -5
  269. package/lib/sharing/ConsumeSharedPlugin.js +2 -4
  270. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -6
  271. package/lib/sharing/ProvideSharedModule.js +3 -7
  272. package/lib/sharing/SharePlugin.js +0 -2
  273. package/lib/sharing/ShareRuntimeModule.js +4 -1
  274. package/lib/sharing/resolveMatchedConfigs.js +14 -6
  275. package/lib/sharing/utils.js +0 -6
  276. package/lib/stats/DefaultStatsFactoryPlugin.js +179 -95
  277. package/lib/stats/DefaultStatsPresetPlugin.js +15 -9
  278. package/lib/stats/DefaultStatsPrinterPlugin.js +77 -113
  279. package/lib/stats/StatsFactory.js +14 -11
  280. package/lib/url/URLParserPlugin.js +2 -4
  281. package/lib/util/ArrayHelpers.js +4 -4
  282. package/lib/util/AsyncQueue.js +1 -0
  283. package/lib/util/Hash.js +35 -5
  284. package/lib/util/LazySet.js +2 -2
  285. package/lib/util/StackedCacheMap.js +0 -2
  286. package/lib/util/TupleSet.js +9 -4
  287. package/lib/util/URLAbsoluteSpecifier.js +0 -1
  288. package/lib/util/WeakTupleMap.js +1 -1
  289. package/lib/util/chainedImports.js +3 -1
  290. package/lib/util/cleverMerge.js +15 -18
  291. package/lib/util/comparators.js +2 -4
  292. package/lib/util/compileBooleanMatcher.js +11 -9
  293. package/lib/util/concatenate.js +1 -2
  294. package/lib/util/create-schema-validation.js +1 -2
  295. package/lib/util/createHash.js +85 -15
  296. package/lib/util/dataURL.js +39 -0
  297. package/lib/util/deprecation.js +29 -31
  298. package/lib/util/deterministicGrouping.js +34 -30
  299. package/lib/util/extractSourceMap.js +319 -0
  300. package/lib/util/findGraphRoots.js +15 -5
  301. package/lib/util/fs.js +29 -8
  302. package/lib/util/hash/BatchedHash.js +47 -8
  303. package/lib/util/hash/wasm-hash.js +53 -13
  304. package/lib/util/semver.js +9 -8
  305. package/lib/util/smartGrouping.js +41 -26
  306. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  307. package/lib/wasm/EnableWasmLoadingPlugin.js +3 -2
  308. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +5 -1
  309. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +2 -13
  310. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +2 -9
  311. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  312. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -4
  313. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -3
  314. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -4
  315. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +2 -7
  316. package/lib/wasm-sync/WebAssemblyParser.js +1 -13
  317. package/lib/web/JsonpChunkLoadingPlugin.js +2 -1
  318. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
  319. package/lib/web/JsonpTemplatePlugin.js +0 -1
  320. package/lib/webpack.js +21 -8
  321. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +2 -1
  322. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  323. package/package.json +21 -21
  324. package/schemas/WebpackOptions.check.js +1 -1
  325. package/schemas/WebpackOptions.json +93 -96
  326. package/schemas/plugins/BannerPlugin.check.js +1 -1
  327. package/schemas/plugins/BannerPlugin.json +4 -0
  328. package/schemas/plugins/IgnorePlugin.json +1 -1
  329. package/schemas/plugins/ProgressPlugin.json +1 -1
  330. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  331. package/schemas/plugins/SourceMapDevToolPlugin.json +5 -1
  332. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  333. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  334. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  335. package/schemas/plugins/schemes/VirtualUrlPlugin.json +3 -3
  336. package/types.d.ts +1699 -706
  337. package/SECURITY.md +0 -9
  338. package/schemas/plugins/HashedModuleIdsPlugin.check.d.ts +0 -7
  339. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
@@ -22,14 +22,14 @@ const {
22
22
  const createHash = require("./util/createHash");
23
23
 
24
24
  /** @typedef {import("estree").Expression} Expression */
25
- /** @typedef {import("../declarations/WebpackOptions").HashFunction} HashFunction */
26
25
  /** @typedef {import("./Compiler")} Compiler */
27
26
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
27
+ /** @typedef {import("./Module").ValueCacheVersion} ValueCacheVersion */
28
28
  /** @typedef {import("./Module").ValueCacheVersions} ValueCacheVersions */
29
29
  /** @typedef {import("./NormalModule")} NormalModule */
30
30
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
31
31
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
32
- /** @typedef {import("./javascript/JavascriptParser").DestructuringAssignmentProperty} DestructuringAssignmentProperty */
32
+ /** @typedef {import("./javascript/JavascriptParser").DestructuringAssignmentProperties} DestructuringAssignmentProperties */
33
33
  /** @typedef {import("./javascript/JavascriptParser").Range} Range */
34
34
  /** @typedef {import("./logging/Logger").Logger} Logger */
35
35
 
@@ -45,7 +45,6 @@ const createHash = require("./util/createHash");
45
45
  * @property {string| (() => string)=} version
46
46
  */
47
47
 
48
- /** @typedef {string | Set<string>} ValueCacheVersion */
49
48
  /** @typedef {(value: { module: NormalModule, key: string, readonly version: ValueCacheVersion }) => CodeValuePrimitive} GeneratorFn */
50
49
 
51
50
  class RuntimeValue {
@@ -125,7 +124,7 @@ class RuntimeValue {
125
124
  }
126
125
 
127
126
  /**
128
- * @param {Set<DestructuringAssignmentProperty> | undefined} properties properties
127
+ * @param {DestructuringAssignmentProperties | undefined} properties properties
129
128
  * @returns {Set<string> | undefined} used keys
130
129
  */
131
130
  function getObjKeys(properties) {
@@ -376,10 +375,7 @@ class DefinePlugin {
376
375
  );
377
376
  const { runtimeTemplate } = compilation;
378
377
 
379
- const mainHash = createHash(
380
- /** @type {HashFunction} */
381
- (compilation.outputOptions.hashFunction)
382
- );
378
+ const mainHash = createHash(compilation.outputOptions.hashFunction);
383
379
  mainHash.update(
384
380
  /** @type {string} */
385
381
  (compilation.valueCacheVersions.get(VALUE_DEP_MAIN)) || ""
@@ -834,7 +830,7 @@ class DefinePlugin {
834
830
 
835
831
  compilation.valueCacheVersions.set(
836
832
  VALUE_DEP_MAIN,
837
- /** @type {string} */ (mainHash.digest("hex").slice(0, 8))
833
+ mainHash.digest("hex").slice(0, 8)
838
834
  );
839
835
  }
840
836
  );
@@ -14,30 +14,26 @@ const DelegatedSourceDependency = require("./dependencies/DelegatedSourceDepende
14
14
  const StaticExportsDependency = require("./dependencies/StaticExportsDependency");
15
15
  const makeSerializable = require("./util/makeSerializable");
16
16
 
17
- /** @typedef {import("webpack-sources").Source} Source */
18
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
19
17
  /** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptions} DllReferencePluginOptions */
20
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
18
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
21
19
  /** @typedef {import("./Compilation")} Compilation */
22
20
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
23
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
24
21
  /** @typedef {import("./Generator").SourceTypes} SourceTypes */
25
22
  /** @typedef {import("./LibManifestPlugin").ManifestModuleData} ManifestModuleData */
23
+ /** @typedef {import("./Module").ModuleId} ModuleId */
26
24
  /** @typedef {import("./Module").BuildCallback} BuildCallback */
27
25
  /** @typedef {import("./Module").BuildMeta} BuildMeta */
28
26
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
29
27
  /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
30
28
  /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
29
+ /** @typedef {import("./Module").LibIdent} LibIdent */
31
30
  /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
32
31
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
33
- /** @typedef {import("./Module").SourceContext} SourceContext */
34
32
  /** @typedef {import("./RequestShortener")} RequestShortener */
35
33
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
36
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
37
- /** @typedef {import("./WebpackError")} WebpackError */
38
- /** @typedef {import("./dependencies/ModuleDependency")} ModuleDependency */
39
34
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
40
35
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
36
+ /** @typedef {import("./dependencies/StaticExportsDependency").Exports} Exports */
41
37
  /** @typedef {import("./util/Hash")} Hash */
42
38
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
43
39
 
@@ -48,8 +44,8 @@ const makeSerializable = require("./util/makeSerializable");
48
44
  /**
49
45
  * @typedef {object} DelegatedModuleData
50
46
  * @property {BuildMeta=} buildMeta build meta
51
- * @property {true | string[]=} exports exports
52
- * @property {number | string} id module id
47
+ * @property {Exports=} exports exports
48
+ * @property {ModuleId} id module id
53
49
  */
54
50
 
55
51
  const RUNTIME_REQUIREMENTS = new Set([
@@ -89,7 +85,7 @@ class DelegatedModule extends Module {
89
85
 
90
86
  /**
91
87
  * @param {LibIdentOptions} options options
92
- * @returns {string | null} an identifier for library inclusion
88
+ * @returns {LibIdent | null} an identifier for library inclusion
93
89
  */
94
90
  libIdent(options) {
95
91
  return typeof this.originalRequest === "string"
@@ -8,8 +8,6 @@
8
8
  const makeSerializable = require("./util/makeSerializable");
9
9
 
10
10
  /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
11
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
12
- /** @typedef {import("./ChunkGroup")} ChunkGroup */
13
11
  /** @typedef {import("./Dependency")} Dependency */
14
12
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
15
13
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
package/lib/Dependency.js CHANGED
@@ -7,10 +7,8 @@
7
7
 
8
8
  const memoize = require("./util/memoize");
9
9
 
10
- /** @typedef {import("webpack-sources").Source} Source */
11
10
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
12
11
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
13
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
14
12
  /** @typedef {import("./Module")} Module */
15
13
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
16
14
  /** @typedef {import("./ModuleGraphConnection")} ModuleGraphConnection */
@@ -62,10 +60,12 @@ const memoize = require("./util/memoize");
62
60
  * @property {boolean=} hidden export is not visible, because another export blends over it
63
61
  */
64
62
 
63
+ /** @typedef {Set<string>} ExportsSpecExcludeExports */
64
+
65
65
  /**
66
66
  * @typedef {object} ExportsSpec
67
67
  * @property {(string | ExportSpec)[] | true | null} exports exported names, true for unknown exports or null for no exports
68
- * @property {Set<string>=} excludeExports when exports = true, list of unaffected exports
68
+ * @property {ExportsSpecExcludeExports=} excludeExports when exports = true, list of unaffected exports
69
69
  * @property {(Set<string> | null)=} hideExports list of maybe prior exposed, but now hidden exports
70
70
  * @property {ModuleGraphConnection=} from when reexported: from which module
71
71
  * @property {number=} priority when reexported: with which priority
@@ -80,6 +80,9 @@ const memoize = require("./util/memoize");
80
80
  * @property {boolean=} canMangle when false, referenced export can not be mangled, defaults to true
81
81
  */
82
82
 
83
+ /** @typedef {string[][]} RawReferencedExports */
84
+ /** @typedef {(string[] | ReferencedExport)[]} ReferencedExports */
85
+
83
86
  /** @typedef {(moduleGraphConnection: ModuleGraphConnection, runtime: RuntimeSpec) => ConnectionState} GetConditionFn */
84
87
 
85
88
  const TRANSITIVE = Symbol("transitive");
@@ -105,9 +108,6 @@ class Dependency {
105
108
  this.weak = false;
106
109
  // TODO check if this can be moved into ModuleDependency
107
110
  /** @type {boolean | undefined} */
108
- this.defer = false;
109
- // TODO check if this can be moved into ModuleDependency
110
- /** @type {boolean | undefined} */
111
111
  this.optional = false;
112
112
  this._locSL = 0;
113
113
  this._locSC = 0;
@@ -230,7 +230,7 @@ class Dependency {
230
230
  * Returns list of exports referenced by this dependency
231
231
  * @param {ModuleGraph} moduleGraph module graph
232
232
  * @param {RuntimeSpec} runtime the runtime for which the module is analysed
233
- * @returns {(string[] | ReferencedExport)[]} referenced exports
233
+ * @returns {ReferencedExports} referenced exports
234
234
  */
235
235
  getReferencedExports(moduleGraph, runtime) {
236
236
  return Dependency.EXPORTS_OBJECT_REFERENCED;
@@ -315,7 +315,6 @@ class Dependency {
315
315
  write(this._locEC);
316
316
  write(this._locI);
317
317
  write(this._locN);
318
- write(this.defer);
319
318
  }
320
319
 
321
320
  /**
@@ -330,13 +329,12 @@ class Dependency {
330
329
  this._locEC = read();
331
330
  this._locI = read();
332
331
  this._locN = read();
333
- this.defer = read();
334
332
  }
335
333
  }
336
334
 
337
- /** @type {string[][]} */
335
+ /** @type {RawReferencedExports} */
338
336
  Dependency.NO_EXPORTS_REFERENCED = [];
339
- /** @type {string[][]} */
337
+ /** @type {RawReferencedExports} */
340
338
  Dependency.EXPORTS_OBJECT_REFERENCED = [[]];
341
339
 
342
340
  // TODO remove in webpack 6
@@ -8,12 +8,10 @@
8
8
  const { DEFAULTS } = require("./config/defaults");
9
9
  const createHash = require("./util/createHash");
10
10
 
11
- /** @typedef {import("./Dependency")} Dependency */
11
+ /** @typedef {import("./Compilation").DependencyConstructor} DependencyConstructor */
12
12
  /** @typedef {import("./DependencyTemplate")} DependencyTemplate */
13
13
  /** @typedef {typeof import("./util/Hash")} Hash */
14
14
 
15
- /** @typedef {new (...args: EXPECTED_ANY[]) => Dependency} DependencyConstructor */
16
-
17
15
  class DependencyTemplates {
18
16
  /**
19
17
  * @param {string | Hash} hashFunction the hash function to use
@@ -50,7 +48,7 @@ class DependencyTemplates {
50
48
  updateHash(part) {
51
49
  const hash = createHash(this._hashFunction);
52
50
  hash.update(`${this._hash}${part}`);
53
- this._hash = /** @type {string} */ (hash.digest("hex"));
51
+ this._hash = hash.digest("hex");
54
52
  }
55
53
 
56
54
  getHash() {
package/lib/DllModule.js CHANGED
@@ -12,24 +12,18 @@ const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
12
12
  const RuntimeGlobals = require("./RuntimeGlobals");
13
13
  const makeSerializable = require("./util/makeSerializable");
14
14
 
15
- /** @typedef {import("webpack-sources").Source} Source */
16
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
17
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
15
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
18
16
  /** @typedef {import("./Compilation")} Compilation */
19
17
  /** @typedef {import("./Dependency")} Dependency */
20
18
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
21
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
22
19
  /** @typedef {import("./Generator").SourceTypes} SourceTypes */
23
20
  /** @typedef {import("./Module").BuildCallback} BuildCallback */
24
21
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
25
22
  /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
26
23
  /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
27
24
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
28
- /** @typedef {import("./Module").SourceContext} SourceContext */
29
25
  /** @typedef {import("./RequestShortener")} RequestShortener */
30
26
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
31
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
32
- /** @typedef {import("./WebpackError")} WebpackError */
33
27
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
34
28
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
35
29
  /** @typedef {import("./util/Hash")} Hash */
@@ -84,7 +84,7 @@ class DllReferencePlugin {
84
84
  // Store the error in the params so that it can
85
85
  // be added as a compilation error later on.
86
86
  const manifestPath = makePathsRelative(
87
- /** @type {string} */ (compiler.options.context),
87
+ compiler.context,
88
88
  manifest,
89
89
  compiler.root
90
90
  );
@@ -142,9 +142,7 @@ class DllReferencePlugin {
142
142
  source,
143
143
  type: this.options.type,
144
144
  scope: this.options.scope,
145
- context:
146
- /** @type {string} */
147
- (this.options.context || compiler.options.context),
145
+ context: this.options.context || compiler.context,
148
146
  content:
149
147
  /** @type {DllReferencePluginOptionsContent} */
150
148
  (resolvedContent),
@@ -11,8 +11,6 @@ const EntryDependency = require("./dependencies/EntryDependency");
11
11
 
12
12
  /** @typedef {import("../declarations/WebpackOptions").EntryDescriptionNormalized} EntryDescriptionNormalized */
13
13
  /** @typedef {import("../declarations/WebpackOptions").EntryDynamicNormalized} EntryDynamic */
14
- /** @typedef {import("../declarations/WebpackOptions").EntryItem} EntryItem */
15
- /** @typedef {import("../declarations/WebpackOptions").EntryStaticNormalized} EntryStatic */
16
14
  /** @typedef {import("./Compiler")} Compiler */
17
15
 
18
16
  const PLUGIN_NAME = "DynamicEntryPlugin";
@@ -76,11 +76,6 @@ class EntryOptionPlugin {
76
76
  wasmLoading: desc.wasmLoading,
77
77
  library: desc.library
78
78
  };
79
- if (desc.layer !== undefined && !compiler.options.experiments.layers) {
80
- throw new Error(
81
- "'entryOptions.layer' is only allowed when 'experiments.layers' is enabled"
82
- );
83
- }
84
79
  if (desc.chunkLoading) {
85
80
  const EnableChunkLoadingPlugin = require("./javascript/EnableChunkLoadingPlugin");
86
81
 
@@ -9,10 +9,7 @@ const WebpackError = require("./WebpackError");
9
9
  const makeSerializable = require("./util/makeSerializable");
10
10
 
11
11
  /** @typedef {import("./Module")} Module */
12
- /** @typedef {import("./Compilation")} Compilation */
13
12
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
14
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
15
- /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
16
13
  /** @typedef {"asyncWebAssembly" | "topLevelAwait" | "external promise" | "external script" | "external import" | "external module"} Feature */
17
14
 
18
15
  class EnvironmentNotSupportAsyncWarning extends WebpackError {
@@ -12,7 +12,8 @@ const RuntimeGlobals = require("./RuntimeGlobals");
12
12
  const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
13
13
 
14
14
  /** @typedef {import("webpack-sources").Source} Source */
15
- /** @typedef {import("../declarations/WebpackOptions").OutputNormalized} OutputOptions */
15
+ /** @typedef {import("../declarations/WebpackOptions").DevtoolNamespace} DevtoolNamespace */
16
+ /** @typedef {import("../declarations/WebpackOptions").DevtoolModuleFilenameTemplate} DevtoolModuleFilenameTemplate */
16
17
  /** @typedef {import("./Compiler")} Compiler */
17
18
 
18
19
  /** @type {WeakMap<Source, Source>} */
@@ -30,9 +31,9 @@ const devtoolWarning = new RawSource(`/*
30
31
 
31
32
  /**
32
33
  * @typedef {object} EvalDevToolModulePluginOptions
33
- * @property {OutputOptions["devtoolNamespace"]=} namespace namespace
34
+ * @property {DevtoolNamespace=} namespace namespace
34
35
  * @property {string=} sourceUrlComment source url comment
35
- * @property {OutputOptions["devtoolModuleFilenameTemplate"]=} moduleFilenameTemplate module filename template
36
+ * @property {DevtoolModuleFilenameTemplate=} moduleFilenameTemplate module filename template
36
37
  */
37
38
 
38
39
  const PLUGIN_NAME = "EvalDevToolModulePlugin";
@@ -17,7 +17,6 @@ const { makePathsAbsolute } = require("./util/identifier");
17
17
 
18
18
  /** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
19
19
  /** @typedef {import("webpack-sources").Source} Source */
20
- /** @typedef {import("../declarations/WebpackOptions").DevTool} DevToolOptions */
21
20
  /** @typedef {import("../declarations/plugins/SourceMapDevToolPlugin").SourceMapDevToolPluginOptions} SourceMapDevToolPluginOptions */
22
21
  /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
23
22
  /** @typedef {import("./Compiler")} Compiler */
@@ -39,9 +38,9 @@ const PLUGIN_NAME = "EvalSourceMapDevToolPlugin";
39
38
 
40
39
  class EvalSourceMapDevToolPlugin {
41
40
  /**
42
- * @param {SourceMapDevToolPluginOptions | string} inputOptions Options object
41
+ * @param {SourceMapDevToolPluginOptions | string=} inputOptions Options object
43
42
  */
44
- constructor(inputOptions) {
43
+ constructor(inputOptions = {}) {
45
44
  /** @type {SourceMapDevToolPluginOptions} */
46
45
  let options;
47
46
  if (typeof inputOptions === "string") {
@@ -134,7 +133,7 @@ class EvalSourceMapDevToolPlugin {
134
133
 
135
134
  // Clone (flat) the sourcemap to ensure that the mutations below do not persist.
136
135
  sourceMap = { ...sourceMap };
137
- const context = /** @type {string} */ (compiler.options.context);
136
+ const context = compiler.context;
138
137
  const root = compiler.root;
139
138
  const modules = sourceMap.sources.map((source) => {
140
139
  if (!source.startsWith("webpack://")) return source;
@@ -12,6 +12,8 @@ const { forEachRuntime } = require("./util/runtime");
12
12
 
13
13
  /** @typedef {import("./Dependency")} Dependency */
14
14
  /** @typedef {import("./Dependency").RuntimeSpec} RuntimeSpec */
15
+ /** @typedef {import("./Dependency").ExportsSpecExcludeExports} ExportsSpecExcludeExports */
16
+ /** @typedef {import("./dependencies/HarmonyImportDependency")} HarmonyImportDependency */
15
17
  /** @typedef {import("./Module")} Module */
16
18
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
17
19
  /** @typedef {import("./ModuleGraphConnection")} ModuleGraphConnection */
@@ -22,17 +24,22 @@ const { forEachRuntime } = require("./util/runtime");
22
24
  /** @typedef {typeof UsageState.OnlyPropertiesUsed | typeof UsageState.NoInfo | typeof UsageState.Unknown | typeof UsageState.Used} RuntimeUsageStateType */
23
25
  /** @typedef {typeof UsageState.Unused | RuntimeUsageStateType} UsageStateType */
24
26
 
25
- const UsageState = Object.freeze({
26
- Unused: /** @type {0} */ (0),
27
- OnlyPropertiesUsed: /** @type {1} */ (1),
28
- NoInfo: /** @type {2} */ (2),
29
- Unknown: /** @type {3} */ (3),
30
- Used: /** @type {4} */ (4)
31
- });
27
+ /** @typedef {string} ExportInfoName */
32
28
 
33
- const RETURNS_TRUE = () => true;
29
+ /** @typedef {Map<string, RuntimeUsageStateType>} UsedInRuntime */
30
+ /** @typedef {{ module: Module, export: ExportInfoName[], deferred: boolean }} TargetItemWithoutConnection */
31
+ /** @typedef {{ module: Module, connection: ModuleGraphConnection, export: ExportInfoName[] | undefined }} TargetItemWithConnection */
32
+ /** @typedef {(target: TargetItemWithConnection) => boolean} ResolveTargetFilter */
33
+ /** @typedef {(module: Module) => boolean} ValidTargetModuleFilter */
34
+ /** @typedef {{ connection: ModuleGraphConnection, export: ExportInfoName[], priority: number }} TargetItem */
35
+ /** @typedef {Map<Dependency | undefined, TargetItem>} Target */
34
36
 
35
- const CIRCULAR = Symbol("circular target");
37
+ /** @typedef {string | null} ExportInfoUsedName */
38
+ /** @typedef {boolean | null} ExportInfoProvided */
39
+
40
+ /** @typedef {Map<ExportInfoName, ExportInfo>} Exports */
41
+ /** @typedef {string | string[] | false} UsedName */
42
+ /** @typedef {Set<ExportInfo>} AlreadyVisitedExportInfo */
36
43
 
37
44
  /**
38
45
  * @typedef {object} RestoreProvidedDataExports
@@ -43,6 +50,18 @@ const CIRCULAR = Symbol("circular target");
43
50
  * @property {RestoreProvidedData | undefined} exportsInfo
44
51
  */
45
52
 
53
+ const UsageState = Object.freeze({
54
+ Unused: /** @type {0} */ (0),
55
+ OnlyPropertiesUsed: /** @type {1} */ (1),
56
+ NoInfo: /** @type {2} */ (2),
57
+ Unknown: /** @type {3} */ (3),
58
+ Used: /** @type {4} */ (4)
59
+ });
60
+
61
+ const RETURNS_TRUE = () => true;
62
+
63
+ const CIRCULAR = Symbol("circular target");
64
+
46
65
  class RestoreProvidedData {
47
66
  /**
48
67
  * @param {RestoreProvidedDataExports[]} exports exports
@@ -87,14 +106,11 @@ makeSerializable(
87
106
  "RestoreProvidedData"
88
107
  );
89
108
 
90
- /** @typedef {Map<ExportInfoName, ExportInfo>} Exports */
91
- /** @typedef {string | string[] | false} UsedName */
92
-
93
109
  class ExportsInfo {
94
110
  constructor() {
95
111
  /** @type {Exports} */
96
112
  this._exports = new Map();
97
- this._otherExportsInfo = new ExportInfo(/** @type {TODO} */ (null));
113
+ this._otherExportsInfo = new ExportInfo(null);
98
114
  this._sideEffectsOnlyInfo = new ExportInfo("*side effects only*");
99
115
  this._exportsAreOrdered = false;
100
116
  /** @type {ExportsInfo=} */
@@ -171,7 +187,7 @@ class ExportsInfo {
171
187
  */
172
188
  _sortExportsMap(exports) {
173
189
  if (exports.size > 1) {
174
- /** @type {string[]} */
190
+ /** @type {ExportInfoName[]} */
175
191
  const namesInOrder = [];
176
192
  for (const entry of exports.values()) {
177
193
  namesInOrder.push(entry.name);
@@ -308,7 +324,7 @@ class ExportsInfo {
308
324
 
309
325
  /**
310
326
  * @param {boolean=} canMangle true, if exports can still be mangled (defaults to false)
311
- * @param {Set<string>=} excludeExports list of unaffected exports
327
+ * @param {ExportsSpecExcludeExports=} excludeExports list of unaffected exports
312
328
  * @param {Dependency=} targetKey use this as key for the target
313
329
  * @param {ModuleGraphConnection=} targetModule set this module as target
314
330
  * @param {number=} priority priority
@@ -505,7 +521,7 @@ class ExportsInfo {
505
521
 
506
522
  /**
507
523
  * @param {RuntimeSpec} runtime the runtime
508
- * @returns {SortableSet<string> | boolean | null} set of used exports, or true (when namespace object is used), or false (when unused), or null (when unknown)
524
+ * @returns {SortableSet<ExportInfoName> | boolean | null} set of used exports, or true (when namespace object is used), or false (when unused), or null (when unknown)
509
525
  */
510
526
  getUsedExports(runtime) {
511
527
  switch (this._otherExportsInfo.getUsed(runtime)) {
@@ -517,6 +533,7 @@ class ExportsInfo {
517
533
  return true;
518
534
  }
519
535
 
536
+ /** @type {ExportInfoName[]} */
520
537
  const array = [];
521
538
  if (!this._exportsAreOrdered) this._sortExports();
522
539
  for (const exportInfo of this._exports.values()) {
@@ -548,11 +565,11 @@ class ExportsInfo {
548
565
  return false;
549
566
  }
550
567
  }
551
- return /** @type {SortableSet<string>} */ (new SortableSet(array));
568
+ return /** @type {SortableSet<ExportInfoName>} */ (new SortableSet(array));
552
569
  }
553
570
 
554
571
  /**
555
- * @returns {null | true | string[]} list of exports when known
572
+ * @returns {null | true | ExportInfoName[]} list of exports when known
556
573
  */
557
574
  getProvidedExports() {
558
575
  switch (this._otherExportsInfo.provided) {
@@ -564,7 +581,7 @@ class ExportsInfo {
564
581
  return true;
565
582
  }
566
583
 
567
- /** @type {string[]} */
584
+ /** @type {ExportInfoName[]} */
568
585
  const array = [];
569
586
  if (!this._exportsAreOrdered) this._sortExports();
570
587
  for (const exportInfo of this._exports.values()) {
@@ -831,32 +848,14 @@ class ExportsInfo {
831
848
  }
832
849
  }
833
850
 
834
- /** @typedef {Map<string, RuntimeUsageStateType>} UsedInRuntime */
835
-
836
- /** @typedef {{ module: Module, export: string[], deferred: boolean }} TargetItemWithoutConnection */
837
-
838
- /** @typedef {{ module: Module, connection: ModuleGraphConnection, export: string[] | undefined }} TargetItemWithConnection */
839
-
840
- /** @typedef {(target: TargetItemWithConnection) => boolean} ResolveTargetFilter */
841
-
842
- /** @typedef {(module: Module) => boolean} ValidTargetModuleFilter */
843
-
844
- /** @typedef {{ connection: ModuleGraphConnection, export: string[], priority: number }} TargetItem */
845
-
846
- /** @typedef {Map<Dependency | undefined, TargetItem>} Target */
847
-
848
- /** @typedef {string} ExportInfoName */
849
- /** @typedef {string | null} ExportInfoUsedName */
850
- /** @typedef {boolean | null} ExportInfoProvided */
851
-
852
851
  class ExportInfo {
853
852
  /**
854
- * @param {ExportInfoName} name the original name of the export
853
+ * @param {ExportInfoName | null} name the original name of the export
855
854
  * @param {ExportInfo=} initFrom init values from this ExportInfo
856
855
  */
857
856
  constructor(name, initFrom) {
858
857
  /** @type {ExportInfoName} */
859
- this.name = name;
858
+ this.name = /** @type {ExportInfoName} */ (name);
860
859
  /**
861
860
  * @private
862
861
  * @type {ExportInfoUsedName}
@@ -1058,8 +1057,8 @@ class ExportInfo {
1058
1057
  }
1059
1058
  } else {
1060
1059
  let changed = false;
1061
- forEachRuntime(runtime, (_runtime) => {
1062
- const runtime = /** @type {string} */ (_runtime);
1060
+ forEachRuntime(runtime, (runtime_) => {
1061
+ const runtime = /** @type {string} */ (runtime_);
1063
1062
  const usedInRuntime =
1064
1063
  /** @type {UsedInRuntime} */
1065
1064
  (this._usedInRuntime);
@@ -1148,7 +1147,7 @@ class ExportInfo {
1148
1147
  /**
1149
1148
  * @param {Dependency} key the key
1150
1149
  * @param {ModuleGraphConnection} connection the target module if a single one
1151
- * @param {(string[] | null)=} exportName the exported name
1150
+ * @param {ExportInfoName[] | null=} exportName the exported name
1152
1151
  * @param {number=} priority priority
1153
1152
  * @returns {boolean} true, if something has changed
1154
1153
  */
@@ -1158,7 +1157,7 @@ class ExportInfo {
1158
1157
  this._target = new Map();
1159
1158
  this._target.set(key, {
1160
1159
  connection,
1161
- export: /** @type {string[]} */ (exportName),
1160
+ export: /** @type {ExportInfoName[]} */ (exportName),
1162
1161
  priority
1163
1162
  });
1164
1163
  return true;
@@ -1168,7 +1167,7 @@ class ExportInfo {
1168
1167
  if (oldTarget === null && !connection) return false;
1169
1168
  this._target.set(key, {
1170
1169
  connection,
1171
- export: /** @type {string[]} */ (exportName),
1170
+ export: /** @type {ExportInfoName[]} */ (exportName),
1172
1171
  priority
1173
1172
  });
1174
1173
  this._maxTarget = undefined;
@@ -1182,7 +1181,7 @@ class ExportInfo {
1182
1181
  : oldTarget.export)
1183
1182
  ) {
1184
1183
  oldTarget.connection = connection;
1185
- oldTarget.export = /** @type {string[]} */ (exportName);
1184
+ oldTarget.export = /** @type {ExportInfoName[]} */ (exportName);
1186
1185
  oldTarget.priority = priority;
1187
1186
  this._maxTarget = undefined;
1188
1187
  return true;
@@ -1331,7 +1330,7 @@ class ExportInfo {
1331
1330
  /**
1332
1331
  * @param {ModuleGraph} moduleGraph the module graph
1333
1332
  * @param {ValidTargetModuleFilter} validTargetModuleFilter a valid target module
1334
- * @param {Set<ExportInfo>} alreadyVisited set of already visited export info to avoid circular references
1333
+ * @param {AlreadyVisitedExportInfo} alreadyVisited set of already visited export info to avoid circular references
1335
1334
  * @returns {TargetItemWithoutConnection | null | undefined | false} the target, undefined when there is no target, false when no target is valid
1336
1335
  */
1337
1336
  _findTarget(moduleGraph, validTargetModuleFilter, alreadyVisited) {
@@ -1345,7 +1344,9 @@ class ExportInfo {
1345
1344
  module: rawTarget.connection.module,
1346
1345
  export: rawTarget.export,
1347
1346
  deferred: Boolean(
1348
- rawTarget.connection.dependency && rawTarget.connection.dependency.defer
1347
+ rawTarget.connection.dependency &&
1348
+ /** @type {HarmonyImportDependency} */
1349
+ (rawTarget.connection.dependency).defer
1349
1350
  )
1350
1351
  };
1351
1352
  for (;;) {
@@ -1387,13 +1388,13 @@ class ExportInfo {
1387
1388
  /**
1388
1389
  * @param {ModuleGraph} moduleGraph the module graph
1389
1390
  * @param {ResolveTargetFilter} resolveTargetFilter filter function to further resolve target
1390
- * @param {Set<ExportInfo> | undefined} alreadyVisited set of already visited export info to avoid circular references
1391
+ * @param {AlreadyVisitedExportInfo | undefined} alreadyVisited set of already visited export info to avoid circular references
1391
1392
  * @returns {TargetItemWithConnection | CIRCULAR | undefined} the target
1392
1393
  */
1393
1394
  _getTarget(moduleGraph, resolveTargetFilter, alreadyVisited) {
1394
1395
  /**
1395
1396
  * @param {TargetItem | undefined | null} inputTarget unresolved target
1396
- * @param {Set<ExportInfo>} alreadyVisited set of already visited export info to avoid circular references
1397
+ * @param {AlreadyVisitedExportInfo} alreadyVisited set of already visited export info to avoid circular references
1397
1398
  * @returns {TargetItemWithConnection | CIRCULAR | null} resolved target
1398
1399
  */
1399
1400
  const resolveTarget = (inputTarget, alreadyVisited) => {