webpack 5.106.1 → 5.107.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 (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -11,6 +11,7 @@ const SEGMENTS_SPLIT_REGEXP = /([|!])/;
11
11
  const WINDOWS_PATH_SEPARATOR_REGEXP = /\\/g;
12
12
 
13
13
  /**
14
+ * Relative path to request.
14
15
  * @param {string} relativePath relative path
15
16
  * @returns {string} request
16
17
  */
@@ -22,6 +23,7 @@ const relativePathToRequest = (relativePath) => {
22
23
  };
23
24
 
24
25
  /**
26
+ * Absolute to request.
25
27
  * @param {string} context context for relative path
26
28
  * @param {string} maybeAbsolutePath path to make relative
27
29
  * @returns {string} relative path in request style
@@ -70,6 +72,7 @@ const absoluteToRequest = (context, maybeAbsolutePath) => {
70
72
  };
71
73
 
72
74
  /**
75
+ * Request to absolute.
73
76
  * @param {string} context context for relative path
74
77
  * @param {string} relativePath path
75
78
  * @returns {string} absolute path
@@ -84,27 +87,32 @@ const requestToAbsolute = (context, relativePath) => {
84
87
  /** @typedef {EXPECTED_OBJECT} AssociatedObjectForCache */
85
88
 
86
89
  /**
90
+ * Defines the make cacheable result type used by this module.
87
91
  * @template T
88
92
  * @typedef {(value: string, cache?: AssociatedObjectForCache) => T} MakeCacheableResult
89
93
  */
90
94
 
91
95
  /**
96
+ * Defines the bind cache result fn type used by this module.
92
97
  * @template T
93
98
  * @typedef {(value: string) => T} BindCacheResultFn
94
99
  */
95
100
 
96
101
  /**
102
+ * Defines the bind cache type used by this module.
97
103
  * @template T
98
104
  * @typedef {(cache: AssociatedObjectForCache) => BindCacheResultFn<T>} BindCache
99
105
  */
100
106
 
101
107
  /**
108
+ * Returns } cacheable function.
102
109
  * @template T
103
110
  * @param {((value: string) => T)} realFn real function
104
111
  * @returns {MakeCacheableResult<T> & { bindCache: BindCache<T> }} cacheable function
105
112
  */
106
113
  const makeCacheable = (realFn) => {
107
114
  /**
115
+ * Defines the cache item type used by this module.
108
116
  * @template T
109
117
  * @typedef {Map<string, T>} CacheItem
110
118
  */
@@ -112,6 +120,7 @@ const makeCacheable = (realFn) => {
112
120
  const cache = new WeakMap();
113
121
 
114
122
  /**
123
+ * Returns cache item.
115
124
  * @param {AssociatedObjectForCache} associatedObjectForCache an object to which the cache will be attached
116
125
  * @returns {CacheItem<T>} cache item
117
126
  */
@@ -139,6 +148,7 @@ const makeCacheable = (realFn) => {
139
148
  fn.bindCache = (associatedObjectForCache) => {
140
149
  const cache = getCache(associatedObjectForCache);
141
150
  /**
151
+ * Returns value.
142
152
  * @param {string} str string
143
153
  * @returns {T} value
144
154
  */
@@ -161,6 +171,7 @@ const makeCacheable = (realFn) => {
161
171
  /** @typedef {(value: string, associatedObjectForCache?: AssociatedObjectForCache) => BindContextCacheForContextResultFn} BindContextCacheForContext */
162
172
 
163
173
  /**
174
+ * Creates cacheable with context.
164
175
  * @param {(context: string, identifier: string) => string} fn function
165
176
  * @returns {MakeCacheableWithContextResult & { bindCache: BindCacheForContext, bindContextCache: BindContextCacheForContext }} cacheable function with context
166
177
  */
@@ -211,6 +222,7 @@ const makeCacheableWithContext = (fn) => {
211
222
  }
212
223
 
213
224
  /**
225
+ * Returns the returned relative path.
214
226
  * @param {string} context context used to create relative path
215
227
  * @param {string} identifier identifier used to create relative path
216
228
  * @returns {string} the returned relative path
@@ -256,6 +268,7 @@ const makeCacheableWithContext = (fn) => {
256
268
  }
257
269
 
258
270
  /**
271
+ * Returns the returned relative path.
259
272
  * @param {string} identifier identifier used to create relative path
260
273
  * @returns {string} the returned relative path
261
274
  */
@@ -276,6 +289,7 @@ const makeCacheableWithContext = (fn) => {
276
289
  };
277
290
 
278
291
  /**
292
+ * Make paths relative.
279
293
  * @param {string} context context for relative path
280
294
  * @param {string} identifier identifier for path
281
295
  * @returns {string} a converted relative path
@@ -287,6 +301,7 @@ const _makePathsRelative = (context, identifier) =>
287
301
  .join("");
288
302
 
289
303
  /**
304
+ * Make paths absolute.
290
305
  * @param {string} context context for relative path
291
306
  * @param {string} identifier identifier for path
292
307
  * @returns {string} a converted relative path
@@ -298,6 +313,7 @@ const _makePathsAbsolute = (context, identifier) =>
298
313
  .join("");
299
314
 
300
315
  /**
316
+ * Returns a new request string avoiding absolute paths when possible.
301
317
  * @param {string} context absolute context path
302
318
  * @param {string} request any request string may containing absolute paths, query string, etc.
303
319
  * @returns {string} a new request string avoiding absolute paths when possible
@@ -311,6 +327,7 @@ const _contextify = (context, request) =>
311
327
  const contextify = makeCacheableWithContext(_contextify);
312
328
 
313
329
  /**
330
+ * Returns a new request string using absolute paths when possible.
314
331
  * @param {string} context absolute context path
315
332
  * @param {string} request any request string
316
333
  * @returns {string} a new request string using absolute paths when possible
@@ -332,6 +349,7 @@ const ZERO_ESCAPE_REGEXP = /\0(.)/g;
332
349
  /** @typedef {{ resource: string, path: string, query: string }} ParsedResourceWithoutFragment */
333
350
 
334
351
  /**
352
+ * Returns parsed parts.
335
353
  * @param {string} str the path with query and fragment
336
354
  * @returns {ParsedResource} parsed parts
337
355
  */
@@ -428,6 +446,7 @@ const _parseResourceWithoutFragment = (str) => {
428
446
  };
429
447
 
430
448
  /**
449
+ * Returns repeated ../ to leave the directory of the provided filename to be back on output dir.
431
450
  * @param {string} filename the filename which should be undone
432
451
  * @param {string} outputPath the output path that is restored (only relevant when filename contains "..")
433
452
  * @param {boolean} enforceRelative true returns ./ for empty paths
@@ -460,9 +479,57 @@ const getUndoPath = (filename, outputPath, enforceRelative) => {
460
479
  : append;
461
480
  };
462
481
 
482
+ const HASH_REGEXP = /(?<!\0)#/g;
483
+
484
+ /**
485
+ * Escape `#` characters that appear inside a path request's directory portion
486
+ * with the `\0#` escape recognized by enhanced-resolve, so a project located at
487
+ * a path like `/home/user/proj#1/` (or `./proj#1/`) resolves correctly. Applies
488
+ * to absolute paths (Unix or Windows) and relative paths (starting with `./` or
489
+ * `../`). Only triggers when a query string is present, because that is the case
490
+ * where the resolver's parseIdentifier fails (without a `?`, the resolver
491
+ * handles directory `#` via its own fallback). A `#` after the last path
492
+ * separator is left alone so that explicit fragment requests like
493
+ * `/abs/path/file.js#fragment` still behave the same. Bare module specifiers
494
+ * are not touched. Already-escaped `\0#` sequences are preserved so the
495
+ * explicit opt-out remains stable.
496
+ * @param {string} request request to potentially escape
497
+ * @returns {string} request with directory `#` characters escaped
498
+ */
499
+ const escapeHashInPathRequest = (request) => {
500
+ if (request.length === 0) return request;
501
+ const queryStart = request.indexOf("?");
502
+ if (queryStart < 0) return request;
503
+ const hashStart = request.indexOf("#");
504
+ if (hashStart < 0 || hashStart >= queryStart) return request;
505
+ const c0 = request.charCodeAt(0);
506
+ const isAbsolute =
507
+ c0 === 47 /* "/" */ || WINDOWS_ABS_PATH_REGEXP.test(request);
508
+ let isRelative = false;
509
+ if (!isAbsolute && c0 === 46 /* "." */) {
510
+ const c1 = request.charCodeAt(1);
511
+ if (c1 === 47 || c1 === 92 /* "/" or "\" */) {
512
+ isRelative = true;
513
+ } else if (c1 === 46 /* "." */) {
514
+ const c2 = request.charCodeAt(2);
515
+ if (c2 === 47 || c2 === 92) isRelative = true;
516
+ }
517
+ }
518
+ if (!isAbsolute && !isRelative) return request;
519
+ const lastSep = Math.max(
520
+ request.lastIndexOf("/", queryStart - 1),
521
+ request.lastIndexOf("\\", queryStart - 1)
522
+ );
523
+ if (hashStart >= lastSep) return request;
524
+ const pathPart = request.slice(0, lastSep);
525
+ return pathPart.replace(HASH_REGEXP, "\0#") + request.slice(lastSep);
526
+ };
527
+
463
528
  module.exports.absolutify = absolutify;
464
529
  module.exports.contextify = contextify;
530
+ module.exports.escapeHashInPathRequest = escapeHashInPathRequest;
465
531
  module.exports.getUndoPath = getUndoPath;
532
+ module.exports.makeCacheable = makeCacheable;
466
533
  module.exports.makePathsAbsolute = makeCacheableWithContext(_makePathsAbsolute);
467
534
  module.exports.makePathsRelative = makeCacheableWithContext(_makePathsRelative);
468
535
  module.exports.parseResource = makeCacheable(_parseResource);
@@ -12,7 +12,6 @@
12
12
  // to process this
13
13
  module.exports = {
14
14
  AsyncDependenciesBlock: () => require("../AsyncDependenciesBlock"),
15
- CommentCompilationWarning: () => require("../CommentCompilationWarning"),
16
15
  ContextModule: () => require("../ContextModule"),
17
16
  "cache/PackFileCacheStrategy": () =>
18
17
  require("../cache/PackFileCacheStrategy"),
@@ -109,6 +108,14 @@ module.exports = {
109
108
  require("../dependencies/HarmonyImportSpecifierDependency"),
110
109
  "dependencies/HarmonyEvaluatedImportSpecifierDependency": () =>
111
110
  require("../dependencies/HarmonyEvaluatedImportSpecifierDependency"),
111
+ "dependencies/HtmlInlineScriptDependency": () =>
112
+ require("../dependencies/HtmlInlineScriptDependency"),
113
+ "dependencies/HtmlInlineStyleDependency": () =>
114
+ require("../dependencies/HtmlInlineStyleDependency"),
115
+ "dependencies/HtmlScriptSrcDependency": () =>
116
+ require("../dependencies/HtmlScriptSrcDependency"),
117
+ "dependencies/HtmlSourceDependency": () =>
118
+ require("../dependencies/HtmlSourceDependency"),
112
119
  "dependencies/ImportContextDependency": () =>
113
120
  require("../dependencies/ImportContextDependency"),
114
121
  "dependencies/ImportDependency": () =>
@@ -179,23 +186,14 @@ module.exports = {
179
186
  "json/JsonData": () => require("../json/JsonData"),
180
187
  "optimize/ConcatenatedModule": () =>
181
188
  require("../optimize/ConcatenatedModule"),
182
- DelegatedModule: () => require("../DelegatedModule"),
189
+
183
190
  DependenciesBlock: () => require("../DependenciesBlock"),
184
- DllModule: () => require("../DllModule"),
185
191
  ExternalModule: () => require("../ExternalModule"),
186
192
  FileSystemInfo: () => require("../FileSystemInfo"),
187
193
  InitFragment: () => require("../InitFragment"),
188
- InvalidDependenciesModuleWarning: () =>
189
- require("../InvalidDependenciesModuleWarning"),
190
- Module: () => require("../Module"),
191
- ModuleBuildError: () => require("../ModuleBuildError"),
192
- ModuleDependencyWarning: () => require("../ModuleDependencyWarning"),
193
- ModuleError: () => require("../ModuleError"),
194
194
  ModuleGraph: () => require("../ModuleGraph"),
195
- ModuleParseError: () => require("../ModuleParseError"),
196
- ModuleWarning: () => require("../ModuleWarning"),
197
195
  NormalModule: () => require("../NormalModule"),
198
- CssModule: () => require("../CssModule"),
196
+ CssModule: () => require("../css/CssModule"),
199
197
  RawDataUrlModule: () => require("../asset/RawDataUrlModule"),
200
198
  RawModule: () => require("../RawModule"),
201
199
  "sharing/ConsumeSharedModule": () =>
@@ -208,14 +206,32 @@ module.exports = {
208
206
  require("../sharing/ProvideSharedDependency"),
209
207
  "sharing/ProvideForSharedDependency": () =>
210
208
  require("../sharing/ProvideForSharedDependency"),
211
- UnsupportedFeatureWarning: () => require("../UnsupportedFeatureWarning"),
212
- "util/LazySet": () => require("../util/LazySet"),
213
- UnhandledSchemeError: () => require("../UnhandledSchemeError"),
214
- NodeStuffInWebError: () => require("../NodeStuffInWebError"),
215
- EnvironmentNotSupportAsyncWarning: () =>
216
- require("../EnvironmentNotSupportAsyncWarning"),
217
- WebpackError: () => require("../WebpackError"),
218
209
 
210
+ "errors/WebpackError": () => require("../errors/WebpackError"),
211
+ "errors/InvalidDependenciesModuleWarning": () =>
212
+ require("../errors/InvalidDependenciesModuleWarning"),
213
+ "errors/Module": () => require("../Module"),
214
+ "errors/ModuleParseError": () => require("../errors/ModuleParseError"),
215
+ "errors/ModuleWarning": () => require("../errors/ModuleWarning"),
216
+ "errors/ModuleBuildError": () => require("../errors/ModuleBuildError"),
217
+ "errors/ModuleDependencyWarning": () =>
218
+ require("../errors/ModuleDependencyWarning"),
219
+ "errors/ModuleError": () => require("../errors/ModuleError"),
220
+ "errors/UnhandledSchemeError": () =>
221
+ require("../errors/UnhandledSchemeError"),
222
+ "errors/UnsupportedFeatureWarning": () =>
223
+ require("../errors/UnsupportedFeatureWarning"),
224
+ "errors/EnvironmentNotSupportAsyncWarning": () =>
225
+ require("../errors/EnvironmentNotSupportAsyncWarning"),
226
+ "errors/CommentCompilationWarning": () =>
227
+ require("../errors/CommentCompilationWarning"),
228
+ "errors/NodeStuffInWebError": () => require("../errors/NodeStuffInWebError"),
229
+ "errors/JSONParseError": () => require("../errors/JSONParseError"),
230
+
231
+ "dll/DelegatedModule": () => require("../dll/DelegatedModule"),
232
+ "dll/DllModule": () => require("../dll/DllModule"),
233
+
234
+ "util/LazySet": () => require("../util/LazySet"),
219
235
  "util/registerExternalSerializer": () => {
220
236
  // already registered
221
237
  }
@@ -9,17 +9,21 @@ const memoize = require("./memoize");
9
9
 
10
10
  const getVm = memoize(() => require("vm"));
11
11
 
12
- // regexp to match at least one "magic comment"
12
+ module.exports.CompilerHintNotationRegExp = Object.freeze({
13
+ Pure: /^\s*(?:#|@)__PURE__\s*$/,
14
+ NoSideEffects: /^\s*[#@]__NO_SIDE_EFFECTS__\s*$/
15
+ });
16
+
17
+ /**
18
+ * regexp to match at least one "magic comment"
19
+ * @returns {import("vm").Context} magic comment context
20
+ */
13
21
  module.exports.createMagicCommentContext = () =>
14
22
  getVm().createContext(undefined, {
15
23
  name: "Webpack Magic Comment Parser",
16
24
  codeGeneration: { strings: false, wasm: false }
17
25
  });
26
+
18
27
  module.exports.webpackCommentRegExp = new RegExp(
19
28
  /(^|\W)webpack[A-Z][A-Za-z]+:/
20
29
  );
21
-
22
- // regexp to match at least one "magic comment"
23
- /**
24
- * @returns {import("vm").Context} magic comment context
25
- */
@@ -12,15 +12,18 @@ const { register } = require("./serialization");
12
12
 
13
13
  /** @typedef {{ serialize: (context: ObjectSerializerContext) => void, deserialize: (context: ObjectDeserializerContext) => void }} SerializableClass */
14
14
  /**
15
+ * Defines the serializable class constructor type used by this module.
15
16
  * @template {SerializableClass} T
16
17
  * @typedef {(new (...params: EXPECTED_ANY[]) => T) & { deserialize?: (context: ObjectDeserializerContext) => T }} SerializableClassConstructor
17
18
  */
18
19
 
19
20
  /**
21
+ * Represents ClassSerializer.
20
22
  * @template {SerializableClass} T
21
23
  */
22
24
  class ClassSerializer {
23
25
  /**
26
+ * Creates an instance of ClassSerializer.
24
27
  * @param {SerializableClassConstructor<T>} Constructor constructor
25
28
  */
26
29
  constructor(Constructor) {
@@ -28,6 +31,7 @@ class ClassSerializer {
28
31
  }
29
32
 
30
33
  /**
34
+ * Serializes this instance into the provided serializer context.
31
35
  * @param {T} obj obj
32
36
  * @param {ObjectSerializerContext} context context
33
37
  */
@@ -36,6 +40,7 @@ class ClassSerializer {
36
40
  }
37
41
 
38
42
  /**
43
+ * Restores this instance from the provided deserializer context.
39
44
  * @param {ObjectDeserializerContext} context context
40
45
  * @returns {T} obj
41
46
  */
@@ -50,6 +55,7 @@ class ClassSerializer {
50
55
  }
51
56
 
52
57
  /**
58
+ * Processes the provided constructor.
53
59
  * @template {Constructor} T
54
60
  * @param {T} Constructor the constructor
55
61
  * @param {string} request the request which will be required when deserializing
@@ -5,11 +5,13 @@
5
5
  "use strict";
6
6
 
7
7
  /**
8
+ * Defines the function returning type used by this module.
8
9
  * @template T
9
10
  * @typedef {() => T} FunctionReturning
10
11
  */
11
12
 
12
13
  /**
14
+ * Returns new function.
13
15
  * @template T
14
16
  * @param {FunctionReturning<T>} fn memorized function
15
17
  * @returns {FunctionReturning<T>} new function
@@ -0,0 +1,176 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const { extname } = require("path");
8
+ const db = require("mime-db");
9
+
10
+ /**
11
+ * RegExp to match type in RFC 6838
12
+ *
13
+ * type-name = restricted-name
14
+ * subtype-name = restricted-name
15
+ * restricted-name = restricted-name-first *126restricted-name-chars
16
+ * restricted-name-first = ALPHA / DIGIT
17
+ * restricted-name-chars = ALPHA / DIGIT / "!" / "#" / "$" / "&" / "-" / "^" / "_"
18
+ * restricted-name-chars =/ "." ; Characters before first dot always specify a facet name
19
+ * restricted-name-chars =/ "+" ; Characters after last plus always specify a structured syntax suffix
20
+ * ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
21
+ * DIGIT = %x30-39 ; 0-9
22
+ */
23
+ const TYPE_REGEXP =
24
+ /^ *(([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126})) *(?:;.*)?$/;
25
+ const extensions = Object.create(null);
26
+ const types = Object.create(null);
27
+
28
+ // Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3)
29
+
30
+ /** @type {Record<string, number>} */
31
+ const FACET_SCORES = {
32
+ "prs.": 100,
33
+ "x-": 200,
34
+ "x.": 300,
35
+ "vnd.": 400,
36
+ default: 900
37
+ };
38
+
39
+ /** @typedef {"nginx" | "apache" | "iana" | "default"} SourceScore */
40
+
41
+ // Score mime source (Logic originally from `jshttp/mime-types` module)
42
+ /** @type {Record<SourceScore, number>} */
43
+ const SOURCE_SCORES = {
44
+ nginx: 10,
45
+ apache: 20,
46
+ iana: 40,
47
+ default: 30
48
+ };
49
+
50
+ /** @type {Record<string, number>} */
51
+ const TYPE_SCORES = {
52
+ // prefer application/xml over text/xml
53
+ // prefer application/rtf over text/rtf
54
+ application: 1,
55
+
56
+ // prefer font/woff over application/font-woff
57
+ font: 2,
58
+
59
+ // prefer video/mp4 over audio/mp4 over application/mp4
60
+ // See https://www.rfc-editor.org/rfc/rfc4337.html#section-2
61
+ audio: 2,
62
+ video: 3,
63
+
64
+ default: 0
65
+ };
66
+
67
+ /**
68
+ * @param {string} mimeType mime type
69
+ * @param {SourceScore=} source source
70
+ * @returns {number} min score
71
+ */
72
+ function mimeScore(mimeType, source = "default") {
73
+ if (mimeType === "application/octet-stream") {
74
+ return 0;
75
+ }
76
+
77
+ const [type, subtype] = mimeType.split("/");
78
+
79
+ const facet = subtype.replace(/(\.|x-).*/, "$1");
80
+
81
+ const facetScore = FACET_SCORES[facet] || FACET_SCORES.default;
82
+ const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default;
83
+ const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default;
84
+
85
+ // All else being equal prefer shorter types
86
+ const lengthScore = 1 - mimeType.length / 100;
87
+
88
+ return facetScore + sourceScore + typeScore + lengthScore;
89
+ }
90
+
91
+ /**
92
+ * @param {string} ext extension
93
+ * @param {string} type0 the first type
94
+ * @param {string} type1 the second type
95
+ * @returns {string} preferred type
96
+ */
97
+ const preferredType = (ext, type0, type1) => {
98
+ const score0 = type0 ? mimeScore(type0, db[type0].source) : 0;
99
+ const score1 = type1 ? mimeScore(type1, db[type1].source) : 0;
100
+
101
+ return score0 > score1 ? type0 : type1;
102
+ };
103
+
104
+ /**
105
+ * @param {Record<string, readonly string[]>} extensions extensions
106
+ * @param {Record<string, string>} types types
107
+ */
108
+ const populate = (extensions, types) => {
109
+ for (const type of Object.keys(db)) {
110
+ const mime = db[type];
111
+ const foundExtensions = mime.extensions;
112
+
113
+ if (!foundExtensions || foundExtensions.length === 0) {
114
+ continue;
115
+ }
116
+
117
+ // mime -> extensions
118
+ extensions[type] = foundExtensions;
119
+
120
+ // extension -> mime
121
+ for (let i = 0; i < foundExtensions.length; i++) {
122
+ const extension = foundExtensions[i];
123
+
124
+ types[extension] = preferredType(extension, types[extension], type);
125
+ }
126
+ }
127
+ };
128
+
129
+ populate(extensions, types);
130
+
131
+ /**
132
+ * Get the default extension for a MIME type.
133
+ * @param {string} type type
134
+ * @returns {undefined | string} resolve extension
135
+ */
136
+ const extension = (type) => {
137
+ if (!type) {
138
+ return;
139
+ }
140
+
141
+ const match = TYPE_REGEXP.exec(type);
142
+
143
+ if (!match) {
144
+ return;
145
+ }
146
+
147
+ const possibleExtensions = extensions[match[1].toLowerCase()];
148
+
149
+ if (!possibleExtensions || possibleExtensions.length === 0) {
150
+ return;
151
+ }
152
+
153
+ return possibleExtensions[0];
154
+ };
155
+
156
+ /**
157
+ * Lookup the MIME type for a file path/extension.
158
+ * @param {string} path path
159
+ * @returns {undefined | string} resolved MIME type
160
+ */
161
+ const lookup = (path) => {
162
+ if (!path) {
163
+ return;
164
+ }
165
+
166
+ // get the extension ("ext" or ".ext" or full path)
167
+ const extension = extname(`x.${path}`).toLowerCase().slice(1);
168
+
169
+ if (!extension) {
170
+ return;
171
+ }
172
+
173
+ return types[extension];
174
+ };
175
+
176
+ module.exports = { extension, lookup };
@@ -8,6 +8,7 @@
8
8
  const A_CODE = "a".charCodeAt(0);
9
9
 
10
10
  /**
11
+ * Returns hash that has at least one non numeric char.
11
12
  * @param {string} hash hash
12
13
  * @param {number} hashLength hash length
13
14
  * @returns {string} returns hash that has at least one non numeric char
@@ -0,0 +1,41 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const JSONParseError = require("../errors/JSONParseError");
8
+
9
+ /** @typedef {import("../util/fs").JsonValue} JsonValue */
10
+
11
+ // Inspired by https://github.com/npm/json-parse-even-better-errors
12
+
13
+ // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
14
+ // because the buffer-to-string conversion in `fs.readFileSync()`
15
+ // translates it to FEFF, the UTF-16 BOM.
16
+ /**
17
+ * @param {string | Buffer} txt text
18
+ * @returns {string} text without BOM
19
+ */
20
+ const stripBOM = (txt) => String(txt).replace(/^\uFEFF/, "");
21
+
22
+ /**
23
+ * @template [R=JsonValue]
24
+ * @callback ParseJsonFn
25
+ * @param {string} raw text
26
+ * @param {(this: EXPECTED_ANY, key: string, value: EXPECTED_ANY) => EXPECTED_ANY=} reviver reviver
27
+ * @returns {R} parsed JSON
28
+ */
29
+
30
+ /** @type {ParseJsonFn} */
31
+ const parseJson = (raw, reviver) => {
32
+ const txt = stripBOM(raw);
33
+
34
+ try {
35
+ return JSON.parse(txt, reviver);
36
+ } catch (err) {
37
+ throw new JSONParseError(/** @type {Error} */ (err), raw, txt);
38
+ }
39
+ };
40
+
41
+ module.exports = parseJson;
@@ -6,6 +6,10 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Walks a dynamically expanding async work tree with bounded concurrency.
10
+ * Each processed item may enqueue more items through `push`, allowing callers
11
+ * to model breadth-first or depth-first discovery without managing the queue
12
+ * themselves.
9
13
  * @template T
10
14
  * @template {Error} E
11
15
  * @param {Iterable<T>} items initial items
@@ -22,6 +26,8 @@ const processAsyncTree = (items, concurrency, processor, callback) => {
22
26
  let processScheduled = true;
23
27
 
24
28
  /**
29
+ * Enqueues a newly discovered item and schedules queue processing when the
30
+ * current concurrency budget allows more work to start.
25
31
  * @param {T} item item
26
32
  */
27
33
  const push = (item) => {
@@ -33,6 +39,8 @@ const processAsyncTree = (items, concurrency, processor, callback) => {
33
39
  };
34
40
 
35
41
  /**
42
+ * Handles completion of a single processor call, propagating the first
43
+ * error and scheduling more queued work when possible.
36
44
  * @param {E | null | undefined} err error
37
45
  */
38
46
  const processorCallback = (err) => {
@@ -74,6 +74,7 @@ const propertyName = (prop) => {
74
74
  };
75
75
 
76
76
  /**
77
+ * Returns chain of property accesses.
77
78
  * @param {ArrayLike<string>} properties properties
78
79
  * @param {number} start start index
79
80
  * @returns {string} chain of property accesses