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
@@ -40,7 +40,9 @@ function getOptimizedDeferredModule(
40
40
  ) {
41
41
  runtimeRequirements.add(RuntimeGlobals.makeOptimizedDeferredNamespaceObject);
42
42
  const mode = getMakeDeferredNamespaceModeFromExportsType(exportsType);
43
- return `${RuntimeGlobals.makeOptimizedDeferredNamespaceObject}(${moduleId}, ${mode}${
43
+ return `${
44
+ RuntimeGlobals.makeOptimizedDeferredNamespaceObject
45
+ }(${moduleId}, ${mode}${
44
46
  asyncDepsIds.length > 0
45
47
  ? `, ${JSON.stringify(asyncDepsIds.filter((x) => x !== null))}`
46
48
  : ""
@@ -63,19 +65,22 @@ class MakeOptimizedDeferredNamespaceObjectRuntimeModule extends HelperRuntimeMod
63
65
  */
64
66
  generate() {
65
67
  if (!this.compilation) return null;
68
+ const { runtimeTemplate } = this.compilation;
69
+ const cst = runtimeTemplate.renderConst();
70
+ const lt = runtimeTemplate.renderLet();
66
71
  const fn = RuntimeGlobals.makeOptimizedDeferredNamespaceObject;
67
72
  const hasAsync = this.hasAsyncRuntime;
68
73
  return Template.asString([
69
74
  // Note: must be a function (not arrow), because this is used in body!
70
75
  `${fn} = function(moduleId, mode${hasAsync ? ", asyncDeps" : ""}) {`,
71
76
  Template.indent([
72
- "var r = this;",
73
- hasAsync ? "var isAsync = asyncDeps && asyncDeps.length;" : "",
74
- "var obj = {",
77
+ `${cst} r = this;`,
78
+ hasAsync ? `${cst} isAsync = asyncDeps && asyncDeps.length;` : "",
79
+ `${cst} obj = {`,
75
80
  Template.indent([
76
81
  "get a() {",
77
82
  Template.indent([
78
- "var exports = r(moduleId);",
83
+ `${lt} exports = r(moduleId);`,
79
84
  hasAsync
80
85
  ? `if(isAsync) exports = exports[${RuntimeGlobals.asyncModuleExportSymbol}];`
81
86
  : "",
@@ -115,11 +120,11 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
115
120
  generate() {
116
121
  if (!this.compilation) return null;
117
122
  const { runtimeTemplate } = this.compilation;
123
+ const cst = runtimeTemplate.renderConst();
124
+ const lt = runtimeTemplate.renderLet();
118
125
  const fn = RuntimeGlobals.makeDeferredNamespaceObject;
119
126
  const hasAsync = this.hasAsyncRuntime;
120
- const init = runtimeTemplate.supportsOptionalChaining()
121
- ? "init?.();"
122
- : "if (init) init();";
127
+ const init = `${runtimeTemplate.optionalChaining("init", "()")};`;
123
128
  return `${fn} = ${runtimeTemplate.basicFunction("moduleId, mode", [
124
129
  // Per the TC39 import-defer spec, deferred namespaces are
125
130
  // distinct from their eager counterparts and the same module
@@ -144,13 +149,13 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
144
149
  // "default-with-named", another as "namespace") get
145
150
  // distinct cache entries.
146
151
  "mode &= ~16;",
147
- "var byMode = __webpack_module_deferred_namespace_cache__[moduleId];",
152
+ `${lt} byMode = __webpack_module_deferred_namespace_cache__[moduleId];`,
148
153
  "if (byMode && byMode[mode] !== undefined) return byMode[mode];",
149
154
  "if (!byMode) byMode = __webpack_module_deferred_namespace_cache__[moduleId] = {};",
150
- "var cachedModule = __webpack_module_cache__[moduleId];",
155
+ `${cst} cachedModule = __webpack_module_cache__[moduleId];`,
151
156
  "if (cachedModule && cachedModule.error === undefined && !(mode & 8)) {",
152
157
  Template.indent([
153
- "var exports = cachedModule.exports;",
158
+ `${lt} exports = cachedModule.exports;`,
154
159
  hasAsync
155
160
  ? `if (${RuntimeGlobals.asyncModuleExportSymbol} in exports) exports = exports[${RuntimeGlobals.asyncModuleExportSymbol}];`
156
161
  : "",
@@ -158,7 +163,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
158
163
  ]),
159
164
  "}",
160
165
  "",
161
- `var init = ${runtimeTemplate.basicFunction("", [
166
+ `${lt} init = ${runtimeTemplate.basicFunction("", [
162
167
  `ns = ${RuntimeGlobals.require}(moduleId);`,
163
168
  hasAsync
164
169
  ? `if (${RuntimeGlobals.asyncModuleExportSymbol} in ns) ns = ns[${RuntimeGlobals.asyncModuleExportSymbol}];`
@@ -206,12 +211,12 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
206
211
  // proposal, the [[StringTag]] of a Deferred Module Namespace
207
212
  // Exotic Object is "Deferred Module"), and the target was already
208
213
  // pre-populated with those values below.
209
- "var keys = Reflect.ownKeys(ns);",
214
+ `${cst} keys = Reflect.ownKeys(ns);`,
210
215
  "for (var i = 0; i < keys.length; i++) {",
211
216
  Template.indent([
212
- "var k = keys[i];",
217
+ `${cst} k = keys[i];`,
213
218
  'if (k === "__esModule" || k === Symbol.toStringTag) continue;',
214
- "if (!Object.prototype.hasOwnProperty.call(ns_target, k)) {",
219
+ `if (!${runtimeTemplate.objectHasOwn("ns_target", "k")}) {`,
215
220
  Template.indent([
216
221
  "try { Object.defineProperty(ns_target, k, Reflect.getOwnPropertyDescriptor(ns, k)); } catch (_) {}"
217
222
  ]),
@@ -227,15 +232,15 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
227
232
  // `__esModule` / `Symbol.toStringTag` non-configurable properties).
228
233
  // Using a dedicated target keeps the proxy invariant-compliant
229
234
  // without interfering with the module's own exports object.
230
- "var ns_target = { __proto__: null };",
235
+ `${cst} ns_target = { __proto__: null };`,
231
236
  // Pre-populate the synthetic deferred-namespace properties with
232
237
  // fully non-configurable, non-writable, non-enumerable descriptors
233
238
  // (matching the TC39 import-defer spec for Module Namespace
234
239
  // Exotic Objects). The trap returns the same descriptors below.
235
240
  'Object.defineProperty(ns_target, "__esModule", { value: true });',
236
241
  'Object.defineProperty(ns_target, Symbol.toStringTag, { value: "Deferred Module" });',
237
- "var ns = ns_target;",
238
- "var handler = {",
242
+ `${lt} ns = ns_target;`,
243
+ `${cst} handler = {`,
239
244
  Template.indent([
240
245
  "__proto__: null,",
241
246
  // Per the TC39 import-defer proposal, `IsSymbolLikeNamespaceKey`
@@ -244,7 +249,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
244
249
  // trigger evaluation of the deferred module. The Symbol checks
245
250
  // below short-circuit to the pre-populated target without
246
251
  // running `init()`.
247
- `get: ${runtimeTemplate.basicFunction("_, name", [
252
+ `${runtimeTemplate.method("get", "_, name", [
248
253
  "switch (name) {",
249
254
  Template.indent([
250
255
  'case "__esModule": return true;',
@@ -256,7 +261,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
256
261
  init,
257
262
  "return ns[name];"
258
263
  ])},`,
259
- `has: ${runtimeTemplate.basicFunction("_, name", [
264
+ `${runtimeTemplate.method("has", "_, name", [
260
265
  "switch (name) {",
261
266
  Template.indent(
262
267
  [
@@ -275,12 +280,20 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
275
280
  init,
276
281
  "return name in ns;"
277
282
  ])},`,
278
- `ownKeys: ${runtimeTemplate.basicFunction("", [
283
+ `${runtimeTemplate.method("ownKeys", "", [
279
284
  init,
280
- `var keys = Reflect.ownKeys(ns).filter(${runtimeTemplate.expressionFunction('x !== "then" && x !== Symbol.toStringTag', "x")}).concat([Symbol.toStringTag]);`,
285
+ `${cst} filtered = Reflect.ownKeys(ns).filter(${runtimeTemplate.expressionFunction(
286
+ 'x !== "then" && x !== Symbol.toStringTag',
287
+ "x"
288
+ )});`,
289
+ `${cst} keys = ${
290
+ runtimeTemplate.supportsSpread()
291
+ ? "[...filtered, Symbol.toStringTag]"
292
+ : "filtered.concat([Symbol.toStringTag])"
293
+ };`,
281
294
  "return keys;"
282
295
  ])},`,
283
- `getOwnPropertyDescriptor: ${runtimeTemplate.basicFunction("_, name", [
296
+ `${runtimeTemplate.method("getOwnPropertyDescriptor", "_, name", [
284
297
  "switch (name) {",
285
298
  Template.indent([
286
299
  // Match the descriptors actually defined on `ns_target`
@@ -294,7 +307,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
294
307
  "}",
295
308
  'if (typeof name === "symbol") return Reflect.getOwnPropertyDescriptor(ns_target, name);',
296
309
  init,
297
- "var desc = Reflect.getOwnPropertyDescriptor(ns, name);",
310
+ `${lt} desc = Reflect.getOwnPropertyDescriptor(ns, name);`,
298
311
  'if (mode & 2 && name == "default" && !desc) {',
299
312
  Template.indent("desc = { value: ns, configurable: true };"),
300
313
  "}",
@@ -305,7 +318,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
305
318
  // algorithm calls `[[GetOwnProperty]]` first, which forces
306
319
  // evaluation on a deferred namespace). Symbol keys go through
307
320
  // OrdinaryDefineOwnProperty and do not trigger eval.
308
- `defineProperty: ${runtimeTemplate.basicFunction("_, name", [
321
+ `${runtimeTemplate.method("defineProperty", "_, name", [
309
322
  'if (typeof name === "symbol" || name === "then") return false;',
310
323
  init,
311
324
  "return false;"
@@ -314,7 +327,7 @@ class MakeDeferredNamespaceObjectRuntimeModule extends HelperRuntimeModule {
314
327
  // still trigger evaluation for string keys (the spec
315
328
  // algorithm calls `GetModuleExportsList` for non-symbol-like
316
329
  // keys, forcing evaluation on a deferred namespace).
317
- `deleteProperty: ${runtimeTemplate.basicFunction("_, name", [
330
+ `${runtimeTemplate.method("deleteProperty", "_, name", [
318
331
  'if (typeof name === "symbol" || name === "then") return false;',
319
332
  init,
320
333
  "return false;"
@@ -26,7 +26,7 @@ class MakeNamespaceObjectRuntimeModule extends HelperRuntimeModule {
26
26
  return Template.asString([
27
27
  "// define __esModule on exports",
28
28
  `${fn} = ${runtimeTemplate.basicFunction("exports", [
29
- "if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {",
29
+ `if(${runtimeTemplate.supportsSymbol() ? "" : "typeof Symbol !== 'undefined' && "}Symbol.toStringTag) {`,
30
30
  Template.indent([
31
31
  "Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });"
32
32
  ]),
@@ -23,7 +23,7 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
23
23
  const compilation = /** @type {Compilation} */ (this.compilation);
24
24
  const { runtimeTemplate } = compilation;
25
25
  return Template.asString([
26
- "var deferred = [];",
26
+ `${runtimeTemplate.renderConst()} deferred = [];`,
27
27
  `${RuntimeGlobals.onChunksLoaded} = ${runtimeTemplate.basicFunction(
28
28
  "result, chunkIds, fn, priority",
29
29
  [
@@ -35,14 +35,14 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
35
35
  "return;"
36
36
  ]),
37
37
  "}",
38
- "var notFulfilled = Infinity;",
38
+ `${runtimeTemplate.renderLet()} notFulfilled = Infinity;`,
39
39
  "for (var i = 0; i < deferred.length; i++) {",
40
40
  Template.indent([
41
41
  runtimeTemplate.destructureArray(
42
42
  ["chunkIds", "fn", "priority"],
43
43
  "deferred[i]"
44
44
  ),
45
- "var fulfilled = true;",
45
+ `${runtimeTemplate.renderLet()} fulfilled = true;`,
46
46
  "for (var j = 0; j < chunkIds.length; j++) {",
47
47
  Template.indent([
48
48
  `if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(${
@@ -63,7 +63,7 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
63
63
  "if(fulfilled) {",
64
64
  Template.indent([
65
65
  "deferred.splice(i--, 1)",
66
- "var r = fn();",
66
+ `${runtimeTemplate.renderConst()} r = fn();`,
67
67
  "if (r !== undefined) result = r;"
68
68
  ]),
69
69
  "}"
@@ -22,11 +22,12 @@ class RelativeUrlRuntimeModule extends HelperRuntimeModule {
22
22
  generate() {
23
23
  const compilation = /** @type {Compilation} */ (this.compilation);
24
24
  const { runtimeTemplate } = compilation;
25
+ const cst = runtimeTemplate.renderConst();
25
26
  return Template.asString([
26
27
  `${RuntimeGlobals.relativeUrl} = function RelativeURL(url) {`,
27
28
  Template.indent([
28
- 'var realUrl = new URL(url, "x:/");',
29
- "var values = {};",
29
+ `${cst} realUrl = new URL(url, "x:/");`,
30
+ `${cst} values = {};`,
30
31
  "for (var key in realUrl) values[key] = realUrl[key];",
31
32
  "values.href = url;",
32
33
  'values.pathname = url.replace(/[?#].*/, "");',
@@ -36,7 +36,7 @@ class StartupChunkDependenciesRuntimeModule extends RuntimeModule {
36
36
  const compilation = /** @type {Compilation} */ (this.compilation);
37
37
  const { runtimeTemplate } = compilation;
38
38
  return Template.asString([
39
- `var next = ${RuntimeGlobals.startup};`,
39
+ `${runtimeTemplate.renderConst()} next = ${RuntimeGlobals.startup};`,
40
40
  `${RuntimeGlobals.startup} = ${runtimeTemplate.basicFunction(
41
41
  "",
42
42
  !this.asyncChunkLoading
@@ -26,11 +26,12 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
26
26
  generate() {
27
27
  const compilation = /** @type {Compilation} */ (this.compilation);
28
28
  const { runtimeTemplate } = compilation;
29
+ const cst = runtimeTemplate.renderConst();
29
30
  return `${
30
31
  RuntimeGlobals.startupEntrypoint
31
32
  } = ${runtimeTemplate.basicFunction("result, chunkIds, fn", [
32
33
  "// arguments: chunkIds, moduleId are deprecated",
33
- "var moduleId = chunkIds;",
34
+ `${cst} moduleId = chunkIds;`,
34
35
  `if(!fn) chunkIds = result, fn = ${runtimeTemplate.returningFunction(
35
36
  `${RuntimeGlobals.require}(${RuntimeGlobals.entryModuleId} = moduleId)`
36
37
  )};`,
@@ -39,13 +40,13 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
39
40
  `return Promise.all(chunkIds.map(${RuntimeGlobals.ensureChunk}, ${
40
41
  RuntimeGlobals.require
41
42
  })).then(${runtimeTemplate.basicFunction("", [
42
- "var r = fn();",
43
+ `${cst} r = fn();`,
43
44
  "return r === undefined ? result : r;"
44
45
  ])})`
45
46
  ]
46
47
  : [
47
48
  `chunkIds.map(${RuntimeGlobals.ensureChunk}, ${RuntimeGlobals.require})`,
48
- "var r = fn();",
49
+ `${cst} r = fn();`,
49
50
  "return r === undefined ? result : r;"
50
51
  ])
51
52
  ])}`;
@@ -0,0 +1,33 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ const RuntimeGlobals = require("../RuntimeGlobals");
8
+ const HelperRuntimeModule = require("./HelperRuntimeModule");
9
+
10
+ /** @typedef {import("../Compilation")} Compilation */
11
+
12
+ class WorkerRuntimeModule extends HelperRuntimeModule {
13
+ constructor() {
14
+ super("worker");
15
+ }
16
+
17
+ /**
18
+ * Generates runtime code for this runtime module.
19
+ * @returns {string | null} runtime code
20
+ */
21
+ generate() {
22
+ const compilation = /** @type {Compilation} */ (this.compilation);
23
+ const { runtimeTemplate } = compilation;
24
+ // prefer a global `Worker` when present (web, Bun, polyfills), else `worker_threads.Worker`
25
+ const nodeWorker = runtimeTemplate.getBuiltinModule(
26
+ runtimeTemplate.renderNodePrefixForCoreModule("worker_threads"),
27
+ ".Worker"
28
+ );
29
+ return `${RuntimeGlobals.worker} = typeof Worker !== "undefined" ? Worker : ${nodeWorker};`;
30
+ }
31
+ }
32
+
33
+ module.exports = WorkerRuntimeModule;
@@ -29,6 +29,7 @@ const memoize = require("../util/memoize");
29
29
  /** @typedef {import("../Module").BuildInfo} BuildInfo */
30
30
  /** @typedef {import("../NormalModuleFactory").ResourceDataWithData} ResourceDataWithData */
31
31
  /** @typedef {import("../util/fs").IntermediateFileSystem} IntermediateFileSystem */
32
+ /** @typedef {import("../NormalModule").NormalModuleBuildInfo} NormalModuleBuildInfo */
32
33
 
33
34
  const getHttp = memoize(() => require("http"));
34
35
  const getHttps = memoize(() => require("https"));
@@ -1357,7 +1358,7 @@ Run build with un-frozen lockfile to automatically fix lockfile.`
1357
1358
  if (err) return callback(err);
1358
1359
  const result = /** @type {Info} */ (_result);
1359
1360
  if (module) {
1360
- /** @type {BuildInfo} */
1361
+ /** @type {NormalModuleBuildInfo} */
1361
1362
  (module.buildInfo).resourceIntegrity = result.entry.integrity;
1362
1363
  }
1363
1364
  callback(null, result.content);
@@ -1370,7 +1371,7 @@ Run build with un-frozen lockfile to automatically fix lockfile.`
1370
1371
  const result = /** @type {Info} */ (_result);
1371
1372
  if (
1372
1373
  result.entry.integrity !==
1373
- /** @type {BuildInfo} */
1374
+ /** @type {NormalModuleBuildInfo} */
1374
1375
  (module.buildInfo).resourceIntegrity
1375
1376
  ) {
1376
1377
  return callback(null, true);
@@ -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, errors: EXPECTED_ANY[] }} AggregateError */
11
12
 
@@ -19,7 +20,7 @@ class AggregateErrorSerializer {
19
20
  context.write(obj.errors);
20
21
  context.write(obj.message);
21
22
  context.write(obj.stack);
22
- context.write(obj.cause);
23
+ context.write(/** @type {ComplexSerializableType} */ (obj.cause));
23
24
  }
24
25
 
25
26
  /**
@@ -28,12 +29,12 @@ class AggregateErrorSerializer {
28
29
  * @returns {AggregateError} error
29
30
  */
30
31
  deserialize(context) {
31
- const errors = context.read();
32
+ const errors = /** @type {EXPECTED_ANY[]} */ (context.read());
32
33
  // eslint-disable-next-line n/no-unsupported-features/es-builtins, n/no-unsupported-features/es-syntax, unicorn/error-message
33
34
  const err = new AggregateError(errors);
34
35
 
35
- err.message = context.read();
36
- err.stack = context.read();
36
+ err.message = /** @type {string} */ (context.read());
37
+ err.stack = /** @type {string | undefined} */ (context.read());
37
38
  err.cause = context.read();
38
39
 
39
40
  return err;
@@ -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 ArraySerializer {
11
8
  /**
12
9
  * Serializes this instance into the provided serializer context.
13
10
  * @template T
14
11
  * @param {T[]} array array
15
- * @param {ObjectSerializerContext} context context
12
+ * @param {import("./ObjectMiddleware").ObjectSerializerContext<(number | T)[]>} context context
16
13
  */
17
14
  serialize(array, context) {
18
15
  context.write(array.length);
@@ -22,16 +19,15 @@ class ArraySerializer {
22
19
  /**
23
20
  * Restores this instance from the provided deserializer context.
24
21
  * @template T
25
- * @param {ObjectDeserializerContext} context context
22
+ * @param {import("./ObjectMiddleware").ObjectDeserializerContext<(number | T)[]>} context context
26
23
  * @returns {T[]} array
27
24
  */
28
25
  deserialize(context) {
29
- /** @type {number} */
30
- const length = context.read();
26
+ const length = /** @type {number} */ (context.read());
31
27
  /** @type {T[]} */
32
28
  const array = [];
33
29
  for (let i = 0; i < length; i++) {
34
- array.push(context.read());
30
+ array.push(/** @type {T} */ (context.read()));
35
31
  }
36
32
  return array;
37
33
  }