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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. package/README.md +9 -11
  2. package/bin/webpack.js +12 -0
  3. package/changes.json +16 -24
  4. package/hot/dev-server.js +2 -0
  5. package/lib/APIPlugin.js +60 -35
  6. package/lib/AsyncDependenciesBlock.js +3 -0
  7. package/lib/AutomaticPrefetchPlugin.js +6 -1
  8. package/lib/BannerPlugin.js +13 -5
  9. package/lib/Cache.js +27 -5
  10. package/lib/CacheFacade.js +41 -0
  11. package/lib/Chunk.js +71 -25
  12. package/lib/ChunkGraph.js +153 -19
  13. package/lib/ChunkGroup.js +115 -28
  14. package/lib/ChunkTemplate.js +9 -0
  15. package/lib/CircularModulesPlugin.js +190 -0
  16. package/lib/CleanPlugin.js +27 -28
  17. package/lib/CodeGenerationResults.js +19 -0
  18. package/lib/CompatibilityPlugin.js +85 -37
  19. package/lib/Compilation.js +656 -112
  20. package/lib/Compiler.js +109 -35
  21. package/lib/ConcatenationScope.js +34 -4
  22. package/lib/ConditionalInitFragment.js +6 -0
  23. package/lib/ConstPlugin.js +15 -12
  24. package/lib/ContextExclusionPlugin.js +3 -1
  25. package/lib/ContextModule.js +345 -55
  26. package/lib/ContextModuleFactory.js +193 -51
  27. package/lib/ContextReplacementPlugin.js +8 -1
  28. package/lib/DefinePlugin.js +537 -139
  29. package/lib/DependenciesBlock.js +6 -1
  30. package/lib/Dependency.js +159 -11
  31. package/lib/DependencyTemplate.js +7 -1
  32. package/lib/DependencyTemplates.js +4 -0
  33. package/lib/DotenvPlugin.js +3 -0
  34. package/lib/DynamicEntryPlugin.js +3 -1
  35. package/lib/EntryOptionPlugin.js +42 -2
  36. package/lib/EntryPlugin.js +4 -1
  37. package/lib/Entrypoint.js +5 -1
  38. package/lib/EnvironmentPlugin.js +3 -2
  39. package/lib/ErrorHelpers.js +7 -0
  40. package/lib/EvalDevToolModulePlugin.js +3 -1
  41. package/lib/EvalSourceMapDevToolPlugin.js +11 -11
  42. package/lib/ExportsInfo.js +421 -113
  43. package/lib/ExportsInfoApiPlugin.js +4 -3
  44. package/lib/ExternalModule.js +381 -80
  45. package/lib/ExternalModuleFactoryPlugin.js +75 -3
  46. package/lib/ExternalsPlugin.js +3 -1
  47. package/lib/FileSystemInfo.js +701 -175
  48. package/lib/FlagAllModulesAsUsedPlugin.js +3 -6
  49. package/lib/FlagDependencyExportsPlugin.js +82 -9
  50. package/lib/FlagDependencyUsagePlugin.js +115 -8
  51. package/lib/FlagEntryExportAsUsedPlugin.js +4 -1
  52. package/lib/Generator.js +24 -3
  53. package/lib/HotModuleReplacementPlugin.js +110 -44
  54. package/lib/IgnorePlugin.js +5 -2
  55. package/lib/IgnoreWarningsPlugin.js +2 -1
  56. package/lib/InitFragment.js +33 -30
  57. package/lib/JavascriptMetaInfoPlugin.js +9 -6
  58. package/lib/LazyBarrel.js +389 -0
  59. package/lib/LibraryTemplatePlugin.js +2 -1
  60. package/lib/LoaderOptionsPlugin.js +3 -1
  61. package/lib/LoaderTargetPlugin.js +3 -1
  62. package/lib/MainTemplate.js +15 -0
  63. package/lib/ManifestPlugin.js +9 -2
  64. package/lib/Module.js +121 -57
  65. package/lib/ModuleFactory.js +6 -1
  66. package/lib/ModuleFilenameHelpers.js +18 -4
  67. package/lib/ModuleGraph.js +69 -2
  68. package/lib/ModuleGraphConnection.js +9 -0
  69. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  70. package/lib/ModuleNotFoundError.js +3 -83
  71. package/lib/ModuleProfile.js +27 -1
  72. package/lib/ModuleSourceTypeConstants.js +52 -19
  73. package/lib/ModuleTemplate.js +10 -0
  74. package/lib/ModuleTypeConstants.js +20 -4
  75. package/lib/MultiCompiler.js +59 -4
  76. package/lib/MultiStats.js +9 -0
  77. package/lib/MultiWatching.js +6 -0
  78. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  79. package/lib/NodeStuffPlugin.js +78 -46
  80. package/lib/NormalModule.js +519 -206
  81. package/lib/NormalModuleFactory.js +156 -31
  82. package/lib/NormalModuleReplacementPlugin.js +3 -1
  83. package/lib/NullFactory.js +1 -0
  84. package/lib/OptionsApply.js +1 -0
  85. package/lib/Parser.js +3 -1
  86. package/lib/PlatformPlugin.js +2 -1
  87. package/lib/PrefetchPlugin.js +4 -1
  88. package/lib/ProgressPlugin.js +351 -161
  89. package/lib/ProvidePlugin.js +6 -3
  90. package/lib/RawModule.js +32 -16
  91. package/lib/RecordIdsPlugin.js +9 -0
  92. package/lib/RequestShortener.js +8 -0
  93. package/lib/ResolverFactory.js +5 -0
  94. package/lib/RuntimeGlobals.js +58 -5
  95. package/lib/RuntimeModule.js +22 -7
  96. package/lib/RuntimePlugin.js +123 -118
  97. package/lib/RuntimeTemplate.js +616 -37
  98. package/lib/SelfModuleFactory.js +3 -0
  99. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  100. package/lib/SourceMapDevToolPlugin.js +341 -63
  101. package/lib/Stats.js +6 -0
  102. package/lib/Template.js +52 -6
  103. package/lib/TemplatedPathPlugin.js +505 -138
  104. package/lib/UseStrictPlugin.js +3 -2
  105. package/lib/WarnCaseSensitiveModulesPlugin.js +72 -3
  106. package/lib/WarnDeprecatedOptionPlugin.js +6 -2
  107. package/lib/WarnNoModeSetPlugin.js +18 -2
  108. package/lib/WatchIgnorePlugin.js +5 -1
  109. package/lib/Watching.js +25 -3
  110. package/lib/WebpackError.js +3 -74
  111. package/lib/WebpackIsIncludedPlugin.js +4 -2
  112. package/lib/WebpackOptionsApply.js +88 -25
  113. package/lib/WebpackOptionsDefaulter.js +1 -0
  114. package/lib/asset/AssetBytesGenerator.js +28 -10
  115. package/lib/asset/AssetBytesParser.js +1 -0
  116. package/lib/asset/AssetGenerator.js +199 -60
  117. package/lib/asset/AssetModule.js +47 -0
  118. package/lib/asset/AssetModulesPlugin.js +115 -24
  119. package/lib/asset/AssetParser.js +4 -2
  120. package/lib/asset/AssetSourceGenerator.js +26 -8
  121. package/lib/asset/AssetSourceParser.js +1 -0
  122. package/lib/asset/RawDataUrlModule.js +23 -13
  123. package/lib/asset/WebManifestGenerator.js +164 -0
  124. package/lib/asset/WebManifestParser.js +130 -0
  125. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  126. package/lib/async-modules/AwaitDependenciesInitFragment.js +18 -4
  127. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  128. package/lib/async-modules/isGeneratorLowered.js +26 -0
  129. package/lib/buildChunkGraph.js +107 -15
  130. package/lib/bun/BunTargetPlugin.js +42 -0
  131. package/lib/cache/AddBuildDependenciesPlugin.js +3 -1
  132. package/lib/cache/AddManagedPathsPlugin.js +5 -1
  133. package/lib/cache/IdleFileCachePlugin.js +6 -1
  134. package/lib/cache/MemoryCachePlugin.js +1 -1
  135. package/lib/cache/MemoryWithGcCachePlugin.js +4 -1
  136. package/lib/cache/PackFileCacheStrategy.js +302 -12
  137. package/lib/cache/ResolverCachePlugin.js +12 -1
  138. package/lib/cache/getLazyHashedEtag.js +13 -2
  139. package/lib/cache/mergeEtags.js +4 -0
  140. package/lib/cli.js +142 -20
  141. package/lib/config/browserslistTargetHandler.js +141 -0
  142. package/lib/config/defaults.js +612 -43
  143. package/lib/config/defineConfig.js +31 -0
  144. package/lib/config/normalization.js +46 -1
  145. package/lib/config/target.js +200 -2
  146. package/lib/container/ContainerEntryDependency.js +2 -0
  147. package/lib/container/ContainerEntryModule.js +27 -14
  148. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  149. package/lib/container/ContainerExposedDependency.js +6 -2
  150. package/lib/container/ContainerPlugin.js +2 -1
  151. package/lib/container/ContainerReferencePlugin.js +3 -2
  152. package/lib/container/FallbackDependency.js +9 -7
  153. package/lib/container/FallbackItemDependency.js +1 -0
  154. package/lib/container/FallbackModule.js +22 -9
  155. package/lib/container/FallbackModuleFactory.js +1 -0
  156. package/lib/container/HoistContainerReferencesPlugin.js +47 -55
  157. package/lib/container/ModuleFederationPlugin.js +21 -29
  158. package/lib/container/RemoteModule.js +33 -10
  159. package/lib/container/RemoteRuntimeModule.js +15 -12
  160. package/lib/container/RemoteToExternalDependency.js +1 -0
  161. package/lib/container/options.js +7 -0
  162. package/lib/css/CssGenerator.js +540 -272
  163. package/lib/css/CssInjectStyleRuntimeModule.js +86 -70
  164. package/lib/css/CssLoadingRuntimeModule.js +173 -81
  165. package/lib/{CssModule.js → css/CssModule.js} +72 -37
  166. package/lib/css/CssModulesPlugin.js +371 -208
  167. package/lib/css/CssParser.js +3538 -1963
  168. package/lib/css/syntax.js +4155 -0
  169. package/lib/debug/ProfilingPlugin.js +33 -2
  170. package/lib/deno/DenoTargetPlugin.js +41 -0
  171. package/lib/dependencies/AMDDefineDependency.js +29 -17
  172. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +19 -6
  173. package/lib/dependencies/AMDPlugin.js +6 -3
  174. package/lib/dependencies/AMDRequireArrayDependency.js +13 -11
  175. package/lib/dependencies/AMDRequireContextDependency.js +10 -11
  176. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  177. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +28 -14
  178. package/lib/dependencies/AMDRequireDependency.js +28 -20
  179. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  180. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  181. package/lib/dependencies/CachedConstDependency.js +9 -1
  182. package/lib/dependencies/CommonJsDependencyHelpers.js +104 -0
  183. package/lib/dependencies/CommonJsExportRequireDependency.js +157 -38
  184. package/lib/dependencies/CommonJsExportsDependency.js +74 -20
  185. package/lib/dependencies/CommonJsExportsParserPlugin.js +246 -15
  186. package/lib/dependencies/CommonJsFullRequireDependency.js +91 -27
  187. package/lib/dependencies/CommonJsImportsParserPlugin.js +189 -24
  188. package/lib/dependencies/CommonJsPlugin.js +7 -4
  189. package/lib/dependencies/CommonJsRequireContextDependency.js +13 -13
  190. package/lib/dependencies/CommonJsRequireDependency.js +135 -13
  191. package/lib/dependencies/CommonJsSelfReferenceDependency.js +60 -16
  192. package/lib/dependencies/ConstDependency.js +22 -12
  193. package/lib/dependencies/ContextDependency.js +13 -2
  194. package/lib/dependencies/ContextDependencyHelpers.js +7 -4
  195. package/lib/dependencies/ContextDependencyTemplateAsId.js +2 -1
  196. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  197. package/lib/dependencies/ContextElementDependency.js +27 -14
  198. package/lib/dependencies/CreateRequireParserPlugin.js +14 -7
  199. package/lib/dependencies/CreateScriptUrlDependency.js +9 -7
  200. package/lib/dependencies/CriticalDependencyWarning.js +3 -1
  201. package/lib/dependencies/CssIcssExportDependency.js +681 -367
  202. package/lib/dependencies/CssIcssImportDependency.js +62 -17
  203. package/lib/dependencies/CssIcssSymbolDependency.js +36 -17
  204. package/lib/dependencies/CssImportDependency.js +37 -1
  205. package/lib/dependencies/CssUrlDependency.js +87 -14
  206. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  207. package/lib/dependencies/DllEntryDependency.js +12 -13
  208. package/lib/dependencies/DynamicExports.js +5 -0
  209. package/lib/dependencies/EntryDependency.js +1 -0
  210. package/lib/dependencies/ExportBindingInitFragment.js +164 -0
  211. package/lib/dependencies/ExportsInfoDependency.js +18 -12
  212. package/lib/dependencies/ExternalModuleDependency.js +13 -5
  213. package/lib/dependencies/ExternalModuleInitFragment.js +10 -5
  214. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +19 -12
  215. package/lib/dependencies/HarmonyAcceptDependency.js +24 -26
  216. package/lib/dependencies/HarmonyAcceptImportDependency.js +2 -0
  217. package/lib/dependencies/HarmonyCompatibilityDependency.js +33 -14
  218. package/lib/dependencies/HarmonyDetectionParserPlugin.js +108 -30
  219. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +34 -3
  220. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +70 -33
  221. package/lib/dependencies/HarmonyExportExpressionDependency.js +133 -43
  222. package/lib/dependencies/HarmonyExportHeaderDependency.js +11 -9
  223. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +268 -44
  224. package/lib/dependencies/HarmonyExportInitFragment.js +28 -20
  225. package/lib/dependencies/HarmonyExportSpecifierDependency.js +88 -18
  226. package/lib/dependencies/HarmonyExports.js +6 -1
  227. package/lib/dependencies/HarmonyImportDependency.js +60 -4
  228. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +139 -146
  229. package/lib/dependencies/HarmonyImportGuard.js +427 -0
  230. package/lib/dependencies/HarmonyImportSideEffectDependency.js +22 -1
  231. package/lib/dependencies/HarmonyImportSpecifierDependency.js +146 -24
  232. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +6 -3
  233. package/lib/dependencies/HarmonyModulesPlugin.js +11 -1
  234. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +2 -1
  235. package/lib/dependencies/HtmlEntryDependency.js +1295 -0
  236. package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
  237. package/lib/dependencies/HtmlInlineScriptDependency.js +126 -0
  238. package/lib/dependencies/HtmlInlineStyleDependency.js +152 -0
  239. package/lib/dependencies/HtmlSourceDependency.js +172 -0
  240. package/lib/dependencies/ImportContextDependency.js +9 -9
  241. package/lib/dependencies/ImportDependency.js +92 -3
  242. package/lib/dependencies/ImportEagerDependency.js +2 -0
  243. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  244. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +35 -19
  245. package/lib/dependencies/ImportMetaContextPlugin.js +40 -8
  246. package/lib/dependencies/ImportMetaGlobDependency.js +81 -0
  247. package/lib/dependencies/ImportMetaGlobDependencyParserPlugin.js +78 -0
  248. package/lib/dependencies/ImportMetaGlobHelpers.js +660 -0
  249. package/lib/dependencies/ImportMetaHotAcceptDependency.js +2 -0
  250. package/lib/dependencies/ImportMetaHotDeclineDependency.js +2 -0
  251. package/lib/dependencies/ImportMetaPlugin.js +595 -209
  252. package/lib/dependencies/ImportMetaResolveDependency.js +90 -0
  253. package/lib/dependencies/ImportParserPlugin.js +114 -27
  254. package/lib/dependencies/ImportPhase.js +17 -11
  255. package/lib/dependencies/ImportPlugin.js +2 -1
  256. package/lib/dependencies/ImportWeakDependency.js +3 -0
  257. package/lib/dependencies/JsonExportsDependency.js +15 -10
  258. package/lib/dependencies/LoaderDependency.js +2 -0
  259. package/lib/dependencies/LoaderImportDependency.js +3 -0
  260. package/lib/dependencies/LoaderPlugin.js +9 -2
  261. package/lib/dependencies/LocalModule.js +15 -12
  262. package/lib/dependencies/LocalModuleDependency.js +15 -13
  263. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  264. package/lib/dependencies/ModuleDecoratorDependency.js +16 -10
  265. package/lib/dependencies/ModuleDependency.js +14 -0
  266. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  267. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  268. package/lib/dependencies/ModuleHotAcceptDependency.js +2 -0
  269. package/lib/dependencies/ModuleHotDeclineDependency.js +2 -0
  270. package/lib/dependencies/ModuleInitFragmentDependency.js +19 -11
  271. package/lib/dependencies/NullDependency.js +2 -0
  272. package/lib/dependencies/PrefetchDependency.js +1 -0
  273. package/lib/dependencies/ProvidedDependency.js +36 -27
  274. package/lib/dependencies/PureExpressionDependency.js +14 -10
  275. package/lib/dependencies/RequireContextDependency.js +1 -0
  276. package/lib/dependencies/RequireContextDependencyParserPlugin.js +2 -1
  277. package/lib/dependencies/RequireContextPlugin.js +2 -1
  278. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  279. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +4 -6
  280. package/lib/dependencies/RequireEnsureDependency.js +16 -13
  281. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  282. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  283. package/lib/dependencies/RequireHeaderDependency.js +7 -4
  284. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  285. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +11 -12
  286. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  287. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  288. package/lib/dependencies/RequireResolveContextDependency.js +10 -11
  289. package/lib/dependencies/RequireResolveDependency.js +2 -0
  290. package/lib/dependencies/RequireResolveHeaderDependency.js +8 -5
  291. package/lib/dependencies/RuntimeRequirementsDependency.js +11 -8
  292. package/lib/dependencies/StaticExportsDependency.js +13 -10
  293. package/lib/dependencies/SystemPlugin.js +9 -6
  294. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  295. package/lib/dependencies/TopLevelAwaitDependency.js +93 -0
  296. package/lib/dependencies/URLContextDependency.js +8 -7
  297. package/lib/dependencies/URLDependency.js +157 -33
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +12 -13
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +15 -16
  301. package/lib/dependencies/WebAssemblyImportDependency.js +19 -18
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +3 -0
  303. package/lib/dependencies/{WorkerPlugin.js → WorkerAndWorkletPlugin.js} +364 -114
  304. package/lib/dependencies/WorkerDependency.js +111 -27
  305. package/lib/dependencies/WorkletDependency.js +278 -0
  306. package/lib/dependencies/getFunctionExpression.js +1 -0
  307. package/lib/dependencies/processExportInfo.js +14 -11
  308. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +71 -44
  309. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +27 -4
  310. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +5 -3
  311. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +9 -5
  312. package/lib/{DllModule.js → dll/DllModule.js} +36 -24
  313. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  314. package/lib/{DllPlugin.js → dll/DllPlugin.js} +24 -6
  315. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +26 -18
  316. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +14 -10
  317. package/lib/electron/ElectronTargetPlugin.js +24 -5
  318. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  319. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  320. package/lib/errors/BuildCycleError.js +1 -1
  321. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  322. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  323. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  324. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +5 -2
  325. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +5 -5
  326. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +20 -16
  327. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +7 -4
  328. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +6 -3
  329. package/lib/errors/JSONParseError.js +115 -0
  330. package/lib/errors/LoaderLoadingError.js +20 -0
  331. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +22 -16
  332. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +10 -3
  333. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +13 -5
  334. package/lib/{ModuleError.js → errors/ModuleError.js} +10 -14
  335. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +5 -1
  336. package/lib/errors/ModuleNotFoundError.js +94 -0
  337. package/lib/errors/ModuleParseError.js +141 -0
  338. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +4 -1
  339. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +5 -1
  340. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +13 -14
  341. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +7 -5
  342. package/lib/errors/NonErrorEmittedError.js +30 -0
  343. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +9 -2
  344. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  345. package/lib/errors/WebpackError.js +84 -0
  346. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  347. package/lib/esm/ModuleChunkFormatPlugin.js +52 -15
  348. package/lib/esm/ModuleChunkLoadingPlugin.js +11 -3
  349. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +80 -52
  350. package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
  351. package/lib/hmr/HotModuleReplacementRuntimeModule.js +8 -0
  352. package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
  353. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  354. package/lib/hmr/LazyCompilationPlugin.js +154 -7
  355. package/lib/hmr/lazyCompilationBackend.js +53 -12
  356. package/lib/html/HtmlGenerator.js +1490 -0
  357. package/lib/html/HtmlModule.js +41 -0
  358. package/lib/html/HtmlModulesPlugin.js +1129 -0
  359. package/lib/html/HtmlParser.js +1970 -0
  360. package/lib/html/favicon.svg +1 -0
  361. package/lib/html/syntax.js +9106 -0
  362. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  363. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  364. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  365. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  366. package/lib/ids/IdHelpers.js +49 -12
  367. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  368. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  369. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  370. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  371. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  372. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  373. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  374. package/lib/index.js +66 -15
  375. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +5 -6
  376. package/lib/javascript/BasicEvaluatedExpression.js +370 -49
  377. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  378. package/lib/javascript/ChunkHelpers.js +1 -0
  379. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  380. package/lib/javascript/EnableChunkLoadingPlugin.js +6 -1
  381. package/lib/javascript/JavascriptGenerator.js +213 -51
  382. package/lib/javascript/JavascriptModule.js +54 -0
  383. package/lib/javascript/JavascriptModulesPlugin.js +628 -198
  384. package/lib/javascript/JavascriptParser.js +1334 -471
  385. package/lib/javascript/JavascriptParserHelpers.js +10 -7
  386. package/lib/javascript/StartupHelpers.js +5 -0
  387. package/lib/javascript/syntax.js +5037 -0
  388. package/lib/json/JsonData.js +5 -0
  389. package/lib/json/JsonGenerator.js +21 -0
  390. package/lib/json/JsonModule.js +40 -0
  391. package/lib/json/JsonModulesPlugin.js +8 -1
  392. package/lib/json/JsonParser.js +18 -27
  393. package/lib/library/AbstractLibraryPlugin.js +17 -2
  394. package/lib/library/AmdLibraryPlugin.js +8 -0
  395. package/lib/library/AssignLibraryPlugin.js +21 -3
  396. package/lib/library/EnableLibraryPlugin.js +8 -2
  397. package/lib/library/ExportPropertyLibraryPlugin.js +10 -0
  398. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +2 -1
  399. package/lib/library/JsonpLibraryPlugin.js +8 -0
  400. package/lib/library/ModuleLibraryPlugin.js +154 -7
  401. package/lib/library/SystemLibraryPlugin.js +11 -3
  402. package/lib/library/UmdLibraryPlugin.js +16 -0
  403. package/lib/loaders/LoaderRunner.js +714 -0
  404. package/lib/loaders/loadLoader.js +100 -0
  405. package/lib/logging/Logger.js +17 -0
  406. package/lib/logging/createConsoleLogger.js +7 -0
  407. package/lib/logging/runtime.js +2 -0
  408. package/lib/logging/truncateArgs.js +2 -0
  409. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  410. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  411. package/lib/node/NodeSourcePlugin.js +1 -1
  412. package/lib/node/NodeTargetPlugin.js +4 -63
  413. package/lib/node/NodeTemplatePlugin.js +3 -1
  414. package/lib/node/NodeWatchFileSystem.js +40 -22
  415. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +13 -9
  416. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +33 -3
  417. package/lib/node/ReadFileCompileWasmPlugin.js +28 -3
  418. package/lib/node/RequireChunkLoadingRuntimeModule.js +21 -16
  419. package/lib/node/nodeBuiltins.js +80 -0
  420. package/lib/node/nodeConsole.js +116 -64
  421. package/lib/optimize/AggressiveMergingPlugin.js +22 -16
  422. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  423. package/lib/optimize/ConcatenatedModule.js +603 -130
  424. package/lib/optimize/ConstExportsPlugin.js +211 -0
  425. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  426. package/lib/optimize/FlagIncludedChunksPlugin.js +15 -4
  427. package/lib/optimize/InlineExports.js +178 -0
  428. package/lib/optimize/InnerGraph.js +374 -262
  429. package/lib/optimize/InnerGraphPlugin.js +246 -117
  430. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  431. package/lib/optimize/MangleExportsPlugin.js +5 -1
  432. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  433. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  434. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  435. package/lib/optimize/ModuleConcatenationPlugin.js +229 -55
  436. package/lib/optimize/RealContentHashPlugin.js +130 -52
  437. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  438. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  439. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  440. package/lib/optimize/SideEffectsFlagPlugin.js +381 -55
  441. package/lib/optimize/SplitChunksPlugin.js +200 -50
  442. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  443. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  444. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  445. package/lib/performance/SizeLimitsPlugin.js +8 -2
  446. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  447. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +21 -0
  448. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  449. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  450. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +25 -13
  451. package/lib/prefetch/ResourceHintPlugin.js +687 -0
  452. package/lib/prefetch/ResourceHintRuntimeModule.js +149 -0
  453. package/lib/prefetch/StartupAssetHintRuntimeModule.js +210 -0
  454. package/lib/prefetch/parseResourceHintOptions.js +103 -0
  455. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  456. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  457. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  458. package/lib/rules/RuleSetCompiler.js +132 -0
  459. package/lib/rules/UseEffectRulePlugin.js +10 -3
  460. package/lib/runtime/AsyncModuleGeneratorRuntimeModule.js +56 -0
  461. package/lib/runtime/AsyncModuleRuntimeModule.js +52 -33
  462. package/lib/runtime/AutoPublicPathRuntimeModule.js +22 -9
  463. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  464. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  465. package/lib/runtime/CommonJsWrapRuntimeModule.js +37 -0
  466. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +2 -1
  467. package/lib/runtime/CompatRuntimeModule.js +2 -0
  468. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +7 -4
  469. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  470. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  471. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +34 -4
  472. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  473. package/lib/runtime/GetChunkFilenameRuntimeModule.js +88 -8
  474. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  475. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  476. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +2 -1
  477. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +59 -0
  478. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  479. package/lib/runtime/HasOwnPropertyRuntimeModule.js +2 -1
  480. package/lib/runtime/HelperRuntimeModule.js +5 -0
  481. package/lib/runtime/LoadScriptRuntimeModule.js +28 -37
  482. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +354 -37
  483. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +2 -1
  484. package/lib/runtime/NonceRuntimeModule.js +1 -0
  485. package/lib/runtime/OnChunksLoadedRuntimeModule.js +5 -4
  486. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  487. package/lib/runtime/RelativeUrlRuntimeModule.js +4 -2
  488. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  489. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +38 -0
  490. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  491. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +2 -1
  492. package/lib/runtime/StartupEntrypointRuntimeModule.js +5 -3
  493. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  494. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  495. package/lib/runtime/WorkerRuntimeModule.js +33 -0
  496. package/lib/schemes/DataUriPlugin.js +14 -2
  497. package/lib/schemes/FileUriPlugin.js +1 -1
  498. package/lib/schemes/HttpUriPlugin.js +86 -4
  499. package/lib/schemes/VirtualUrlPlugin.js +8 -4
  500. package/lib/serialization/AggregateErrorSerializer.js +9 -6
  501. package/lib/serialization/ArraySerializer.js +6 -8
  502. package/lib/serialization/BinaryMiddleware.js +427 -1006
  503. package/lib/serialization/DateObjectSerializer.js +4 -2
  504. package/lib/serialization/ErrorObjectSerializer.js +10 -6
  505. package/lib/serialization/FileMiddleware.js +345 -59
  506. package/lib/serialization/MapObjectSerializer.js +7 -9
  507. package/lib/serialization/NullPrototypeObjectSerializer.js +9 -9
  508. package/lib/serialization/ObjectMiddleware.js +73 -13
  509. package/lib/serialization/PlainObjectSerializer.js +16 -8
  510. package/lib/serialization/RegExpObjectSerializer.js +4 -2
  511. package/lib/serialization/Serializer.js +6 -0
  512. package/lib/serialization/SerializerMiddleware.js +14 -2
  513. package/lib/serialization/SetObjectSerializer.js +6 -8
  514. package/lib/serialization/SingleItemMiddleware.js +3 -0
  515. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  516. package/lib/sharing/ConsumeSharedModule.js +21 -7
  517. package/lib/sharing/ConsumeSharedPlugin.js +11 -11
  518. package/lib/sharing/ConsumeSharedRuntimeModule.js +55 -45
  519. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  520. package/lib/sharing/ProvideSharedDependency.js +34 -15
  521. package/lib/sharing/ProvideSharedModule.js +42 -12
  522. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  523. package/lib/sharing/ProvideSharedPlugin.js +13 -8
  524. package/lib/sharing/SharePlugin.js +5 -1
  525. package/lib/sharing/ShareRuntimeModule.js +19 -16
  526. package/lib/sharing/resolveMatchedConfigs.js +6 -2
  527. package/lib/sharing/utils.js +9 -1
  528. package/lib/stats/DefaultStatsFactoryPlugin.js +289 -201
  529. package/lib/stats/DefaultStatsPresetPlugin.js +14 -2
  530. package/lib/stats/DefaultStatsPrinterPlugin.js +74 -170
  531. package/lib/stats/StatsFactory.js +70 -27
  532. package/lib/stats/StatsPrinter.js +16 -2
  533. package/lib/typescript/TypeScriptPlugin.js +210 -0
  534. package/lib/url/URLParserPlugin.js +111 -23
  535. package/lib/util/ArrayHelpers.js +1 -0
  536. package/lib/util/ArrayQueue.js +10 -5
  537. package/lib/util/AsyncQueue.js +154 -74
  538. package/lib/util/Hash.js +2 -2
  539. package/lib/util/IterableHelpers.js +3 -0
  540. package/lib/util/LazyBucketSortedSet.js +26 -0
  541. package/lib/util/LazySet.js +45 -4
  542. package/lib/util/LocConverter.js +64 -0
  543. package/lib/util/ParallelismFactorCalculator.js +1 -0
  544. package/lib/util/Queue.js +6 -3
  545. package/lib/util/Semaphore.js +15 -1
  546. package/lib/util/SetHelpers.js +4 -1
  547. package/lib/util/SortableSet.js +7 -1
  548. package/lib/util/SourceProcessor.js +119 -0
  549. package/lib/util/StackedCacheMap.js +20 -3
  550. package/lib/util/StackedMap.js +162 -43
  551. package/lib/util/StringXor.js +1 -1
  552. package/lib/util/TupleQueue.js +7 -3
  553. package/lib/util/TupleSet.js +14 -0
  554. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  555. package/lib/util/WeakTupleMap.js +60 -1
  556. package/lib/util/binarySearchBounds.js +3 -2
  557. package/lib/util/chainedImports.js +3 -3
  558. package/lib/util/cleverMerge.js +19 -2
  559. package/lib/util/comparators.js +35 -4
  560. package/lib/util/compileBooleanMatcher.js +9 -0
  561. package/lib/util/concatenate.js +80 -24
  562. package/lib/util/conventions.js +46 -1
  563. package/lib/util/createHash.js +0 -1
  564. package/lib/util/createHooksRegistry.js +43 -0
  565. package/lib/util/createMappings.js +118 -0
  566. package/lib/util/dataURL.js +3 -2
  567. package/lib/util/deprecation.js +19 -0
  568. package/lib/util/deterministicGrouping.js +46 -17
  569. package/lib/util/extractSourceMap.js +2 -1
  570. package/lib/util/extractUrlAndGlobal.js +1 -0
  571. package/lib/util/findGraphRoots.js +7 -0
  572. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  573. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +10 -3
  574. package/lib/util/fs.js +87 -14
  575. package/lib/util/generateDebugId.js +1 -0
  576. package/lib/util/globUtils.js +710 -0
  577. package/lib/util/hash/BatchedHash.js +1 -0
  578. package/lib/util/hash/BulkUpdateHash.js +1 -0
  579. package/lib/util/hash/DebugHash.js +1 -0
  580. package/lib/util/hash/hash-digest.js +32 -15
  581. package/lib/util/hash/md4.js +1 -1
  582. package/lib/util/hash/wasm-hash.js +5 -0
  583. package/lib/util/hash/xxhash64.js +1 -1
  584. package/lib/util/identifier.js +118 -7
  585. package/lib/util/implicitTypeLoaderFallback.js +62 -0
  586. package/lib/util/internalSerializables.js +102 -60
  587. package/lib/util/magicComment.js +149 -7
  588. package/lib/util/makeSerializable.js +7 -0
  589. package/lib/util/memoize.js +2 -0
  590. package/lib/util/mimeTypes.js +176 -0
  591. package/lib/util/nonNumericOnlyHash.js +31 -1
  592. package/lib/util/numberHash.js +2 -2
  593. package/lib/util/parseJson.js +41 -0
  594. package/lib/util/processAsyncTree.js +8 -0
  595. package/lib/util/property.js +9 -2
  596. package/lib/util/publicPathPlaceholder.js +64 -0
  597. package/lib/util/registerExternalSerializer.js +24 -4
  598. package/lib/util/removeBOM.js +1 -0
  599. package/lib/util/runtime.js +32 -0
  600. package/lib/util/semver.js +15 -0
  601. package/lib/util/serialization.js +2 -0
  602. package/lib/util/smartGrouping.js +8 -0
  603. package/lib/util/source.js +23 -0
  604. package/lib/util/topologicalSort.js +69 -0
  605. package/lib/validateSchema.js +1 -0
  606. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  607. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +25 -18
  608. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +34 -22
  609. package/lib/wasm-async/AsyncWasmModule.js +77 -0
  610. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  611. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +6 -1
  612. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +22 -126
  613. package/lib/wasm-async/AsyncWebAssemblyParser.js +3 -2
  614. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +13 -2
  615. package/lib/wasm-sync/SyncWasmModule.js +39 -0
  616. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +7 -3
  617. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +86 -19
  618. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +4 -3
  619. package/lib/wasm-sync/WebAssemblyGenerator.js +27 -1
  620. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +9 -3
  621. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  622. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +20 -1
  623. package/lib/wasm-sync/WebAssemblyParser.js +9 -3
  624. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  625. package/lib/web/FetchCompileAsyncWasmPlugin.js +29 -1
  626. package/lib/web/FetchCompileWasmPlugin.js +27 -1
  627. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  628. package/lib/web/JsonpChunkLoadingRuntimeModule.js +58 -64
  629. package/lib/web/JsonpTemplatePlugin.js +2 -1
  630. package/lib/webpack.js +78 -1
  631. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  632. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +15 -10
  633. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  634. package/module.d.ts +21 -0
  635. package/package.json +79 -77
  636. package/schemas/WebpackOptions.check.js +1 -1
  637. package/schemas/WebpackOptions.json +1173 -80
  638. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  639. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  640. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  641. package/schemas/plugins/{DllReferencePlugin.check.d.ts → HtmlParserOptions.check.d.ts} +1 -1
  642. package/schemas/plugins/HtmlParserOptions.check.js +6 -0
  643. package/schemas/plugins/HtmlParserOptions.json +3 -0
  644. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  645. package/schemas/plugins/ProgressPlugin.json +38 -0
  646. package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
  647. package/schemas/plugins/container/ContainerReferencePlugin.json +2 -0
  648. package/schemas/plugins/container/ExternalsType.check.js +1 -1
  649. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  650. package/schemas/plugins/container/ModuleFederationPlugin.json +2 -0
  651. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.d.ts +7 -0
  652. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  653. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  654. package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
  655. package/schemas/plugins/css/CssParserOptions.check.js +1 -1
  656. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  657. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  658. package/types.d.ts +11053 -3019
  659. package/lib/CaseSensitiveModulesWarning.js +0 -72
  660. package/lib/GraphHelpers.js +0 -46
  661. package/lib/ModuleParseError.js +0 -125
  662. package/lib/NoModeWarning.js +0 -23
  663. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  664. package/lib/css/walkCssTokens.js +0 -1843
  665. package/lib/util/AppendOnlyStackedSet.js +0 -78
  666. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  667. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  668. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  669. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -0,0 +1,90 @@
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 RuntimeGlobals = require("../RuntimeGlobals");
9
+ const makeSerializable = require("../util/makeSerializable");
10
+ const ModuleDependency = require("./ModuleDependency");
11
+ const URLDependency = require("./URLDependency");
12
+
13
+ /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
+ /** @typedef {import("../Dependency")} Dependency */
15
+ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16
+ /** @typedef {import("../javascript/JavascriptParser").Range} Range */
17
+
18
+ // `import.meta.resolve(specifier)` is the string form of
19
+ // `new URL(specifier, import.meta.url)`, so it reuses the URL asset pipeline
20
+ // but renders to the resolved URL string (`.href`) over the whole call.
21
+ class ImportMetaResolveDependency extends URLDependency {
22
+ get type() {
23
+ return "import.meta.resolve()";
24
+ }
25
+ }
26
+
27
+ ImportMetaResolveDependency.Template = class ImportMetaResolveDependencyTemplate extends (
28
+ ModuleDependency.Template
29
+ ) {
30
+ /**
31
+ * Applies the plugin by registering its hooks on the compiler.
32
+ * @param {Dependency} dependency the dependency for which the template should be applied
33
+ * @param {ReplaceSource} source the current replace source which can be modified
34
+ * @param {DependencyTemplateContext} templateContext the context object
35
+ * @returns {void}
36
+ */
37
+ apply(dependency, source, templateContext) {
38
+ const {
39
+ chunkGraph,
40
+ moduleGraph,
41
+ runtimeRequirements,
42
+ runtimeTemplate,
43
+ runtime
44
+ } = templateContext;
45
+ const dep = /** @type {ImportMetaResolveDependency} */ (dependency);
46
+ const connection = moduleGraph.getConnection(dep);
47
+ // Skip rendering the dependency when it is conditional and inactive.
48
+ if (connection && !connection.isTargetActive(runtime)) {
49
+ source.replace(
50
+ dep.outerRange[0],
51
+ dep.outerRange[1] - 1,
52
+ "/* unused asset import */ undefined"
53
+ );
54
+ return;
55
+ }
56
+
57
+ runtimeRequirements.add(RuntimeGlobals.require);
58
+
59
+ const moduleRaw = runtimeTemplate.moduleRaw({
60
+ chunkGraph,
61
+ module: moduleGraph.getModule(dep),
62
+ request: dep.request,
63
+ runtimeRequirements,
64
+ weak: false
65
+ });
66
+
67
+ if (dep.relative) {
68
+ runtimeRequirements.add(RuntimeGlobals.relativeUrl);
69
+ source.replace(
70
+ dep.outerRange[0],
71
+ dep.outerRange[1] - 1,
72
+ `(new ${RuntimeGlobals.relativeUrl}(/* asset import */ ${moduleRaw})).href`
73
+ );
74
+ } else {
75
+ runtimeRequirements.add(RuntimeGlobals.baseURI);
76
+ source.replace(
77
+ dep.outerRange[0],
78
+ dep.outerRange[1] - 1,
79
+ `(new URL(/* asset import */ ${moduleRaw}, ${RuntimeGlobals.baseURI})).href`
80
+ );
81
+ }
82
+ }
83
+ };
84
+
85
+ makeSerializable(
86
+ ImportMetaResolveDependency,
87
+ "webpack/lib/dependencies/ImportMetaResolveDependency"
88
+ );
89
+
90
+ module.exports = ImportMetaResolveDependency;
@@ -6,12 +6,13 @@
6
6
  "use strict";
7
7
 
8
8
  const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
9
- const CommentCompilationWarning = require("../CommentCompilationWarning");
10
- const UnsupportedFeatureWarning = require("../UnsupportedFeatureWarning");
9
+ const CommentCompilationWarning = require("../errors/CommentCompilationWarning");
10
+ const UnsupportedFeatureWarning = require("../errors/UnsupportedFeatureWarning");
11
11
  const {
12
12
  VariableInfo,
13
13
  getImportAttributes
14
14
  } = require("../javascript/JavascriptParser");
15
+ const memoize = require("../util/memoize");
15
16
  const traverseDestructuringAssignmentProperties = require("../util/traverseDestructuringAssignmentProperties");
16
17
  const ContextDependencyHelpers = require("./ContextDependencyHelpers");
17
18
  const { getNonOptionalPart } = require("./HarmonyImportDependency");
@@ -42,11 +43,14 @@ const ImportWeakDependency = require("./ImportWeakDependency");
42
43
  /** @typedef {{ references: RawReferencedExports, expression: ImportExpression }} ImportSettings */
43
44
  /** @typedef {WeakMap<ImportExpression, RawReferencedExports>} State */
44
45
 
46
+ const getHarmonyImportGuard = memoize(() => require("./HarmonyImportGuard"));
47
+
45
48
  /** @type {WeakMap<JavascriptParserState, State>} */
46
49
  const parserStateMap = new WeakMap();
47
50
  const dynamicImportTag = Symbol("import()");
48
51
 
49
52
  /**
53
+ * Returns import parser plugin state.
50
54
  * @param {JavascriptParser} parser javascript parser
51
55
  * @returns {State} import parser plugin state
52
56
  */
@@ -58,6 +62,7 @@ function getState(parser) {
58
62
  }
59
63
 
60
64
  /**
65
+ * Tag dynamic import referenced.
61
66
  * @param {JavascriptParser} parser javascript parser
62
67
  * @param {ImportExpression} importCall import expression
63
68
  * @param {string} variableName variable name
@@ -78,6 +83,7 @@ function tagDynamicImportReferenced(parser, importCall, variableName) {
78
83
  }
79
84
 
80
85
  /**
86
+ * Gets fulfilled callback namespace obj.
81
87
  * @param {CallExpression} importThen import().then() call
82
88
  * @returns {Identifier | ObjectPattern | undefined} the dynamic imported namespace obj
83
89
  */
@@ -96,6 +102,7 @@ function getFulfilledCallbackNamespaceObj(importThen) {
96
102
  }
97
103
 
98
104
  /**
105
+ * Walk import then fulfilled callback.
99
106
  * @param {JavascriptParser} parser javascript parser
100
107
  * @param {ImportExpression} importCall import expression
101
108
  * @param {ArrowFunctionExpression | FunctionExpression} fulfilledCallback the fulfilled callback
@@ -157,6 +164,7 @@ function walkImportThenFulfilledCallback(
157
164
  }
158
165
 
159
166
  /**
167
+ * Exports from enumerable.
160
168
  * @template T
161
169
  * @param {Iterable<T>} enumerable enumerable
162
170
  * @returns {T[][]} array of array
@@ -166,15 +174,59 @@ const exportsFromEnumerable = (enumerable) =>
166
174
 
167
175
  const PLUGIN_NAME = "ImportParserPlugin";
168
176
 
177
+ /**
178
+ * Whether an `import()` second argument is a fully static attributes object
179
+ * (every `with`/`assert` value is a string literal). Only then can webpack use
180
+ * the attributes at build time; otherwise the argument must be evaluated and
181
+ * validated at runtime per spec.
182
+ * @param {import("estree").Expression | null | undefined} node the second-argument AST node
183
+ * @returns {boolean} true if statically extractable
184
+ */
185
+ const isStaticStringAttributes = (node) => {
186
+ if (!node || node.type !== "ObjectExpression") return false;
187
+ for (const prop of node.properties) {
188
+ if (prop.type !== "Property" || prop.kind !== "init" || prop.computed) {
189
+ return false;
190
+ }
191
+ const key = prop.key;
192
+ const keyName =
193
+ key.type === "Identifier"
194
+ ? key.name
195
+ : key.type === "Literal"
196
+ ? key.value
197
+ : undefined;
198
+ if (keyName === "with" || keyName === "assert") {
199
+ const value = prop.value;
200
+ if (value.type !== "ObjectExpression") return false;
201
+ for (const attr of value.properties) {
202
+ if (attr.type !== "Property" || attr.kind !== "init" || attr.computed) {
203
+ return false;
204
+ }
205
+ const attrValue = attr.value;
206
+ if (
207
+ attrValue.type !== "Literal" ||
208
+ typeof attrValue.value !== "string"
209
+ ) {
210
+ return false;
211
+ }
212
+ }
213
+ }
214
+ }
215
+ return true;
216
+ };
217
+
169
218
  class ImportParserPlugin {
170
219
  /**
220
+ * Creates an instance of ImportParserPlugin.
171
221
  * @param {JavascriptParserOptions} options options
172
222
  */
173
223
  constructor(options) {
224
+ /** @type {JavascriptParserOptions} */
174
225
  this.options = options;
175
226
  }
176
227
 
177
228
  /**
229
+ * Applies the plugin by registering its hooks on the compiler.
178
230
  * @param {JavascriptParser} parser the parser
179
231
  * @returns {void}
180
232
  */
@@ -266,6 +318,7 @@ class ImportParserPlugin {
266
318
 
267
319
  const {
268
320
  dynamicImportPreload,
321
+ dynamicImportCssPreload,
269
322
  dynamicImportPrefetch,
270
323
  dynamicImportFetchPriority
271
324
  } = this.options;
@@ -276,6 +329,13 @@ class ImportParserPlugin {
276
329
  groupOptions.preloadOrder =
277
330
  dynamicImportPreload === true ? 0 : dynamicImportPreload;
278
331
  }
332
+ if (
333
+ dynamicImportCssPreload !== undefined &&
334
+ dynamicImportCssPreload !== false
335
+ ) {
336
+ groupOptions.cssPreloadOrder =
337
+ dynamicImportCssPreload === true ? 0 : dynamicImportCssPreload;
338
+ }
279
339
  if (
280
340
  dynamicImportPrefetch !== undefined &&
281
341
  dynamicImportPrefetch !== false
@@ -299,7 +359,7 @@ class ImportParserPlugin {
299
359
  parser.state.module.addWarning(
300
360
  new CommentCompilationWarning(
301
361
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
302
- /** @type {DependencyLocation} */ (comment.loc)
362
+ parser.getLocation(comment)
303
363
  )
304
364
  );
305
365
  }
@@ -316,7 +376,7 @@ class ImportParserPlugin {
316
376
  parser.state.module.addWarning(
317
377
  new UnsupportedFeatureWarning(
318
378
  `\`webpackIgnore\` expected a boolean, but received: ${importOptions.webpackIgnore}.`,
319
- /** @type {DependencyLocation} */ (expr.loc)
379
+ parser.getLocation(expr)
320
380
  )
321
381
  );
322
382
  } else if (importOptions.webpackIgnore) {
@@ -329,7 +389,7 @@ class ImportParserPlugin {
329
389
  parser.state.module.addWarning(
330
390
  new UnsupportedFeatureWarning(
331
391
  `\`webpackChunkName\` expected a string, but received: ${importOptions.webpackChunkName}.`,
332
- /** @type {DependencyLocation} */ (expr.loc)
392
+ parser.getLocation(expr)
333
393
  )
334
394
  );
335
395
  } else {
@@ -341,7 +401,7 @@ class ImportParserPlugin {
341
401
  parser.state.module.addWarning(
342
402
  new UnsupportedFeatureWarning(
343
403
  `\`webpackMode\` expected a string, but received: ${importOptions.webpackMode}.`,
344
- /** @type {DependencyLocation} */ (expr.loc)
404
+ parser.getLocation(expr)
345
405
  )
346
406
  );
347
407
  } else {
@@ -357,7 +417,7 @@ class ImportParserPlugin {
357
417
  parser.state.module.addWarning(
358
418
  new UnsupportedFeatureWarning(
359
419
  `\`webpackPrefetch\` expected true or a number, but received: ${importOptions.webpackPrefetch}.`,
360
- /** @type {DependencyLocation} */ (expr.loc)
420
+ parser.getLocation(expr)
361
421
  )
362
422
  );
363
423
  }
@@ -371,7 +431,7 @@ class ImportParserPlugin {
371
431
  parser.state.module.addWarning(
372
432
  new UnsupportedFeatureWarning(
373
433
  `\`webpackPreload\` expected true or a number, but received: ${importOptions.webpackPreload}.`,
374
- /** @type {DependencyLocation} */ (expr.loc)
434
+ parser.getLocation(expr)
375
435
  )
376
436
  );
377
437
  }
@@ -388,7 +448,7 @@ class ImportParserPlugin {
388
448
  parser.state.module.addWarning(
389
449
  new UnsupportedFeatureWarning(
390
450
  `\`webpackFetchPriority\` expected true or "low", "high" or "auto", but received: ${importOptions.webpackFetchPriority}.`,
391
- /** @type {DependencyLocation} */ (expr.loc)
451
+ parser.getLocation(expr)
392
452
  )
393
453
  );
394
454
  }
@@ -401,7 +461,7 @@ class ImportParserPlugin {
401
461
  parser.state.module.addWarning(
402
462
  new UnsupportedFeatureWarning(
403
463
  `\`webpackInclude\` expected a regular expression, but received: ${importOptions.webpackInclude}.`,
404
- /** @type {DependencyLocation} */ (expr.loc)
464
+ parser.getLocation(expr)
405
465
  )
406
466
  );
407
467
  } else {
@@ -416,7 +476,7 @@ class ImportParserPlugin {
416
476
  parser.state.module.addWarning(
417
477
  new UnsupportedFeatureWarning(
418
478
  `\`webpackExclude\` expected a regular expression, but received: ${importOptions.webpackExclude}.`,
419
- /** @type {DependencyLocation} */ (expr.loc)
479
+ parser.getLocation(expr)
420
480
  )
421
481
  );
422
482
  } else {
@@ -424,19 +484,17 @@ class ImportParserPlugin {
424
484
  }
425
485
  }
426
486
  if (importOptions.webpackExports !== undefined) {
427
- if (
428
- !(
429
- typeof importOptions.webpackExports === "string" ||
430
- (Array.isArray(importOptions.webpackExports) &&
431
- importOptions.webpackExports.every(
432
- (item) => typeof item === "string"
433
- ))
434
- )
435
- ) {
487
+ if (!(
488
+ typeof importOptions.webpackExports === "string" ||
489
+ (Array.isArray(importOptions.webpackExports) &&
490
+ importOptions.webpackExports.every(
491
+ (item) => typeof item === "string"
492
+ ))
493
+ )) {
436
494
  parser.state.module.addWarning(
437
495
  new UnsupportedFeatureWarning(
438
496
  `\`webpackExports\` expected a string or an array of strings, but received: ${importOptions.webpackExports}.`,
439
- /** @type {DependencyLocation} */ (expr.loc)
497
+ parser.getLocation(expr)
440
498
  )
441
499
  );
442
500
  } else if (typeof importOptions.webpackExports === "string") {
@@ -445,6 +503,20 @@ class ImportParserPlugin {
445
503
  exports = exportsFromEnumerable(importOptions.webpackExports);
446
504
  }
447
505
  }
506
+ // `worker` is an internal entry option set only for workers
507
+ if (
508
+ importOptions.webpackEntryOptions !== undefined &&
509
+ typeof importOptions.webpackEntryOptions === "object" &&
510
+ importOptions.webpackEntryOptions !== null &&
511
+ importOptions.webpackEntryOptions.worker !== undefined
512
+ ) {
513
+ parser.state.module.addWarning(
514
+ new UnsupportedFeatureWarning(
515
+ "`worker` entry option is not supported in `import()`, it only applies to workers (e.g. `new Worker(new URL(...))`).",
516
+ parser.getLocation(expr)
517
+ )
518
+ );
519
+ }
448
520
  }
449
521
 
450
522
  if (
@@ -456,7 +528,7 @@ class ImportParserPlugin {
456
528
  parser.state.module.addWarning(
457
529
  new UnsupportedFeatureWarning(
458
530
  `\`webpackMode\` expected 'lazy', 'lazy-once', 'eager' or 'weak', but received: ${mode}.`,
459
- /** @type {DependencyLocation} */ (expr.loc)
531
+ parser.getLocation(expr)
460
532
  )
461
533
  );
462
534
  mode = "lazy";
@@ -477,7 +549,7 @@ class ImportParserPlugin {
477
549
  parser.state.module.addWarning(
478
550
  new UnsupportedFeatureWarning(
479
551
  "You don't need `webpackExports` if the usage of dynamic import is statically analyse-able. You can safely remove the `webpackExports` magic comment.",
480
- /** @type {DependencyLocation} */ (expr.loc)
552
+ parser.getLocation(expr)
481
553
  )
482
554
  );
483
555
  }
@@ -529,20 +601,35 @@ class ImportParserPlugin {
529
601
  ...groupOptions,
530
602
  name: chunkName
531
603
  },
532
- /** @type {DependencyLocation} */ (expr.loc),
604
+ parser.getLocation(expr),
533
605
  param.string
534
606
  );
607
+ // A second argument that isn't a statically extractable attributes
608
+ // object still has to be evaluated and validated at runtime, so
609
+ // drop the (unreliable) static attributes for it.
610
+ const optionsNode = expr.options;
611
+ const runtimeValidateOptions = Boolean(
612
+ optionsNode && !isStaticStringAttributes(optionsNode)
613
+ );
535
614
  const dep = new ImportDependency(
536
615
  /** @type {string} */ (param.string),
537
616
  /** @type {Range} */ (expr.range),
538
617
  exports,
539
618
  phase,
540
- attributes
619
+ runtimeValidateOptions ? undefined : attributes
541
620
  );
542
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
621
+ if (runtimeValidateOptions && optionsNode && optionsNode.range) {
622
+ dep.optionsRange = /** @type {Range} */ (optionsNode.range);
623
+ // The options expression stays in the output, so walk it to
624
+ // register its variable references and keep them from being
625
+ // tree-shaken away.
626
+ parser.walkExpression(optionsNode);
627
+ }
628
+ dep.loc = parser.getLocation(expr);
543
629
  dep.optional = Boolean(parser.scope.inTry);
544
630
  depBlock.addDependency(dep);
545
631
  parser.state.current.addBlock(depBlock);
632
+ getHarmonyImportGuard().attachDependencyGuards(parser, dep);
546
633
  }
547
634
  } else {
548
635
  if (mode === "weak") {
@@ -575,7 +662,7 @@ class ImportParserPlugin {
575
662
  parser
576
663
  );
577
664
  if (!dep) return;
578
- dep.loc = /** @type {DependencyLocation} */ (expr.loc);
665
+ dep.loc = parser.getLocation(expr);
579
666
  dep.optional = Boolean(parser.scope.inTry);
580
667
  parser.state.current.addDependency(dep);
581
668
  }
@@ -8,7 +8,7 @@
8
8
  const memoize = require("../util/memoize");
9
9
 
10
10
  const getCommentCompilationWarning = memoize(() =>
11
- require("../CommentCompilationWarning")
11
+ require("../errors/CommentCompilationWarning")
12
12
  );
13
13
 
14
14
  /** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
@@ -28,6 +28,7 @@ const ImportPhase = Object.freeze({
28
28
  /** @typedef {"defer" | "source" | "evaluation"} ImportPhaseName */
29
29
 
30
30
  /**
31
+ * Defines the import phase utils type used by this module.
31
32
  * @typedef {object} ImportPhaseUtils
32
33
  * @property {(phase: ImportPhaseType | undefined) => boolean} isEvaluation true if phase is evaluation
33
34
  * @property {(phase: ImportPhaseType | undefined) => boolean} isDefer true if phase is defer
@@ -59,10 +60,12 @@ const ImportPhaseUtils = {
59
60
  };
60
61
 
61
62
  /**
63
+ * Defines the get comment options type used by this module.
62
64
  * @typedef {() => Record<string, EXPECTED_ANY> | null} GetCommentOptions
63
65
  */
64
66
 
65
67
  /**
68
+ * Defines the get import phase callback.
66
69
  * @callback GetImportPhase
67
70
  * @param {JavascriptParser} parser parser
68
71
  * @param {ExportNamedDeclaration | ExportAllDeclaration | ImportDeclaration | ImportExpression} node node
@@ -71,8 +74,9 @@ const ImportPhaseUtils = {
71
74
  */
72
75
 
73
76
  /**
74
- * @param {boolean=} enableDeferPhase enable import phase detection
75
- * @param {boolean=} enableSourcePhase enable import phase detection
77
+ * Creates an import phase resolver.
78
+ * @param {boolean=} enableDeferPhase enable defer phase detection
79
+ * @param {boolean=} enableSourcePhase enable source phase detection
76
80
  * @returns {GetImportPhase} evaluates the import phase for ast node
77
81
  */
78
82
  function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
@@ -99,15 +103,13 @@ function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
99
103
  if (!node.range) return null;
100
104
  const { options, errors } = parser.parseCommentOptions(node.range);
101
105
  if (errors) {
106
+ const CommentCompilationWarning = getCommentCompilationWarning();
102
107
  for (const e of errors) {
103
108
  const { comment } = e;
104
- if (!comment.loc) continue;
105
-
106
- const CommentCompilationWarning = getCommentCompilationWarning();
107
109
  parser.state.module.addWarning(
108
110
  new CommentCompilationWarning(
109
111
  `Compilation error while processing magic comment(-s): /*${comment.value}*/: ${e.message}`,
110
- comment.loc
112
+ parser.getLocation(comment)
111
113
  )
112
114
  );
113
115
  }
@@ -130,13 +132,15 @@ function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
130
132
  if (enableDeferPhase && typeof options.webpackDefer !== "undefined") {
131
133
  if (typeof webpackDefer === "boolean") {
132
134
  return webpackDefer ? ImportPhase.Defer : phaseBySyntax;
133
- } else if (node.loc) {
135
+ }
136
+ const loc = parser.getLocation(node);
137
+ if (loc) {
134
138
  const CommentCompilationWarning = getCommentCompilationWarning();
135
139
 
136
140
  parser.state.module.addWarning(
137
141
  new CommentCompilationWarning(
138
142
  "webpackDefer magic comment expected a boolean value.",
139
- node.loc
143
+ loc
140
144
  )
141
145
  );
142
146
  }
@@ -145,13 +149,15 @@ function createGetImportPhase(enableDeferPhase, enableSourcePhase) {
145
149
  if (enableSourcePhase && typeof options.webpackSource !== "undefined") {
146
150
  if (typeof webpackSource === "boolean") {
147
151
  return webpackSource ? ImportPhase.Source : phaseBySyntax;
148
- } else if (node.loc) {
152
+ }
153
+ const loc = parser.getLocation(node);
154
+ if (loc) {
149
155
  const CommentCompilationWarning = getCommentCompilationWarning();
150
156
 
151
157
  parser.state.module.addWarning(
152
158
  new CommentCompilationWarning(
153
159
  "webpackSource magic comment expected a boolean value.",
154
- node.loc
160
+ loc
155
161
  )
156
162
  );
157
163
  }
@@ -24,7 +24,7 @@ const PLUGIN_NAME = "ImportPlugin";
24
24
 
25
25
  class ImportPlugin {
26
26
  /**
27
- * Apply the plugin
27
+ * Applies the plugin by registering its hooks on the compiler.
28
28
  * @param {Compiler} compiler the compiler instance
29
29
  * @returns {void}
30
30
  */
@@ -69,6 +69,7 @@ class ImportPlugin {
69
69
  );
70
70
 
71
71
  /**
72
+ * Handles the hook callback for this code path.
72
73
  * @param {Parser} parser parser parser
73
74
  * @param {JavascriptParserOptions} parserOptions parserOptions
74
75
  * @returns {void}
@@ -20,6 +20,7 @@ const ImportDependency = require("./ImportDependency");
20
20
 
21
21
  class ImportWeakDependency extends ImportDependency {
22
22
  /**
23
+ * Creates an instance of ImportWeakDependency.
23
24
  * @param {string} request the request
24
25
  * @param {Range} range expression range
25
26
  * @param {RawReferencedExports | null} referencedExports list of referenced exports
@@ -28,6 +29,7 @@ class ImportWeakDependency extends ImportDependency {
28
29
  */
29
30
  constructor(request, range, referencedExports, phase, attributes) {
30
31
  super(request, range, referencedExports, phase, attributes);
32
+ /** @type {boolean} */
31
33
  this.weak = true;
32
34
  }
33
35
 
@@ -45,6 +47,7 @@ ImportWeakDependency.Template = class ImportDependencyTemplate extends (
45
47
  ImportDependency.Template
46
48
  ) {
47
49
  /**
50
+ * Applies the plugin by registering its hooks on the compiler.
48
51
  * @param {Dependency} dependency the dependency for which the template should be applied
49
52
  * @param {ReplaceSource} source the current replace source which can be modified
50
53
  * @param {DependencyTemplateContext} templateContext the context object
@@ -14,11 +14,12 @@ const NullDependency = require("./NullDependency");
14
14
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
15
15
  /** @typedef {import("../json/JsonData")} JsonData */
16
16
  /** @typedef {import("../json/JsonData").JsonValue} JsonValue */
17
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
18
- /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
17
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[JsonData, number]>} ObjectDeserializerContext */
18
+ /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[JsonData, number]>} ObjectSerializerContext */
19
19
  /** @typedef {import("../util/Hash")} Hash */
20
20
 
21
21
  /**
22
+ * Defines the get exports from data fn callback.
22
23
  * @callback GetExportsFromDataFn
23
24
  * @param {JsonValue} data raw json data
24
25
  * @param {number=} curDepth current depth
@@ -26,6 +27,7 @@ const NullDependency = require("./NullDependency");
26
27
  */
27
28
 
28
29
  /**
30
+ * Gets exports with depth.
29
31
  * @param {number} exportsDepth exportsDepth
30
32
  * @returns {GetExportsFromDataFn} value
31
33
  */
@@ -71,12 +73,15 @@ const getExportsWithDepth = (exportsDepth) =>
71
73
 
72
74
  class JsonExportsDependency extends NullDependency {
73
75
  /**
76
+ * Creates an instance of JsonExportsDependency.
74
77
  * @param {JsonData} data json data
75
78
  * @param {number} exportsDepth the depth of json exports to analyze
76
79
  */
77
80
  constructor(data, exportsDepth) {
78
81
  super();
82
+ /** @type {JsonData} */
79
83
  this.data = data;
84
+ /** @type {number} */
80
85
  this.exportsDepth = exportsDepth;
81
86
  }
82
87
 
@@ -99,7 +104,7 @@ class JsonExportsDependency extends NullDependency {
99
104
  }
100
105
 
101
106
  /**
102
- * Update the hash
107
+ * Updates the hash with the data contributed by this instance.
103
108
  * @param {Hash} hash hash to be updated
104
109
  * @param {UpdateHashContext} context context
105
110
  * @returns {void}
@@ -109,23 +114,23 @@ class JsonExportsDependency extends NullDependency {
109
114
  }
110
115
 
111
116
  /**
117
+ * Serializes this instance into the provided serializer context.
112
118
  * @param {ObjectSerializerContext} context context
113
119
  */
114
120
  serialize(context) {
115
- const { write } = context;
116
- write(this.data);
117
- write(this.exportsDepth);
121
+ context.write(this.data).write(this.exportsDepth);
118
122
  super.serialize(context);
119
123
  }
120
124
 
121
125
  /**
126
+ * Restores this instance from the provided deserializer context.
122
127
  * @param {ObjectDeserializerContext} context context
123
128
  */
124
129
  deserialize(context) {
125
- const { read } = context;
126
- this.data = read();
127
- this.exportsDepth = read();
128
- super.deserialize(context);
130
+ this.data = context.read();
131
+ const c1 = context.rest;
132
+ this.exportsDepth = c1.read();
133
+ super.deserialize(c1.rest);
129
134
  }
130
135
  }
131
136
 
@@ -12,6 +12,7 @@ const ModuleDependency = require("./ModuleDependency");
12
12
 
13
13
  class LoaderDependency extends ModuleDependency {
14
14
  /**
15
+ * Creates an instance of LoaderDependency.
15
16
  * @param {string} request request string
16
17
  */
17
18
  constructor(request) {
@@ -27,6 +28,7 @@ class LoaderDependency extends ModuleDependency {
27
28
  }
28
29
 
29
30
  /**
31
+ * Returns function to determine if the connection is active.
30
32
  * @param {ModuleGraph} moduleGraph module graph
31
33
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
32
34
  */
@@ -12,10 +12,12 @@ const ModuleDependency = require("./ModuleDependency");
12
12
 
13
13
  class LoaderImportDependency extends ModuleDependency {
14
14
  /**
15
+ * Creates an instance of LoaderImportDependency.
15
16
  * @param {string} request request string
16
17
  */
17
18
  constructor(request) {
18
19
  super(request);
20
+ /** @type {boolean} */
19
21
  this.weak = true;
20
22
  }
21
23
 
@@ -28,6 +30,7 @@ class LoaderImportDependency extends ModuleDependency {
28
30
  }
29
31
 
30
32
  /**
33
+ * Returns function to determine if the connection is active.
31
34
  * @param {ModuleGraph} moduleGraph module graph
32
35
  * @returns {null | false | GetConditionFn} function to determine if the connection is active
33
36
  */