webpack 5.106.1 → 5.107.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 (600) hide show
  1. package/README.md +2 -2
  2. package/lib/APIPlugin.js +4 -2
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AutomaticPrefetchPlugin.js +6 -1
  5. package/lib/BannerPlugin.js +10 -1
  6. package/lib/Cache.js +27 -5
  7. package/lib/CacheFacade.js +26 -0
  8. package/lib/Chunk.js +46 -0
  9. package/lib/ChunkGraph.js +111 -0
  10. package/lib/ChunkGroup.js +57 -13
  11. package/lib/ChunkTemplate.js +9 -0
  12. package/lib/CleanPlugin.js +14 -1
  13. package/lib/CodeGenerationResults.js +19 -0
  14. package/lib/CompatibilityPlugin.js +23 -8
  15. package/lib/Compilation.js +161 -27
  16. package/lib/Compiler.js +41 -17
  17. package/lib/ConcatenationScope.js +24 -1
  18. package/lib/ConditionalInitFragment.js +6 -0
  19. package/lib/ConstPlugin.js +4 -1
  20. package/lib/ContextExclusionPlugin.js +2 -1
  21. package/lib/ContextModule.js +14 -2
  22. package/lib/ContextModuleFactory.js +10 -0
  23. package/lib/ContextReplacementPlugin.js +4 -1
  24. package/lib/DefinePlugin.js +22 -9
  25. package/lib/DependenciesBlock.js +6 -1
  26. package/lib/Dependency.js +48 -4
  27. package/lib/DependencyTemplate.js +7 -1
  28. package/lib/DependencyTemplates.js +4 -0
  29. package/lib/DotenvPlugin.js +3 -0
  30. package/lib/DynamicEntryPlugin.js +3 -1
  31. package/lib/EntryOptionPlugin.js +3 -0
  32. package/lib/EntryPlugin.js +2 -1
  33. package/lib/Entrypoint.js +4 -0
  34. package/lib/EnvironmentPlugin.js +3 -2
  35. package/lib/ErrorHelpers.js +7 -0
  36. package/lib/EvalDevToolModulePlugin.js +3 -1
  37. package/lib/EvalSourceMapDevToolPlugin.js +11 -10
  38. package/lib/ExportsInfo.js +56 -2
  39. package/lib/ExportsInfoApiPlugin.js +2 -1
  40. package/lib/ExternalModule.js +114 -15
  41. package/lib/ExternalModuleFactoryPlugin.js +15 -0
  42. package/lib/ExternalsPlugin.js +2 -1
  43. package/lib/FileSystemInfo.js +291 -71
  44. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  45. package/lib/FlagDependencyExportsPlugin.js +4 -1
  46. package/lib/FlagDependencyUsagePlugin.js +5 -1
  47. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  48. package/lib/Generator.js +16 -3
  49. package/lib/HotModuleReplacementPlugin.js +35 -9
  50. package/lib/IgnorePlugin.js +4 -2
  51. package/lib/IgnoreWarningsPlugin.js +2 -1
  52. package/lib/InitFragment.js +10 -0
  53. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  54. package/lib/LibraryTemplatePlugin.js +2 -1
  55. package/lib/LoaderOptionsPlugin.js +3 -1
  56. package/lib/LoaderTargetPlugin.js +2 -1
  57. package/lib/MainTemplate.js +15 -0
  58. package/lib/ManifestPlugin.js +9 -2
  59. package/lib/Module.js +101 -19
  60. package/lib/ModuleFactory.js +6 -1
  61. package/lib/ModuleFilenameHelpers.js +3 -0
  62. package/lib/ModuleGraph.js +66 -0
  63. package/lib/ModuleGraphConnection.js +9 -0
  64. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  65. package/lib/ModuleSourceTypeConstants.js +32 -1
  66. package/lib/ModuleTemplate.js +8 -0
  67. package/lib/ModuleTypeConstants.js +12 -3
  68. package/lib/MultiCompiler.js +30 -2
  69. package/lib/MultiStats.js +8 -0
  70. package/lib/MultiWatching.js +3 -0
  71. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  72. package/lib/NodeStuffPlugin.js +11 -2
  73. package/lib/NormalModule.js +43 -33
  74. package/lib/NormalModuleFactory.js +35 -2
  75. package/lib/NormalModuleReplacementPlugin.js +1 -1
  76. package/lib/NullFactory.js +1 -0
  77. package/lib/OptionsApply.js +1 -0
  78. package/lib/Parser.js +3 -1
  79. package/lib/PlatformPlugin.js +2 -1
  80. package/lib/PrefetchPlugin.js +2 -1
  81. package/lib/ProgressPlugin.js +158 -68
  82. package/lib/ProvidePlugin.js +3 -1
  83. package/lib/RawModule.js +12 -0
  84. package/lib/RecordIdsPlugin.js +8 -0
  85. package/lib/RequestShortener.js +8 -0
  86. package/lib/ResolverFactory.js +5 -0
  87. package/lib/RuntimeGlobals.js +6 -5
  88. package/lib/RuntimeModule.js +22 -7
  89. package/lib/RuntimePlugin.js +13 -0
  90. package/lib/RuntimeTemplate.js +35 -1
  91. package/lib/SelfModuleFactory.js +2 -0
  92. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  93. package/lib/SourceMapDevToolPlugin.js +3 -1
  94. package/lib/Stats.js +5 -0
  95. package/lib/Template.js +20 -0
  96. package/lib/TemplatedPathPlugin.js +10 -3
  97. package/lib/UseStrictPlugin.js +2 -1
  98. package/lib/WarnCaseSensitiveModulesPlugin.js +71 -3
  99. package/lib/WarnDeprecatedOptionPlugin.js +2 -2
  100. package/lib/WarnNoModeSetPlugin.js +17 -2
  101. package/lib/WatchIgnorePlugin.js +4 -1
  102. package/lib/Watching.js +16 -3
  103. package/lib/WebpackError.js +3 -74
  104. package/lib/WebpackIsIncludedPlugin.js +3 -1
  105. package/lib/WebpackOptionsApply.js +14 -1
  106. package/lib/WebpackOptionsDefaulter.js +1 -0
  107. package/lib/asset/AssetBytesGenerator.js +12 -2
  108. package/lib/asset/AssetBytesParser.js +1 -0
  109. package/lib/asset/AssetGenerator.js +42 -10
  110. package/lib/asset/AssetModulesPlugin.js +7 -2
  111. package/lib/asset/AssetParser.js +2 -0
  112. package/lib/asset/AssetSourceGenerator.js +12 -2
  113. package/lib/asset/AssetSourceParser.js +1 -0
  114. package/lib/asset/RawDataUrlModule.js +11 -0
  115. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  116. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  117. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  118. package/lib/buildChunkGraph.js +19 -6
  119. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  120. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  121. package/lib/cache/IdleFileCachePlugin.js +2 -1
  122. package/lib/cache/MemoryCachePlugin.js +1 -1
  123. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  124. package/lib/cache/PackFileCacheStrategy.js +33 -4
  125. package/lib/cache/ResolverCachePlugin.js +10 -1
  126. package/lib/cache/getLazyHashedEtag.js +4 -0
  127. package/lib/cache/mergeEtags.js +2 -0
  128. package/lib/cli.js +33 -1
  129. package/lib/config/browserslistTargetHandler.js +2 -0
  130. package/lib/config/defaults.js +232 -12
  131. package/lib/config/normalization.js +15 -1
  132. package/lib/config/target.js +11 -0
  133. package/lib/container/ContainerEntryDependency.js +2 -0
  134. package/lib/container/ContainerEntryModule.js +12 -0
  135. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  136. package/lib/container/ContainerExposedDependency.js +4 -0
  137. package/lib/container/ContainerPlugin.js +2 -1
  138. package/lib/container/ContainerReferencePlugin.js +2 -1
  139. package/lib/container/FallbackDependency.js +4 -0
  140. package/lib/container/FallbackItemDependency.js +1 -0
  141. package/lib/container/FallbackModule.js +12 -0
  142. package/lib/container/FallbackModuleFactory.js +1 -0
  143. package/lib/container/ModuleFederationPlugin.js +3 -1
  144. package/lib/container/RemoteModule.js +13 -0
  145. package/lib/container/RemoteRuntimeModule.js +1 -0
  146. package/lib/container/RemoteToExternalDependency.js +1 -0
  147. package/lib/container/options.js +7 -0
  148. package/lib/css/CssGenerator.js +336 -100
  149. package/lib/css/CssInjectStyleRuntimeModule.js +45 -42
  150. package/lib/css/CssLoadingRuntimeModule.js +23 -4
  151. package/lib/{CssModule.js → css/CssModule.js} +21 -15
  152. package/lib/css/CssModulesPlugin.js +235 -89
  153. package/lib/css/CssParser.js +616 -261
  154. package/lib/css/walkCssTokens.js +179 -2
  155. package/lib/debug/ProfilingPlugin.js +19 -1
  156. package/lib/dependencies/AMDDefineDependency.js +7 -0
  157. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  158. package/lib/dependencies/AMDPlugin.js +4 -1
  159. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  160. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  161. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  162. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +14 -1
  163. package/lib/dependencies/AMDRequireDependency.js +4 -0
  164. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  165. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  166. package/lib/dependencies/CachedConstDependency.js +6 -1
  167. package/lib/dependencies/CommonJsDependencyHelpers.js +64 -0
  168. package/lib/dependencies/CommonJsExportRequireDependency.js +62 -10
  169. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  170. package/lib/dependencies/CommonJsExportsParserPlugin.js +9 -1
  171. package/lib/dependencies/CommonJsFullRequireDependency.js +36 -9
  172. package/lib/dependencies/CommonJsImportsParserPlugin.js +24 -3
  173. package/lib/dependencies/CommonJsPlugin.js +4 -1
  174. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  175. package/lib/dependencies/CommonJsRequireDependency.js +70 -4
  176. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  177. package/lib/dependencies/ConstDependency.js +6 -1
  178. package/lib/dependencies/ContextDependency.js +9 -2
  179. package/lib/dependencies/ContextDependencyHelpers.js +4 -1
  180. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  181. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  182. package/lib/dependencies/ContextElementDependency.js +4 -0
  183. package/lib/dependencies/CreateRequireParserPlugin.js +7 -1
  184. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  185. package/lib/dependencies/CriticalDependencyWarning.js +2 -1
  186. package/lib/dependencies/CssIcssExportDependency.js +339 -66
  187. package/lib/dependencies/CssIcssImportDependency.js +53 -8
  188. package/lib/dependencies/CssIcssSymbolDependency.js +16 -4
  189. package/lib/dependencies/CssImportDependency.js +12 -0
  190. package/lib/dependencies/CssUrlDependency.js +32 -0
  191. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  192. package/lib/dependencies/DllEntryDependency.js +3 -0
  193. package/lib/dependencies/DynamicExports.js +5 -0
  194. package/lib/dependencies/EntryDependency.js +1 -0
  195. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  196. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  197. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  198. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  199. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  200. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  201. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  202. package/lib/dependencies/HarmonyDetectionParserPlugin.js +4 -1
  203. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  204. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  205. package/lib/dependencies/HarmonyExportExpressionDependency.js +27 -14
  206. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  207. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +143 -5
  208. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  209. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  210. package/lib/dependencies/HarmonyExports.js +2 -0
  211. package/lib/dependencies/HarmonyImportDependency.js +21 -2
  212. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +31 -1
  213. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  214. package/lib/dependencies/HarmonyImportSpecifierDependency.js +18 -3
  215. package/lib/{HarmonyLinkingError.js → dependencies/HarmonyLinkingError.js} +5 -3
  216. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  217. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  218. package/lib/dependencies/HtmlInlineScriptDependency.js +133 -0
  219. package/lib/dependencies/HtmlInlineStyleDependency.js +101 -0
  220. package/lib/dependencies/HtmlScriptSrcDependency.js +318 -0
  221. package/lib/dependencies/HtmlSourceDependency.js +127 -0
  222. package/lib/dependencies/ImportContextDependency.js +4 -0
  223. package/lib/dependencies/ImportDependency.js +5 -0
  224. package/lib/dependencies/ImportEagerDependency.js +2 -0
  225. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  226. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +4 -1
  227. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  228. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  229. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  230. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  231. package/lib/dependencies/ImportParserPlugin.js +9 -2
  232. package/lib/dependencies/ImportPhase.js +7 -3
  233. package/lib/dependencies/ImportPlugin.js +2 -1
  234. package/lib/dependencies/ImportWeakDependency.js +2 -0
  235. package/lib/dependencies/JsonExportsDependency.js +6 -1
  236. package/lib/dependencies/LoaderDependency.js +2 -0
  237. package/lib/dependencies/LoaderImportDependency.js +2 -0
  238. package/lib/dependencies/LoaderPlugin.js +4 -1
  239. package/lib/dependencies/LocalModule.js +4 -0
  240. package/lib/dependencies/LocalModuleDependency.js +4 -0
  241. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  242. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  243. package/lib/dependencies/ModuleDependency.js +7 -0
  244. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  245. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  246. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  247. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  248. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  249. package/lib/dependencies/NullDependency.js +2 -0
  250. package/lib/dependencies/PrefetchDependency.js +1 -0
  251. package/lib/dependencies/ProvidedDependency.js +6 -1
  252. package/lib/dependencies/PureExpressionDependency.js +7 -1
  253. package/lib/dependencies/RequireContextDependency.js +1 -0
  254. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  255. package/lib/dependencies/RequireContextPlugin.js +2 -1
  256. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  257. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  258. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  259. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  260. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  261. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  262. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  263. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +4 -1
  264. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  265. package/lib/{RequireJsStuffPlugin.js → dependencies/RequireJsStuffPlugin.js} +9 -8
  266. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  267. package/lib/dependencies/RequireResolveDependency.js +1 -0
  268. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  269. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  270. package/lib/dependencies/StaticExportsDependency.js +3 -0
  271. package/lib/dependencies/SystemPlugin.js +5 -2
  272. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  273. package/lib/dependencies/URLContextDependency.js +3 -0
  274. package/lib/dependencies/URLDependency.js +6 -0
  275. package/lib/dependencies/URLPlugin.js +2 -0
  276. package/lib/dependencies/UnsupportedDependency.js +4 -0
  277. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  278. package/lib/dependencies/WebAssemblyImportDependency.js +5 -2
  279. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  280. package/lib/dependencies/WorkerDependency.js +6 -1
  281. package/lib/dependencies/WorkerPlugin.js +11 -3
  282. package/lib/dependencies/getFunctionExpression.js +1 -0
  283. package/lib/dependencies/processExportInfo.js +1 -0
  284. package/lib/{DelegatedModule.js → dll/DelegatedModule.js} +44 -31
  285. package/lib/{DelegatedModuleFactoryPlugin.js → dll/DelegatedModuleFactoryPlugin.js} +7 -4
  286. package/lib/{DelegatedPlugin.js → dll/DelegatedPlugin.js} +4 -3
  287. package/lib/{DllEntryPlugin.js → dll/DllEntryPlugin.js} +6 -5
  288. package/lib/{DllModule.js → dll/DllModule.js} +35 -24
  289. package/lib/{DllModuleFactory.js → dll/DllModuleFactory.js} +5 -4
  290. package/lib/{DllPlugin.js → dll/DllPlugin.js} +8 -6
  291. package/lib/{DllReferencePlugin.js → dll/DllReferencePlugin.js} +23 -18
  292. package/lib/{LibManifestPlugin.js → dll/LibManifestPlugin.js} +13 -10
  293. package/lib/electron/ElectronTargetPlugin.js +2 -1
  294. package/lib/{AbstractMethodError.js → errors/AbstractMethodError.js} +10 -1
  295. package/lib/{AsyncDependencyToInitialChunkError.js → errors/AsyncDependencyToInitialChunkError.js} +8 -3
  296. package/lib/errors/BuildCycleError.js +1 -1
  297. package/lib/{ChunkRenderError.js → errors/ChunkRenderError.js} +1 -1
  298. package/lib/{CodeGenerationError.js → errors/CodeGenerationError.js} +1 -1
  299. package/lib/{CommentCompilationWarning.js → errors/CommentCompilationWarning.js} +9 -3
  300. package/lib/{ConcurrentCompilationError.js → errors/ConcurrentCompilationError.js} +4 -2
  301. package/lib/{EnvironmentNotSupportAsyncWarning.js → errors/EnvironmentNotSupportAsyncWarning.js} +4 -4
  302. package/lib/{HookWebpackError.js → errors/HookWebpackError.js} +11 -5
  303. package/lib/{IgnoreErrorModuleFactory.js → errors/IgnoreErrorModuleFactory.js} +6 -4
  304. package/lib/{InvalidDependenciesModuleWarning.js → errors/InvalidDependenciesModuleWarning.js} +4 -3
  305. package/lib/errors/JSONParseError.js +114 -0
  306. package/lib/{ModuleBuildError.js → errors/ModuleBuildError.js} +8 -5
  307. package/lib/{ModuleDependencyError.js → errors/ModuleDependencyError.js} +2 -2
  308. package/lib/{ModuleDependencyWarning.js → errors/ModuleDependencyWarning.js} +5 -4
  309. package/lib/{ModuleError.js → errors/ModuleError.js} +7 -5
  310. package/lib/{ModuleHashingError.js → errors/ModuleHashingError.js} +1 -1
  311. package/lib/{ModuleNotFoundError.js → errors/ModuleNotFoundError.js} +3 -2
  312. package/lib/{ModuleParseError.js → errors/ModuleParseError.js} +11 -6
  313. package/lib/{ModuleRestoreError.js → errors/ModuleRestoreError.js} +2 -1
  314. package/lib/{ModuleStoreError.js → errors/ModuleStoreError.js} +2 -1
  315. package/lib/{ModuleWarning.js → errors/ModuleWarning.js} +8 -5
  316. package/lib/{NodeStuffInWebError.js → errors/NodeStuffInWebError.js} +5 -4
  317. package/lib/errors/NonErrorEmittedError.js +28 -0
  318. package/lib/{UnhandledSchemeError.js → errors/UnhandledSchemeError.js} +8 -2
  319. package/lib/{UnsupportedFeatureWarning.js → errors/UnsupportedFeatureWarning.js} +4 -3
  320. package/lib/errors/WebpackError.js +84 -0
  321. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  322. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  323. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  324. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  325. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  326. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  327. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  328. package/lib/hmr/lazyCompilationBackend.js +2 -0
  329. package/lib/html/HtmlGenerator.js +379 -0
  330. package/lib/html/HtmlModulesPlugin.js +433 -0
  331. package/lib/html/HtmlParser.js +1489 -0
  332. package/lib/html/walkHtmlTokens.js +2733 -0
  333. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  334. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  335. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  336. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  337. package/lib/ids/IdHelpers.js +22 -1
  338. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  339. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  340. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  341. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  342. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  343. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  344. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  345. package/lib/index.js +39 -15
  346. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  347. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  348. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  349. package/lib/javascript/ChunkHelpers.js +1 -0
  350. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  351. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  352. package/lib/javascript/JavascriptGenerator.js +10 -0
  353. package/lib/javascript/JavascriptModulesPlugin.js +112 -9
  354. package/lib/javascript/JavascriptParser.js +360 -16
  355. package/lib/javascript/JavascriptParserHelpers.js +7 -1
  356. package/lib/javascript/StartupHelpers.js +5 -0
  357. package/lib/json/JsonData.js +5 -0
  358. package/lib/json/JsonGenerator.js +21 -0
  359. package/lib/json/JsonModulesPlugin.js +1 -1
  360. package/lib/json/JsonParser.js +14 -25
  361. package/lib/library/AbstractLibraryPlugin.js +17 -2
  362. package/lib/library/AmdLibraryPlugin.js +8 -0
  363. package/lib/library/AssignLibraryPlugin.js +16 -0
  364. package/lib/library/EnableLibraryPlugin.js +8 -2
  365. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  366. package/lib/{FalseIIFEUmdWarning.js → library/FalseIIFEUmdWarning.js} +1 -1
  367. package/lib/library/JsonpLibraryPlugin.js +8 -0
  368. package/lib/library/ModuleLibraryPlugin.js +86 -1
  369. package/lib/library/SystemLibraryPlugin.js +8 -0
  370. package/lib/library/UmdLibraryPlugin.js +16 -0
  371. package/lib/logging/Logger.js +17 -0
  372. package/lib/logging/createConsoleLogger.js +7 -0
  373. package/lib/logging/runtime.js +2 -0
  374. package/lib/logging/truncateArgs.js +2 -0
  375. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  376. package/lib/node/NodeEnvironmentPlugin.js +7 -3
  377. package/lib/node/NodeSourcePlugin.js +1 -1
  378. package/lib/node/NodeTargetPlugin.js +2 -1
  379. package/lib/node/NodeTemplatePlugin.js +3 -1
  380. package/lib/node/NodeWatchFileSystem.js +2 -0
  381. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  382. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  383. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  384. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  385. package/lib/node/nodeConsole.js +116 -64
  386. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  387. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  388. package/lib/optimize/ConcatenatedModule.js +62 -6
  389. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  390. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  391. package/lib/optimize/InnerGraph.js +16 -1
  392. package/lib/optimize/InnerGraphPlugin.js +14 -2
  393. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  394. package/lib/optimize/MangleExportsPlugin.js +5 -1
  395. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  396. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  397. package/lib/optimize/MinMaxSizeWarning.js +5 -4
  398. package/lib/optimize/ModuleConcatenationPlugin.js +36 -8
  399. package/lib/optimize/RealContentHashPlugin.js +104 -26
  400. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  401. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  402. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  403. package/lib/optimize/SideEffectsFlagPlugin.js +118 -4
  404. package/lib/optimize/SplitChunksPlugin.js +50 -2
  405. package/lib/performance/AssetsOverSizeLimitWarning.js +3 -2
  406. package/lib/performance/EntrypointsOverSizeLimitWarning.js +3 -2
  407. package/lib/performance/NoAsyncChunksWarning.js +5 -3
  408. package/lib/performance/SizeLimitsPlugin.js +8 -2
  409. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  410. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  411. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  412. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +5 -1
  413. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  414. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  415. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  416. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  417. package/lib/rules/RuleSetCompiler.js +18 -0
  418. package/lib/rules/UseEffectRulePlugin.js +10 -3
  419. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  420. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  421. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  422. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  423. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  424. package/lib/runtime/CompatRuntimeModule.js +2 -0
  425. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  426. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  427. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  428. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  429. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  430. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  431. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  432. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  433. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  434. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  435. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  436. package/lib/runtime/HelperRuntimeModule.js +5 -0
  437. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  438. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +121 -13
  439. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  440. package/lib/runtime/NonceRuntimeModule.js +1 -0
  441. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  442. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  443. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  444. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  445. package/lib/runtime/SetAnonymousDefaultNameRuntimeModule.js +35 -0
  446. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  447. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  448. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  449. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  450. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  451. package/lib/schemes/DataUriPlugin.js +14 -2
  452. package/lib/schemes/FileUriPlugin.js +1 -1
  453. package/lib/schemes/HttpUriPlugin.js +43 -1
  454. package/lib/schemes/VirtualUrlPlugin.js +7 -2
  455. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  456. package/lib/serialization/ArraySerializer.js +2 -0
  457. package/lib/serialization/BinaryMiddleware.js +20 -1
  458. package/lib/serialization/DateObjectSerializer.js +2 -0
  459. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  460. package/lib/serialization/FileMiddleware.js +21 -0
  461. package/lib/serialization/MapObjectSerializer.js +2 -0
  462. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  463. package/lib/serialization/ObjectMiddleware.js +23 -0
  464. package/lib/serialization/PlainObjectSerializer.js +7 -0
  465. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  466. package/lib/serialization/Serializer.js +5 -0
  467. package/lib/serialization/SerializerMiddleware.js +14 -2
  468. package/lib/serialization/SetObjectSerializer.js +2 -0
  469. package/lib/serialization/SingleItemMiddleware.js +3 -0
  470. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  471. package/lib/sharing/ConsumeSharedModule.js +15 -0
  472. package/lib/sharing/ConsumeSharedPlugin.js +8 -3
  473. package/lib/sharing/ConsumeSharedRuntimeModule.js +9 -4
  474. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  475. package/lib/sharing/ProvideSharedDependency.js +4 -0
  476. package/lib/sharing/ProvideSharedModule.js +12 -1
  477. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  478. package/lib/sharing/ProvideSharedPlugin.js +5 -2
  479. package/lib/sharing/SharePlugin.js +2 -1
  480. package/lib/sharing/ShareRuntimeModule.js +1 -0
  481. package/lib/sharing/resolveMatchedConfigs.js +4 -1
  482. package/lib/sharing/utils.js +8 -0
  483. package/lib/stats/DefaultStatsFactoryPlugin.js +58 -3
  484. package/lib/stats/DefaultStatsPresetPlugin.js +12 -2
  485. package/lib/stats/DefaultStatsPrinterPlugin.js +38 -2
  486. package/lib/stats/StatsFactory.js +13 -1
  487. package/lib/stats/StatsPrinter.js +7 -0
  488. package/lib/typescript/TypeScriptPlugin.js +210 -0
  489. package/lib/url/URLParserPlugin.js +8 -2
  490. package/lib/util/AppendOnlyStackedSet.js +15 -0
  491. package/lib/util/ArrayHelpers.js +1 -0
  492. package/lib/util/ArrayQueue.js +10 -5
  493. package/lib/util/AsyncQueue.js +22 -2
  494. package/lib/util/Hash.js +2 -2
  495. package/lib/util/IterableHelpers.js +3 -0
  496. package/lib/util/LazyBucketSortedSet.js +21 -0
  497. package/lib/util/LazySet.js +39 -0
  498. package/lib/util/LocConverter.js +53 -0
  499. package/lib/util/ParallelismFactorCalculator.js +1 -0
  500. package/lib/util/Queue.js +6 -3
  501. package/lib/util/Semaphore.js +14 -1
  502. package/lib/util/SetHelpers.js +3 -0
  503. package/lib/util/SortableSet.js +7 -1
  504. package/lib/util/StackedCacheMap.js +20 -3
  505. package/lib/util/StackedMap.js +45 -0
  506. package/lib/util/StringXor.js +1 -1
  507. package/lib/util/TupleQueue.js +7 -3
  508. package/lib/util/TupleSet.js +13 -0
  509. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  510. package/lib/util/WeakTupleMap.js +33 -0
  511. package/lib/util/binarySearchBounds.js +1 -0
  512. package/lib/util/cleverMerge.js +19 -2
  513. package/lib/util/comparators.js +34 -3
  514. package/lib/util/compileBooleanMatcher.js +9 -0
  515. package/lib/util/concatenate.js +9 -3
  516. package/lib/util/conventions.js +46 -1
  517. package/lib/util/createMappings.js +118 -0
  518. package/lib/util/dataURL.js +1 -0
  519. package/lib/util/deprecation.js +19 -0
  520. package/lib/util/deterministicGrouping.js +20 -0
  521. package/lib/util/extractSourceMap.js +1 -0
  522. package/lib/util/extractUrlAndGlobal.js +1 -0
  523. package/lib/util/findGraphRoots.js +5 -0
  524. package/lib/{formatLocation.js → util/formatLocation.js} +4 -2
  525. package/lib/{SizeFormatHelpers.js → util/formatSize.js} +4 -1
  526. package/lib/util/fs.js +71 -8
  527. package/lib/util/generateDebugId.js +1 -0
  528. package/lib/util/hash/BatchedHash.js +1 -0
  529. package/lib/util/hash/BulkUpdateHash.js +1 -0
  530. package/lib/util/hash/hash-digest.js +8 -0
  531. package/lib/util/hash/md4.js +1 -1
  532. package/lib/util/hash/wasm-hash.js +5 -0
  533. package/lib/util/hash/xxhash64.js +1 -1
  534. package/lib/util/identifier.js +67 -0
  535. package/lib/util/internalSerializables.js +35 -19
  536. package/lib/util/magicComment.js +10 -6
  537. package/lib/util/makeSerializable.js +6 -0
  538. package/lib/util/memoize.js +2 -0
  539. package/lib/util/mimeTypes.js +176 -0
  540. package/lib/util/nonNumericOnlyHash.js +1 -0
  541. package/lib/util/parseJson.js +41 -0
  542. package/lib/util/processAsyncTree.js +8 -0
  543. package/lib/util/property.js +1 -0
  544. package/lib/util/registerExternalSerializer.js +20 -0
  545. package/lib/util/removeBOM.js +1 -0
  546. package/lib/util/runtime.js +32 -0
  547. package/lib/util/semver.js +15 -0
  548. package/lib/util/serialization.js +2 -0
  549. package/lib/util/smartGrouping.js +8 -0
  550. package/lib/util/source.js +23 -0
  551. package/lib/util/topologicalSort.js +69 -0
  552. package/lib/validateSchema.js +1 -0
  553. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  554. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  555. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  556. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  557. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  558. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +12 -3
  559. package/lib/wasm-async/AsyncWebAssemblyParser.js +2 -1
  560. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  561. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +6 -3
  562. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  563. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -2
  564. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  565. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +7 -3
  566. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  567. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  568. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  569. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  570. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  571. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  572. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  573. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  574. package/lib/web/JsonpTemplatePlugin.js +2 -1
  575. package/lib/webpack.js +13 -1
  576. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  577. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  578. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  579. package/package.json +31 -31
  580. package/schemas/WebpackOptions.check.js +1 -1
  581. package/schemas/WebpackOptions.json +161 -57
  582. package/schemas/plugins/{DllPlugin.check.d.ts → HtmlGeneratorOptions.check.d.ts} +1 -1
  583. package/schemas/plugins/HtmlGeneratorOptions.check.js +6 -0
  584. package/schemas/plugins/HtmlGeneratorOptions.json +3 -0
  585. package/schemas/plugins/ProgressPlugin.check.js +1 -1
  586. package/schemas/plugins/ProgressPlugin.json +22 -0
  587. package/schemas/plugins/{DllReferencePlugin.check.d.ts → css/CssAutoOrModuleParserOptions.check.d.ts} +1 -1
  588. package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +6 -0
  589. package/schemas/plugins/css/CssAutoOrModuleParserOptions.json +3 -0
  590. package/schemas/plugins/dll/DllPlugin.check.d.ts +7 -0
  591. package/schemas/plugins/dll/DllReferencePlugin.check.d.ts +7 -0
  592. package/types.d.ts +5325 -353
  593. package/lib/CaseSensitiveModulesWarning.js +0 -72
  594. package/lib/GraphHelpers.js +0 -46
  595. package/lib/NoModeWarning.js +0 -23
  596. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +0 -56
  597. /package/schemas/plugins/{DllPlugin.check.js → dll/DllPlugin.check.js} +0 -0
  598. /package/schemas/plugins/{DllPlugin.json → dll/DllPlugin.json} +0 -0
  599. /package/schemas/plugins/{DllReferencePlugin.check.js → dll/DllReferencePlugin.check.js} +0 -0
  600. /package/schemas/plugins/{DllReferencePlugin.json → dll/DllReferencePlugin.json} +0 -0
@@ -5,7 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const WebpackError = require("../WebpackError");
8
+ const WebpackError = require("../errors/WebpackError");
9
+ const { cssExportConvention } = require("../util/conventions");
9
10
  const makeSerializable = require("../util/makeSerializable");
10
11
  const CssImportDependency = require("./CssImportDependency");
11
12
 
@@ -13,7 +14,8 @@ const CssImportDependency = require("./CssImportDependency");
13
14
  /** @typedef {import("../Dependency")} Dependency */
14
15
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
15
16
  /** @typedef {import("../Module")} Module */
16
- /** @typedef {import("../CssModule")} CssModule */
17
+ /** @typedef {import("../css/CssGenerator")} CssGenerator */
18
+ /** @typedef {import("../css/CssModule")} CssModule */
17
19
  /** @typedef {import("../ModuleGraph")} ModuleGraph */
18
20
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
19
21
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
@@ -39,6 +41,26 @@ class CssIcssImportDependency extends CssImportDependency {
39
41
  super(request, range, mode);
40
42
  this.importName = importName;
41
43
  this.localName = localName;
44
+ /** @type {undefined | string[]} */
45
+ this._importNameConventionNames = undefined;
46
+ }
47
+
48
+ /**
49
+ * Memoized `cssExportConvention(this.importName, convention)`. The target
50
+ * module is fixed for a given dep, so its `exportsConvention` is fixed,
51
+ * so the convention-derived aliases of `importName` can be cached on the dep.
52
+ * @param {CssGeneratorExportsConvention} convention convention from the target module's generator
53
+ * @returns {string[]} convention results
54
+ */
55
+ getImportNameConventionNames(convention) {
56
+ if (this._importNameConventionNames) {
57
+ return this._importNameConventionNames;
58
+ }
59
+ this._importNameConventionNames = cssExportConvention(
60
+ this.importName,
61
+ convention
62
+ );
63
+ return this._importNameConventionNames;
42
64
  }
43
65
 
44
66
  get type() {
@@ -61,17 +83,37 @@ class CssIcssImportDependency extends CssImportDependency {
61
83
  }
62
84
 
63
85
  /**
64
- * Returns warnings
86
+ * Returns warnings.
65
87
  * @param {ModuleGraph} moduleGraph module graph
66
88
  * @returns {WebpackError[] | null | undefined} warnings
67
89
  */
68
90
  getWarnings(moduleGraph) {
69
- const module = moduleGraph.getModule(this);
91
+ const module = /** @type {CssModule | undefined} */ (
92
+ moduleGraph.getModule(this)
93
+ );
94
+
95
+ if (!module) return null;
96
+
97
+ // The target module stores exports under the names produced by its
98
+ // `exportsConvention`, so a raw `isExportProvided(this.importName)`
99
+ // would false-positive against `camel-case-only` / `dashes-only` (and
100
+ // any custom function that drops the original spelling). Expand
101
+ // `importName` through the *target* module's convention and accept
102
+ // if any alias is provided.
103
+ const generator =
104
+ /** @type {CssGenerator | undefined} */
105
+ (module.generator);
106
+ const convention =
107
+ generator &&
108
+ /** @type {CssGeneratorExportsConvention | undefined} */
109
+ (generator.options && generator.options.exportsConvention);
110
+ const exportsInfo = moduleGraph.getExportsInfo(module);
111
+ const names = convention
112
+ ? this.getImportNameConventionNames(convention)
113
+ : [this.importName];
114
+ const isProvided = names.some((name) => exportsInfo.isExportProvided(name));
70
115
 
71
- if (
72
- module &&
73
- !moduleGraph.getExportsInfo(module).isExportProvided(this.importName)
74
- ) {
116
+ if (!isProvided) {
75
117
  const error = new WebpackError(
76
118
  `Referenced name "${this.importName}" in "${this.userRequest}" not found`
77
119
  );
@@ -84,6 +126,7 @@ class CssIcssImportDependency extends CssImportDependency {
84
126
  }
85
127
 
86
128
  /**
129
+ * Serializes this instance into the provided serializer context.
87
130
  * @param {ObjectSerializerContext} context context
88
131
  */
89
132
  serialize(context) {
@@ -94,6 +137,7 @@ class CssIcssImportDependency extends CssImportDependency {
94
137
  }
95
138
 
96
139
  /**
140
+ * Restores this instance from the provided deserializer context.
97
141
  * @param {ObjectDeserializerContext} context context
98
142
  */
99
143
  deserialize(context) {
@@ -108,6 +152,7 @@ CssIcssImportDependency.Template = class CssIcssImportDependencyTemplate extends
108
152
  CssImportDependency.Template
109
153
  ) {
110
154
  /**
155
+ * Applies the plugin by registering its hooks on the compiler.
111
156
  * @param {Dependency} dependency the dependency for which the template should be applied
112
157
  * @param {ReplaceSource} source the current replace source which can be modified
113
158
  * @param {DependencyTemplateContext} templateContext the context object
@@ -25,17 +25,20 @@ const NullDependency = require("./NullDependency");
25
25
 
26
26
  class CssIcssSymbolDependency extends NullDependency {
27
27
  /**
28
+ * Creates an instance of CssIcssSymbolDependency.
28
29
  * @param {string} localName local name
29
30
  * @param {Range} range range
30
31
  * @param {string=} value value when it was defined in this module
31
32
  * @param {string=} importName import name when it was imported from other module
33
+ * @param {string=} request request of the `@value` import that was active when this reference was parsed — used to disambiguate when the same local name is imported from multiple modules
32
34
  */
33
- constructor(localName, range, value, importName) {
35
+ constructor(localName, range, value, importName, request) {
34
36
  super();
35
37
  this.localName = localName;
36
38
  this.range = range;
37
39
  this.value = value;
38
40
  this.importName = importName;
41
+ this.request = request;
39
42
  /** @type {undefined | string} */
40
43
  this._hashUpdate = undefined;
41
44
  }
@@ -45,19 +48,23 @@ class CssIcssSymbolDependency extends NullDependency {
45
48
  }
46
49
 
47
50
  /**
48
- * Update the hash
51
+ * Updates the hash with the data contributed by this instance.
49
52
  * @param {Hash} hash hash to be updated
50
53
  * @param {UpdateHashContext} context context
51
54
  * @returns {void}
52
55
  */
53
56
  updateHash(hash, context) {
54
57
  if (this._hashUpdate === undefined) {
55
- this._hashUpdate = `${this.range}${this.localName}${this.value || this.importName}`;
58
+ // Concatenate with explicit field separators so adjacent fields
59
+ // can't alias each other (e.g. range `[1,11]` + localName `"foo"`
60
+ // vs range `[1,1]` + localName `"1foo"`).
61
+ this._hashUpdate = `range|${JSON.stringify(this.range)}|localName|${this.localName}|value|${this.value || ""}|importName|${this.importName || ""}|request|${this.request || ""}`;
56
62
  }
57
63
  hash.update(this._hashUpdate);
58
64
  }
59
65
 
60
66
  /**
67
+ * Serializes this instance into the provided serializer context.
61
68
  * @param {ObjectSerializerContext} context context
62
69
  */
63
70
  serialize(context) {
@@ -66,10 +73,12 @@ class CssIcssSymbolDependency extends NullDependency {
66
73
  write(this.range);
67
74
  write(this.value);
68
75
  write(this.importName);
76
+ write(this.request);
69
77
  super.serialize(context);
70
78
  }
71
79
 
72
80
  /**
81
+ * Restores this instance from the provided deserializer context.
73
82
  * @param {ObjectDeserializerContext} context context
74
83
  */
75
84
  deserialize(context) {
@@ -78,6 +87,7 @@ class CssIcssSymbolDependency extends NullDependency {
78
87
  this.range = read();
79
88
  this.value = read();
80
89
  this.importName = read();
90
+ this.request = read();
81
91
  super.deserialize(context);
82
92
  }
83
93
  }
@@ -86,6 +96,7 @@ CssIcssSymbolDependency.Template = class CssIcssSymbolDependencyTemplate extends
86
96
  NullDependency.Template
87
97
  ) {
88
98
  /**
99
+ * Applies the plugin by registering its hooks on the compiler.
89
100
  * @param {Dependency} dependency the dependency for which the template should be applied
90
101
  * @param {ReplaceSource} source the current replace source which can be modified
91
102
  * @param {DependencyTemplateContext} templateContext the context object
@@ -99,7 +110,8 @@ CssIcssSymbolDependency.Template = class CssIcssSymbolDependencyTemplate extends
99
110
  ? CssIcssExportDependency.Template.resolve(
100
111
  dep.localName,
101
112
  dep.importName,
102
- templateContext
113
+ templateContext,
114
+ dep.request
103
115
  )
104
116
  : dep.value;
105
117
 
@@ -44,6 +44,15 @@ class CssImportDependency extends ModuleDependency {
44
44
  }
45
45
 
46
46
  /**
47
+ * Returns true if this dependency can be concatenated
48
+ * @returns {boolean} true if this dependency can be concatenated
49
+ */
50
+ canConcatenate() {
51
+ return true;
52
+ }
53
+
54
+ /**
55
+ * Returns an identifier to merge equal requests.
47
56
  * @returns {string | null} an identifier to merge equal requests
48
57
  */
49
58
  getResourceIdentifier() {
@@ -69,6 +78,7 @@ class CssImportDependency extends ModuleDependency {
69
78
  }
70
79
 
71
80
  /**
81
+ * Serializes this instance into the provided serializer context.
72
82
  * @param {ObjectSerializerContext} context context
73
83
  */
74
84
  serialize(context) {
@@ -82,6 +92,7 @@ class CssImportDependency extends ModuleDependency {
82
92
  }
83
93
 
84
94
  /**
95
+ * Restores this instance from the provided deserializer context.
85
96
  * @param {ObjectDeserializerContext} context context
86
97
  */
87
98
  deserialize(context) {
@@ -99,6 +110,7 @@ CssImportDependency.Template = class CssImportDependencyTemplate extends (
99
110
  ModuleDependency.Template
100
111
  ) {
101
112
  /**
113
+ * Applies the plugin by registering its hooks on the compiler.
102
114
  * @param {Dependency} dependency the dependency for which the template should be applied
103
115
  * @param {ReplaceSource} source the current replace source which can be modified
104
116
  * @param {DependencyTemplateContext} templateContext the context object
@@ -12,14 +12,17 @@ const ModuleDependency = require("./ModuleDependency");
12
12
 
13
13
  /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
14
14
  /** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
15
+ /** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
15
16
  /** @typedef {import("../Dependency")} Dependency */
16
17
  /** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
17
18
  /** @typedef {import("../Module")} Module */
19
+ /** @typedef {import("../Module").BuildInfo} BuildInfo */
18
20
  /** @typedef {import("../Module").CodeGenerationResult} CodeGenerationResult */
19
21
  /** @typedef {import("../Module").CodeGenerationResultData} CodeGenerationResultData */
20
22
  /** @typedef {import("../javascript/JavascriptParser").Range} Range */
21
23
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
22
24
  /** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
25
+ /** @typedef {import("../util/Hash")} Hash */
23
26
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
24
27
 
25
28
  const getIgnoredRawDataUrlModule = memoize(
@@ -28,6 +31,7 @@ const getIgnoredRawDataUrlModule = memoize(
28
31
 
29
32
  class CssUrlDependency extends ModuleDependency {
30
33
  /**
34
+ * Creates an instance of CssUrlDependency.
31
35
  * @param {string} request request
32
36
  * @param {Range} range range of the argument
33
37
  * @param {"string" | "url" | "src"} urlType dependency type e.g. url() or string
@@ -47,6 +51,7 @@ class CssUrlDependency extends ModuleDependency {
47
51
  }
48
52
 
49
53
  /**
54
+ * Creates an ignored module.
50
55
  * @param {string} context context directory
51
56
  * @returns {Module} ignored module
52
57
  */
@@ -55,6 +60,28 @@ class CssUrlDependency extends ModuleDependency {
55
60
  }
56
61
 
57
62
  /**
63
+ * Updates the hash with the data contributed by this instance.
64
+ * @param {Hash} hash hash to be updated
65
+ * @param {UpdateHashContext} context context
66
+ * @returns {void}
67
+ */
68
+ updateHash(hash, context) {
69
+ // The dependency template substitutes the referenced asset's hashed
70
+ // filename into the rendered CSS at code-generation time. Folding the
71
+ // asset module's content hash into the dependency hash ensures the
72
+ // CSS module's hash invalidates — and the CSS chunk's contenthash
73
+ // updates — whenever the referenced asset's content changes.
74
+ const { chunkGraph } = context;
75
+ const module = chunkGraph.moduleGraph.getModule(this);
76
+ if (!module) return;
77
+ const buildInfo = /** @type {BuildInfo | undefined} */ (module.buildInfo);
78
+ if (buildInfo && buildInfo.hash) {
79
+ hash.update(/** @type {string} */ (buildInfo.hash));
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Serializes this instance into the provided serializer context.
58
85
  * @param {ObjectSerializerContext} context context
59
86
  */
60
87
  serialize(context) {
@@ -64,6 +91,7 @@ class CssUrlDependency extends ModuleDependency {
64
91
  }
65
92
 
66
93
  /**
94
+ * Restores this instance from the provided deserializer context.
67
95
  * @param {ObjectDeserializerContext} context context
68
96
  */
69
97
  deserialize(context) {
@@ -74,6 +102,7 @@ class CssUrlDependency extends ModuleDependency {
74
102
  }
75
103
 
76
104
  /**
105
+ * Returns string in quotes if needed.
77
106
  * @param {string} str string
78
107
  * @returns {string} string in quotes if needed
79
108
  */
@@ -111,6 +140,7 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
111
140
  ModuleDependency.Template
112
141
  ) {
113
142
  /**
143
+ * Applies the plugin by registering its hooks on the compiler.
114
144
  * @param {Dependency} dependency the dependency for which the template should be applied
115
145
  * @param {ReplaceSource} source the current replace source which can be modified
116
146
  * @param {DependencyTemplateContext} templateContext the context object
@@ -163,6 +193,7 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
163
193
  }
164
194
 
165
195
  /**
196
+ * Returns the url of the asset.
166
197
  * @param {object} options options object
167
198
  * @param {Module} options.module the module
168
199
  * @param {RuntimeSpec=} options.runtime runtime
@@ -185,5 +216,6 @@ CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
185
216
  makeSerializable(CssUrlDependency, "webpack/lib/dependencies/CssUrlDependency");
186
217
 
187
218
  CssUrlDependency.PUBLIC_PATH_AUTO = "__WEBPACK_CSS_PUBLIC_PATH_AUTO__";
219
+ CssUrlDependency.PUBLIC_PATH_FULL_HASH = "__WEBPACK_CSS_PUBLIC_PATH_FULL_HASH_";
188
220
 
189
221
  module.exports = CssUrlDependency;
@@ -10,6 +10,7 @@ const ModuleDependency = require("./ModuleDependency");
10
10
 
11
11
  class DelegatedSourceDependency extends ModuleDependency {
12
12
  /**
13
+ * Creates an instance of DelegatedSourceDependency.
13
14
  * @param {string} request the request string
14
15
  */
15
16
  constructor(request) {
@@ -14,6 +14,7 @@ const makeSerializable = require("../util/makeSerializable");
14
14
 
15
15
  class DllEntryDependency extends Dependency {
16
16
  /**
17
+ * Creates an instance of DllEntryDependency.
17
18
  * @param {EntryDependency[]} dependencies dependencies
18
19
  * @param {string} name name
19
20
  */
@@ -29,6 +30,7 @@ class DllEntryDependency extends Dependency {
29
30
  }
30
31
 
31
32
  /**
33
+ * Serializes this instance into the provided serializer context.
32
34
  * @param {ObjectSerializerContext} context context
33
35
  */
34
36
  serialize(context) {
@@ -41,6 +43,7 @@ class DllEntryDependency extends Dependency {
41
43
  }
42
44
 
43
45
  /**
46
+ * Restores this instance from the provided deserializer context.
44
47
  * @param {ObjectDeserializerContext} context context
45
48
  */
46
49
  deserialize(context) {
@@ -12,6 +12,7 @@
12
12
  const parserStateExportsState = new WeakMap();
13
13
 
14
14
  /**
15
+ * Processes the provided parser state.
15
16
  * @param {JavascriptParserState} parserState parser state
16
17
  * @returns {void}
17
18
  */
@@ -26,6 +27,7 @@ module.exports.bailout = (parserState) => {
26
27
  };
27
28
 
28
29
  /**
30
+ * Processes the provided parser state.
29
31
  * @param {JavascriptParserState} parserState parser state
30
32
  * @returns {void}
31
33
  */
@@ -41,6 +43,7 @@ module.exports.enable = (parserState) => {
41
43
  };
42
44
 
43
45
  /**
46
+ * Returns true, when enabled.
44
47
  * @param {JavascriptParserState} parserState parser state
45
48
  * @returns {boolean} true, when enabled
46
49
  */
@@ -50,6 +53,7 @@ module.exports.isEnabled = (parserState) => {
50
53
  };
51
54
 
52
55
  /**
56
+ * Processes the provided parser state.
53
57
  * @param {JavascriptParserState} parserState parser state
54
58
  * @returns {void}
55
59
  */
@@ -61,6 +65,7 @@ module.exports.setDynamic = (parserState) => {
61
65
  };
62
66
 
63
67
  /**
68
+ * Processes the provided parser state.
64
69
  * @param {JavascriptParserState} parserState parser state
65
70
  * @returns {void}
66
71
  */
@@ -10,6 +10,7 @@ const ModuleDependency = require("./ModuleDependency");
10
10
 
11
11
  class EntryDependency extends ModuleDependency {
12
12
  /**
13
+ * Creates an instance of EntryDependency.
13
14
  * @param {string} request request path for entry
14
15
  */
15
16
  constructor(request) {
@@ -21,11 +21,13 @@ const NullDependency = require("./NullDependency");
21
21
  /** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
22
22
 
23
23
  /**
24
+ * Defines the sortable set type used by this module.
24
25
  * @template T
25
26
  * @typedef {import("../util/SortableSet")<T>} SortableSet
26
27
  */
27
28
 
28
29
  /**
30
+ * Returns value of the property.
29
31
  * @param {ModuleGraph} moduleGraph the module graph
30
32
  * @param {Module} module the module
31
33
  * @param {ExportInfoName[] | null} exportName_ name of the export if any
@@ -89,6 +91,7 @@ const getProperty = (moduleGraph, module, exportName_, property, runtime) => {
89
91
 
90
92
  class ExportsInfoDependency extends NullDependency {
91
93
  /**
94
+ * Creates an instance of ExportsInfoDependency.
92
95
  * @param {Range} range range
93
96
  * @param {ExportInfoName[] | null} exportName export name
94
97
  * @param {string | null} property property
@@ -101,6 +104,7 @@ class ExportsInfoDependency extends NullDependency {
101
104
  }
102
105
 
103
106
  /**
107
+ * Serializes this instance into the provided serializer context.
104
108
  * @param {ObjectSerializerContext} context context
105
109
  */
106
110
  serialize(context) {
@@ -112,6 +116,7 @@ class ExportsInfoDependency extends NullDependency {
112
116
  }
113
117
 
114
118
  /**
119
+ * Restores this instance from the provided deserializer context.
115
120
  * @param {ObjectDeserializerContext} context context
116
121
  * @returns {ExportsInfoDependency} ExportsInfoDependency
117
122
  */
@@ -135,6 +140,7 @@ ExportsInfoDependency.Template = class ExportsInfoDependencyTemplate extends (
135
140
  NullDependency.Template
136
141
  ) {
137
142
  /**
143
+ * Applies the plugin by registering its hooks on the compiler.
138
144
  * @param {Dependency} dependency the dependency for which the template should be applied
139
145
  * @param {ReplaceSource} source the current replace source which can be modified
140
146
  * @param {DependencyTemplateContext} templateContext the context object
@@ -19,6 +19,7 @@ const ExternalModuleInitFragment = require("./ExternalModuleInitFragment");
19
19
 
20
20
  class ExternalModuleDependency extends CachedConstDependency {
21
21
  /**
22
+ * Creates an instance of ExternalModuleDependency.
22
23
  * @param {string} module module
23
24
  * @param {ArrayImportSpecifiers} importSpecifiers import specifiers
24
25
  * @param {string | undefined} defaultImport default import
@@ -44,6 +45,7 @@ class ExternalModuleDependency extends CachedConstDependency {
44
45
  }
45
46
 
46
47
  /**
48
+ * Create hash update.
47
49
  * @returns {string} hash update
48
50
  */
49
51
  _createHashUpdate() {
@@ -53,6 +55,7 @@ class ExternalModuleDependency extends CachedConstDependency {
53
55
  }
54
56
 
55
57
  /**
58
+ * Serializes this instance into the provided serializer context.
56
59
  * @param {ObjectSerializerContext} context context
57
60
  */
58
61
  serialize(context) {
@@ -64,6 +67,7 @@ class ExternalModuleDependency extends CachedConstDependency {
64
67
  }
65
68
 
66
69
  /**
70
+ * Restores this instance from the provided deserializer context.
67
71
  * @param {ObjectDeserializerContext} context context
68
72
  */
69
73
  deserialize(context) {
@@ -84,6 +88,7 @@ ExternalModuleDependency.Template = class ExternalModuleDependencyTemplate exten
84
88
  CachedConstDependency.Template
85
89
  ) {
86
90
  /**
91
+ * Applies the plugin by registering its hooks on the compiler.
87
92
  * @param {Dependency} dependency the dependency for which the template should be applied
88
93
  * @param {ReplaceSource} source the current replace source which can be modified
89
94
  * @param {DependencyTemplateContext} templateContext the context object
@@ -75,6 +75,7 @@ class ExternalModuleInitFragment extends InitFragment {
75
75
  }
76
76
 
77
77
  /**
78
+ * Returns the source code that will be included as initialization code.
78
79
  * @param {GenerateContext} context context
79
80
  * @returns {string | Source | undefined} the source code that will be included as initialization code
80
81
  */
@@ -107,6 +108,7 @@ class ExternalModuleInitFragment extends InitFragment {
107
108
  }
108
109
 
109
110
  /**
111
+ * Serializes this instance into the provided serializer context.
110
112
  * @param {ObjectSerializerContext} context context
111
113
  */
112
114
  serialize(context) {
@@ -118,6 +120,7 @@ class ExternalModuleInitFragment extends InitFragment {
118
120
  }
119
121
 
120
122
  /**
123
+ * Restores this instance from the provided deserializer context.
121
124
  * @param {ObjectDeserializerContext} context context
122
125
  */
123
126
  deserialize(context) {
@@ -20,6 +20,7 @@ const NullDependency = require("./NullDependency");
20
20
 
21
21
  class ExternalModuleInitFragmentDependency extends NullDependency {
22
22
  /**
23
+ * Creates an instance of ExternalModuleInitFragmentDependency.
23
24
  * @param {string} module module
24
25
  * @param {ArrayImportSpecifiers} importSpecifiers import specifiers
25
26
  * @param {string | undefined} defaultImport default import
@@ -32,6 +33,7 @@ class ExternalModuleInitFragmentDependency extends NullDependency {
32
33
  }
33
34
 
34
35
  /**
36
+ * Serializes this instance into the provided serializer context.
35
37
  * @param {ObjectSerializerContext} context context
36
38
  */
37
39
  serialize(context) {
@@ -42,6 +44,7 @@ class ExternalModuleInitFragmentDependency extends NullDependency {
42
44
  }
43
45
 
44
46
  /**
47
+ * Restores this instance from the provided deserializer context.
45
48
  * @param {ObjectDeserializerContext} context context
46
49
  */
47
50
  deserialize(context) {
@@ -61,6 +64,7 @@ ExternalModuleInitFragmentDependency.Template = class ExternalModuleConstDepende
61
64
  DependencyTemplate
62
65
  ) {
63
66
  /**
67
+ * Applies the plugin by registering its hooks on the compiler.
64
68
  * @param {Dependency} dependency the dependency for which the template should be applied
65
69
  * @param {ReplaceSource} source the current replace source which can be modified
66
70
  * @param {DependencyTemplateContext} templateContext the context object
@@ -24,6 +24,7 @@ const NullDependency = require("./NullDependency");
24
24
 
25
25
  class HarmonyAcceptDependency extends NullDependency {
26
26
  /**
27
+ * Creates an instance of HarmonyAcceptDependency.
27
28
  * @param {Range} range expression range
28
29
  * @param {HarmonyAcceptImportDependency[]} dependencies import dependencies
29
30
  * @param {boolean} hasCallback true, if the range wraps an existing callback
@@ -40,6 +41,7 @@ class HarmonyAcceptDependency extends NullDependency {
40
41
  }
41
42
 
42
43
  /**
44
+ * Serializes this instance into the provided serializer context.
43
45
  * @param {ObjectSerializerContext} context context
44
46
  */
45
47
  serialize(context) {
@@ -51,6 +53,7 @@ class HarmonyAcceptDependency extends NullDependency {
51
53
  }
52
54
 
53
55
  /**
56
+ * Restores this instance from the provided deserializer context.
54
57
  * @param {ObjectDeserializerContext} context context
55
58
  */
56
59
  deserialize(context) {
@@ -71,6 +74,7 @@ HarmonyAcceptDependency.Template = class HarmonyAcceptDependencyTemplate extends
71
74
  NullDependency.Template
72
75
  ) {
73
76
  /**
77
+ * Applies the plugin by registering its hooks on the compiler.
74
78
  * @param {Dependency} dependency the dependency for which the template should be applied
75
79
  * @param {ReplaceSource} source the current replace source which can be modified
76
80
  * @param {DependencyTemplateContext} templateContext the context object
@@ -88,6 +92,7 @@ HarmonyAcceptDependency.Template = class HarmonyAcceptDependencyTemplate extends
88
92
  } = templateContext;
89
93
 
90
94
  /**
95
+ * Gets dependency module id.
91
96
  * @param {Dependency} dependency the dependency to get module id for
92
97
  * @returns {ModuleId | null} the module id or null if not found
93
98
  */
@@ -97,6 +102,7 @@ HarmonyAcceptDependency.Template = class HarmonyAcceptDependencyTemplate extends
97
102
  );
98
103
 
99
104
  /**
105
+ * Checks whether this harmony accept dependency is related harmony import dependency.
100
106
  * @param {Dependency} a the first dependency
101
107
  * @param {Dependency} b the second dependency
102
108
  * @returns {boolean} true if the dependencies are related
@@ -12,6 +12,7 @@ const NullDependency = require("./NullDependency");
12
12
 
13
13
  class HarmonyAcceptImportDependency extends HarmonyImportDependency {
14
14
  /**
15
+ * Creates an instance of HarmonyAcceptImportDependency.
15
16
  * @param {string} request the request string
16
17
  */
17
18
  constructor(request) {
@@ -31,6 +31,7 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
31
31
  NullDependency.Template
32
32
  ) {
33
33
  /**
34
+ * Applies the plugin by registering its hooks on the compiler.
34
35
  * @param {Dependency} dependency the dependency for which the template should be applied
35
36
  * @param {ReplaceSource} source the current replace source which can be modified
36
37
  * @param {DependencyTemplateContext} templateContext the context object
@@ -5,8 +5,8 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const EnvironmentNotSupportAsyncWarning = require("../EnvironmentNotSupportAsyncWarning");
9
8
  const { JAVASCRIPT_MODULE_TYPE_ESM } = require("../ModuleTypeConstants");
9
+ const EnvironmentNotSupportAsyncWarning = require("../errors/EnvironmentNotSupportAsyncWarning");
10
10
  const DynamicExports = require("./DynamicExports");
11
11
  const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
12
12
  const HarmonyExports = require("./HarmonyExports");
@@ -18,6 +18,7 @@ const PLUGIN_NAME = "HarmonyDetectionParserPlugin";
18
18
 
19
19
  module.exports = class HarmonyDetectionParserPlugin {
20
20
  /**
21
+ * Applies the plugin by registering its hooks on the compiler.
21
22
  * @param {JavascriptParser} parser the parser
22
23
  * @returns {void}
23
24
  */
@@ -72,6 +73,7 @@ module.exports = class HarmonyDetectionParserPlugin {
72
73
  });
73
74
 
74
75
  /**
76
+ * Returns true if in harmony.
75
77
  * @returns {boolean | undefined} true if in harmony
76
78
  */
77
79
  const skipInHarmony = () => {
@@ -81,6 +83,7 @@ module.exports = class HarmonyDetectionParserPlugin {
81
83
  };
82
84
 
83
85
  /**
86
+ * Returns null if in harmony.
84
87
  * @returns {null | undefined} null if in harmony
85
88
  */
86
89
  const nullInHarmony = () => {