webpack 5.106.0 → 5.106.2

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 (553) hide show
  1. package/lib/APIPlugin.js +3 -1
  2. package/lib/AbstractMethodError.js +10 -1
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AsyncDependencyToInitialChunkError.js +6 -1
  5. package/lib/AutomaticPrefetchPlugin.js +6 -1
  6. package/lib/BannerPlugin.js +10 -1
  7. package/lib/Cache.js +26 -1
  8. package/lib/CacheFacade.js +26 -0
  9. package/lib/CaseSensitiveModulesWarning.js +9 -1
  10. package/lib/Chunk.js +46 -0
  11. package/lib/ChunkGraph.js +111 -0
  12. package/lib/ChunkGroup.js +57 -13
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CleanPlugin.js +14 -1
  15. package/lib/CodeGenerationResults.js +19 -0
  16. package/lib/CommentCompilationWarning.js +6 -0
  17. package/lib/CompatibilityPlugin.js +15 -1
  18. package/lib/Compilation.js +127 -1
  19. package/lib/Compiler.js +37 -4
  20. package/lib/ConcatenationScope.js +24 -1
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +4 -1
  23. package/lib/ContextExclusionPlugin.js +2 -1
  24. package/lib/ContextModule.js +12 -0
  25. package/lib/ContextModuleFactory.js +10 -0
  26. package/lib/ContextReplacementPlugin.js +4 -1
  27. package/lib/CssModule.js +6 -0
  28. package/lib/DefinePlugin.js +20 -7
  29. package/lib/DelegatedModule.js +13 -0
  30. package/lib/DelegatedModuleFactoryPlugin.js +3 -0
  31. package/lib/DelegatedPlugin.js +2 -1
  32. package/lib/DependenciesBlock.js +6 -1
  33. package/lib/Dependency.js +26 -3
  34. package/lib/DependencyTemplate.js +5 -0
  35. package/lib/DependencyTemplates.js +4 -0
  36. package/lib/DllEntryPlugin.js +2 -1
  37. package/lib/DllModule.js +11 -0
  38. package/lib/DllModuleFactory.js +1 -0
  39. package/lib/DllPlugin.js +2 -1
  40. package/lib/DllReferencePlugin.js +11 -6
  41. package/lib/DotenvPlugin.js +3 -0
  42. package/lib/DynamicEntryPlugin.js +3 -1
  43. package/lib/EntryOptionPlugin.js +3 -0
  44. package/lib/EntryPlugin.js +2 -1
  45. package/lib/Entrypoint.js +4 -0
  46. package/lib/EnvironmentPlugin.js +2 -1
  47. package/lib/ErrorHelpers.js +7 -0
  48. package/lib/EvalDevToolModulePlugin.js +3 -1
  49. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  50. package/lib/ExportsInfo.js +56 -2
  51. package/lib/ExportsInfoApiPlugin.js +2 -1
  52. package/lib/ExternalModule.js +38 -0
  53. package/lib/ExternalModuleFactoryPlugin.js +10 -0
  54. package/lib/ExternalsPlugin.js +2 -1
  55. package/lib/FileSystemInfo.js +105 -0
  56. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  57. package/lib/FlagDependencyExportsPlugin.js +4 -1
  58. package/lib/FlagDependencyUsagePlugin.js +5 -1
  59. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  60. package/lib/Generator.js +13 -0
  61. package/lib/GraphHelpers.js +3 -0
  62. package/lib/HookWebpackError.js +6 -0
  63. package/lib/HotModuleReplacementPlugin.js +9 -1
  64. package/lib/IgnoreErrorModuleFactory.js +2 -0
  65. package/lib/IgnorePlugin.js +2 -1
  66. package/lib/IgnoreWarningsPlugin.js +2 -1
  67. package/lib/InitFragment.js +10 -0
  68. package/lib/InvalidDependenciesModuleWarning.js +1 -0
  69. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  70. package/lib/LibManifestPlugin.js +4 -1
  71. package/lib/LibraryTemplatePlugin.js +2 -1
  72. package/lib/LoaderOptionsPlugin.js +3 -1
  73. package/lib/LoaderTargetPlugin.js +2 -1
  74. package/lib/MainTemplate.js +15 -0
  75. package/lib/ManifestPlugin.js +9 -2
  76. package/lib/Module.js +82 -4
  77. package/lib/ModuleBuildError.js +3 -0
  78. package/lib/ModuleDependencyWarning.js +1 -0
  79. package/lib/ModuleError.js +2 -0
  80. package/lib/ModuleFactory.js +5 -0
  81. package/lib/ModuleFilenameHelpers.js +3 -0
  82. package/lib/ModuleGraph.js +66 -0
  83. package/lib/ModuleGraphConnection.js +9 -0
  84. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  85. package/lib/ModuleNotFoundError.js +1 -0
  86. package/lib/ModuleParseError.js +3 -0
  87. package/lib/ModuleRestoreError.js +1 -0
  88. package/lib/ModuleSourceTypeConstants.js +1 -0
  89. package/lib/ModuleStoreError.js +1 -0
  90. package/lib/ModuleTemplate.js +8 -0
  91. package/lib/ModuleWarning.js +3 -0
  92. package/lib/MultiCompiler.js +28 -0
  93. package/lib/MultiStats.js +8 -0
  94. package/lib/MultiWatching.js +3 -0
  95. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  96. package/lib/NodeStuffInWebError.js +1 -0
  97. package/lib/NodeStuffPlugin.js +10 -1
  98. package/lib/NormalModule.js +30 -2
  99. package/lib/NormalModuleFactory.js +25 -0
  100. package/lib/NormalModuleReplacementPlugin.js +1 -1
  101. package/lib/NullFactory.js +1 -0
  102. package/lib/OptionsApply.js +1 -0
  103. package/lib/Parser.js +2 -0
  104. package/lib/PlatformPlugin.js +2 -1
  105. package/lib/PrefetchPlugin.js +2 -1
  106. package/lib/ProgressPlugin.js +29 -12
  107. package/lib/ProvidePlugin.js +3 -1
  108. package/lib/RawModule.js +12 -0
  109. package/lib/RecordIdsPlugin.js +8 -0
  110. package/lib/RequestShortener.js +8 -0
  111. package/lib/RequireJsStuffPlugin.js +2 -1
  112. package/lib/ResolverFactory.js +5 -0
  113. package/lib/RuntimeGlobals.js +1 -0
  114. package/lib/RuntimeModule.js +13 -0
  115. package/lib/RuntimePlugin.js +2 -0
  116. package/lib/RuntimeTemplate.js +35 -1
  117. package/lib/SelfModuleFactory.js +2 -0
  118. package/lib/SizeFormatHelpers.js +1 -0
  119. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  120. package/lib/SourceMapDevToolPlugin.js +3 -1
  121. package/lib/Stats.js +5 -0
  122. package/lib/Template.js +20 -0
  123. package/lib/TemplatedPathPlugin.js +10 -3
  124. package/lib/UnhandledSchemeError.js +6 -0
  125. package/lib/UnsupportedFeatureWarning.js +1 -0
  126. package/lib/UseStrictPlugin.js +2 -1
  127. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -1
  128. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  129. package/lib/WarnNoModeSetPlugin.js +1 -1
  130. package/lib/WatchIgnorePlugin.js +4 -1
  131. package/lib/Watching.js +14 -0
  132. package/lib/WebpackError.js +3 -0
  133. package/lib/WebpackIsIncludedPlugin.js +2 -0
  134. package/lib/WebpackOptionsApply.js +1 -0
  135. package/lib/WebpackOptionsDefaulter.js +1 -0
  136. package/lib/asset/AssetBytesGenerator.js +6 -0
  137. package/lib/asset/AssetBytesParser.js +1 -0
  138. package/lib/asset/AssetGenerator.js +20 -2
  139. package/lib/asset/AssetModulesPlugin.js +4 -1
  140. package/lib/asset/AssetParser.js +2 -0
  141. package/lib/asset/AssetSourceGenerator.js +6 -0
  142. package/lib/asset/AssetSourceParser.js +1 -0
  143. package/lib/asset/RawDataUrlModule.js +11 -0
  144. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  145. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  146. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  147. package/lib/buildChunkGraph.js +15 -0
  148. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  149. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  150. package/lib/cache/IdleFileCachePlugin.js +2 -1
  151. package/lib/cache/MemoryCachePlugin.js +1 -1
  152. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  153. package/lib/cache/PackFileCacheStrategy.js +29 -0
  154. package/lib/cache/ResolverCachePlugin.js +10 -1
  155. package/lib/cache/getLazyHashedEtag.js +4 -0
  156. package/lib/cache/mergeEtags.js +2 -0
  157. package/lib/cli.js +30 -0
  158. package/lib/config/browserslistTargetHandler.js +2 -0
  159. package/lib/config/defaults.js +35 -2
  160. package/lib/config/normalization.js +12 -0
  161. package/lib/config/target.js +11 -0
  162. package/lib/container/ContainerEntryDependency.js +2 -0
  163. package/lib/container/ContainerEntryModule.js +12 -0
  164. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  165. package/lib/container/ContainerExposedDependency.js +4 -0
  166. package/lib/container/ContainerPlugin.js +2 -1
  167. package/lib/container/ContainerReferencePlugin.js +2 -1
  168. package/lib/container/FallbackDependency.js +4 -0
  169. package/lib/container/FallbackItemDependency.js +1 -0
  170. package/lib/container/FallbackModule.js +12 -0
  171. package/lib/container/FallbackModuleFactory.js +1 -0
  172. package/lib/container/ModuleFederationPlugin.js +3 -1
  173. package/lib/container/RemoteModule.js +13 -0
  174. package/lib/container/RemoteRuntimeModule.js +1 -0
  175. package/lib/container/RemoteToExternalDependency.js +1 -0
  176. package/lib/container/options.js +7 -0
  177. package/lib/css/CssGenerator.js +35 -14
  178. package/lib/css/CssInjectStyleRuntimeModule.js +1 -0
  179. package/lib/css/CssLoadingRuntimeModule.js +1 -0
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +1 -0
  181. package/lib/css/CssModulesPlugin.js +69 -3
  182. package/lib/css/CssParser.js +71 -1
  183. package/lib/css/walkCssTokens.js +31 -0
  184. package/lib/debug/ProfilingPlugin.js +19 -1
  185. package/lib/dependencies/AMDDefineDependency.js +7 -0
  186. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  187. package/lib/dependencies/AMDPlugin.js +4 -1
  188. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  189. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  190. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  191. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +13 -0
  192. package/lib/dependencies/AMDRequireDependency.js +4 -0
  193. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  194. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  195. package/lib/dependencies/CachedConstDependency.js +6 -1
  196. package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
  197. package/lib/dependencies/CommonJsExportRequireDependency.js +8 -0
  198. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  199. package/lib/dependencies/CommonJsExportsParserPlugin.js +8 -0
  200. package/lib/dependencies/CommonJsFullRequireDependency.js +4 -0
  201. package/lib/dependencies/CommonJsImportsParserPlugin.js +20 -0
  202. package/lib/dependencies/CommonJsPlugin.js +4 -1
  203. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  204. package/lib/dependencies/CommonJsRequireDependency.js +3 -0
  205. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  206. package/lib/dependencies/ConstDependency.js +6 -1
  207. package/lib/dependencies/ContextDependency.js +8 -1
  208. package/lib/dependencies/ContextDependencyHelpers.js +3 -0
  209. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  210. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  211. package/lib/dependencies/ContextElementDependency.js +4 -0
  212. package/lib/dependencies/CreateRequireParserPlugin.js +6 -0
  213. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  214. package/lib/dependencies/CriticalDependencyWarning.js +1 -0
  215. package/lib/dependencies/CssIcssExportDependency.js +11 -3
  216. package/lib/dependencies/CssIcssImportDependency.js +4 -1
  217. package/lib/dependencies/CssIcssSymbolDependency.js +5 -1
  218. package/lib/dependencies/CssImportDependency.js +4 -0
  219. package/lib/dependencies/CssUrlDependency.js +7 -0
  220. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  221. package/lib/dependencies/DllEntryDependency.js +3 -0
  222. package/lib/dependencies/DynamicExports.js +5 -0
  223. package/lib/dependencies/EntryDependency.js +1 -0
  224. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  225. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  226. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  227. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  228. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  229. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  230. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  231. package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -0
  232. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  233. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +2 -0
  234. package/lib/dependencies/HarmonyExportExpressionDependency.js +14 -5
  235. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  236. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +33 -2
  237. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  238. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  239. package/lib/dependencies/HarmonyExports.js +2 -0
  240. package/lib/dependencies/HarmonyImportDependency.js +11 -0
  241. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +9 -0
  242. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  243. package/lib/dependencies/HarmonyImportSpecifierDependency.js +17 -2
  244. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  245. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  246. package/lib/dependencies/ImportContextDependency.js +4 -0
  247. package/lib/dependencies/ImportDependency.js +5 -0
  248. package/lib/dependencies/ImportEagerDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  250. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +3 -0
  251. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  252. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  253. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  254. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  255. package/lib/dependencies/ImportParserPlugin.js +7 -0
  256. package/lib/dependencies/ImportPhase.js +6 -2
  257. package/lib/dependencies/ImportPlugin.js +2 -1
  258. package/lib/dependencies/ImportWeakDependency.js +2 -0
  259. package/lib/dependencies/JsonExportsDependency.js +6 -1
  260. package/lib/dependencies/LoaderDependency.js +2 -0
  261. package/lib/dependencies/LoaderImportDependency.js +2 -0
  262. package/lib/dependencies/LoaderPlugin.js +4 -1
  263. package/lib/dependencies/LocalModule.js +4 -0
  264. package/lib/dependencies/LocalModuleDependency.js +4 -0
  265. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  266. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  267. package/lib/dependencies/ModuleDependency.js +7 -0
  268. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  269. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  270. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  271. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  272. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  273. package/lib/dependencies/NullDependency.js +2 -0
  274. package/lib/dependencies/PrefetchDependency.js +1 -0
  275. package/lib/dependencies/ProvidedDependency.js +6 -1
  276. package/lib/dependencies/PureExpressionDependency.js +7 -1
  277. package/lib/dependencies/RequireContextDependency.js +1 -0
  278. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  279. package/lib/dependencies/RequireContextPlugin.js +2 -1
  280. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  281. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  282. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  283. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  284. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  285. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  286. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  287. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  288. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  289. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  290. package/lib/dependencies/RequireResolveDependency.js +1 -0
  291. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  292. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  293. package/lib/dependencies/StaticExportsDependency.js +3 -0
  294. package/lib/dependencies/SystemPlugin.js +4 -1
  295. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  296. package/lib/dependencies/URLContextDependency.js +3 -0
  297. package/lib/dependencies/URLDependency.js +6 -0
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +4 -0
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  301. package/lib/dependencies/WebAssemblyImportDependency.js +4 -1
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  303. package/lib/dependencies/WorkerDependency.js +6 -1
  304. package/lib/dependencies/WorkerPlugin.js +9 -1
  305. package/lib/dependencies/getFunctionExpression.js +1 -0
  306. package/lib/dependencies/processExportInfo.js +1 -0
  307. package/lib/electron/ElectronTargetPlugin.js +2 -1
  308. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  309. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  310. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  311. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  312. package/lib/formatLocation.js +2 -0
  313. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  314. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  315. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  316. package/lib/hmr/lazyCompilationBackend.js +2 -0
  317. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  318. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  319. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  320. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  321. package/lib/ids/IdHelpers.js +20 -0
  322. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  323. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  324. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  325. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  326. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  327. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  328. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  329. package/lib/index.js +5 -0
  330. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  331. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  332. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  333. package/lib/javascript/ChunkHelpers.js +1 -0
  334. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  335. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  336. package/lib/javascript/JavascriptGenerator.js +10 -0
  337. package/lib/javascript/JavascriptModulesPlugin.js +23 -1
  338. package/lib/javascript/JavascriptParser.js +163 -0
  339. package/lib/javascript/JavascriptParserHelpers.js +6 -0
  340. package/lib/javascript/StartupHelpers.js +5 -0
  341. package/lib/json/JsonData.js +5 -0
  342. package/lib/json/JsonGenerator.js +21 -0
  343. package/lib/json/JsonModulesPlugin.js +1 -1
  344. package/lib/json/JsonParser.js +8 -10
  345. package/lib/library/AbstractLibraryPlugin.js +16 -1
  346. package/lib/library/AmdLibraryPlugin.js +8 -0
  347. package/lib/library/AssignLibraryPlugin.js +16 -0
  348. package/lib/library/EnableLibraryPlugin.js +7 -1
  349. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  350. package/lib/library/JsonpLibraryPlugin.js +8 -0
  351. package/lib/library/ModuleLibraryPlugin.js +12 -1
  352. package/lib/library/SystemLibraryPlugin.js +8 -0
  353. package/lib/library/UmdLibraryPlugin.js +16 -0
  354. package/lib/logging/Logger.js +17 -0
  355. package/lib/logging/createConsoleLogger.js +7 -0
  356. package/lib/logging/runtime.js +2 -0
  357. package/lib/logging/truncateArgs.js +2 -0
  358. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  359. package/lib/node/NodeEnvironmentPlugin.js +3 -1
  360. package/lib/node/NodeSourcePlugin.js +1 -1
  361. package/lib/node/NodeTargetPlugin.js +2 -1
  362. package/lib/node/NodeTemplatePlugin.js +3 -1
  363. package/lib/node/NodeWatchFileSystem.js +2 -0
  364. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  365. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  366. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  367. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  368. package/lib/node/nodeConsole.js +3 -0
  369. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  370. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  371. package/lib/optimize/ConcatenatedModule.js +11 -0
  372. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  373. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  374. package/lib/optimize/InnerGraph.js +15 -0
  375. package/lib/optimize/InnerGraphPlugin.js +3 -1
  376. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  377. package/lib/optimize/MangleExportsPlugin.js +5 -1
  378. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  379. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  380. package/lib/optimize/MinMaxSizeWarning.js +1 -0
  381. package/lib/optimize/ModuleConcatenationPlugin.js +21 -1
  382. package/lib/optimize/RealContentHashPlugin.js +16 -1
  383. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  384. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  385. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  386. package/lib/optimize/SideEffectsFlagPlugin.js +7 -1
  387. package/lib/optimize/SplitChunksPlugin.js +49 -1
  388. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -0
  389. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -0
  390. package/lib/performance/SizeLimitsPlugin.js +7 -1
  391. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  392. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  393. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  394. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -0
  395. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  396. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  397. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  398. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  399. package/lib/rules/RuleSetCompiler.js +18 -0
  400. package/lib/rules/UseEffectRulePlugin.js +6 -0
  401. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  402. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  403. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  404. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  405. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  406. package/lib/runtime/CompatRuntimeModule.js +2 -0
  407. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  408. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  409. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  410. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  411. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  412. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  413. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  414. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  415. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  416. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  417. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  418. package/lib/runtime/HelperRuntimeModule.js +5 -0
  419. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  420. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +2 -0
  421. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  422. package/lib/runtime/NonceRuntimeModule.js +1 -0
  423. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  424. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  425. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  426. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  427. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  428. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  429. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  430. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  431. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  432. package/lib/schemes/DataUriPlugin.js +1 -1
  433. package/lib/schemes/FileUriPlugin.js +1 -1
  434. package/lib/schemes/HttpUriPlugin.js +43 -1
  435. package/lib/schemes/VirtualUrlPlugin.js +6 -1
  436. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  437. package/lib/serialization/ArraySerializer.js +2 -0
  438. package/lib/serialization/BinaryMiddleware.js +20 -1
  439. package/lib/serialization/DateObjectSerializer.js +2 -0
  440. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  441. package/lib/serialization/FileMiddleware.js +21 -0
  442. package/lib/serialization/MapObjectSerializer.js +2 -0
  443. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  444. package/lib/serialization/ObjectMiddleware.js +23 -0
  445. package/lib/serialization/PlainObjectSerializer.js +7 -0
  446. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  447. package/lib/serialization/Serializer.js +5 -0
  448. package/lib/serialization/SerializerMiddleware.js +12 -0
  449. package/lib/serialization/SetObjectSerializer.js +2 -0
  450. package/lib/serialization/SingleItemMiddleware.js +3 -0
  451. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  452. package/lib/sharing/ConsumeSharedModule.js +15 -0
  453. package/lib/sharing/ConsumeSharedPlugin.js +6 -1
  454. package/lib/sharing/ConsumeSharedRuntimeModule.js +1 -0
  455. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  456. package/lib/sharing/ProvideSharedDependency.js +4 -0
  457. package/lib/sharing/ProvideSharedModule.js +11 -0
  458. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  459. package/lib/sharing/ProvideSharedPlugin.js +4 -1
  460. package/lib/sharing/SharePlugin.js +2 -1
  461. package/lib/sharing/ShareRuntimeModule.js +1 -0
  462. package/lib/sharing/resolveMatchedConfigs.js +3 -0
  463. package/lib/sharing/utils.js +8 -0
  464. package/lib/stats/DefaultStatsFactoryPlugin.js +56 -1
  465. package/lib/stats/DefaultStatsPresetPlugin.js +11 -1
  466. package/lib/stats/DefaultStatsPrinterPlugin.js +37 -1
  467. package/lib/stats/StatsFactory.js +12 -0
  468. package/lib/stats/StatsPrinter.js +7 -0
  469. package/lib/url/URLParserPlugin.js +6 -0
  470. package/lib/util/AppendOnlyStackedSet.js +15 -0
  471. package/lib/util/ArrayHelpers.js +1 -0
  472. package/lib/util/ArrayQueue.js +10 -5
  473. package/lib/util/AsyncQueue.js +20 -0
  474. package/lib/util/IterableHelpers.js +3 -0
  475. package/lib/util/LazyBucketSortedSet.js +21 -0
  476. package/lib/util/LazySet.js +39 -0
  477. package/lib/util/ParallelismFactorCalculator.js +1 -0
  478. package/lib/util/Queue.js +6 -3
  479. package/lib/util/Semaphore.js +14 -1
  480. package/lib/util/SetHelpers.js +3 -0
  481. package/lib/util/SortableSet.js +6 -0
  482. package/lib/util/StackedCacheMap.js +20 -3
  483. package/lib/util/StackedMap.js +45 -0
  484. package/lib/util/StringXor.js +1 -1
  485. package/lib/util/TupleQueue.js +7 -3
  486. package/lib/util/TupleSet.js +13 -0
  487. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  488. package/lib/util/WeakTupleMap.js +33 -0
  489. package/lib/util/binarySearchBounds.js +1 -0
  490. package/lib/util/cleverMerge.js +17 -0
  491. package/lib/util/comparators.js +31 -0
  492. package/lib/util/compileBooleanMatcher.js +9 -0
  493. package/lib/util/concatenate.js +6 -0
  494. package/lib/util/conventions.js +4 -0
  495. package/lib/util/dataURL.js +1 -0
  496. package/lib/util/deprecation.js +19 -0
  497. package/lib/util/deterministicGrouping.js +20 -0
  498. package/lib/util/extractSourceMap.js +1 -0
  499. package/lib/util/extractUrlAndGlobal.js +1 -0
  500. package/lib/util/findGraphRoots.js +5 -0
  501. package/lib/util/fs.js +63 -0
  502. package/lib/util/generateDebugId.js +1 -0
  503. package/lib/util/hash/BatchedHash.js +1 -0
  504. package/lib/util/hash/BulkUpdateHash.js +1 -0
  505. package/lib/util/hash/hash-digest.js +8 -0
  506. package/lib/util/hash/wasm-hash.js +5 -0
  507. package/lib/util/identifier.js +19 -0
  508. package/lib/util/magicComment.js +1 -0
  509. package/lib/util/makeSerializable.js +6 -0
  510. package/lib/util/memoize.js +2 -0
  511. package/lib/util/mimeTypes.js +176 -0
  512. package/lib/util/nonNumericOnlyHash.js +1 -0
  513. package/lib/util/parseJson.js +112 -0
  514. package/lib/util/processAsyncTree.js +8 -0
  515. package/lib/util/property.js +1 -0
  516. package/lib/util/registerExternalSerializer.js +20 -0
  517. package/lib/util/removeBOM.js +1 -0
  518. package/lib/util/runtime.js +32 -0
  519. package/lib/util/semver.js +15 -0
  520. package/lib/util/serialization.js +2 -0
  521. package/lib/util/smartGrouping.js +8 -0
  522. package/lib/util/source.js +2 -0
  523. package/lib/validateSchema.js +1 -0
  524. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  525. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  526. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  527. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  528. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  529. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +10 -1
  530. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -0
  531. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  532. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
  533. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  534. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +1 -1
  535. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  536. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
  537. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  538. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  539. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  540. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  541. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  542. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  543. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  544. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  545. package/lib/web/JsonpTemplatePlugin.js +2 -1
  546. package/lib/webpack.js +10 -0
  547. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  548. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  549. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  550. package/package.json +12 -14
  551. package/schemas/WebpackOptions.check.js +1 -1
  552. package/schemas/WebpackOptions.json +44 -55
  553. package/types.d.ts +4594 -331
@@ -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
@@ -21,5 +21,6 @@ module.exports.webpackCommentRegExp = new RegExp(
21
21
 
22
22
  // regexp to match at least one "magic comment"
23
23
  /**
24
+ * Returns magic comment context.
24
25
  * @returns {import("vm").Context} magic comment context
25
26
  */
@@ -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,112 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ /** @typedef {import("../util/fs").JsonValue} JsonValue */
8
+
9
+ // Inspired by https://github.com/npm/json-parse-even-better-errors
10
+
11
+ // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
12
+ // because the buffer-to-string conversion in `fs.readFileSync()`
13
+ // translates it to FEFF, the UTF-16 BOM.
14
+ /**
15
+ * @param {string | Buffer} txt text
16
+ * @returns {string} text without BOM
17
+ */
18
+ const stripBOM = (txt) => String(txt).replace(/^\uFEFF/, "");
19
+
20
+ class JSONParseError extends SyntaxError {
21
+ /**
22
+ * @param {Error} err err
23
+ * @param {EXPECTED_ANY} raw raw
24
+ * @param {string} txt text
25
+ * @param {number=} context context
26
+ * @param {EXPECTED_FUNCTION=} caller caller
27
+ */
28
+ constructor(err, raw, txt, context = 20, caller = parseJson) {
29
+ let originalMessage = err.message;
30
+ /** @type {string} */
31
+ let message;
32
+ /** @type {number} */
33
+ let position;
34
+
35
+ if (typeof raw !== "string") {
36
+ message = `Cannot parse ${Array.isArray(raw) && raw.length === 0 ? "an empty array" : String(raw)}`;
37
+ position = 0;
38
+ } else if (!txt) {
39
+ message = `${originalMessage} while parsing empty string`;
40
+ position = 0;
41
+ } else {
42
+ // Node 20 puts single quotes around the token and a comma after it
43
+ const UNEXPECTED_TOKEN = /^Unexpected token '?(.)'?(,)? /i;
44
+ const badTokenMatch = originalMessage.match(UNEXPECTED_TOKEN);
45
+ const badIndexMatch = originalMessage.match(/ position\s+(\d+)/i);
46
+
47
+ if (badTokenMatch) {
48
+ const h = badTokenMatch[1].charCodeAt(0).toString(16).toUpperCase();
49
+ const hex = `0x${h.length % 2 ? "0" : ""}${h}`;
50
+
51
+ originalMessage = originalMessage.replace(
52
+ UNEXPECTED_TOKEN,
53
+ `Unexpected token ${JSON.stringify(badTokenMatch[1])} (${hex})$2 `
54
+ );
55
+ }
56
+
57
+ /** @type {number | undefined} */
58
+ let errIdx;
59
+
60
+ if (badIndexMatch) {
61
+ errIdx = Number(badIndexMatch[1]);
62
+ } else if (
63
+ // doesn't happen in Node 22+
64
+ /^Unexpected end of JSON.*/i.test(originalMessage)
65
+ ) {
66
+ errIdx = txt.length - 1;
67
+ }
68
+
69
+ if (errIdx === undefined) {
70
+ message = `${originalMessage} while parsing '${txt.slice(0, context * 2)}'`;
71
+ position = 0;
72
+ } else {
73
+ const start = errIdx <= context ? 0 : errIdx - context;
74
+ const end =
75
+ errIdx + context >= txt.length ? txt.length : errIdx + context;
76
+ const slice = `${start ? "..." : ""}${txt.slice(start, end)}${end === txt.length ? "" : "..."}`;
77
+
78
+ message = `${originalMessage} while parsing ${txt === slice ? "" : "near "}${JSON.stringify(slice)}`;
79
+ position = errIdx;
80
+ }
81
+ }
82
+
83
+ super(message);
84
+
85
+ this.name = "JSONParseError";
86
+ this.systemError = err;
87
+ this.position = position;
88
+
89
+ Error.captureStackTrace(this, caller || this.constructor);
90
+ }
91
+ }
92
+
93
+ /**
94
+ * @template [R=JsonValue]
95
+ * @callback ParseJsonFn
96
+ * @param {string} raw text
97
+ * @param {(this: EXPECTED_ANY, key: string, value: EXPECTED_ANY) => EXPECTED_ANY=} reviver reviver
98
+ * @returns {R} parsed JSON
99
+ */
100
+
101
+ /** @type {ParseJsonFn} */
102
+ const parseJson = (raw, reviver) => {
103
+ const txt = stripBOM(raw);
104
+
105
+ try {
106
+ return JSON.parse(txt, reviver);
107
+ } catch (err) {
108
+ throw new JSONParseError(/** @type {Error} */ (err), raw, txt);
109
+ }
110
+ };
111
+
112
+ 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
@@ -33,6 +33,7 @@ register(
33
33
  "webpack-sources/CachedSource",
34
34
  new (class CachedSourceSerializer {
35
35
  /**
36
+ * Serializes this instance into the provided serializer context.
36
37
  * @param {CachedSource} source the cached source to be serialized
37
38
  * @param {ObjectSerializerContext} context context
38
39
  * @returns {void}
@@ -47,6 +48,7 @@ register(
47
48
  }
48
49
 
49
50
  /**
51
+ * Restores this instance from the provided deserializer context.
50
52
  * @param {ObjectDeserializerContext} context context
51
53
  * @returns {CachedSource} cached source
52
54
  */
@@ -64,6 +66,7 @@ register(
64
66
  "webpack-sources/RawSource",
65
67
  new (class RawSourceSerializer {
66
68
  /**
69
+ * Serializes this instance into the provided serializer context.
67
70
  * @param {RawSource} source the raw source to be serialized
68
71
  * @param {ObjectSerializerContext} context context
69
72
  * @returns {void}
@@ -74,6 +77,7 @@ register(
74
77
  }
75
78
 
76
79
  /**
80
+ * Restores this instance from the provided deserializer context.
77
81
  * @param {ObjectDeserializerContext} context context
78
82
  * @returns {RawSource} raw source
79
83
  */
@@ -91,6 +95,7 @@ register(
91
95
  "webpack-sources/ConcatSource",
92
96
  new (class ConcatSourceSerializer {
93
97
  /**
98
+ * Serializes this instance into the provided serializer context.
94
99
  * @param {ConcatSource} source the concat source to be serialized
95
100
  * @param {ObjectSerializerContext} context context
96
101
  * @returns {void}
@@ -100,6 +105,7 @@ register(
100
105
  }
101
106
 
102
107
  /**
108
+ * Restores this instance from the provided deserializer context.
103
109
  * @param {ObjectDeserializerContext} context context
104
110
  * @returns {ConcatSource} concat source
105
111
  */
@@ -117,6 +123,7 @@ register(
117
123
  "webpack-sources/PrefixSource",
118
124
  new (class PrefixSourceSerializer {
119
125
  /**
126
+ * Serializes this instance into the provided serializer context.
120
127
  * @param {PrefixSource} source the prefix source to be serialized
121
128
  * @param {ObjectSerializerContext} context context
122
129
  * @returns {void}
@@ -127,6 +134,7 @@ register(
127
134
  }
128
135
 
129
136
  /**
137
+ * Restores this instance from the provided deserializer context.
130
138
  * @param {ObjectDeserializerContext} context context
131
139
  * @returns {PrefixSource} prefix source
132
140
  */
@@ -142,6 +150,7 @@ register(
142
150
  "webpack-sources/ReplaceSource",
143
151
  new (class ReplaceSourceSerializer {
144
152
  /**
153
+ * Serializes this instance into the provided serializer context.
145
154
  * @param {ReplaceSource} source the replace source to be serialized
146
155
  * @param {ObjectSerializerContext} context context
147
156
  * @returns {void}
@@ -162,6 +171,7 @@ register(
162
171
  }
163
172
 
164
173
  /**
174
+ * Restores this instance from the provided deserializer context.
165
175
  * @param {ObjectDeserializerContext} context context
166
176
  * @returns {ReplaceSource} replace source
167
177
  */
@@ -193,6 +203,7 @@ register(
193
203
  "webpack-sources/OriginalSource",
194
204
  new (class OriginalSourceSerializer {
195
205
  /**
206
+ * Serializes this instance into the provided serializer context.
196
207
  * @param {OriginalSource} source the original source to be serialized
197
208
  * @param {ObjectSerializerContext} context context
198
209
  * @returns {void}
@@ -203,6 +214,7 @@ register(
203
214
  }
204
215
 
205
216
  /**
217
+ * Restores this instance from the provided deserializer context.
206
218
  * @param {ObjectDeserializerContext} context context
207
219
  * @returns {OriginalSource} original source
208
220
  */
@@ -220,6 +232,7 @@ register(
220
232
  "acorn/SourceLocation",
221
233
  new (class SourceLocationSerializer {
222
234
  /**
235
+ * Serializes this instance into the provided serializer context.
223
236
  * @param {SourceLocation} loc the location to be serialized
224
237
  * @param {ObjectSerializerContext} context context
225
238
  * @returns {void}
@@ -232,6 +245,7 @@ register(
232
245
  }
233
246
 
234
247
  /**
248
+ * Restores this instance from the provided deserializer context.
235
249
  * @param {ObjectDeserializerContext} context context
236
250
  * @returns {RealDependencyLocation} location
237
251
  */
@@ -256,6 +270,7 @@ register(
256
270
  "acorn/Position",
257
271
  new (class PositionSerializer {
258
272
  /**
273
+ * Serializes this instance into the provided serializer context.
259
274
  * @param {Position} pos the position to be serialized
260
275
  * @param {ObjectSerializerContext} context context
261
276
  * @returns {void}
@@ -266,6 +281,7 @@ register(
266
281
  }
267
282
 
268
283
  /**
284
+ * Restores this instance from the provided deserializer context.
269
285
  * @param {ObjectDeserializerContext} context context
270
286
  * @returns {SourcePosition} position
271
287
  */
@@ -284,6 +300,7 @@ register(
284
300
  "webpack-sources/SourceMapSource",
285
301
  new (class SourceMapSourceSerializer {
286
302
  /**
303
+ * Serializes this instance into the provided serializer context.
287
304
  * @param {SourceMapSource} source the source map source to be serialized
288
305
  * @param {ObjectSerializerContext} context context
289
306
  * @returns {void}
@@ -293,6 +310,7 @@ register(
293
310
  }
294
311
 
295
312
  /**
313
+ * Restores this instance from the provided deserializer context.
296
314
  * @param {ObjectDeserializerContext} context context
297
315
  * @returns {SourceMapSource} source source map source
298
316
  */
@@ -309,6 +327,7 @@ register(
309
327
  "schema-utils/ValidationError",
310
328
  new (class ValidationErrorSerializer {
311
329
  /**
330
+ * Serializes this instance into the provided serializer context.
312
331
  * @param {ValidationError} error the source map source to be serialized
313
332
  * @param {ObjectSerializerContext} context context
314
333
  * @returns {void}
@@ -324,6 +343,7 @@ register(
324
343
  }
325
344
 
326
345
  /**
346
+ * Restores this instance from the provided deserializer context.
327
347
  * @param {ObjectDeserializerContext} context context
328
348
  * @returns {ValidationError} error
329
349
  */
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Returns result without BOM.
9
10
  * @param {string | Buffer} strOrBuffer string or buffer
10
11
  * @returns {string | Buffer} result without BOM
11
12
  */