webpack 5.107.1 → 5.108.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 (360) hide show
  1. package/hot/dev-server.js +2 -0
  2. package/lib/APIPlugin.js +8 -4
  3. package/lib/CacheFacade.js +7 -0
  4. package/lib/Chunk.js +4 -0
  5. package/lib/ChunkGraph.js +30 -9
  6. package/lib/CircularModulesPlugin.js +190 -0
  7. package/lib/CleanPlugin.js +2 -1
  8. package/lib/Compilation.js +396 -65
  9. package/lib/Compiler.js +52 -14
  10. package/lib/ConcatenationScope.js +10 -3
  11. package/lib/ContextExclusionPlugin.js +1 -0
  12. package/lib/ContextModule.js +92 -47
  13. package/lib/ContextModuleFactory.js +45 -38
  14. package/lib/ContextReplacementPlugin.js +4 -0
  15. package/lib/DefinePlugin.js +89 -15
  16. package/lib/Dependency.js +111 -7
  17. package/lib/EntryOptionPlugin.js +39 -2
  18. package/lib/EntryPlugin.js +2 -0
  19. package/lib/ExportsInfo.js +314 -73
  20. package/lib/ExternalModule.js +82 -34
  21. package/lib/ExternalModuleFactoryPlugin.js +1 -0
  22. package/lib/ExternalsPlugin.js +1 -0
  23. package/lib/FileSystemInfo.js +173 -23
  24. package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
  25. package/lib/FlagDependencyExportsPlugin.js +23 -0
  26. package/lib/FlagDependencyUsagePlugin.js +87 -5
  27. package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
  28. package/lib/Generator.js +8 -0
  29. package/lib/HotModuleReplacementPlugin.js +65 -28
  30. package/lib/IgnorePlugin.js +1 -0
  31. package/lib/InitFragment.js +5 -0
  32. package/lib/JavascriptMetaInfoPlugin.js +7 -5
  33. package/lib/LazyBarrel.js +361 -0
  34. package/lib/LoaderTargetPlugin.js +1 -0
  35. package/lib/Module.js +21 -42
  36. package/lib/ModuleGraph.js +3 -2
  37. package/lib/ModuleProfile.js +27 -1
  38. package/lib/ModuleTemplate.js +2 -0
  39. package/lib/MultiCompiler.js +16 -0
  40. package/lib/MultiStats.js +1 -0
  41. package/lib/MultiWatching.js +2 -0
  42. package/lib/NodeStuffPlugin.js +22 -17
  43. package/lib/NormalModule.js +557 -77
  44. package/lib/NormalModuleReplacementPlugin.js +2 -0
  45. package/lib/PrefetchPlugin.js +2 -0
  46. package/lib/ProgressPlugin.js +9 -1
  47. package/lib/ProvidePlugin.js +1 -0
  48. package/lib/RawModule.js +20 -16
  49. package/lib/RecordIdsPlugin.js +1 -0
  50. package/lib/RuntimeGlobals.js +5 -0
  51. package/lib/RuntimePlugin.js +58 -26
  52. package/lib/RuntimeTemplate.js +278 -21
  53. package/lib/SelfModuleFactory.js +1 -0
  54. package/lib/SourceMapDevToolPlugin.js +105 -30
  55. package/lib/Stats.js +1 -0
  56. package/lib/Template.js +8 -2
  57. package/lib/TemplatedPathPlugin.js +473 -131
  58. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
  59. package/lib/WarnDeprecatedOptionPlugin.js +4 -0
  60. package/lib/WarnNoModeSetPlugin.js +1 -0
  61. package/lib/WatchIgnorePlugin.js +1 -0
  62. package/lib/Watching.js +9 -0
  63. package/lib/WebpackOptionsApply.js +50 -5
  64. package/lib/asset/AssetBytesGenerator.js +11 -3
  65. package/lib/asset/AssetGenerator.js +47 -22
  66. package/lib/asset/AssetModule.js +47 -0
  67. package/lib/asset/AssetModulesPlugin.js +14 -14
  68. package/lib/asset/AssetParser.js +2 -2
  69. package/lib/asset/AssetSourceGenerator.js +8 -0
  70. package/lib/asset/RawDataUrlModule.js +12 -13
  71. package/lib/buildChunkGraph.js +88 -9
  72. package/lib/bun/BunTargetPlugin.js +48 -0
  73. package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
  74. package/lib/cache/AddManagedPathsPlugin.js +3 -0
  75. package/lib/cache/IdleFileCachePlugin.js +4 -0
  76. package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
  77. package/lib/cache/PackFileCacheStrategy.js +1 -0
  78. package/lib/cache/ResolverCachePlugin.js +2 -0
  79. package/lib/cache/getLazyHashedEtag.js +9 -2
  80. package/lib/cache/mergeEtags.js +2 -0
  81. package/lib/cli.js +109 -19
  82. package/lib/config/browserslistTargetHandler.js +99 -0
  83. package/lib/config/defaults.js +147 -7
  84. package/lib/config/defineConfig.js +31 -0
  85. package/lib/config/normalization.js +5 -0
  86. package/lib/config/target.js +181 -2
  87. package/lib/container/ContainerEntryModule.js +15 -14
  88. package/lib/container/ContainerExposedDependency.js +2 -2
  89. package/lib/container/ContainerReferencePlugin.js +1 -1
  90. package/lib/container/FallbackDependency.js +5 -7
  91. package/lib/container/FallbackModule.js +10 -9
  92. package/lib/container/RemoteModule.js +20 -10
  93. package/lib/container/RemoteRuntimeModule.js +14 -12
  94. package/lib/css/CssGenerator.js +353 -327
  95. package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
  96. package/lib/css/CssLoadingRuntimeModule.js +118 -47
  97. package/lib/css/CssModule.js +52 -23
  98. package/lib/css/CssModulesPlugin.js +107 -124
  99. package/lib/css/CssParser.js +2759 -2205
  100. package/lib/css/syntax.js +2859 -0
  101. package/lib/debug/ProfilingPlugin.js +2 -0
  102. package/lib/deno/DenoTargetPlugin.js +47 -0
  103. package/lib/dependencies/AMDDefineDependency.js +22 -17
  104. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
  105. package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
  106. package/lib/dependencies/AMDRequireContextDependency.js +7 -11
  107. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
  108. package/lib/dependencies/AMDRequireDependency.js +24 -20
  109. package/lib/dependencies/CachedConstDependency.js +3 -0
  110. package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
  111. package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
  112. package/lib/dependencies/CommonJsExportsDependency.js +21 -16
  113. package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
  114. package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
  115. package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
  116. package/lib/dependencies/CommonJsPlugin.js +1 -1
  117. package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
  118. package/lib/dependencies/CommonJsRequireDependency.js +42 -11
  119. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
  120. package/lib/dependencies/ConstDependency.js +16 -11
  121. package/lib/dependencies/ContextDependency.js +4 -0
  122. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
  123. package/lib/dependencies/ContextElementDependency.js +23 -14
  124. package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
  125. package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
  126. package/lib/dependencies/CriticalDependencyWarning.js +1 -0
  127. package/lib/dependencies/CssIcssExportDependency.js +512 -574
  128. package/lib/dependencies/CssIcssImportDependency.js +9 -9
  129. package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
  130. package/lib/dependencies/CssImportDependency.js +25 -1
  131. package/lib/dependencies/CssUrlDependency.js +23 -14
  132. package/lib/dependencies/DllEntryDependency.js +9 -13
  133. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  134. package/lib/dependencies/ExportsInfoDependency.js +12 -12
  135. package/lib/dependencies/ExternalModuleDependency.js +8 -5
  136. package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
  137. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
  138. package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
  139. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  140. package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
  141. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
  142. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
  143. package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
  144. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
  145. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
  146. package/lib/dependencies/HarmonyExportInitFragment.js +22 -20
  147. package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
  148. package/lib/dependencies/HarmonyExports.js +4 -1
  149. package/lib/dependencies/HarmonyImportDependency.js +24 -0
  150. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
  151. package/lib/dependencies/HarmonyImportGuard.js +254 -0
  152. package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
  153. package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
  154. package/lib/dependencies/HarmonyLinkingError.js +1 -0
  155. package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
  156. package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +267 -154
  157. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  158. package/lib/dependencies/HtmlInlineScriptDependency.js +20 -27
  159. package/lib/dependencies/HtmlInlineStyleDependency.js +62 -11
  160. package/lib/dependencies/HtmlSourceDependency.js +18 -0
  161. package/lib/dependencies/ImportContextDependency.js +5 -9
  162. package/lib/dependencies/ImportDependency.js +44 -2
  163. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  164. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  165. package/lib/dependencies/ImportMetaPlugin.js +74 -30
  166. package/lib/dependencies/ImportParserPlugin.js +19 -0
  167. package/lib/dependencies/ImportWeakDependency.js +1 -0
  168. package/lib/dependencies/JsonExportsDependency.js +9 -9
  169. package/lib/dependencies/LoaderImportDependency.js +1 -0
  170. package/lib/dependencies/LocalModule.js +11 -12
  171. package/lib/dependencies/LocalModuleDependency.js +11 -13
  172. package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
  173. package/lib/dependencies/ModuleDependency.js +7 -0
  174. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  175. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  176. package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
  177. package/lib/dependencies/ProvidedDependency.js +31 -27
  178. package/lib/dependencies/PureExpressionDependency.js +7 -9
  179. package/lib/dependencies/RequireEnsureDependency.js +12 -13
  180. package/lib/dependencies/RequireHeaderDependency.js +3 -4
  181. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  182. package/lib/dependencies/RequireResolveContextDependency.js +7 -11
  183. package/lib/dependencies/RequireResolveDependency.js +1 -0
  184. package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
  185. package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
  186. package/lib/dependencies/StaticExportsDependency.js +10 -10
  187. package/lib/dependencies/SystemPlugin.js +2 -0
  188. package/lib/dependencies/URLContextDependency.js +5 -7
  189. package/lib/dependencies/URLDependency.js +14 -16
  190. package/lib/dependencies/UnsupportedDependency.js +8 -13
  191. package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
  192. package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
  193. package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
  194. package/lib/dependencies/WorkerDependency.js +19 -8
  195. package/lib/dependencies/WorkerPlugin.js +40 -10
  196. package/lib/dependencies/processExportInfo.js +13 -11
  197. package/lib/dll/DelegatedModule.js +29 -15
  198. package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
  199. package/lib/dll/DelegatedPlugin.js +1 -0
  200. package/lib/dll/DllEntryPlugin.js +3 -0
  201. package/lib/dll/DllModule.js +3 -2
  202. package/lib/dll/DllPlugin.js +16 -0
  203. package/lib/dll/DllReferencePlugin.js +3 -0
  204. package/lib/dll/LibManifestPlugin.js +1 -0
  205. package/lib/electron/ElectronTargetPlugin.js +22 -4
  206. package/lib/errors/ConcurrentCompilationError.js +1 -0
  207. package/lib/errors/HookWebpackError.js +11 -13
  208. package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
  209. package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
  210. package/lib/errors/JSONParseError.js +9 -8
  211. package/lib/errors/ModuleBuildError.js +16 -13
  212. package/lib/errors/ModuleDependencyError.js +8 -1
  213. package/lib/errors/ModuleDependencyWarning.js +8 -1
  214. package/lib/errors/ModuleError.js +5 -11
  215. package/lib/errors/ModuleHashingError.js +4 -0
  216. package/lib/errors/ModuleNotFoundError.js +3 -0
  217. package/lib/errors/ModuleParseError.js +5 -11
  218. package/lib/errors/ModuleRestoreError.js +2 -0
  219. package/lib/errors/ModuleStoreError.js +3 -0
  220. package/lib/errors/ModuleWarning.js +7 -11
  221. package/lib/errors/NodeStuffInWebError.js +1 -0
  222. package/lib/errors/NonErrorEmittedError.js +2 -0
  223. package/lib/errors/UnhandledSchemeError.js +1 -0
  224. package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
  225. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
  226. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  227. package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
  228. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  229. package/lib/hmr/LazyCompilationPlugin.js +134 -6
  230. package/lib/html/HtmlGenerator.js +292 -50
  231. package/lib/html/HtmlModule.js +40 -0
  232. package/lib/html/HtmlModulesPlugin.js +287 -60
  233. package/lib/html/HtmlParser.js +1108 -1099
  234. package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
  235. package/lib/ids/IdHelpers.js +4 -2
  236. package/lib/index.js +19 -0
  237. package/lib/javascript/BasicEvaluatedExpression.js +1 -0
  238. package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
  239. package/lib/javascript/JavascriptGenerator.js +6 -2
  240. package/lib/javascript/JavascriptModule.js +54 -0
  241. package/lib/javascript/JavascriptModulesPlugin.js +257 -102
  242. package/lib/javascript/JavascriptParser.js +286 -159
  243. package/lib/json/JsonModule.js +40 -0
  244. package/lib/json/JsonModulesPlugin.js +7 -0
  245. package/lib/json/JsonParser.js +4 -2
  246. package/lib/library/AssignLibraryPlugin.js +5 -3
  247. package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
  248. package/lib/library/FalseIIFEUmdWarning.js +1 -0
  249. package/lib/library/ModuleLibraryPlugin.js +54 -29
  250. package/lib/library/SystemLibraryPlugin.js +3 -3
  251. package/lib/node/NodeTargetPlugin.js +1 -0
  252. package/lib/node/NodeWatchFileSystem.js +38 -22
  253. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
  254. package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
  255. package/lib/optimize/ConcatenatedModule.js +397 -78
  256. package/lib/optimize/ConstExportsPlugin.js +211 -0
  257. package/lib/optimize/InlineExports.js +178 -0
  258. package/lib/optimize/InnerGraph.js +372 -275
  259. package/lib/optimize/InnerGraphPlugin.js +196 -99
  260. package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
  261. package/lib/optimize/RealContentHashPlugin.js +14 -1
  262. package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
  263. package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
  264. package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
  265. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
  266. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
  267. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
  268. package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
  269. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  270. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
  271. package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
  272. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
  273. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
  274. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  275. package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
  276. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
  277. package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
  278. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  279. package/lib/schemes/HttpUriPlugin.js +3 -2
  280. package/lib/serialization/AggregateErrorSerializer.js +7 -6
  281. package/lib/serialization/ArraySerializer.js +4 -8
  282. package/lib/serialization/BinaryMiddleware.js +538 -468
  283. package/lib/serialization/DateObjectSerializer.js +2 -2
  284. package/lib/serialization/ErrorObjectSerializer.js +7 -6
  285. package/lib/serialization/MapObjectSerializer.js +5 -9
  286. package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
  287. package/lib/serialization/ObjectMiddleware.js +50 -13
  288. package/lib/serialization/PlainObjectSerializer.js +9 -8
  289. package/lib/serialization/RegExpObjectSerializer.js +2 -2
  290. package/lib/serialization/Serializer.js +1 -0
  291. package/lib/serialization/SetObjectSerializer.js +4 -8
  292. package/lib/sharing/ConsumeSharedModule.js +6 -7
  293. package/lib/sharing/ConsumeSharedPlugin.js +1 -0
  294. package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
  295. package/lib/sharing/ProvideSharedDependency.js +30 -15
  296. package/lib/sharing/ProvideSharedModule.js +30 -11
  297. package/lib/sharing/ProvideSharedPlugin.js +4 -2
  298. package/lib/sharing/SharePlugin.js +3 -0
  299. package/lib/sharing/ShareRuntimeModule.js +18 -16
  300. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  301. package/lib/sharing/utils.js +1 -1
  302. package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
  303. package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
  304. package/lib/stats/StatsFactory.js +11 -9
  305. package/lib/stats/StatsPrinter.js +9 -2
  306. package/lib/url/URLParserPlugin.js +5 -2
  307. package/lib/util/AsyncQueue.js +10 -0
  308. package/lib/util/LazyBucketSortedSet.js +5 -0
  309. package/lib/util/LazySet.js +6 -4
  310. package/lib/util/LocConverter.js +11 -1
  311. package/lib/util/Semaphore.js +1 -0
  312. package/lib/util/SourceProcessor.js +106 -0
  313. package/lib/util/TupleSet.js +1 -0
  314. package/lib/util/WeakTupleMap.js +27 -1
  315. package/lib/util/chainedImports.js +3 -3
  316. package/lib/util/comparators.js +2 -2
  317. package/lib/util/concatenate.js +31 -7
  318. package/lib/util/createHash.js +0 -1
  319. package/lib/util/deterministicGrouping.js +19 -12
  320. package/lib/util/extractSourceMap.js +1 -1
  321. package/lib/util/findGraphRoots.js +2 -0
  322. package/lib/util/fs.js +16 -6
  323. package/lib/util/hash/DebugHash.js +1 -0
  324. package/lib/util/hash/hash-digest.js +24 -15
  325. package/lib/util/identifier.js +7 -0
  326. package/lib/util/internalSerializables.js +11 -2
  327. package/lib/util/magicComment.js +42 -0
  328. package/lib/util/makeSerializable.js +1 -0
  329. package/lib/util/nonNumericOnlyHash.js +30 -1
  330. package/lib/util/property.js +7 -1
  331. package/lib/util/publicPathPlaceholder.js +64 -0
  332. package/lib/util/registerExternalSerializer.js +4 -4
  333. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  334. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
  335. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
  336. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
  337. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
  338. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  339. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
  340. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
  341. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
  342. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
  343. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
  344. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
  345. package/lib/wasm-sync/WebAssemblyParser.js +7 -3
  346. package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
  347. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
  348. package/package.json +36 -28
  349. package/schemas/WebpackOptions.check.js +1 -1
  350. package/schemas/WebpackOptions.json +212 -3
  351. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
  352. package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
  353. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  354. package/schemas/plugins/HtmlParserOptions.json +3 -0
  355. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  356. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  357. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  358. package/types.d.ts +1592 -314
  359. package/lib/css/walkCssTokens.js +0 -2020
  360. package/lib/util/AppendOnlyStackedSet.js +0 -93
@@ -4,8 +4,8 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
7
+ /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext<[number]>} ObjectDeserializerContext */
8
+ /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext<[number]>} ObjectSerializerContext */
9
9
 
10
10
  class DateObjectSerializer {
11
11
  /**
@@ -4,8 +4,9 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
7
+ /** @typedef {import("./types").ComplexSerializableType} ComplexSerializableType */
8
+ /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext<ComplexSerializableType[]>} ObjectDeserializerContext */
9
+ /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext<ComplexSerializableType[]>} ObjectSerializerContext */
9
10
 
10
11
  /** @typedef {Error & { cause?: unknown }} ErrorWithCause */
11
12
 
@@ -27,8 +28,8 @@ class ErrorObjectSerializer {
27
28
  context.write(obj.message);
28
29
  context.write(obj.stack);
29
30
  context.write(
30
- /** @type {ErrorWithCause} */
31
- (obj).cause
31
+ /** @type {ComplexSerializableType} */
32
+ (/** @type {ErrorWithCause} */ (obj).cause)
32
33
  );
33
34
  }
34
35
 
@@ -40,8 +41,8 @@ class ErrorObjectSerializer {
40
41
  deserialize(context) {
41
42
  const err = new this.Type();
42
43
 
43
- err.message = context.read();
44
- err.stack = context.read();
44
+ err.message = /** @type {string} */ (context.read());
45
+ err.stack = /** @type {string | undefined} */ (context.read());
45
46
  /** @type {ErrorWithCause} */
46
47
  (err).cause = context.read();
47
48
 
@@ -4,15 +4,12 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
9
-
10
7
  class MapObjectSerializer {
11
8
  /**
12
9
  * Serializes this instance into the provided serializer context.
13
10
  * @template K, V
14
11
  * @param {Map<K, V>} obj map
15
- * @param {ObjectSerializerContext} context context
12
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<(number | K | V)[]>} context context
16
13
  */
17
14
  serialize(obj, context) {
18
15
  context.write(obj.size);
@@ -27,21 +24,20 @@ class MapObjectSerializer {
27
24
  /**
28
25
  * Restores this instance from the provided deserializer context.
29
26
  * @template K, V
30
- * @param {ObjectDeserializerContext} context context
27
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<(number | K | V)[]>} context context
31
28
  * @returns {Map<K, V>} map
32
29
  */
33
30
  deserialize(context) {
34
- /** @type {number} */
35
- const size = context.read();
31
+ const size = /** @type {number} */ (context.read());
36
32
  /** @type {Map<K, V>} */
37
33
  const map = new Map();
38
34
  /** @type {K[]} */
39
35
  const keys = [];
40
36
  for (let i = 0; i < size; i++) {
41
- keys.push(context.read());
37
+ keys.push(/** @type {K} */ (context.read()));
42
38
  }
43
39
  for (let i = 0; i < size; i++) {
44
- map.set(keys[i], context.read());
40
+ map.set(keys[i], /** @type {V} */ (context.read()));
45
41
  }
46
42
  return map;
47
43
  }
@@ -4,9 +4,6 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
9
-
10
7
  /** @typedef {string[]} Keys */
11
8
 
12
9
  class NullPrototypeObjectSerializer {
@@ -14,7 +11,7 @@ class NullPrototypeObjectSerializer {
14
11
  * Serializes this instance into the provided serializer context.
15
12
  * @template {object} T
16
13
  * @param {T} obj null object
17
- * @param {ObjectSerializerContext} context context
14
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<(string | null | T[keyof T])[]>} context context
18
15
  */
19
16
  serialize(obj, context) {
20
17
  /** @type {Keys} */
@@ -31,7 +28,7 @@ class NullPrototypeObjectSerializer {
31
28
  /**
32
29
  * Restores this instance from the provided deserializer context.
33
30
  * @template {object} T
34
- * @param {ObjectDeserializerContext} context context
31
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<(string | null | T[keyof T])[]>} context context
35
32
  * @returns {T} null object
36
33
  */
37
34
  deserialize(context) {
@@ -39,14 +36,15 @@ class NullPrototypeObjectSerializer {
39
36
  const obj = Object.create(null);
40
37
  /** @type {Keys} */
41
38
  const keys = [];
42
- /** @type {Keys[number] | null} */
43
- let key = context.read();
39
+ let key = /** @type {string | null} */ (context.read());
44
40
  while (key !== null) {
45
41
  keys.push(key);
46
- key = context.read();
42
+ key = /** @type {string | null} */ (context.read());
47
43
  }
48
44
  for (const key of keys) {
49
- obj[/** @type {keyof T} */ (key)] = context.read();
45
+ obj[/** @type {keyof T} */ (key)] = /** @type {T[keyof T]} */ (
46
+ context.read()
47
+ );
50
48
  }
51
49
  return obj;
52
50
  }
@@ -60,10 +60,24 @@ Technically any value can be used.
60
60
 
61
61
  /** @typedef {EXPECTED_OBJECT | string} ReferenceableItem */
62
62
 
63
+ /**
64
+ * First tuple element; element type for an open array; `EXPECTED_ANY` once exhausted.
65
+ * @template {readonly EXPECTED_ANY[]} T
66
+ * @typedef {T extends readonly [infer H, ...EXPECTED_ANY[]] ? H : T extends readonly [] ? EXPECTED_ANY : T extends readonly (infer E)[] ? E : never} Head
67
+ */
68
+
69
+ /**
70
+ * Tuple without its first element; unchanged when `T` is an open array.
71
+ * @template {readonly EXPECTED_ANY[]} T
72
+ * @typedef {T extends readonly [EXPECTED_ANY, ...infer R] ? R : T} Tail
73
+ */
74
+
63
75
  /**
64
76
  * Defines the object serializer context type used by this module.
77
+ * `T` is the tuple of values written in order; each `write` consumes the head.
78
+ * @template {readonly EXPECTED_ANY[]} [T=readonly EXPECTED_ANY[]]
65
79
  * @typedef {object} ObjectSerializerContext
66
- * @property {(value: EXPECTED_ANY) => void} write
80
+ * @property {(value: Head<T>) => ObjectSerializerContext<Tail<T>>} write
67
81
  * @property {(value: ReferenceableItem) => void} setCircularReference
68
82
  * @property {() => ObjectSerializerSnapshot} snapshot
69
83
  * @property {(snapshot: ObjectSerializerSnapshot) => void} rollback
@@ -73,16 +87,20 @@ Technically any value can be used.
73
87
 
74
88
  /**
75
89
  * Defines the object deserializer context type used by this module.
90
+ * `T` is the tuple of values read in order: `read` returns the head, and `rest`
91
+ * re-types the same context to `Tail<T>` so successive reads stay positional.
92
+ * @template {readonly EXPECTED_ANY[]} [T=readonly EXPECTED_ANY[]]
76
93
  * @typedef {object} ObjectDeserializerContext
77
- * @property {() => EXPECTED_ANY} read
94
+ * @property {() => Head<T>} read
95
+ * @property {ObjectDeserializerContext<Tail<T>>} rest
78
96
  * @property {(value: ReferenceableItem) => void} setCircularReference
79
97
  */
80
98
 
81
99
  /**
82
100
  * Defines the object serializer type used by this module.
83
101
  * @typedef {object} ObjectSerializer
84
- * @property {(value: EXPECTED_ANY, context: ObjectSerializerContext) => void} serialize
85
- * @property {(context: ObjectDeserializerContext) => EXPECTED_ANY} deserialize
102
+ * @property {(value: EXPECTED_ANY, context: ObjectSerializerContext<EXPECTED_ANY>) => void} serialize
103
+ * @property {(context: ObjectDeserializerContext<EXPECTED_ANY>) => EXPECTED_ANY} deserialize
86
104
  */
87
105
 
88
106
  /**
@@ -214,7 +232,7 @@ const loaders = new Map();
214
232
  /** @typedef {PrimitiveSerializableType[]} SerializedType */
215
233
  /** @typedef {{ logger: Logger }} Context */
216
234
 
217
- /** @typedef {(context: ObjectSerializerContext | ObjectDeserializerContext) => void} ExtendContext */
235
+ /** @typedef {(context: ObjectSerializerContext<EXPECTED_ANY> | ObjectDeserializerContext<EXPECTED_ANY>) => void} ExtendContext */
218
236
 
219
237
  /**
220
238
  * Represents ObjectMiddleware.
@@ -506,11 +524,11 @@ class ObjectMiddleware extends SerializerMiddleware {
506
524
  };
507
525
  /** @type {undefined | WeakSet<Error>} */
508
526
  let hasDebugInfoAttached;
509
- /** @type {ObjectSerializerContext} */
527
+ /** @type {ObjectSerializerContext<EXPECTED_ANY>} */
510
528
  let ctx = {
511
529
  write(value) {
512
530
  try {
513
- process(value);
531
+ process(/** @type {ComplexSerializableType} */ (value));
514
532
  } catch (err) {
515
533
  if (err !== NOT_SERIALIZABLE) {
516
534
  if (hasDebugInfoAttached === undefined) {
@@ -518,12 +536,14 @@ class ObjectMiddleware extends SerializerMiddleware {
518
536
  }
519
537
  if (!hasDebugInfoAttached.has(/** @type {Error} */ (err))) {
520
538
  /** @type {Error} */
521
- (err).message += `\nwhile serializing ${stackToString(value)}`;
539
+ (err).message +=
540
+ `\nwhile serializing ${stackToString(/** @type {ComplexSerializableType} */ (value))}`;
522
541
  hasDebugInfoAttached.add(/** @type {Error} */ (err));
523
542
  }
524
543
  }
525
544
  throw err;
526
545
  }
546
+ return ctx;
527
547
  },
528
548
  setCircularReference(ref) {
529
549
  addReferenceable(ref);
@@ -625,8 +645,19 @@ class ObjectMiddleware extends SerializerMiddleware {
625
645
  // check if we can emit a reference
626
646
  const ref = referenceable.get(item);
627
647
  if (ref !== undefined) {
628
- result.push(ESCAPE, ref - currentPos);
629
- return;
648
+ const offset = ref - currentPos;
649
+ if (
650
+ // One far ref → 5 bytes (`null` + offset), one near ref -> 2/3 bytes
651
+ offset >= -32768 ||
652
+ // long enough that the ref wins, keep it
653
+ item.length >= 4 ||
654
+ // multibyte → inline would be even bigger, keep it
655
+ Buffer.byteLength(item) !== item.length
656
+ ) {
657
+ // A back-reference is `null` + the offset.
658
+ result.push(ESCAPE, offset);
659
+ return;
660
+ }
630
661
  }
631
662
  addReferenceable(item);
632
663
  }
@@ -736,10 +767,14 @@ class ObjectMiddleware extends SerializerMiddleware {
736
767
  let objectTypeLookup = [];
737
768
  /** @type {ComplexSerializableType[]} */
738
769
  let result = [];
739
- /** @type {ObjectDeserializerContext} */
770
+ /** @type {ObjectDeserializerContext<EXPECTED_ANY>} */
740
771
  let ctx = {
741
772
  read() {
742
- return decodeValue();
773
+ return /** @type {EXPECTED_ANY} */ (decodeValue());
774
+ },
775
+ // type-only cursor advance; same object, retyped to the tuple tail
776
+ get rest() {
777
+ return ctx;
743
778
  },
744
779
  setCircularReference(ref) {
745
780
  addReferenceable(ref);
@@ -859,7 +894,9 @@ class ObjectMiddleware extends SerializerMiddleware {
859
894
  }
860
895
 
861
896
  return item;
862
- } else if (Buffer.isBuffer(item)) {
897
+ } else if (typeof item === "object") {
898
+ // Only non-null objects reach here (ESCAPE/null handled above), and
899
+ // the stream's only object type is Buffer — avoids a Buffer.isBuffer call
863
900
  addReferenceable(item);
864
901
 
865
902
  return item;
@@ -4,9 +4,6 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
9
-
10
7
  /** @typedef {EXPECTED_FUNCTION} CacheAssoc */
11
8
 
12
9
  /**
@@ -78,7 +75,7 @@ class PlainObjectSerializer {
78
75
  * Serializes this instance into the provided serializer context.
79
76
  * @template {object} T
80
77
  * @param {T} obj plain object
81
- * @param {ObjectSerializerContext} context context
78
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
82
79
  */
83
80
  serialize(obj, context) {
84
81
  const keys = /** @type {(keyof T)[]} */ (Object.keys(obj));
@@ -106,18 +103,22 @@ class PlainObjectSerializer {
106
103
  /**
107
104
  * Restores this instance from the provided deserializer context.
108
105
  * @template {object} T
109
- * @param {ObjectDeserializerContext} context context
106
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<((keyof T)[] | keyof T | null | T[keyof T])[]>} context context
110
107
  * @returns {T} plain object
111
108
  */
112
109
  deserialize(context) {
113
- const keys = context.read();
110
+ const keys = /** @type {(keyof T)[] | keyof T | null} */ (context.read());
114
111
  const obj = /** @type {T} */ ({});
115
112
  if (Array.isArray(keys)) {
116
113
  for (const key of keys) {
117
- obj[/** @type {keyof T} */ (key)] = context.read();
114
+ obj[/** @type {keyof T} */ (key)] = /** @type {T[keyof T]} */ (
115
+ context.read()
116
+ );
118
117
  }
119
118
  } else if (keys !== null) {
120
- obj[/** @type {keyof T} */ (keys)] = context.read();
119
+ obj[/** @type {keyof T} */ (keys)] = /** @type {T[keyof T]} */ (
120
+ context.read()
121
+ );
121
122
  }
122
123
  return obj;
123
124
  }
@@ -4,8 +4,8 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
7
+ /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext<[string, string]>} ObjectDeserializerContext */
8
+ /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext<[string, string]>} ObjectSerializerContext */
9
9
 
10
10
  class RegExpObjectSerializer {
11
11
  /**
@@ -25,6 +25,7 @@ class Serializer {
25
25
  constructor(middlewares, context) {
26
26
  this.serializeMiddlewares = [...middlewares];
27
27
  this.deserializeMiddlewares = [...middlewares].reverse();
28
+ /** @type {Context | undefined} */
28
29
  this.context = context;
29
30
  }
30
31
 
@@ -4,15 +4,12 @@
4
4
 
5
5
  "use strict";
6
6
 
7
- /** @typedef {import("./ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("./ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
9
-
10
7
  class SetObjectSerializer {
11
8
  /**
12
9
  * Serializes this instance into the provided serializer context.
13
10
  * @template T
14
11
  * @param {Set<T>} obj set
15
- * @param {ObjectSerializerContext} context context
12
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<(number | T)[]>} context context
16
13
  */
17
14
  serialize(obj, context) {
18
15
  context.write(obj.size);
@@ -24,16 +21,15 @@ class SetObjectSerializer {
24
21
  /**
25
22
  * Restores this instance from the provided deserializer context.
26
23
  * @template T
27
- * @param {ObjectDeserializerContext} context context
24
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<(number | T)[]>} context context
28
25
  * @returns {Set<T>} date
29
26
  */
30
27
  deserialize(context) {
31
- /** @type {number} */
32
- const size = context.read();
28
+ const size = /** @type {number} */ (context.read());
33
29
  /** @type {Set<T>} */
34
30
  const set = new Set();
35
31
  for (let i = 0; i < size; i++) {
36
- set.add(context.read());
32
+ set.add(/** @type {T} */ (context.read()));
37
33
  }
38
34
  return set;
39
35
  }
@@ -39,8 +39,8 @@ const fallbackModuleCache = new WeakMap();
39
39
  /** @typedef {import("../Module").ExportsType} ExportsType */
40
40
  /** @typedef {import("../RequestShortener")} RequestShortener */
41
41
  /** @typedef {import("../ResolverFactory").ResolverWithOptions} ResolverWithOptions */
42
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
43
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
42
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[ConsumeOptions]>} ObjectDeserializerContext */
43
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[ConsumeOptions]>} ObjectSerializerContext */
44
44
  /** @typedef {import("../util/Hash")} Hash */
45
45
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
46
46
  /** @typedef {import("../util/semver").SemVerRange} SemVerRange */
@@ -68,6 +68,7 @@ class ConsumeSharedModule extends Module {
68
68
  */
69
69
  constructor(context, options) {
70
70
  super(WEBPACK_MODULE_TYPE_CONSUME_SHARED_MODULE, context);
71
+ /** @type {ConsumeOptions} */
71
72
  this.options = options;
72
73
  }
73
74
 
@@ -335,8 +336,7 @@ class ConsumeSharedModule extends Module {
335
336
  * @param {ObjectSerializerContext} context context
336
337
  */
337
338
  serialize(context) {
338
- const { write } = context;
339
- write(this.options);
339
+ context.write(this.options);
340
340
  super.serialize(context);
341
341
  }
342
342
 
@@ -345,9 +345,8 @@ class ConsumeSharedModule extends Module {
345
345
  * @param {ObjectDeserializerContext} context context
346
346
  */
347
347
  deserialize(context) {
348
- const { read } = context;
349
- this.options = read();
350
- super.deserialize(context);
348
+ this.options = context.read();
349
+ super.deserialize(context.rest);
351
350
  }
352
351
  }
353
352
 
@@ -41,6 +41,7 @@ class ConsumeSharedPlugin {
41
41
  * @param {ConsumeSharedPluginOptions} options options
42
42
  */
43
43
  constructor(options) {
44
+ /** @type {ConsumeSharedPluginOptions} */
44
45
  this.options = options;
45
46
  }
46
47