@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.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 (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /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
  */
@@ -35,7 +35,6 @@ module.exports = (algorithm) => {
35
35
  return new BulkUpdateHash(() => new algorithm());
36
36
  }
37
37
  switch (algorithm) {
38
- // TODO add non-cryptographic algorithm here
39
38
  case "debug":
40
39
  if (DebugHash === undefined) {
41
40
  DebugHash = require("./hash/DebugHash");
@@ -0,0 +1,43 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const memoize = require("./memoize");
8
+
9
+ const getCompilation = memoize(() => require("../Compilation"));
10
+
11
+ /**
12
+ * @template T
13
+ * @param {() => T} createHooks factory that returns a fresh hooks object
14
+ * @returns {(compilation: import("../Compilation")) => T} getter that returns (or creates) hooks for the compilation
15
+ */
16
+ const createHooksRegistry = (createHooks) => {
17
+ /** @type {WeakMap<import("../Compilation"), T>} */
18
+ const map = new WeakMap();
19
+ return (compilation) => {
20
+ if (!(compilation instanceof getCompilation())) {
21
+ // a compilation from another webpack copy fails instanceof — match the class name
22
+ const candidate =
23
+ /** @type {{ constructor?: { name: string } } | null} */ (compilation);
24
+ if (
25
+ !candidate ||
26
+ !candidate.constructor ||
27
+ candidate.constructor.name !== "Compilation"
28
+ ) {
29
+ throw new TypeError(
30
+ "The 'compilation' argument must be an instance of Compilation"
31
+ );
32
+ }
33
+ }
34
+ let hooks = map.get(compilation);
35
+ if (hooks === undefined) {
36
+ hooks = createHooks();
37
+ map.set(compilation, hooks);
38
+ }
39
+ return hooks;
40
+ };
41
+ };
42
+
43
+ module.exports = createHooksRegistry;
@@ -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
  */
@@ -27,9 +28,9 @@ const decodeDataURI = (uri) => {
27
28
  // CSS allows to use `data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%" style="stroke: rgb(223,224,225); stroke-width: 2px; fill: none; stroke-dasharray: 6px 3px" /></svg>`
28
29
  // so we return original body if we can't `decodeURIComponent`
29
30
  try {
30
- return Buffer.from(decodeURIComponent(body), "ascii");
31
+ return Buffer.from(decodeURIComponent(body), "utf8");
31
32
  } catch (_) {
32
- return Buffer.from(body, "ascii");
33
+ return Buffer.from(body, "utf8");
33
34
  }
34
35
  };
35
36
 
@@ -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,48 +75,53 @@ 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}
79
82
  */
80
83
  const addSizeTo = (total, size) => {
81
- for (const key of Object.keys(size)) {
84
+ for (const key in size) {
82
85
  total[key] = (total[key] || 0) + size[key];
83
86
  }
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}
90
94
  */
91
95
  const subtractSizeFrom = (total, size) => {
92
- for (const key of Object.keys(size)) {
96
+ for (const key in size) {
93
97
  total[key] -= size[key];
94
98
  }
95
99
  };
96
100
 
97
101
  /**
102
+ * Returns total size.
98
103
  * @template T
99
- * @param {Iterable<Node<T>>} nodes some nodes
104
+ * @param {Node<T>[]} nodes some nodes
105
+ * @param {number=} start start index
100
106
  * @returns {Sizes} total size
101
107
  */
102
- const sumSize = (nodes) => {
108
+ const sumSize = (nodes, start) => {
103
109
  /** @type {Sizes} */
104
110
  const sum = Object.create(null);
105
- for (const node of nodes) {
106
- addSizeTo(sum, node.size);
111
+ for (let i = start || 0; i < nodes.length; i++) {
112
+ addSizeTo(sum, nodes[i].size);
107
113
  }
108
114
  return sum;
109
115
  };
110
116
 
111
117
  /**
118
+ * Checks whether this object is too big.
112
119
  * @param {Sizes} size size
113
120
  * @param {Sizes} maxSize minimum size
114
121
  * @returns {boolean} true, when size is too big
115
122
  */
116
123
  const isTooBig = (size, maxSize) => {
117
- for (const key of Object.keys(size)) {
124
+ for (const key in size) {
118
125
  const s = size[key];
119
126
  if (s === 0) continue;
120
127
  const maxSizeValue = maxSize[key];
@@ -124,12 +131,13 @@ const isTooBig = (size, maxSize) => {
124
131
  };
125
132
 
126
133
  /**
134
+ * Checks whether this object is too small.
127
135
  * @param {Sizes} size size
128
136
  * @param {Sizes} minSize minimum size
129
137
  * @returns {boolean} true, when size is too small
130
138
  */
131
139
  const isTooSmall = (size, minSize) => {
132
- for (const key of Object.keys(size)) {
140
+ for (const key in size) {
133
141
  const s = size[key];
134
142
  if (s === 0) continue;
135
143
  const minSizeValue = minSize[key];
@@ -141,6 +149,7 @@ const isTooSmall = (size, minSize) => {
141
149
  /** @typedef {Set<string>} Types */
142
150
 
143
151
  /**
152
+ * Gets too small types.
144
153
  * @param {Sizes} size size
145
154
  * @param {Sizes} minSize minimum size
146
155
  * @returns {Types} set of types that are too small
@@ -148,7 +157,7 @@ const isTooSmall = (size, minSize) => {
148
157
  const getTooSmallTypes = (size, minSize) => {
149
158
  /** @type {Types} */
150
159
  const types = new Set();
151
- for (const key of Object.keys(size)) {
160
+ for (const key in size) {
152
161
  const s = size[key];
153
162
  if (s === 0) continue;
154
163
  const minSizeValue = minSize[key];
@@ -158,44 +167,50 @@ const getTooSmallTypes = (size, minSize) => {
158
167
  };
159
168
 
160
169
  /**
161
- * @template {object} T
162
- * @param {T} size size
170
+ * Gets number of matching size types.
171
+ * @param {Sizes} size size
163
172
  * @param {Types} types types
164
173
  * @returns {number} number of matching size types
165
174
  */
166
175
  const getNumberOfMatchingSizeTypes = (size, types) => {
167
176
  let i = 0;
168
- for (const key of Object.keys(size)) {
169
- if (size[/** @type {keyof T} */ (key)] !== 0 && types.has(key)) i++;
177
+ for (const key in size) {
178
+ if (size[key] !== 0 && types.has(key)) i++;
170
179
  }
171
180
  return i;
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
178
188
  */
179
189
  const selectiveSizeSum = (size, types) => {
180
190
  let sum = 0;
181
- for (const key of Object.keys(size)) {
191
+ for (const key in size) {
182
192
  if (size[key] !== 0 && types.has(key)) sum += size[key];
183
193
  }
184
194
  return sum;
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
195
207
  */
196
208
  constructor(item, key, size) {
209
+ /** @type {T} */
197
210
  this.item = item;
211
+ /** @type {string} */
198
212
  this.key = key;
213
+ /** @type {Sizes} */
199
214
  this.size = size;
200
215
  }
201
216
  }
@@ -203,23 +218,29 @@ class Node {
203
218
  /** @typedef {number[]} Similarities */
204
219
 
205
220
  /**
221
+ * Represents the group runtime component.
206
222
  * @template T
207
223
  */
208
224
  class Group {
209
225
  /**
226
+ * Creates an instance of Group.
210
227
  * @param {Node<T>[]} nodes nodes
211
228
  * @param {Similarities | null} similarities similarities between the nodes (length = nodes.length - 1)
212
229
  * @param {Sizes=} size size of the group
213
230
  */
214
231
  constructor(nodes, similarities, size) {
232
+ /** @type {Node<T>[]} */
215
233
  this.nodes = nodes;
234
+ /** @type {Similarities | null} */
216
235
  this.similarities = similarities;
236
+ /** @type {Sizes} */
217
237
  this.size = size || sumSize(nodes);
218
238
  /** @type {string | undefined} */
219
239
  this.key = undefined;
220
240
  }
221
241
 
222
242
  /**
243
+ * Returns removed nodes.
223
244
  * @param {(node: Node<T>) => boolean} filter filter function
224
245
  * @returns {Node<T>[] | undefined} removed nodes
225
246
  */
@@ -257,6 +278,7 @@ class Group {
257
278
  }
258
279
 
259
280
  /**
281
+ * Returns similarities.
260
282
  * @template T
261
283
  * @param {Iterable<Node<T>>} nodes nodes
262
284
  * @returns {Similarities} similarities
@@ -277,6 +299,7 @@ const getSimilarities = (nodes) => {
277
299
  };
278
300
 
279
301
  /**
302
+ * Defines the shared type used by this module.
280
303
  * @template T
281
304
  * @typedef {object} GroupedItems<T>
282
305
  * @property {string} key
@@ -285,6 +308,7 @@ const getSimilarities = (nodes) => {
285
308
  */
286
309
 
287
310
  /**
311
+ * Defines the options type used by this module.
288
312
  * @template T
289
313
  * @typedef {object} Options
290
314
  * @property {Sizes} maxSize maximum size of a group
@@ -295,6 +319,7 @@ const getSimilarities = (nodes) => {
295
319
  */
296
320
 
297
321
  /**
322
+ * Returns grouped items.
298
323
  * @template T
299
324
  * @param {Options<T>} options options object
300
325
  * @returns {GroupedItems<T>[]} grouped items
@@ -332,6 +357,7 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
332
357
  const initialGroup = new Group(initialNodes, getSimilarities(initialNodes));
333
358
 
334
359
  /**
360
+ * Removes problematic nodes.
335
361
  * @param {Group<T>} group group
336
362
  * @param {Sizes} consideredSize size of the group to consider
337
363
  * @returns {boolean} true, if the group was modified
@@ -351,9 +377,12 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
351
377
  );
352
378
  if (possibleResultGroups.length > 0) {
353
379
  const bestGroup = possibleResultGroups.reduce((min, group) => {
354
- const minMatches = getNumberOfMatchingSizeTypes(min, problemTypes);
380
+ const minMatches = getNumberOfMatchingSizeTypes(
381
+ min.size,
382
+ problemTypes
383
+ );
355
384
  const groupMatches = getNumberOfMatchingSizeTypes(
356
- group,
385
+ group.size,
357
386
  problemTypes
358
387
  );
359
388
  if (minMatches !== groupMatches) {
@@ -463,7 +492,7 @@ module.exports = ({ maxSize, minSize, items, getSize, getKey }) => {
463
492
  let best = -1;
464
493
  let bestSimilarity = Infinity;
465
494
  let pos = left;
466
- const rightSize = sumSize(group.nodes.slice(pos));
495
+ const rightSize = sumSize(group.nodes, pos);
467
496
 
468
497
  // pos v v right
469
498
  // [ O O O ] O O O [ O O O ]
@@ -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
@@ -91,7 +92,7 @@ function getAbsolutePath(context, request, sourceRoot) {
91
92
  * @returns {boolean} true if value is a URL
92
93
  */
93
94
  function isURL(value) {
94
- return validProtocolPattern.test(value) && !path.win32.isAbsolute(value);
95
+ return validProtocolPattern.test(value) && !isAbsolute(value);
95
96
  }
96
97
 
97
98
  /**
@@ -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
  */