@depup/webpack 5.106.1-depup.0 → 5.109.2-depup.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,100 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const { pathToFileURL } = require("url");
9
+ const LoaderLoadingError = require("../errors/LoaderLoadingError");
10
+
11
+ /** @typedef {import("./LoaderRunner").LoaderObject} LoaderObject */
12
+
13
+ /**
14
+ * Lazily-compiled dynamic `import()`. Built on first use so this file still
15
+ * parses on Node versions without native `import()` (<13.2), then reused.
16
+ * @type {((url: URL) => Promise<EXPECTED_ANY>) | undefined}
17
+ */
18
+ let importModule;
19
+
20
+ /**
21
+ * @param {LoaderObject} loader the loader to load into
22
+ * @param {EXPECTED_ANY} module the loaded module
23
+ * @param {(err?: Error) => void} callback callback
24
+ * @returns {void}
25
+ */
26
+ function handleResult(loader, module, callback) {
27
+ if (typeof module !== "function" && typeof module !== "object") {
28
+ return callback(
29
+ new LoaderLoadingError(
30
+ `Module '${loader.path}' is not a loader (export function or es6 module)`
31
+ )
32
+ );
33
+ }
34
+
35
+ loader.normal = typeof module === "function" ? module : module.default;
36
+ loader.pitch = module.pitch;
37
+ loader.raw = module.raw;
38
+
39
+ if (
40
+ typeof loader.normal !== "function" &&
41
+ typeof loader.pitch !== "function"
42
+ ) {
43
+ return callback(
44
+ new LoaderLoadingError(
45
+ `Module '${loader.path}' is not a loader (must have normal or pitch function)`
46
+ )
47
+ );
48
+ }
49
+ callback();
50
+ }
51
+
52
+ /**
53
+ * @param {LoaderObject} loader the loader to load
54
+ * @param {(err?: Error) => void} callback callback
55
+ * @returns {void}
56
+ */
57
+ function loadLoader(loader, callback) {
58
+ if (loader.type === "module") {
59
+ try {
60
+ if (importModule === undefined) {
61
+ // `eval` defers parsing `import()` to runtime, so this file stays
62
+ // loadable on Node versions that can't parse it (<13.2).
63
+ // eslint-disable-next-line no-eval
64
+ const dynamicImport = eval("(url) => import(url)");
65
+ importModule = /** @type {(url: URL) => Promise<EXPECTED_ANY>} */ (
66
+ dynamicImport
67
+ );
68
+ }
69
+
70
+ importModule(pathToFileURL(loader.path)).then(
71
+ (/** @type {EXPECTED_ANY} */ module) => {
72
+ handleResult(loader, module, callback);
73
+ },
74
+ callback
75
+ );
76
+ } catch (err) {
77
+ callback(/** @type {Error} */ (err));
78
+ }
79
+ return;
80
+ }
81
+
82
+ let loadedModule;
83
+ try {
84
+ loadedModule = require(loader.path);
85
+ } catch (err) {
86
+ // node can choke on require when the FD limit is hit; defer to recover.
87
+ if (
88
+ err instanceof Error &&
89
+ /** @type {NodeJS.ErrnoException} */ (err).code === "EMFILE"
90
+ ) {
91
+ setImmediate(loadLoader, loader, callback);
92
+ return;
93
+ }
94
+ return callback(/** @type {Error} */ (err));
95
+ }
96
+
97
+ return handleResult(loader, loadedModule, callback);
98
+ }
99
+
100
+ module.exports = loadLoader;
@@ -42,6 +42,7 @@ const TIMERS_AGGREGATES_SYMBOL = Symbol("webpack logger aggregated times");
42
42
 
43
43
  class WebpackLogger {
44
44
  /**
45
+ * Creates an instance of WebpackLogger.
45
46
  * @param {LogFn} log log function
46
47
  * @param {GetChildLogger} getChildLogger function to create child logger
47
48
  */
@@ -53,6 +54,7 @@ class WebpackLogger {
53
54
  }
54
55
 
55
56
  /**
57
+ * Processes the provided arg.
56
58
  * @param {Args} args args
57
59
  */
58
60
  error(...args) {
@@ -60,6 +62,7 @@ class WebpackLogger {
60
62
  }
61
63
 
62
64
  /**
65
+ * Processes the provided arg.
63
66
  * @param {Args} args args
64
67
  */
65
68
  warn(...args) {
@@ -67,6 +70,7 @@ class WebpackLogger {
67
70
  }
68
71
 
69
72
  /**
73
+ * Processes the provided arg.
70
74
  * @param {Args} args args
71
75
  */
72
76
  info(...args) {
@@ -74,6 +78,7 @@ class WebpackLogger {
74
78
  }
75
79
 
76
80
  /**
81
+ * Processes the provided arg.
77
82
  * @param {Args} args args
78
83
  */
79
84
  log(...args) {
@@ -81,6 +86,7 @@ class WebpackLogger {
81
86
  }
82
87
 
83
88
  /**
89
+ * Processes the provided arg.
84
90
  * @param {Args} args args
85
91
  */
86
92
  debug(...args) {
@@ -88,6 +94,7 @@ class WebpackLogger {
88
94
  }
89
95
 
90
96
  /**
97
+ * Processes the provided condition.
91
98
  * @param {boolean=} condition condition
92
99
  * @param {Args} args args
93
100
  */
@@ -106,6 +113,7 @@ class WebpackLogger {
106
113
  }
107
114
 
108
115
  /**
116
+ * Processes the provided arg.
109
117
  * @param {Args} args args
110
118
  */
111
119
  status(...args) {
@@ -113,6 +121,7 @@ class WebpackLogger {
113
121
  }
114
122
 
115
123
  /**
124
+ * Processes the provided arg.
116
125
  * @param {Args} args args
117
126
  */
118
127
  group(...args) {
@@ -120,6 +129,7 @@ class WebpackLogger {
120
129
  }
121
130
 
122
131
  /**
132
+ * Processes the provided arg.
123
133
  * @param {Args} args args
124
134
  */
125
135
  groupCollapsed(...args) {
@@ -131,6 +141,7 @@ class WebpackLogger {
131
141
  }
132
142
 
133
143
  /**
144
+ * Processes the provided label.
134
145
  * @param {string=} label label
135
146
  */
136
147
  profile(label) {
@@ -138,6 +149,7 @@ class WebpackLogger {
138
149
  }
139
150
 
140
151
  /**
152
+ * Processes the provided label.
141
153
  * @param {string=} label label
142
154
  */
143
155
  profileEnd(label) {
@@ -145,6 +157,7 @@ class WebpackLogger {
145
157
  }
146
158
 
147
159
  /**
160
+ * Processes the provided label.
148
161
  * @param {string} label label
149
162
  */
150
163
  time(label) {
@@ -154,6 +167,7 @@ class WebpackLogger {
154
167
  }
155
168
 
156
169
  /**
170
+ * Processes the provided label.
157
171
  * @param {string=} label label
158
172
  */
159
173
  timeLog(label) {
@@ -166,6 +180,7 @@ class WebpackLogger {
166
180
  }
167
181
 
168
182
  /**
183
+ * Processes the provided label.
169
184
  * @param {string=} label label
170
185
  */
171
186
  timeEnd(label) {
@@ -180,6 +195,7 @@ class WebpackLogger {
180
195
  }
181
196
 
182
197
  /**
198
+ * Processes the provided label.
183
199
  * @param {string=} label label
184
200
  */
185
201
  timeAggregate(label) {
@@ -209,6 +225,7 @@ class WebpackLogger {
209
225
  }
210
226
 
211
227
  /**
228
+ * Time aggregate end.
212
229
  * @param {string=} label label
213
230
  */
214
231
  timeAggregateEnd(label) {
@@ -16,6 +16,7 @@ const { LogType } = require("./Logger");
16
16
  /** @typedef {(value: string, type: LogTypeEnum, args?: Args) => void} LoggingFunction */
17
17
 
18
18
  /**
19
+ * Defines the logger console type used by this module.
19
20
  * @typedef {object} LoggerConsole
20
21
  * @property {() => void} clear
21
22
  * @property {() => void} trace
@@ -34,6 +35,7 @@ const { LogType } = require("./Logger");
34
35
  */
35
36
 
36
37
  /**
38
+ * Defines the logger options type used by this module.
37
39
  * @typedef {object} LoggerOptions
38
40
  * @property {false | true | "none" | "error" | "warn" | "info" | "log" | "verbose"} level loglevel
39
41
  * @property {FilterTypes | boolean} debug filter for debug logging
@@ -41,6 +43,7 @@ const { LogType } = require("./Logger");
41
43
  */
42
44
 
43
45
  /**
46
+ * Filter to function.
44
47
  * @param {FilterItemTypes} item an input item
45
48
  * @returns {FilterFunction | undefined} filter function
46
49
  */
@@ -63,6 +66,7 @@ const filterToFunction = (item) => {
63
66
  };
64
67
 
65
68
  /**
69
+ * Enumerates the available values.
66
70
  * @enum {number}
67
71
  */
68
72
  const LogLevel = {
@@ -77,6 +81,7 @@ const LogLevel = {
77
81
  };
78
82
 
79
83
  /**
84
+ * Returns logging function.
80
85
  * @param {LoggerOptions} options options object
81
86
  * @returns {LoggingFunction} logging function
82
87
  */
@@ -93,6 +98,7 @@ module.exports = ({ level = "info", debug = false, console }) => {
93
98
  const loglevel = LogLevel[`${level}`] || 0;
94
99
 
95
100
  /**
101
+ * Processes the provided name.
96
102
  * @param {string} name name of the logger
97
103
  * @param {LogTypeEnum} type type of the log entry
98
104
  * @param {Args=} args arguments of the log entry
@@ -100,6 +106,7 @@ module.exports = ({ level = "info", debug = false, console }) => {
100
106
  */
101
107
  const logger = (name, type, args) => {
102
108
  /**
109
+ * Returns labeled args.
103
110
  * @template T
104
111
  * @returns {[string?, ...T[]]} labeled args
105
112
  */
@@ -18,6 +18,7 @@ const currentDefaultLoggerOptions = {
18
18
  let currentDefaultLogger = createConsoleLogger(currentDefaultLoggerOptions);
19
19
 
20
20
  /**
21
+ * Processes the provided create console logger.logger option.
21
22
  * @param {createConsoleLogger.LoggerOptions} options new options, merge with old options
22
23
  * @returns {void}
23
24
  */
@@ -27,6 +28,7 @@ module.exports.configureDefaultLogger = (options) => {
27
28
  };
28
29
 
29
30
  /**
31
+ * Returns a logger.
30
32
  * @param {string} name name of the logger
31
33
  * @returns {Logger} a logger
32
34
  */
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * Returns sum of all numbers in array.
9
10
  * @param {number[]} array array of numbers
10
11
  * @returns {number} sum of all numbers in array
11
12
  */
@@ -16,6 +17,7 @@ const arraySum = (array) => {
16
17
  };
17
18
 
18
19
  /**
20
+ * Returns truncated args.
19
21
  * @param {string[]} args items to be truncated
20
22
  * @param {number} maxLength maximum length of args including spaces between
21
23
  * @returns {string[]} truncated args
@@ -13,6 +13,7 @@ const StartupChunkDependenciesPlugin = require("../runtime/StartupChunkDependenc
13
13
  /** @typedef {import("../Module").RuntimeRequirements} RuntimeRequirements */
14
14
 
15
15
  /**
16
+ * Defines the common js chunk loading plugin options type used by this module.
16
17
  * @typedef {object} CommonJsChunkLoadingPluginOptions
17
18
  * @property {boolean=} asyncChunkLoading enable async chunk loading
18
19
  */
@@ -21,6 +22,7 @@ const PLUGIN_NAME = "CommonJsChunkLoadingPlugin";
21
22
 
22
23
  class CommonJsChunkLoadingPlugin {
23
24
  /**
25
+ * Creates an instance of CommonJsChunkLoadingPlugin.
24
26
  * @param {CommonJsChunkLoadingPluginOptions=} options options
25
27
  */
26
28
  constructor(options = {}) {
@@ -29,7 +31,7 @@ class CommonJsChunkLoadingPlugin {
29
31
  }
30
32
 
31
33
  /**
32
- * Apply the plugin
34
+ * Applies the plugin by registering its hooks on the compiler.
33
35
  * @param {Compiler} compiler the compiler instance
34
36
  * @returns {void}
35
37
  */
@@ -47,6 +49,7 @@ class CommonJsChunkLoadingPlugin {
47
49
  compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
48
50
  const globalChunkLoading = compilation.outputOptions.chunkLoading;
49
51
  /**
52
+ * Checks whether this common js chunk loading plugin is enabled for chunk.
50
53
  * @param {Chunk} chunk chunk
51
54
  * @returns {boolean} true, if wasm loading is enabled for the chunk
52
55
  */
@@ -61,6 +64,7 @@ class CommonJsChunkLoadingPlugin {
61
64
  /** @type {WeakSet<Chunk>} */
62
65
  const onceForChunkSet = new WeakSet();
63
66
  /**
67
+ * Handles the hook callback for this code path.
64
68
  * @param {Chunk} chunk chunk
65
69
  * @param {RuntimeRequirements} set runtime requirements
66
70
  */
@@ -5,7 +5,7 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const CachedInputFileSystem = require("enhanced-resolve").CachedInputFileSystem;
8
+ const { CachedInputFileSystem } = require("enhanced-resolve");
9
9
  const fs = require("graceful-fs");
10
10
  const createConsoleLogger = require("../logging/createConsoleLogger");
11
11
  const NodeWatchFileSystem = require("./NodeWatchFileSystem");
@@ -16,6 +16,7 @@ const nodeConsole = require("./nodeConsole");
16
16
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
17
17
 
18
18
  /**
19
+ * Defines the node environment plugin options type used by this module.
19
20
  * @typedef {object} NodeEnvironmentPluginOptions
20
21
  * @property {InfrastructureLogging} infrastructureLogging infrastructure logging options
21
22
  */
@@ -24,6 +25,7 @@ const PLUGIN_NAME = "NodeEnvironmentPlugin";
24
25
 
25
26
  class NodeEnvironmentPlugin {
26
27
  /**
28
+ * Creates an instance of NodeEnvironmentPlugin.
27
29
  * @param {NodeEnvironmentPluginOptions} options options
28
30
  */
29
31
  constructor(options) {
@@ -32,7 +34,7 @@ class NodeEnvironmentPlugin {
32
34
  }
33
35
 
34
36
  /**
35
- * Apply the plugin
37
+ * Applies the plugin by registering its hooks on the compiler.
36
38
  * @param {Compiler} compiler the compiler instance
37
39
  * @returns {void}
38
40
  */
@@ -48,9 +50,11 @@ class NodeEnvironmentPlugin {
48
50
  appendOnly: infrastructureLogging.appendOnly,
49
51
  stream:
50
52
  /** @type {NodeJS.WritableStream} */
51
- (infrastructureLogging.stream)
53
+ (infrastructureLogging.stream),
54
+ compiler
52
55
  })
53
56
  });
57
+ // @ts-expect-error need to fix on enhanced-resolve side
54
58
  compiler.inputFileSystem = new CachedInputFileSystem(fs, 60000);
55
59
  const inputFileSystem =
56
60
  /** @type {InputFileSystem} */
@@ -9,7 +9,7 @@
9
9
 
10
10
  class NodeSourcePlugin {
11
11
  /**
12
- * Apply the plugin
12
+ * Applies the plugin by registering its hooks on the compiler.
13
13
  * @param {Compiler} compiler the compiler instance
14
14
  * @returns {void}
15
15
  */
@@ -6,74 +6,14 @@
6
6
  "use strict";
7
7
 
8
8
  const ExternalsPlugin = require("../ExternalsPlugin");
9
+ const { builtins } = require("./nodeBuiltins");
9
10
 
10
11
  /** @typedef {import("../../declarations/WebpackOptions").ExternalsType} ExternalsType */
11
12
  /** @typedef {import("../Compiler")} Compiler */
12
13
 
13
- const builtins = [
14
- "assert",
15
- "assert/strict",
16
- "async_hooks",
17
- "buffer",
18
- "child_process",
19
- "cluster",
20
- "console",
21
- "constants",
22
- "crypto",
23
- "dgram",
24
- "diagnostics_channel",
25
- "dns",
26
- "dns/promises",
27
- "domain",
28
- "events",
29
- "fs",
30
- "fs/promises",
31
- "http",
32
- "http2",
33
- "https",
34
- "inspector",
35
- "inspector/promises",
36
- "module",
37
- "net",
38
- "os",
39
- "path",
40
- "path/posix",
41
- "path/win32",
42
- "perf_hooks",
43
- "process",
44
- "punycode",
45
- "querystring",
46
- "readline",
47
- "readline/promises",
48
- "repl",
49
- "stream",
50
- "stream/consumers",
51
- "stream/promises",
52
- "stream/web",
53
- "string_decoder",
54
- "sys",
55
- "timers",
56
- "timers/promises",
57
- "tls",
58
- "trace_events",
59
- "tty",
60
- "url",
61
- "util",
62
- "util/types",
63
- "v8",
64
- "vm",
65
- "wasi",
66
- "worker_threads",
67
- "zlib",
68
- /^node:/,
69
-
70
- // cspell:word pnpapi
71
- // Yarn PnP adds pnpapi as "builtin"
72
- "pnpapi"
73
- ];
74
-
75
14
  class NodeTargetPlugin {
76
15
  /**
16
+ * Creates an instance of NodeTargetPlugin.
77
17
  * @param {ExternalsType} type default external type
78
18
  */
79
19
  constructor(type = "node-commonjs") {
@@ -82,7 +22,7 @@ class NodeTargetPlugin {
82
22
  }
83
23
 
84
24
  /**
85
- * Apply the plugin
25
+ * Applies the plugin by registering its hooks on the compiler.
86
26
  * @param {Compiler} compiler the compiler instance
87
27
  * @returns {void}
88
28
  */
@@ -100,3 +40,4 @@ class NodeTargetPlugin {
100
40
  }
101
41
 
102
42
  module.exports = NodeTargetPlugin;
43
+ module.exports.builtins = builtins;
@@ -11,12 +11,14 @@ const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin
11
11
  /** @typedef {import("../Compiler")} Compiler */
12
12
 
13
13
  /**
14
+ * Represents the node template plugin runtime component.
14
15
  * @typedef {object} NodeTemplatePluginOptions
15
16
  * @property {boolean=} asyncChunkLoading enable async chunk loading
16
17
  */
17
18
 
18
19
  class NodeTemplatePlugin {
19
20
  /**
21
+ * Creates an instance of NodeTemplatePlugin.
20
22
  * @param {NodeTemplatePluginOptions=} options options object
21
23
  */
22
24
  constructor(options = {}) {
@@ -25,7 +27,7 @@ class NodeTemplatePlugin {
25
27
  }
26
28
 
27
29
  /**
28
- * Apply the plugin
30
+ * Applies the plugin by registering its hooks on the compiler.
29
31
  * @param {Compiler} compiler the compiler instance
30
32
  * @returns {void}
31
33
  */
@@ -8,6 +8,7 @@
8
8
  const util = require("util");
9
9
  const Watchpack = require("watchpack");
10
10
 
11
+ /** @typedef {InstanceType<import("watchpack")>} Watchpack */
11
12
  /** @typedef {import("watchpack").TimeInfoEntries} TimeInfoEntries */
12
13
  /** @typedef {import("watchpack").WatchOptions} WatchOptions */
13
14
  /** @typedef {import("../util/fs").InputFileSystem} InputFileSystem */
@@ -17,6 +18,7 @@ const Watchpack = require("watchpack");
17
18
 
18
19
  class NodeWatchFileSystem {
19
20
  /**
21
+ * Creates an instance of NodeWatchFileSystem.
20
22
  * @param {InputFileSystem} inputFileSystem input filesystem
21
23
  */
22
24
  constructor(inputFileSystem) {
@@ -81,9 +83,45 @@ class NodeWatchFileSystem {
81
83
  }
82
84
  return { fileTimeInfoEntries, contextTimeInfoEntries };
83
85
  };
86
+ const directoriesSet =
87
+ directories instanceof Set ? directories : new Set(directories);
88
+
89
+ // Watchpack reports a watched directory (a context dependency) in
90
+ // `changes` whenever its contents change, alongside the individual
91
+ // file events. The default `fs.purge(dir)` matches cache keys by
92
+ // prefix, so it would wipe the stat cache of every file inside the
93
+ // directory even though only file-level events actually invalidate
94
+ // file stats. For directories we explicitly watch, purge only the
95
+ // directory's own entry (`{ exact: true }`, enhanced-resolve >=
96
+ // 5.22.0); file-level events in the same aggregated batch still
97
+ // handle file stats and the parent readdir invalidation.
98
+ /**
99
+ * @param {Changes | null | undefined} changes changes set
100
+ * @param {Removals | null | undefined} removals removals set
101
+ */
102
+ const purgeChanges = (changes, removals) => {
103
+ const fs = this.inputFileSystem;
104
+ if (!fs || !fs.purge) return;
105
+ if (changes) {
106
+ for (const item of changes) {
107
+ if (directoriesSet.has(item)) {
108
+ fs.purge(item, { exact: true });
109
+ } else {
110
+ fs.purge(item);
111
+ }
112
+ }
113
+ }
114
+ if (removals) {
115
+ for (const item of removals) {
116
+ fs.purge(item);
117
+ }
118
+ }
119
+ };
120
+
84
121
  this.watcher.once(
85
122
  "aggregated",
86
123
  /**
124
+ * Handles the callback logic for this hook.
87
125
  * @param {Changes} changes changes
88
126
  * @param {Removals} removals removals
89
127
  */
@@ -92,15 +130,7 @@ class NodeWatchFileSystem {
92
130
  /** @type {Watchpack} */
93
131
  (this.watcher).pause();
94
132
 
95
- const fs = this.inputFileSystem;
96
- if (fs && fs.purge) {
97
- for (const item of changes) {
98
- fs.purge(item);
99
- }
100
- for (const item of removals) {
101
- fs.purge(item);
102
- }
103
- }
133
+ purgeChanges(changes, removals);
104
134
  const { fileTimeInfoEntries, contextTimeInfoEntries } = fetchTimeInfo();
105
135
  callback(
106
136
  null,
@@ -170,19 +200,7 @@ class NodeWatchFileSystem {
170
200
  getInfo: () => {
171
201
  const removals = this.watcher && this.watcher.aggregatedRemovals;
172
202
  const changes = this.watcher && this.watcher.aggregatedChanges;
173
- const fs = this.inputFileSystem;
174
- if (fs && fs.purge) {
175
- if (removals) {
176
- for (const item of removals) {
177
- fs.purge(item);
178
- }
179
- }
180
- if (changes) {
181
- for (const item of changes) {
182
- fs.purge(item);
183
- }
184
- }
185
- }
203
+ purgeChanges(changes, removals);
186
204
  const { fileTimeInfoEntries, contextTimeInfoEntries } = fetchTimeInfo();
187
205
  return {
188
206
  changes,
@@ -26,6 +26,7 @@ const { getUndoPath } = require("../util/identifier");
26
26
 
27
27
  class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
28
28
  /**
29
+ * Creates an instance of ReadFileChunkLoadingRuntimeModule.
29
30
  * @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
30
31
  */
31
32
  constructor(runtimeRequirements) {
@@ -35,6 +36,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
35
36
  }
36
37
 
37
38
  /**
39
+ * Returns generated code.
38
40
  * @private
39
41
  * @param {Chunk} chunk chunk
40
42
  * @param {string} rootOutputDir root output directory
@@ -55,6 +57,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
55
57
  }
56
58
 
57
59
  /**
60
+ * Generates runtime code for this runtime module.
58
61
  * @returns {string | null} runtime code
59
62
  */
60
63
  generate() {
@@ -99,6 +102,11 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
99
102
  const stateExpression = withHmr
100
103
  ? `${RuntimeGlobals.hmrRuntimeStatePrefix}_readFileVm`
101
104
  : undefined;
105
+ const installedChunksObject = `{\n${Template.indent(
106
+ Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
107
+ ",\n"
108
+ )
109
+ )}\n}`;
102
110
 
103
111
  return Template.asString([
104
112
  withBaseURI
@@ -108,14 +116,10 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
108
116
  "// object to store loaded chunks",
109
117
  '// "0" means "already loaded", Promise means loading',
110
118
  `var installedChunks = ${
111
- stateExpression ? `${stateExpression} = ${stateExpression} || ` : ""
112
- }{`,
113
- Template.indent(
114
- Array.from(initialChunkIds, (id) => `${JSON.stringify(id)}: 0`).join(
115
- ",\n"
116
- )
117
- ),
118
- "};",
119
+ stateExpression
120
+ ? runtimeTemplate.assignOr(stateExpression, installedChunksObject)
121
+ : installedChunksObject
122
+ };`,
119
123
  "",
120
124
  withOnChunkLoad
121
125
  ? `${
@@ -234,7 +238,7 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
234
238
  `if(${RuntimeGlobals.hasOwnProperty}(updatedModules, moduleId)) {`,
235
239
  Template.indent([
236
240
  "currentUpdate[moduleId] = updatedModules[moduleId];",
237
- "if(updatedModulesList) updatedModulesList.push(moduleId);"
241
+ `${runtimeTemplate.optionalChaining("updatedModulesList", "push(moduleId)")};`
238
242
  ]),
239
243
  "}"
240
244
  ]),