webpack 5.101.3 → 5.102.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/README.md +21 -26
  2. package/lib/APIPlugin.js +30 -36
  3. package/lib/AsyncDependenciesBlock.js +1 -4
  4. package/lib/BannerPlugin.js +0 -1
  5. package/lib/Cache.js +7 -6
  6. package/lib/CacheFacade.js +0 -1
  7. package/lib/Chunk.js +49 -31
  8. package/lib/ChunkGraph.js +35 -25
  9. package/lib/ChunkGroup.js +8 -10
  10. package/lib/ChunkTemplate.js +1 -1
  11. package/lib/CleanPlugin.js +3 -3
  12. package/lib/CodeGenerationResults.js +2 -1
  13. package/lib/CompatibilityPlugin.js +29 -12
  14. package/lib/Compilation.js +204 -185
  15. package/lib/Compiler.js +36 -35
  16. package/lib/ConcatenationScope.js +6 -1
  17. package/lib/ConditionalInitFragment.js +1 -1
  18. package/lib/ConstPlugin.js +6 -5
  19. package/lib/ContextExclusionPlugin.js +0 -1
  20. package/lib/ContextModule.js +22 -20
  21. package/lib/ContextModuleFactory.js +30 -11
  22. package/lib/ContextReplacementPlugin.js +38 -15
  23. package/lib/DefinePlugin.js +4 -8
  24. package/lib/DelegatedModule.js +7 -11
  25. package/lib/DependenciesBlock.js +0 -2
  26. package/lib/Dependency.js +9 -11
  27. package/lib/DependencyTemplates.js +1 -3
  28. package/lib/DllModule.js +1 -7
  29. package/lib/DllReferencePlugin.js +2 -4
  30. package/lib/DynamicEntryPlugin.js +0 -2
  31. package/lib/EntryOptionPlugin.js +0 -5
  32. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  33. package/lib/EvalDevToolModulePlugin.js +4 -3
  34. package/lib/EvalSourceMapDevToolPlugin.js +3 -4
  35. package/lib/ExportsInfo.js +50 -49
  36. package/lib/ExternalModule.js +84 -52
  37. package/lib/ExternalModuleFactoryPlugin.js +27 -7
  38. package/lib/ExternalsPlugin.js +24 -17
  39. package/lib/FileSystemInfo.js +96 -78
  40. package/lib/FlagDependencyUsagePlugin.js +3 -4
  41. package/lib/Generator.js +2 -13
  42. package/lib/GraphHelpers.js +0 -3
  43. package/lib/HookWebpackError.js +0 -2
  44. package/lib/HotModuleReplacementPlugin.js +22 -24
  45. package/lib/HotUpdateChunk.js +0 -3
  46. package/lib/IgnorePlugin.js +5 -2
  47. package/lib/InitFragment.js +41 -29
  48. package/lib/InvalidDependenciesModuleWarning.js +0 -1
  49. package/lib/LibManifestPlugin.js +4 -6
  50. package/lib/LoaderOptionsPlugin.js +1 -10
  51. package/lib/MainTemplate.js +8 -19
  52. package/lib/Module.js +32 -20
  53. package/lib/ModuleFactory.js +1 -1
  54. package/lib/ModuleFilenameHelpers.js +41 -24
  55. package/lib/ModuleGraph.js +30 -16
  56. package/lib/ModuleInfoHeaderPlugin.js +0 -1
  57. package/lib/ModuleTemplate.js +0 -2
  58. package/lib/ModuleTypeConstants.js +11 -1
  59. package/lib/MultiCompiler.js +23 -15
  60. package/lib/MultiWatching.js +6 -10
  61. package/lib/NodeStuffPlugin.js +2 -10
  62. package/lib/NormalModule.js +145 -88
  63. package/lib/NormalModuleFactory.js +59 -40
  64. package/lib/OptionsApply.js +1 -1
  65. package/lib/Parser.js +1 -1
  66. package/lib/ProgressPlugin.js +6 -10
  67. package/lib/ProvidePlugin.js +5 -7
  68. package/lib/RawModule.js +1 -6
  69. package/lib/RecordIdsPlugin.js +10 -6
  70. package/lib/ResolverFactory.js +0 -2
  71. package/lib/RuntimeGlobals.js +5 -0
  72. package/lib/RuntimeModule.js +1 -3
  73. package/lib/RuntimePlugin.js +26 -22
  74. package/lib/RuntimeTemplate.js +12 -11
  75. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -2
  76. package/lib/SourceMapDevToolPlugin.js +6 -11
  77. package/lib/Stats.js +0 -1
  78. package/lib/Template.js +6 -11
  79. package/lib/TemplatedPathPlugin.js +2 -1
  80. package/lib/WatchIgnorePlugin.js +2 -3
  81. package/lib/Watching.js +15 -15
  82. package/lib/WebpackIsIncludedPlugin.js +0 -2
  83. package/lib/WebpackOptionsApply.js +74 -107
  84. package/lib/asset/AssetBytesGenerator.js +166 -0
  85. package/lib/asset/AssetBytesParser.js +37 -0
  86. package/lib/asset/AssetGenerator.js +20 -34
  87. package/lib/asset/AssetModulesPlugin.js +34 -16
  88. package/lib/asset/AssetParser.js +7 -3
  89. package/lib/asset/AssetSourceGenerator.js +1 -1
  90. package/lib/asset/RawDataUrlModule.js +3 -2
  91. package/lib/async-modules/AsyncModuleHelpers.js +6 -4
  92. package/lib/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/config/defaults.js +155 -21
  98. package/lib/config/normalization.js +18 -3
  99. package/lib/container/ContainerEntryDependency.js +0 -1
  100. package/lib/container/ContainerEntryModule.js +3 -7
  101. package/lib/container/ContainerPlugin.js +1 -2
  102. package/lib/container/ContainerReferencePlugin.js +0 -1
  103. package/lib/container/FallbackDependency.js +2 -1
  104. package/lib/container/FallbackModule.js +6 -7
  105. package/lib/container/ModuleFederationPlugin.js +0 -1
  106. package/lib/container/RemoteModule.js +8 -8
  107. package/lib/container/RemoteRuntimeModule.js +2 -2
  108. package/lib/css/CssGenerator.js +3 -6
  109. package/lib/css/CssLoadingRuntimeModule.js +6 -9
  110. package/lib/css/CssModulesPlugin.js +11 -13
  111. package/lib/css/CssParser.js +3 -3
  112. package/lib/css/walkCssTokens.js +1 -1
  113. package/lib/debug/ProfilingPlugin.js +35 -8
  114. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -17
  115. package/lib/dependencies/AMDPlugin.js +2 -2
  116. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -2
  117. package/lib/dependencies/CachedConstDependency.js +0 -4
  118. package/lib/dependencies/CommonJsExportRequireDependency.js +20 -14
  119. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  120. package/lib/dependencies/CommonJsExportsParserPlugin.js +20 -5
  121. package/lib/dependencies/CommonJsFullRequireDependency.js +6 -4
  122. package/lib/dependencies/CommonJsImportsParserPlugin.js +16 -7
  123. package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
  124. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  125. package/lib/dependencies/ConstDependency.js +2 -2
  126. package/lib/dependencies/ContextDependency.js +9 -4
  127. package/lib/dependencies/ContextDependencyHelpers.js +2 -2
  128. package/lib/dependencies/ContextDependencyTemplateAsId.js +9 -9
  129. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +9 -9
  130. package/lib/dependencies/ContextElementDependency.js +22 -11
  131. package/lib/dependencies/CssIcssImportDependency.js +0 -2
  132. package/lib/dependencies/CssIcssSymbolDependency.js +2 -2
  133. package/lib/dependencies/CssImportDependency.js +0 -8
  134. package/lib/dependencies/CssLocalIdentifierDependency.js +3 -4
  135. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -2
  136. package/lib/dependencies/CssUrlDependency.js +0 -6
  137. package/lib/dependencies/ExportsInfoDependency.js +7 -9
  138. package/lib/dependencies/ExternalModuleDependency.js +0 -3
  139. package/lib/dependencies/ExternalModuleInitFragment.js +1 -1
  140. package/lib/dependencies/HarmonyAcceptDependency.js +1 -1
  141. package/lib/dependencies/HarmonyAcceptImportDependency.js +0 -4
  142. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  143. package/lib/dependencies/HarmonyDetectionParserPlugin.js +0 -14
  144. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +3 -3
  145. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +4 -1
  146. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +29 -35
  147. package/lib/dependencies/HarmonyImportDependency.js +30 -14
  148. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +20 -23
  149. package/lib/dependencies/HarmonyImportSideEffectDependency.js +0 -4
  150. package/lib/dependencies/HarmonyImportSpecifierDependency.js +46 -31
  151. package/lib/dependencies/HarmonyModulesPlugin.js +3 -3
  152. package/lib/dependencies/ImportDependency.js +18 -6
  153. package/lib/dependencies/ImportEagerDependency.js +2 -3
  154. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +8 -5
  155. package/lib/dependencies/ImportMetaContextPlugin.js +0 -1
  156. package/lib/dependencies/ImportMetaPlugin.js +2 -1
  157. package/lib/dependencies/ImportParserPlugin.js +288 -45
  158. package/lib/dependencies/ImportWeakDependency.js +2 -3
  159. package/lib/dependencies/JsonExportsDependency.js +0 -1
  160. package/lib/dependencies/LoaderDependency.js +0 -3
  161. package/lib/dependencies/LoaderImportDependency.js +0 -3
  162. package/lib/dependencies/LoaderPlugin.js +11 -5
  163. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  164. package/lib/dependencies/ModuleDependency.js +3 -9
  165. package/lib/dependencies/NullDependency.js +2 -0
  166. package/lib/dependencies/ProvidedDependency.js +6 -8
  167. package/lib/dependencies/PureExpressionDependency.js +0 -1
  168. package/lib/dependencies/RequireEnsureDependenciesBlock.js +0 -1
  169. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -2
  170. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  171. package/lib/dependencies/RequireResolveDependency.js +2 -2
  172. package/lib/dependencies/RuntimeRequirementsDependency.js +2 -3
  173. package/lib/dependencies/StaticExportsDependency.js +3 -5
  174. package/lib/dependencies/URLDependency.js +2 -7
  175. package/lib/dependencies/URLPlugin.js +1 -2
  176. package/lib/dependencies/WebAssemblyExportImportedDependency.js +2 -2
  177. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  178. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  179. package/lib/dependencies/WorkerDependency.js +2 -3
  180. package/lib/dependencies/WorkerPlugin.js +3 -9
  181. package/lib/dependencies/processExportInfo.js +2 -3
  182. package/lib/esm/ModuleChunkFormatPlugin.js +0 -3
  183. package/lib/esm/ModuleChunkLoadingPlugin.js +2 -1
  184. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -7
  185. package/lib/hmr/LazyCompilationPlugin.js +6 -4
  186. package/lib/hmr/lazyCompilationBackend.js +13 -10
  187. package/lib/ids/DeterministicChunkIdsPlugin.js +0 -1
  188. package/lib/ids/NamedChunkIdsPlugin.js +1 -6
  189. package/lib/ids/NamedModuleIdsPlugin.js +1 -5
  190. package/lib/ids/NaturalChunkIdsPlugin.js +0 -1
  191. package/lib/ids/NaturalModuleIdsPlugin.js +0 -1
  192. package/lib/ids/OccurrenceChunkIdsPlugin.js +0 -1
  193. package/lib/ids/OccurrenceModuleIdsPlugin.js +0 -1
  194. package/lib/ids/SyncModuleIdsPlugin.js +4 -3
  195. package/lib/index.js +8 -7
  196. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -1
  197. package/lib/javascript/BasicEvaluatedExpression.js +13 -6
  198. package/lib/javascript/ChunkFormatHelpers.js +1 -1
  199. package/lib/javascript/CommonJsChunkFormatPlugin.js +0 -1
  200. package/lib/javascript/JavascriptGenerator.js +2 -3
  201. package/lib/javascript/JavascriptModulesPlugin.js +44 -21
  202. package/lib/javascript/JavascriptParser.js +119 -54
  203. package/lib/javascript/JavascriptParserHelpers.js +2 -2
  204. package/lib/javascript/StartupHelpers.js +2 -4
  205. package/lib/json/JsonData.js +1 -1
  206. package/lib/json/JsonGenerator.js +4 -5
  207. package/lib/json/JsonModulesPlugin.js +0 -3
  208. package/lib/json/JsonParser.js +4 -2
  209. package/lib/library/AbstractLibraryPlugin.js +2 -2
  210. package/lib/library/AmdLibraryPlugin.js +0 -1
  211. package/lib/library/AssignLibraryPlugin.js +23 -12
  212. package/lib/library/EnableLibraryPlugin.js +7 -11
  213. package/lib/library/ExportPropertyLibraryPlugin.js +8 -20
  214. package/lib/library/JsonpLibraryPlugin.js +5 -2
  215. package/lib/library/ModuleLibraryPlugin.js +88 -43
  216. package/lib/library/SystemLibraryPlugin.js +0 -1
  217. package/lib/library/UmdLibraryPlugin.js +12 -18
  218. package/lib/logging/Logger.js +12 -10
  219. package/lib/logging/createConsoleLogger.js +15 -14
  220. package/lib/logging/truncateArgs.js +1 -1
  221. package/lib/node/CommonJsChunkLoadingPlugin.js +2 -1
  222. package/lib/node/NodeWatchFileSystem.js +4 -4
  223. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
  224. package/lib/node/RequireChunkLoadingRuntimeModule.js +5 -2
  225. package/lib/node/nodeConsole.js +2 -2
  226. package/lib/optimize/AggressiveSplittingPlugin.js +2 -0
  227. package/lib/optimize/ConcatenatedModule.js +142 -100
  228. package/lib/optimize/InnerGraph.js +17 -11
  229. package/lib/optimize/InnerGraphPlugin.js +0 -3
  230. package/lib/optimize/ModuleConcatenationPlugin.js +3 -4
  231. package/lib/optimize/RuntimeChunkPlugin.js +0 -1
  232. package/lib/optimize/SideEffectsFlagPlugin.js +3 -10
  233. package/lib/optimize/SplitChunksPlugin.js +46 -40
  234. package/lib/performance/SizeLimitsPlugin.js +2 -1
  235. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  236. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +0 -2
  237. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +0 -1
  238. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  239. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  240. package/lib/rules/BasicMatcherRulePlugin.js +0 -2
  241. package/lib/rules/ObjectMatcherRulePlugin.js +0 -1
  242. package/lib/rules/RuleSetCompiler.js +8 -6
  243. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  244. package/lib/runtime/CompatRuntimeModule.js +0 -1
  245. package/lib/runtime/GetChunkFilenameRuntimeModule.js +8 -9
  246. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  247. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +1 -1
  248. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  249. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  250. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  251. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  252. package/lib/schemes/DataUriPlugin.js +2 -28
  253. package/lib/schemes/FileUriPlugin.js +5 -2
  254. package/lib/schemes/HttpUriPlugin.js +4 -2
  255. package/lib/schemes/VirtualUrlPlugin.js +11 -11
  256. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  257. package/lib/serialization/ObjectMiddleware.js +30 -19
  258. package/lib/serialization/SerializerMiddleware.js +1 -3
  259. package/lib/serialization/types.js +1 -1
  260. package/lib/sharing/ConsumeSharedModule.js +3 -5
  261. package/lib/sharing/ConsumeSharedPlugin.js +2 -4
  262. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -6
  263. package/lib/sharing/ProvideSharedModule.js +3 -7
  264. package/lib/sharing/SharePlugin.js +0 -2
  265. package/lib/sharing/ShareRuntimeModule.js +4 -1
  266. package/lib/sharing/resolveMatchedConfigs.js +14 -6
  267. package/lib/sharing/utils.js +0 -6
  268. package/lib/stats/DefaultStatsFactoryPlugin.js +178 -94
  269. package/lib/stats/DefaultStatsPresetPlugin.js +15 -9
  270. package/lib/stats/DefaultStatsPrinterPlugin.js +77 -113
  271. package/lib/stats/StatsFactory.js +14 -11
  272. package/lib/url/URLParserPlugin.js +2 -4
  273. package/lib/util/ArrayHelpers.js +4 -4
  274. package/lib/util/AsyncQueue.js +1 -0
  275. package/lib/util/LazySet.js +2 -2
  276. package/lib/util/StackedCacheMap.js +0 -2
  277. package/lib/util/TupleSet.js +9 -4
  278. package/lib/util/URLAbsoluteSpecifier.js +0 -1
  279. package/lib/util/WeakTupleMap.js +1 -1
  280. package/lib/util/chainedImports.js +3 -1
  281. package/lib/util/cleverMerge.js +15 -18
  282. package/lib/util/comparators.js +2 -4
  283. package/lib/util/compileBooleanMatcher.js +11 -9
  284. package/lib/util/concatenate.js +1 -2
  285. package/lib/util/create-schema-validation.js +0 -1
  286. package/lib/util/dataURL.js +39 -0
  287. package/lib/util/deprecation.js +29 -31
  288. package/lib/util/deterministicGrouping.js +34 -30
  289. package/lib/util/extractSourceMap.js +319 -0
  290. package/lib/util/findGraphRoots.js +15 -5
  291. package/lib/util/fs.js +29 -8
  292. package/lib/util/semver.js +9 -8
  293. package/lib/util/smartGrouping.js +41 -26
  294. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  295. package/lib/wasm/EnableWasmLoadingPlugin.js +3 -2
  296. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +5 -1
  297. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +2 -13
  298. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +2 -9
  299. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  300. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -4
  301. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -3
  302. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -4
  303. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +2 -7
  304. package/lib/wasm-sync/WebAssemblyParser.js +1 -4
  305. package/lib/web/JsonpChunkLoadingPlugin.js +2 -1
  306. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
  307. package/lib/web/JsonpTemplatePlugin.js +0 -1
  308. package/lib/webpack.js +21 -8
  309. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +2 -1
  310. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
  311. package/package.json +12 -12
  312. package/schemas/WebpackOptions.check.js +1 -1
  313. package/schemas/WebpackOptions.json +77 -93
  314. package/schemas/plugins/BannerPlugin.check.js +1 -1
  315. package/schemas/plugins/BannerPlugin.json +4 -0
  316. package/schemas/plugins/IgnorePlugin.json +1 -1
  317. package/schemas/plugins/ProgressPlugin.json +1 -1
  318. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  319. package/schemas/plugins/SourceMapDevToolPlugin.json +5 -1
  320. package/schemas/plugins/schemes/VirtualUrlPlugin.json +3 -3
  321. package/types.d.ts +1129 -530
  322. package/SECURITY.md +0 -9
@@ -17,6 +17,7 @@ const { sortWithSourceOrder } = require("./util/comparators");
17
17
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
18
18
  /** @typedef {import("./Dependency")} Dependency */
19
19
  /** @typedef {import("./ExportsInfo").ExportInfo} ExportInfo */
20
+ /** @typedef {import("./ExportsInfo").ExportInfoName} ExportInfoName */
20
21
  /** @typedef {import("./Module")} Module */
21
22
  /** @typedef {import("./ModuleProfile")} ModuleProfile */
22
23
  /** @typedef {import("./RequestShortener")} RequestShortener */
@@ -37,7 +38,7 @@ const EMPTY_SET = new Set();
37
38
  * @template {Module | null | undefined} T
38
39
  * @param {SortableSet<ModuleGraphConnection>} set input
39
40
  * @param {(connection: ModuleGraphConnection) => T} getKey function to extract key from connection
40
- * @returns {readonly Map<T, readonly ModuleGraphConnection[]>} mapped by key
41
+ * @returns {ReadonlyMap<T, ReadonlyArray<ModuleGraphConnection>>} mapped by key
41
42
  */
42
43
  const getConnectionsByKey = (set, getKey) => {
43
44
  const map = new Map();
@@ -68,20 +69,22 @@ const getConnectionsByKey = (set, getKey) => {
68
69
 
69
70
  /**
70
71
  * @param {SortableSet<ModuleGraphConnection>} set input
71
- * @returns {readonly Map<Module | undefined | null, readonly ModuleGraphConnection[]>} mapped by origin module
72
+ * @returns {ReadonlyMap<Module | undefined | null, ReadonlyArray<ModuleGraphConnection>>} mapped by origin module
72
73
  */
73
74
  const getConnectionsByOriginModule = (set) =>
74
75
  getConnectionsByKey(set, (connection) => connection.originModule);
75
76
 
76
77
  /**
77
78
  * @param {SortableSet<ModuleGraphConnection>} set input
78
- * @returns {readonly Map<Module | undefined, readonly ModuleGraphConnection[]>} mapped by module
79
+ * @returns {ReadonlyMap<Module | undefined, ReadonlyArray<ModuleGraphConnection>>} mapped by module
79
80
  */
80
81
  const getConnectionsByModule = (set) =>
81
82
  getConnectionsByKey(set, (connection) => connection.module);
82
83
 
83
84
  /** @typedef {SortableSet<ModuleGraphConnection>} IncomingConnections */
84
85
  /** @typedef {SortableSet<ModuleGraphConnection>} OutgoingConnections */
86
+ /** @typedef {Module | null | undefined} Issuer */
87
+ /** @typedef {(string | OptimizationBailoutFunction)[]} OptimizationBailouts */
85
88
 
86
89
  class ModuleGraphModule {
87
90
  constructor() {
@@ -89,9 +92,9 @@ class ModuleGraphModule {
89
92
  this.incomingConnections = new SortableSet();
90
93
  /** @type {OutgoingConnections | undefined} */
91
94
  this.outgoingConnections = undefined;
92
- /** @type {Module | null | undefined} */
95
+ /** @type {Issuer} */
93
96
  this.issuer = undefined;
94
- /** @type {(string | OptimizationBailoutFunction)[]} */
97
+ /** @type {OptimizationBailouts} */
95
98
  this.optimizationBailout = [];
96
99
  /** @type {ExportsInfo} */
97
100
  this.exports = new ExportsInfo();
@@ -113,7 +116,18 @@ class ModuleGraphModule {
113
116
  /** @typedef {(moduleGraphConnection: ModuleGraphConnection) => boolean} FilterConnection */
114
117
 
115
118
  /** @typedef {EXPECTED_OBJECT} MetaKey */
116
- /** @typedef {TODO} Meta */
119
+
120
+ /** @typedef {import("./dependencies/CommonJsExportRequireDependency").idsSymbol} CommonJsExportRequireDependencyIDsSymbol */
121
+ /** @typedef {import("./dependencies/HarmonyImportSpecifierDependency").idsSymbol} HarmonyImportSpecifierDependencyIDsSymbol */
122
+ /** @typedef {import("./dependencies/HarmonyExportImportedSpecifierDependency").idsSymbol} HarmonyExportImportedSpecifierDependencyIDsSymbol */
123
+
124
+ /**
125
+ * @typedef {object} KnownMeta
126
+ * @property {Map<Module, string>=} importVarMap
127
+ * @property {Map<Module, string>=} deferredImportVarMap
128
+ */
129
+
130
+ /** @typedef {KnownMeta & Record<CommonJsExportRequireDependencyIDsSymbol | HarmonyImportSpecifierDependencyIDsSymbol | HarmonyExportImportedSpecifierDependencyIDsSymbol, string[]> & Record<string, EXPECTED_ANY>} Meta */
117
131
 
118
132
  class ModuleGraph {
119
133
  constructor() {
@@ -567,7 +581,7 @@ class ModuleGraph {
567
581
 
568
582
  /**
569
583
  * @param {Module} module the module
570
- * @returns {readonly Map<Module | undefined | null, readonly ModuleGraphConnection[]>} reasons why a module is included, in a map by source module
584
+ * @returns {ReadonlyMap<Module | undefined | null, ReadonlyArray<ModuleGraphConnection>>} reasons why a module is included, in a map by source module
571
585
  */
572
586
  getIncomingConnectionsByOriginModule(module) {
573
587
  const connections = this._getModuleGraphModule(module).incomingConnections;
@@ -576,7 +590,7 @@ class ModuleGraph {
576
590
 
577
591
  /**
578
592
  * @param {Module} module the module
579
- * @returns {readonly Map<Module | undefined, readonly ModuleGraphConnection[]> | undefined} connections to modules, in a map by module
593
+ * @returns {ReadonlyMap<Module | undefined, ReadonlyArray<ModuleGraphConnection>> | undefined} connections to modules, in a map by module
580
594
  */
581
595
  getOutgoingConnectionsByModule(module) {
582
596
  const connections = this._getModuleGraphModule(module).outgoingConnections;
@@ -606,7 +620,7 @@ class ModuleGraph {
606
620
 
607
621
  /**
608
622
  * @param {Module} module the module
609
- * @returns {Module | null | undefined} the issuer module
623
+ * @returns {Issuer} the issuer module
610
624
  */
611
625
  getIssuer(module) {
612
626
  const mgm = this._getModuleGraphModule(module);
@@ -635,7 +649,7 @@ class ModuleGraph {
635
649
 
636
650
  /**
637
651
  * @param {Module} module the module
638
- * @returns {(string | OptimizationBailoutFunction)[]} optimization bailouts
652
+ * @returns {OptimizationBailouts} optimization bailouts
639
653
  */
640
654
  getOptimizationBailout(module) {
641
655
  const mgm = this._getModuleGraphModule(module);
@@ -644,7 +658,7 @@ class ModuleGraph {
644
658
 
645
659
  /**
646
660
  * @param {Module} module the module
647
- * @returns {true | string[] | null} the provided exports
661
+ * @returns {null | true | ExportInfoName[]} the provided exports
648
662
  */
649
663
  getProvidedExports(module) {
650
664
  const mgm = this._getModuleGraphModule(module);
@@ -653,7 +667,7 @@ class ModuleGraph {
653
667
 
654
668
  /**
655
669
  * @param {Module} module the module
656
- * @param {string | string[]} exportName a name of an export
670
+ * @param {ExportInfoName | ExportInfoName[]} exportName a name of an export
657
671
  * @returns {boolean | null} true, if the export is provided by the module.
658
672
  * null, if it's unknown.
659
673
  * false, if it's not provided.
@@ -851,7 +865,7 @@ class ModuleGraph {
851
865
  getMeta(thing) {
852
866
  let meta = this._metaMap.get(thing);
853
867
  if (meta === undefined) {
854
- meta = Object.create(null);
868
+ meta = /** @type {Meta} */ (Object.create(null));
855
869
  this._metaMap.set(thing, meta);
856
870
  }
857
871
  return meta;
@@ -879,10 +893,10 @@ class ModuleGraph {
879
893
  }
880
894
 
881
895
  /**
882
- * @template T
896
+ * @template {EXPECTED_ANY[]} T
883
897
  * @template R
884
- * @param {(moduleGraph: ModuleGraph, ...args: T[]) => R} fn computer
885
- * @param {...T} args arguments
898
+ * @param {(moduleGraph: ModuleGraph, ...args: T) => R} fn computer
899
+ * @param {T} args arguments
886
900
  * @returns {R} computed value or cached
887
901
  */
888
902
  cached(fn, ...args) {
@@ -18,7 +18,6 @@ const JavascriptModulesPlugin = require("./javascript/JavascriptModulesPlugin");
18
18
  /** @typedef {import("./Module")} Module */
19
19
  /** @typedef {import("./Module").BuildMeta} BuildMeta */
20
20
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
21
- /** @typedef {import("./ModuleTemplate")} ModuleTemplate */
22
21
  /** @typedef {import("./RequestShortener")} RequestShortener */
23
22
 
24
23
  /**
@@ -11,11 +11,9 @@ const memoize = require("./util/memoize");
11
11
  /** @typedef {import("tapable").Tap} Tap */
12
12
  /** @typedef {import("webpack-sources").Source} Source */
13
13
  /** @typedef {import("./Chunk")} Chunk */
14
- /** @typedef {import("./ChunkGraph")} ChunkGraph */
15
14
  /** @typedef {import("./Compilation")} Compilation */
16
15
  /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
17
16
  /** @typedef {import("./Module")} Module */
18
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
19
17
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
20
18
  /** @typedef {import("./javascript/JavascriptModulesPlugin").ChunkRenderContext} ChunkRenderContext */
21
19
  /** @typedef {import("./javascript/JavascriptModulesPlugin").ModuleRenderContext} ModuleRenderContext */
@@ -89,6 +89,12 @@ const ASSET_MODULE_TYPE_RESOURCE = "asset/resource";
89
89
  */
90
90
  const ASSET_MODULE_TYPE_SOURCE = "asset/source";
91
91
 
92
+ /**
93
+ * @type {Readonly<"asset/bytes">}
94
+ * This is the module type used for assets that are imported as Uint8Array.
95
+ */
96
+ const ASSET_MODULE_TYPE_BYTES = "asset/bytes";
97
+
92
98
  /**
93
99
  * @type {Readonly<"asset/raw-data-url">}
94
100
  * TODO: Document what this asset type is for. See css-loader tests for its usage.
@@ -137,17 +143,19 @@ const WEBPACK_MODULE_TYPE_LAZY_COMPILATION_PROXY = "lazy-compilation-proxy";
137
143
  /** @typedef {"javascript/auto" | "javascript/dynamic" | "javascript/esm"} JavaScriptModuleTypes */
138
144
  /** @typedef {"json"} JSONModuleType */
139
145
  /** @typedef {"webassembly/async" | "webassembly/sync"} WebAssemblyModuleTypes */
140
- /** @typedef {"css" | "css/global" | "css/module"} CSSModuleTypes */
146
+ /** @typedef {"css" | "css/global" | "css/module" | "css/auto"} CSSModuleTypes */
141
147
  /** @typedef {"asset" | "asset/inline" | "asset/resource" | "asset/source" | "asset/raw-data-url"} AssetModuleTypes */
142
148
  /** @typedef {"runtime" | "fallback-module" | "remote-module" | "provide-module" | "consume-shared-module" | "lazy-compilation-proxy"} WebpackModuleTypes */
143
149
  /** @typedef {string} UnknownModuleTypes */
144
150
  /** @typedef {JavaScriptModuleTypes | JSONModuleType | WebAssemblyModuleTypes | CSSModuleTypes | AssetModuleTypes | WebpackModuleTypes | UnknownModuleTypes} ModuleTypes */
145
151
 
146
152
  module.exports.ASSET_MODULE_TYPE = ASSET_MODULE_TYPE;
153
+ module.exports.ASSET_MODULE_TYPE_BYTES = ASSET_MODULE_TYPE_BYTES;
147
154
  module.exports.ASSET_MODULE_TYPE_INLINE = ASSET_MODULE_TYPE_INLINE;
148
155
  module.exports.ASSET_MODULE_TYPE_RAW_DATA_URL = ASSET_MODULE_TYPE_RAW_DATA_URL;
149
156
  module.exports.ASSET_MODULE_TYPE_RESOURCE = ASSET_MODULE_TYPE_RESOURCE;
150
157
  module.exports.ASSET_MODULE_TYPE_SOURCE = ASSET_MODULE_TYPE_SOURCE;
158
+ /** @type {CSSModuleTypes[]} */
151
159
  module.exports.CSS_MODULES = [
152
160
  CSS_MODULE_TYPE,
153
161
  CSS_MODULE_TYPE_GLOBAL,
@@ -158,6 +166,7 @@ module.exports.CSS_MODULE_TYPE = CSS_MODULE_TYPE;
158
166
  module.exports.CSS_MODULE_TYPE_AUTO = CSS_MODULE_TYPE_AUTO;
159
167
  module.exports.CSS_MODULE_TYPE_GLOBAL = CSS_MODULE_TYPE_GLOBAL;
160
168
  module.exports.CSS_MODULE_TYPE_MODULE = CSS_MODULE_TYPE_MODULE;
169
+ /** @type {JavaScriptModuleTypes[]} */
161
170
  module.exports.JAVASCRIPT_MODULES = [
162
171
  JAVASCRIPT_MODULE_TYPE_AUTO,
163
172
  JAVASCRIPT_MODULE_TYPE_DYNAMIC,
@@ -167,6 +176,7 @@ module.exports.JAVASCRIPT_MODULE_TYPE_AUTO = JAVASCRIPT_MODULE_TYPE_AUTO;
167
176
  module.exports.JAVASCRIPT_MODULE_TYPE_DYNAMIC = JAVASCRIPT_MODULE_TYPE_DYNAMIC;
168
177
  module.exports.JAVASCRIPT_MODULE_TYPE_ESM = JAVASCRIPT_MODULE_TYPE_ESM;
169
178
  module.exports.JSON_MODULE_TYPE = JSON_MODULE_TYPE;
179
+ /** @type {WebAssemblyModuleTypes[]} */
170
180
  module.exports.WEBASSEMBLY_MODULES = [
171
181
  WEBASSEMBLY_MODULE_TYPE_SYNC,
172
182
  WEBASSEMBLY_MODULE_TYPE_SYNC
@@ -14,30 +14,36 @@ const MultiWatching = require("./MultiWatching");
14
14
  const WebpackError = require("./WebpackError");
15
15
  const ArrayQueue = require("./util/ArrayQueue");
16
16
 
17
- /** @template T @typedef {import("tapable").AsyncSeriesHook<T>} AsyncSeriesHook<T> */
18
- /** @template T @template R @typedef {import("tapable").SyncBailHook<T, R>} SyncBailHook<T, R> */
19
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptions} WebpackOptions */
17
+ /**
18
+ * @template T
19
+ * @typedef {import("tapable").AsyncSeriesHook<T>} AsyncSeriesHook<T>
20
+ */
21
+ /**
22
+ * @template T
23
+ * @template R
24
+ * @typedef {import("tapable").SyncBailHook<T, R>} SyncBailHook<T, R>
25
+ */
26
+ /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
20
27
  /** @typedef {import("../declarations/WebpackOptions").WatchOptions} WatchOptions */
21
28
  /** @typedef {import("./Compiler")} Compiler */
29
+ /**
30
+ * @template T
31
+ * @template [R=void]
32
+ * @typedef {import("./webpack").Callback<T, R>} Callback
33
+ */
34
+ /** @typedef {import("./webpack").ErrorCallback} ErrorCallback */
22
35
  /** @typedef {import("./Stats")} Stats */
23
- /** @typedef {import("./Watching")} Watching */
24
36
  /** @typedef {import("./logging/Logger").Logger} Logger */
25
37
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
26
38
  /** @typedef {import("./util/fs").IntermediateFileSystem} IntermediateFileSystem */
27
39
  /** @typedef {import("./util/fs").OutputFileSystem} OutputFileSystem */
28
40
  /** @typedef {import("./util/fs").WatchFileSystem} WatchFileSystem */
29
41
 
30
- /**
31
- * @template T
32
- * @callback Callback
33
- * @param {Error | null} err
34
- * @param {T=} result
35
- */
36
-
37
42
  /**
38
43
  * @callback RunWithDependenciesHandler
39
44
  * @param {Compiler} compiler
40
45
  * @param {Callback<MultiStats>} callback
46
+ * @returns {void}
41
47
  */
42
48
 
43
49
  /**
@@ -581,11 +587,12 @@ module.exports = class MultiCompiler {
581
587
  /**
582
588
  * @param {WatchOptions | WatchOptions[]} watchOptions the watcher's options
583
589
  * @param {Callback<MultiStats>} handler signals when the call finishes
584
- * @returns {MultiWatching} a compiler watcher
590
+ * @returns {MultiWatching | undefined} a compiler watcher
585
591
  */
586
592
  watch(watchOptions, handler) {
587
593
  if (this.running) {
588
- return handler(new ConcurrentCompilationError());
594
+ handler(new ConcurrentCompilationError());
595
+ return;
589
596
  }
590
597
  this.running = true;
591
598
 
@@ -621,7 +628,8 @@ module.exports = class MultiCompiler {
621
628
  */
622
629
  run(callback) {
623
630
  if (this.running) {
624
- return callback(new ConcurrentCompilationError());
631
+ callback(new ConcurrentCompilationError());
632
+ return;
625
633
  }
626
634
  this.running = true;
627
635
 
@@ -649,7 +657,7 @@ module.exports = class MultiCompiler {
649
657
  }
650
658
 
651
659
  /**
652
- * @param {Callback<void>} callback signals when the compiler closes
660
+ * @param {ErrorCallback} callback signals when the compiler closes
653
661
  * @returns {void}
654
662
  */
655
663
  close(callback) {
@@ -9,13 +9,7 @@ const asyncLib = require("neo-async");
9
9
 
10
10
  /** @typedef {import("./MultiCompiler")} MultiCompiler */
11
11
  /** @typedef {import("./Watching")} Watching */
12
-
13
- /**
14
- * @template T
15
- * @callback Callback
16
- * @param {(Error | null)=} err
17
- * @param {T=} result
18
- */
12
+ /** @typedef {import("./webpack").ErrorCallback} ErrorCallback */
19
13
 
20
14
  class MultiWatching {
21
15
  /**
@@ -28,7 +22,7 @@ class MultiWatching {
28
22
  }
29
23
 
30
24
  /**
31
- * @param {Callback<void>=} callback signals when the build has completed again
25
+ * @param {ErrorCallback=} callback signals when the build has completed again
32
26
  * @returns {void}
33
27
  */
34
28
  invalidate(callback) {
@@ -36,7 +30,9 @@ class MultiWatching {
36
30
  asyncLib.each(
37
31
  this.watchings,
38
32
  (watching, callback) => watching.invalidate(callback),
39
- callback
33
+ (err) => {
34
+ callback(err);
35
+ }
40
36
  );
41
37
  } else {
42
38
  for (const watching of this.watchings) {
@@ -58,7 +54,7 @@ class MultiWatching {
58
54
  }
59
55
 
60
56
  /**
61
- * @param {Callback<void>} callback signals when the watcher is closed
57
+ * @param {ErrorCallback} callback signals when the watcher is closed
62
58
  * @returns {void}
63
59
  */
64
60
  close(callback) {
@@ -21,15 +21,11 @@ const {
21
21
  const { relative } = require("./util/fs");
22
22
  const { parseResource } = require("./util/identifier");
23
23
 
24
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
25
24
  /** @typedef {import("../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
26
25
  /** @typedef {import("../declarations/WebpackOptions").NodeOptions} NodeOptions */
27
26
  /** @typedef {import("./Compiler")} Compiler */
28
- /** @typedef {import("./Dependency")} Dependency */
29
27
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
30
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
31
28
  /** @typedef {import("./NormalModule")} NormalModule */
32
- /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
33
29
  /** @typedef {import("./javascript/JavascriptParser")} JavascriptParser */
34
30
  /** @typedef {import("./javascript/JavascriptParser").Range} Range */
35
31
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
@@ -188,9 +184,7 @@ class NodeStuffPlugin {
188
184
  );
189
185
  break;
190
186
  case "node-module": {
191
- const importMetaName =
192
- /** @type {string} */
193
- (compilation.outputOptions.importMetaName);
187
+ const importMetaName = compilation.outputOptions.importMetaName;
194
188
 
195
189
  setUrlModuleConstant(
196
190
  "__filename",
@@ -230,9 +224,7 @@ class NodeStuffPlugin {
230
224
  );
231
225
  break;
232
226
  case "node-module": {
233
- const importMetaName =
234
- /** @type {string} */
235
- (compilation.outputOptions.importMetaName);
227
+ const importMetaName = compilation.outputOptions.importMetaName;
236
228
 
237
229
  setUrlModuleConstant(
238
230
  "__dirname",