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("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
8
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
7
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Error, EXPECTED_ANY, string]>} ObjectDeserializerContext */
8
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Error, EXPECTED_ANY, string]>} ObjectSerializerContext */
9
9
 
10
10
  const makeSerializable = require("../util/makeSerializable");
11
11
 
@@ -92,10 +92,8 @@ class JSONParseError extends SyntaxError {
92
92
  * Serializes this instance into the provided serializer context.
93
93
  * @param {ObjectSerializerContext} context context
94
94
  */
95
- serialize({ write }) {
96
- write(this.systemError);
97
- write(this.raw);
98
- write(this.txt);
95
+ serialize(context) {
96
+ context.write(this.systemError).write(this.raw).write(this.txt);
99
97
  }
100
98
 
101
99
  /**
@@ -104,8 +102,11 @@ class JSONParseError extends SyntaxError {
104
102
  * @returns {JSONParseError} DelegatedModule
105
103
  */
106
104
  static deserialize(context) {
107
- const { read } = context;
108
- return new JSONParseError(read(), read(), read());
105
+ const systemError = context.read();
106
+ const c1 = context.rest;
107
+ const raw = c1.read();
108
+ const c2 = c1.rest;
109
+ return new JSONParseError(systemError, raw, c2.read());
109
110
  }
110
111
  }
111
112
 
@@ -9,11 +9,11 @@ const { cutOffLoaderExecution } = require("../ErrorHelpers");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const WebpackError = require("./WebpackError");
11
11
 
12
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
13
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
14
-
15
12
  /** @typedef {Error & { hideStack?: boolean }} ErrorWithHideStack */
16
13
 
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string | ErrorWithHideStack]>} ObjectDeserializerContext */
15
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string | ErrorWithHideStack]>} ObjectSerializerContext */
16
+
17
17
  class ModuleBuildError extends WebpackError {
18
18
  /**
19
19
  * Creates an instance of ModuleBuildError.
@@ -32,7 +32,14 @@ class ModuleBuildError extends WebpackError {
32
32
  const stack = cutOffLoaderExecution(err.stack);
33
33
 
34
34
  if (!err.hideStack) {
35
- message += stack;
35
+ // V8 prefixes `.stack` with "Name: message"; JSC and others emit
36
+ // frames only, which would drop the message. Lead with it then.
37
+ message +=
38
+ typeof err.message === "string" &&
39
+ err.message &&
40
+ !stack.includes(err.message)
41
+ ? `${err.name ? `${err.name}: ` : ""}${err.message}`
42
+ : stack;
36
43
  } else {
37
44
  details = stack;
38
45
 
@@ -52,7 +59,9 @@ class ModuleBuildError extends WebpackError {
52
59
 
53
60
  /** @type {string} */
54
61
  this.name = "ModuleBuildError";
62
+ /** @type {string | undefined} */
55
63
  this.details = details;
64
+ /** @type {string | ErrorWithHideStack} */
56
65
  this.error = err;
57
66
  }
58
67
 
@@ -61,10 +70,7 @@ class ModuleBuildError extends WebpackError {
61
70
  * @param {ObjectSerializerContext} context context
62
71
  */
63
72
  serialize(context) {
64
- const { write } = context;
65
-
66
- write(this.error);
67
-
73
+ context.write(this.error);
68
74
  super.serialize(context);
69
75
  }
70
76
 
@@ -73,11 +79,8 @@ class ModuleBuildError extends WebpackError {
73
79
  * @param {ObjectDeserializerContext} context context
74
80
  */
75
81
  deserialize(context) {
76
- const { read } = context;
77
-
78
- this.error = read();
79
-
80
- super.deserialize(context);
82
+ this.error = context.read();
83
+ super.deserialize(context.rest);
81
84
  }
82
85
  }
83
86
 
@@ -23,16 +23,23 @@ class ModuleDependencyError extends WebpackError {
23
23
 
24
24
  /** @type {string} */
25
25
  this.name = "ModuleDependencyError";
26
+ /** @type {string | undefined} */
26
27
  this.details =
27
28
  err && !err.hideStack
28
29
  ? /** @type {string} */ (err.stack).split("\n").slice(1).join("\n")
29
30
  : undefined;
31
+ /** @type {Module} */
30
32
  this.module = module;
33
+ /** @type {DependencyLocation} */
31
34
  this.loc = loc;
32
- /** error is not (de)serialized, so it might be undefined after deserialization */
35
+ /**
36
+ * error is not (de)serialized, so it might be undefined after deserialization
37
+ * @type {ErrorWithHideStack}
38
+ */
33
39
  this.error = err;
34
40
 
35
41
  if (err && err.hideStack && err.stack) {
42
+ /** @type {string | undefined} */
36
43
  this.stack = /** @type {string} */ `${err.stack
37
44
  .split("\n")
38
45
  .slice(1)
@@ -24,16 +24,23 @@ class ModuleDependencyWarning extends WebpackError {
24
24
 
25
25
  /** @type {string} */
26
26
  this.name = "ModuleDependencyWarning";
27
+ /** @type {string | undefined} */
27
28
  this.details =
28
29
  err && !err.hideStack
29
30
  ? /** @type {string} */ (err.stack).split("\n").slice(1).join("\n")
30
31
  : undefined;
32
+ /** @type {Module} */
31
33
  this.module = module;
34
+ /** @type {DependencyLocation} */
32
35
  this.loc = loc;
33
- /** error is not (de)serialized, so it might be undefined after deserialization */
36
+ /**
37
+ * error is not (de)serialized, so it might be undefined after deserialization
38
+ * @type {ErrorWithHideStack}
39
+ */
34
40
  this.error = err;
35
41
 
36
42
  if (err && err.hideStack && err.stack) {
43
+ /** @type {string | undefined} */
37
44
  this.stack = /** @type {string} */ `${err.stack
38
45
  .split("\n")
39
46
  .slice(1)
@@ -9,8 +9,8 @@ const { cleanUp } = require("../ErrorHelpers");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const WebpackError = require("./WebpackError");
11
11
 
12
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
13
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Error]>} ObjectDeserializerContext */
13
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Error]>} ObjectSerializerContext */
14
14
 
15
15
  class ModuleError extends WebpackError {
16
16
  /**
@@ -46,10 +46,7 @@ class ModuleError extends WebpackError {
46
46
  * @param {ObjectSerializerContext} context context
47
47
  */
48
48
  serialize(context) {
49
- const { write } = context;
50
-
51
- write(this.error);
52
-
49
+ context.write(this.error);
53
50
  super.serialize(context);
54
51
  }
55
52
 
@@ -58,11 +55,8 @@ class ModuleError extends WebpackError {
58
55
  * @param {ObjectDeserializerContext} context context
59
56
  */
60
57
  deserialize(context) {
61
- const { read } = context;
62
-
63
- this.error = read();
64
-
65
- super.deserialize(context);
58
+ this.error = context.read();
59
+ super.deserialize(context.rest);
66
60
  }
67
61
  }
68
62
 
@@ -20,9 +20,13 @@ class ModuleHashingError extends WebpackError {
20
20
 
21
21
  /** @type {string} */
22
22
  this.name = "ModuleHashingError";
23
+ /** @type {Error} */
23
24
  this.error = error;
25
+ /** @type {string} */
24
26
  this.message = error.message;
27
+ /** @type {string | undefined} */
25
28
  this.details = error.stack;
29
+ /** @type {Module} */
26
30
  this.module = module;
27
31
  }
28
32
  }
@@ -81,9 +81,12 @@ class ModuleNotFoundError extends WebpackError {
81
81
 
82
82
  /** @type {string} */
83
83
  this.name = "ModuleNotFoundError";
84
+ /** @type {string | undefined} */
84
85
  this.details = err.details;
86
+ /** @type {Module | null} */
85
87
  this.module = module;
86
88
  this.error = err;
89
+ /** @type {DependencyLocation} */
87
90
  this.loc = loc;
88
91
  }
89
92
  }
@@ -10,8 +10,8 @@ const WebpackError = require("./WebpackError");
10
10
 
11
11
  /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
12
12
  /** @typedef {import("../Dependency").SourcePosition} SourcePosition */
13
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
14
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
13
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Error]>} ObjectDeserializerContext */
14
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Error]>} ObjectSerializerContext */
15
15
 
16
16
  const WASM_HEADER = Buffer.from([0x00, 0x61, 0x73, 0x6d]);
17
17
 
@@ -105,10 +105,7 @@ class ModuleParseError extends WebpackError {
105
105
  * @param {ObjectSerializerContext} context context
106
106
  */
107
107
  serialize(context) {
108
- const { write } = context;
109
-
110
- write(this.error);
111
-
108
+ context.write(this.error);
112
109
  super.serialize(context);
113
110
  }
114
111
 
@@ -117,11 +114,8 @@ class ModuleParseError extends WebpackError {
117
114
  * @param {ObjectDeserializerContext} context context
118
115
  */
119
116
  deserialize(context) {
120
- const { read } = context;
121
-
122
- this.error = read();
123
-
124
- super.deserialize(context);
117
+ this.error = context.read();
118
+ super.deserialize(context.rest);
125
119
  }
126
120
  }
127
121
 
@@ -38,7 +38,9 @@ class ModuleRestoreError extends WebpackError {
38
38
  this.name = "ModuleRestoreError";
39
39
  /** @type {string | undefined} */
40
40
  this.details = details;
41
+ /** @type {Module} */
41
42
  this.module = module;
43
+ /** @type {string | Error} */
42
44
  this.error = err;
43
45
  }
44
46
  }
@@ -36,8 +36,11 @@ class ModuleStoreError extends WebpackError {
36
36
 
37
37
  /** @type {string} */
38
38
  this.name = "ModuleStoreError";
39
+ /** @type {string | undefined} */
39
40
  this.details = /** @type {string | undefined} */ (details);
41
+ /** @type {Module} */
40
42
  this.module = module;
43
+ /** @type {string | Error} */
41
44
  this.error = err;
42
45
  }
43
46
  }
@@ -9,8 +9,8 @@ const { cleanUp } = require("../ErrorHelpers");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const WebpackError = require("./WebpackError");
11
11
 
12
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
13
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
12
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Error]>} ObjectDeserializerContext */
13
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Error]>} ObjectSerializerContext */
14
14
 
15
15
  class ModuleWarning extends WebpackError {
16
16
  /**
@@ -33,7 +33,9 @@ class ModuleWarning extends WebpackError {
33
33
 
34
34
  /** @type {string} */
35
35
  this.name = "ModuleWarning";
36
+ /** @type {Error} */
36
37
  this.warning = warning;
38
+ /** @type {string | undefined} */
37
39
  this.details =
38
40
  warning && typeof warning === "object" && warning.stack
39
41
  ? cleanUp(warning.stack, this.message)
@@ -45,10 +47,7 @@ class ModuleWarning extends WebpackError {
45
47
  * @param {ObjectSerializerContext} context context
46
48
  */
47
49
  serialize(context) {
48
- const { write } = context;
49
-
50
- write(this.warning);
51
-
50
+ context.write(this.warning);
52
51
  super.serialize(context);
53
52
  }
54
53
 
@@ -57,11 +56,8 @@ class ModuleWarning extends WebpackError {
57
56
  * @param {ObjectDeserializerContext} context context
58
57
  */
59
58
  deserialize(context) {
60
- const { read } = context;
61
-
62
- this.warning = read();
63
-
64
- super.deserialize(context);
59
+ this.warning = context.read();
60
+ super.deserialize(context.rest);
65
61
  }
66
62
  }
67
63
 
@@ -27,6 +27,7 @@ ${description}`
27
27
 
28
28
  /** @type {string} */
29
29
  this.name = "NodeStuffInWebError";
30
+ /** @type {DependencyLocation} */
30
31
  this.loc = loc;
31
32
  }
32
33
  }
@@ -15,7 +15,9 @@ class NonErrorEmittedError extends WebpackError {
15
15
  constructor(error) {
16
16
  super();
17
17
 
18
+ /** @type {string} */
18
19
  this.name = "NonErrorEmittedError";
20
+ /** @type {string} */
19
21
  this.message = `(Emitted value instead of an instance of Error) ${error}`;
20
22
  }
21
23
  }
@@ -25,6 +25,7 @@ class UnhandledSchemeError extends WebpackError {
25
25
  '\nWebpack supports "data:" and "file:" URIs by default.' +
26
26
  `\nYou may need an additional plugin to handle "${scheme}:" URIs.`
27
27
  );
28
+ /** @type {string} */
28
29
  this.file = resource;
29
30
  /** @type {string} */
30
31
  this.name = "UnhandledSchemeError";
@@ -115,7 +115,6 @@ class ModuleChunkLoadingPlugin {
115
115
  .tap(PLUGIN_NAME, (chunk, set) => {
116
116
  if (!isEnabledForChunk(chunk)) return;
117
117
  set.add(RuntimeGlobals.publicPath);
118
- set.add(RuntimeGlobals.loadScript);
119
118
  set.add(RuntimeGlobals.getChunkUpdateScriptFilename);
120
119
  set.add(RuntimeGlobals.moduleCache);
121
120
  set.add(RuntimeGlobals.hmrModuleData);
@@ -150,6 +150,13 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
150
150
  ? `${RuntimeGlobals.hmrRuntimeStatePrefix}_module`
151
151
  : undefined;
152
152
 
153
+ const cst = runtimeTemplate.renderConst();
154
+ const lt = runtimeTemplate.renderLet();
155
+ const installedChunksObject = `{\n${Template.indent(
156
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
157
+ ",\n"
158
+ )
159
+ )}\n}`;
153
160
  return Template.asString([
154
161
  withBaseURI
155
162
  ? this._generateBaseUri(chunk, rootOutputDir)
@@ -158,18 +165,14 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
158
165
  "// object to store loaded and loading chunks",
159
166
  "// undefined = chunk not loaded, null = chunk preloaded/prefetched",
160
167
  "// [resolve, Promise] = chunk loading, 0 = chunk loaded",
161
- `var installedChunks = ${
162
- stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
163
- }{`,
164
- Template.indent(
165
- Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
166
- ",\n"
167
- )
168
- ),
169
- "};",
168
+ `${cst} installedChunks = ${
169
+ stateExpression
170
+ ? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
171
+ : installedChunksObject
172
+ };`,
170
173
  "",
171
174
  withLoading || withExternalInstallChunk
172
- ? `var installChunk = ${runtimeTemplate.basicFunction("data", [
175
+ ? `${cst} installChunk = ${runtimeTemplate.basicFunction("data", [
173
176
  runtimeTemplate.destructureObject(
174
177
  [
175
178
  RuntimeGlobals.esmIds,
@@ -211,7 +214,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
211
214
  hasJsMatcher !== false
212
215
  ? Template.indent([
213
216
  "// import() chunk loading for javascript",
214
- `var installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
217
+ `${lt} installedChunkData = ${RuntimeGlobals.hasOwnProperty}(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;`,
215
218
  'if(installedChunkData !== 0) { // 0 means "already installed".',
216
219
  Template.indent([
217
220
  "",
@@ -227,7 +230,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
227
230
  : `if(${hasJsMatcher("chunkId")}) {`,
228
231
  Template.indent([
229
232
  "// setup Promise in chunk cache",
230
- `var promise = ${importFunctionName}(${
233
+ `${lt} promise = ${importFunctionName}(${
231
234
  compilation.outputOptions.publicPath === "auto"
232
235
  ? JSON.stringify(rootOutputDir)
233
236
  : RuntimeGlobals.publicPath
@@ -240,7 +243,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
240
243
  "throw e;"
241
244
  ]
242
245
  )});`,
243
- `var promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
246
+ `promise = Promise.race([promise, new Promise(${runtimeTemplate.expressionFunction(
244
247
  "installedChunkData = installedChunks[chunkId] = [resolve]",
245
248
  "resolve"
246
249
  )})])`,
@@ -263,6 +266,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
263
266
  ? `${
264
267
  RuntimeGlobals.prefetchChunkHandlers
265
268
  }.j = ${runtimeTemplate.basicFunction("chunkId", [
269
+ // prefetch is a browser-only resource hint; no-op without a DOM (e.g. node side of a universal build)
266
270
  isNeutralPlatform
267
271
  ? "if (typeof document === 'undefined') return;"
268
272
  : "",
@@ -275,7 +279,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
275
279
  "installedChunks[chunkId] = null;",
276
280
  linkPrefetch.call(
277
281
  Template.asString([
278
- "var link = document.createElement('link');",
282
+ `${cst} link = document.createElement('link');`,
279
283
  charset ? "link.charset = 'utf-8';" : "",
280
284
  crossOriginLoading
281
285
  ? `link.crossOrigin = ${JSON.stringify(
@@ -303,6 +307,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
303
307
  ? `${
304
308
  RuntimeGlobals.preloadChunkHandlers
305
309
  }.j = ${runtimeTemplate.basicFunction("chunkId", [
310
+ // preload is a browser-only resource hint; no-op without a DOM (e.g. node side of a universal build)
306
311
  isNeutralPlatform
307
312
  ? "if (typeof document === 'undefined') return;"
308
313
  : "",
@@ -315,7 +320,7 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
315
320
  "installedChunks[chunkId] = null;",
316
321
  linkPreload.call(
317
322
  Template.asString([
318
- "var link = document.createElement('link');",
323
+ `${cst} link = document.createElement('link');`,
319
324
  charset ? "link.charset = 'utf-8';" : "",
320
325
  `if (${RuntimeGlobals.scriptNonce}) {`,
321
326
  Template.indent(
@@ -370,30 +375,30 @@ class ModuleChunkLoadingRuntimeModule extends RuntimeModule {
370
375
  "resolve, reject",
371
376
  [
372
377
  "// start update chunk loading",
373
- `var url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
374
- `var onResolve = ${runtimeTemplate.basicFunction("obj", [
375
- `var updatedModules = obj.${RuntimeGlobals.esmModules};`,
376
- `var updatedRuntime = obj.${RuntimeGlobals.esmRuntime};`,
378
+ `${cst} url = ${RuntimeGlobals.publicPath} + ${RuntimeGlobals.getChunkUpdateScriptFilename}(chunkId);`,
379
+ `${cst} onResolve = ${runtimeTemplate.basicFunction("obj", [
380
+ `${cst} updatedModules = obj.${RuntimeGlobals.esmModules};`,
381
+ `${cst} updatedRuntime = obj.${RuntimeGlobals.esmRuntime};`,
377
382
  "if(updatedRuntime) currentUpdateRuntime.push(updatedRuntime);",
378
383
  "for(var moduleId in updatedModules) {",
379
384
  Template.indent([
380
385
  `if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
381
386
  Template.indent([
382
387
  "currentUpdate[moduleId] = updatedModules[moduleId];",
383
- "if(updatedModulesList) updatedModulesList.push(moduleId);"
388
+ `${runtimeTemplate.optionalChaining("updatedModulesList", "push(moduleId)")};`
384
389
  ]),
385
390
  "}"
386
391
  ]),
387
392
  "}",
388
393
  "resolve(obj);"
389
394
  ])};`,
390
- `var onReject = ${runtimeTemplate.basicFunction("error", [
391
- "var errorMsg = error.message || 'unknown reason';",
395
+ `${cst} onReject = ${runtimeTemplate.basicFunction("error", [
396
+ `${cst} errorMsg = error.message || 'unknown reason';`,
392
397
  "error.message = 'Loading hot update chunk ' + chunkId + ' failed.\\n(' + errorMsg + ')';",
393
398
  "error.name = 'ChunkLoadError';",
394
399
  "reject(error);"
395
400
  ])}`,
396
- `var loadScript = ${runtimeTemplate.basicFunction(
401
+ `${cst} loadScript = ${runtimeTemplate.basicFunction(
397
402
  "url, onResolve, onReject",
398
403
  [
399
404
  `return ${importFunctionName}(/* webpackIgnore: true */ url).then(onResolve).catch(onReject)`