@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
  const makeSerializable = require("./makeSerializable");
9
9
 
10
10
  /**
11
+ * Merges every queued iterable directly into the concrete backing set.
11
12
  * @template T
12
13
  * @param {Set<T>} targetSet set where items should be added
13
14
  * @param {Set<Iterable<T>>} toMerge iterables to be merged
@@ -22,6 +23,8 @@ const merge = (targetSet, toMerge) => {
22
23
  };
23
24
 
24
25
  /**
26
+ * Flattens nested `LazySet` instances into a single collection of iterables
27
+ * that can later be merged into the backing set.
25
28
  * @template T
26
29
  * @param {Set<Iterable<T>>} targetSet set where iterables should be added
27
30
  * @param {LazySet<T>[]} toDeepMerge lazy sets to be flattened
@@ -40,6 +43,7 @@ const flatten = (targetSet, toDeepMerge) => {
40
43
  };
41
44
 
42
45
  /**
46
+ * Defines the set iterator type used by this module.
43
47
  * @template T
44
48
  * @typedef {import("typescript-iterable").SetIterator<T>} SetIterator
45
49
  */
@@ -52,6 +56,8 @@ const flatten = (targetSet, toDeepMerge) => {
52
56
  */
53
57
  class LazySet {
54
58
  /**
59
+ * Seeds the set with an optional iterable while preparing internal queues for
60
+ * deferred merges.
55
61
  * @param {Iterable<T>=} iterable init iterable
56
62
  */
57
63
  constructor(iterable) {
@@ -61,15 +67,23 @@ class LazySet {
61
67
  this._toMerge = new Set();
62
68
  /** @type {LazySet<T>[]} */
63
69
  this._toDeepMerge = [];
70
+ /** @type {boolean} */
64
71
  this._needMerge = false;
72
+ /** @type {boolean} */
65
73
  this._deopt = false;
66
74
  }
67
75
 
76
+ /**
77
+ * Flattens any nested lazy sets that were queued for merging.
78
+ */
68
79
  _flatten() {
69
80
  flatten(this._toMerge, this._toDeepMerge);
70
81
  this._toDeepMerge.length = 0;
71
82
  }
72
83
 
84
+ /**
85
+ * Materializes all deferred additions into the backing set.
86
+ */
73
87
  _merge() {
74
88
  this._flatten();
75
89
  merge(this._set, this._toMerge);
@@ -77,6 +91,10 @@ class LazySet {
77
91
  this._needMerge = false;
78
92
  }
79
93
 
94
+ /**
95
+ * Reports whether the set is empty without forcing a full merge.
96
+ * @returns {boolean} true when no items have been stored or queued
97
+ */
80
98
  _isEmpty() {
81
99
  return (
82
100
  this._set.size === 0 &&
@@ -85,12 +103,17 @@ class LazySet {
85
103
  );
86
104
  }
87
105
 
106
+ /**
107
+ * Returns the number of items after applying any deferred merges.
108
+ * @returns {number} number of items in the set
109
+ */
88
110
  get size() {
89
111
  if (this._needMerge) this._merge();
90
112
  return this._set.size;
91
113
  }
92
114
 
93
115
  /**
116
+ * Adds a single item immediately to the concrete backing set.
94
117
  * @param {T} item an item
95
118
  * @returns {LazySet<T>} itself
96
119
  */
@@ -100,6 +123,8 @@ class LazySet {
100
123
  }
101
124
 
102
125
  /**
126
+ * Queues another iterable or lazy set for later merging so large bulk adds
127
+ * can stay cheap until the set is read.
103
128
  * @param {Iterable<T> | LazySet<T>} iterable a immutable iterable or another immutable LazySet which will eventually be merged into the Set
104
129
  * @returns {LazySet<T>} itself
105
130
  */
@@ -126,6 +151,9 @@ class LazySet {
126
151
  return this;
127
152
  }
128
153
 
154
+ /**
155
+ * Removes all items and clears every deferred merge queue.
156
+ */
129
157
  clear() {
130
158
  this._set.clear();
131
159
  this._toMerge.clear();
@@ -135,6 +163,8 @@ class LazySet {
135
163
  }
136
164
 
137
165
  /**
166
+ * Deletes an item after first materializing any deferred additions that may
167
+ * contain it.
138
168
  * @param {T} value an item
139
169
  * @returns {boolean} true, if the value was in the Set before
140
170
  */
@@ -144,6 +174,8 @@ class LazySet {
144
174
  }
145
175
 
146
176
  /**
177
+ * Returns the set's entry iterator and permanently switches future
178
+ * operations to eager merge mode to preserve iterator correctness.
147
179
  * @returns {SetIterator<[T, T]>} entries
148
180
  */
149
181
  entries() {
@@ -153,6 +185,8 @@ class LazySet {
153
185
  }
154
186
 
155
187
  /**
188
+ * Iterates over every item after forcing pending merges and switching to
189
+ * eager mode for correctness during iteration.
156
190
  * @template K
157
191
  * @param {(value: T, value2: T, set: Set<T>) => void} callbackFn function called for each entry
158
192
  * @param {K} thisArg this argument for the callbackFn
@@ -166,6 +200,7 @@ class LazySet {
166
200
  }
167
201
 
168
202
  /**
203
+ * Checks whether an item is present after applying any deferred merges.
169
204
  * @param {T} item an item
170
205
  * @returns {boolean} true, when the item is in the Set
171
206
  */
@@ -175,6 +210,7 @@ class LazySet {
175
210
  }
176
211
 
177
212
  /**
213
+ * Returns the key iterator, eagerly materializing pending merges first.
178
214
  * @returns {SetIterator<T>} keys
179
215
  */
180
216
  keys() {
@@ -184,6 +220,7 @@ class LazySet {
184
220
  }
185
221
 
186
222
  /**
223
+ * Returns the value iterator, eagerly materializing pending merges first.
187
224
  * @returns {SetIterator<T>} values
188
225
  */
189
226
  values() {
@@ -193,6 +230,7 @@ class LazySet {
193
230
  }
194
231
 
195
232
  /**
233
+ * Returns the default iterator over values after forcing pending merges.
196
234
  * @returns {SetIterator<T>} iterable iterator
197
235
  */
198
236
  [Symbol.iterator]() {
@@ -207,7 +245,9 @@ class LazySet {
207
245
  }
208
246
 
209
247
  /**
210
- * @param {import("../serialization/ObjectMiddleware").ObjectSerializerContext} context context
248
+ * Serializes the fully materialized set contents into webpack's object
249
+ * serialization stream.
250
+ * @param {import("../serialization/ObjectMiddleware").ObjectSerializerContext<(number | T)[]>} context context
211
251
  */
212
252
  serialize({ write }) {
213
253
  if (this._needMerge) this._merge();
@@ -216,16 +256,17 @@ class LazySet {
216
256
  }
217
257
 
218
258
  /**
259
+ * Restores a `LazySet` from serialized item data.
219
260
  * @template T
220
- * @param {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} context context
261
+ * @param {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<(number | T)[]>} context context
221
262
  * @returns {LazySet<T>} lazy set
222
263
  */
223
264
  static deserialize({ read }) {
224
- const count = read();
265
+ const count = /** @type {number} */ (read());
225
266
  /** @type {T[]} */
226
267
  const items = [];
227
268
  for (let i = 0; i < count; i++) {
228
- items.push(read());
269
+ items.push(/** @type {T} */ (read()));
229
270
  }
230
271
  return new LazySet(items);
231
272
  }
@@ -0,0 +1,64 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ class LocConverter {
9
+ /**
10
+ * Creates an instance of LocConverter.
11
+ * @param {string} input input
12
+ */
13
+ constructor(input) {
14
+ /** @type {string} */
15
+ this._input = input;
16
+ /** @type {number} */
17
+ this.line = 1;
18
+ /** @type {number} */
19
+ this.column = 0;
20
+ /** @type {number} */
21
+ this.pos = 0;
22
+ }
23
+
24
+ /**
25
+ * Returns location converter.
26
+ * @param {number} pos position
27
+ * @returns {LocConverter} location converter
28
+ */
29
+ get(pos) {
30
+ if (this.pos !== pos) {
31
+ if (this.pos < pos) {
32
+ // Advance: delta-bounded scan of [this.pos, pos), allocation-free
33
+ // (unbounded index scans go quadratic on newline-free input).
34
+ const input = this._input;
35
+ let last = -1;
36
+ for (let j = this.pos; j < pos; j++) {
37
+ if (input.charCodeAt(j) === 10) {
38
+ this.line++;
39
+ last = j;
40
+ }
41
+ }
42
+ this.column =
43
+ last === -1 ? this.column + (pos - this.pos) : pos - last - 1;
44
+ } else {
45
+ // Retreat: count newlines crossed in (pos, this.pos), i.e.
46
+ // exclude the newline at `this.pos` itself. By convention a
47
+ // `\n` is the last column of its line, so when `this.pos`
48
+ // sits on one we're already on the line containing it; only
49
+ // newlines strictly **before** `this.pos` and at-or-after
50
+ // `pos` represent crossed line boundaries.
51
+ let i = this._input.lastIndexOf("\n", this.pos - 1);
52
+ while (i >= pos) {
53
+ this.line--;
54
+ i = i > 0 ? this._input.lastIndexOf("\n", i - 1) : -1;
55
+ }
56
+ this.column = i === -1 ? pos : pos - i - 1;
57
+ }
58
+ this.pos = pos;
59
+ }
60
+ return this;
61
+ }
62
+ }
63
+
64
+ module.exports = LocConverter;
@@ -18,6 +18,7 @@ class ParallelismFactorCalculator {
18
18
  }
19
19
 
20
20
  /**
21
+ * Processes the provided start.
21
22
  * @param {number} start range start
22
23
  * @param {number} end range end
23
24
  * @param {Callback} callback callback
package/lib/util/Queue.js CHANGED
@@ -6,10 +6,13 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * FIFO queue that keeps items unique by storing them in insertion order inside
10
+ * a `Set`.
9
11
  * @template T
10
12
  */
11
13
  class Queue {
12
14
  /**
15
+ * Seeds the queue with an optional iterable of initial unique items.
13
16
  * @param {Iterable<T>=} items The initial elements.
14
17
  */
15
18
  constructor(items) {
@@ -21,7 +24,7 @@ class Queue {
21
24
  }
22
25
 
23
26
  /**
24
- * Returns the number of elements in this queue.
27
+ * Returns the number of unique items currently waiting in the queue.
25
28
  * @returns {number} The number of elements in this queue.
26
29
  */
27
30
  get length() {
@@ -29,7 +32,7 @@ class Queue {
29
32
  }
30
33
 
31
34
  /**
32
- * Appends the specified element to this queue.
35
+ * Enqueues an item, moving nothing if that value is already present.
33
36
  * @param {T} item The element to add.
34
37
  * @returns {void}
35
38
  */
@@ -38,7 +41,7 @@ class Queue {
38
41
  }
39
42
 
40
43
  /**
41
- * Retrieves and removes the head of this queue.
44
+ * Removes and returns the oldest enqueued item.
42
45
  * @returns {T | undefined} The head of the queue of `undefined` if this queue is empty.
43
46
  */
44
47
  dequeue() {
@@ -5,13 +5,19 @@
5
5
 
6
6
  "use strict";
7
7
 
8
+ /**
9
+ * Simple counting semaphore used to limit how many asynchronous tasks may run
10
+ * concurrently.
11
+ */
8
12
  class Semaphore {
9
13
  /**
10
- * Creates an instance of Semaphore.
14
+ * Initializes the semaphore with the number of permits that may be held at
15
+ * the same time.
11
16
  * @param {number} available the amount available number of "tasks"
12
17
  * in the Semaphore
13
18
  */
14
19
  constructor(available) {
20
+ /** @type {number} */
15
21
  this.available = available;
16
22
  /** @type {(() => void)[]} */
17
23
  this.waiters = [];
@@ -20,6 +26,8 @@ class Semaphore {
20
26
  }
21
27
 
22
28
  /**
29
+ * Acquires a permit for the callback immediately when one is available or
30
+ * queues the callback until another task releases its permit.
23
31
  * @param {() => void} callback function block to capture and run
24
32
  * @returns {void}
25
33
  */
@@ -32,6 +40,9 @@ class Semaphore {
32
40
  }
33
41
  }
34
42
 
43
+ /**
44
+ * Releases a permit and schedules the next waiting callback, if any.
45
+ */
35
46
  release() {
36
47
  this.available++;
37
48
  if (this.waiters.length > 0) {
@@ -39,6 +50,9 @@ class Semaphore {
39
50
  }
40
51
  }
41
52
 
53
+ /**
54
+ * Drains the next waiting callback after a permit becomes available.
55
+ */
42
56
  _continue() {
43
57
  if (this.available > 0 && this.waiters.length > 0) {
44
58
  this.available--;
@@ -41,7 +41,7 @@ const intersect = (sets) => {
41
41
  * @template T
42
42
  * @param {Set<T>} bigSet a Set which contains the original elements to compare against
43
43
  * @param {Set<T>} smallSet the set whose elements might be contained inside of bigSet
44
- * @returns {boolean} returns true if smallSet contains all elements inside of the bigSet
44
+ * @returns {boolean} returns true if bigSet contains all elements inside of smallSet
45
45
  */
46
46
  const isSubset = (bigSet, smallSet) => {
47
47
  if (bigSet.size < smallSet.size) return false;
@@ -52,6 +52,7 @@ const isSubset = (bigSet, smallSet) => {
52
52
  };
53
53
 
54
54
  /**
55
+ * Returns found item.
55
56
  * @template T
56
57
  * @param {Set<T>} set a set
57
58
  * @param {(set: T) => boolean} fn selector function
@@ -64,6 +65,7 @@ const find = (set, fn) => {
64
65
  };
65
66
 
66
67
  /**
68
+ * Returns first item.
67
69
  * @template T
68
70
  * @param {Set<T> | ReadonlySet<T>} set a set
69
71
  * @returns {T | undefined} first item
@@ -74,6 +76,7 @@ const first = (set) => {
74
76
  };
75
77
 
76
78
  /**
79
+ * Returns combined set, may be identical to a or b.
77
80
  * @template T
78
81
  * @param {Set<T>} a first
79
82
  * @param {Set<T>} b second
@@ -47,6 +47,7 @@ class SortableSet extends Set {
47
47
  }
48
48
 
49
49
  /**
50
+ * Returns itself.
50
51
  * @param {T} value value to add to set
51
52
  * @returns {this} returns itself
52
53
  */
@@ -59,6 +60,7 @@ class SortableSet extends Set {
59
60
  }
60
61
 
61
62
  /**
63
+ * Returns true if value existed in set, false otherwise.
62
64
  * @param {T} value value to delete
63
65
  * @returns {boolean} true if value existed in set, false otherwise
64
66
  */
@@ -69,6 +71,7 @@ class SortableSet extends Set {
69
71
  }
70
72
 
71
73
  /**
74
+ * Describes how this clear operation behaves.
72
75
  * @returns {void}
73
76
  */
74
77
  clear() {
@@ -105,7 +108,7 @@ class SortableSet extends Set {
105
108
 
106
109
  /**
107
110
  * Get data from cache
108
- * @template {EXPECTED_ANY} R
111
+ * @template R
109
112
  * @param {(set: SortableSet<T>) => R} fn function to calculate value
110
113
  * @returns {R} returns result of fn(this), cached until set changes
111
114
  */
@@ -146,6 +149,7 @@ class SortableSet extends Set {
146
149
  }
147
150
 
148
151
  /**
152
+ * Invalidates the cached state associated with this value.
149
153
  * @private
150
154
  * @returns {void}
151
155
  */
@@ -156,6 +160,7 @@ class SortableSet extends Set {
156
160
  }
157
161
 
158
162
  /**
163
+ * Invalidate ordered cache.
159
164
  * @private
160
165
  * @returns {void}
161
166
  */
@@ -166,6 +171,7 @@ class SortableSet extends Set {
166
171
  }
167
172
 
168
173
  /**
174
+ * Returns the raw array.
169
175
  * @returns {T[]} the raw array
170
176
  */
171
177
  toJSON() {
@@ -0,0 +1,119 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ /**
8
+ * Babel-style visitor map keyed by a numeric node-type discriminator; a bucket
9
+ * is a function (enter-only) or `{ enter?, exit? }`.
10
+ *
11
+ * A visitor receives a single `path` argument (the Babel `path` shape): the
12
+ * language's AST accessor with the current position on it — `path.node`,
13
+ * `path.parent` (null at a root) — plus `path.skipChildren()` (enter only)
14
+ * to stop the walk descending, and every field-read method (which defaults
15
+ * to the current node). The path is one reused object rebound before each callback:
16
+ * it is only valid during the callback, and future per-node functionality
17
+ * lands on it without changing any visitor signature.
18
+ * @template TPath
19
+ * @typedef {(path: TPath) => void} VisitorFn
20
+ */
21
+ /**
22
+ * @template TPath
23
+ * @typedef {VisitorFn<TPath> | { enter?: VisitorFn<TPath>, exit?: VisitorFn<TPath> }} VisitorBucket
24
+ */
25
+ /**
26
+ * @template TPath
27
+ * @typedef {{ [nodeType: number]: VisitorBucket<TPath> }} VisitorMap
28
+ */
29
+ /**
30
+ * @template TPath
31
+ * @typedef {{ enter: VisitorFn<TPath>[], exit: VisitorFn<TPath>[] }} CompiledVisitorBucket
32
+ */
33
+ /**
34
+ * @template TPath
35
+ * @typedef {CompiledVisitorBucket<TPath>[]} CompiledVisitorMap a sparse array indexed by node type
36
+ */
37
+ /**
38
+ * A language grammar: parse `input` and fire the compiled visitors in source
39
+ * order (the grammar owns tokenizing, parsing, walking — and the `path`
40
+ * object each visitor receives).
41
+ * @template TPath
42
+ * @template TProcessOptions
43
+ * @typedef {(input: string, visitors: CompiledVisitorMap<TPath>, options: TProcessOptions) => void} Grammar
44
+ */
45
+
46
+ /**
47
+ * Visitor coordinator: owns the visitor registry and drives a language
48
+ * `grammar` over the source. Language-agnostic — each syntax (CSS, HTML, …)
49
+ * binds its own grammar and node-type enum. Babel-style usage:
50
+ *
51
+ * ```
52
+ * processor.use({ [NodeType.X]: (path) => {}, [NodeType.Y]: { enter, exit } });
53
+ * processor.process(source);
54
+ * ```
55
+ * @template TPath
56
+ * @template [TProcessOptions=object]
57
+ */
58
+ class SourceProcessor {
59
+ /**
60
+ * @param {Grammar<TPath, TProcessOptions>} grammar the grammar to drive over the source
61
+ * @param {TProcessOptions=} options default process options (e.g. `skip`) merged under each `process` call's own options
62
+ */
63
+ constructor(grammar, options) {
64
+ /** @type {Grammar<TPath, TProcessOptions>} */
65
+ this._grammar = grammar;
66
+ /** @type {CompiledVisitorMap<TPath>} */
67
+ this._visitors = [];
68
+ /** @type {TProcessOptions | undefined} */
69
+ this._options = options;
70
+ }
71
+
72
+ /**
73
+ * Register a Babel-style visitor map; calls accumulate per node type.
74
+ * A bucket is a function (= `{ enter }`) or `{ enter?, exit? }`.
75
+ * @param {VisitorMap<TPath>} map visitor map keyed by node type
76
+ * @returns {SourceProcessor<TPath, TProcessOptions>} `this`, for chaining
77
+ */
78
+ use(map) {
79
+ // `map`'s keys are node-type enum members; `Object.keys` stringifies them,
80
+ // so index the compiled array by the number to match the numeric `node.type`.
81
+ for (const type of Object.keys(map)) {
82
+ const key = Number(type);
83
+ const v = map[key];
84
+ let bucket = this._visitors[key];
85
+ if (!bucket) {
86
+ bucket = { enter: [], exit: [] };
87
+ this._visitors[key] = bucket;
88
+ }
89
+ if (typeof v === "function") {
90
+ bucket.enter.push(v);
91
+ } else {
92
+ if (v.enter) bucket.enter.push(v.enter);
93
+ if (v.exit) bucket.exit.push(v.exit);
94
+ }
95
+ }
96
+ return this;
97
+ }
98
+
99
+ /**
100
+ * Run the grammar over `input`, firing visitors in source order. No
101
+ * AST retained. Per-call `options` override the instance defaults.
102
+ * @param {string} input source text
103
+ * @param {TProcessOptions=} options grammar-specific options
104
+ */
105
+ process(input, options) {
106
+ const defaults = this._options;
107
+ this._grammar(
108
+ input,
109
+ this._visitors,
110
+ defaults
111
+ ? options
112
+ ? { ...defaults, ...options }
113
+ : defaults
114
+ : options || /** @type {TProcessOptions} */ ({})
115
+ );
116
+ }
117
+ }
118
+
119
+ module.exports = SourceProcessor;
@@ -31,6 +31,10 @@
31
31
  * @template V
32
32
  */
33
33
  class StackedCacheMap {
34
+ /**
35
+ * Initializes the mutable fallback map and the stack of immutable cache
36
+ * layers.
37
+ */
34
38
  constructor() {
35
39
  /** @type {Map<K, V>} */
36
40
  this.map = new Map();
@@ -39,9 +43,9 @@ class StackedCacheMap {
39
43
  }
40
44
 
41
45
  /**
42
- * If `immutable` is true, the map can be referenced by the StackedCacheMap
43
- * and should not be changed afterwards. If the map is mutable, all items
44
- * are copied into a fallback Map.
46
+ * Adds another cache layer. Immutable maps are retained by reference and
47
+ * reordered so larger layers are checked first, while mutable maps are
48
+ * copied into the fallback map.
45
49
  * @param {ReadonlyMap<K, V>} map map to add
46
50
  * @param {boolean=} immutable if 'map' is immutable and StackedCacheMap can keep referencing it
47
51
  */
@@ -64,6 +68,7 @@ class StackedCacheMap {
64
68
  }
65
69
 
66
70
  /**
71
+ * Stores or overrides a value in the mutable fallback map.
67
72
  * @param {K} item the key of the element to add
68
73
  * @param {V} value the value of the element to add
69
74
  * @returns {void}
@@ -73,6 +78,8 @@ class StackedCacheMap {
73
78
  }
74
79
 
75
80
  /**
81
+ * Rejects deletions because this data structure is optimized for append-only
82
+ * cache layers.
76
83
  * @param {K} item the item to delete
77
84
  * @returns {void}
78
85
  */
@@ -81,6 +88,8 @@ class StackedCacheMap {
81
88
  }
82
89
 
83
90
  /**
91
+ * Rejects `has` checks because they would force the same layered lookup work
92
+ * as `get` without returning the cached value.
84
93
  * @param {K} item the item to test
85
94
  * @returns {boolean} true if the item exists in this set
86
95
  */
@@ -91,6 +100,8 @@ class StackedCacheMap {
91
100
  }
92
101
 
93
102
  /**
103
+ * Looks up a key by scanning immutable cache layers first and then the
104
+ * mutable fallback map.
94
105
  * @param {K} item the key of the element to return
95
106
  * @returns {V | undefined} the value of the element
96
107
  */
@@ -102,12 +113,17 @@ class StackedCacheMap {
102
113
  return this.map.get(item);
103
114
  }
104
115
 
116
+ /**
117
+ * Removes every cache layer and clears the mutable fallback map.
118
+ */
105
119
  clear() {
106
120
  this.stack.length = 0;
107
121
  this.map.clear();
108
122
  }
109
123
 
110
124
  /**
125
+ * Returns the total number of entries across the fallback map and all stacked
126
+ * cache layers.
111
127
  * @returns {number} size of the map
112
128
  */
113
129
  get size() {
@@ -119,6 +135,7 @@ class StackedCacheMap {
119
135
  }
120
136
 
121
137
  /**
138
+ * Iterates over the fallback map first and then each stacked cache layer.
122
139
  * @returns {Iterator<[K, V]>} iterator
123
140
  */
124
141
  [Symbol.iterator]() {