webpack 5.107.2 → 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 (357) 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 +25 -11
  10. package/lib/ConcatenationScope.js +10 -3
  11. package/lib/ContextExclusionPlugin.js +1 -0
  12. package/lib/ContextModule.js +92 -47
  13. package/lib/ContextReplacementPlugin.js +4 -0
  14. package/lib/DefinePlugin.js +89 -15
  15. package/lib/Dependency.js +111 -7
  16. package/lib/EntryOptionPlugin.js +39 -2
  17. package/lib/EntryPlugin.js +2 -0
  18. package/lib/ExportsInfo.js +314 -73
  19. package/lib/ExternalModule.js +82 -34
  20. package/lib/ExternalModuleFactoryPlugin.js +1 -0
  21. package/lib/ExternalsPlugin.js +1 -0
  22. package/lib/FileSystemInfo.js +173 -23
  23. package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
  24. package/lib/FlagDependencyExportsPlugin.js +23 -0
  25. package/lib/FlagDependencyUsagePlugin.js +87 -5
  26. package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
  27. package/lib/Generator.js +8 -0
  28. package/lib/HotModuleReplacementPlugin.js +65 -28
  29. package/lib/IgnorePlugin.js +1 -0
  30. package/lib/InitFragment.js +5 -0
  31. package/lib/JavascriptMetaInfoPlugin.js +7 -5
  32. package/lib/LazyBarrel.js +361 -0
  33. package/lib/LoaderTargetPlugin.js +1 -0
  34. package/lib/Module.js +21 -42
  35. package/lib/ModuleGraph.js +3 -2
  36. package/lib/ModuleProfile.js +27 -1
  37. package/lib/ModuleTemplate.js +2 -0
  38. package/lib/MultiCompiler.js +2 -0
  39. package/lib/MultiStats.js +1 -0
  40. package/lib/MultiWatching.js +2 -0
  41. package/lib/NodeStuffPlugin.js +22 -17
  42. package/lib/NormalModule.js +142 -80
  43. package/lib/NormalModuleReplacementPlugin.js +2 -0
  44. package/lib/PrefetchPlugin.js +2 -0
  45. package/lib/ProgressPlugin.js +8 -0
  46. package/lib/ProvidePlugin.js +1 -0
  47. package/lib/RawModule.js +20 -16
  48. package/lib/RecordIdsPlugin.js +1 -0
  49. package/lib/RuntimeGlobals.js +5 -0
  50. package/lib/RuntimePlugin.js +58 -26
  51. package/lib/RuntimeTemplate.js +278 -21
  52. package/lib/SelfModuleFactory.js +1 -0
  53. package/lib/SourceMapDevToolPlugin.js +3 -5
  54. package/lib/Stats.js +1 -0
  55. package/lib/Template.js +8 -2
  56. package/lib/TemplatedPathPlugin.js +473 -131
  57. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
  58. package/lib/WarnDeprecatedOptionPlugin.js +4 -0
  59. package/lib/WarnNoModeSetPlugin.js +1 -0
  60. package/lib/WatchIgnorePlugin.js +1 -0
  61. package/lib/Watching.js +9 -0
  62. package/lib/WebpackOptionsApply.js +50 -5
  63. package/lib/asset/AssetBytesGenerator.js +11 -3
  64. package/lib/asset/AssetGenerator.js +47 -22
  65. package/lib/asset/AssetModule.js +47 -0
  66. package/lib/asset/AssetModulesPlugin.js +14 -14
  67. package/lib/asset/AssetParser.js +2 -2
  68. package/lib/asset/AssetSourceGenerator.js +8 -0
  69. package/lib/asset/RawDataUrlModule.js +12 -13
  70. package/lib/buildChunkGraph.js +64 -7
  71. package/lib/bun/BunTargetPlugin.js +48 -0
  72. package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
  73. package/lib/cache/AddManagedPathsPlugin.js +3 -0
  74. package/lib/cache/IdleFileCachePlugin.js +4 -0
  75. package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
  76. package/lib/cache/PackFileCacheStrategy.js +1 -0
  77. package/lib/cache/ResolverCachePlugin.js +2 -0
  78. package/lib/cache/mergeEtags.js +2 -0
  79. package/lib/cli.js +109 -19
  80. package/lib/config/browserslistTargetHandler.js +99 -0
  81. package/lib/config/defaults.js +147 -7
  82. package/lib/config/defineConfig.js +31 -0
  83. package/lib/config/normalization.js +5 -0
  84. package/lib/config/target.js +181 -2
  85. package/lib/container/ContainerEntryModule.js +15 -14
  86. package/lib/container/ContainerExposedDependency.js +2 -2
  87. package/lib/container/ContainerReferencePlugin.js +1 -1
  88. package/lib/container/FallbackDependency.js +5 -7
  89. package/lib/container/FallbackModule.js +10 -9
  90. package/lib/container/RemoteModule.js +20 -10
  91. package/lib/container/RemoteRuntimeModule.js +14 -12
  92. package/lib/css/CssGenerator.js +353 -327
  93. package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
  94. package/lib/css/CssLoadingRuntimeModule.js +118 -47
  95. package/lib/css/CssModule.js +52 -23
  96. package/lib/css/CssModulesPlugin.js +107 -124
  97. package/lib/css/CssParser.js +2759 -2205
  98. package/lib/css/syntax.js +2859 -0
  99. package/lib/debug/ProfilingPlugin.js +2 -0
  100. package/lib/deno/DenoTargetPlugin.js +47 -0
  101. package/lib/dependencies/AMDDefineDependency.js +22 -17
  102. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
  103. package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
  104. package/lib/dependencies/AMDRequireContextDependency.js +7 -11
  105. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
  106. package/lib/dependencies/AMDRequireDependency.js +24 -20
  107. package/lib/dependencies/CachedConstDependency.js +3 -0
  108. package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
  109. package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
  110. package/lib/dependencies/CommonJsExportsDependency.js +21 -16
  111. package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
  112. package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
  113. package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
  114. package/lib/dependencies/CommonJsPlugin.js +1 -1
  115. package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
  116. package/lib/dependencies/CommonJsRequireDependency.js +42 -11
  117. package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
  118. package/lib/dependencies/ConstDependency.js +16 -11
  119. package/lib/dependencies/ContextDependency.js +4 -0
  120. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
  121. package/lib/dependencies/ContextElementDependency.js +23 -14
  122. package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
  123. package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
  124. package/lib/dependencies/CriticalDependencyWarning.js +1 -0
  125. package/lib/dependencies/CssIcssExportDependency.js +512 -574
  126. package/lib/dependencies/CssIcssImportDependency.js +9 -9
  127. package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
  128. package/lib/dependencies/CssImportDependency.js +25 -1
  129. package/lib/dependencies/CssUrlDependency.js +23 -14
  130. package/lib/dependencies/DllEntryDependency.js +9 -13
  131. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  132. package/lib/dependencies/ExportsInfoDependency.js +12 -12
  133. package/lib/dependencies/ExternalModuleDependency.js +8 -5
  134. package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
  135. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
  136. package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
  137. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  138. package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
  139. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
  140. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
  141. package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
  142. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
  143. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
  144. package/lib/dependencies/HarmonyExportInitFragment.js +18 -15
  145. package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
  146. package/lib/dependencies/HarmonyExports.js +4 -1
  147. package/lib/dependencies/HarmonyImportDependency.js +24 -0
  148. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
  149. package/lib/dependencies/HarmonyImportGuard.js +254 -0
  150. package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
  151. package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
  152. package/lib/dependencies/HarmonyLinkingError.js +1 -0
  153. package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
  154. package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +261 -109
  155. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  156. package/lib/dependencies/HtmlInlineScriptDependency.js +17 -13
  157. package/lib/dependencies/HtmlInlineStyleDependency.js +45 -11
  158. package/lib/dependencies/ImportContextDependency.js +5 -9
  159. package/lib/dependencies/ImportDependency.js +44 -2
  160. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  161. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  162. package/lib/dependencies/ImportMetaPlugin.js +74 -30
  163. package/lib/dependencies/ImportParserPlugin.js +19 -0
  164. package/lib/dependencies/ImportWeakDependency.js +1 -0
  165. package/lib/dependencies/JsonExportsDependency.js +9 -9
  166. package/lib/dependencies/LoaderImportDependency.js +1 -0
  167. package/lib/dependencies/LocalModule.js +11 -12
  168. package/lib/dependencies/LocalModuleDependency.js +11 -13
  169. package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
  170. package/lib/dependencies/ModuleDependency.js +7 -0
  171. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  172. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  173. package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
  174. package/lib/dependencies/ProvidedDependency.js +31 -27
  175. package/lib/dependencies/PureExpressionDependency.js +7 -9
  176. package/lib/dependencies/RequireEnsureDependency.js +12 -13
  177. package/lib/dependencies/RequireHeaderDependency.js +3 -4
  178. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  179. package/lib/dependencies/RequireResolveContextDependency.js +7 -11
  180. package/lib/dependencies/RequireResolveDependency.js +1 -0
  181. package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
  182. package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
  183. package/lib/dependencies/StaticExportsDependency.js +10 -10
  184. package/lib/dependencies/SystemPlugin.js +2 -0
  185. package/lib/dependencies/URLContextDependency.js +5 -7
  186. package/lib/dependencies/URLDependency.js +14 -16
  187. package/lib/dependencies/UnsupportedDependency.js +8 -13
  188. package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
  189. package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
  190. package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
  191. package/lib/dependencies/WorkerDependency.js +19 -8
  192. package/lib/dependencies/WorkerPlugin.js +22 -6
  193. package/lib/dependencies/processExportInfo.js +13 -11
  194. package/lib/dll/DelegatedModule.js +29 -15
  195. package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
  196. package/lib/dll/DelegatedPlugin.js +1 -0
  197. package/lib/dll/DllEntryPlugin.js +3 -0
  198. package/lib/dll/DllModule.js +3 -2
  199. package/lib/dll/DllPlugin.js +16 -0
  200. package/lib/dll/DllReferencePlugin.js +3 -0
  201. package/lib/dll/LibManifestPlugin.js +1 -0
  202. package/lib/electron/ElectronTargetPlugin.js +22 -4
  203. package/lib/errors/ConcurrentCompilationError.js +1 -0
  204. package/lib/errors/HookWebpackError.js +11 -13
  205. package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
  206. package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
  207. package/lib/errors/JSONParseError.js +9 -8
  208. package/lib/errors/ModuleBuildError.js +16 -13
  209. package/lib/errors/ModuleDependencyError.js +8 -1
  210. package/lib/errors/ModuleDependencyWarning.js +8 -1
  211. package/lib/errors/ModuleError.js +5 -11
  212. package/lib/errors/ModuleHashingError.js +4 -0
  213. package/lib/errors/ModuleNotFoundError.js +3 -0
  214. package/lib/errors/ModuleParseError.js +5 -11
  215. package/lib/errors/ModuleRestoreError.js +2 -0
  216. package/lib/errors/ModuleStoreError.js +3 -0
  217. package/lib/errors/ModuleWarning.js +7 -11
  218. package/lib/errors/NodeStuffInWebError.js +1 -0
  219. package/lib/errors/NonErrorEmittedError.js +2 -0
  220. package/lib/errors/UnhandledSchemeError.js +1 -0
  221. package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
  222. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
  223. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  224. package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
  225. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  226. package/lib/hmr/LazyCompilationPlugin.js +30 -6
  227. package/lib/html/HtmlGenerator.js +217 -23
  228. package/lib/html/HtmlModule.js +40 -0
  229. package/lib/html/HtmlModulesPlugin.js +219 -55
  230. package/lib/html/HtmlParser.js +1108 -1099
  231. package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
  232. package/lib/ids/IdHelpers.js +4 -2
  233. package/lib/index.js +19 -0
  234. package/lib/javascript/BasicEvaluatedExpression.js +1 -0
  235. package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
  236. package/lib/javascript/JavascriptGenerator.js +6 -2
  237. package/lib/javascript/JavascriptModule.js +54 -0
  238. package/lib/javascript/JavascriptModulesPlugin.js +257 -102
  239. package/lib/javascript/JavascriptParser.js +285 -158
  240. package/lib/json/JsonModule.js +40 -0
  241. package/lib/json/JsonModulesPlugin.js +7 -0
  242. package/lib/json/JsonParser.js +4 -2
  243. package/lib/library/AssignLibraryPlugin.js +5 -3
  244. package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
  245. package/lib/library/FalseIIFEUmdWarning.js +1 -0
  246. package/lib/library/ModuleLibraryPlugin.js +24 -5
  247. package/lib/library/SystemLibraryPlugin.js +3 -3
  248. package/lib/node/NodeTargetPlugin.js +1 -0
  249. package/lib/node/NodeWatchFileSystem.js +1 -0
  250. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
  251. package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
  252. package/lib/optimize/ConcatenatedModule.js +395 -77
  253. package/lib/optimize/ConstExportsPlugin.js +211 -0
  254. package/lib/optimize/InlineExports.js +178 -0
  255. package/lib/optimize/InnerGraph.js +372 -275
  256. package/lib/optimize/InnerGraphPlugin.js +196 -99
  257. package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
  258. package/lib/optimize/RealContentHashPlugin.js +14 -1
  259. package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
  260. package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
  261. package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
  262. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
  263. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
  264. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
  265. package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
  266. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
  267. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
  268. package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
  269. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
  270. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
  271. package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
  272. package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
  273. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
  274. package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
  275. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  276. package/lib/schemes/HttpUriPlugin.js +3 -2
  277. package/lib/serialization/AggregateErrorSerializer.js +7 -6
  278. package/lib/serialization/ArraySerializer.js +4 -8
  279. package/lib/serialization/BinaryMiddleware.js +538 -468
  280. package/lib/serialization/DateObjectSerializer.js +2 -2
  281. package/lib/serialization/ErrorObjectSerializer.js +7 -6
  282. package/lib/serialization/MapObjectSerializer.js +5 -9
  283. package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
  284. package/lib/serialization/ObjectMiddleware.js +50 -13
  285. package/lib/serialization/PlainObjectSerializer.js +9 -8
  286. package/lib/serialization/RegExpObjectSerializer.js +2 -2
  287. package/lib/serialization/Serializer.js +1 -0
  288. package/lib/serialization/SetObjectSerializer.js +4 -8
  289. package/lib/sharing/ConsumeSharedModule.js +6 -7
  290. package/lib/sharing/ConsumeSharedPlugin.js +1 -0
  291. package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
  292. package/lib/sharing/ProvideSharedDependency.js +30 -15
  293. package/lib/sharing/ProvideSharedModule.js +30 -11
  294. package/lib/sharing/ProvideSharedPlugin.js +4 -2
  295. package/lib/sharing/SharePlugin.js +3 -0
  296. package/lib/sharing/ShareRuntimeModule.js +18 -16
  297. package/lib/sharing/resolveMatchedConfigs.js +2 -1
  298. package/lib/sharing/utils.js +1 -1
  299. package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
  300. package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
  301. package/lib/stats/StatsFactory.js +11 -9
  302. package/lib/stats/StatsPrinter.js +9 -2
  303. package/lib/url/URLParserPlugin.js +5 -2
  304. package/lib/util/AsyncQueue.js +10 -0
  305. package/lib/util/LazyBucketSortedSet.js +5 -0
  306. package/lib/util/LazySet.js +6 -4
  307. package/lib/util/LocConverter.js +11 -1
  308. package/lib/util/Semaphore.js +1 -0
  309. package/lib/util/SourceProcessor.js +106 -0
  310. package/lib/util/TupleSet.js +1 -0
  311. package/lib/util/WeakTupleMap.js +27 -1
  312. package/lib/util/chainedImports.js +3 -3
  313. package/lib/util/comparators.js +2 -2
  314. package/lib/util/concatenate.js +31 -7
  315. package/lib/util/createHash.js +0 -1
  316. package/lib/util/deterministicGrouping.js +19 -12
  317. package/lib/util/extractSourceMap.js +1 -1
  318. package/lib/util/findGraphRoots.js +2 -0
  319. package/lib/util/fs.js +10 -5
  320. package/lib/util/hash/DebugHash.js +1 -0
  321. package/lib/util/hash/hash-digest.js +24 -15
  322. package/lib/util/identifier.js +7 -0
  323. package/lib/util/internalSerializables.js +11 -2
  324. package/lib/util/magicComment.js +42 -0
  325. package/lib/util/makeSerializable.js +1 -0
  326. package/lib/util/nonNumericOnlyHash.js +30 -1
  327. package/lib/util/property.js +7 -1
  328. package/lib/util/publicPathPlaceholder.js +64 -0
  329. package/lib/util/registerExternalSerializer.js +4 -4
  330. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  331. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
  332. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
  333. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
  334. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
  335. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  336. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
  337. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
  338. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
  339. package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
  340. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
  341. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
  342. package/lib/wasm-sync/WebAssemblyParser.js +7 -3
  343. package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
  344. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
  345. package/package.json +35 -27
  346. package/schemas/WebpackOptions.check.js +1 -1
  347. package/schemas/WebpackOptions.json +212 -3
  348. package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
  349. package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
  350. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  351. package/schemas/plugins/HtmlParserOptions.json +3 -0
  352. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  353. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  354. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  355. package/types.d.ts +1456 -290
  356. package/lib/css/walkCssTokens.js +0 -2020
  357. package/lib/util/AppendOnlyStackedSet.js +0 -93
@@ -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)`
@@ -1,4 +1,3 @@
1
- // @ts-nocheck
2
1
  /*
3
2
  MIT License http://www.opensource.org/licenses/mit-license.php
4
3
  Author Tobias Koppers @sokra
@@ -6,33 +5,115 @@
6
5
 
7
6
  "use strict";
8
7
 
9
- var $interceptModuleExecution$ = undefined;
10
- var $moduleCache$ = undefined;
11
- var $hmrModuleData$ = undefined;
12
- /** @type {() => Promise} */
13
- var $hmrDownloadManifest$ = undefined;
14
- var $hmrDownloadUpdateHandlers$ = undefined;
15
- var $hmrInvalidateModuleHandlers$ = undefined;
16
- var __webpack_require__ = undefined;
8
+ /** @typedef {string | number} ModuleId */
9
+ /** @typedef {Record<string, unknown>} HotData */
10
+ /** @typedef {(data: HotData) => void} DisposeHandler */
11
+ /** @typedef {(outdatedDependencies: ModuleId[]) => void} AcceptCallback */
12
+ /** @typedef {(err: Error, context: { moduleId: ModuleId, dependencyId?: ModuleId, module?: HotModule }) => void} AcceptErrorHandler */
13
+ /** @typedef {(status: string) => (Promise<void> | void)} StatusHandler */
14
+ /** @typedef {Record<string, unknown>} ApplyOptions */
15
+ /** @typedef {(reportError: (err: Error) => void) => Promise<ModuleId[]>} ApplyFn */
16
+ /** @typedef {{ (id: ModuleId): unknown, e: (chunkId: ModuleId, fetchPriority?: string) => Promise<unknown>, [name: string]: unknown }} WebpackRequire */
17
+
18
+ /**
19
+ * @typedef {object} ApplyResult
20
+ * @property {Error=} error fatal error that aborts the update
21
+ * @property {(() => void)=} dispose dispose phase of the update
22
+ * @property {ApplyFn=} apply apply phase of the update
23
+ */
24
+
25
+ /** @typedef {(options: ApplyOptions) => ApplyResult} ApplyHandler */
26
+ /** @typedef {(moduleId: ModuleId, applyHandlers: ApplyHandler[]) => void} InvalidateModuleHandler */
27
+ /** @typedef {(chunkIds: ModuleId[], removedChunks: ModuleId[], removedModules: ModuleId[], promises: Promise<unknown>[], applyHandlers: ApplyHandler[], updatedModulesList: ModuleId[], css: ModuleId[] | undefined, forceLoadChunks: ModuleId[] | undefined) => void} DownloadUpdateHandler */
28
+
29
+ /**
30
+ * @typedef {object} HMRManifest
31
+ * @property {ModuleId[]} c updated chunk ids
32
+ * @property {ModuleId[]} r removed chunk ids
33
+ * @property {ModuleId[]} m removed module ids
34
+ * @property {ModuleId[]=} css updated css chunk ids
35
+ * @property {ModuleId[]=} f chunk ids to force-load
36
+ */
37
+
38
+ /**
39
+ * @typedef {object} HotModule
40
+ * @property {ModuleId} id module id
41
+ * @property {Hot} hot hot API of the module
42
+ * @property {ModuleId[]} parents ids of modules requiring this module
43
+ * @property {ModuleId[]} children ids of modules required by this module
44
+ */
45
+
46
+ /**
47
+ * @typedef {object} Hot
48
+ * @property {Record<ModuleId, AcceptCallback>} _acceptedDependencies accept callbacks by dependency id
49
+ * @property {Record<ModuleId, AcceptErrorHandler | undefined>} _acceptedErrorHandlers error handlers by dependency id
50
+ * @property {Record<ModuleId, boolean>} _declinedDependencies declined dependency ids
51
+ * @property {boolean | EXPECTED_FUNCTION} _selfAccepted true or the self-accept error handler
52
+ * @property {boolean} _selfDeclined module declined itself
53
+ * @property {boolean} _selfInvalidated module invalidated itself
54
+ * @property {DisposeHandler[]} _disposeHandlers registered dispose handlers
55
+ * @property {boolean} _main module is the entry of the update
56
+ * @property {() => void} _requireSelf re-require the module on apply
57
+ * @property {boolean} active module is not disposed
58
+ * @property {(dep?: ModuleId | ModuleId[] | AcceptCallback, callback?: AcceptCallback, errorHandler?: AcceptErrorHandler) => void} accept accept updates
59
+ * @property {(dep?: ModuleId | ModuleId[]) => void} decline decline updates
60
+ * @property {(callback: DisposeHandler) => void} dispose add a dispose handler
61
+ * @property {(callback: DisposeHandler) => void} addDisposeHandler add a dispose handler
62
+ * @property {(callback: DisposeHandler) => void} removeDisposeHandler remove a dispose handler
63
+ * @property {() => void} invalidate invalidate the module
64
+ * @property {(applyOnUpdate?: boolean | ApplyOptions) => Promise<ModuleId[] | null>} check check for an update
65
+ * @property {(options?: ApplyOptions) => Promise<ModuleId[]>} apply apply a checked update
66
+ * @property {(l?: StatusHandler) => string | void} status get status or add a status handler
67
+ * @property {(l: StatusHandler) => void} addStatusHandler add a status handler
68
+ * @property {(l: StatusHandler) => void} removeStatusHandler remove a status handler
69
+ * @property {HotData} data data left from the previous dispose
70
+ */
71
+
72
+ /** @typedef {{ module: HotModule, require: WebpackRequire, id: ModuleId }} InterceptOptions */
73
+
74
+ // Globals injected by code generation; declared here only to type the template.
75
+ /* eslint-disable no-unassigned-vars */
76
+ /** @type {((options: InterceptOptions) => void)[]} */
77
+ var $interceptModuleExecution$;
78
+ /** @type {Record<ModuleId, HotModule>} */
79
+ var $moduleCache$;
80
+ /** @type {Record<ModuleId, HotData>} */
81
+ var $hmrModuleData$;
82
+ /** @type {() => Promise<HMRManifest | void>} */
83
+ var $hmrDownloadManifest$;
84
+ /** @type {Record<string, DownloadUpdateHandler>} */
85
+ var $hmrDownloadUpdateHandlers$;
86
+ /** @type {Record<string, InvalidateModuleHandler>} */
87
+ var $hmrInvalidateModuleHandlers$;
88
+ /** @type {(id: ModuleId) => unknown} */
89
+ var __webpack_require__;
90
+ /* eslint-enable no-unassigned-vars */
17
91
 
18
92
  module.exports = function () {
93
+ /** @type {Record<ModuleId, HotData>} */
19
94
  var currentModuleData = {};
20
95
  var installedModules = $moduleCache$;
21
96
 
22
97
  // module and require creation
98
+ /** @type {ModuleId | undefined} */
23
99
  var currentChildModule;
100
+ /** @type {ModuleId[]} */
24
101
  var currentParents = [];
25
102
 
26
103
  // status
104
+ /** @type {StatusHandler[]} */
27
105
  var registeredStatusHandlers = [];
28
106
  var currentStatus = "idle";
29
107
 
30
108
  // while downloading
31
109
  var blockingPromises = 0;
110
+ /** @type {(() => void)[]} */
32
111
  var blockingPromisesWaiting = [];
33
112
 
34
113
  // The update info
114
+ /** @type {ApplyHandler[] | undefined} */
35
115
  var currentUpdateApplyHandlers;
116
+ /** @type {ModuleId[] | undefined} */
36
117
  var queuedInvalidatedModules;
37
118
 
38
119
  $hmrModuleData$ = currentModuleData;
@@ -50,9 +131,18 @@ module.exports = function () {
50
131
  $hmrDownloadUpdateHandlers$ = {};
51
132
  $hmrInvalidateModuleHandlers$ = {};
52
133
 
134
+ /**
135
+ * @param {WebpackRequire} require the original require function
136
+ * @param {ModuleId} moduleId module id
137
+ * @returns {WebpackRequire} hot-aware require function
138
+ */
53
139
  function createRequire(require, moduleId) {
54
140
  var me = installedModules[moduleId];
55
141
  if (!me) return require;
142
+ /**
143
+ * @param {ModuleId} request requested module id
144
+ * @returns {unknown} module exports
145
+ */
56
146
  var fn = function (request) {
57
147
  if (me.hot.active) {
58
148
  if (installedModules[request]) {
@@ -78,6 +168,10 @@ module.exports = function () {
78
168
  }
79
169
  return require(request);
80
170
  };
171
+ /**
172
+ * @param {string} name property name
173
+ * @returns {PropertyDescriptor} descriptor forwarding to require
174
+ */
81
175
  var createPropertyDescriptor = function (name) {
82
176
  return {
83
177
  configurable: true,
@@ -95,14 +189,20 @@ module.exports = function () {
95
189
  Object.defineProperty(fn, name, createPropertyDescriptor(name));
96
190
  }
97
191
  }
98
- fn.e = function (chunkId, fetchPriority) {
192
+ /** @type {WebpackRequire} */ (fn).e = function (chunkId, fetchPriority) {
99
193
  return trackBlockingPromise(require.e(chunkId, fetchPriority));
100
194
  };
101
- return fn;
195
+ return /** @type {WebpackRequire} */ (fn);
102
196
  }
103
197
 
198
+ /**
199
+ * @param {ModuleId} moduleId module id
200
+ * @param {HotModule} me the module
201
+ * @returns {Hot} hot API
202
+ */
104
203
  function createModuleHotObject(moduleId, me) {
105
204
  var _main = currentChildModule !== moduleId;
205
+ /** @type {Hot} */
106
206
  var hot = {
107
207
  // private stuff
108
208
  _acceptedDependencies: {},
@@ -159,7 +259,7 @@ module.exports = function () {
159
259
  Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
160
260
  $hmrInvalidateModuleHandlers$[key](
161
261
  moduleId,
162
- currentUpdateApplyHandlers
262
+ /** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
163
263
  );
164
264
  });
165
265
  setStatus("ready");
@@ -168,7 +268,7 @@ module.exports = function () {
168
268
  Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
169
269
  $hmrInvalidateModuleHandlers$[key](
170
270
  moduleId,
171
- currentUpdateApplyHandlers
271
+ /** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
172
272
  );
173
273
  });
174
274
  break;
@@ -208,8 +308,13 @@ module.exports = function () {
208
308
  return hot;
209
309
  }
210
310
 
311
+ /**
312
+ * @param {string} newStatus new status
313
+ * @returns {Promise<void>} promise resolving when all handlers ran
314
+ */
211
315
  function setStatus(newStatus) {
212
316
  currentStatus = newStatus;
317
+ /** @type {(Promise<void> | void)[]} */
213
318
  var results = [];
214
319
 
215
320
  for (var i = 0; i < registeredStatusHandlers.length; i++)
@@ -232,6 +337,10 @@ module.exports = function () {
232
337
  }
233
338
  }
234
339
 
340
+ /**
341
+ * @param {Promise<unknown>} promise blocking promise
342
+ * @returns {Promise<unknown>} the same promise
343
+ */
235
344
  function trackBlockingPromise(promise) {
236
345
  switch (currentStatus) {
237
346
  case "ready":
@@ -246,15 +355,25 @@ module.exports = function () {
246
355
  }
247
356
  }
248
357
 
358
+ /**
359
+ * @param {() => Promise<ModuleId[]>} fn function to run once unblocked
360
+ * @returns {Promise<ModuleId[]>} result of fn
361
+ */
249
362
  function waitForBlockingPromises(fn) {
250
363
  if (blockingPromises === 0) return fn();
251
- return new Promise(function (resolve) {
252
- blockingPromisesWaiting.push(function () {
253
- resolve(fn());
254
- });
255
- });
364
+ return /** @type {Promise<ModuleId[]>} */ (
365
+ new Promise(function (resolve) {
366
+ blockingPromisesWaiting.push(function () {
367
+ resolve(fn());
368
+ });
369
+ })
370
+ );
256
371
  }
257
372
 
373
+ /**
374
+ * @param {boolean | ApplyOptions=} applyOnUpdate apply the update right away
375
+ * @returns {Promise<ModuleId[] | null>} updated module ids or null
376
+ */
258
377
  function hotCheck(applyOnUpdate) {
259
378
  if (currentStatus !== "idle") {
260
379
  throw new Error("check() is only allowed in idle status");
@@ -271,6 +390,7 @@ module.exports = function () {
271
390
  }
272
391
 
273
392
  return setStatus("prepare").then(function () {
393
+ /** @type {ModuleId[]} */
274
394
  var updatedModules = [];
275
395
  currentUpdateApplyHandlers = [];
276
396
 
@@ -284,12 +404,13 @@ module.exports = function () {
284
404
  update.r,
285
405
  update.m,
286
406
  promises,
287
- currentUpdateApplyHandlers,
407
+ /** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers),
288
408
  updatedModules,
289
- update.css
409
+ update.css,
410
+ update.f
290
411
  );
291
412
  return promises;
292
- }, [])
413
+ }, /** @type {Promise<unknown>[]} */ ([]))
293
414
  ).then(function () {
294
415
  return waitForBlockingPromises(function () {
295
416
  if (applyOnUpdate) {
@@ -304,6 +425,10 @@ module.exports = function () {
304
425
  });
305
426
  }
306
427
 
428
+ /**
429
+ * @param {ApplyOptions=} options apply options
430
+ * @returns {Promise<ModuleId[]>} updated module ids
431
+ */
307
432
  function hotApply(options) {
308
433
  if (currentStatus !== "ready") {
309
434
  return Promise.resolve().then(function () {
@@ -317,13 +442,19 @@ module.exports = function () {
317
442
  return internalApply(options);
318
443
  }
319
444
 
445
+ /**
446
+ * @param {boolean | ApplyOptions=} options apply options
447
+ * @returns {Promise<ModuleId[]>} updated module ids
448
+ */
320
449
  function internalApply(options) {
321
450
  options = options || {};
322
451
 
323
452
  applyInvalidatedModules();
324
453
 
325
- var results = currentUpdateApplyHandlers.map(function (handler) {
326
- return handler(options);
454
+ var results = /** @type {ApplyHandler[]} */ (
455
+ currentUpdateApplyHandlers
456
+ ).map(function (handler) {
457
+ return handler(/** @type {ApplyOptions} */ (options));
327
458
  });
328
459
  currentUpdateApplyHandlers = undefined;
329
460
 
@@ -349,13 +480,22 @@ module.exports = function () {
349
480
  // Now in "apply" phase
350
481
  var applyPromise = setStatus("apply");
351
482
 
483
+ /** @type {Error | undefined} */
352
484
  var error;
485
+ /**
486
+ * @param {Error} err error thrown while applying
487
+ * @returns {void}
488
+ */
353
489
  var reportError = function (err) {
354
490
  if (!error) error = err;
355
491
  };
356
492
 
493
+ /** @type {ModuleId[]} */
357
494
  var outdatedModules = [];
358
495
 
496
+ /**
497
+ * @returns {Promise<ModuleId[]>} updated module ids
498
+ */
359
499
  var onAccepted = function () {
360
500
  return Promise.all([disposePromise, applyPromise]).then(function () {
361
501
  // handle errors in accept handlers and self accepted module load
@@ -386,7 +526,7 @@ module.exports = function () {
386
526
  return result.apply;
387
527
  })
388
528
  .map(function (result) {
389
- return result.apply(reportError);
529
+ return /** @type {ApplyFn} */ (result.apply)(reportError);
390
530
  })
391
531
  )
392
532
  .then(function (applyResults) {
@@ -401,16 +541,21 @@ module.exports = function () {
401
541
  .then(onAccepted);
402
542
  }
403
543
 
544
+ /**
545
+ * @returns {boolean | undefined} true when invalidated modules were applied
546
+ */
404
547
  function applyInvalidatedModules() {
405
548
  if (queuedInvalidatedModules) {
406
549
  if (!currentUpdateApplyHandlers) currentUpdateApplyHandlers = [];
407
550
  Object.keys($hmrInvalidateModuleHandlers$).forEach(function (key) {
408
- queuedInvalidatedModules.forEach(function (moduleId) {
409
- $hmrInvalidateModuleHandlers$[key](
410
- moduleId,
411
- currentUpdateApplyHandlers
412
- );
413
- });
551
+ /** @type {ModuleId[]} */ (queuedInvalidatedModules).forEach(
552
+ function (moduleId) {
553
+ $hmrInvalidateModuleHandlers$[key](
554
+ moduleId,
555
+ /** @type {ApplyHandler[]} */ (currentUpdateApplyHandlers)
556
+ );
557
+ }
558
+ );
414
559
  });
415
560
  queuedInvalidatedModules = undefined;
416
561
  return true;
@@ -9,6 +9,8 @@ const RuntimeGlobals = require("../RuntimeGlobals");
9
9
  const RuntimeModule = require("../RuntimeModule");
10
10
  const Template = require("../Template");
11
11
 
12
+ /** @typedef {import("../Compilation")} Compilation */
13
+
12
14
  class HotModuleReplacementRuntimeModule extends RuntimeModule {
13
15
  constructor() {
14
16
  super("hot module replacement", RuntimeModule.STAGE_BASIC);
@@ -19,9 +21,14 @@ class HotModuleReplacementRuntimeModule extends RuntimeModule {
19
21
  * @returns {string | null} runtime code
20
22
  */
21
23
  generate() {
24
+ const { runtimeTemplate } = /** @type {Compilation} */ (this.compilation);
22
25
  return Template.getFunctionContent(
23
26
  require("./HotModuleReplacement.runtime")
24
27
  )
28
+ .replace(
29
+ "Object.prototype.hasOwnProperty.call(require, name)",
30
+ runtimeTemplate.objectHasOwn("require", "name")
31
+ )
25
32
  .replace(
26
33
  /\$interceptModuleExecution\$/g,
27
34
  RuntimeGlobals.interceptModuleExecution