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
@@ -8,6 +8,7 @@
8
8
  /** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
9
9
  // Copy from css-loader
10
10
  /**
11
+ * Preserve camel case.
11
12
  * @param {string} string string
12
13
  * @returns {string} result
13
14
  */
@@ -51,6 +52,7 @@ const preserveCamelCase = (string) => {
51
52
 
52
53
  // Copy from css-loader
53
54
  /**
55
+ * Returns result.
54
56
  * @param {string} input input
55
57
  * @returns {string} result
56
58
  */
@@ -79,6 +81,27 @@ module.exports.camelCase = (input) => {
79
81
  };
80
82
 
81
83
  /**
84
+ * Safely stringify an arbitrary value for an error message — falls back to
85
+ * `String(...)` when JSON.stringify would throw (BigInt, circular, etc.).
86
+ * @param {EXPECTED_ANY} value value to stringify
87
+ * @returns {string} stringified value
88
+ */
89
+ const safeStringify = (value) => {
90
+ try {
91
+ const json = JSON.stringify(value);
92
+ if (json !== undefined) return json;
93
+ } catch (_err) {
94
+ // fall through to String fallback
95
+ }
96
+ try {
97
+ return String(value);
98
+ } catch (_err) {
99
+ return "[value cannot be converted to string]";
100
+ }
101
+ };
102
+
103
+ /**
104
+ * Returns results.
82
105
  * @param {string} input input
83
106
  * @param {CssGeneratorExportsConvention | undefined} convention convention
84
107
  * @returns {string[]} results
@@ -87,7 +110,28 @@ module.exports.cssExportConvention = (input, convention) => {
87
110
  /** @type {Set<string>} */
88
111
  const set = new Set();
89
112
  if (typeof convention === "function") {
90
- set.add(convention(input));
113
+ const result = convention(input);
114
+ const validate = (/** @type {string} */ name) => {
115
+ if (typeof name !== "string" || name.length === 0) {
116
+ throw new Error(
117
+ `exportsConvention function must return a non-empty string or an array of non-empty strings, got ${safeStringify(result)}`
118
+ );
119
+ }
120
+ };
121
+ if (Array.isArray(result)) {
122
+ if (result.length === 0) {
123
+ throw new Error(
124
+ "exportsConvention function returned an empty array; it must return at least one name"
125
+ );
126
+ }
127
+ for (const name of result) {
128
+ validate(name);
129
+ set.add(name);
130
+ }
131
+ } else {
132
+ validate(result);
133
+ set.add(result);
134
+ }
91
135
  } else {
92
136
  switch (convention) {
93
137
  case "camel-case": {
@@ -119,6 +163,7 @@ module.exports.cssExportConvention = (input, convention) => {
119
163
 
120
164
  // Copy from css-loader
121
165
  /**
166
+ * Returns result.
122
167
  * @param {string} input input
123
168
  * @returns {string} result
124
169
  */
@@ -0,0 +1,118 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ /**
8
+ * Utilities for building V3 source-map `mappings` strings without pulling in a
9
+ * full source-map library. The shape of the input is intentionally minimal —
10
+ * one slot per generated line, each holding zero, one, or many segments — so
11
+ * call sites that have a "one mapping per line" structure (like the CSS-module
12
+ * exports emit in `lib/css/CssGenerator.js`) can build mappings directly,
13
+ * while richer call sites can pass arrays of segments.
14
+ *
15
+ * TODO move this encoder into `webpack-sources` and replace the body of this
16
+ * file with re-exports. The public shape (`encodeVLQ`, `encodeMappings(lines)`,
17
+ * `MappingSegment`, `LineMappings`) is intended to match what would land
18
+ * upstream so call sites don't have to change.
19
+ */
20
+
21
+ const VLQ_BASE64 =
22
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
23
+
24
+ /**
25
+ * Encode a signed integer as a base64 VLQ string per the source-map V3 spec.
26
+ * @param {number} value signed integer to encode
27
+ * @returns {string} base64 VLQ encoded value
28
+ */
29
+ const encodeVLQ = (value) => {
30
+ let vlq = value < 0 ? (-value << 1) | 1 : value << 1;
31
+ let result = "";
32
+ do {
33
+ let digit = vlq & 0x1f;
34
+ vlq >>>= 5;
35
+ if (vlq > 0) digit |= 0x20;
36
+ result += VLQ_BASE64[digit];
37
+ } while (vlq > 0);
38
+ return result;
39
+ };
40
+
41
+ /**
42
+ * @typedef {object} MappingSegment
43
+ * @property {number=} generatedColumn 0-based generated column (defaults to 0)
44
+ * @property {number=} sourceIndex index into the surrounding source map's `sources` array; omit for a generated-only segment
45
+ * @property {number=} originalLine 0-based line in the original source (required when `sourceIndex` is set)
46
+ * @property {number=} originalColumn 0-based column in the original source (required when `sourceIndex` is set)
47
+ * @property {number=} nameIndex index into the surrounding source map's `names` array
48
+ */
49
+
50
+ /** @typedef {null | MappingSegment | MappingSegment[]} LineMappings */
51
+
52
+ /**
53
+ * Encode a V3 source-map `mappings` string from a per-generated-line
54
+ * description of segments.
55
+ *
56
+ * Each entry of `lines` describes the mappings for one generated line:
57
+ *
58
+ * - `null` (or `undefined`) — the line has no mappings.
59
+ * - a single `MappingSegment` — convenience for the common "one mapping at
60
+ * column 0" case.
61
+ * - `MappingSegment[]` — multiple segments on the same line.
62
+ *
63
+ * Lines are joined with `;`, segments within a line with `,`. All numeric
64
+ * fields are encoded as deltas relative to the previous emitted segment, per
65
+ * the V3 spec.
66
+ * @param {LineMappings[]} lines per-generated-line mapping segments
67
+ * @returns {string} VLQ-encoded V3 mappings string
68
+ */
69
+ const encodeMappings = (lines) => {
70
+ let prevSourceIndex = 0;
71
+ let prevOriginalLine = 0;
72
+ let prevOriginalColumn = 0;
73
+ let prevNameIndex = 0;
74
+
75
+ const encodedLines = [];
76
+
77
+ for (const line of lines) {
78
+ if (line === null || line === undefined) {
79
+ encodedLines.push("");
80
+ continue;
81
+ }
82
+
83
+ const segments = Array.isArray(line) ? line : [line];
84
+ let prevGeneratedColumn = 0;
85
+ const encodedSegments = [];
86
+
87
+ for (const segment of segments) {
88
+ const generatedColumn = segment.generatedColumn || 0;
89
+ let encoded = encodeVLQ(generatedColumn - prevGeneratedColumn);
90
+ prevGeneratedColumn = generatedColumn;
91
+
92
+ if (segment.sourceIndex !== undefined) {
93
+ const originalLine = /** @type {number} */ (segment.originalLine);
94
+ const originalColumn = /** @type {number} */ (segment.originalColumn);
95
+ encoded += encodeVLQ(segment.sourceIndex - prevSourceIndex);
96
+ encoded += encodeVLQ(originalLine - prevOriginalLine);
97
+ encoded += encodeVLQ(originalColumn - prevOriginalColumn);
98
+ prevSourceIndex = segment.sourceIndex;
99
+ prevOriginalLine = originalLine;
100
+ prevOriginalColumn = originalColumn;
101
+
102
+ if (segment.nameIndex !== undefined) {
103
+ encoded += encodeVLQ(segment.nameIndex - prevNameIndex);
104
+ prevNameIndex = segment.nameIndex;
105
+ }
106
+ }
107
+
108
+ encodedSegments.push(encoded);
109
+ }
110
+
111
+ encodedLines.push(encodedSegments.join(","));
112
+ }
113
+
114
+ return encodedLines.join(";");
115
+ };
116
+
117
+ module.exports.encodeMappings = encodeMappings;
118
+ module.exports.encodeVLQ = encodeVLQ;
@@ -10,6 +10,7 @@
10
10
  const URIRegEx = /^data:([^;,]+)?((?:;[^;,]+)*?)(?:;(base64)?)?,(.*)$/i;
11
11
 
12
12
  /**
13
+ * Decodes the provided uri.
13
14
  * @param {string} uri data URI
14
15
  * @returns {Buffer | null} decoded data
15
16
  */
@@ -11,16 +11,19 @@ const util = require("util");
11
11
  const deprecationCache = new Map();
12
12
 
13
13
  /**
14
+ * Defines the fake hook marker type used by this module.
14
15
  * @typedef {object} FakeHookMarker
15
16
  * @property {true} _fakeHook it's a fake hook
16
17
  */
17
18
 
18
19
  /**
20
+ * Defines the shared type used by this module.
19
21
  * @template T
20
22
  * @typedef {T & FakeHookMarker} FakeHook<T>
21
23
  */
22
24
 
23
25
  /**
26
+ * Creates a deprecation.
24
27
  * @param {string} message deprecation message
25
28
  * @param {string} code deprecation code
26
29
  * @returns {() => void} function to trigger deprecation
@@ -74,11 +77,13 @@ const DISABLED_METHODS = [
74
77
  ];
75
78
 
76
79
  /**
80
+ * Defines the set with deprecated array methods type used by this module.
77
81
  * @template T
78
82
  * @typedef {Set<T> & { [Symbol.isConcatSpreadable]: boolean } & { push: (...items: T[]) => void, length?: number } & { [P in DISABLED_METHODS_NAMES]: () => void } & { [P in COPY_METHODS_NAMES]: P extends keyof Array<T> ? () => Pick<Array<T>, P> : never }} SetWithDeprecatedArrayMethods
79
83
  */
80
84
 
81
85
  /**
86
+ * Processes the provided set.
82
87
  * @template T
83
88
  * @param {Set<T>} set new set
84
89
  * @param {string} name property name
@@ -139,11 +144,13 @@ module.exports.arrayToSetDeprecation = (set, name) => {
139
144
  };
140
145
  }
141
146
  /**
147
+ * Creates an index getter.
142
148
  * @param {number} index index
143
149
  * @returns {() => T | undefined} value
144
150
  */
145
151
  const createIndexGetter = (index) => {
146
152
  /**
153
+ * Returns the value at this location.
147
154
  * @this {Set<T>} a Set
148
155
  * @returns {T | undefined} the value at this location
149
156
  */
@@ -158,6 +165,7 @@ module.exports.arrayToSetDeprecation = (set, name) => {
158
165
  return fn;
159
166
  };
160
167
  /**
168
+ * Define index getter.
161
169
  * @param {number} index index
162
170
  */
163
171
  const defineIndexGetter = (index) => {
@@ -192,6 +200,7 @@ module.exports.arrayToSetDeprecation = (set, name) => {
192
200
  };
193
201
 
194
202
  /**
203
+ * Returns } SetDeprecatedArray.
195
204
  * @template T
196
205
  * @param {string} name name
197
206
  * @returns {{ new <T = EXPECTED_ANY>(values?: ReadonlyArray<T> | null): SetDeprecatedArray<T> }} SetDeprecatedArray
@@ -200,10 +209,12 @@ module.exports.createArrayToSetDeprecationSet = (name) => {
200
209
  let initialized = false;
201
210
 
202
211
  /**
212
+ * Represents SetDeprecatedArray.
203
213
  * @template T
204
214
  */
205
215
  class SetDeprecatedArray extends Set {
206
216
  /**
217
+ * Creates an instance of SetDeprecatedArray.
207
218
  * @param {ReadonlyArray<T> | null=} items items
208
219
  */
209
220
  constructor(items) {
@@ -222,6 +233,7 @@ module.exports.createArrayToSetDeprecationSet = (name) => {
222
233
  };
223
234
 
224
235
  /**
236
+ * Returns fake hook which redirects.
225
237
  * @template {object} T
226
238
  * @param {T} fakeHook fake hook implementation
227
239
  * @param {string=} message deprecation message (not deprecated when unset)
@@ -238,6 +250,7 @@ module.exports.createFakeHook = (fakeHook, message, code) => {
238
250
  };
239
251
 
240
252
  /**
253
+ * Deprecate all properties.
241
254
  * @template T
242
255
  * @param {T} obj object
243
256
  * @param {string} message deprecation message
@@ -269,6 +282,7 @@ const deprecateAllProperties = (obj, message, code) => {
269
282
  set: descriptor.writable
270
283
  ? util.deprecate(
271
284
  /**
285
+ * Handles the callback logic for this hook.
272
286
  * @template T
273
287
  * @param {T} v value
274
288
  * @returns {T} result
@@ -287,6 +301,7 @@ const deprecateAllProperties = (obj, message, code) => {
287
301
  module.exports.deprecateAllProperties = deprecateAllProperties;
288
302
 
289
303
  /**
304
+ * Returns frozen object with deprecation when modifying.
290
305
  * @template {object} T
291
306
  * @param {T} obj object
292
307
  * @param {string} name property name
@@ -302,6 +317,7 @@ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
302
317
  new Proxy(obj, {
303
318
  set: util.deprecate(
304
319
  /**
320
+ * Handles the callback logic for this hook.
305
321
  * @param {object} target target
306
322
  * @param {string | symbol} property property
307
323
  * @param {EXPECTED_ANY} value value
@@ -315,6 +331,7 @@ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
315
331
  ),
316
332
  defineProperty: util.deprecate(
317
333
  /**
334
+ * Handles the define property callback for this hook.
318
335
  * @param {object} target target
319
336
  * @param {string | symbol} property property
320
337
  * @param {PropertyDescriptor} descriptor descriptor
@@ -327,6 +344,7 @@ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
327
344
  ),
328
345
  deleteProperty: util.deprecate(
329
346
  /**
347
+ * Handles the delete property callback for this hook.
330
348
  * @param {object} target target
331
349
  * @param {string | symbol} property property
332
350
  * @returns {boolean} result
@@ -337,6 +355,7 @@ module.exports.soonFrozenObjectDeprecation = (obj, name, code, note = "") => {
337
355
  ),
338
356
  setPrototypeOf: util.deprecate(
339
357
  /**
358
+ * Updates prototype of using the provided target.
340
359
  * @param {object} target target
341
360
  * @param {EXPECTED_OBJECT | null} proto proto
342
361
  * @returns {boolean} result
@@ -25,6 +25,7 @@
25
25
  // 3.2% that 5 or more groups are invalidated
26
26
 
27
27
  /**
28
+ * Returns the similarity as number.
28
29
  * @param {string} a key
29
30
  * @param {string} b key
30
31
  * @returns {number} the similarity as number
@@ -41,6 +42,7 @@ const similarity = (a, b) => {
41
42
  };
42
43
 
43
44
  /**
45
+ * Returns the common part and a single char for the difference.
44
46
  * @param {string} a key
45
47
  * @param {string} b key
46
48
  * @param {Set<string>} usedNames set of already used names
@@ -73,6 +75,7 @@ const getName = (a, b, usedNames) => {
73
75
  /** @typedef {Record<string, number>} Sizes */
74
76
 
75
77
  /**
78
+ * Adds the provided total to this object.
76
79
  * @param {Sizes} total total size
77
80
  * @param {Sizes} size single size
78
81
  * @returns {void}
@@ -84,6 +87,7 @@ const addSizeTo = (total, size) => {
84
87
  };
85
88
 
86
89
  /**
90
+ * Subtract size from.
87
91
  * @param {Sizes} total total size
88
92
  * @param {Sizes} size single size
89
93
  * @returns {void}
@@ -95,6 +99,7 @@ const subtractSizeFrom = (total, size) => {
95
99
  };
96
100
 
97
101
  /**
102
+ * Returns total size.
98
103
  * @template T
99
104
  * @param {Iterable<Node<T>>} nodes some nodes
100
105
  * @returns {Sizes} total size
@@ -109,6 +114,7 @@ const sumSize = (nodes) => {
109
114
  };
110
115
 
111
116
  /**
117
+ * Checks whether this object is too big.
112
118
  * @param {Sizes} size size
113
119
  * @param {Sizes} maxSize minimum size
114
120
  * @returns {boolean} true, when size is too big
@@ -124,6 +130,7 @@ const isTooBig = (size, maxSize) => {
124
130
  };
125
131
 
126
132
  /**
133
+ * Checks whether this object is too small.
127
134
  * @param {Sizes} size size
128
135
  * @param {Sizes} minSize minimum size
129
136
  * @returns {boolean} true, when size is too small
@@ -141,6 +148,7 @@ const isTooSmall = (size, minSize) => {
141
148
  /** @typedef {Set<string>} Types */
142
149
 
143
150
  /**
151
+ * Gets too small types.
144
152
  * @param {Sizes} size size
145
153
  * @param {Sizes} minSize minimum size
146
154
  * @returns {Types} set of types that are too small
@@ -158,6 +166,7 @@ const getTooSmallTypes = (size, minSize) => {
158
166
  };
159
167
 
160
168
  /**
169
+ * Gets number of matching size types.
161
170
  * @template {object} T
162
171
  * @param {T} size size
163
172
  * @param {Types} types types
@@ -172,6 +181,7 @@ const getNumberOfMatchingSizeTypes = (size, types) => {
172
181
  };
173
182
 
174
183
  /**
184
+ * Selective size sum.
175
185
  * @param {Sizes} size size
176
186
  * @param {Types} types types
177
187
  * @returns {number} selective size sum
@@ -185,10 +195,12 @@ const selectiveSizeSum = (size, types) => {
185
195
  };
186
196
 
187
197
  /**
198
+ * Represents the node runtime component.
188
199
  * @template T
189
200
  */
190
201
  class Node {
191
202
  /**
203
+ * Creates an instance of Node.
192
204
  * @param {T} item item
193
205
  * @param {string} key key
194
206
  * @param {Sizes} size size
@@ -203,10 +215,12 @@ class Node {
203
215
  /** @typedef {number[]} Similarities */
204
216
 
205
217
  /**
218
+ * Represents the group runtime component.
206
219
  * @template T
207
220
  */
208
221
  class Group {
209
222
  /**
223
+ * Creates an instance of Group.
210
224
  * @param {Node<T>[]} nodes nodes
211
225
  * @param {Similarities | null} similarities similarities between the nodes (length = nodes.length - 1)
212
226
  * @param {Sizes=} size size of the group
@@ -220,6 +234,7 @@ class Group {
220
234
  }
221
235
 
222
236
  /**
237
+ * Returns removed nodes.
223
238
  * @param {(node: Node<T>) => boolean} filter filter function
224
239
  * @returns {Node<T>[] | undefined} removed nodes
225
240
  */
@@ -257,6 +272,7 @@ class Group {
257
272
  }
258
273
 
259
274
  /**
275
+ * Returns similarities.
260
276
  * @template T
261
277
  * @param {Iterable<Node<T>>} nodes nodes
262
278
  * @returns {Similarities} similarities
@@ -277,6 +293,7 @@ const getSimilarities = (nodes) => {
277
293
  };
278
294
 
279
295
  /**
296
+ * Defines the shared type used by this module.
280
297
  * @template T
281
298
  * @typedef {object} GroupedItems<T>
282
299
  * @property {string} key
@@ -285,6 +302,7 @@ const getSimilarities = (nodes) => {
285
302
  */
286
303
 
287
304
  /**
305
+ * Defines the options type used by this module.
288
306
  * @template T
289
307
  * @typedef {object} Options
290
308
  * @property {Sizes} maxSize maximum size of a group
@@ -295,6 +313,7 @@ const getSimilarities = (nodes) => {
295
313
  */
296
314
 
297
315
  /**
316
+ * Returns grouped items.
298
317
  * @template T
299
318
  * @param {Options<T>} options options object
300
319
  * @returns {GroupedItems<T>[]} grouped items
@@ -332,6 +351,7 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
332
351
  const initialGroup = new Group(initialNodes, getSimilarities(initialNodes));
333
352
 
334
353
  /**
354
+ * Removes problematic nodes.
335
355
  * @param {Group<T>} group group
336
356
  * @param {Sizes} consideredSize size of the group to consider
337
357
  * @returns {boolean} true, if the group was modified
@@ -16,6 +16,7 @@ const { isAbsolute, join } = require("./fs");
16
16
  /** @typedef {(resourcePath: string) => Promise<StringOrBuffer>} ReadResource */
17
17
 
18
18
  /**
19
+ * Defines the source mapping url type used by this module.
19
20
  * @typedef {object} SourceMappingURL
20
21
  * @property {string} sourceMappingURL
21
22
  * @property {string} replacementString
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Returns script url and its global variable.
9
10
  * @param {string} urlAndGlobal the script request
10
11
  * @returns {string[]} script url and its global variable
11
12
  */
@@ -11,15 +11,18 @@ const DONE_MARKER = 2;
11
11
  const CANDIDATE_MARKER = 3;
12
12
 
13
13
  /**
14
+ * Defines the nodes type used by this module.
14
15
  * @template T
15
16
  * @typedef {Set<Node<T>>} Nodes
16
17
  */
17
18
 
18
19
  /**
20
+ * Represents the node runtime component.
19
21
  * @template T
20
22
  */
21
23
  class Node {
22
24
  /**
25
+ * Creates an instance of Node.
23
26
  * @param {T} item the value of the node
24
27
  */
25
28
  constructor(item) {
@@ -48,6 +51,7 @@ class SCC {
48
51
  }
49
52
 
50
53
  /**
54
+ * Defines the stack entry type used by this module.
51
55
  * @template T
52
56
  * @typedef {object} StackEntry
53
57
  * @property {Node<T>} node
@@ -55,6 +59,7 @@ class SCC {
55
59
  */
56
60
 
57
61
  /**
62
+ * Returns graph roots of the items.
58
63
  * @template T
59
64
  * @param {Iterable<T>} items list of items
60
65
  * @param {(item: T) => Iterable<T>} getDependencies function to get dependencies of an item (items that are not in list are ignored)
@@ -5,10 +5,11 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
9
- /** @typedef {import("./Dependency").SourcePosition} SourcePosition */
8
+ /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
9
+ /** @typedef {import("../Dependency").SourcePosition} SourcePosition */
10
10
 
11
11
  /**
12
+ * Returns formatted position.
12
13
  * @param {SourcePosition} pos position
13
14
  * @returns {string} formatted position
14
15
  */
@@ -24,6 +25,7 @@ const formatPosition = (pos) => {
24
25
  };
25
26
 
26
27
  /**
28
+ * Returns formatted location.
27
29
  * @param {DependencyLocation} loc location
28
30
  * @returns {string} formatted location
29
31
  */
@@ -6,10 +6,11 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Returns the formatted size.
9
10
  * @param {number=} size the size in bytes
10
11
  * @returns {string} the formatted size
11
12
  */
12
- module.exports.formatSize = (size) => {
13
+ const formatSize = (size) => {
13
14
  if (typeof size !== "number" || Number.isNaN(size) === true) {
14
15
  return "unknown size";
15
16
  }
@@ -23,3 +24,5 @@ module.exports.formatSize = (size) => {
23
24
 
24
25
  return `${Number((size / 1024 ** index).toPrecision(3))} ${abbreviations[index]}`;
25
26
  };
27
+
28
+ module.exports = formatSize;