@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,210 @@
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 mod = require("module");
9
+ const {
10
+ JAVASCRIPT_MODULE_TYPE_AUTO,
11
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
12
+ JAVASCRIPT_MODULE_TYPE_ESM
13
+ } = require("../ModuleTypeConstants");
14
+ const NormalModule = require("../NormalModule");
15
+ const ModuleBuildError = require("../errors/ModuleBuildError");
16
+ const memoize = require("../util/memoize");
17
+ const removeBOM = require("../util/removeBOM");
18
+
19
+ /** @typedef {import("webpack-sources").RawSourceMap} RawSourceMap */
20
+ /** @typedef {import("../Compiler")} Compiler */
21
+ /** @typedef {import("../NormalModule")} NormalModuleType */
22
+ /** @typedef {import("../NormalModule").Result} Result */
23
+ /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
24
+
25
+ const getSourceMapSource = memoize(
26
+ () => require("webpack-sources").SourceMapSource
27
+ );
28
+
29
+ const PLUGIN_NAME = "TypeScriptPlugin";
30
+
31
+ /** @type {Set<string>} */
32
+ const JS_MODULE_TYPES = new Set([
33
+ JAVASCRIPT_MODULE_TYPE_AUTO,
34
+ JAVASCRIPT_MODULE_TYPE_DYNAMIC,
35
+ JAVASCRIPT_MODULE_TYPE_ESM
36
+ ]);
37
+
38
+ const TS_RESOURCE_RE = /\.(?:[mc]?tsx?)$/i;
39
+ const TSX_RESOURCE_RE = /\.[mc]?tsx$/i;
40
+ const TS_DATA_URI_RE = /^data:(?:text|application)\/typescript/i;
41
+
42
+ const TSX_NOT_SUPPORTED =
43
+ "experiments.typescript does not support .tsx/JSX. " +
44
+ "Use a TSX-capable loader (e.g. swc-loader, esbuild-loader, ts-loader) for .tsx files.";
45
+
46
+ const NODE_API_MISSING =
47
+ "experiments.typescript requires Node.js >= 22.6. " +
48
+ "`module.stripTypeScriptTypes` is not available on this Node.js version.";
49
+
50
+ /**
51
+ * Whether the resource (path or `data:` URI) should go through the TypeScript
52
+ * transform. Returns true for `.ts`, `.cts`, `.mts`, and the JSX-flavoured
53
+ * variants (so the `.tsx` branch can throw a friendly error), as well as the
54
+ * `text/typescript` / `application/typescript` data URIs.
55
+ * @param {string} resource module resource (without query string)
56
+ * @returns {boolean} true if the resource should be transformed
57
+ */
58
+ const isTypeScriptResource = (resource) =>
59
+ TS_RESOURCE_RE.test(resource) || TS_DATA_URI_RE.test(resource);
60
+
61
+ /**
62
+ * Build a line-granularity identity source map for a strip-types output.
63
+ * `mode: "strip"` replaces type annotations with whitespace, so the stripped
64
+ * output preserves the original line layout — an identity mapping is correct.
65
+ * Node's API does not emit a source map in strip mode (`sourceMap: true` is
66
+ * rejected on Node 22+ and Node 26+), so we construct one by hand.
67
+ * @param {string} resource module resource path
68
+ * @param {string} originalSource pre-strip source content
69
+ * @returns {RawSourceMap} identity source map
70
+ */
71
+ const createIdentitySourceMap = (resource, originalSource) => {
72
+ const lineCount = (originalSource.match(/\n/g) || []).length + 1;
73
+ // Mappings: each line emits a single segment at column 0 mapping to
74
+ // column 0 of the same line in the source. `AAAA` for line 1, `;AACA`
75
+ // for each subsequent line (cumulative source-line delta of +1 per line).
76
+ const mappings = `AAAA${";AACA".repeat(lineCount - 1)}`;
77
+
78
+ return {
79
+ version: 3,
80
+ file: resource,
81
+ sources: [resource],
82
+ sourcesContent: [originalSource],
83
+ names: [],
84
+ mappings
85
+ };
86
+ };
87
+
88
+ /**
89
+ * Compose the strip-types source map with an upstream loader source map so the
90
+ * final map points back to the loader's original input (e.g. a `.vue` /
91
+ * `.svelte` / custom loader that emits TS code).
92
+ * @param {string} resource module resource
93
+ * @param {string} strippedSource post-strip JS
94
+ * @param {RawSourceMap} stripMap identity map for the strip step
95
+ * @param {string} preStripSource pre-strip TS (loader output)
96
+ * @param {string | RawSourceMap} loaderSourceMap upstream loader source map
97
+ * @returns {RawSourceMap} composed map
98
+ */
99
+ const composeWithLoaderSourceMap = (
100
+ resource,
101
+ strippedSource,
102
+ stripMap,
103
+ preStripSource,
104
+ loaderSourceMap
105
+ ) => {
106
+ const SourceMapSource = getSourceMapSource();
107
+ const composed = new SourceMapSource(
108
+ strippedSource,
109
+ resource,
110
+ stripMap,
111
+ preStripSource,
112
+ loaderSourceMap,
113
+ true
114
+ );
115
+ return /** @type {RawSourceMap} */ (composed.sourceAndMap().map) || stripMap;
116
+ };
117
+
118
+ /**
119
+ * Run `module.stripTypeScriptTypes` on the input, wrapping any thrown
120
+ * `TypeScript ...` errors as `ModuleBuildError` so they surface as
121
+ * per-module build errors instead of uncaught exceptions.
122
+ * @param {string} input pre-strip TS source (BOM-free string)
123
+ * @returns {string} stripped JS
124
+ */
125
+ const stripTypes = (input) => {
126
+ try {
127
+ // Pass only `mode`. `sourceUrl` would emit a `//# sourceURL=…` pragma
128
+ // into the output (V8 debugger hint), and `sourceMap: true` is
129
+ // rejected in strip mode — we build the source map by hand instead.
130
+ // eslint-disable-next-line n/no-unsupported-features/node-builtins
131
+ return mod.stripTypeScriptTypes(input, { mode: "strip" });
132
+ } catch (err) {
133
+ throw new ModuleBuildError(/** @type {Error} */ (err));
134
+ }
135
+ };
136
+
137
+ /**
138
+ * Coerce a Buffer-or-string source to a UTF-8 string, dropping any BOM.
139
+ * @param {string | Buffer} source raw source from the loader pipeline
140
+ * @returns {string} UTF-8 string without BOM
141
+ */
142
+ const toBomFreeString = (source) => {
143
+ const text = Buffer.isBuffer(source) ? source.toString("utf8") : source;
144
+ const stripped = removeBOM(text);
145
+ return typeof stripped === "string" ? stripped : stripped.toString("utf8");
146
+ };
147
+
148
+ class TypeScriptPlugin {
149
+ /**
150
+ * @param {Compiler} compiler webpack compiler
151
+ * @returns {void}
152
+ */
153
+ apply(compiler) {
154
+ compiler.hooks.compilation.tap(PLUGIN_NAME, (compilation) => {
155
+ NormalModule.getCompilationHooks(compilation).processResult.tap(
156
+ PLUGIN_NAME,
157
+ (result, module) => this._processResult(result, module)
158
+ );
159
+ });
160
+ }
161
+
162
+ /**
163
+ * processResult tap body. Returns the input untouched unless this is a
164
+ * TypeScript module that needs to be transformed.
165
+ * @param {Result} result loader result tuple
166
+ * @param {NormalModuleType} module the normal module
167
+ * @returns {Result} possibly transformed result
168
+ */
169
+ _processResult(result, module) {
170
+ if (!JS_MODULE_TYPES.has(module.type)) return result;
171
+
172
+ const parser = /** @type {JavascriptParser} */ (module.parser);
173
+ if (!parser.options.typescript) return result;
174
+
175
+ const resource = module.nameForCondition();
176
+ if (!resource || !isTypeScriptResource(resource)) return result;
177
+
178
+ if (TSX_RESOURCE_RE.test(resource)) {
179
+ throw new ModuleBuildError(new Error(TSX_NOT_SUPPORTED));
180
+ }
181
+
182
+ if (!("stripTypeScriptTypes" in mod)) {
183
+ throw new ModuleBuildError(new Error(NODE_API_MISSING));
184
+ }
185
+
186
+ const [rawSource, loaderSourceMap, ...rest] = result;
187
+ const preStripSource = toBomFreeString(rawSource);
188
+ const strippedSource = stripTypes(preStripSource);
189
+
190
+ const needSourceMap = module.useSourceMap || module.useSimpleSourceMap;
191
+ const stripMap = needSourceMap
192
+ ? createIdentitySourceMap(module.resource, preStripSource)
193
+ : undefined;
194
+
195
+ const outputSourceMap =
196
+ stripMap && loaderSourceMap
197
+ ? composeWithLoaderSourceMap(
198
+ module.resource,
199
+ strippedSource,
200
+ stripMap,
201
+ preStripSource,
202
+ loaderSourceMap
203
+ )
204
+ : stripMap || loaderSourceMap;
205
+
206
+ return [strippedSource, outputSourceMap, ...rest];
207
+ }
208
+ }
209
+
210
+ module.exports = TypeScriptPlugin;
@@ -6,16 +6,20 @@
6
6
  "use strict";
7
7
 
8
8
  const { pathToFileURL } = require("url");
9
- const CommentCompilationWarning = require("../CommentCompilationWarning");
10
9
  const RuntimeGlobals = require("../RuntimeGlobals");
11
- const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
12
10
  const ConstDependency = require("../dependencies/ConstDependency");
13
11
  const ContextDependencyHelpers = require("../dependencies/ContextDependencyHelpers");
12
+ const {
13
+ isImportMetaFieldEnabled
14
+ } = require("../dependencies/ImportMetaPlugin");
14
15
  const URLContextDependency = require("../dependencies/URLContextDependency");
15
16
  const URLDependency = require("../dependencies/URLDependency");
17
+ const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
18
+ const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
16
19
  const BasicEvaluatedExpression = require("../javascript/BasicEvaluatedExpression");
17
20
  const { approve } = require("../javascript/JavascriptParserHelpers");
18
- const InnerGraph = require("../optimize/InnerGraph");
21
+ const { getInnerGraphUtils } = require("../optimize/InnerGraph");
22
+ const ResourceHintPlugin = require("../prefetch/ResourceHintPlugin");
19
23
 
20
24
  /** @typedef {import("estree").MemberExpression} MemberExpression */
21
25
  /** @typedef {import("estree").NewExpression} NewExpressionNode */
@@ -28,12 +32,14 @@ const InnerGraph = require("../optimize/InnerGraph");
28
32
  const PLUGIN_NAME = "URLParserPlugin";
29
33
 
30
34
  /**
35
+ * Returns file url.
31
36
  * @param {NormalModule} module module
32
37
  * @returns {URL} file url
33
38
  */
34
39
  const getUrl = (module) => pathToFileURL(module.resource);
35
40
 
36
41
  /**
42
+ * Checks whether this object is meta url.
37
43
  * @param {JavascriptParser} parser parser parser
38
44
  * @param {MemberExpression} arg arg
39
45
  * @returns {boolean} true when it is `meta.url`, otherwise false
@@ -54,19 +60,48 @@ const isMetaUrl = (parser, arg) => {
54
60
  return true;
55
61
  };
56
62
 
63
+ /**
64
+ * Whether the request points to a directory and thus can't be an asset.
65
+ * @param {string} request request
66
+ * @returns {boolean} true when the request is a directory reference
67
+ */
68
+ const isDirectoryRequest = (request) =>
69
+ request === "." || request === ".." || request.endsWith("/");
70
+
71
+ /**
72
+ * Replaces `import.meta.url` with the runtime base URI, leaving the
73
+ * `new URL(...)` construction untouched so it's evaluated at runtime.
74
+ * @param {JavascriptParser} parser parser
75
+ * @param {NewExpressionNode} expr expression
76
+ * @returns {void}
77
+ */
78
+ const keepNewURL = (parser, expr) => {
79
+ const [, arg2] = expr.arguments;
80
+ const dep = new ConstDependency(
81
+ RuntimeGlobals.baseURI,
82
+ /** @type {Range} */ (arg2.range),
83
+ [RuntimeGlobals.baseURI]
84
+ );
85
+ dep.loc = parser.getLocation(expr);
86
+ parser.state.module.addPresentationalDependency(dep);
87
+ };
88
+
57
89
  /** @type {WeakMap<NewExpressionNode, BasicEvaluatedExpression | undefined>} */
58
90
  const getEvaluatedExprCache = new WeakMap();
59
91
 
60
92
  /**
93
+ * Gets evaluated expr.
61
94
  * @param {NewExpressionNode} expr expression
62
95
  * @param {JavascriptParser} parser parser parser
96
+ * @param {boolean} importMetaUrlEnabled true when import.meta.url should be handled
63
97
  * @returns {BasicEvaluatedExpression | undefined} basic evaluated expression
64
98
  */
65
- const getEvaluatedExpr = (expr, parser) => {
99
+ const getEvaluatedExpr = (expr, parser, importMetaUrlEnabled) => {
66
100
  let result = getEvaluatedExprCache.get(expr);
67
101
  if (result !== undefined) return result;
68
102
 
69
103
  /**
104
+ * Returns basic evaluated expression.
70
105
  * @returns {BasicEvaluatedExpression | undefined} basic evaluated expression
71
106
  */
72
107
  const evaluate = () => {
@@ -77,7 +112,9 @@ const getEvaluatedExpr = (expr, parser) => {
77
112
  if (arg2.type !== "MemberExpression" || arg1.type === "SpreadElement") {
78
113
  return;
79
114
  }
80
- if (!isMetaUrl(parser, arg2)) return;
115
+ if (!importMetaUrlEnabled || !isMetaUrl(parser, arg2)) {
116
+ return;
117
+ }
81
118
 
82
119
  return parser.evaluateExpression(arg1);
83
120
  };
@@ -88,8 +125,16 @@ const getEvaluatedExpr = (expr, parser) => {
88
125
  return result;
89
126
  };
90
127
 
128
+ /**
129
+ * @typedef {object} ResolvedResourceHints
130
+ * @property {boolean=} prefetch project-wide prefetch default
131
+ * @property {boolean=} preload project-wide preload default
132
+ * @property {("low" | "high" | "auto" | false)=} fetchPriority project-wide fetchPriority default
133
+ */
134
+
91
135
  class URLParserPlugin {
92
136
  /**
137
+ * Creates an instance of URLParserPlugin.
93
138
  * @param {JavascriptParserOptions} options options
94
139
  */
95
140
  constructor(options) {
@@ -98,15 +143,24 @@ class URLParserPlugin {
98
143
  }
99
144
 
100
145
  /**
146
+ * Applies the plugin by registering its hooks on the compiler.
101
147
  * @param {JavascriptParser} parser the parser
102
148
  * @returns {void}
103
149
  */
104
150
  apply(parser) {
105
151
  const relative = this.options.url === "relative";
152
+ const importMetaUrlEnabled = isImportMetaFieldEnabled(
153
+ this.options.importMeta,
154
+ "url"
155
+ );
106
156
 
107
157
  parser.hooks.canRename.for("URL").tap(PLUGIN_NAME, approve);
108
158
  parser.hooks.evaluateNewExpression.for("URL").tap(PLUGIN_NAME, (expr) => {
109
- const evaluatedExpr = getEvaluatedExpr(expr, parser);
159
+ const evaluatedExpr = getEvaluatedExpr(
160
+ expr,
161
+ parser,
162
+ importMetaUrlEnabled
163
+ );
110
164
  const request = evaluatedExpr && evaluatedExpr.asString();
111
165
 
112
166
  if (!request) return;
@@ -127,7 +181,7 @@ class URLParserPlugin {
127
181
  parser.state.module.addWarning(
128
182
  new CommentCompilationWarning(
129
183
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
130
- /** @type {DependencyLocation} */ (comment.loc)
184
+ parser.getLocation(comment)
131
185
  )
132
186
  );
133
187
  }
@@ -138,7 +192,7 @@ class URLParserPlugin {
138
192
  parser.state.module.addWarning(
139
193
  new UnsupportedFeatureWarning(
140
194
  `\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
141
- /** @type {DependencyLocation} */ (expr.loc)
195
+ parser.getLocation(expr)
142
196
  )
143
197
  );
144
198
  return;
@@ -147,23 +201,25 @@ class URLParserPlugin {
147
201
 
148
202
  const [, arg2] = expr.arguments;
149
203
 
150
- if (arg2.type !== "MemberExpression" || !isMetaUrl(parser, arg2)) {
204
+ if (
205
+ arg2.type !== "MemberExpression" ||
206
+ !importMetaUrlEnabled ||
207
+ !isMetaUrl(parser, arg2)
208
+ ) {
151
209
  return;
152
210
  }
153
211
 
154
- const dep = new ConstDependency(
155
- RuntimeGlobals.baseURI,
156
- /** @type {Range} */ (arg2.range),
157
- [RuntimeGlobals.baseURI]
158
- );
159
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
160
- parser.state.module.addPresentationalDependency(dep);
212
+ keepNewURL(parser, expr);
161
213
 
162
214
  return true;
163
215
  }
164
216
  }
165
217
 
166
- const evaluatedExpr = getEvaluatedExpr(expr, parser);
218
+ const evaluatedExpr = getEvaluatedExpr(
219
+ expr,
220
+ parser,
221
+ importMetaUrlEnabled
222
+ );
167
223
  if (!evaluatedExpr) return;
168
224
 
169
225
  /** @type {string | undefined} */
@@ -171,6 +227,12 @@ class URLParserPlugin {
171
227
 
172
228
  // static URL
173
229
  if ((request = evaluatedExpr.asString())) {
230
+ // A directory is not an asset; keep `new URL(...)` as-is, matching Node/browsers.
231
+ if (isDirectoryRequest(request)) {
232
+ keepNewURL(parser, expr);
233
+ return true;
234
+ }
235
+
174
236
  const [arg1, arg2] = expr.arguments;
175
237
  const dep = new URLDependency(
176
238
  request,
@@ -181,9 +243,31 @@ class URLParserPlugin {
181
243
  /** @type {Range} */ (expr.range),
182
244
  relative
183
245
  );
184
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
246
+ dep.loc = parser.getLocation(expr);
247
+ // `parser.javascript.urlHints` provides project-wide defaults
248
+ // (resolved per-request, with `test` / `include` / `exclude`
249
+ // matching); a per-URL magic comment for the same hint wins
250
+ // when both are set.
251
+ ResourceHintPlugin.applyResourceHints(
252
+ dep,
253
+ this.options.urlHints,
254
+ request,
255
+ importOptions,
256
+ parser.state.module,
257
+ parser.getLocation(expr)
258
+ );
185
259
  parser.state.current.addDependency(dep);
186
- InnerGraph.onUsage(parser.state, (e) => (dep.usedByExports = e));
260
+ // For ESM module output the template embeds the asset's resolved
261
+ // filename, so the asset must be code-generated first. Only added in
262
+ // that mode — a code-gen dependency on an asset that a later watch
263
+ // rebuild leaves unaffected can otherwise deadlock the scheduler.
264
+ if (parser.state.compilation.options.output.module) {
265
+ parser.state.module.addCodeGenerationDependency(dep);
266
+ }
267
+ getInnerGraphUtils(parser.state.compilation).onUsage(
268
+ parser.state,
269
+ (e) => (dep.usedByExports = e)
270
+ );
187
271
  return true;
188
272
  }
189
273
 
@@ -204,7 +288,7 @@ class URLParserPlugin {
204
288
  parser.state.module.addWarning(
205
289
  new UnsupportedFeatureWarning(
206
290
  `\`webpackInclude\` expected a regular expression, but received: ${importOptions.webpackInclude}.`,
207
- /** @type {DependencyLocation} */ (expr.loc)
291
+ parser.getLocation(expr)
208
292
  )
209
293
  );
210
294
  } else {
@@ -219,7 +303,7 @@ class URLParserPlugin {
219
303
  parser.state.module.addWarning(
220
304
  new UnsupportedFeatureWarning(
221
305
  `\`webpackExclude\` expected a regular expression, but received: ${importOptions.webpackExclude}.`,
222
- /** @type {DependencyLocation} */ (expr.loc)
306
+ parser.getLocation(expr)
223
307
  )
224
308
  );
225
309
  } else {
@@ -243,7 +327,7 @@ class URLParserPlugin {
243
327
  parser
244
328
  );
245
329
  if (!dep) return;
246
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
330
+ dep.loc = parser.getLocation(expr);
247
331
  dep.optional = Boolean(parser.scope.inTry);
248
332
  parser.state.current.addDependency(dep);
249
333
  return true;
@@ -255,7 +339,11 @@ class URLParserPlugin {
255
339
  const calleeInfo = parser.getFreeInfoFromVariable(callee.name);
256
340
  if (!calleeInfo || calleeInfo.name !== "URL") return;
257
341
 
258
- const evaluatedExpr = getEvaluatedExpr(expr, parser);
342
+ const evaluatedExpr = getEvaluatedExpr(
343
+ expr,
344
+ parser,
345
+ importMetaUrlEnabled
346
+ );
259
347
  const request = evaluatedExpr && evaluatedExpr.asString();
260
348
 
261
349
  if (request) return true;
@@ -34,6 +34,7 @@ module.exports.groupBy = (
34
34
  ) =>
35
35
  arr.reduce(
36
36
  /**
37
+ * Handles the callback logic for this hook.
37
38
  * @param {[T[], T[]]} groups An accumulator storing already partitioned values returned from previous call.
38
39
  * @param {T} value The value of the current element
39
40
  * @returns {[T[], T[]]} returns an array of partitioned groups accumulator resulting from calling a predicate on the current value.
@@ -6,10 +6,13 @@
6
6
  "use strict";
7
7
 
8
8
  /**
9
+ * FIFO queue backed by arrays with a reversed dequeue buffer to avoid the cost
10
+ * of repeated `Array#shift` operations.
9
11
  * @template T
10
12
  */
11
13
  class ArrayQueue {
12
14
  /**
15
+ * Seeds the queue with an optional iterable of items in dequeue order.
13
16
  * @param {Iterable<T>=} items The initial elements.
14
17
  */
15
18
  constructor(items) {
@@ -26,7 +29,7 @@ class ArrayQueue {
26
29
  }
27
30
 
28
31
  /**
29
- * Returns the number of elements in this queue.
32
+ * Returns the current number of items waiting in either internal buffer.
30
33
  * @returns {number} The number of elements in this queue.
31
34
  */
32
35
  get length() {
@@ -34,7 +37,7 @@ class ArrayQueue {
34
37
  }
35
38
 
36
39
  /**
37
- * Empties the queue.
40
+ * Removes all pending items from both internal buffers.
38
41
  */
39
42
  clear() {
40
43
  this._list.length = 0;
@@ -42,7 +45,7 @@ class ArrayQueue {
42
45
  }
43
46
 
44
47
  /**
45
- * Appends the specified element to this queue.
48
+ * Appends an item to the tail of the queue.
46
49
  * @param {T} item The element to add.
47
50
  * @returns {void}
48
51
  */
@@ -51,7 +54,8 @@ class ArrayQueue {
51
54
  }
52
55
 
53
56
  /**
54
- * Retrieves and removes the head of this queue.
57
+ * Removes and returns the next item in FIFO order, switching to a reversed
58
+ * buffer when that is cheaper than shifting from the front of the array.
55
59
  * @returns {T | undefined} The head of the queue of `undefined` if this queue is empty.
56
60
  */
57
61
  dequeue() {
@@ -68,7 +72,8 @@ class ArrayQueue {
68
72
  }
69
73
 
70
74
  /**
71
- * Finds and removes an item
75
+ * Removes the first matching item from whichever internal buffer currently
76
+ * contains it.
72
77
  * @param {T} item the item
73
78
  * @returns {void}
74
79
  */