webpack 5.97.1 → 5.104.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 (610) hide show
  1. package/README.md +368 -434
  2. package/bin/webpack.js +15 -9
  3. package/hot/dev-server.js +18 -3
  4. package/hot/emitter-event-target.js +7 -0
  5. package/hot/lazy-compilation-node.js +45 -29
  6. package/hot/lazy-compilation-universal.js +18 -0
  7. package/hot/lazy-compilation-web.js +15 -5
  8. package/hot/load-http.js +7 -0
  9. package/hot/log.js +15 -15
  10. package/hot/only-dev-server.js +19 -4
  11. package/hot/poll.js +1 -0
  12. package/lib/APIPlugin.js +48 -50
  13. package/lib/AbstractMethodError.js +1 -0
  14. package/lib/AsyncDependenciesBlock.js +4 -5
  15. package/lib/AutomaticPrefetchPlugin.js +22 -22
  16. package/lib/BannerPlugin.js +35 -40
  17. package/lib/Cache.js +12 -9
  18. package/lib/CacheFacade.js +13 -13
  19. package/lib/CaseSensitiveModulesWarning.js +6 -6
  20. package/lib/Chunk.js +68 -47
  21. package/lib/ChunkGraph.js +174 -95
  22. package/lib/ChunkGroup.js +32 -24
  23. package/lib/ChunkTemplate.js +8 -8
  24. package/lib/CleanPlugin.js +90 -42
  25. package/lib/CodeGenerationResults.js +12 -9
  26. package/lib/CompatibilityPlugin.js +70 -21
  27. package/lib/Compilation.js +827 -550
  28. package/lib/Compiler.js +137 -109
  29. package/lib/ConcatenationScope.js +45 -8
  30. package/lib/ConditionalInitFragment.js +1 -1
  31. package/lib/ConstPlugin.js +89 -59
  32. package/lib/ContextExclusionPlugin.js +5 -4
  33. package/lib/ContextModule.js +66 -51
  34. package/lib/ContextModuleFactory.js +51 -30
  35. package/lib/ContextReplacementPlugin.js +89 -34
  36. package/lib/CssModule.js +8 -4
  37. package/lib/DefinePlugin.js +209 -57
  38. package/lib/DelegatedModule.js +34 -23
  39. package/lib/DelegatedModuleFactoryPlugin.js +27 -24
  40. package/lib/DelegatedPlugin.js +4 -2
  41. package/lib/DependenciesBlock.js +0 -2
  42. package/lib/Dependency.js +37 -19
  43. package/lib/DependencyTemplate.js +2 -0
  44. package/lib/DependencyTemplates.js +5 -6
  45. package/lib/DllEntryPlugin.js +8 -4
  46. package/lib/DllModule.js +11 -12
  47. package/lib/DllModuleFactory.js +2 -2
  48. package/lib/DllPlugin.js +9 -6
  49. package/lib/DllReferencePlugin.js +60 -65
  50. package/lib/DotenvPlugin.js +462 -0
  51. package/lib/DynamicEntryPlugin.js +8 -8
  52. package/lib/EntryOptionPlugin.js +8 -6
  53. package/lib/EntryPlugin.js +5 -3
  54. package/lib/Entrypoint.js +19 -0
  55. package/lib/EnvironmentNotSupportAsyncWarning.js +0 -3
  56. package/lib/EnvironmentPlugin.js +26 -19
  57. package/lib/ErrorHelpers.js +6 -6
  58. package/lib/EvalDevToolModulePlugin.js +17 -14
  59. package/lib/EvalSourceMapDevToolPlugin.js +156 -142
  60. package/lib/ExportsInfo.js +180 -115
  61. package/lib/ExportsInfoApiPlugin.js +2 -2
  62. package/lib/ExternalModule.js +256 -102
  63. package/lib/ExternalModuleFactoryPlugin.js +66 -29
  64. package/lib/ExternalsPlugin.js +57 -2
  65. package/lib/FileSystemInfo.js +313 -247
  66. package/lib/FlagAllModulesAsUsedPlugin.js +2 -2
  67. package/lib/FlagDependencyExportsPlugin.js +29 -19
  68. package/lib/FlagDependencyUsagePlugin.js +9 -10
  69. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  70. package/lib/Generator.js +43 -10
  71. package/lib/GraphHelpers.js +11 -3
  72. package/lib/HookWebpackError.js +35 -7
  73. package/lib/HotModuleReplacementPlugin.js +149 -108
  74. package/lib/HotUpdateChunk.js +0 -3
  75. package/lib/IgnoreErrorModuleFactory.js +2 -2
  76. package/lib/IgnorePlugin.js +16 -13
  77. package/lib/IgnoreWarningsPlugin.js +6 -4
  78. package/lib/InitFragment.js +41 -23
  79. package/lib/InvalidDependenciesModuleWarning.js +2 -3
  80. package/lib/JavascriptMetaInfoPlugin.js +2 -4
  81. package/lib/LibManifestPlugin.js +12 -13
  82. package/lib/LoaderOptionsPlugin.js +12 -14
  83. package/lib/LoaderTargetPlugin.js +5 -3
  84. package/lib/MainTemplate.js +18 -29
  85. package/lib/ManifestPlugin.js +235 -0
  86. package/lib/Module.js +138 -60
  87. package/lib/ModuleBuildError.js +4 -2
  88. package/lib/ModuleDependencyError.js +4 -3
  89. package/lib/ModuleDependencyWarning.js +4 -3
  90. package/lib/ModuleError.js +1 -1
  91. package/lib/ModuleFactory.js +10 -3
  92. package/lib/ModuleFilenameHelpers.js +63 -60
  93. package/lib/ModuleGraph.js +195 -70
  94. package/lib/ModuleGraphConnection.js +14 -20
  95. package/lib/ModuleInfoHeaderPlugin.js +15 -16
  96. package/lib/ModuleNotFoundError.js +1 -1
  97. package/lib/ModuleParseError.js +8 -4
  98. package/lib/ModuleSourceTypeConstants.js +189 -0
  99. package/lib/ModuleTemplate.js +7 -8
  100. package/lib/ModuleTypeConstants.js +37 -15
  101. package/lib/ModuleWarning.js +1 -1
  102. package/lib/MultiCompiler.js +64 -49
  103. package/lib/MultiStats.js +19 -14
  104. package/lib/MultiWatching.js +7 -11
  105. package/lib/NoEmitOnErrorsPlugin.js +5 -3
  106. package/lib/NodeStuffPlugin.js +438 -126
  107. package/lib/NormalModule.js +322 -201
  108. package/lib/NormalModuleFactory.js +230 -117
  109. package/lib/NormalModuleReplacementPlugin.js +37 -39
  110. package/lib/NullFactory.js +3 -2
  111. package/lib/OptimizationStages.js +1 -1
  112. package/lib/OptionsApply.js +1 -1
  113. package/lib/Parser.js +5 -3
  114. package/lib/PlatformPlugin.js +3 -1
  115. package/lib/PrefetchPlugin.js +6 -4
  116. package/lib/ProgressPlugin.js +48 -49
  117. package/lib/ProvidePlugin.js +7 -5
  118. package/lib/RawModule.js +26 -12
  119. package/lib/RecordIdsPlugin.js +88 -110
  120. package/lib/RequestShortener.js +3 -1
  121. package/lib/ResolverFactory.js +15 -14
  122. package/lib/RuntimeGlobals.js +216 -153
  123. package/lib/RuntimeModule.js +7 -6
  124. package/lib/RuntimePlugin.js +115 -62
  125. package/lib/RuntimeTemplate.js +248 -76
  126. package/lib/SelfModuleFactory.js +2 -2
  127. package/lib/SizeFormatHelpers.js +2 -2
  128. package/lib/SourceMapDevToolModuleOptionsPlugin.js +17 -27
  129. package/lib/SourceMapDevToolPlugin.js +72 -59
  130. package/lib/Stats.js +2 -3
  131. package/lib/Template.js +31 -24
  132. package/lib/TemplatedPathPlugin.js +24 -21
  133. package/lib/UseStrictPlugin.js +1 -1
  134. package/lib/WarnCaseSensitiveModulesPlugin.js +36 -37
  135. package/lib/WarnDeprecatedOptionPlugin.js +7 -8
  136. package/lib/WarnNoModeSetPlugin.js +3 -1
  137. package/lib/WatchIgnorePlugin.js +11 -9
  138. package/lib/Watching.js +27 -29
  139. package/lib/WebpackError.js +10 -3
  140. package/lib/WebpackIsIncludedPlugin.js +4 -5
  141. package/lib/WebpackOptionsApply.js +263 -135
  142. package/lib/asset/AssetBytesGenerator.js +171 -0
  143. package/lib/asset/AssetBytesParser.js +37 -0
  144. package/lib/asset/AssetGenerator.js +285 -223
  145. package/lib/asset/AssetModulesPlugin.js +103 -41
  146. package/lib/asset/AssetParser.js +7 -3
  147. package/lib/asset/AssetSourceGenerator.js +41 -17
  148. package/lib/asset/RawDataUrlModule.js +17 -9
  149. package/lib/async-modules/AsyncModuleHelpers.js +52 -0
  150. package/lib/async-modules/AwaitDependenciesInitFragment.js +39 -24
  151. package/lib/async-modules/InferAsyncModulesPlugin.js +25 -26
  152. package/lib/buildChunkGraph.js +36 -17
  153. package/lib/cache/AddBuildDependenciesPlugin.js +5 -6
  154. package/lib/cache/IdleFileCachePlugin.js +22 -20
  155. package/lib/cache/MemoryCachePlugin.js +3 -3
  156. package/lib/cache/MemoryWithGcCachePlugin.js +17 -11
  157. package/lib/cache/PackFileCacheStrategy.js +198 -170
  158. package/lib/cache/ResolverCachePlugin.js +58 -48
  159. package/lib/cache/getLazyHashedEtag.js +5 -4
  160. package/lib/cli.js +197 -39
  161. package/lib/config/browserslistTargetHandler.js +110 -85
  162. package/lib/config/defaults.js +514 -113
  163. package/lib/config/normalization.js +91 -64
  164. package/lib/config/target.js +30 -18
  165. package/lib/container/ContainerEntryDependency.js +0 -1
  166. package/lib/container/ContainerEntryModule.js +16 -15
  167. package/lib/container/ContainerEntryModuleFactory.js +2 -2
  168. package/lib/container/ContainerPlugin.js +5 -6
  169. package/lib/container/ContainerReferencePlugin.js +27 -30
  170. package/lib/container/FallbackDependency.js +2 -1
  171. package/lib/container/FallbackModule.js +19 -14
  172. package/lib/container/FallbackModuleFactory.js +2 -2
  173. package/lib/container/HoistContainerReferencesPlugin.js +7 -7
  174. package/lib/container/ModuleFederationPlugin.js +4 -4
  175. package/lib/container/RemoteModule.js +14 -14
  176. package/lib/container/RemoteRuntimeModule.js +2 -2
  177. package/lib/container/options.js +9 -9
  178. package/lib/css/CssGenerator.js +366 -74
  179. package/lib/css/CssLoadingRuntimeModule.js +26 -16
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +56 -0
  181. package/lib/css/CssModulesPlugin.js +191 -142
  182. package/lib/css/CssParser.js +1756 -740
  183. package/lib/css/walkCssTokens.js +180 -67
  184. package/lib/debug/ProfilingPlugin.js +135 -51
  185. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +29 -28
  186. package/lib/dependencies/AMDPlugin.js +18 -11
  187. package/lib/dependencies/AMDRequireArrayDependency.js +5 -4
  188. package/lib/dependencies/AMDRequireContextDependency.js +2 -1
  189. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +35 -26
  190. package/lib/dependencies/AMDRuntimeModules.js +3 -1
  191. package/lib/dependencies/CachedConstDependency.js +24 -18
  192. package/lib/dependencies/CommonJsExportRequireDependency.js +31 -24
  193. package/lib/dependencies/CommonJsExportsDependency.js +2 -1
  194. package/lib/dependencies/CommonJsExportsParserPlugin.js +50 -36
  195. package/lib/dependencies/CommonJsFullRequireDependency.js +7 -13
  196. package/lib/dependencies/CommonJsImportsParserPlugin.js +146 -127
  197. package/lib/dependencies/CommonJsPlugin.js +29 -18
  198. package/lib/dependencies/CommonJsRequireContextDependency.js +4 -3
  199. package/lib/dependencies/CommonJsSelfReferenceDependency.js +4 -4
  200. package/lib/dependencies/ConstDependency.js +2 -2
  201. package/lib/dependencies/ContextDependency.js +10 -5
  202. package/lib/dependencies/ContextDependencyHelpers.js +21 -13
  203. package/lib/dependencies/ContextDependencyTemplateAsId.js +10 -9
  204. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +13 -10
  205. package/lib/dependencies/ContextElementDependency.js +23 -12
  206. package/lib/dependencies/CssIcssExportDependency.js +402 -22
  207. package/lib/dependencies/CssIcssImportDependency.js +116 -51
  208. package/lib/dependencies/CssIcssSymbolDependency.js +33 -35
  209. package/lib/dependencies/CssImportDependency.js +17 -14
  210. package/lib/dependencies/CssUrlDependency.js +8 -13
  211. package/lib/dependencies/DynamicExports.js +19 -19
  212. package/lib/dependencies/ExportsInfoDependency.js +13 -10
  213. package/lib/dependencies/ExternalModuleDependency.js +7 -7
  214. package/lib/dependencies/ExternalModuleInitFragment.js +3 -2
  215. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +96 -0
  216. package/lib/dependencies/HarmonyAcceptDependency.js +96 -5
  217. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -5
  218. package/lib/dependencies/HarmonyCompatibilityDependency.js +0 -1
  219. package/lib/dependencies/HarmonyDetectionParserPlugin.js +10 -30
  220. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +19 -8
  221. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +136 -99
  222. package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +152 -61
  224. package/lib/dependencies/HarmonyExportInitFragment.js +2 -2
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +2 -2
  226. package/lib/dependencies/HarmonyExports.js +5 -5
  227. package/lib/dependencies/HarmonyImportDependency.js +92 -45
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +201 -163
  229. package/lib/dependencies/HarmonyImportSideEffectDependency.js +5 -6
  230. package/lib/dependencies/HarmonyImportSpecifierDependency.js +69 -42
  231. package/lib/dependencies/HarmonyModulesPlugin.js +16 -11
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -15
  233. package/lib/dependencies/ImportContextDependency.js +15 -1
  234. package/lib/dependencies/ImportDependency.js +25 -7
  235. package/lib/dependencies/ImportEagerDependency.js +7 -5
  236. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +23 -13
  237. package/lib/dependencies/ImportMetaContextPlugin.js +2 -2
  238. package/lib/dependencies/ImportMetaPlugin.js +172 -20
  239. package/lib/dependencies/ImportParserPlugin.js +327 -49
  240. package/lib/dependencies/ImportPhase.js +121 -0
  241. package/lib/dependencies/ImportPlugin.js +3 -1
  242. package/lib/dependencies/ImportWeakDependency.js +7 -5
  243. package/lib/dependencies/JsonExportsDependency.js +54 -28
  244. package/lib/dependencies/LoaderDependency.js +0 -3
  245. package/lib/dependencies/LoaderImportDependency.js +0 -3
  246. package/lib/dependencies/LoaderPlugin.js +24 -25
  247. package/lib/dependencies/LocalModulesHelpers.js +4 -4
  248. package/lib/dependencies/ModuleDecoratorDependency.js +2 -4
  249. package/lib/dependencies/ModuleDependency.js +14 -13
  250. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  251. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  252. package/lib/dependencies/NullDependency.js +2 -0
  253. package/lib/dependencies/ProvidedDependency.js +8 -10
  254. package/lib/dependencies/PureExpressionDependency.js +1 -2
  255. package/lib/dependencies/RequireContextDependency.js +2 -1
  256. package/lib/dependencies/RequireContextDependencyParserPlugin.js +47 -44
  257. package/lib/dependencies/RequireContextPlugin.js +5 -2
  258. package/lib/dependencies/RequireEnsureDependenciesBlock.js +3 -3
  259. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +101 -99
  260. package/lib/dependencies/RequireEnsurePlugin.js +6 -6
  261. package/lib/dependencies/RequireIncludeDependency.js +2 -2
  262. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +33 -34
  263. package/lib/dependencies/RequireIncludePlugin.js +1 -0
  264. package/lib/dependencies/RequireResolveContextDependency.js +1 -1
  265. package/lib/dependencies/RequireResolveDependency.js +3 -3
  266. package/lib/dependencies/RuntimeRequirementsDependency.js +3 -4
  267. package/lib/dependencies/StaticExportsDependency.js +3 -5
  268. package/lib/dependencies/SystemPlugin.js +4 -4
  269. package/lib/dependencies/URLContextDependency.js +65 -0
  270. package/lib/dependencies/URLDependency.js +3 -8
  271. package/lib/dependencies/URLPlugin.js +18 -159
  272. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -3
  273. package/lib/dependencies/WebAssemblyImportDependency.js +2 -2
  274. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -3
  275. package/lib/dependencies/WorkerDependency.js +8 -6
  276. package/lib/dependencies/WorkerPlugin.js +131 -67
  277. package/lib/dependencies/getFunctionExpression.js +2 -2
  278. package/lib/dependencies/processExportInfo.js +4 -4
  279. package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
  280. package/lib/esm/ModuleChunkFormatPlugin.js +232 -179
  281. package/lib/esm/ModuleChunkLoadingPlugin.js +112 -57
  282. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +102 -28
  283. package/lib/formatLocation.js +2 -2
  284. package/lib/hmr/HotModuleReplacement.runtime.js +41 -29
  285. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  286. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +43 -33
  287. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +37 -0
  288. package/lib/hmr/LazyCompilationPlugin.js +67 -54
  289. package/lib/hmr/lazyCompilationBackend.js +23 -18
  290. package/lib/ids/ChunkModuleIdRangePlugin.js +14 -11
  291. package/lib/ids/DeterministicChunkIdsPlugin.js +32 -37
  292. package/lib/ids/DeterministicModuleIdsPlugin.js +52 -52
  293. package/lib/ids/HashedModuleIdsPlugin.js +15 -13
  294. package/lib/ids/IdHelpers.js +66 -49
  295. package/lib/ids/NamedChunkIdsPlugin.js +14 -17
  296. package/lib/ids/NamedModuleIdsPlugin.js +12 -14
  297. package/lib/ids/NaturalChunkIdsPlugin.js +6 -4
  298. package/lib/ids/NaturalModuleIdsPlugin.js +4 -3
  299. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -5
  300. package/lib/ids/OccurrenceModuleIdsPlugin.js +8 -7
  301. package/lib/ids/SyncModuleIdsPlugin.js +18 -13
  302. package/lib/index.js +54 -14
  303. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +116 -119
  304. package/lib/javascript/BasicEvaluatedExpression.js +26 -18
  305. package/lib/javascript/ChunkFormatHelpers.js +70 -0
  306. package/lib/javascript/ChunkHelpers.js +17 -5
  307. package/lib/javascript/CommonJsChunkFormatPlugin.js +114 -141
  308. package/lib/javascript/EnableChunkLoadingPlugin.js +7 -4
  309. package/lib/javascript/JavascriptGenerator.js +122 -100
  310. package/lib/javascript/JavascriptModulesPlugin.js +332 -152
  311. package/lib/javascript/JavascriptParser.js +1488 -1052
  312. package/lib/javascript/JavascriptParserHelpers.js +48 -47
  313. package/lib/javascript/StartupHelpers.js +23 -22
  314. package/lib/json/JsonData.js +4 -4
  315. package/lib/json/JsonGenerator.js +66 -32
  316. package/lib/json/JsonModulesPlugin.js +16 -6
  317. package/lib/json/JsonParser.js +23 -8
  318. package/lib/library/AbstractLibraryPlugin.js +45 -10
  319. package/lib/library/AmdLibraryPlugin.js +7 -5
  320. package/lib/library/AssignLibraryPlugin.js +71 -17
  321. package/lib/library/EnableLibraryPlugin.js +51 -25
  322. package/lib/library/ExportPropertyLibraryPlugin.js +12 -18
  323. package/lib/library/JsonpLibraryPlugin.js +5 -2
  324. package/lib/library/ModuleLibraryPlugin.js +230 -18
  325. package/lib/library/SystemLibraryPlugin.js +29 -11
  326. package/lib/library/UmdLibraryPlugin.js +35 -32
  327. package/lib/logging/Logger.js +18 -15
  328. package/lib/logging/createConsoleLogger.js +27 -27
  329. package/lib/logging/runtime.js +11 -11
  330. package/lib/logging/truncateArgs.js +5 -5
  331. package/lib/node/CommonJsChunkLoadingPlugin.js +72 -75
  332. package/lib/node/NodeEnvironmentPlugin.js +9 -3
  333. package/lib/node/NodeTargetPlugin.js +9 -1
  334. package/lib/node/NodeTemplatePlugin.js +2 -2
  335. package/lib/node/NodeWatchFileSystem.js +4 -4
  336. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -38
  337. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +10 -11
  338. package/lib/node/ReadFileCompileWasmPlugin.js +11 -14
  339. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -30
  340. package/lib/node/nodeConsole.js +12 -7
  341. package/lib/optimize/AggressiveMergingPlugin.js +46 -47
  342. package/lib/optimize/AggressiveSplittingPlugin.js +233 -238
  343. package/lib/optimize/ConcatenatedModule.js +620 -251
  344. package/lib/optimize/EnsureChunkConditionsPlugin.js +58 -58
  345. package/lib/optimize/FlagIncludedChunksPlugin.js +93 -96
  346. package/lib/optimize/InnerGraph.js +139 -124
  347. package/lib/optimize/InnerGraphPlugin.js +29 -24
  348. package/lib/optimize/LimitChunkCountPlugin.js +32 -8
  349. package/lib/optimize/MangleExportsPlugin.js +22 -22
  350. package/lib/optimize/MergeDuplicateChunksPlugin.js +80 -81
  351. package/lib/optimize/MinChunkSizePlugin.js +12 -7
  352. package/lib/optimize/ModuleConcatenationPlugin.js +92 -71
  353. package/lib/optimize/RealContentHashPlugin.js +58 -44
  354. package/lib/optimize/RemoveEmptyChunksPlugin.js +8 -5
  355. package/lib/optimize/RemoveParentModulesPlugin.js +7 -4
  356. package/lib/optimize/RuntimeChunkPlugin.js +22 -25
  357. package/lib/optimize/SideEffectsFlagPlugin.js +44 -26
  358. package/lib/optimize/SplitChunksPlugin.js +209 -158
  359. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -1
  360. package/lib/performance/EntrypointsOverSizeLimitWarning.js +2 -2
  361. package/lib/performance/SizeLimitsPlugin.js +8 -5
  362. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +5 -7
  363. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +61 -64
  364. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +3 -4
  365. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  366. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  367. package/lib/rules/BasicEffectRulePlugin.js +14 -5
  368. package/lib/rules/BasicMatcherRulePlugin.js +18 -7
  369. package/lib/rules/ObjectMatcherRulePlugin.js +17 -6
  370. package/lib/rules/RuleSetCompiler.js +73 -32
  371. package/lib/rules/UseEffectRulePlugin.js +61 -25
  372. package/lib/runtime/AsyncModuleRuntimeModule.js +74 -9
  373. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -4
  374. package/lib/runtime/BaseUriRuntimeModule.js +2 -2
  375. package/lib/runtime/CompatRuntimeModule.js +0 -1
  376. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
  377. package/lib/runtime/GetChunkFilenameRuntimeModule.js +34 -35
  378. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
  379. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  380. package/lib/runtime/LoadScriptRuntimeModule.js +0 -2
  381. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +248 -0
  382. package/lib/runtime/PublicPathRuntimeModule.js +2 -2
  383. package/lib/runtime/RuntimeIdRuntimeModule.js +2 -1
  384. package/lib/runtime/StartupChunkDependenciesPlugin.js +39 -42
  385. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +10 -9
  386. package/lib/runtime/StartupEntrypointRuntimeModule.js +0 -1
  387. package/lib/runtime/SystemContextRuntimeModule.js +0 -2
  388. package/lib/runtime/ToBinaryRuntimeModule.js +64 -0
  389. package/lib/schemes/DataUriPlugin.js +9 -31
  390. package/lib/schemes/FileUriPlugin.js +11 -6
  391. package/lib/schemes/HttpUriPlugin.js +381 -261
  392. package/lib/schemes/VirtualUrlPlugin.js +222 -0
  393. package/lib/serialization/AggregateErrorSerializer.js +41 -0
  394. package/lib/serialization/BinaryMiddleware.js +51 -33
  395. package/lib/serialization/ErrorObjectSerializer.js +7 -2
  396. package/lib/serialization/FileMiddleware.js +101 -71
  397. package/lib/serialization/NullPrototypeObjectSerializer.js +5 -3
  398. package/lib/serialization/ObjectMiddleware.js +130 -54
  399. package/lib/serialization/PlainObjectSerializer.js +1 -1
  400. package/lib/serialization/Serializer.js +38 -20
  401. package/lib/serialization/SerializerMiddleware.js +121 -49
  402. package/lib/serialization/SingleItemMiddleware.js +9 -7
  403. package/lib/serialization/types.js +1 -1
  404. package/lib/sharing/ConsumeSharedModule.js +9 -9
  405. package/lib/sharing/ConsumeSharedPlugin.js +14 -14
  406. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -8
  407. package/lib/sharing/ProvideSharedModule.js +9 -11
  408. package/lib/sharing/ProvideSharedModuleFactory.js +5 -3
  409. package/lib/sharing/ProvideSharedPlugin.js +15 -10
  410. package/lib/sharing/SharePlugin.js +3 -4
  411. package/lib/sharing/ShareRuntimeModule.js +7 -6
  412. package/lib/sharing/resolveMatchedConfigs.js +27 -13
  413. package/lib/sharing/utils.js +37 -43
  414. package/lib/stats/DefaultStatsFactoryPlugin.js +455 -286
  415. package/lib/stats/DefaultStatsPresetPlugin.js +77 -46
  416. package/lib/stats/DefaultStatsPrinterPlugin.js +583 -419
  417. package/lib/stats/StatsFactory.js +75 -32
  418. package/lib/stats/StatsPrinter.js +71 -51
  419. package/lib/url/URLParserPlugin.js +264 -0
  420. package/lib/util/ArrayHelpers.js +6 -8
  421. package/lib/util/ArrayQueue.js +1 -1
  422. package/lib/util/AsyncQueue.js +11 -10
  423. package/lib/util/Hash.js +37 -5
  424. package/lib/util/IterableHelpers.js +4 -4
  425. package/lib/util/LazyBucketSortedSet.js +46 -27
  426. package/lib/util/LazySet.js +16 -10
  427. package/lib/util/MapHelpers.js +1 -1
  428. package/lib/util/ParallelismFactorCalculator.js +2 -2
  429. package/lib/util/Semaphore.js +3 -3
  430. package/lib/util/SetHelpers.js +6 -6
  431. package/lib/util/SortableSet.js +11 -9
  432. package/lib/util/StackedCacheMap.js +2 -2
  433. package/lib/util/StackedMap.js +3 -3
  434. package/lib/util/StringXor.js +2 -1
  435. package/lib/util/TupleQueue.js +11 -8
  436. package/lib/util/TupleSet.js +44 -19
  437. package/lib/util/URLAbsoluteSpecifier.js +3 -4
  438. package/lib/util/WeakTupleMap.js +56 -42
  439. package/lib/util/binarySearchBounds.js +4 -3
  440. package/lib/util/chainedImports.js +3 -1
  441. package/lib/util/cleverMerge.js +171 -107
  442. package/lib/util/comparators.js +265 -162
  443. package/lib/util/compileBooleanMatcher.js +120 -41
  444. package/lib/util/concatenate.js +20 -16
  445. package/lib/util/conventions.js +73 -74
  446. package/lib/util/create-schema-validation.js +8 -8
  447. package/lib/util/createHash.js +32 -135
  448. package/lib/util/dataURL.js +39 -0
  449. package/lib/util/deprecation.js +119 -116
  450. package/lib/util/deterministicGrouping.js +56 -47
  451. package/lib/util/extractSourceMap.js +319 -0
  452. package/lib/util/extractUrlAndGlobal.js +1 -1
  453. package/lib/util/findGraphRoots.js +19 -9
  454. package/lib/util/fs.js +169 -141
  455. package/lib/util/hash/BatchedHash.js +50 -10
  456. package/lib/util/hash/BulkUpdateHash.js +138 -0
  457. package/lib/util/hash/DebugHash.js +75 -0
  458. package/lib/util/hash/hash-digest.js +216 -0
  459. package/lib/util/hash/md4.js +2 -2
  460. package/lib/util/hash/wasm-hash.js +59 -17
  461. package/lib/util/identifier.js +124 -61
  462. package/lib/util/internalSerializables.js +4 -6
  463. package/lib/util/magicComment.js +9 -5
  464. package/lib/util/makeSerializable.js +2 -2
  465. package/lib/util/memoize.js +5 -2
  466. package/lib/util/objectToMap.js +3 -2
  467. package/lib/util/processAsyncTree.js +5 -5
  468. package/lib/util/propertyAccess.js +1 -1
  469. package/lib/util/propertyName.js +2 -3
  470. package/lib/util/registerExternalSerializer.js +16 -20
  471. package/lib/util/removeBOM.js +25 -0
  472. package/lib/util/runtime.js +72 -56
  473. package/lib/util/semver.js +44 -33
  474. package/lib/util/serialization.js +56 -56
  475. package/lib/util/smartGrouping.js +42 -27
  476. package/lib/util/source.js +5 -4
  477. package/lib/util/traverseDestructuringAssignmentProperties.js +45 -0
  478. package/lib/validateSchema.js +7 -9
  479. package/lib/wasm/EnableWasmLoadingPlugin.js +22 -12
  480. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -5
  481. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +15 -3
  482. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +28 -22
  483. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +47 -57
  484. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -10
  485. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +8 -4
  486. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +23 -17
  487. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +55 -57
  488. package/lib/wasm-sync/WebAssemblyGenerator.js +56 -41
  489. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +6 -3
  490. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +25 -10
  491. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +11 -12
  492. package/lib/wasm-sync/WebAssemblyParser.js +10 -17
  493. package/lib/wasm-sync/WebAssemblyUtils.js +1 -1
  494. package/lib/web/FetchCompileAsyncWasmPlugin.js +4 -4
  495. package/lib/web/FetchCompileWasmPlugin.js +6 -8
  496. package/lib/web/JsonpChunkLoadingPlugin.js +74 -74
  497. package/lib/web/JsonpChunkLoadingRuntimeModule.js +10 -26
  498. package/lib/web/JsonpTemplatePlugin.js +0 -1
  499. package/lib/webpack.js +107 -87
  500. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +79 -75
  501. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +38 -51
  502. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -0
  503. package/module.d.ts +5 -0
  504. package/package.json +149 -129
  505. package/schemas/WebpackOptions.check.d.ts +1 -1
  506. package/schemas/WebpackOptions.check.js +2 -2
  507. package/schemas/WebpackOptions.json +543 -190
  508. package/schemas/plugins/BannerPlugin.check.d.ts +1 -1
  509. package/schemas/plugins/BannerPlugin.check.js +2 -2
  510. package/schemas/plugins/BannerPlugin.json +4 -0
  511. package/schemas/plugins/DllPlugin.check.d.ts +1 -1
  512. package/schemas/plugins/DllPlugin.check.js +1 -1
  513. package/schemas/plugins/DllReferencePlugin.check.d.ts +1 -1
  514. package/schemas/plugins/DllReferencePlugin.check.js +1 -1
  515. package/schemas/plugins/IgnorePlugin.check.d.ts +1 -1
  516. package/schemas/plugins/IgnorePlugin.check.js +1 -1
  517. package/schemas/plugins/IgnorePlugin.json +1 -1
  518. package/schemas/plugins/LoaderOptionsPlugin.check.d.ts +1 -1
  519. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  520. package/schemas/plugins/{HashedModuleIdsPlugin.check.d.ts → ManifestPlugin.check.d.ts} +2 -2
  521. package/schemas/plugins/ManifestPlugin.check.js +6 -0
  522. package/schemas/plugins/ManifestPlugin.json +98 -0
  523. package/schemas/plugins/ProgressPlugin.check.d.ts +1 -1
  524. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  525. package/schemas/plugins/ProgressPlugin.json +1 -1
  526. package/schemas/plugins/SourceMapDevToolPlugin.check.d.ts +1 -1
  527. package/schemas/plugins/SourceMapDevToolPlugin.check.js +2 -2
  528. package/schemas/plugins/SourceMapDevToolPlugin.json +23 -6
  529. package/schemas/plugins/WatchIgnorePlugin.check.d.ts +1 -1
  530. package/schemas/plugins/WatchIgnorePlugin.check.js +1 -1
  531. package/schemas/plugins/asset/AssetGeneratorOptions.check.d.ts +1 -1
  532. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  533. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.d.ts +1 -1
  534. package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
  535. package/schemas/plugins/asset/AssetParserOptions.check.d.ts +1 -1
  536. package/schemas/plugins/asset/AssetParserOptions.check.js +1 -1
  537. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.d.ts +1 -1
  538. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  539. package/schemas/plugins/container/ContainerPlugin.check.d.ts +1 -1
  540. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  541. package/schemas/plugins/container/ContainerReferencePlugin.check.d.ts +1 -1
  542. package/schemas/plugins/container/ContainerReferencePlugin.check.js +2 -2
  543. package/schemas/plugins/container/ContainerReferencePlugin.json +4 -1
  544. package/schemas/plugins/container/ExternalsType.check.d.ts +1 -1
  545. package/schemas/plugins/container/ExternalsType.check.js +2 -2
  546. package/schemas/plugins/container/ModuleFederationPlugin.check.d.ts +1 -1
  547. package/schemas/plugins/container/ModuleFederationPlugin.check.js +2 -2
  548. package/schemas/plugins/container/ModuleFederationPlugin.json +4 -1
  549. package/schemas/plugins/css/CssGeneratorOptions.check.d.ts +1 -1
  550. package/schemas/plugins/css/CssGeneratorOptions.check.js +1 -1
  551. package/schemas/plugins/css/CssModuleGeneratorOptions.check.d.ts +1 -1
  552. package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +2 -2
  553. package/schemas/plugins/css/CssModuleParserOptions.check.d.ts +1 -1
  554. package/schemas/plugins/css/CssModuleParserOptions.check.js +2 -2
  555. package/schemas/plugins/css/CssParserOptions.check.d.ts +1 -1
  556. package/schemas/plugins/css/CssParserOptions.check.js +2 -2
  557. package/schemas/plugins/debug/ProfilingPlugin.check.d.ts +1 -1
  558. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  559. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.d.ts +7 -0
  560. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +6 -0
  561. package/schemas/plugins/{HashedModuleIdsPlugin.json → ids/HashedModuleIdsPlugin.json} +15 -2
  562. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.d.ts +1 -1
  563. package/schemas/plugins/ids/OccurrenceChunkIdsPlugin.check.js +1 -1
  564. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.d.ts +1 -1
  565. package/schemas/plugins/ids/OccurrenceModuleIdsPlugin.check.js +1 -1
  566. package/schemas/plugins/{css/CssGlobalParserOptions.check.d.ts → json/JsonModulesPluginGenerator.check.d.ts} +1 -1
  567. package/schemas/plugins/json/JsonModulesPluginGenerator.check.js +6 -0
  568. package/schemas/plugins/json/JsonModulesPluginGenerator.json +3 -0
  569. package/schemas/plugins/{css/CssGlobalGeneratorOptions.check.d.ts → json/JsonModulesPluginParser.check.d.ts} +1 -1
  570. package/schemas/plugins/json/JsonModulesPluginParser.check.js +6 -0
  571. package/schemas/plugins/json/JsonModulesPluginParser.json +3 -0
  572. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.d.ts +1 -1
  573. package/schemas/plugins/optimize/AggressiveSplittingPlugin.check.js +1 -1
  574. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.d.ts +1 -1
  575. package/schemas/plugins/optimize/LimitChunkCountPlugin.check.js +1 -1
  576. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.d.ts +1 -1
  577. package/schemas/plugins/optimize/MergeDuplicateChunksPlugin.check.js +1 -1
  578. package/schemas/plugins/optimize/MinChunkSizePlugin.check.d.ts +1 -1
  579. package/schemas/plugins/optimize/MinChunkSizePlugin.check.js +1 -1
  580. package/schemas/plugins/schemes/HttpUriPlugin.check.d.ts +1 -1
  581. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  582. package/schemas/plugins/schemes/VirtualUrlPlugin.check.d.ts +7 -0
  583. package/schemas/plugins/schemes/VirtualUrlPlugin.check.js +6 -0
  584. package/schemas/plugins/schemes/VirtualUrlPlugin.json +77 -0
  585. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.d.ts +1 -1
  586. package/schemas/plugins/sharing/ConsumeSharedPlugin.check.js +1 -1
  587. package/schemas/plugins/sharing/ProvideSharedPlugin.check.d.ts +1 -1
  588. package/schemas/plugins/sharing/ProvideSharedPlugin.check.js +1 -1
  589. package/schemas/plugins/sharing/SharePlugin.check.d.ts +1 -1
  590. package/schemas/plugins/sharing/SharePlugin.check.js +1 -1
  591. package/types.d.ts +5115 -1863
  592. package/SECURITY.md +0 -9
  593. package/lib/ModuleSourceTypesConstants.js +0 -112
  594. package/lib/dependencies/CssLocalIdentifierDependency.js +0 -250
  595. package/lib/dependencies/CssSelfLocalIdentifierDependency.js +0 -111
  596. package/lib/library/ModernModuleLibraryPlugin.js +0 -144
  597. package/schemas/plugins/HashedModuleIdsPlugin.check.js +0 -6
  598. package/schemas/plugins/JsonModulesPluginParser.check.d.ts +0 -7
  599. package/schemas/plugins/JsonModulesPluginParser.check.js +0 -6
  600. package/schemas/plugins/JsonModulesPluginParser.json +0 -12
  601. package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
  602. package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
  603. package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
  604. package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
  605. package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
  606. package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
  607. package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
  608. package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
  609. package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
  610. package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
@@ -9,43 +9,51 @@ const { OriginalSource, RawSource } = require("webpack-sources");
9
9
  const AsyncDependenciesBlock = require("./AsyncDependenciesBlock");
10
10
  const { makeWebpackError } = require("./HookWebpackError");
11
11
  const Module = require("./Module");
12
- const { JS_TYPES } = require("./ModuleSourceTypesConstants");
12
+ const {
13
+ JAVASCRIPT_TYPE,
14
+ JAVASCRIPT_TYPES
15
+ } = require("./ModuleSourceTypeConstants");
13
16
  const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("./ModuleTypeConstants");
14
17
  const RuntimeGlobals = require("./RuntimeGlobals");
15
18
  const Template = require("./Template");
16
19
  const WebpackError = require("./WebpackError");
17
20
  const {
18
21
  compareLocations,
19
- concatComparators,
22
+ compareModulesById,
20
23
  compareSelect,
21
- keepOriginalOrder,
22
- compareModulesById
24
+ concatComparators,
25
+ keepOriginalOrder
23
26
  } = require("./util/comparators");
24
27
  const {
25
28
  contextify,
26
- parseResource,
27
- makePathsRelative
29
+ makePathsRelative,
30
+ parseResource
28
31
  } = require("./util/identifier");
29
32
  const makeSerializable = require("./util/makeSerializable");
30
33
 
31
34
  /** @typedef {import("webpack-sources").Source} Source */
32
- /** @typedef {import("../declarations/WebpackOptions").WebpackOptionsNormalized} WebpackOptions */
35
+ /** @typedef {import("../declarations/WebpackOptions").ResolveOptions} ResolveOptions */
36
+ /** @typedef {import("./config/defaults").WebpackOptionsNormalizedWithDefaults} WebpackOptions */
33
37
  /** @typedef {import("./Chunk")} Chunk */
34
38
  /** @typedef {import("./Chunk").ChunkId} ChunkId */
39
+ /** @typedef {import("./Chunk").ChunkName} ChunkName */
35
40
  /** @typedef {import("./ChunkGraph")} ChunkGraph */
36
41
  /** @typedef {import("./ChunkGraph").ModuleId} ModuleId */
37
42
  /** @typedef {import("./ChunkGroup").RawChunkGroupOptions} RawChunkGroupOptions */
38
43
  /** @typedef {import("./Compilation")} Compilation */
39
44
  /** @typedef {import("./Dependency")} Dependency */
40
- /** @typedef {import("./DependencyTemplates")} DependencyTemplates */
45
+ /** @typedef {import("./Dependency").RawReferencedExports} RawReferencedExports */
41
46
  /** @typedef {import("./Generator").SourceTypes} SourceTypes */
47
+ /** @typedef {import("./Module").BuildCallback} BuildCallback */
42
48
  /** @typedef {import("./Module").BuildInfo} BuildInfo */
49
+ /** @typedef {import("./Module").FileSystemDependencies} FileSystemDependencies */
43
50
  /** @typedef {import("./Module").BuildMeta} BuildMeta */
44
51
  /** @typedef {import("./Module").CodeGenerationContext} CodeGenerationContext */
45
52
  /** @typedef {import("./Module").CodeGenerationResult} CodeGenerationResult */
46
53
  /** @typedef {import("./Module").LibIdentOptions} LibIdentOptions */
54
+ /** @typedef {import("./Module").LibIdent} LibIdent */
55
+ /** @typedef {import("./Module").NeedBuildCallback} NeedBuildCallback */
47
56
  /** @typedef {import("./Module").NeedBuildContext} NeedBuildContext */
48
- /** @typedef {import("./ModuleGraph")} ModuleGraph */
49
57
  /** @typedef {import("./RequestShortener")} RequestShortener */
50
58
  /** @typedef {import("./ResolverFactory").ResolverWithOptions} ResolverWithOptions */
51
59
  /** @typedef {import("./RuntimeTemplate")} RuntimeTemplate */
@@ -53,7 +61,6 @@ const makeSerializable = require("./util/makeSerializable");
53
61
  /** @typedef {import("./javascript/JavascriptParser").ImportAttributes} ImportAttributes */
54
62
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
55
63
  /** @typedef {import("./serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
56
- /** @template T @typedef {import("./util/LazySet")<T>} LazySet<T> */
57
64
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
58
65
 
59
66
  /** @typedef {"sync" | "eager" | "weak" | "async-weak" | "lazy" | "lazy-once"} ContextMode Context mode */
@@ -62,26 +69,26 @@ const makeSerializable = require("./util/makeSerializable");
62
69
  * @typedef {object} ContextOptions
63
70
  * @property {ContextMode} mode
64
71
  * @property {boolean} recursive
65
- * @property {RegExp} regExp
66
- * @property {("strict" | boolean)=} namespaceObject
72
+ * @property {RegExp | false | null} regExp
73
+ * @property {"strict" | boolean=} namespaceObject
67
74
  * @property {string=} addon
68
- * @property {(string | null)=} chunkName
69
- * @property {(RegExp | null)=} include
70
- * @property {(RegExp | null)=} exclude
75
+ * @property {ChunkName=} chunkName
76
+ * @property {RegExp | null=} include
77
+ * @property {RegExp | null=} exclude
71
78
  * @property {RawChunkGroupOptions=} groupOptions
72
79
  * @property {string=} typePrefix
73
80
  * @property {string=} category
74
- * @property {(string[][] | null)=} referencedExports exports referenced from modules (won't be mangled)
75
- * @property {string=} layer
81
+ * @property {RawReferencedExports | null=} referencedExports exports referenced from modules (won't be mangled)
82
+ * @property {string | null=} layer
76
83
  * @property {ImportAttributes=} attributes
77
84
  */
78
85
 
79
86
  /**
80
87
  * @typedef {object} ContextModuleOptionsExtras
81
- * @property {false|string|string[]} resource
88
+ * @property {false | string | string[]} resource
82
89
  * @property {string=} resourceQuery
83
90
  * @property {string=} resourceFragment
84
- * @property {TODO} resolveOptions
91
+ * @property {ResolveOptions=} resolveOptions
85
92
  */
86
93
 
87
94
  /** @typedef {ContextOptions & ContextModuleOptionsExtras} ContextModuleOptions */
@@ -90,6 +97,7 @@ const makeSerializable = require("./util/makeSerializable");
90
97
  * @callback ResolveDependenciesCallback
91
98
  * @param {Error | null} err
92
99
  * @param {ContextElementDependency[]=} dependencies
100
+ * @returns {void}
93
101
  */
94
102
 
95
103
  /**
@@ -103,8 +111,6 @@ const makeSerializable = require("./util/makeSerializable");
103
111
 
104
112
  /** @typedef {Record<ModuleId, FakeMapType>} FakeMap */
105
113
 
106
- const SNAPSHOT_OPTIONS = { timestamp: true };
107
-
108
114
  class ContextModule extends Module {
109
115
  /**
110
116
  * @param {ResolveDependencies} resolveDependencies function to get dependencies in this context
@@ -159,7 +165,7 @@ class ContextModule extends Module {
159
165
  * @returns {SourceTypes} types available (do not mutate)
160
166
  */
161
167
  getSourceTypes() {
162
- return JS_TYPES;
168
+ return JAVASCRIPT_TYPES;
163
169
  }
164
170
 
165
171
  /**
@@ -251,10 +257,12 @@ class ContextModule extends Module {
251
257
  } else if (this.options.namespaceObject) {
252
258
  identifier += "|namespace object";
253
259
  }
260
+ if (this.options.attributes) {
261
+ identifier += `|importAttributes: ${JSON.stringify(this.options.attributes)}`;
262
+ }
254
263
  if (this.layer) {
255
264
  identifier += `|layer: ${this.layer}`;
256
265
  }
257
-
258
266
  return identifier;
259
267
  }
260
268
 
@@ -280,7 +288,7 @@ class ContextModule extends Module {
280
288
  identifier = `${requestShortener.shorten(`${this.options.resource}`)}/`;
281
289
  } else {
282
290
  identifier = this.options.resource
283
- .map(r => `${requestShortener.shorten(r)}/`)
291
+ .map((r) => `${requestShortener.shorten(r)}/`)
284
292
  .join(" ");
285
293
  }
286
294
  if (this.options.resourceQuery) {
@@ -306,7 +314,7 @@ class ContextModule extends Module {
306
314
  }
307
315
  if (this.options.referencedExports) {
308
316
  identifier += ` referencedExports: ${this.options.referencedExports
309
- .map(e => e.join("."))
317
+ .map((e) => e.join("."))
310
318
  .join(", ")}`;
311
319
  }
312
320
  if (this.options.chunkName) {
@@ -331,7 +339,7 @@ class ContextModule extends Module {
331
339
 
332
340
  /**
333
341
  * @param {LibIdentOptions} options options
334
- * @returns {string | null} an identifier for library inclusion
342
+ * @returns {LibIdent | null} an identifier for library inclusion
335
343
  */
336
344
  libIdent(options) {
337
345
  let identifier;
@@ -352,7 +360,7 @@ class ContextModule extends Module {
352
360
  identifier = "false";
353
361
  } else {
354
362
  identifier = this.options.resource
355
- .map(res =>
363
+ .map((res) =>
356
364
  contextify(options.context, res, options.associatedObjectForCache)
357
365
  )
358
366
  .join(" ");
@@ -383,7 +391,7 @@ class ContextModule extends Module {
383
391
  }
384
392
  if (this.options.referencedExports) {
385
393
  identifier += ` referencedExports: ${this.options.referencedExports
386
- .map(e => e.join("."))
394
+ .map((e) => e.join("."))
387
395
  .join(", ")}`;
388
396
  }
389
397
 
@@ -399,7 +407,7 @@ class ContextModule extends Module {
399
407
 
400
408
  /**
401
409
  * @param {NeedBuildContext} context context info
402
- * @param {function((WebpackError | null)=, boolean=): void} callback callback function, returns true, if the module needs a rebuild
410
+ * @param {NeedBuildCallback} callback callback function, returns true, if the module needs a rebuild
403
411
  * @returns {void}
404
412
  */
405
413
  needBuild({ fileSystemInfo }, callback) {
@@ -409,8 +417,9 @@ class ContextModule extends Module {
409
417
  const buildInfo = /** @type {BuildInfo} */ (this.buildInfo);
410
418
 
411
419
  // always build when we have no snapshot and context
412
- if (!buildInfo.snapshot)
420
+ if (!buildInfo.snapshot) {
413
421
  return callback(null, Boolean(this.context || this.options.resource));
422
+ }
414
423
 
415
424
  fileSystemInfo.checkSnapshotValid(buildInfo.snapshot, (err, valid) => {
416
425
  callback(err, !valid);
@@ -422,7 +431,7 @@ class ContextModule extends Module {
422
431
  * @param {Compilation} compilation the compilation
423
432
  * @param {ResolverWithOptions} resolver the resolver
424
433
  * @param {InputFileSystem} fs the file system
425
- * @param {function(WebpackError=): void} callback callback function
434
+ * @param {BuildCallback} callback callback function
426
435
  * @returns {void}
427
436
  */
428
437
  build(options, compilation, resolver, fs, callback) {
@@ -462,7 +471,7 @@ class ContextModule extends Module {
462
471
  }
463
472
  dependencies.sort(
464
473
  concatComparators(
465
- compareSelect(a => a.loc, compareLocations),
474
+ compareSelect((a) => a.loc, compareLocations),
466
475
  keepOriginalOrder(this.dependencies)
467
476
  )
468
477
  );
@@ -528,6 +537,8 @@ class ContextModule extends Module {
528
537
  }
529
538
  if (!this.context && !this.options.resource) return callback();
530
539
 
540
+ const snapshotOptions = compilation.options.snapshot.contextModule;
541
+
531
542
  compilation.fileSystemInfo.createSnapshot(
532
543
  startTime,
533
544
  null,
@@ -537,7 +548,7 @@ class ContextModule extends Module {
537
548
  ? [this.options.resource]
538
549
  : /** @type {string[]} */ (this.options.resource),
539
550
  null,
540
- SNAPSHOT_OPTIONS,
551
+ snapshotOptions,
541
552
  (err, snapshot) => {
542
553
  if (err) return callback(err);
543
554
  /** @type {BuildInfo} */
@@ -549,10 +560,10 @@ class ContextModule extends Module {
549
560
  }
550
561
 
551
562
  /**
552
- * @param {LazySet<string>} fileDependencies set where file dependencies are added to
553
- * @param {LazySet<string>} contextDependencies set where context dependencies are added to
554
- * @param {LazySet<string>} missingDependencies set where missing dependencies are added to
555
- * @param {LazySet<string>} buildDependencies set where build dependencies are added to
563
+ * @param {FileSystemDependencies} fileDependencies set where file dependencies are added to
564
+ * @param {FileSystemDependencies} contextDependencies set where context dependencies are added to
565
+ * @param {FileSystemDependencies} missingDependencies set where missing dependencies are added to
566
+ * @param {FileSystemDependencies} buildDependencies set where build dependencies are added to
556
567
  */
557
568
  addCacheDependencies(
558
569
  fileDependencies,
@@ -574,7 +585,7 @@ class ContextModule extends Module {
574
585
  /**
575
586
  * @param {Dependency[]} dependencies all dependencies
576
587
  * @param {ChunkGraph} chunkGraph chunk graph
577
- * @returns {Map<string, string | number>} map with user requests
588
+ * @returns {Map<string, ModuleId>} map with user requests
578
589
  */
579
590
  getUserRequestMap(dependencies, chunkGraph) {
580
591
  const moduleGraph = chunkGraph.moduleGraph;
@@ -584,7 +595,7 @@ class ContextModule extends Module {
584
595
  const sortedDependencies =
585
596
  /** @type {ContextElementDependency[]} */
586
597
  (dependencies)
587
- .filter(dependency => moduleGraph.getModule(dependency))
598
+ .filter((dependency) => moduleGraph.getModule(dependency))
588
599
  .sort((a, b) => {
589
600
  if (a.userRequest === b.userRequest) {
590
601
  return 0;
@@ -617,7 +628,8 @@ class ContextModule extends Module {
617
628
  // therefore the order of this is !important!
618
629
  const sortedModules = dependencies
619
630
  .map(
620
- dependency => /** @type {Module} */ (moduleGraph.getModule(dependency))
631
+ (dependency) =>
632
+ /** @type {Module} */ (moduleGraph.getModule(dependency))
621
633
  )
622
634
  .filter(Boolean)
623
635
  .sort(comparator);
@@ -941,7 +953,7 @@ module.exports = webpackAsyncContext;`;
941
953
  let hasMultipleOrNoChunks = false;
942
954
  let hasNoChunk = true;
943
955
  const fakeMap = this.getFakeMap(
944
- blocks.map(b => b.dependencies[0]),
956
+ blocks.map((b) => b.dependencies[0]),
945
957
  chunkGraph
946
958
  );
947
959
  const hasFakeMap = typeof fakeMap === "object";
@@ -950,7 +962,7 @@ module.exports = webpackAsyncContext;`;
950
962
  * @type {Item[]}
951
963
  */
952
964
  const items = blocks
953
- .map(block => {
965
+ .map((block) => {
954
966
  const dependency =
955
967
  /** @type {ContextElementDependency} */
956
968
  (block.dependencies[0]);
@@ -962,7 +974,7 @@ module.exports = webpackAsyncContext;`;
962
974
  chunks: undefined
963
975
  };
964
976
  })
965
- .filter(item => item.module);
977
+ .filter((item) => item.module);
966
978
  for (const item of items) {
967
979
  const chunkGroup = chunkGraph.getBlockChunkGroup(item.block);
968
980
  const chunks = (chunkGroup && chunkGroup.chunks) || [];
@@ -993,10 +1005,11 @@ module.exports = webpackAsyncContext;`;
993
1005
  if (hasFakeMap) {
994
1006
  arrayStart.push(fakeMap[moduleId]);
995
1007
  }
996
- map[item.userRequest] = arrayStart.concat(
997
- /** @type {Chunk[]} */
998
- (item.chunks).map(chunk => /** @type {ChunkId} */ (chunk.id))
999
- );
1008
+ map[item.userRequest] = [
1009
+ ...arrayStart,
1010
+ .../** @type {Chunk[]} */
1011
+ (item.chunks).map((chunk) => /** @type {ChunkId} */ (chunk.id))
1012
+ ];
1000
1013
  }
1001
1014
  }
1002
1015
 
@@ -1174,7 +1187,7 @@ module.exports = webpackEmptyAsyncContext;`;
1174
1187
  const { chunkGraph, compilation } = context;
1175
1188
  const sources = new Map();
1176
1189
  sources.set(
1177
- "javascript",
1190
+ JAVASCRIPT_TYPE,
1178
1191
  this.getSource(
1179
1192
  this.getSourceString(this.options.mode, context),
1180
1193
  compilation
@@ -1183,11 +1196,13 @@ module.exports = webpackEmptyAsyncContext;`;
1183
1196
  const set = new Set();
1184
1197
  const allDeps =
1185
1198
  this.dependencies.length > 0
1186
- ? /** @type {ContextElementDependency[]} */ (this.dependencies).slice()
1199
+ ? /** @type {ContextElementDependency[]} */ [...this.dependencies]
1187
1200
  : [];
1188
- for (const block of this.blocks)
1189
- for (const dep of block.dependencies)
1201
+ for (const block of this.blocks) {
1202
+ for (const dep of block.dependencies) {
1190
1203
  allDeps.push(/** @type {ContextElementDependency} */ (dep));
1204
+ }
1205
+ }
1191
1206
  set.add(RuntimeGlobals.module);
1192
1207
  set.add(RuntimeGlobals.hasOwnProperty);
1193
1208
  if (allDeps.length > 0) {
@@ -15,14 +15,16 @@ const { cachedSetProperty } = require("./util/cleverMerge");
15
15
  const { createFakeHook } = require("./util/deprecation");
16
16
  const { join } = require("./util/fs");
17
17
 
18
+ /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
19
+ /** @typedef {import("./Compilation").FileSystemDependencies} FileSystemDependencies */
18
20
  /** @typedef {import("./ContextModule").ContextModuleOptions} ContextModuleOptions */
19
21
  /** @typedef {import("./ContextModule").ResolveDependenciesCallback} ResolveDependenciesCallback */
20
- /** @typedef {import("./Module")} Module */
21
22
  /** @typedef {import("./ModuleFactory").ModuleFactoryCreateData} ModuleFactoryCreateData */
22
- /** @typedef {import("./ModuleFactory").ModuleFactoryResult} ModuleFactoryResult */
23
+ /** @typedef {import("./ModuleFactory").ModuleFactoryCallback} ModuleFactoryCallback */
23
24
  /** @typedef {import("./ResolverFactory")} ResolverFactory */
24
25
  /** @typedef {import("./dependencies/ContextDependency")} ContextDependency */
25
- /** @typedef {import("enhanced-resolve").ResolveRequest} ResolveRequest */
26
+ /** @typedef {import("./dependencies/ContextDependency").ContextOptions} ContextOptions */
27
+
26
28
  /**
27
29
  * @template T
28
30
  * @typedef {import("./util/deprecation").FakeHook<T>} FakeHook<T>
@@ -31,9 +33,23 @@ const { join } = require("./util/fs");
31
33
  /** @typedef {import("./util/fs").InputFileSystem} InputFileSystem */
32
34
  /** @typedef {{ context: string, request: string }} ContextAlternativeRequest */
33
35
 
36
+ /**
37
+ * @typedef {object} ContextResolveData
38
+ * @property {string} context
39
+ * @property {string} request
40
+ * @property {ModuleFactoryCreateData["resolveOptions"]} resolveOptions
41
+ * @property {FileSystemDependencies} fileDependencies
42
+ * @property {FileSystemDependencies} missingDependencies
43
+ * @property {FileSystemDependencies} contextDependencies
44
+ * @property {ContextDependency[]} dependencies
45
+ */
46
+
47
+ /** @typedef {ContextResolveData & ContextOptions} BeforeContextResolveData */
48
+ /** @typedef {BeforeContextResolveData & { resource: string | string[], resourceQuery: string | undefined, resourceFragment: string | undefined, resolveDependencies: ContextModuleFactory["resolveDependencies"] }} AfterContextResolveData */
49
+
34
50
  const EMPTY_RESOLVE_OPTIONS = {};
35
51
 
36
- module.exports = class ContextModuleFactory extends ModuleFactory {
52
+ class ContextModuleFactory extends ModuleFactory {
37
53
  /**
38
54
  * @param {ResolverFactory} resolverFactory resolverFactory
39
55
  */
@@ -45,9 +61,9 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
45
61
  "options"
46
62
  ]);
47
63
  this.hooks = Object.freeze({
48
- /** @type {AsyncSeriesWaterfallHook<[TODO]>} */
64
+ /** @type {AsyncSeriesWaterfallHook<[BeforeContextResolveData], BeforeContextResolveData | false | void>} */
49
65
  beforeResolve: new AsyncSeriesWaterfallHook(["data"]),
50
- /** @type {AsyncSeriesWaterfallHook<[TODO]>} */
66
+ /** @type {AsyncSeriesWaterfallHook<[AfterContextResolveData], AfterContextResolveData | false | void>} */
51
67
  afterResolve: new AsyncSeriesWaterfallHook(["data"]),
52
68
  /** @type {SyncWaterfallHook<[string[]]>} */
53
69
  contextModuleFiles: new SyncWaterfallHook(["files"]),
@@ -56,7 +72,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
56
72
  {
57
73
  name: "alternatives",
58
74
  /** @type {AsyncSeriesWaterfallHook<[ContextAlternativeRequest[]]>["intercept"]} */
59
- intercept: interceptor => {
75
+ intercept: (interceptor) => {
60
76
  throw new Error(
61
77
  "Intercepting fake hook ContextModuleFactory.hooks.alternatives is not possible, use ContextModuleFactory.hooks.alternativeRequests instead"
62
78
  );
@@ -86,14 +102,14 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
86
102
 
87
103
  /**
88
104
  * @param {ModuleFactoryCreateData} data data object
89
- * @param {function((Error | null)=, ModuleFactoryResult=): void} callback callback
105
+ * @param {ModuleFactoryCallback} callback callback
90
106
  * @returns {void}
91
107
  */
92
108
  create(data, callback) {
93
109
  const context = data.context;
94
- const dependencies = data.dependencies;
110
+ const dependencies = /** @type {ContextDependency[]} */ (data.dependencies);
95
111
  const resolveOptions = data.resolveOptions;
96
- const dependency = /** @type {ContextDependency} */ (dependencies[0]);
112
+ const dependency = dependencies[0];
97
113
  const fileDependencies = new LazySet();
98
114
  const missingDependencies = new LazySet();
99
115
  const contextDependencies = new LazySet();
@@ -130,7 +146,9 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
130
146
  const request = beforeResolveResult.request;
131
147
  const resolveOptions = beforeResolveResult.resolveOptions;
132
148
 
149
+ /** @type {undefined | string[]} */
133
150
  let loaders;
151
+ /** @type {undefined | string} */
134
152
  let resource;
135
153
  let loadersPrefix = "";
136
154
  const idx = request.lastIndexOf("!");
@@ -169,13 +187,13 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
169
187
 
170
188
  asyncLib.parallel(
171
189
  [
172
- callback => {
173
- const results = /** @type ResolveRequest[] */ ([]);
190
+ (callback) => {
191
+ const results = /** @type {ResolveRequest[]} */ ([]);
174
192
  /**
175
193
  * @param {ResolveRequest} obj obj
176
194
  * @returns {void}
177
195
  */
178
- const yield_ = obj => {
196
+ const yield_ = (obj) => {
179
197
  results.push(obj);
180
198
  };
181
199
 
@@ -189,13 +207,13 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
189
207
  contextDependencies,
190
208
  yield: yield_
191
209
  },
192
- err => {
210
+ (err) => {
193
211
  if (err) return callback(err);
194
212
  callback(null, results);
195
213
  }
196
214
  );
197
215
  },
198
- callback => {
216
+ (callback) => {
199
217
  asyncLib.map(
200
218
  loaders,
201
219
  (loader, callback) => {
@@ -210,7 +228,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
210
228
  },
211
229
  (err, result) => {
212
230
  if (err) return callback(err);
213
- callback(null, /** @type {string} */ (result));
231
+ callback(null, result);
214
232
  }
215
233
  );
216
234
  },
@@ -230,7 +248,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
230
248
  /** @type {[ResolveRequest[], string[]]} */ (result);
231
249
  if (contextResult.length > 1) {
232
250
  const first = contextResult[0];
233
- contextResult = contextResult.filter(r => r.path);
251
+ contextResult = contextResult.filter((r) => r.path);
234
252
  if (contextResult.length === 0) contextResult.push(first);
235
253
  }
236
254
  this.hooks.afterResolve.callAsync(
@@ -241,8 +259,8 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
241
259
  (loaderResult.length > 0 ? "!" : ""),
242
260
  resource:
243
261
  contextResult.length > 1
244
- ? contextResult.map(r => r.path)
245
- : contextResult[0].path,
262
+ ? /** @type {string[]} */ (contextResult.map((r) => r.path))
263
+ : /** @type {string} */ (contextResult[0].path),
246
264
  resolveDependencies: this.resolveDependencies.bind(this),
247
265
  resourceQuery: contextResult[0].query,
248
266
  resourceFragment: contextResult[0].fragment,
@@ -335,23 +353,25 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
335
353
  /**
336
354
  * @param {string} ctx context
337
355
  * @param {string} directory directory
338
- * @param {function(string, string, function(): void): void} addSubDirectory addSubDirectoryFn
356
+ * @param {(context: string, subResource: string, callback: () => void) => void} addSubDirectory addSubDirectoryFn
339
357
  * @param {ResolveDependenciesCallback} callback callback
358
+ * @returns {void}
340
359
  */
341
360
  const addDirectory = (ctx, directory, addSubDirectory, callback) => {
342
361
  fs.readdir(directory, (err, files) => {
343
362
  if (err) return callback(err);
344
363
  const processedFiles = cmf.hooks.contextModuleFiles.call(
345
- /** @type {string[]} */ (files).map(file => file.normalize("NFC"))
364
+ /** @type {string[]} */ (files).map((file) => file.normalize("NFC"))
346
365
  );
347
- if (!processedFiles || processedFiles.length === 0)
366
+ if (!processedFiles || processedFiles.length === 0) {
348
367
  return callback(null, []);
368
+ }
349
369
  asyncLib.map(
350
- processedFiles.filter(p => p.indexOf(".") !== 0),
370
+ processedFiles.filter((p) => p.indexOf(".") !== 0),
351
371
  (segment, callback) => {
352
372
  const subResource = join(fs, directory, segment);
353
373
 
354
- if (!exclude || !subResource.match(exclude)) {
374
+ if (!exclude || !exclude.test(subResource)) {
355
375
  fs.stat(subResource, (err, _stat) => {
356
376
  if (err) {
357
377
  if (err.code === "ENOENT") {
@@ -369,7 +389,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
369
389
  addSubDirectory(ctx, subResource, callback);
370
390
  } else if (
371
391
  stat.isFile() &&
372
- (!include || subResource.match(include))
392
+ (!include || include.test(subResource))
373
393
  ) {
374
394
  /** @type {{ context: string, request: string }} */
375
395
  const obj = {
@@ -386,10 +406,10 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
386
406
  null,
387
407
  /** @type {ContextAlternativeRequest[]} */
388
408
  (alternatives)
389
- .filter(obj =>
409
+ .filter((obj) =>
390
410
  regExp.test(/** @type {string} */ (obj.request))
391
411
  )
392
- .map(obj => {
412
+ .map((obj) => {
393
413
  const dep = new ContextElementDependency(
394
414
  `${obj.request}${resourceQuery}${resourceFragment}`,
395
415
  obj.request,
@@ -397,8 +417,7 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
397
417
  /** @type {string} */
398
418
  (category),
399
419
  referencedExports,
400
- /** @type {TODO} */
401
- (obj.context),
420
+ obj.context,
402
421
  attributes
403
422
  );
404
423
  dep.optional = true;
@@ -478,4 +497,6 @@ module.exports = class ContextModuleFactory extends ModuleFactory {
478
497
  });
479
498
  }
480
499
  }
481
- };
500
+ }
501
+
502
+ module.exports = ContextModuleFactory;