@depup/webpack 5.109.2-depup.0 → 5.110.3-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 (647) hide show
  1. package/README.md +5 -5
  2. package/changes.json +7 -7
  3. package/lib/APIPlugin.js +123 -17
  4. package/lib/AsyncDependenciesBlock.js +10 -7
  5. package/lib/AutomaticPrefetchPlugin.js +1 -1
  6. package/lib/BannerPlugin.js +10 -6
  7. package/lib/CacheFacade.js +6 -6
  8. package/lib/Chunk.js +14 -11
  9. package/lib/ChunkGraph.js +46 -35
  10. package/lib/ChunkGroup.js +7 -7
  11. package/lib/ChunkTemplate.js +35 -44
  12. package/lib/CircularModulesPlugin.js +205 -28
  13. package/lib/CleanPlugin.js +4 -7
  14. package/lib/CodeGenerationResults.js +11 -8
  15. package/lib/CompatibilityPlugin.js +7 -7
  16. package/lib/Compilation.js +688 -409
  17. package/lib/Compiler.js +53 -38
  18. package/lib/ConcatenationScope.js +107 -8
  19. package/lib/ConditionalInitFragment.js +3 -3
  20. package/lib/ConstPlugin.js +13 -11
  21. package/lib/ContextExclusionPlugin.js +1 -1
  22. package/lib/ContextModule.js +146 -54
  23. package/lib/ContextModuleFactory.js +46 -14
  24. package/lib/ContextReplacementPlugin.js +12 -14
  25. package/lib/DefinePlugin.js +121 -37
  26. package/lib/DependenciesBlock.js +9 -6
  27. package/lib/Dependency.js +36 -16
  28. package/lib/DependencyTemplate.js +11 -12
  29. package/lib/DependencyTemplates.js +3 -3
  30. package/lib/DotenvPlugin.js +91 -26
  31. package/lib/DynamicEntryPlugin.js +8 -4
  32. package/lib/EntryOptionPlugin.js +8 -4
  33. package/lib/EntryPlugin.js +2 -2
  34. package/lib/Entrypoint.js +6 -2
  35. package/lib/EnvironmentPlugin.js +2 -2
  36. package/lib/EvalDevToolModulePlugin.js +8 -4
  37. package/lib/EvalSourceMapDevToolPlugin.js +15 -8
  38. package/lib/ExportsInfo.js +111 -14
  39. package/lib/ExportsInfoApiPlugin.js +2 -4
  40. package/lib/ExternalModule.js +232 -77
  41. package/lib/ExternalModuleFactoryPlugin.js +97 -38
  42. package/lib/ExternalsPlugin.js +10 -6
  43. package/lib/FileSystemInfo.js +44 -70
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -3
  45. package/lib/FlagDependencyExportsPlugin.js +76 -19
  46. package/lib/FlagDependencyUsagePlugin.js +40 -49
  47. package/lib/FlagEntryExportAsUsedPlugin.js +1 -1
  48. package/lib/Generator.js +36 -15
  49. package/lib/HotModuleReplacementPlugin.js +16 -44
  50. package/lib/IgnorePlugin.js +8 -4
  51. package/lib/IgnoreWarningsPlugin.js +2 -2
  52. package/lib/InitFragment.js +8 -4
  53. package/lib/JavascriptMetaInfoPlugin.js +35 -4
  54. package/lib/LazyBarrel.js +3 -4
  55. package/lib/LibraryTemplatePlugin.js +10 -6
  56. package/lib/LoaderOptionsPlugin.js +7 -3
  57. package/lib/LoaderTargetPlugin.js +1 -1
  58. package/lib/MainTemplate.js +49 -42
  59. package/lib/ManifestPlugin.js +12 -11
  60. package/lib/Module.js +62 -33
  61. package/lib/ModuleFactory.js +3 -3
  62. package/lib/ModuleFilenameHelpers.js +9 -4
  63. package/lib/ModuleGraph.js +195 -21
  64. package/lib/ModuleGraphConnection.js +6 -13
  65. package/lib/ModuleInfoHeaderPlugin.js +8 -10
  66. package/lib/ModuleTemplate.js +62 -63
  67. package/lib/MultiCompiler.js +130 -64
  68. package/lib/MultiStats.js +40 -9
  69. package/lib/MultiWatching.js +3 -3
  70. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  71. package/lib/NodeStuffPlugin.js +29 -19
  72. package/lib/NormalModule.js +152 -103
  73. package/lib/NormalModuleFactory.js +555 -110
  74. package/lib/NormalModuleReplacementPlugin.js +5 -8
  75. package/lib/NullFactory.js +6 -2
  76. package/lib/OptionsApply.js +7 -3
  77. package/lib/Parser.js +7 -3
  78. package/lib/PlatformPlugin.js +2 -2
  79. package/lib/PrefetchPlugin.js +1 -1
  80. package/lib/ProgressPlugin.js +16 -13
  81. package/lib/ProvidePlugin.js +3 -5
  82. package/lib/RawModule.js +25 -17
  83. package/lib/RecordIdsPlugin.js +3 -3
  84. package/lib/RequestShortener.js +1 -1
  85. package/lib/ResolverFactory.js +2 -2
  86. package/lib/RuntimeGlobals.js +22 -10
  87. package/lib/RuntimeModule.js +29 -19
  88. package/lib/RuntimePlugin.js +335 -169
  89. package/lib/RuntimeTemplate.js +2761 -316
  90. package/lib/SelfModuleFactory.js +7 -3
  91. package/lib/SourceMapDevToolModuleOptionsPlugin.js +6 -2
  92. package/lib/SourceMapDevToolPlugin.js +30 -20
  93. package/lib/Stats.js +3 -4
  94. package/lib/Template.js +32 -22
  95. package/lib/TemplatedPathPlugin.js +96 -14
  96. package/lib/UseStrictPlugin.js +4 -6
  97. package/lib/WarnCaseSensitiveModulesPlugin.js +4 -4
  98. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  99. package/lib/WarnNoModeSetPlugin.js +1 -1
  100. package/lib/WatchIgnorePlugin.js +8 -6
  101. package/lib/Watching.js +8 -8
  102. package/lib/WebpackIsIncludedPlugin.js +2 -4
  103. package/lib/WebpackOptionsApply.js +308 -18
  104. package/lib/WebpackOptionsDefaulter.js +6 -2
  105. package/lib/asset/AssetBytesGenerator.js +12 -10
  106. package/lib/asset/AssetBytesParser.js +2 -4
  107. package/lib/asset/AssetGenerator.js +188 -95
  108. package/lib/asset/AssetModule.js +7 -3
  109. package/lib/asset/AssetModulesPlugin.js +110 -38
  110. package/lib/asset/AssetParser.js +9 -7
  111. package/lib/asset/AssetSourceGenerator.js +60 -13
  112. package/lib/asset/AssetSourceParser.js +2 -4
  113. package/lib/asset/RawDataUrlModule.js +24 -16
  114. package/lib/asset/WebManifestGenerator.js +8 -10
  115. package/lib/asset/WebManifestParser.js +24 -10
  116. package/lib/async-modules/AsyncModuleHelpers.js +12 -6
  117. package/lib/async-modules/AwaitDependenciesInitFragment.js +2 -2
  118. package/lib/async-modules/InferAsyncModulesPlugin.js +2 -2
  119. package/lib/async-modules/isGeneratorLowered.js +4 -4
  120. package/lib/buildChunkGraph.js +36 -27
  121. package/lib/bun/BunTargetPlugin.js +1 -1
  122. package/lib/cache/AddBuildDependenciesPlugin.js +1 -1
  123. package/lib/cache/AddManagedPathsPlugin.js +1 -1
  124. package/lib/cache/IdleFileCachePlugin.js +2 -2
  125. package/lib/cache/MemoryCachePlugin.js +18 -10
  126. package/lib/cache/MemoryWithGcCachePlugin.js +34 -22
  127. package/lib/cache/PackFileCacheStrategy.js +30 -23
  128. package/lib/cache/ResolverCachePlugin.js +38 -18
  129. package/lib/cache/getLazyHashedEtag.js +1 -2
  130. package/lib/cache/mergeEtags.js +1 -1
  131. package/lib/cli.js +1 -3
  132. package/lib/config/browserslistTargetHandler.js +41 -5
  133. package/lib/config/defaults.js +270 -78
  134. package/lib/config/defineConfig.js +10 -2
  135. package/lib/config/getClaimedAssetTypes.js +65 -0
  136. package/lib/config/normalization.js +46 -16
  137. package/lib/config/target.js +46 -3
  138. package/lib/container/ContainerEntryDependency.js +1 -1
  139. package/lib/container/ContainerEntryModule.js +24 -15
  140. package/lib/container/ContainerEntryModuleFactory.js +7 -3
  141. package/lib/container/ContainerPlugin.js +9 -10
  142. package/lib/container/ContainerReferencePlugin.js +6 -2
  143. package/lib/container/FallbackDependency.js +1 -1
  144. package/lib/container/FallbackModule.js +24 -17
  145. package/lib/container/FallbackModuleFactory.js +7 -3
  146. package/lib/container/HoistContainerReferencesPlugin.js +6 -11
  147. package/lib/container/ModuleFederationPlugin.js +7 -24
  148. package/lib/container/RemoteModule.js +27 -19
  149. package/lib/container/RemoteRuntimeModule.js +10 -8
  150. package/lib/container/moduleFederationHooks.js +32 -0
  151. package/lib/css/CssGenerator.js +171 -43
  152. package/lib/css/CssInjectStyleRuntimeModule.js +7 -5
  153. package/lib/css/CssLoadingRuntimeModule.js +84 -32
  154. package/lib/css/CssModule.js +10 -7
  155. package/lib/css/CssModulesPlugin.js +172 -100
  156. package/lib/css/CssParser.js +1113 -568
  157. package/lib/css/CssServerStylesRuntimeModule.js +54 -0
  158. package/lib/css/cssMinify.js +168 -0
  159. package/lib/css/data.js +5334 -0
  160. package/lib/css/syntax.js +9647 -232
  161. package/lib/debug/ProfilingPlugin.js +14 -9
  162. package/lib/deno/DenoTargetPlugin.js +1 -1
  163. package/lib/dependencies/AMDDefineDependency.js +112 -87
  164. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +30 -17
  165. package/lib/dependencies/AMDPlugin.js +9 -7
  166. package/lib/dependencies/AMDRequireArrayDependency.js +5 -5
  167. package/lib/dependencies/AMDRequireContextDependency.js +2 -2
  168. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -1
  169. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +25 -14
  170. package/lib/dependencies/AMDRequireDependency.js +8 -7
  171. package/lib/dependencies/AMDRequireItemDependency.js +1 -1
  172. package/lib/dependencies/AMDRuntimeModules.js +21 -1
  173. package/lib/dependencies/BuildTimeConstDependency.js +102 -0
  174. package/lib/dependencies/CachedConstDependency.js +11 -8
  175. package/lib/dependencies/CommonJsDependencyHelpers.js +67 -46
  176. package/lib/dependencies/CommonJsExportRequireDependency.js +121 -45
  177. package/lib/dependencies/CommonJsExportsDependency.js +53 -49
  178. package/lib/dependencies/CommonJsExportsParserPlugin.js +207 -25
  179. package/lib/dependencies/CommonJsFullRequireDependency.js +119 -34
  180. package/lib/dependencies/CommonJsImportsParserPlugin.js +100 -50
  181. package/lib/dependencies/CommonJsObjectExportDependency.js +188 -0
  182. package/lib/dependencies/CommonJsPlugin.js +35 -6
  183. package/lib/dependencies/CommonJsRequireContextDependency.js +5 -6
  184. package/lib/dependencies/CommonJsRequireDependency.js +170 -27
  185. package/lib/dependencies/CommonJsSelfReferenceDependency.js +63 -38
  186. package/lib/dependencies/ConstDependency.js +8 -9
  187. package/lib/dependencies/ContextDependency.js +12 -8
  188. package/lib/dependencies/ContextDependencyHelpers.js +14 -9
  189. package/lib/dependencies/ContextDependencyTemplateAsId.js +4 -4
  190. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +24 -11
  191. package/lib/dependencies/ContextElementDependency.js +31 -12
  192. package/lib/dependencies/CreateRequireParserPlugin.js +12 -7
  193. package/lib/dependencies/CreateScriptUrlDependency.js +4 -4
  194. package/lib/dependencies/CssIcssExportDependency.js +56 -28
  195. package/lib/dependencies/CssIcssImportDependency.js +17 -13
  196. package/lib/dependencies/CssIcssSymbolDependency.js +9 -10
  197. package/lib/dependencies/CssImportDependency.js +18 -9
  198. package/lib/dependencies/CssUrlDependency.js +17 -13
  199. package/lib/dependencies/DllEntryDependency.js +1 -1
  200. package/lib/dependencies/DynamicExports.js +2 -2
  201. package/lib/dependencies/ExportBindingInitFragment.js +36 -9
  202. package/lib/dependencies/ExportsInfoDependency.js +7 -8
  203. package/lib/dependencies/ExternalModuleDependency.js +9 -5
  204. package/lib/dependencies/ExternalModuleInitFragment.js +2 -2
  205. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +8 -5
  206. package/lib/dependencies/HarmonyAcceptDependency.js +5 -5
  207. package/lib/dependencies/HarmonyCompatibilityDependency.js +52 -17
  208. package/lib/dependencies/HarmonyDetectionParserPlugin.js +11 -7
  209. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +23 -14
  210. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +80 -12
  211. package/lib/dependencies/HarmonyExportExpressionDependency.js +23 -18
  212. package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -7
  213. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +286 -80
  214. package/lib/dependencies/HarmonyExportInitFragment.js +18 -6
  215. package/lib/dependencies/HarmonyExportSpecifierDependency.js +51 -14
  216. package/lib/dependencies/HarmonyExports.js +7 -4
  217. package/lib/dependencies/HarmonyImportDependency.js +121 -60
  218. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +124 -38
  219. package/lib/dependencies/HarmonyImportGuard.js +20 -30
  220. package/lib/dependencies/HarmonyImportSideEffectDependency.js +152 -9
  221. package/lib/dependencies/HarmonyImportSpecifierDependency.js +97 -49
  222. package/lib/dependencies/HarmonyModulesPlugin.js +7 -3
  223. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -3
  224. package/lib/dependencies/HtmlEntryDependency.js +49 -31
  225. package/lib/dependencies/HtmlInlineHtmlDependency.js +7 -8
  226. package/lib/dependencies/HtmlInlineScriptDependency.js +11 -8
  227. package/lib/dependencies/HtmlInlineStyleDependency.js +7 -10
  228. package/lib/dependencies/HtmlSourceDependency.js +22 -14
  229. package/lib/dependencies/ImportContextDependency.js +45 -5
  230. package/lib/dependencies/ImportDependency.js +33 -50
  231. package/lib/dependencies/ImportEagerDependency.js +6 -9
  232. package/lib/dependencies/ImportMetaContextDependency.js +2 -2
  233. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +14 -13
  234. package/lib/dependencies/ImportMetaContextPlugin.js +7 -3
  235. package/lib/dependencies/ImportMetaGlobDependency.js +2 -2
  236. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +2 -3
  237. package/lib/dependencies/ImportMetaGlobHelpers.js +19 -22
  238. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -1
  239. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -1
  240. package/lib/dependencies/ImportMetaPlugin.js +154 -71
  241. package/lib/dependencies/ImportMetaResolveDependency.js +3 -4
  242. package/lib/dependencies/ImportParserPlugin.js +73 -49
  243. package/lib/dependencies/ImportPhase.js +12 -5
  244. package/lib/dependencies/ImportPlugin.js +7 -3
  245. package/lib/dependencies/ImportWeakDependency.js +6 -9
  246. package/lib/dependencies/JsonExportsDependency.js +11 -7
  247. package/lib/dependencies/LoaderDependency.js +2 -2
  248. package/lib/dependencies/LoaderImportDependency.js +2 -2
  249. package/lib/dependencies/LoaderPlugin.js +11 -7
  250. package/lib/dependencies/LocalModuleDependency.js +5 -5
  251. package/lib/dependencies/LocalModulesHelpers.js +1 -1
  252. package/lib/dependencies/ModuleDecoratorDependency.js +6 -7
  253. package/lib/dependencies/ModuleDependency.js +9 -6
  254. package/lib/dependencies/ModuleDependencyTemplateAsId.js +4 -4
  255. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +3 -3
  256. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -1
  257. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -1
  258. package/lib/dependencies/ModuleInitFragmentDependency.js +24 -10
  259. package/lib/dependencies/NullDependency.js +3 -3
  260. package/lib/dependencies/ProvidedDependency.js +14 -10
  261. package/lib/dependencies/PureExpressionDependency.js +9 -10
  262. package/lib/dependencies/RequireContextDependency.js +2 -2
  263. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -4
  264. package/lib/dependencies/RequireContextPlugin.js +8 -4
  265. package/lib/dependencies/RequireEnsureDependenciesBlock.js +2 -2
  266. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +5 -8
  267. package/lib/dependencies/RequireEnsureDependency.js +8 -7
  268. package/lib/dependencies/RequireEnsurePlugin.js +7 -3
  269. package/lib/dependencies/RequireHeaderDependency.js +50 -12
  270. package/lib/dependencies/RequireIncludeDependency.js +6 -6
  271. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +2 -3
  272. package/lib/dependencies/RequireIncludePlugin.js +7 -3
  273. package/lib/dependencies/RequireJsStuffPlugin.js +7 -3
  274. package/lib/dependencies/RequireResolveContextDependency.js +2 -2
  275. package/lib/dependencies/RequireResolveDependency.js +4 -4
  276. package/lib/dependencies/RequireResolveHeaderDependency.js +4 -4
  277. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -6
  278. package/lib/dependencies/StaticExportsDependency.js +2 -2
  279. package/lib/dependencies/SystemPlugin.js +10 -6
  280. package/lib/dependencies/SystemRuntimeModule.js +10 -0
  281. package/lib/dependencies/TopLevelAwaitDependency.js +11 -7
  282. package/lib/dependencies/URLContextDependency.js +2 -2
  283. package/lib/dependencies/URLDependency.js +110 -64
  284. package/lib/dependencies/URLPlugin.js +7 -3
  285. package/lib/dependencies/UnsupportedDependency.js +4 -4
  286. package/lib/dependencies/WebAssemblyExportImportedDependency.js +3 -4
  287. package/lib/dependencies/WebAssemblyImportDependency.js +5 -5
  288. package/lib/dependencies/WebpackIsIncludedDependency.js +6 -6
  289. package/lib/dependencies/WorkerAndWorkletPlugin.js +47 -28
  290. package/lib/dependencies/WorkerDependency.js +22 -22
  291. package/lib/dependencies/WorkletDependency.js +18 -21
  292. package/lib/dependencies/getFunctionExpression.js +8 -4
  293. package/lib/dependencies/importOptionsCheck.js +47 -0
  294. package/lib/dependencies/processExportInfo.js +5 -5
  295. package/lib/dll/DelegatedModule.js +34 -22
  296. package/lib/dll/DelegatedModuleFactoryPlugin.js +15 -7
  297. package/lib/dll/DelegatedPlugin.js +2 -2
  298. package/lib/dll/DllEntryPlugin.js +2 -2
  299. package/lib/dll/DllModule.js +22 -15
  300. package/lib/dll/DllModuleFactory.js +7 -3
  301. package/lib/dll/DllPlugin.js +7 -5
  302. package/lib/dll/DllReferencePlugin.js +10 -7
  303. package/lib/dll/LibManifestPlugin.js +5 -5
  304. package/lib/electron/ElectronTargetPlugin.js +53 -49
  305. package/lib/errors/AsyncChunkWaterfallWarning.js +36 -0
  306. package/lib/errors/AsyncDependencyToInitialChunkError.js +2 -2
  307. package/lib/errors/BroadContextsWarning.js +43 -0
  308. package/lib/errors/BuildCycleError.js +1 -1
  309. package/lib/errors/CacheEffectivenessWarning.js +55 -0
  310. package/lib/errors/ChunkRenderError.js +1 -1
  311. package/lib/errors/CircularDependenciesWarning.js +38 -0
  312. package/lib/errors/CodeGenerationError.js +1 -1
  313. package/lib/errors/CommentCompilationWarning.js +1 -1
  314. package/lib/errors/ConflictingResourceHintsWarning.js +35 -0
  315. package/lib/errors/DotenvFileError.js +29 -0
  316. package/lib/errors/DuplicateModulesWarning.js +45 -0
  317. package/lib/errors/DynamicExportsWarning.js +30 -0
  318. package/lib/errors/EmbeddedSourceMapsWarning.js +25 -0
  319. package/lib/errors/EntrypointOverlapWarning.js +45 -0
  320. package/lib/errors/EnvironmentNotSupportAsyncWarning.js +2 -2
  321. package/lib/errors/EvalUsageWarning.js +28 -0
  322. package/lib/errors/HookWebpackError.js +5 -5
  323. package/lib/errors/HotspotsWarning.js +57 -0
  324. package/lib/errors/IgnoreErrorModuleFactory.js +7 -3
  325. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  326. package/lib/errors/InlinedAssetsWarning.js +36 -0
  327. package/lib/errors/InvalidDependenciesModuleWarning.js +1 -1
  328. package/lib/errors/LargeModulesWarning.js +45 -0
  329. package/lib/errors/LegacyJavascriptWarning.js +48 -0
  330. package/lib/errors/MissingSideEffectsWarning.js +36 -0
  331. package/lib/errors/MixedExportsWarning.js +41 -0
  332. package/lib/errors/ModuleDependencyError.js +13 -16
  333. package/lib/errors/ModuleDependencyWarning.js +5 -15
  334. package/lib/errors/ModuleHashingError.js +1 -1
  335. package/lib/errors/ModuleNotFoundError.js +2 -2
  336. package/lib/errors/ModuleParseError.js +1 -2
  337. package/lib/errors/ModuleRestoreError.js +1 -1
  338. package/lib/errors/ModuleStoreError.js +1 -1
  339. package/lib/errors/NodeStuffInWebError.js +1 -1
  340. package/lib/errors/OsDependentRuleWarning.js +31 -0
  341. package/lib/errors/PureAnnotationsWarning.js +36 -0
  342. package/lib/errors/RedundantDynamicImportWarning.js +31 -0
  343. package/lib/errors/ScopeHoistingBailoutsWarning.js +41 -0
  344. package/lib/errors/SplitChunksCappedWarning.js +41 -0
  345. package/lib/errors/TinyChunksWarning.js +40 -0
  346. package/lib/errors/TopLevelThisWarning.js +34 -0
  347. package/lib/errors/UnsplitVendorsWarning.js +42 -0
  348. package/lib/errors/UnsupportedFeatureWarning.js +1 -1
  349. package/lib/errors/UnusedAliasesWarning.js +29 -0
  350. package/lib/errors/UnusedDefinesWarning.js +29 -0
  351. package/lib/errors/UnusedExternalsWarning.js +29 -0
  352. package/lib/errors/UnusedReexportsWarning.js +42 -0
  353. package/lib/errors/UnusedRuleWarning.js +29 -0
  354. package/lib/errors/WebpackError.js +9 -5
  355. package/lib/errors/deriveStackFromNestedError.js +90 -0
  356. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  357. package/lib/esm/ModuleChunkFormatPlugin.js +37 -19
  358. package/lib/esm/ModuleChunkLoadingPlugin.js +86 -51
  359. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +161 -62
  360. package/lib/hmr/HotModuleReplacement.runtime.js +24 -5
  361. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
  362. package/lib/hmr/LazyCompilationPlugin.js +45 -24
  363. package/lib/hmr/lazyCompilationBackend.js +9 -6
  364. package/lib/hmr/parserHooks.js +56 -0
  365. package/lib/html/HtmlGenerator.js +277 -77
  366. package/lib/html/HtmlModule.js +7 -3
  367. package/lib/html/HtmlModulesPlugin.js +366 -200
  368. package/lib/html/HtmlParser.js +31 -86
  369. package/lib/html/data.js +1928 -0
  370. package/lib/html/htmlMinify.js +288 -0
  371. package/lib/html/syntax.js +6034 -1384
  372. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -3
  373. package/lib/ids/DeterministicChunkIdsPlugin.js +1 -1
  374. package/lib/ids/DeterministicModuleIdsPlugin.js +2 -2
  375. package/lib/ids/HashedModuleIdsPlugin.js +6 -2
  376. package/lib/ids/IdHelpers.js +7 -8
  377. package/lib/ids/NamedChunkIdsPlugin.js +1 -1
  378. package/lib/ids/NamedModuleIdsPlugin.js +1 -1
  379. package/lib/ids/NaturalChunkIdsPlugin.js +2 -2
  380. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  381. package/lib/ids/OccurrenceChunkIdsPlugin.js +7 -3
  382. package/lib/ids/OccurrenceModuleIdsPlugin.js +7 -3
  383. package/lib/ids/SyncModuleIdsPlugin.js +4 -4
  384. package/lib/index.js +10 -0
  385. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +3 -3
  386. package/lib/javascript/BasicEvaluatedExpression.js +18 -14
  387. package/lib/javascript/ChunkFormatHelpers.js +6 -6
  388. package/lib/javascript/ChunkHelpers.js +1 -1
  389. package/lib/javascript/CommonJsChunkFormatPlugin.js +11 -5
  390. package/lib/javascript/EnableChunkLoadingPlugin.js +2 -2
  391. package/lib/javascript/JavascriptGenerator.js +65 -165
  392. package/lib/javascript/JavascriptModule.js +9 -3
  393. package/lib/javascript/JavascriptModulesPlugin.js +103 -123
  394. package/lib/javascript/JavascriptParser.js +242 -99
  395. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  396. package/lib/javascript/ScopeAnalyzer.js +1094 -0
  397. package/lib/javascript/StartupHelpers.js +55 -9
  398. package/lib/javascript/syntax.js +2678 -232
  399. package/lib/json/JsonData.js +8 -4
  400. package/lib/json/JsonGenerator.js +38 -16
  401. package/lib/json/JsonModule.js +7 -3
  402. package/lib/json/JsonModulesPlugin.js +1 -1
  403. package/lib/json/JsonParser.js +5 -6
  404. package/lib/library/AbstractLibraryPlugin.js +20 -14
  405. package/lib/library/AmdLibraryPlugin.js +11 -7
  406. package/lib/library/AssignLibraryPlugin.js +19 -13
  407. package/lib/library/EnableLibraryPlugin.js +2 -2
  408. package/lib/library/ExportPropertyLibraryPlugin.js +15 -8
  409. package/lib/library/JsonpLibraryPlugin.js +11 -7
  410. package/lib/library/ModuleLibraryPlugin.js +256 -64
  411. package/lib/library/SystemLibraryPlugin.js +12 -8
  412. package/lib/library/UmdLibraryPlugin.js +62 -25
  413. package/lib/loaders/LoaderRunner.js +47 -6
  414. package/lib/loaders/loadLoader.js +8 -4
  415. package/lib/logging/createConsoleLogger.js +7 -4
  416. package/lib/node/CommonJsChunkLoadingPlugin.js +36 -22
  417. package/lib/node/NodeEnvironmentPlugin.js +17 -3
  418. package/lib/node/NodeSourcePlugin.js +1 -1
  419. package/lib/node/NodeTargetPlugin.js +4 -3
  420. package/lib/node/NodeTemplatePlugin.js +1 -1
  421. package/lib/node/NodeWatchFileSystem.js +70 -9
  422. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +35 -38
  423. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +65 -19
  424. package/lib/node/ReadFileCompileWasmPlugin.js +28 -16
  425. package/lib/node/RequireChunkLoadingRuntimeModule.js +35 -38
  426. package/lib/node/nodeConsole.js +7 -3
  427. package/lib/optimize/AggressiveMergingPlugin.js +2 -2
  428. package/lib/optimize/AggressiveSplittingPlugin.js +9 -6
  429. package/lib/optimize/ConcatenatedModule.js +1030 -476
  430. package/lib/optimize/ConstExportsPlugin.js +16 -7
  431. package/lib/optimize/EnsureChunkConditionsPlugin.js +3 -3
  432. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -4
  433. package/lib/optimize/InlineExports.js +130 -5
  434. package/lib/optimize/InnerGraph.js +28 -12
  435. package/lib/optimize/InnerGraphPlugin.js +23 -18
  436. package/lib/optimize/LimitChunkCountPlugin.js +7 -3
  437. package/lib/optimize/MangleExportsPlugin.js +7 -8
  438. package/lib/optimize/MergeDuplicateChunksPlugin.js +7 -3
  439. package/lib/optimize/MinChunkSizePlugin.js +7 -3
  440. package/lib/optimize/ModuleConcatenationPlugin.js +51 -35
  441. package/lib/optimize/RealContentHashPlugin.js +121 -41
  442. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -2
  443. package/lib/optimize/RemoveParentModulesPlugin.js +4 -4
  444. package/lib/optimize/RuntimeChunkPlugin.js +2 -2
  445. package/lib/optimize/SideEffectsFlagPlugin.js +262 -39
  446. package/lib/optimize/SplitChunksPlugin.js +86 -24
  447. package/lib/performance/AssetsOverSizeLimitWarning.js +10 -2
  448. package/lib/performance/AsyncChunkWaterfallsPlugin.js +136 -0
  449. package/lib/performance/BroadContextsPlugin.js +142 -0
  450. package/lib/performance/CacheEffectivenessPlugin.js +125 -0
  451. package/lib/performance/ConflictingResourceHintsPlugin.js +99 -0
  452. package/lib/performance/DuplicateModulesPlugin.js +93 -0
  453. package/lib/performance/DuplicatePackagesPlugin.js +119 -0
  454. package/lib/performance/DuplicatePackagesWarning.js +84 -0
  455. package/lib/performance/DynamicExportsPlugin.js +120 -0
  456. package/lib/performance/EmbeddedSourceMapsPlugin.js +71 -0
  457. package/lib/performance/EntrypointOverlapPlugin.js +122 -0
  458. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -1
  459. package/lib/performance/EvalUsagePlugin.js +115 -0
  460. package/lib/performance/HotspotsPlugin.js +296 -0
  461. package/lib/performance/InlinedAssetsPlugin.js +99 -0
  462. package/lib/performance/LargeModulesPlugin.js +126 -0
  463. package/lib/performance/LegacyJavascriptPlugin.js +139 -0
  464. package/lib/performance/MissingSideEffectsPlugin.js +138 -0
  465. package/lib/performance/MixedExportsPlugin.js +136 -0
  466. package/lib/performance/OsDependentRuleWarningPlugin.js +178 -0
  467. package/lib/performance/PureAnnotationsPlugin.js +219 -0
  468. package/lib/performance/RedundantDynamicImportsPlugin.js +225 -0
  469. package/lib/performance/RuntimeInLargeChunkWarning.js +27 -0
  470. package/lib/performance/ScopeHoistingBailoutsPlugin.js +164 -0
  471. package/lib/performance/SizeLimitsPlugin.js +139 -7
  472. package/lib/performance/SplitChunksCappedPlugin.js +99 -0
  473. package/lib/performance/TinyChunksPlugin.js +128 -0
  474. package/lib/performance/TopLevelThisPlugin.js +208 -0
  475. package/lib/performance/UnsplitVendorsPlugin.js +112 -0
  476. package/lib/performance/UnusedAliasesPlugin.js +253 -0
  477. package/lib/performance/UnusedDefinesPlugin.js +87 -0
  478. package/lib/performance/UnusedExternalsPlugin.js +110 -0
  479. package/lib/performance/UnusedReexportsPlugin.js +159 -0
  480. package/lib/performance/UnusedRuleWarningPlugin.js +105 -0
  481. package/lib/performance/getModuleSize.js +22 -0
  482. package/lib/performance/getSourceModules.js +22 -0
  483. package/lib/performance/hasOnlyUnusedExports.js +40 -0
  484. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +24 -10
  485. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +63 -46
  486. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +2 -3
  487. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +2 -2
  488. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +2 -2
  489. package/lib/prefetch/ResourceHintPlugin.js +295 -79
  490. package/lib/prefetch/ResourceHintRuntimeModule.js +1 -21
  491. package/lib/prefetch/StartupAssetHintRuntimeModule.js +10 -133
  492. package/lib/prefetch/parseResourceHintOptions.js +31 -4
  493. package/lib/rules/BasicEffectRulePlugin.js +2 -2
  494. package/lib/rules/BasicMatcherRulePlugin.js +8 -4
  495. package/lib/rules/GlobMatcherRulePlugin.js +68 -0
  496. package/lib/rules/ObjectMatcherRulePlugin.js +12 -5
  497. package/lib/rules/RuleSetCompiler.js +146 -12
  498. package/lib/rules/UseEffectRulePlugin.js +18 -11
  499. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +11 -1
  500. package/lib/runtime/AsyncModuleRuntimeModule.js +6 -2
  501. package/lib/runtime/AutoPublicPathRuntimeModule.js +15 -20
  502. package/lib/runtime/BaseUriRuntimeModule.js +33 -7
  503. package/lib/runtime/ChunkNameRuntimeModule.js +10 -0
  504. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +11 -1
  505. package/lib/runtime/CompatRuntimeModule.js +5 -3
  506. package/lib/runtime/ConcatenationWrapRuntimeModule.js +90 -0
  507. package/lib/runtime/ConstructRequireRuntimeModule.js +52 -0
  508. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +8 -6
  509. package/lib/runtime/CreateScriptRuntimeModule.js +11 -1
  510. package/lib/runtime/CreateScriptUrlRuntimeModule.js +11 -1
  511. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +56 -38
  512. package/lib/runtime/EnsureChunkRuntimeModule.js +18 -2
  513. package/lib/runtime/GetChunkFilenameRuntimeModule.js +62 -37
  514. package/lib/runtime/GetFullHashRuntimeModule.js +12 -2
  515. package/lib/runtime/GetMainFilenameRuntimeModule.js +12 -2
  516. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -2
  517. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +16 -3
  518. package/lib/runtime/GlobalRuntimeModule.js +18 -0
  519. package/lib/runtime/HasOwnPropertyRuntimeModule.js +12 -2
  520. package/lib/runtime/LoadScriptRuntimeModule.js +2 -2
  521. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +34 -7
  522. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +22 -6
  523. package/lib/runtime/NonceRuntimeModule.js +10 -0
  524. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -3
  525. package/lib/runtime/PublicPathRuntimeModule.js +12 -2
  526. package/lib/runtime/RelativeUrlRuntimeModule.js +11 -1
  527. package/lib/runtime/RuntimeIdRuntimeModule.js +12 -2
  528. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +11 -1
  529. package/lib/runtime/StartupChunkDependenciesPlugin.js +18 -9
  530. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +3 -3
  531. package/lib/runtime/StartupEntrypointRuntimeModule.js +21 -4
  532. package/lib/runtime/SystemContextRuntimeModule.js +10 -0
  533. package/lib/runtime/ToBinaryRuntimeModule.js +1 -1
  534. package/lib/runtime/WorkerRuntimeModule.js +11 -1
  535. package/lib/runtime/baseUri.js +63 -0
  536. package/lib/schemes/DataUriPlugin.js +1 -1
  537. package/lib/schemes/FileUriPlugin.js +1 -1
  538. package/lib/schemes/HttpUriPlugin.js +46 -20
  539. package/lib/schemes/VirtualUrlPlugin.js +13 -7
  540. package/lib/serialization/AggregateErrorSerializer.js +1 -1
  541. package/lib/serialization/BinaryMiddleware.js +4 -4
  542. package/lib/serialization/ErrorObjectSerializer.js +1 -1
  543. package/lib/serialization/FileMiddleware.js +22 -9
  544. package/lib/serialization/ObjectMiddleware.js +139 -114
  545. package/lib/serialization/PlainObjectSerializer.js +19 -16
  546. package/lib/sharing/ConsumeSharedModule.js +30 -21
  547. package/lib/sharing/ConsumeSharedPlugin.js +18 -10
  548. package/lib/sharing/ConsumeSharedRuntimeModule.js +6 -9
  549. package/lib/sharing/ProvideSharedModule.js +25 -16
  550. package/lib/sharing/ProvideSharedModuleFactory.js +7 -3
  551. package/lib/sharing/ProvideSharedPlugin.js +8 -4
  552. package/lib/sharing/SharePlugin.js +17 -5
  553. package/lib/sharing/ShareRuntimeModule.js +4 -4
  554. package/lib/sharing/resolveMatchedConfigs.js +9 -6
  555. package/lib/sharing/utils.js +1 -3
  556. package/lib/stats/DefaultStatsFactoryPlugin.js +50 -29
  557. package/lib/stats/DefaultStatsPresetPlugin.js +17 -8
  558. package/lib/stats/DefaultStatsPrinterPlugin.js +36 -26
  559. package/lib/stats/StatsFactory.js +25 -26
  560. package/lib/stats/StatsPrinter.js +16 -12
  561. package/lib/typescript/TypeScriptPlugin.js +20 -24
  562. package/lib/url/URLParserPlugin.js +26 -13
  563. package/lib/util/ArrayQueue.js +3 -3
  564. package/lib/util/AsyncQueue.js +4 -3
  565. package/lib/util/Hash.js +5 -1
  566. package/lib/util/LazySet.js +35 -22
  567. package/lib/util/LocConverter.js +36 -13
  568. package/lib/util/SourceProcessor.js +1066 -24
  569. package/lib/util/StringXor.js +1 -1
  570. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  571. package/lib/util/chainedImports.js +9 -5
  572. package/lib/util/cleverMerge.js +1 -1
  573. package/lib/util/comparators.js +45 -14
  574. package/lib/util/concatenate.js +203 -77
  575. package/lib/util/conventions.js +10 -2
  576. package/lib/util/createHash.js +2 -2
  577. package/lib/util/createHooksRegistry.js +8 -10
  578. package/lib/util/createMappings.js +25 -3
  579. package/lib/util/dataURL.js +225 -1
  580. package/lib/util/extractSourceMap.js +4 -3
  581. package/lib/util/findCaseMismatch.js +139 -0
  582. package/lib/util/formatLocation.js +1 -2
  583. package/lib/util/fs.js +22 -5
  584. package/lib/util/globUtils.js +298 -24
  585. package/lib/util/hash/BatchedHash.js +5 -1
  586. package/lib/util/hash/BulkUpdateHash.js +5 -1
  587. package/lib/util/hash/DebugHash.js +5 -1
  588. package/lib/util/hash/hash-digest.js +6 -2
  589. package/lib/util/identifier.js +4 -0
  590. package/lib/util/implicitTypeLoaderFallback.js +1 -1
  591. package/lib/util/internalSerializables.js +8 -0
  592. package/lib/util/lazyModule.js +56 -0
  593. package/lib/util/makeSerializable.js +7 -3
  594. package/lib/util/matchAlias.js +25 -0
  595. package/lib/util/mimeTypes.js +11 -5
  596. package/lib/util/nonNumericOnlyHash.js +4 -3
  597. package/lib/util/parseJson.js +5 -3
  598. package/lib/util/preloadModuleType.js +32 -0
  599. package/lib/util/registerExternalSerializer.js +7 -5
  600. package/lib/util/removeBOM.js +82 -1
  601. package/lib/util/runtime.js +2 -2
  602. package/lib/util/semver.js +1 -1
  603. package/lib/util/serialization.js +28 -28
  604. package/lib/util/source.js +2 -2
  605. package/lib/util/traverseDestructuringAssignmentProperties.js +6 -2
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +10 -8
  607. package/lib/wasm/wasmModuleFilename.js +54 -0
  608. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +43 -21
  609. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +45 -21
  610. package/lib/wasm-async/AsyncWasmModule.js +3 -3
  611. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +4 -5
  612. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +57 -17
  613. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +34 -18
  614. package/lib/wasm-async/AsyncWebAssemblyParser.js +9 -8
  615. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +29 -8
  616. package/lib/wasm-sync/SyncWasmModule.js +2 -2
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +18 -13
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -5
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +18 -17
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +4 -4
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +7 -7
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +24 -11
  623. package/lib/wasm-sync/WebAssemblyParser.js +4 -6
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +105 -19
  626. package/lib/web/FetchCompileWasmPlugin.js +48 -16
  627. package/lib/web/JsonpChunkLoadingPlugin.js +47 -23
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +50 -20
  629. package/lib/web/JsonpTemplatePlugin.js +2 -2
  630. package/lib/webpack.js +22 -11
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +60 -26
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +30 -32
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +1 -0
  635. package/package.json +32 -25
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +667 -34
  638. package/schemas/plugins/HtmlParserOptions.check.js +1 -1
  639. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  640. package/schemas/plugins/container/ContainerPlugin.json +10 -0
  641. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  642. package/schemas/plugins/container/ModuleFederationPlugin.json +10 -0
  643. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
  644. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  645. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  646. package/types.d.ts +3223 -465
  647. package/lib/runtime/CommonJsWrapRuntimeModule.js +0 -37
@@ -17,18 +17,25 @@ const {
17
17
  const { toJsStringLiteral } = require("../util/identifier");
18
18
  const makeSerializable = require("../util/makeSerializable");
19
19
  const memoize = require("../util/memoize");
20
+ const {
21
+ PUBLIC_PATH_AUTO,
22
+ PUBLIC_PATH_FULL_HASH
23
+ } = require("../util/publicPathPlaceholder");
20
24
  const ModuleDependency = require("./ModuleDependency");
21
25
 
22
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
23
- /** @typedef {import("../ChunkGraph")} ChunkGraph */
24
- /** @typedef {import("../Compilation")} Compilation */
25
- /** @typedef {import("../Dependency")} Dependency */
26
- /** @typedef {import("../Dependency").GetConditionFn} GetConditionFn */
27
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
28
- /** @typedef {import("../Module")} Module */
29
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
30
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
31
- /** @typedef {import("../optimize/InnerGraph").UsedByExports} UsedByExports */
26
+ /** @import { ReplaceSource } from "webpack-sources" */
27
+ /**
28
+ * @import Dependency, {
29
+ * GetConditionFn,
30
+ * UpdateHashContext
31
+ * } from "../Dependency"
32
+ */
33
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
34
+ /** @import Module from "../Module" */
35
+ /** @import ModuleGraph from "../ModuleGraph" */
36
+ /** @import Hash from "../util/Hash" */
37
+ /** @import { Range } from "../javascript/JavascriptParser" */
38
+ /** @import { UsedByExports } from "../optimize/InnerGraph" */
32
39
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, boolean, UsedByExports | undefined, true | undefined, true | undefined, ("high" | "low" | "auto" | undefined), string | undefined, string | undefined, string | undefined]>} ObjectDeserializerContext */
33
40
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, boolean, UsedByExports | undefined, true | undefined, true | undefined, ("high" | "low" | "auto" | undefined), string | undefined, string | undefined, string | undefined]>} ObjectSerializerContext */
34
41
 
@@ -57,41 +64,46 @@ const getAnalyzableUrlSpecifier = (dep, templateContext) => {
57
64
  return null;
58
65
  }
59
66
  const urlData = codeGenerationResults.getData(assetModule, runtime, "url");
60
- if (!urlData) return null;
61
-
62
- const jsUrl = urlData[JAVASCRIPT_TYPE];
63
- if (typeof jsUrl === "string") {
64
- // The asset concatenates the runtime publicPath; rebuild a literal from the
65
- // resolved filename. The base is the consuming chunk (`import.meta.url`).
66
- if (jsUrl.includes(RuntimeGlobals.require)) {
67
- const filename = codeGenerationResults.getData(
68
- assetModule,
69
- runtime,
70
- "filename"
71
- );
72
- if (typeof filename !== "string") return null;
73
- const { publicPath } = runtimeTemplate.outputOptions;
74
- if (publicPath === "auto") {
75
- const undo = runtimeTemplate._getModuleUndoPath(
76
- consumingModule,
77
- chunkGraph
78
- );
79
- return undo === null ? null : toJsStringLiteral(undo + filename);
80
- }
81
- if (typeof publicPath === "string" && !publicPath.includes("[")) {
82
- return toJsStringLiteral(publicPath + filename);
83
- }
84
- return null;
85
- }
67
+ const jsUrl = urlData && urlData[JAVASCRIPT_TYPE];
68
+ if (
69
+ typeof jsUrl === "string" &&
70
+ !jsUrl.includes(RuntimeGlobals.require) &&
71
+ // An analyzable wrapper is an expression, not a value — quoting it would nest
72
+ // one `new URL(…)` inside another. Its own literal is rebuilt below instead.
73
+ !jsUrl.includes(runtimeTemplate.outputOptions.importMetaName)
74
+ ) {
86
75
  // An already-quoted literal (generator `publicPath` / data: url) is used as-is;
87
76
  // a raw value (external asset) is normalized to a quoted string.
88
77
  return jsUrl.startsWith('"') ? jsUrl : toJsStringLiteral(jsUrl);
89
78
  }
90
-
91
- // Wrapper dropped: the asset is consumed as `asset-url` (absolute publicPath),
92
- // so its resolved url is already a chunk-independent literal.
93
- const assetUrl = urlData[ASSET_URL_TYPE];
94
- return typeof assetUrl === "string" ? toJsStringLiteral(assetUrl) : null;
79
+ if (urlData && jsUrl === undefined) {
80
+ // Wrapper dropped for an `asset-url` consumer: an absolute public path resolves
81
+ // the same url from every chunk, so it is already a literal.
82
+ const assetUrl = urlData[ASSET_URL_TYPE];
83
+ // A css or html consumer drops the wrapper too, and its value carries a
84
+ // placeholder only those assets are rendered with — so use the name below.
85
+ if (
86
+ typeof assetUrl === "string" &&
87
+ !assetUrl.includes(PUBLIC_PATH_AUTO) &&
88
+ !assetUrl.includes(PUBLIC_PATH_FULL_HASH)
89
+ ) {
90
+ return toJsStringLiteral(assetUrl);
91
+ }
92
+ }
93
+ // The wrapper concatenates the runtime public path, or was dropped as unread —
94
+ // either way the name is what the literal is built from.
95
+ const filename = codeGenerationResults.getData(
96
+ assetModule,
97
+ runtime,
98
+ "filename"
99
+ );
100
+ if (typeof filename !== "string") return null;
101
+ return runtimeTemplate.getAnalyzableAssetUrl(
102
+ consumingModule,
103
+ chunkGraph,
104
+ filename,
105
+ runtime
106
+ );
95
107
  };
96
108
 
97
109
  class URLDependency extends ModuleDependency {
@@ -124,6 +136,32 @@ class URLDependency extends ModuleDependency {
124
136
  this.mediaAttribute = undefined;
125
137
  }
126
138
 
139
+ /**
140
+ * Updates the hash with the data contributed by this instance.
141
+ * @param {Hash} hash hash to be updated
142
+ * @param {UpdateHashContext} context context
143
+ * @returns {void}
144
+ */
145
+ updateHash(hash, context) {
146
+ super.updateHash(hash, context);
147
+ const { runtimeTemplate, runtime } = context;
148
+ // Only a baked url reads the base; the runtime form is the same text under every
149
+ // base, so hashing one there would cost the code generation cache for nothing.
150
+ if (
151
+ runtimeTemplate === undefined ||
152
+ this.relative ||
153
+ !runtimeTemplate.analyzableUrlReadsBaseUri()
154
+ ) {
155
+ return;
156
+ }
157
+ const base = runtimeTemplate.entryBaseUri(runtime);
158
+ // Disagreeing entries keep the runtime form, different code again from the
159
+ // base-less literal `undefined` bakes; an empty base must differ from both.
160
+ if (base === null) hash.update("|");
161
+ // Left out entirely where no entry sets one, so ordinary builds hash as before.
162
+ else if (typeof base === "string") hash.update(`=${base}`);
163
+ }
164
+
127
165
  get type() {
128
166
  return "new URL()";
129
167
  }
@@ -210,6 +248,7 @@ URLDependency.Template = class URLDependencyTemplate extends (
210
248
  moduleGraph,
211
249
  runtimeRequirements,
212
250
  runtimeTemplate,
251
+ codeGenerationResults,
213
252
  runtime
214
253
  } = templateContext;
215
254
  const dep = /** @type {URLDependency} */ (dependency);
@@ -226,13 +265,16 @@ URLDependency.Template = class URLDependencyTemplate extends (
226
265
 
227
266
  // For ESM module output, emit the analyzable `new URL("./asset", import.meta.url)`
228
267
  // form (literal specifier, no runtime helpers) so other bundlers and webpack itself
229
- // can statically follow the asset. `url: "relative"` and prefetch/preload hints
230
- // (which need the runtime asset reference) keep the runtime form.
268
+ // can statically follow the asset. `url: "relative"` keeps the runtime form.
269
+ // A prefetch/preload hint doesn't force it: the `<link>` is emitted separately at
270
+ // chunk startup (`StartupAssetHintRuntimeModule`), independent of the call site.
231
271
  if (
232
272
  !dep.relative &&
233
- !dep.prefetch &&
234
- !dep.preload &&
235
- runtimeTemplate.supportsAnalyzableEsm()
273
+ runtimeTemplate.supportsAnalyzable(
274
+ "url",
275
+ chunkGraph,
276
+ templateContext.module
277
+ )
236
278
  ) {
237
279
  const specifier = getAnalyzableUrlSpecifier(dep, templateContext);
238
280
  if (specifier !== null) {
@@ -245,25 +287,29 @@ URLDependency.Template = class URLDependencyTemplate extends (
245
287
  }
246
288
  }
247
289
 
248
- runtimeRequirements.add(RuntimeGlobals.require);
249
-
250
290
  const module = moduleGraph.getModule(dep);
251
- const moduleRaw = runtimeTemplate.moduleRaw({
252
- chunkGraph,
253
- module,
254
- request: dep.request,
255
- runtimeRequirements,
256
- weak: false
257
- });
258
-
259
- // Resource hints fire eagerly at chunk startup via the marker
260
- // requirement / `StartupAssetHintRuntimeModule`; the call site stays
261
- // a plain URL expression, so the browser is already prefetching by
262
- // the time user code reaches this line.
263
- if (dep.prefetch || dep.preload) {
264
- runtimeRequirements.add(RuntimeGlobals.startupAssetHints);
265
- if (dep.prefetch) runtimeRequirements.add(RuntimeGlobals.prefetchAsset);
266
- if (dep.preload) runtimeRequirements.add(RuntimeGlobals.preloadAsset);
291
+ // A wrapper-less asset has no exports to require, so concatenate what the wrapper
292
+ // would have — `AssetModulesPlugin` emulates the same for build-time execution.
293
+ const wrapperLess =
294
+ module !== null && !module.getSourceTypes().has(JAVASCRIPT_TYPE);
295
+ const filename =
296
+ wrapperLess && codeGenerationResults.has(module, runtime)
297
+ ? codeGenerationResults.getData(module, runtime, "filename")
298
+ : undefined;
299
+ let moduleRaw;
300
+ if (wrapperLess && typeof filename === "string") {
301
+ runtimeRequirements.add(RuntimeGlobals.publicPath);
302
+ moduleRaw = `${RuntimeGlobals.publicPath} + ${toJsStringLiteral(filename)}`;
303
+ } else {
304
+ runtimeRequirements.add(RuntimeGlobals.require);
305
+ if (wrapperLess) runtimeRequirements.add(RuntimeGlobals.publicPath);
306
+ moduleRaw = runtimeTemplate.moduleRaw({
307
+ chunkGraph,
308
+ module,
309
+ request: dep.request,
310
+ runtimeRequirements,
311
+ weak: false
312
+ });
267
313
  }
268
314
 
269
315
  if (dep.relative) {
@@ -14,9 +14,13 @@ const URLContextDependency = require("../dependencies/URLContextDependency");
14
14
  const URLDependency = require("../dependencies/URLDependency");
15
15
  const URLParserPlugin = require("../url/URLParserPlugin");
16
16
 
17
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
18
- /** @typedef {import("../Compiler")} Compiler */
19
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
17
+ /**
18
+ * @import {
19
+ * JavascriptParserOptions
20
+ * } from "../../declarations/WebpackOptions"
21
+ */
22
+ /** @import Compiler from "../Compiler" */
23
+ /** @import JavascriptParser from "../javascript/JavascriptParser" */
20
24
 
21
25
  const PLUGIN_NAME = "URLPlugin";
22
26
 
@@ -8,10 +8,10 @@
8
8
  const makeSerializable = require("../util/makeSerializable");
9
9
  const NullDependency = require("./NullDependency");
10
10
 
11
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
12
- /** @typedef {import("../Dependency")} Dependency */
13
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
11
+ /** @import { ReplaceSource } from "webpack-sources" */
12
+ /** @import Dependency from "../Dependency" */
13
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
14
+ /** @import { Range } from "../javascript/JavascriptParser" */
15
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, Range]>} ObjectDeserializerContext */
16
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, Range]>} ObjectSerializerContext */
17
17
 
@@ -9,12 +9,11 @@ const Dependency = require("../Dependency");
9
9
  const makeSerializable = require("../util/makeSerializable");
10
10
  const ModuleDependency = require("./ModuleDependency");
11
11
 
12
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
13
- /** @typedef {import("../Dependency").TRANSITIVE} TRANSITIVE */
14
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
12
+ /** @import { ReferencedExports, TRANSITIVE } from "../Dependency" */
13
+ /** @import ModuleGraph from "../ModuleGraph" */
15
14
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, string, string]>} ObjectDeserializerContext */
16
15
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, string, string]>} ObjectSerializerContext */
17
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
16
+ /** @import { RuntimeSpec } from "../util/runtime" */
18
17
 
19
18
  class WebAssemblyExportImportedDependency extends ModuleDependency {
20
19
  /**
@@ -9,13 +9,13 @@ const makeSerializable = require("../util/makeSerializable");
9
9
  const UnsupportedWebAssemblyFeatureError = require("../wasm-sync/UnsupportedWebAssemblyFeatureError");
10
10
  const ModuleDependency = require("./ModuleDependency");
11
11
 
12
- /** @typedef {import("@webassemblyjs/ast").ModuleImportDescription} ModuleImportDescription */
13
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
14
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
- /** @typedef {import("../errors/WebpackError")} WebpackError */
12
+ /** @import { ModuleImportDescription } from "@webassemblyjs/ast" */
13
+ /** @import { ReferencedExports } from "../Dependency" */
14
+ /** @import ModuleGraph from "../ModuleGraph" */
15
+ /** @import WebpackError from "../errors/WebpackError" */
16
16
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[string, ModuleImportDescription, false | string]>} ObjectDeserializerContext */
17
17
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[string, ModuleImportDescription, false | string]>} ObjectSerializerContext */
18
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
18
+ /** @import { RuntimeSpec } from "../util/runtime" */
19
19
 
20
20
  class WebAssemblyImportDependency extends ModuleDependency {
21
21
  /**
@@ -10,12 +10,12 @@ const Template = require("../Template");
10
10
  const makeSerializable = require("../util/makeSerializable");
11
11
  const ModuleDependency = require("./ModuleDependency");
12
12
 
13
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
15
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
17
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
18
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
13
+ /** @import { ReplaceSource } from "webpack-sources" */
14
+ /** @import { ReferencedExports } from "../Dependency" */
15
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
16
+ /** @import ModuleGraph from "../ModuleGraph" */
17
+ /** @import { Range } from "../javascript/JavascriptParser" */
18
+ /** @import { RuntimeSpec } from "../util/runtime" */
19
19
 
20
20
  class WebpackIsIncludedDependency extends ModuleDependency {
21
21
  /**
@@ -11,13 +11,12 @@ const {
11
11
  JAVASCRIPT_MODULE_TYPE_AUTO,
12
12
  JAVASCRIPT_MODULE_TYPE_ESM
13
13
  } = require("../ModuleTypeConstants");
14
- const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
15
- const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
16
14
  const EnableChunkLoadingPlugin = require("../javascript/EnableChunkLoadingPlugin");
17
15
  const parseResourceHintOptions = require("../prefetch/parseResourceHintOptions");
18
16
  const { equals } = require("../util/ArrayHelpers");
19
17
  const createHash = require("../util/createHash");
20
18
  const { contextify } = require("../util/identifier");
19
+ const memoize = require("../util/memoize");
21
20
  const EnableWasmLoadingPlugin = require("../wasm/EnableWasmLoadingPlugin");
22
21
  const ConstDependency = require("./ConstDependency");
23
22
  const CreateScriptUrlDependency = require("./CreateScriptUrlDependency");
@@ -28,28 +27,47 @@ const { isImportMetaFieldEnabled } = require("./ImportMetaPlugin");
28
27
  const WorkerDependency = require("./WorkerDependency");
29
28
  const WorkletDependency = require("./WorkletDependency");
30
29
 
31
- /** @typedef {import("estree").CallExpression} CallExpression */
32
- /** @typedef {import("estree").Expression} Expression */
33
- /** @typedef {import("estree").MemberExpression} MemberExpression */
34
- /** @typedef {import("estree").ObjectExpression} ObjectExpression */
35
- /** @typedef {import("estree").Pattern} Pattern */
36
- /** @typedef {import("estree").Property} Property */
37
- /** @typedef {import("estree").SpreadElement} SpreadElement */
38
- /** @typedef {import("../../declarations/WebpackOptions").ChunkLoading} ChunkLoading */
39
- /** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
40
- /** @typedef {import("../../declarations/WebpackOptions").OutputModule} OutputModule */
41
- /** @typedef {import("../../declarations/WebpackOptions").WasmLoading} WasmLoading */
42
- /** @typedef {import("../../declarations/WebpackOptions").WorkerPublicPath} WorkerPublicPath */
43
- /** @typedef {import("../Compiler")} Compiler */
44
- /** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
45
- /** @typedef {import("../Entrypoint").EntryOptions} EntryOptions */
46
- /** @typedef {import("../NormalModule")} NormalModule */
47
- /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
48
- /** @typedef {import("../javascript/JavascriptParser")} Parser */
49
- /** @typedef {import("../javascript/JavascriptParser").JavascriptParserState} JavascriptParserState */
50
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
51
- /** @typedef {import("./HarmonyImportDependencyParserPlugin").HarmonySettings} HarmonySettings */
52
- /** @typedef {import("./WorkerDependency").ResourceHint} ResourceHint */
30
+ const getUnsupportedFeatureWarning = memoize(() =>
31
+ require("../errors/UnsupportedFeatureWarning")
32
+ );
33
+
34
+ const getCommentCompilationWarning = memoize(() =>
35
+ require("../errors/CommentCompilationWarning")
36
+ );
37
+
38
+ /**
39
+ * @import {
40
+ * CallExpression,
41
+ * Expression,
42
+ * MemberExpression,
43
+ * ObjectExpression,
44
+ * Pattern,
45
+ * Property,
46
+ * SpreadElement
47
+ * } from "estree"
48
+ */
49
+ /**
50
+ * @import {
51
+ * ChunkLoading,
52
+ * JavascriptParserOptions,
53
+ * OutputModule,
54
+ * WasmLoading,
55
+ * WorkerPublicPath
56
+ * } from "../../declarations/WebpackOptions"
57
+ */
58
+ /** @import Compiler from "../Compiler" */
59
+ /** @import { DependencyLocation } from "../Dependency" */
60
+ /** @import { EntryOptions } from "../Entrypoint" */
61
+ /** @import NormalModule from "../NormalModule" */
62
+ /**
63
+ * @import JavascriptParser, {
64
+ * JavascriptParserState,
65
+ * Range
66
+ * } from "../javascript/JavascriptParser"
67
+ */
68
+ /** @import Parser from "../javascript/JavascriptParser" */
69
+ /** @import { HarmonySettings } from "./HarmonyImportDependencyParserPlugin" */
70
+ /** @import { ResourceHint } from "./WorkerDependency" */
53
71
 
54
72
  /**
55
73
  * Returns url.
@@ -352,7 +370,7 @@ class WorkerAndWorkletPlugin {
352
370
  for (const e of commentErrors) {
353
371
  const { comment } = e;
354
372
  parser.state.module.addWarning(
355
- new CommentCompilationWarning(
373
+ new (getCommentCompilationWarning())(
356
374
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
357
375
  parser.getLocation(comment)
358
376
  )
@@ -367,7 +385,7 @@ class WorkerAndWorkletPlugin {
367
385
  if (importOptions.webpackIgnore !== undefined) {
368
386
  if (typeof importOptions.webpackIgnore !== "boolean") {
369
387
  parser.state.module.addWarning(
370
- new UnsupportedFeatureWarning(
388
+ new (getUnsupportedFeatureWarning())(
371
389
  `\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
372
390
  parser.getLocation(expr)
373
391
  )
@@ -382,7 +400,7 @@ class WorkerAndWorkletPlugin {
382
400
  importOptions.webpackEntryOptions === null
383
401
  ) {
384
402
  parser.state.module.addWarning(
385
- new UnsupportedFeatureWarning(
403
+ new (getUnsupportedFeatureWarning())(
386
404
  `\`webpackEntryOptions\` expected a object, but received: ${importOptions.webpackEntryOptions}.`,
387
405
  parser.getLocation(expr)
388
406
  )
@@ -411,7 +429,7 @@ class WorkerAndWorkletPlugin {
411
429
  if (importOptions.webpackChunkName !== undefined) {
412
430
  if (typeof importOptions.webpackChunkName !== "string") {
413
431
  parser.state.module.addWarning(
414
- new UnsupportedFeatureWarning(
432
+ new (getUnsupportedFeatureWarning())(
415
433
  `\`webpackChunkName\` expected a string, but received: ${importOptions.webpackChunkName}.`,
416
434
  parser.getLocation(expr)
417
435
  )
@@ -735,6 +753,7 @@ class WorkerAndWorkletPlugin {
735
753
  ) {
736
754
  return;
737
755
  }
756
+ settings.used = true;
738
757
  return handle(expr);
739
758
  });
740
759
  } else {
@@ -10,19 +10,17 @@ const RuntimeGlobals = require("../RuntimeGlobals");
10
10
  const makeSerializable = require("../util/makeSerializable");
11
11
  const ModuleDependency = require("./ModuleDependency");
12
12
 
13
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
- /** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
15
- /** @typedef {import("../Chunk")} Chunk */
16
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
17
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
18
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
19
- /** @typedef {import("../Entrypoint")} Entrypoint */
20
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
21
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
13
+ /** @import { ReplaceSource } from "webpack-sources" */
14
+ /** @import AsyncDependenciesBlock from "../AsyncDependenciesBlock" */
15
+ /** @import { ReferencedExports, UpdateHashContext } from "../Dependency" */
16
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
17
+ /** @import Entrypoint from "../Entrypoint" */
18
+ /** @import ModuleGraph from "../ModuleGraph" */
19
+ /** @import { Range } from "../javascript/JavascriptParser" */
22
20
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[WorkerDependencyOptions]>} ObjectDeserializerContext */
23
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[WorkerDependencyOptions]>} ObjectSerializerContext */
24
- /** @typedef {import("../util/Hash")} Hash */
25
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
22
+ /** @import Hash from "../util/Hash" */
23
+ /** @import { RuntimeSpec } from "../util/runtime" */
26
24
 
27
25
  /**
28
26
  * @typedef {object} ResourceHint
@@ -135,19 +133,21 @@ WorkerDependency.Template = class WorkerDependencyTemplate extends (
135
133
 
136
134
  // For ESM module output emit the analyzable `new URL("./worker.<name>.js",
137
135
  // import.meta.url)` form (literal specifier, no runtime helpers) so other bundlers
138
- // and webpack itself can statically follow the worker. Resource-hint workers keep
139
- // the runtime form because the hint needs the runtime chunk reference.
140
- const analyzableSpecifier =
141
- !dep.options.resourceHint && runtimeTemplate.supportsAnalyzableEsm()
142
- ? runtimeTemplate._getAnalyzableChunkSpecifier(
143
- dep.options.publicPath,
144
- chunk,
145
- templateContext.module,
146
- chunkGraph
147
- )
148
- : null;
136
+ // and webpack itself can statically follow the worker. A resource hint doesn't
137
+ // block it: the `<link>` is emitted at chunk startup instead of wrapping the href,
138
+ // which would turn the specifier into a non-analyzable expression.
139
+ const analyzableSpecifier = runtimeTemplate.getAnalyzableWorkerUrl(
140
+ dep.options.publicPath,
141
+ chunk,
142
+ templateContext.module,
143
+ chunkGraph,
144
+ runtimeRequirements
145
+ );
149
146
 
150
147
  if (analyzableSpecifier !== null) {
148
+ // No `<link>` helper is asked for here: this form emits no call, and
149
+ // `ResourceHintPlugin` — which spells the one that fires at startup —
150
+ // declares what that one reads while requirements are still open.
151
151
  const urlArgs = `/* worker import */ ${analyzableSpecifier}, ${runtimeTemplate.outputOptions.importMetaName}.url`;
152
152
  source.replace(
153
153
  dep.range[0],
@@ -11,19 +11,17 @@ const Template = require("../Template");
11
11
  const makeSerializable = require("../util/makeSerializable");
12
12
  const ModuleDependency = require("./ModuleDependency");
13
13
 
14
- /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
15
- /** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
16
- /** @typedef {import("../Chunk")} Chunk */
17
- /** @typedef {import("../Dependency").ReferencedExports} ReferencedExports */
18
- /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
19
- /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
20
- /** @typedef {import("../Entrypoint")} Entrypoint */
21
- /** @typedef {import("../ModuleGraph")} ModuleGraph */
22
- /** @typedef {import("../javascript/JavascriptParser").Range} Range */
14
+ /** @import { ReplaceSource } from "webpack-sources" */
15
+ /** @import AsyncDependenciesBlock from "../AsyncDependenciesBlock" */
16
+ /** @import { ReferencedExports, UpdateHashContext } from "../Dependency" */
17
+ /** @import { DependencyTemplateContext } from "../DependencyTemplate" */
18
+ /** @import Entrypoint from "../Entrypoint" */
19
+ /** @import ModuleGraph from "../ModuleGraph" */
20
+ /** @import { Range } from "../javascript/JavascriptParser" */
23
21
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[WorkletDependencyOptions, Range]>} ObjectDeserializerContext */
24
22
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[WorkletDependencyOptions, Range]>} ObjectSerializerContext */
25
- /** @typedef {import("../util/Hash")} Hash */
26
- /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
23
+ /** @import Hash from "../util/Hash" */
24
+ /** @import { RuntimeSpec } from "../util/runtime" */
27
25
 
28
26
  /**
29
27
  * @typedef {object} WorkletDependencyOptions
@@ -142,15 +140,13 @@ WorkletDependency.Template = class WorkletDependencyTemplate extends (
142
140
  // import.meta.url)` form (literal specifier, no runtime helpers) so other bundlers
143
141
  // and webpack itself can statically follow the worklet. The worklet chunk links its
144
142
  // splits via native `import`, so only the entry chunk is referenced.
145
- const analyzableSpecifier =
146
- runtimeTemplate.supportsAnalyzableEsm() && entryChunk.id !== null
147
- ? runtimeTemplate._getAnalyzableChunkSpecifier(
148
- dep.options.publicPath,
149
- entryChunk,
150
- module,
151
- chunkGraph
152
- )
153
- : null;
143
+ const analyzableSpecifier = runtimeTemplate.getAnalyzableWorkerUrl(
144
+ dep.options.publicPath,
145
+ entryChunk,
146
+ module,
147
+ chunkGraph,
148
+ runtimeRequirements
149
+ );
154
150
  if (analyzableSpecifier !== null) {
155
151
  source.replace(
156
152
  dep.callRange[0],
@@ -274,5 +270,6 @@ makeSerializable(
274
270
  "webpack/lib/dependencies/WorkletDependency"
275
271
  );
276
272
 
273
+ WorkletDependency.WORKLET_MODULE = WORKLET_MODULE;
274
+
277
275
  module.exports = WorkletDependency;
278
- module.exports.WORKLET_MODULE = WORKLET_MODULE;
@@ -5,10 +5,14 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- /** @typedef {import("estree").ArrowFunctionExpression} ArrowFunctionExpression */
9
- /** @typedef {import("estree").Expression} Expression */
10
- /** @typedef {import("estree").FunctionExpression} FunctionExpression */
11
- /** @typedef {import("estree").SpreadElement} SpreadElement */
8
+ /**
9
+ * @import {
10
+ * ArrowFunctionExpression,
11
+ * Expression,
12
+ * FunctionExpression,
13
+ * SpreadElement
14
+ * } from "estree"
15
+ */
12
16
 
13
17
  /** @typedef {{ fn: FunctionExpression | ArrowFunctionExpression, expressions: (Expression | SpreadElement)[], needThis: boolean | undefined }} FunctionExpressionResult */
14
18
 
@@ -0,0 +1,47 @@
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 Template = require("../Template");
9
+
10
+ /** @import RuntimeTemplate from "../RuntimeTemplate" */
11
+
12
+ /**
13
+ * Wraps an import so its arguments evaluate in source order and the options are
14
+ * checked, rejecting rather than throwing. The last parameter holds them.
15
+ * @param {RuntimeTemplate} runtimeTemplate the runtime template
16
+ * @param {string[]} parameters parameter names, the options one last
17
+ * @param {string} content the import expression to return once the check passes
18
+ * @returns {string} the wrapping function
19
+ */
20
+ const importOptionsCheck = (runtimeTemplate, parameters, content) => {
21
+ const options = parameters[parameters.length - 1];
22
+ return runtimeTemplate.basicFunction(parameters.join(", "), [
23
+ "try {",
24
+ Template.indent([
25
+ `if (${options} !== undefined) {`,
26
+ Template.indent([
27
+ `if ((typeof ${options} !== "object" && typeof ${options} !== "function") || ${options} === null) throw new TypeError("The second argument to import() must be an object");`,
28
+ `var a = ${options}["with"];`,
29
+ "if (a !== undefined) {",
30
+ Template.indent([
31
+ 'if ((typeof a !== "object" && typeof a !== "function") || a === null) throw new TypeError("The \'with\' option must be an object");',
32
+ "for (var k = Object.keys(a), i = 0; i < k.length; i++) {",
33
+ Template.indent([
34
+ 'if (typeof a[k[i]] !== "string") throw new TypeError("Import attribute values must be strings");'
35
+ ]),
36
+ "}"
37
+ ]),
38
+ "}"
39
+ ]),
40
+ "}"
41
+ ]),
42
+ "} catch (e) { return Promise.reject(e); }",
43
+ `return ${content};`
44
+ ]);
45
+ };
46
+
47
+ module.exports = importOptionsCheck;