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
package/README.md CHANGED
@@ -20,6 +20,7 @@
20
20
  [![contributors](https://img.shields.io/github/contributors/webpack/webpack.svg)](https://github.com/webpack/webpack/graphs/contributors)
21
21
  [![discussions](https://img.shields.io/github/discussions/webpack/webpack)](https://github.com/webpack/webpack/discussions)
22
22
  [![discord](https://img.shields.io/discord/1180618526436888586?label=discord&logo=discord&logoColor=white&style=flat)](https://discord.gg/5sxFZPdx2k)
23
+ [![LFX Health Score](https://insights.linuxfoundation.org/api/badge/health-score?project=webpack)](https://insights.linuxfoundation.org/project/webpack)
23
24
 
24
25
  <h1>webpack</h1>
25
26
  <p>
@@ -45,7 +46,7 @@
45
46
  - [Backers](#backers)
46
47
  - [Special Thanks](#special-thanks-to)
47
48
 
48
- <h2>Install</h2>
49
+ ## Install
49
50
 
50
51
  Install with npm:
51
52
 
@@ -59,7 +60,7 @@ Install with yarn:
59
60
  yarn add webpack --dev
60
61
  ```
61
62
 
62
- <h2>Introduction</h2>
63
+ ## Introduction
63
64
 
64
65
  Webpack is a bundler for modules. The main purpose is to bundle JavaScript
65
66
  files for usage in a browser, yet it is also capable of transforming, bundling,
@@ -87,7 +88,7 @@ Check out webpack's quick [**Get Started**](https://webpack.js.org/guides/gettin
87
88
  Webpack supports all browsers that are [ES5-compliant](https://kangax.github.io/compat-table/es5/) (IE8 and below are not supported).
88
89
  Webpack also needs `Promise` for `import()` and `require.ensure()`. If you want to support older browsers, you will need to [load a polyfill](https://webpack.js.org/guides/shimming/) before using these expressions.
89
90
 
90
- <h2>Concepts</h2>
91
+ ## Concepts
91
92
 
92
93
  ### [Plugins](https://webpack.js.org/plugins/)
93
94
 
@@ -264,7 +265,7 @@ If you're working on webpack itself, or building advanced plugins or integration
264
265
 
265
266
  [tapable-tracer-npm]: https://img.shields.io/npm/v/tapable-tracer.svg
266
267
 
267
- <h2>Contributing</h2>
268
+ ## Contributing
268
269
 
269
270
  **We want contributing to webpack to be fun, enjoyable, and educational for anyone, and everyone.** We have a [vibrant ecosystem](https://medium.com/webpack/contributors-guide/home) that spans beyond this single repo. We welcome you to check out any of the repositories in [our organization](https://github.com/webpack) or [webpack-contrib organization](https://github.com/webpack-contrib) which houses all of our loaders and plugins.
270
271
 
@@ -283,11 +284,11 @@ Contributions go far beyond pull requests and commits. Although we love giving y
283
284
 
284
285
  To get started have a look at our [documentation on contributing](https://github.com/webpack/webpack/blob/main/CONTRIBUTING.md).
285
286
 
286
- <h3>Creating your own plugins and loaders</h3>
287
+ ### Creating your own plugins and loaders
287
288
 
288
289
  If you create a loader or plugin, we would <3 for you to open source it, and put it on npm. We follow the `x-loader`, `x-webpack-plugin` naming convention.
289
290
 
290
- <h2>Support</h2>
291
+ ## Support
291
292
 
292
293
  We consider webpack to be a low-level tool used not only individually but also layered beneath other awesome tools. Because of its flexibility, webpack isn't always the _easiest_ entry-level solution, however we do believe it is the most powerful. That said, we're always looking for ways to improve and simplify the tool without compromising functionality. If you have any ideas on ways to accomplish this, we're all ears!
293
294
 
@@ -295,11 +296,11 @@ If you're just getting started, take a look at [our new docs and concepts page](
295
296
 
296
297
  If you have discovered a 🐜 or have a feature suggestion, feel free to create an issue on GitHub.
297
298
 
298
- <h2>Current project members</h2>
299
+ ## Current project members
299
300
 
300
- For information about the governance of the Node.js project, see [GOVERNANCE.md](./GOVERNANCE.md).
301
+ For information about the governance of the webpack project, see [GOVERNANCE.md](./GOVERNANCE.md).
301
302
 
302
- <h3>TSC (Technical Steering Committee)</h3>
303
+ ### TSC (Technical Steering Committee)
303
304
 
304
305
  - [alexander-akait](https://github.com/alexander-akait) -
305
306
  **Alexander Akait** <<sheo13666q@gmail.com>> (he/him)
@@ -312,18 +313,11 @@ For information about the governance of the Node.js project, see [GOVERNANCE.md]
312
313
  - [thelarkinn](https://github.com/thelarkinn) -
313
314
  **Sean Larkin** <<selarkin@microsoft.com>> (he/him)
314
315
 
315
- <h3>Core Collaborators</h3>
316
+ ### Maintenance
316
317
 
317
- - [jhnns](https://github.com/jhnns) -
318
- **Johannes Ewald** <<mail@johannesewald.de>>
319
- - [sokra](https://github.com/sokra) -
320
- **Tobias Koppers** <<jackworks@protonmail.co>>
321
- - [spacek33z](https://github.com/spacek33z) -
322
- **Kees Kluskens** <<kees@webduck.nl>>
323
- - [TheLarkInn](https://github.com/TheLarkInn) -
324
- **Sean T. Larkin** <<selarkin@microsoft.com>>
318
+ This webpack repository is maintained by the [`Core Working Group`](./WORKING_GROUP.md).
325
319
 
326
- <h2>Sponsoring</h2>
320
+ ## Sponsoring
327
321
 
328
322
  Most of the core team members, webpack contributors and contributors in the ecosystem do this open source work in their free time. If you use webpack for a serious task, and you'd like us to invest more time on it, please donate. This project increases your income/productivity too. It makes development and applications faster and it reduces the required bandwidth.
329
323
 
@@ -336,7 +330,7 @@ This is how we use the donations:
336
330
  - Infrastructure cost
337
331
  - Fees for money handling
338
332
 
339
- <h3>Premium Partners</h3>
333
+ ### Premium Partners
340
334
 
341
335
  <div align="center">
342
336
 
@@ -345,7 +339,7 @@ This is how we use the donations:
345
339
 
346
340
  </div>
347
341
 
348
- <h3>Other Backers and Sponsors</h3>
342
+ ### Other Backers and Sponsors
349
343
 
350
344
  Before we started using OpenCollective, donations were made anonymously. Now that we have made the switch, we would like to acknowledge these sponsors (and the ones who continue to donate using OpenCollective). If we've missed someone, please send us a PR, and we'll add you to this list.
351
345
 
@@ -357,7 +351,7 @@ Before we started using OpenCollective, donations were made anonymously. Now tha
357
351
 
358
352
  </div>
359
353
 
360
- <h3>Gold Sponsors</h3>
354
+ ### Gold Sponsors
361
355
 
362
356
  [Become a gold sponsor](https://opencollective.com/webpack#sponsor) and get your logo on our README on GitHub with a link to your site.
363
357
 
@@ -396,7 +390,7 @@ Before we started using OpenCollective, donations were made anonymously. Now tha
396
390
 
397
391
  </div>
398
392
 
399
- <h3>Silver Sponsors</h3>
393
+ ### Silver Sponsors
400
394
 
401
395
  [Become a silver sponsor](https://opencollective.com/webpack#sponsor) and get your logo on our README on GitHub with a link to your site.
402
396
 
@@ -435,7 +429,7 @@ Before we started using OpenCollective, donations were made anonymously. Now tha
435
429
 
436
430
  </div>
437
431
 
438
- <h3>Bronze Sponsors</h3>
432
+ ### Bronze Sponsors
439
433
 
440
434
  [Become a bronze sponsor](https://opencollective.com/webpack#sponsor) and get your logo on our README on GitHub with a link to your site.
441
435
 
@@ -545,7 +539,7 @@ Before we started using OpenCollective, donations were made anonymously. Now tha
545
539
 
546
540
  </div>
547
541
 
548
- <h3>Backers</h3>
542
+ ### Backers
549
543
 
550
544
  [Become a backer](https://opencollective.com/webpack#backer) and get your image on our README on GitHub with a link to your site.
551
545
 
@@ -651,7 +645,8 @@ Before we started using OpenCollective, donations were made anonymously. Now tha
651
645
  <a href="https://opencollective.com/webpack/backer/99/website?requireActive=false" target="_blank"><img width="30" src="https://opencollective.com/webpack/backer/99/avatar.svg?requireActive=false"></a>
652
646
  <a href="https://opencollective.com/webpack/backer/100/website?requireActive=false" target="_blank"><img width="30" src="https://opencollective.com/webpack/backer/100/avatar.svg?requireActive=false"></a>
653
647
 
654
- <h2>Special Thanks to</h2>
648
+ ## Special Thanks to
649
+
655
650
  <p>(In chronological order)</p>
656
651
 
657
652
  - [@google](https://github.com/google) for [Google Web Toolkit (GWT)](http://www.gwtproject.org/), which aims to compile Java to JavaScript. It features a similar [Code Splitting](http://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html) as webpack.
package/lib/APIPlugin.js CHANGED
@@ -5,7 +5,9 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const InitFragment = require("./InitFragment");
8
+ const {
9
+ getExternalModuleNodeCommonjsInitFragment
10
+ } = require("./ExternalModule");
9
11
  const {
10
12
  JAVASCRIPT_MODULE_TYPE_AUTO,
11
13
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
@@ -30,11 +32,9 @@ const GetFullHashRuntimeModule = require("./runtime/GetFullHashRuntimeModule");
30
32
  /** @typedef {import("./javascript/JavascriptParser").Range} Range */
31
33
 
32
34
  /**
33
- * @param {boolean | undefined} module true if ES module
34
- * @param {string} importMetaName `import.meta` name
35
35
  * @returns {Record<string, {expr: string, req: string[] | null, type?: string, assign: boolean}>} replacements
36
36
  */
37
- function getReplacements(module, importMetaName) {
37
+ function getReplacements() {
38
38
  return {
39
39
  __webpack_require__: {
40
40
  expr: RuntimeGlobals.require,
@@ -67,9 +67,7 @@ function getReplacements(module, importMetaName) {
67
67
  assign: true
68
68
  },
69
69
  __non_webpack_require__: {
70
- expr: module
71
- ? `__WEBPACK_EXTERNAL_createRequire(${importMetaName}.url)`
72
- : "require",
70
+ expr: "require",
73
71
  req: null,
74
72
  type: undefined, // type is not known, depends on environment
75
73
  assign: true
@@ -132,19 +130,7 @@ function getReplacements(module, importMetaName) {
132
130
 
133
131
  const PLUGIN_NAME = "APIPlugin";
134
132
 
135
- /**
136
- * @typedef {object} APIPluginOptions
137
- * @property {boolean=} module the output filename
138
- */
139
-
140
133
  class APIPlugin {
141
- /**
142
- * @param {APIPluginOptions=} options options
143
- */
144
- constructor(options = {}) {
145
- this.options = options;
146
- }
147
-
148
134
  /**
149
135
  * Apply the plugin
150
136
  * @param {Compiler} compiler the compiler instance
@@ -154,13 +140,15 @@ class APIPlugin {
154
140
  compiler.hooks.compilation.tap(
155
141
  PLUGIN_NAME,
156
142
  (compilation, { normalModuleFactory }) => {
157
- const importMetaName = /** @type {string} */ (
158
- compilation.outputOptions.importMetaName
159
- );
160
- const REPLACEMENTS = getReplacements(
161
- this.options.module,
162
- importMetaName
163
- );
143
+ const moduleOutput = compilation.options.output.module;
144
+ const nodeTarget = compiler.platform.node;
145
+ const nodeEsm = moduleOutput && nodeTarget;
146
+
147
+ const REPLACEMENTS = getReplacements();
148
+ if (nodeEsm) {
149
+ REPLACEMENTS.__non_webpack_require__.expr =
150
+ "__WEBPACK_EXTERNAL_createRequire_require";
151
+ }
164
152
 
165
153
  compilation.dependencyTemplates.set(
166
154
  ConstDependency,
@@ -191,13 +179,8 @@ class APIPlugin {
191
179
  (source, module, renderContext) => {
192
180
  if (/** @type {BuildInfo} */ (module.buildInfo).needCreateRequire) {
193
181
  const chunkInitFragments = [
194
- new InitFragment(
195
- `import { createRequire as __WEBPACK_EXTERNAL_createRequire } from ${renderContext.runtimeTemplate.renderNodePrefixForCoreModule(
196
- "module"
197
- )};\n`,
198
- InitFragment.STAGE_HARMONY_IMPORTS,
199
- 0,
200
- "external module node-commonjs"
182
+ getExternalModuleNodeCommonjsInitFragment(
183
+ renderContext.runtimeTemplate
201
184
  )
202
185
  ];
203
186
 
@@ -217,9 +200,20 @@ class APIPlugin {
217
200
  parser.hooks.expression.for(key).tap(PLUGIN_NAME, (expression) => {
218
201
  const dep = toConstantDependency(parser, info.expr, info.req);
219
202
 
220
- if (key === "__non_webpack_require__" && this.options.module) {
221
- /** @type {BuildInfo} */
222
- (parser.state.module.buildInfo).needCreateRequire = true;
203
+ if (key === "__non_webpack_require__" && moduleOutput) {
204
+ if (nodeTarget) {
205
+ /** @type {BuildInfo} */
206
+ (parser.state.module.buildInfo).needCreateRequire = true;
207
+ } else {
208
+ const warning = new WebpackError(
209
+ `${PLUGIN_NAME}\n__non_webpack_require__ is only allowed in target node`
210
+ );
211
+ warning.loc = /** @type {DependencyLocation} */ (
212
+ expression.loc
213
+ );
214
+ warning.module = parser.state.module;
215
+ compilation.warnings.push(warning);
216
+ }
223
217
  }
224
218
 
225
219
  return dep(expression);
@@ -8,13 +8,10 @@
8
8
  const DependenciesBlock = require("./DependenciesBlock");
9
9
  const makeSerializable = require("./util/makeSerializable");
10
10
 
11
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
12
- /** @typedef {import("./ChunkGroup")} ChunkGroup */
13
11
  /** @typedef {import("./ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
14
12
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
15
13
  /** @typedef {import("./Dependency").UpdateHashContext} UpdateHashContext */
16
14
  /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
17
- /** @typedef {import("./Module")} Module */
18
15
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
19
16
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
20
17
  /** @typedef {import("./util/Hash")} Hash */
@@ -41,7 +38,7 @@ class AsyncDependenciesBlock extends DependenciesBlock {
41
38
  }
42
39
 
43
40
  /**
44
- * @returns {string | null | undefined} The name of the chunk
41
+ * @returns {ChunkGroupOptions["name"]} The name of the chunk
45
42
  */
46
43
  get chunkName() {
47
44
  return this.groupOptions.name;
@@ -13,7 +13,6 @@ const createSchemaValidation = require("./util/create-schema-validation");
13
13
 
14
14
  /** @typedef {import("../declarations/plugins/BannerPlugin").BannerFunction} BannerFunction */
15
15
  /** @typedef {import("../declarations/plugins/BannerPlugin").BannerPluginArgument} BannerPluginArgument */
16
- /** @typedef {import("../declarations/plugins/BannerPlugin").BannerPluginOptions} BannerPluginOptions */
17
16
  /** @typedef {import("./Compilation").PathData} PathData */
18
17
  /** @typedef {import("./Compiler")} Compiler */
19
18
  /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
package/lib/Cache.js CHANGED
@@ -29,16 +29,17 @@ const {
29
29
  /** @typedef {EXPECTED_ANY} Data */
30
30
 
31
31
  /**
32
+ * @template T
32
33
  * @callback GotHandler
33
- * @param {TODO} result
34
- * @param {(err?: Error) => void} callback
34
+ * @param {T} result
35
+ * @param {() => void} callback
35
36
  * @returns {void}
36
37
  */
37
38
 
38
39
  /**
39
40
  * @param {number} times times
40
- * @param {(err?: Error) => void} callback callback
41
- * @returns {(err?: Error) => void} callback
41
+ * @param {(err?: Error | null) => void} callback callback
42
+ * @returns {(err?: Error | null) => void} callback
42
43
  */
43
44
  const needCalls = (times, callback) => (err) => {
44
45
  if (--times === 0) {
@@ -53,7 +54,7 @@ const needCalls = (times, callback) => (err) => {
53
54
  class Cache {
54
55
  constructor() {
55
56
  this.hooks = {
56
- /** @type {AsyncSeriesBailHook<[string, Etag | null, GotHandler[]], Data>} */
57
+ /** @type {AsyncSeriesBailHook<[string, Etag | null, GotHandler<EXPECTED_ANY>[]], Data>} */
57
58
  get: new AsyncSeriesBailHook(["identifier", "etag", "gotHandlers"]),
58
59
  /** @type {AsyncParallelHook<[string, Etag | null, Data]>} */
59
60
  store: new AsyncParallelHook(["identifier", "etag", "data"]),
@@ -76,7 +77,7 @@ class Cache {
76
77
  * @returns {void}
77
78
  */
78
79
  get(identifier, etag, callback) {
79
- /** @type {GotHandler[]} */
80
+ /** @type {GotHandler<T>[]} */
80
81
  const gotHandlers = [];
81
82
  this.hooks.get.callAsync(identifier, etag, gotHandlers, (err, result) => {
82
83
  if (err) {
@@ -12,7 +12,6 @@ const mergeEtags = require("./cache/mergeEtags");
12
12
 
13
13
  /** @typedef {import("./Cache")} Cache */
14
14
  /** @typedef {import("./Cache").Etag} Etag */
15
- /** @typedef {import("./WebpackError")} WebpackError */
16
15
  /** @typedef {import("./cache/getLazyHashedEtag").HashableObject} HashableObject */
17
16
  /** @typedef {typeof import("./util/Hash")} HashConstructor */
18
17
 
package/lib/Chunk.js CHANGED
@@ -18,48 +18,56 @@ const {
18
18
  const { createArrayToSetDeprecationSet } = require("./util/deprecation");
19
19
  const { mergeRuntime } = require("./util/runtime");
20
20
 
21
- /** @typedef {import("webpack-sources").Source} Source */
22
21
  /** @typedef {import("./ChunkGraph").ChunkFilterPredicate} ChunkFilterPredicate */
23
22
  /** @typedef {import("./ChunkGraph").ChunkSizeOptions} ChunkSizeOptions */
24
23
  /** @typedef {import("./ChunkGraph").ModuleFilterPredicate} ModuleFilterPredicate */
25
24
  /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
26
25
  /** @typedef {import("./ChunkGroup")} ChunkGroup */
27
26
  /** @typedef {import("./ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */
28
- /** @typedef {import("./Compilation")} Compilation */
29
- /** @typedef {import("./Compilation").AssetInfo} AssetInfo */
30
27
  /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
31
28
  /** @typedef {import("./Module")} Module */
32
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
33
29
  /** @typedef {import("./TemplatedPathPlugin").TemplatePath} TemplatePath */
34
30
  /** @typedef {import("./util/Hash")} Hash */
35
31
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
36
32
 
37
33
  /** @typedef {string | null} ChunkName */
38
- /** @typedef {number | string} ChunkId */
34
+ /** @typedef {string | number} ChunkId */
39
35
  /** @typedef {SortableSet<string>} IdNameHints */
40
36
 
41
37
  const ChunkFilesSet = createArrayToSetDeprecationSet("chunk.files");
42
38
 
43
39
  /**
44
- * @typedef {object} WithId an object who has an id property *
45
- * @property {string | number} id the id of the object
40
+ * @deprecated
41
+ * @typedef {object} ChunkMaps
42
+ * @property {Record<ChunkId, string>} hash
43
+ * @property {Record<ChunkId, Record<string, string>>} contentHash
44
+ * @property {Record<ChunkId, string>} name
46
45
  */
47
46
 
48
47
  /**
49
48
  * @deprecated
50
- * @typedef {object} ChunkMaps
51
- * @property {Record<string | number, string>} hash
52
- * @property {Record<string | number, Record<string, string>>} contentHash
53
- * @property {Record<string | number, string>} name
49
+ * @typedef {Record<ChunkId, ChunkId[]>} ChunkModuleIdMap
50
+ */
51
+
52
+ /**
53
+ * @deprecated
54
+ * @typedef {Record<ModuleId, string>} chunkModuleHashMap
54
55
  */
55
56
 
56
57
  /**
57
58
  * @deprecated
58
59
  * @typedef {object} ChunkModuleMaps
59
- * @property {Record<string|number, (string|number)[]>} id
60
- * @property {Record<string|number, string>} hash
60
+ * @property {ChunkModuleIdMap} id
61
+ * @property {chunkModuleHashMap} hash
61
62
  */
62
63
 
64
+ /** @typedef {Set<Chunk>} Chunks */
65
+ /** @typedef {Set<Entrypoint>} Entrypoints */
66
+ /** @typedef {Set<ChunkGroup>} Queue */
67
+ /** @typedef {SortableSet<ChunkGroup>} SortableChunkGroups */
68
+ /** @typedef {Record<string, ChunkId[]>} ChunkChildIdsByOrdersMap */
69
+ /** @typedef {Record<string, ChunkChildIdsByOrdersMap>} ChunkChildIdsByOrdersMapByData */
70
+
63
71
  let debugId = 1000;
64
72
 
65
73
  /**
@@ -90,7 +98,7 @@ class Chunk {
90
98
  this.cssFilenameTemplate = undefined;
91
99
  /**
92
100
  * @private
93
- * @type {SortableSet<ChunkGroup>}
101
+ * @type {SortableChunkGroups}
94
102
  */
95
103
  this._groups = new SortableSet(undefined, compareChunkGroupsByIndex);
96
104
  /** @type {RuntimeSpec} */
@@ -353,9 +361,9 @@ class Chunk {
353
361
  "Chunk.getChunkModuleMaps",
354
362
  "DEP_WEBPACK_CHUNK_GET_CHUNK_MODULE_MAPS"
355
363
  );
356
- /** @type {Record<string|number, (string|number)[]>} */
364
+ /** @type {ChunkModuleIdMap} */
357
365
  const chunkModuleIdMap = Object.create(null);
358
- /** @type {Record<string|number, string>} */
366
+ /** @type {chunkModuleHashMap} */
359
367
  const chunkModuleHashMap = Object.create(null);
360
368
 
361
369
  for (const asyncChunk of this.getAllAsyncChunks()) {
@@ -408,11 +416,11 @@ class Chunk {
408
416
  * @returns {ChunkMaps} the chunk map information
409
417
  */
410
418
  getChunkMaps(realHash) {
411
- /** @type {Record<string|number, string>} */
419
+ /** @type {Record<ChunkId, string>} */
412
420
  const chunkHashMap = Object.create(null);
413
- /** @type {Record<string|number, Record<string, string>>} */
421
+ /** @type {Record<string, Record<ChunkId, string>>} */
414
422
  const chunkContentHashMap = Object.create(null);
415
- /** @type {Record<string|number, string>} */
423
+ /** @type {Record<ChunkId, string>} */
416
424
  const chunkNameMap = Object.create(null);
417
425
 
418
426
  for (const chunk of this.getAllAsyncChunks()) {
@@ -519,7 +527,7 @@ class Chunk {
519
527
  }
520
528
 
521
529
  /**
522
- * @returns {SortableSet<ChunkGroup>} the chunkGroups that the said chunk is referenced in
530
+ * @returns {SortableChunkGroups} the chunkGroups that the said chunk is referenced in
523
531
  */
524
532
  get groupsIterable() {
525
533
  this._groups.sort();
@@ -576,16 +584,19 @@ class Chunk {
576
584
  }
577
585
 
578
586
  /**
579
- * @returns {Set<Chunk>} a set of all the async chunks
587
+ * @returns {Chunks} a set of all the async chunks
580
588
  */
581
589
  getAllAsyncChunks() {
590
+ /** @type {Queue} */
582
591
  const queue = new Set();
592
+ /** @type {Chunks} */
583
593
  const chunks = new Set();
584
594
 
585
595
  const initialChunks = intersect(
586
596
  Array.from(this.groupsIterable, (g) => new Set(g.chunks))
587
597
  );
588
598
 
599
+ /** @type {Queue} */
589
600
  const initialQueue = new Set(this.groupsIterable);
590
601
 
591
602
  for (const chunkGroup of initialQueue) {
@@ -613,10 +624,12 @@ class Chunk {
613
624
  }
614
625
 
615
626
  /**
616
- * @returns {Set<Chunk>} a set of all the initial chunks (including itself)
627
+ * @returns {Chunks} a set of all the initial chunks (including itself)
617
628
  */
618
629
  getAllInitialChunks() {
630
+ /** @type {Chunks} */
619
631
  const chunks = new Set();
632
+ /** @type {Queue} */
620
633
  const queue = new Set(this.groupsIterable);
621
634
  for (const group of queue) {
622
635
  if (group.isInitial()) {
@@ -628,10 +641,12 @@ class Chunk {
628
641
  }
629
642
 
630
643
  /**
631
- * @returns {Set<Chunk>} a set of all the referenced chunks (including itself)
644
+ * @returns {Chunks} a set of all the referenced chunks (including itself)
632
645
  */
633
646
  getAllReferencedChunks() {
647
+ /** @type {Queue} */
634
648
  const queue = new Set(this.groupsIterable);
649
+ /** @type {Chunks} */
635
650
  const chunks = new Set();
636
651
 
637
652
  for (const chunkGroup of queue) {
@@ -647,15 +662,17 @@ class Chunk {
647
662
  }
648
663
 
649
664
  /**
650
- * @returns {Set<Entrypoint>} a set of all the referenced entrypoints
665
+ * @returns {Entrypoints} a set of all the referenced entrypoints
651
666
  */
652
667
  getAllReferencedAsyncEntrypoints() {
668
+ /** @type {Queue} */
653
669
  const queue = new Set(this.groupsIterable);
670
+ /** @type {Entrypoints} */
654
671
  const entrypoints = new Set();
655
672
 
656
673
  for (const chunkGroup of queue) {
657
674
  for (const entrypoint of chunkGroup.asyncEntrypointsIterable) {
658
- entrypoints.add(entrypoint);
675
+ entrypoints.add(/** @type {Entrypoint} */ (entrypoint));
659
676
  }
660
677
  for (const child of chunkGroup.childrenIterable) {
661
678
  queue.add(child);
@@ -669,6 +686,7 @@ class Chunk {
669
686
  * @returns {boolean} true, if the chunk references async chunks
670
687
  */
671
688
  hasAsyncChunks() {
689
+ /** @type {Queue} */
672
690
  const queue = new Set();
673
691
 
674
692
  const initialChunks = intersect(
@@ -730,7 +748,7 @@ class Chunk {
730
748
  }
731
749
  }
732
750
  }
733
- /** @type {Record<string, (string | number)[]>} */
751
+ /** @type {Record<string, ChunkId[]>} */
734
752
  const result = Object.create(null);
735
753
  for (const [name, list] of lists) {
736
754
  list.sort((a, b) => {
@@ -756,7 +774,7 @@ class Chunk {
756
774
  /**
757
775
  * @param {ChunkGraph} chunkGraph the chunk graph
758
776
  * @param {string} type option name
759
- * @returns {{ onChunks: Chunk[], chunks: Set<Chunk> }[] | undefined} referenced chunks for a specific type
777
+ * @returns {{ onChunks: Chunk[], chunks: Chunks }[] | undefined} referenced chunks for a specific type
760
778
  */
761
779
  getChildrenOfTypeInOrder(chunkGraph, type) {
762
780
  const list = [];
@@ -802,10 +820,10 @@ class Chunk {
802
820
  * @param {ChunkGraph} chunkGraph the chunk graph
803
821
  * @param {boolean=} includeDirectChildren include direct children (by default only children of async children are included)
804
822
  * @param {ChunkFilterPredicate=} filterFn function used to filter chunks
805
- * @returns {Record<string|number, Record<string, (string | number)[]>>} a record object of names to lists of child ids(?) by chunk id
823
+ * @returns {ChunkChildIdsByOrdersMapByData} a record object of names to lists of child ids(?) by chunk id
806
824
  */
807
825
  getChildIdsByOrdersMap(chunkGraph, includeDirectChildren, filterFn) {
808
- /** @type {Record<string|number, Record<string, (string | number)[]>>} */
826
+ /** @type {ChunkChildIdsByOrdersMapByData} */
809
827
  const chunkMaps = Object.create(null);
810
828
 
811
829
  /**
@@ -824,7 +842,7 @@ class Chunk {
824
842
  };
825
843
 
826
844
  if (includeDirectChildren) {
827
- /** @type {Set<Chunk>} */
845
+ /** @type {Chunks} */
828
846
  const chunks = new Set();
829
847
  for (const chunkGroup of this.groupsIterable) {
830
848
  for (const chunk of chunkGroup.chunks) {
@@ -852,7 +870,7 @@ class Chunk {
852
870
  */
853
871
  hasChildByOrder(chunkGraph, type, includeDirectChildren, filterFn) {
854
872
  if (includeDirectChildren) {
855
- /** @type {Set<Chunk>} */
873
+ /** @type {Chunks} */
856
874
  const chunks = new Set();
857
875
  for (const chunkGroup of this.groupsIterable) {
858
876
  for (const chunk of chunkGroup.chunks) {