@depup/webpack 5.106.0-depup.0 → 5.109.0-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 (667) hide show
  1. package/README.md +9 -11
  2. package/changes.json +16 -24
  3. package/hot/dev-server.js +2 -0
  4. package/lib/APIPlugin.js +60 -35
  5. package/lib/AsyncDependenciesBlock.js +3 -0
  6. package/lib/AutomaticPrefetchPlugin.js +6 -1
  7. package/lib/BannerPlugin.js +13 -5
  8. package/lib/Cache.js +27 -5
  9. package/lib/CacheFacade.js +41 -0
  10. package/lib/Chunk.js +71 -25
  11. package/lib/ChunkGraph.js +141 -9
  12. package/lib/ChunkGroup.js +115 -28
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CircularModulesPlugin.js +190 -0
  15. package/lib/CleanPlugin.js +23 -26
  16. package/lib/CodeGenerationResults.js +19 -0
  17. package/lib/CompatibilityPlugin.js +54 -37
  18. package/lib/Compilation.js +635 -107
  19. package/lib/Compiler.js +93 -31
  20. package/lib/ConcatenationScope.js +34 -4
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +15 -12
  23. package/lib/ContextExclusionPlugin.js +3 -1
  24. package/lib/ContextModule.js +345 -55
  25. package/lib/ContextModuleFactory.js +193 -51
  26. package/lib/ContextReplacementPlugin.js +8 -1
  27. package/lib/DefinePlugin.js +498 -127
  28. package/lib/DependenciesBlock.js +6 -1
  29. package/lib/Dependency.js +159 -11
  30. package/lib/DependencyTemplate.js +7 -1
  31. package/lib/DependencyTemplates.js +4 -0
  32. package/lib/DotenvPlugin.js +3 -0
  33. package/lib/DynamicEntryPlugin.js +3 -1
  34. package/lib/EntryOptionPlugin.js +42 -2
  35. package/lib/EntryPlugin.js +4 -1
  36. package/lib/Entrypoint.js +5 -1
  37. package/lib/EnvironmentPlugin.js +3 -2
  38. package/lib/ErrorHelpers.js +7 -0
  39. package/lib/EvalDevToolModulePlugin.js +3 -1
  40. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  41. package/lib/ExportsInfo.js +399 -108
  42. package/lib/ExportsInfoApiPlugin.js +4 -3
  43. package/lib/ExternalModule.js +376 -78
  44. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  45. package/lib/ExternalsPlugin.js +3 -1
  46. package/lib/FileSystemInfo.js +575 -149
  47. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  48. package/lib/FlagDependencyExportsPlugin.js +82 -9
  49. package/lib/FlagDependencyUsagePlugin.js +92 -6
  50. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  51. package/lib/Generator.js +24 -3
  52. package/lib/HotModuleReplacementPlugin.js +110 -44
  53. package/lib/IgnorePlugin.js +5 -2
  54. package/lib/IgnoreWarningsPlugin.js +2 -1
  55. package/lib/InitFragment.js +15 -0
  56. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  57. package/lib/LazyBarrel.js +389 -0
  58. package/lib/LibraryTemplatePlugin.js +2 -1
  59. package/lib/LoaderOptionsPlugin.js +3 -1
  60. package/lib/LoaderTargetPlugin.js +3 -1
  61. package/lib/MainTemplate.js +15 -0
  62. package/lib/ManifestPlugin.js +9 -2
  63. package/lib/Module.js +121 -60
  64. package/lib/ModuleFactory.js +6 -1
  65. package/lib/ModuleFilenameHelpers.js +5 -2
  66. package/lib/ModuleGraph.js +69 -2
  67. package/lib/ModuleGraphConnection.js +9 -0
  68. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  69. package/lib/ModuleNotFoundError.js +3 -83
  70. package/lib/ModuleProfile.js +27 -1
  71. package/lib/ModuleSourceTypeConstants.js +52 -19
  72. package/lib/ModuleTemplate.js +10 -0
  73. package/lib/ModuleTypeConstants.js +20 -4
  74. package/lib/MultiCompiler.js +59 -4
  75. package/lib/MultiStats.js +9 -0
  76. package/lib/MultiWatching.js +6 -0
  77. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  78. package/lib/NodeStuffPlugin.js +78 -46
  79. package/lib/NormalModule.js +485 -181
  80. package/lib/NormalModuleFactory.js +148 -29
  81. package/lib/NormalModuleReplacementPlugin.js +3 -1
  82. package/lib/NullFactory.js +1 -0
  83. package/lib/OptionsApply.js +1 -0
  84. package/lib/Parser.js +3 -1
  85. package/lib/PlatformPlugin.js +2 -1
  86. package/lib/PrefetchPlugin.js +4 -1
  87. package/lib/ProgressPlugin.js +351 -161
  88. package/lib/ProvidePlugin.js +6 -3
  89. package/lib/RawModule.js +32 -16
  90. package/lib/RecordIdsPlugin.js +9 -0
  91. package/lib/RequestShortener.js +8 -0
  92. package/lib/ResolverFactory.js +5 -0
  93. package/lib/RuntimeGlobals.js +58 -5
  94. package/lib/RuntimeModule.js +22 -7
  95. package/lib/RuntimePlugin.js +104 -26
  96. package/lib/RuntimeTemplate.js +616 -37
  97. package/lib/SelfModuleFactory.js +3 -0
  98. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  99. package/lib/SourceMapDevToolPlugin.js +341 -63
  100. package/lib/Stats.js +6 -0
  101. package/lib/Template.js +29 -3
  102. package/lib/TemplatedPathPlugin.js +505 -138
  103. package/lib/UseStrictPlugin.js +3 -2
  104. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  105. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  106. package/lib/WarnNoModeSetPlugin.js +18 -2
  107. package/lib/WatchIgnorePlugin.js +5 -1
  108. package/lib/Watching.js +25 -3
  109. package/lib/WebpackError.js +3 -74
  110. package/lib/WebpackIsIncludedPlugin.js +4 -2
  111. package/lib/WebpackOptionsApply.js +88 -25
  112. package/lib/WebpackOptionsDefaulter.js +1 -0
  113. package/lib/asset/AssetBytesGenerator.js +28 -10
  114. package/lib/asset/AssetBytesParser.js +1 -0
  115. package/lib/asset/AssetGenerator.js +199 -60
  116. package/lib/asset/AssetModule.js +47 -0
  117. package/lib/asset/AssetModulesPlugin.js +115 -24
  118. package/lib/asset/AssetParser.js +4 -2
  119. package/lib/asset/AssetSourceGenerator.js +26 -8
  120. package/lib/asset/AssetSourceParser.js +1 -0
  121. package/lib/asset/RawDataUrlModule.js +23 -13
  122. package/lib/asset/WebManifestGenerator.js +164 -0
  123. package/lib/asset/WebManifestParser.js +130 -0
  124. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  125. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  126. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  127. package/lib/async-modules/isGeneratorLowered.js +26 -0
  128. package/lib/buildChunkGraph.js +107 -15
  129. package/lib/bun/BunTargetPlugin.js +42 -0
  130. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  131. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  132. package/lib/cache/IdleFileCachePlugin.js +6 -1
  133. package/lib/cache/MemoryCachePlugin.js +1 -1
  134. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  135. package/lib/cache/PackFileCacheStrategy.js +43 -7
  136. package/lib/cache/ResolverCachePlugin.js +12 -1
  137. package/lib/cache/getLazyHashedEtag.js +13 -2
  138. package/lib/cache/mergeEtags.js +4 -0
  139. package/lib/cli.js +142 -20
  140. package/lib/config/browserslistTargetHandler.js +141 -0
  141. package/lib/config/defaults.js +591 -41
  142. package/lib/config/defineConfig.js +31 -0
  143. package/lib/config/normalization.js +46 -1
  144. package/lib/config/target.js +200 -2
  145. package/lib/container/ContainerEntryDependency.js +2 -0
  146. package/lib/container/ContainerEntryModule.js +27 -14
  147. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  148. package/lib/container/ContainerExposedDependency.js +6 -2
  149. package/lib/container/ContainerPlugin.js +2 -1
  150. package/lib/container/ContainerReferencePlugin.js +3 -2
  151. package/lib/container/FallbackDependency.js +9 -7
  152. package/lib/container/FallbackItemDependency.js +1 -0
  153. package/lib/container/FallbackModule.js +22 -9
  154. package/lib/container/FallbackModuleFactory.js +1 -0
  155. package/lib/container/ModuleFederationPlugin.js +12 -26
  156. package/lib/container/RemoteModule.js +33 -10
  157. package/lib/container/RemoteRuntimeModule.js +15 -12
  158. package/lib/container/RemoteToExternalDependency.js +1 -0
  159. package/lib/container/options.js +7 -0
  160. package/lib/css/CssGenerator.js +534 -272
  161. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  162. package/lib/css/CssLoadingRuntimeModule.js +156 -77
  163. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  164. package/lib/css/CssModulesPlugin.js +356 -204
  165. package/lib/css/CssParser.js +3452 -1950
  166. package/lib/css/syntax.js +4058 -0
  167. package/lib/debug/ProfilingPlugin.js +33 -2
  168. package/lib/deno/DenoTargetPlugin.js +41 -0
  169. package/lib/dependencies/AMDDefineDependency.js +29 -17
  170. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  171. package/lib/dependencies/AMDPlugin.js +6 -3
  172. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  173. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  174. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  175. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  176. package/lib/dependencies/AMDRequireDependency.js +28 -20
  177. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  178. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  179. package/lib/dependencies/CachedConstDependency.js +9 -1
  180. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  181. package/lib/dependencies/CommonJsExportRequireDependency.js +138 -38
  182. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  183. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  184. package/lib/dependencies/CommonJsFullRequireDependency.js +62 -27
  185. package/lib/dependencies/CommonJsImportsParserPlugin.js +187 -24
  186. package/lib/dependencies/CommonJsPlugin.js +7 -4
  187. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  188. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  189. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  190. package/lib/dependencies/ConstDependency.js +22 -12
  191. package/lib/dependencies/ContextDependency.js +13 -2
  192. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  193. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  194. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  195. package/lib/dependencies/ContextElementDependency.js +27 -14
  196. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  197. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  198. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  199. package/lib/dependencies/CssIcssExportDependency.js +682 -368
  200. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  201. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  202. package/lib/dependencies/CssImportDependency.js +37 -1
  203. package/lib/dependencies/CssUrlDependency.js +87 -14
  204. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  205. package/lib/dependencies/DllEntryDependency.js +12 -13
  206. package/lib/dependencies/DynamicExports.js +5 -0
  207. package/lib/dependencies/EntryDependency.js +1 -0
  208. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  209. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  210. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  211. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  212. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  213. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  214. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  215. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  216. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  217. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +32 -2
  218. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  219. package/lib/dependencies/HarmonyExportExpressionDependency.js +140 -46
  220. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  221. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +253 -37
  222. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  223. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  224. package/lib/dependencies/HarmonyExports.js +6 -1
  225. package/lib/dependencies/HarmonyImportDependency.js +59 -3
  226. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  227. package/lib/dependencies/HarmonyImportGuard.js +426 -0
  228. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  229. package/lib/dependencies/HarmonyImportSpecifierDependency.js +136 -17
  230. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  231. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  232. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  233. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  234. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  235. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  236. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  237. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  238. package/lib/dependencies/ImportContextDependency.js +9 -9
  239. package/lib/dependencies/ImportDependency.js +92 -3
  240. package/lib/dependencies/ImportEagerDependency.js +2 -0
  241. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  242. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  243. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  244. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  245. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  246. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  247. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  248. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  250. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  251. package/lib/dependencies/ImportParserPlugin.js +114 -27
  252. package/lib/dependencies/ImportPhase.js +17 -11
  253. package/lib/dependencies/ImportPlugin.js +2 -1
  254. package/lib/dependencies/ImportWeakDependency.js +3 -0
  255. package/lib/dependencies/JsonExportsDependency.js +15 -10
  256. package/lib/dependencies/LoaderDependency.js +2 -0
  257. package/lib/dependencies/LoaderImportDependency.js +3 -0
  258. package/lib/dependencies/LoaderPlugin.js +9 -2
  259. package/lib/dependencies/LocalModule.js +15 -12
  260. package/lib/dependencies/LocalModuleDependency.js +15 -13
  261. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  262. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  263. package/lib/dependencies/ModuleDependency.js +14 -0
  264. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  265. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  266. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  267. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  268. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  269. package/lib/dependencies/NullDependency.js +2 -0
  270. package/lib/dependencies/PrefetchDependency.js +1 -0
  271. package/lib/dependencies/ProvidedDependency.js +36 -27
  272. package/lib/dependencies/PureExpressionDependency.js +14 -10
  273. package/lib/dependencies/RequireContextDependency.js +1 -0
  274. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  275. package/lib/dependencies/RequireContextPlugin.js +2 -1
  276. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  277. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  278. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  279. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  280. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  281. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  282. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  283. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  284. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  285. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  286. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  287. package/lib/dependencies/RequireResolveDependency.js +2 -0
  288. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  289. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  290. package/lib/dependencies/StaticExportsDependency.js +13 -10
  291. package/lib/dependencies/SystemPlugin.js +9 -6
  292. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  293. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  294. package/lib/dependencies/URLContextDependency.js +8 -7
  295. package/lib/dependencies/URLDependency.js +157 -33
  296. package/lib/dependencies/URLPlugin.js +2 -0
  297. package/lib/dependencies/UnsupportedDependency.js +12 -13
  298. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  299. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  300. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  301. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  302. package/lib/dependencies/WorkerDependency.js +111 -27
  303. package/lib/dependencies/WorkletDependency.js +278 -0
  304. package/lib/dependencies/getFunctionExpression.js +1 -0
  305. package/lib/dependencies/processExportInfo.js +14 -11
  306. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  307. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  308. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  309. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  310. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  311. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  312. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  313. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  314. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  315. package/lib/electron/ElectronTargetPlugin.js +24 -5
  316. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  317. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  318. package/lib/errors/BuildCycleError.js +1 -1
  319. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  320. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  321. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  322. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  323. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  324. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  325. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  326. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  327. package/lib/errors/JSONParseError.js +115 -0
  328. package/lib/errors/LoaderLoadingError.js +20 -0
  329. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  330. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  331. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  332. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  333. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  334. package/lib/errors/ModuleNotFoundError.js +94 -0
  335. package/lib/errors/ModuleParseError.js +141 -0
  336. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  337. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  338. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  339. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  340. package/lib/errors/NonErrorEmittedError.js +30 -0
  341. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  342. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  343. package/lib/errors/WebpackError.js +84 -0
  344. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  345. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  346. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  347. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +71 -49
  348. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  349. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  350. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  351. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  352. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  353. package/lib/hmr/lazyCompilationBackend.js +34 -8
  354. package/lib/html/HtmlGenerator.js +1470 -0
  355. package/lib/html/HtmlModule.js +41 -0
  356. package/lib/html/HtmlModulesPlugin.js +1111 -0
  357. package/lib/html/HtmlParser.js +1970 -0
  358. package/lib/html/favicon.svg +1 -0
  359. package/lib/html/syntax.js +9020 -0
  360. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  361. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  362. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  363. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  364. package/lib/ids/IdHelpers.js +25 -2
  365. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  366. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  367. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  368. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  369. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  370. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  371. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  372. package/lib/index.js +66 -15
  373. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  374. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  375. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  376. package/lib/javascript/ChunkHelpers.js +1 -0
  377. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  378. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  379. package/lib/javascript/JavascriptGenerator.js +213 -51
  380. package/lib/javascript/JavascriptModule.js +54 -0
  381. package/lib/javascript/JavascriptModulesPlugin.js +579 -183
  382. package/lib/javascript/JavascriptParser.js +1289 -462
  383. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  384. package/lib/javascript/StartupHelpers.js +5 -0
  385. package/lib/javascript/syntax.js +4380 -0
  386. package/lib/json/JsonData.js +5 -0
  387. package/lib/json/JsonGenerator.js +21 -0
  388. package/lib/json/JsonModule.js +40 -0
  389. package/lib/json/JsonModulesPlugin.js +8 -1
  390. package/lib/json/JsonParser.js +18 -27
  391. package/lib/library/AbstractLibraryPlugin.js +17 -2
  392. package/lib/library/AmdLibraryPlugin.js +8 -0
  393. package/lib/library/AssignLibraryPlugin.js +21 -3
  394. package/lib/library/EnableLibraryPlugin.js +8 -2
  395. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  396. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  397. package/lib/library/JsonpLibraryPlugin.js +8 -0
  398. package/lib/library/ModuleLibraryPlugin.js +154 -7
  399. package/lib/library/SystemLibraryPlugin.js +11 -3
  400. package/lib/library/UmdLibraryPlugin.js +16 -0
  401. package/lib/loaders/LoaderRunner.js +714 -0
  402. package/lib/loaders/loadLoader.js +100 -0
  403. package/lib/logging/Logger.js +17 -0
  404. package/lib/logging/createConsoleLogger.js +7 -0
  405. package/lib/logging/runtime.js +2 -0
  406. package/lib/logging/truncateArgs.js +2 -0
  407. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  408. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  409. package/lib/node/NodeSourcePlugin.js +1 -1
  410. package/lib/node/NodeTargetPlugin.js +4 -63
  411. package/lib/node/NodeTemplatePlugin.js +3 -1
  412. package/lib/node/NodeWatchFileSystem.js +40 -22
  413. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  414. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +23 -1
  415. package/lib/node/ReadFileCompileWasmPlugin.js +18 -1
  416. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  417. package/lib/node/nodeBuiltins.js +80 -0
  418. package/lib/node/nodeConsole.js +116 -64
  419. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  420. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  421. package/lib/optimize/ConcatenatedModule.js +585 -116
  422. package/lib/optimize/ConstExportsPlugin.js +211 -0
  423. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  424. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  425. package/lib/optimize/InlineExports.js +178 -0
  426. package/lib/optimize/InnerGraph.js +374 -262
  427. package/lib/optimize/InnerGraphPlugin.js +246 -117
  428. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  429. package/lib/optimize/MangleExportsPlugin.js +5 -1
  430. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  431. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  432. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  433. package/lib/optimize/ModuleConcatenationPlugin.js +159 -34
  434. package/lib/optimize/RealContentHashPlugin.js +125 -50
  435. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  436. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  437. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  438. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  439. package/lib/optimize/SplitChunksPlugin.js +54 -6
  440. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  441. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  442. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  443. package/lib/performance/SizeLimitsPlugin.js +8 -2
  444. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  445. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  446. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  448. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  449. package/lib/prefetch/ResourceHintPlugin.js +663 -0
  450. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  451. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  452. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  453. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  454. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  455. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  456. package/lib/rules/RuleSetCompiler.js +132 -0
  457. package/lib/rules/UseEffectRulePlugin.js +10 -3
  458. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  459. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  460. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  461. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  462. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  463. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  464. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  465. package/lib/runtime/CompatRuntimeModule.js +2 -0
  466. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  467. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  468. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  469. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  470. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  471. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  472. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  473. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  474. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  475. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  476. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  477. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  478. package/lib/runtime/HelperRuntimeModule.js +5 -0
  479. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  480. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  481. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  482. package/lib/runtime/NonceRuntimeModule.js +1 -0
  483. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  484. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  485. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  486. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  487. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  488. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  489. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  490. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  491. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  492. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  493. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  494. package/lib/schemes/DataUriPlugin.js +14 -2
  495. package/lib/schemes/FileUriPlugin.js +1 -1
  496. package/lib/schemes/HttpUriPlugin.js +86 -4
  497. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  498. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  499. package/lib/serialization/ArraySerializer.js +6 -8
  500. package/lib/serialization/BinaryMiddleware.js +552 -463
  501. package/lib/serialization/DateObjectSerializer.js +4 -2
  502. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  503. package/lib/serialization/FileMiddleware.js +50 -3
  504. package/lib/serialization/MapObjectSerializer.js +7 -9
  505. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  506. package/lib/serialization/ObjectMiddleware.js +73 -13
  507. package/lib/serialization/PlainObjectSerializer.js +16 -8
  508. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  509. package/lib/serialization/Serializer.js +6 -0
  510. package/lib/serialization/SerializerMiddleware.js +14 -2
  511. package/lib/serialization/SetObjectSerializer.js +6 -8
  512. package/lib/serialization/SingleItemMiddleware.js +3 -0
  513. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  514. package/lib/sharing/ConsumeSharedModule.js +21 -7
  515. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  516. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  517. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  518. package/lib/sharing/ProvideSharedDependency.js +34 -15
  519. package/lib/sharing/ProvideSharedModule.js +42 -12
  520. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  521. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  522. package/lib/sharing/SharePlugin.js +5 -1
  523. package/lib/sharing/ShareRuntimeModule.js +19 -16
  524. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  525. package/lib/sharing/utils.js +9 -1
  526. package/lib/stats/DefaultStatsFactoryPlugin.js +94 -12
  527. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  528. package/lib/stats/DefaultStatsPrinterPlugin.js +64 -18
  529. package/lib/stats/StatsFactory.js +39 -18
  530. package/lib/stats/StatsPrinter.js +16 -2
  531. package/lib/typescript/TypeScriptPlugin.js +210 -0
  532. package/lib/url/URLParserPlugin.js +111 -23
  533. package/lib/util/ArrayHelpers.js +1 -0
  534. package/lib/util/ArrayQueue.js +10 -5
  535. package/lib/util/AsyncQueue.js +154 -74
  536. package/lib/util/Hash.js +2 -2
  537. package/lib/util/IterableHelpers.js +3 -0
  538. package/lib/util/LazyBucketSortedSet.js +26 -0
  539. package/lib/util/LazySet.js +45 -4
  540. package/lib/util/LocConverter.js +64 -0
  541. package/lib/util/ParallelismFactorCalculator.js +1 -0
  542. package/lib/util/Queue.js +6 -3
  543. package/lib/util/Semaphore.js +15 -1
  544. package/lib/util/SetHelpers.js +4 -1
  545. package/lib/util/SortableSet.js +7 -1
  546. package/lib/util/SourceProcessor.js +119 -0
  547. package/lib/util/StackedCacheMap.js +20 -3
  548. package/lib/util/StackedMap.js +162 -43
  549. package/lib/util/StringXor.js +1 -1
  550. package/lib/util/TupleQueue.js +7 -3
  551. package/lib/util/TupleSet.js +14 -0
  552. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  553. package/lib/util/WeakTupleMap.js +60 -1
  554. package/lib/util/binarySearchBounds.js +3 -2
  555. package/lib/util/chainedImports.js +3 -3
  556. package/lib/util/cleverMerge.js +19 -2
  557. package/lib/util/comparators.js +35 -4
  558. package/lib/util/compileBooleanMatcher.js +9 -0
  559. package/lib/util/concatenate.js +80 -24
  560. package/lib/util/conventions.js +46 -1
  561. package/lib/util/createHash.js +0 -1
  562. package/lib/util/createHooksRegistry.js +43 -0
  563. package/lib/util/createMappings.js +118 -0
  564. package/lib/util/dataURL.js +3 -2
  565. package/lib/util/deprecation.js +19 -0
  566. package/lib/util/deterministicGrouping.js +46 -17
  567. package/lib/util/extractSourceMap.js +2 -1
  568. package/lib/util/extractUrlAndGlobal.js +1 -0
  569. package/lib/util/findGraphRoots.js +7 -0
  570. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  571. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  572. package/lib/util/fs.js +87 -14
  573. package/lib/util/generateDebugId.js +1 -0
  574. package/lib/util/globUtils.js +710 -0
  575. package/lib/util/hash/BatchedHash.js +1 -0
  576. package/lib/util/hash/BulkUpdateHash.js +1 -0
  577. package/lib/util/hash/DebugHash.js +1 -0
  578. package/lib/util/hash/hash-digest.js +32 -15
  579. package/lib/util/hash/md4.js +1 -1
  580. package/lib/util/hash/wasm-hash.js +5 -0
  581. package/lib/util/hash/xxhash64.js +1 -1
  582. package/lib/util/identifier.js +97 -6
  583. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  584. package/lib/util/internalSerializables.js +102 -60
  585. package/lib/util/magicComment.js +149 -7
  586. package/lib/util/makeSerializable.js +7 -0
  587. package/lib/util/memoize.js +2 -0
  588. package/lib/util/mimeTypes.js +176 -0
  589. package/lib/util/nonNumericOnlyHash.js +31 -1
  590. package/lib/util/numberHash.js +2 -2
  591. package/lib/util/parseJson.js +41 -0
  592. package/lib/util/processAsyncTree.js +8 -0
  593. package/lib/util/property.js +9 -2
  594. package/lib/util/publicPathPlaceholder.js +64 -0
  595. package/lib/util/registerExternalSerializer.js +24 -4
  596. package/lib/util/removeBOM.js +1 -0
  597. package/lib/util/runtime.js +32 -0
  598. package/lib/util/semver.js +15 -0
  599. package/lib/util/serialization.js +2 -0
  600. package/lib/util/smartGrouping.js +8 -0
  601. package/lib/util/source.js +23 -0
  602. package/lib/util/topologicalSort.js +69 -0
  603. package/lib/validateSchema.js +1 -0
  604. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  605. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  606. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  607. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  608. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  609. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  610. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  611. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  612. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  613. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  614. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  615. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  616. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  617. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  618. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  619. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  620. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  621. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  622. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  623. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  624. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  625. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  626. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  627. package/lib/web/JsonpTemplatePlugin.js +2 -1
  628. package/lib/webpack.js +78 -1
  629. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  630. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  631. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  632. package/module.d.ts +21 -0
  633. package/package.json +79 -77
  634. package/schemas/WebpackOptions.check.js +1 -1
  635. package/schemas/WebpackOptions.json +1117 -79
  636. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  637. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  638. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  639. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  640. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  641. package/schemas/plugins/HtmlParserOptions.json +3 -0
  642. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  643. package/schemas/plugins/ProgressPlugin.json +38 -0
  644. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  645. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  646. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  647. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  648. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  649. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  650. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  652. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  653. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  654. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  655. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  656. package/types.d.ts +8608 -1159
  657. package/lib/CaseSensitiveModulesWarning.js +0 -72
  658. package/lib/GraphHelpers.js +0 -46
  659. package/lib/ModuleParseError.js +0 -125
  660. package/lib/NoModeWarning.js +0 -23
  661. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  662. package/lib/css/walkCssTokens.js +0 -1843
  663. package/lib/util/AppendOnlyStackedSet.js +0 -78
  664. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  665. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  666. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,130 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const { parse } = require("acorn");
9
+ const Parser = require("../Parser");
10
+ const HtmlSourceDependency = require("../dependencies/HtmlSourceDependency");
11
+
12
+ /** @typedef {import("estree").Expression} Expression */
13
+ /** @typedef {import("estree").ObjectExpression} ObjectExpression */
14
+ /** @typedef {import("estree").Program} Program */
15
+ /** @typedef {import("estree").Property} Property */
16
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
17
+ /** @typedef {import("../Parser").ParserState} ParserState */
18
+ /** @typedef {import("../Parser").PreparsedAst} PreparsedAst */
19
+
20
+ // acorn decorates every node with numeric source offsets (absent from the estree types).
21
+ /** @typedef {{ start: number, end: number }} Positioned */
22
+
23
+ // A URL carrying its own scheme (`https:`, `data:`, …) is external; it is only
24
+ // bundled when `experiments.buildHttp` is enabled (like an absolute URL in HTML).
25
+ const ABSOLUTE_URL_SCHEME_REGEXP = /^[a-zA-Z][a-zA-Z\d+\-.]*:/;
26
+ // Manifest members whose array items carry an asset `src` (`icons[].src`,
27
+ // `screenshots[].src`, and `shortcuts[].icons[].src` — the last nests under `icons`).
28
+ const ICON_CONTAINER_KEYS = new Set(["icons", "screenshots"]);
29
+
30
+ /**
31
+ * Parses a Web App Manifest (`.webmanifest`) so its icon/screenshot `src`
32
+ * URLs are bundled as assets. Reuses acorn (JSON is a valid JS expression
33
+ * literal) to recover the exact source offsets, then emits an
34
+ * `HtmlSourceDependency` per URL so the generator can rewrite it in place.
35
+ */
36
+ class WebManifestParser extends Parser {
37
+ /**
38
+ * Parses the provided source and updates the parser state.
39
+ * @param {string | Buffer | PreparsedAst} source the source to parse
40
+ * @param {ParserState} state the parser state
41
+ * @returns {ParserState} the parser state
42
+ */
43
+ parse(source, state) {
44
+ if (Buffer.isBuffer(source)) {
45
+ source = source.toString("utf8");
46
+ } else if (typeof source === "object") {
47
+ throw new Error("webpackAst is unexpected for the WebManifestParser");
48
+ }
49
+ if (source[0] === "") {
50
+ source = source.slice(1);
51
+ }
52
+
53
+ const module = state.module;
54
+ // Without `buildHttp` there is no handler to fetch remote icons, so an
55
+ // absolute URL is left as-is rather than rewritten to an ignored asset.
56
+ const buildHttp = Boolean(state.options.experiments.buildHttp);
57
+
58
+ /** @type {Program | undefined} */
59
+ let ast;
60
+ try {
61
+ // Wrap in parens so the top-level object is an expression, not a block.
62
+ ast = /** @type {Program} */ (
63
+ /** @type {unknown} */ (parse(`(${source})`, { ecmaVersion: "latest" }))
64
+ );
65
+ } catch (_err) {
66
+ // Not valid JSON — leave the file untouched (still emitted as-is).
67
+ ast = undefined;
68
+ }
69
+
70
+ const statement = ast && ast.body[0];
71
+ if (
72
+ statement &&
73
+ statement.type === "ExpressionStatement" &&
74
+ statement.expression.type === "ObjectExpression"
75
+ ) {
76
+ /**
77
+ * @param {ObjectExpression} obj object expression node
78
+ * @param {string | undefined} parentKey key of the array/object this node sits in
79
+ */
80
+ const walk = (obj, parentKey) => {
81
+ for (const prop of obj.properties) {
82
+ if (prop.type !== "Property") continue;
83
+ const key =
84
+ prop.key.type === "Literal" && typeof prop.key.value === "string"
85
+ ? prop.key.value
86
+ : prop.key.type === "Identifier"
87
+ ? prop.key.name
88
+ : undefined;
89
+ const value = /** @type {Expression} */ (prop.value);
90
+ if (value.type === "ObjectExpression") {
91
+ walk(value, key);
92
+ } else if (value.type === "ArrayExpression") {
93
+ for (const element of value.elements) {
94
+ if (element && element.type === "ObjectExpression") {
95
+ walk(element, key);
96
+ }
97
+ }
98
+ } else if (
99
+ key === "src" &&
100
+ value.type === "Literal" &&
101
+ typeof value.value === "string" &&
102
+ parentKey !== undefined &&
103
+ ICON_CONTAINER_KEYS.has(parentKey)
104
+ ) {
105
+ const url = value.value;
106
+ // Fragment-only refs aren't assets; absolute URLs need `buildHttp`.
107
+ if (!url || url.startsWith("#")) continue;
108
+ if (!buildHttp && ABSOLUTE_URL_SCHEME_REGEXP.test(url)) continue;
109
+ // acorn offsets are into `(${source})`; the leading `(` and the
110
+ // opening quote cancel, so the inner span is [start, end - 2].
111
+ const { start, end } = /** @type {Positioned} */ (
112
+ /** @type {unknown} */ (value)
113
+ );
114
+ const dep = new HtmlSourceDependency(url, [start, end - 2]);
115
+ module.addDependency(dep);
116
+ module.addCodeGenerationDependency(dep);
117
+ }
118
+ }
119
+ };
120
+ walk(statement.expression, undefined);
121
+ }
122
+
123
+ /** @type {BuildInfo} */
124
+ (state.module.buildInfo).strict = true;
125
+
126
+ return state;
127
+ }
128
+ }
129
+
130
+ module.exports = WebManifestParser;
@@ -13,6 +13,7 @@ const HarmonyImportDependency = require("../dependencies/HarmonyImportDependency
13
13
  /** @typedef {Set<Module>} Modules */
14
14
 
15
15
  /**
16
+ * Gets outgoing async modules.
16
17
  * @param {ModuleGraph} moduleGraph module graph
17
18
  * @param {Module} module module
18
19
  * @returns {Modules} set of modules
@@ -15,13 +15,16 @@ const Template = require("../Template");
15
15
  /** @typedef {Map<string, string>} Dependencies */
16
16
 
17
17
  /**
18
+ * Represents AwaitDependenciesInitFragment.
18
19
  * @extends {InitFragment<GenerateContext>}
19
20
  */
20
21
  class AwaitDependenciesInitFragment extends InitFragment {
21
22
  /**
23
+ * Creates an instance of AwaitDependenciesInitFragment.
22
24
  * @param {Dependencies} dependencies maps an import var to an async module that needs to be awaited
25
+ * @param {boolean=} generatorLowered module is emitted as a generator, so use `yield` instead of `await`
23
26
  */
24
- constructor(dependencies) {
27
+ constructor(dependencies, generatorLowered = false) {
25
28
  super(
26
29
  undefined,
27
30
  InitFragment.STAGE_ASYNC_DEPENDENCIES,
@@ -30,9 +33,12 @@ class AwaitDependenciesInitFragment extends InitFragment {
30
33
  );
31
34
  /** @type {Dependencies} */
32
35
  this.dependencies = dependencies;
36
+ /** @type {boolean} */
37
+ this.generatorLowered = generatorLowered;
33
38
  }
34
39
 
35
40
  /**
41
+ * Merges another await-dependencies fragment into this fragment.
36
42
  * @param {AwaitDependenciesInitFragment} other other AwaitDependenciesInitFragment
37
43
  * @returns {AwaitDependenciesInitFragment} AwaitDependenciesInitFragment
38
44
  */
@@ -41,10 +47,14 @@ class AwaitDependenciesInitFragment extends InitFragment {
41
47
  for (const [key, value] of this.dependencies) {
42
48
  dependencies.set(key, value);
43
49
  }
44
- return new AwaitDependenciesInitFragment(dependencies);
50
+ return new AwaitDependenciesInitFragment(
51
+ dependencies,
52
+ this.generatorLowered || other.generatorLowered
53
+ );
45
54
  }
46
55
 
47
56
  /**
57
+ * Returns the source code that will be included as initialization code.
48
58
  * @param {GenerateContext} context context
49
59
  * @returns {string | Source | undefined} the source code that will be included as initialization code
50
60
  */
@@ -57,6 +67,10 @@ class AwaitDependenciesInitFragment extends InitFragment {
57
67
  const importVars = [...this.dependencies.keys()];
58
68
  const asyncModuleValues = [...this.dependencies.values()].join(", ");
59
69
 
70
+ // In a generator-lowered module (no `async`/`await`, but generators) the
71
+ // dependency `await` becomes `yield`; the body stays a single scope.
72
+ const suspend = this.generatorLowered ? "yield" : "await";
73
+
60
74
  const templateInput = [
61
75
  `var __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([${asyncModuleValues}]);`
62
76
  ];
@@ -66,7 +80,7 @@ class AwaitDependenciesInitFragment extends InitFragment {
66
80
  !runtimeTemplate.supportsDestructuring()
67
81
  ) {
68
82
  templateInput.push(
69
- "var __webpack_async_dependencies_result__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);"
83
+ `var __webpack_async_dependencies_result__ = (__webpack_async_dependencies__.then ? (${suspend} __webpack_async_dependencies__)() : __webpack_async_dependencies__);`
70
84
  );
71
85
  for (const [index, importVar] of importVars.entries()) {
72
86
  templateInput.push(
@@ -77,7 +91,7 @@ class AwaitDependenciesInitFragment extends InitFragment {
77
91
  const importVarsStr = importVars.join(", ");
78
92
 
79
93
  templateInput.push(
80
- `([${importVarsStr}] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);`
94
+ `([${importVarsStr}] = __webpack_async_dependencies__.then ? (${suspend} __webpack_async_dependencies__)() : __webpack_async_dependencies__);`
81
95
  );
82
96
  }
83
97
 
@@ -14,7 +14,7 @@ const PLUGIN_NAME = "InferAsyncModulesPlugin";
14
14
 
15
15
  class InferAsyncModulesPlugin {
16
16
  /**
17
- * Apply the plugin
17
+ * Applies the plugin by registering its hooks on the compiler.
18
18
  * @param {Compiler} compiler the compiler instance
19
19
  * @returns {void}
20
20
  */
@@ -0,0 +1,26 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ */
4
+
5
+ "use strict";
6
+
7
+ /** @typedef {import("../Module")} Module */
8
+ /** @typedef {import("../ModuleGraph")} ModuleGraph */
9
+ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
10
+
11
+ /**
12
+ * Whether an async module is lowered to a generator: the target has no
13
+ * `async`/`await` but supports generators, and the module contains no
14
+ * top-level `for await…of` (which generators can't express).
15
+ * @param {Module} module module
16
+ * @param {ModuleGraph} moduleGraph module graph
17
+ * @param {RuntimeTemplate} runtimeTemplate runtime template
18
+ * @returns {boolean} true when the module should be emitted as a generator
19
+ */
20
+ const isGeneratorLowered = (module, moduleGraph, runtimeTemplate) =>
21
+ moduleGraph.isAsync(module) &&
22
+ !runtimeTemplate.supportsAsyncFunction() &&
23
+ Boolean(runtimeTemplate.supportsGenerator()) &&
24
+ !(module.buildInfo && module.buildInfo.usesTopLevelAwaitForOf);
25
+
26
+ module.exports = isGeneratorLowered;
@@ -5,9 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const AsyncDependencyToInitialChunkError = require("./AsyncDependencyToInitialChunkError");
9
- const { connectChunkGroupParentAndChild } = require("./GraphHelpers");
10
8
  const ModuleGraphConnection = require("./ModuleGraphConnection");
9
+ const AsyncDependencyToInitialChunkError = require("./errors/AsyncDependencyToInitialChunkError");
11
10
  const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
12
11
 
13
12
  /** @typedef {import("./AsyncDependenciesBlock")} AsyncDependenciesBlock */
@@ -17,6 +16,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
17
16
  /** @typedef {import("./DependenciesBlock")} DependenciesBlock */
18
17
  /** @typedef {import("./Dependency").DependencyLocation} DependencyLocation */
19
18
  /** @typedef {import("./Entrypoint")} Entrypoint */
19
+ /** @typedef {import("./Entrypoint").EntryOptions} EntryOptions */
20
20
  /** @typedef {import("./Module")} Module */
21
21
  /** @typedef {import("./ModuleGraph")} ModuleGraph */
22
22
  /** @typedef {import("./ModuleGraphConnection").ConnectionState} ConnectionState */
@@ -24,6 +24,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
24
24
  /** @typedef {import("./util/runtime").RuntimeSpec} RuntimeSpec */
25
25
 
26
26
  /**
27
+ * Defines the queue item type used by this module.
27
28
  * @typedef {object} QueueItem
28
29
  * @property {number} action
29
30
  * @property {DependenciesBlock} block
@@ -34,6 +35,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
34
35
  */
35
36
 
36
37
  /**
38
+ * Defines the chunk group info type used by this module.
37
39
  * @typedef {object} ChunkGroupInfo
38
40
  * @property {ChunkGroup} chunkGroup the chunk group
39
41
  * @property {RuntimeSpec} runtime the runtimes
@@ -55,6 +57,7 @@ const { getEntryRuntime, mergeRuntime } = require("./util/runtime");
55
57
  */
56
58
 
57
59
  /**
60
+ * Defines the block chunk group connection type used by this module.
58
61
  * @typedef {object} BlockChunkGroupConnection
59
62
  * @property {ChunkGroupInfo} originChunkGroupInfo origin chunk group
60
63
  * @property {ChunkGroup} chunkGroup referenced chunk group
@@ -74,6 +77,7 @@ const ZERO_BIGINT = BigInt(0);
74
77
  const ONE_BIGINT = BigInt(1);
75
78
 
76
79
  /**
80
+ * Checks whether this object is ordinal set in mask.
77
81
  * @param {bigint} mask The mask to test
78
82
  * @param {number} ordinal The ordinal of the bit to test
79
83
  * @returns {boolean} If the ordinal-th bit is set in the mask
@@ -82,6 +86,7 @@ const isOrdinalSetInMask = (mask, ordinal) =>
82
86
  BigInt.asUintN(1, mask >> BigInt(ordinal)) !== ZERO_BIGINT;
83
87
 
84
88
  /**
89
+ * Gets active state of connections.
85
90
  * @param {ModuleGraphConnection[]} connections list of connections
86
91
  * @param {RuntimeSpec} runtime for which runtime
87
92
  * @returns {ConnectionState} connection state
@@ -101,6 +106,7 @@ const getActiveStateOfConnections = (connections, runtime) => {
101
106
  };
102
107
 
103
108
  /**
109
+ * Extract block modules.
104
110
  * @param {Module} module module
105
111
  * @param {ModuleGraph} moduleGraph module graph
106
112
  * @param {RuntimeSpec} runtime runtime
@@ -237,6 +243,45 @@ const extractBlockModules = (module, moduleGraph, runtime, blockModulesMap) => {
237
243
  };
238
244
 
239
245
  /**
246
+ * Derives block modules for another runtime from an already extracted result.
247
+ * Only the merged active state of each connection group can differ per
248
+ * runtime; modules and connection groups are reused. When all states turn
249
+ * out equal, the tuple array is shared instead of copied.
250
+ * @param {Module} module the root module
251
+ * @param {BlockModulesMap} source map containing the extracted result for all blocks of the module
252
+ * @param {RuntimeSpec} runtime runtime to derive for
253
+ * @param {BlockModulesMap} blockModulesMap block modules map to fill
254
+ */
255
+ const deriveBlockModules = (module, source, runtime, blockModulesMap) => {
256
+ /** @type {DependenciesBlock[]} */
257
+ const queue = [module];
258
+ while (queue.length > 0) {
259
+ const block = /** @type {DependenciesBlock} */ (queue.pop());
260
+ const sourceModules =
261
+ /** @type {BlockModulesInFlattenTuples} */
262
+ (source.get(block));
263
+ let target = sourceModules;
264
+ for (let i = 0, len = sourceModules.length; i < len; i += 3) {
265
+ const state = getActiveStateOfConnections(
266
+ /** @type {ModuleGraphConnection[]} */ (sourceModules[i + 2]),
267
+ runtime
268
+ );
269
+ if (target === sourceModules) {
270
+ if (state === sourceModules[i + 1]) continue;
271
+ // states diverged, copy (states before i are identical)
272
+ target = [...sourceModules];
273
+ }
274
+ target[i + 1] = state;
275
+ }
276
+ blockModulesMap.set(block, target);
277
+ for (const b of block.blocks) {
278
+ queue.push(b);
279
+ }
280
+ }
281
+ };
282
+
283
+ /**
284
+ * Processes the provided logger.
240
285
  * @param {Logger} logger a logger
241
286
  * @param {Compilation} compilation the compilation
242
287
  * @param {InputEntrypointsAndModules} inputEntrypointsAndModules chunk groups which are processed with the modules
@@ -261,13 +306,16 @@ const visitModules = (
261
306
  /** @type {Map<RuntimeSpec, BlockModulesMap>} */
262
307
  const blockModulesRuntimeMap = new Map();
263
308
 
264
- /** @type {BlockModulesMap | undefined} */
265
- let blockModulesMap;
309
+ // map containing the first extraction per root module,
310
+ // other runtimes derive their result from it
311
+ /** @type {Map<Module, BlockModulesMap>} */
312
+ const firstBlockModulesMapByModule = new Map();
266
313
 
267
314
  /** @type {Map<Module, number>} */
268
315
  const ordinalByModule = new Map();
269
316
 
270
317
  /**
318
+ * Gets module ordinal.
271
319
  * @param {Module} module The module to look up
272
320
  * @returns {number} The ordinal of the module in masks
273
321
  */
@@ -289,12 +337,13 @@ const visitModules = (
289
337
  }
290
338
 
291
339
  /**
340
+ * Gets block modules.
292
341
  * @param {DependenciesBlock} block block
293
342
  * @param {RuntimeSpec} runtime runtime
294
343
  * @returns {BlockModulesInFlattenTuples | undefined} block modules in flatten tuples
295
344
  */
296
345
  const getBlockModules = (block, runtime) => {
297
- blockModulesMap = blockModulesRuntimeMap.get(runtime);
346
+ let blockModulesMap = blockModulesRuntimeMap.get(runtime);
298
347
  if (blockModulesMap === undefined) {
299
348
  /** @type {BlockModulesMap} */
300
349
  blockModulesMap = new Map();
@@ -312,18 +361,33 @@ const visitModules = (
312
361
  () => {
313
362
  logger.time("visitModules: prepare");
314
363
  const map = new Map();
315
- extractBlockModules(module, moduleGraph, runtime, map);
364
+ const source = firstBlockModulesMapByModule.get(module);
365
+ if (source !== undefined) {
366
+ deriveBlockModules(module, source, runtime, map);
367
+ } else {
368
+ extractBlockModules(module, moduleGraph, runtime, map);
369
+ }
316
370
  logger.timeAggregate("visitModules: prepare");
317
371
  return map;
318
372
  }
319
373
  );
374
+ // allow other runtimes to derive from a memCache hit too
375
+ if (!firstBlockModulesMapByModule.has(module)) {
376
+ firstBlockModulesMapByModule.set(module, map);
377
+ }
320
378
  for (const [block, blockModules] of map) {
321
379
  blockModulesMap.set(block, blockModules);
322
380
  }
323
381
  return map.get(block);
324
382
  }
325
383
  logger.time("visitModules: prepare");
326
- extractBlockModules(module, moduleGraph, runtime, blockModulesMap);
384
+ const source = firstBlockModulesMapByModule.get(module);
385
+ if (source !== undefined) {
386
+ deriveBlockModules(module, source, runtime, blockModulesMap);
387
+ } else {
388
+ extractBlockModules(module, moduleGraph, runtime, blockModulesMap);
389
+ firstBlockModulesMapByModule.set(module, blockModulesMap);
390
+ }
327
391
  blockModules =
328
392
  /** @type {BlockModulesInFlattenTuples} */
329
393
  (blockModulesMap.get(block));
@@ -493,6 +557,7 @@ const visitModules = (
493
557
 
494
558
  // For each async Block in graph
495
559
  /**
560
+ * Processes the provided b.
496
561
  * @param {AsyncDependenciesBlock} b iterating over each Async DepBlock
497
562
  * @returns {void}
498
563
  */
@@ -572,7 +637,27 @@ const visitModules = (
572
637
  }
573
638
  } else {
574
639
  entrypoint = /** @type {Entrypoint} */ (cgi.chunkGroup);
575
- // TODO merge entryOptions
640
+ // Fill in options the existing entrypoint hasn't set yet. We never
641
+ // overwrite: blocks that dedupe to one entrypoint (e.g. several
642
+ // workers pointing at the same module) legitimately carry distinct
643
+ // values such as `runtime`, so the first block to create the
644
+ // entrypoint wins and later ones only contribute missing keys.
645
+ // `name` is excluded: it is the entrypoint's identity, fixed at
646
+ // creation (and used to key namedChunkGroups), so back-filling it
647
+ // from a block that deduped in via its module would leave
648
+ // `entrypoint.name` out of sync and make module codegen
649
+ // order-dependent, which breaks persistent caching.
650
+ const existingOptions = entrypoint.options;
651
+ for (const key_ of Object.keys(entryOptions)) {
652
+ const key =
653
+ /** @type {keyof EntryOptions} */
654
+ (key_);
655
+ if (key === "name") continue;
656
+ if (entryOptions[key] === undefined) continue;
657
+ if (existingOptions[key] !== undefined) continue;
658
+ /** @type {EntryOptions[keyof EntryOptions]} */
659
+ (existingOptions[key]) = entryOptions[key];
660
+ }
576
661
  entrypoint.addOrigin(
577
662
  module,
578
663
  /** @type {DependencyLocation} */ (b.loc),
@@ -699,6 +784,7 @@ const visitModules = (
699
784
  };
700
785
 
701
786
  /**
787
+ * Processes the provided block.
702
788
  * @param {DependenciesBlock} block the block
703
789
  * @returns {void}
704
790
  */
@@ -723,7 +809,6 @@ const visitModules = (
723
809
  continue;
724
810
  }
725
811
 
726
- const refOrdinal = /** @type {number} */ getModuleOrdinal(refModule);
727
812
  const activeState = /** @type {ConnectionState} */ (
728
813
  blockModules[i + 1]
729
814
  );
@@ -734,7 +819,10 @@ const visitModules = (
734
819
  skipConnectionBuffer.push([refModule, connections]);
735
820
  // We skip inactive connections
736
821
  if (activeState === false) continue;
737
- } else if (isOrdinalSetInMask(minAvailableModules, refOrdinal)) {
822
+ } else if (
823
+ // assigning ordinals lazily here keeps masks small
824
+ isOrdinalSetInMask(minAvailableModules, getModuleOrdinal(refModule))
825
+ ) {
738
826
  // already in parent chunks, skip it for now
739
827
  skipBuffer.push(refModule);
740
828
  continue;
@@ -791,6 +879,7 @@ const visitModules = (
791
879
  };
792
880
 
793
881
  /**
882
+ * Process entry block.
794
883
  * @param {DependenciesBlock} block the block
795
884
  * @returns {void}
796
885
  */
@@ -918,6 +1007,7 @@ const visitModules = (
918
1007
  };
919
1008
 
920
1009
  /**
1010
+ * Calculate resulting available modules.
921
1011
  * @param {ChunkGroupInfo} chunkGroupInfo The info object for the chunk group
922
1012
  * @returns {bigint} The mask of available modules after the chunk group
923
1013
  */
@@ -1193,6 +1283,7 @@ const visitModules = (
1193
1283
  let preOrderIndex = 0;
1194
1284
  let postOrderIndex = 0;
1195
1285
  /**
1286
+ * Processes the provided current.
1196
1287
  * @param {DependenciesBlock} current current
1197
1288
  * @param {BlocksWithNestedBlocks} visited visited dependencies blocks
1198
1289
  */
@@ -1240,6 +1331,7 @@ const visitModules = (
1240
1331
  };
1241
1332
 
1242
1333
  /**
1334
+ * Connects chunk groups.
1243
1335
  * @param {Compilation} compilation the compilation
1244
1336
  * @param {BlocksWithNestedBlocks} blocksWithNestedBlocks flag for blocks that have nested blocks
1245
1337
  * @param {BlockConnections} blockConnections connection for blocks
@@ -1276,7 +1368,8 @@ const connectChunkGroups = (
1276
1368
  // connections and modules can only create one version
1277
1369
  // TODO maybe decide this per runtime
1278
1370
  if (
1279
- // TODO is this needed?
1371
+ // Blocks with nested blocks must stay connected — skipping orphans the
1372
+ // nested block's chunk group from this block's chunk group parent.
1280
1373
  !blocksWithNestedBlocks.has(block) &&
1281
1374
  connections.every(({ chunkGroup, originChunkGroupInfo }) =>
1282
1375
  areModulesAvailable(
@@ -1296,10 +1389,9 @@ const connectChunkGroups = (
1296
1389
  chunkGraph.connectBlockAndChunkGroup(block, chunkGroup);
1297
1390
 
1298
1391
  // 4. Connect chunk with parent
1299
- connectChunkGroupParentAndChild(
1300
- originChunkGroupInfo.chunkGroup,
1301
- chunkGroup
1302
- );
1392
+ if (originChunkGroupInfo.chunkGroup.addChild(chunkGroup)) {
1393
+ chunkGroup.addParent(originChunkGroupInfo.chunkGroup);
1394
+ }
1303
1395
  }
1304
1396
  }
1305
1397
  };
@@ -0,0 +1,42 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author sheo13666q @sheo13666q
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const ExternalsPlugin = require("../ExternalsPlugin");
9
+ const { coreModules } = require("../node/nodeBuiltins");
10
+
11
+ /** @typedef {import("../Compiler")} Compiler */
12
+
13
+ // Bun exposes the node.js core modules; externalize them with the `node:`
14
+ // specifier (Bun resolves both forms) like the deno target.
15
+
16
+ // Bun's own built-in modules (`bun`, `bun:sqlite`, ...) are provided by the
17
+ // runtime, never bundled.
18
+ const BUN_BUILTINS = /^bun(?::|$)/;
19
+
20
+ class BunTargetPlugin {
21
+ /**
22
+ * Applies the plugin by registering its hooks on the compiler.
23
+ * @param {Compiler} compiler the compiler instance
24
+ * @returns {void}
25
+ */
26
+ apply(compiler) {
27
+ new ExternalsPlugin(
28
+ (dependency) =>
29
+ dependency.category === "commonjs" ? "node-commonjs" : "module-import",
30
+ ({ request }, callback) => {
31
+ if (!request) return callback();
32
+ if (request.startsWith("node:") || BUN_BUILTINS.test(request)) {
33
+ return callback(null, request);
34
+ }
35
+ if (coreModules.has(request)) return callback(null, `node:${request}`);
36
+ callback();
37
+ }
38
+ ).apply(compiler);
39
+ }
40
+ }
41
+
42
+ module.exports = BunTargetPlugin;
@@ -11,14 +11,16 @@ const PLUGIN_NAME = "AddBuildDependenciesPlugin";
11
11
 
12
12
  class AddBuildDependenciesPlugin {
13
13
  /**
14
+ * Creates an instance of AddBuildDependenciesPlugin.
14
15
  * @param {Iterable<string>} buildDependencies list of build dependencies
15
16
  */
16
17
  constructor(buildDependencies) {
18
+ /** @type {Set<string>} */
17
19
  this.buildDependencies = new Set(buildDependencies);
18
20
  }
19
21
 
20
22
  /**
21
- * Apply the plugin
23
+ * Applies the plugin by registering its hooks on the compiler.
22
24
  * @param {Compiler} compiler the compiler instance
23
25
  * @returns {void}
24
26
  */
@@ -9,18 +9,22 @@
9
9
 
10
10
  class AddManagedPathsPlugin {
11
11
  /**
12
+ * Creates an instance of AddManagedPathsPlugin.
12
13
  * @param {Iterable<string | RegExp>} managedPaths list of managed paths
13
14
  * @param {Iterable<string | RegExp>} immutablePaths list of immutable paths
14
15
  * @param {Iterable<string | RegExp>} unmanagedPaths list of unmanaged paths
15
16
  */
16
17
  constructor(managedPaths, immutablePaths, unmanagedPaths) {
18
+ /** @type {Set<string | RegExp>} */
17
19
  this.managedPaths = new Set(managedPaths);
20
+ /** @type {Set<string | RegExp>} */
18
21
  this.immutablePaths = new Set(immutablePaths);
22
+ /** @type {Set<string | RegExp>} */
19
23
  this.unmanagedPaths = new Set(unmanagedPaths);
20
24
  }
21
25
 
22
26
  /**
23
- * Apply the plugin
27
+ * Applies the plugin by registering its hooks on the compiler.
24
28
  * @param {Compiler} compiler the compiler instance
25
29
  * @returns {void}
26
30
  */
@@ -16,6 +16,7 @@ const PLUGIN_NAME = "IdleFileCachePlugin";
16
16
 
17
17
  class IdleFileCachePlugin {
18
18
  /**
19
+ * Creates an instance of IdleFileCachePlugin.
19
20
  * @param {PackFileCacheStrategy} strategy cache strategy
20
21
  * @param {number} idleTimeout timeout
21
22
  * @param {number} idleTimeoutForInitialStore initial timeout
@@ -27,14 +28,18 @@ class IdleFileCachePlugin {
27
28
  idleTimeoutForInitialStore,
28
29
  idleTimeoutAfterLargeChanges
29
30
  ) {
31
+ /** @type {PackFileCacheStrategy} */
30
32
  this.strategy = strategy;
33
+ /** @type {number} */
31
34
  this.idleTimeout = idleTimeout;
35
+ /** @type {number} */
32
36
  this.idleTimeoutForInitialStore = idleTimeoutForInitialStore;
37
+ /** @type {number} */
33
38
  this.idleTimeoutAfterLargeChanges = idleTimeoutAfterLargeChanges;
34
39
  }
35
40
 
36
41
  /**
37
- * Apply the plugin
42
+ * Applies the plugin by registering its hooks on the compiler.
38
43
  * @param {Compiler} compiler the compiler instance
39
44
  * @returns {void}
40
45
  */
@@ -13,7 +13,7 @@ const Cache = require("../Cache");
13
13
 
14
14
  class MemoryCachePlugin {
15
15
  /**
16
- * Apply the plugin
16
+ * Applies the plugin by registering its hooks on the compiler.
17
17
  * @param {Compiler} compiler the compiler instance
18
18
  * @returns {void}
19
19
  */