webpack 5.106.0 → 5.106.2

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 (553) hide show
  1. package/lib/APIPlugin.js +3 -1
  2. package/lib/AbstractMethodError.js +10 -1
  3. package/lib/AsyncDependenciesBlock.js +3 -0
  4. package/lib/AsyncDependencyToInitialChunkError.js +6 -1
  5. package/lib/AutomaticPrefetchPlugin.js +6 -1
  6. package/lib/BannerPlugin.js +10 -1
  7. package/lib/Cache.js +26 -1
  8. package/lib/CacheFacade.js +26 -0
  9. package/lib/CaseSensitiveModulesWarning.js +9 -1
  10. package/lib/Chunk.js +46 -0
  11. package/lib/ChunkGraph.js +111 -0
  12. package/lib/ChunkGroup.js +57 -13
  13. package/lib/ChunkTemplate.js +9 -0
  14. package/lib/CleanPlugin.js +14 -1
  15. package/lib/CodeGenerationResults.js +19 -0
  16. package/lib/CommentCompilationWarning.js +6 -0
  17. package/lib/CompatibilityPlugin.js +15 -1
  18. package/lib/Compilation.js +127 -1
  19. package/lib/Compiler.js +37 -4
  20. package/lib/ConcatenationScope.js +24 -1
  21. package/lib/ConditionalInitFragment.js +6 -0
  22. package/lib/ConstPlugin.js +4 -1
  23. package/lib/ContextExclusionPlugin.js +2 -1
  24. package/lib/ContextModule.js +12 -0
  25. package/lib/ContextModuleFactory.js +10 -0
  26. package/lib/ContextReplacementPlugin.js +4 -1
  27. package/lib/CssModule.js +6 -0
  28. package/lib/DefinePlugin.js +20 -7
  29. package/lib/DelegatedModule.js +13 -0
  30. package/lib/DelegatedModuleFactoryPlugin.js +3 -0
  31. package/lib/DelegatedPlugin.js +2 -1
  32. package/lib/DependenciesBlock.js +6 -1
  33. package/lib/Dependency.js +26 -3
  34. package/lib/DependencyTemplate.js +5 -0
  35. package/lib/DependencyTemplates.js +4 -0
  36. package/lib/DllEntryPlugin.js +2 -1
  37. package/lib/DllModule.js +11 -0
  38. package/lib/DllModuleFactory.js +1 -0
  39. package/lib/DllPlugin.js +2 -1
  40. package/lib/DllReferencePlugin.js +11 -6
  41. package/lib/DotenvPlugin.js +3 -0
  42. package/lib/DynamicEntryPlugin.js +3 -1
  43. package/lib/EntryOptionPlugin.js +3 -0
  44. package/lib/EntryPlugin.js +2 -1
  45. package/lib/Entrypoint.js +4 -0
  46. package/lib/EnvironmentPlugin.js +2 -1
  47. package/lib/ErrorHelpers.js +7 -0
  48. package/lib/EvalDevToolModulePlugin.js +3 -1
  49. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  50. package/lib/ExportsInfo.js +56 -2
  51. package/lib/ExportsInfoApiPlugin.js +2 -1
  52. package/lib/ExternalModule.js +38 -0
  53. package/lib/ExternalModuleFactoryPlugin.js +10 -0
  54. package/lib/ExternalsPlugin.js +2 -1
  55. package/lib/FileSystemInfo.js +105 -0
  56. package/lib/FlagAllModulesAsUsedPlugin.js +2 -1
  57. package/lib/FlagDependencyExportsPlugin.js +4 -1
  58. package/lib/FlagDependencyUsagePlugin.js +5 -1
  59. package/lib/FlagEntryExportAsUsedPlugin.js +2 -1
  60. package/lib/Generator.js +13 -0
  61. package/lib/GraphHelpers.js +3 -0
  62. package/lib/HookWebpackError.js +6 -0
  63. package/lib/HotModuleReplacementPlugin.js +9 -1
  64. package/lib/IgnoreErrorModuleFactory.js +2 -0
  65. package/lib/IgnorePlugin.js +2 -1
  66. package/lib/IgnoreWarningsPlugin.js +2 -1
  67. package/lib/InitFragment.js +10 -0
  68. package/lib/InvalidDependenciesModuleWarning.js +1 -0
  69. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  70. package/lib/LibManifestPlugin.js +4 -1
  71. package/lib/LibraryTemplatePlugin.js +2 -1
  72. package/lib/LoaderOptionsPlugin.js +3 -1
  73. package/lib/LoaderTargetPlugin.js +2 -1
  74. package/lib/MainTemplate.js +15 -0
  75. package/lib/ManifestPlugin.js +9 -2
  76. package/lib/Module.js +82 -4
  77. package/lib/ModuleBuildError.js +3 -0
  78. package/lib/ModuleDependencyWarning.js +1 -0
  79. package/lib/ModuleError.js +2 -0
  80. package/lib/ModuleFactory.js +5 -0
  81. package/lib/ModuleFilenameHelpers.js +3 -0
  82. package/lib/ModuleGraph.js +66 -0
  83. package/lib/ModuleGraphConnection.js +9 -0
  84. package/lib/ModuleInfoHeaderPlugin.js +5 -0
  85. package/lib/ModuleNotFoundError.js +1 -0
  86. package/lib/ModuleParseError.js +3 -0
  87. package/lib/ModuleRestoreError.js +1 -0
  88. package/lib/ModuleSourceTypeConstants.js +1 -0
  89. package/lib/ModuleStoreError.js +1 -0
  90. package/lib/ModuleTemplate.js +8 -0
  91. package/lib/ModuleWarning.js +3 -0
  92. package/lib/MultiCompiler.js +28 -0
  93. package/lib/MultiStats.js +8 -0
  94. package/lib/MultiWatching.js +3 -0
  95. package/lib/NoEmitOnErrorsPlugin.js +1 -1
  96. package/lib/NodeStuffInWebError.js +1 -0
  97. package/lib/NodeStuffPlugin.js +10 -1
  98. package/lib/NormalModule.js +30 -2
  99. package/lib/NormalModuleFactory.js +25 -0
  100. package/lib/NormalModuleReplacementPlugin.js +1 -1
  101. package/lib/NullFactory.js +1 -0
  102. package/lib/OptionsApply.js +1 -0
  103. package/lib/Parser.js +2 -0
  104. package/lib/PlatformPlugin.js +2 -1
  105. package/lib/PrefetchPlugin.js +2 -1
  106. package/lib/ProgressPlugin.js +29 -12
  107. package/lib/ProvidePlugin.js +3 -1
  108. package/lib/RawModule.js +12 -0
  109. package/lib/RecordIdsPlugin.js +8 -0
  110. package/lib/RequestShortener.js +8 -0
  111. package/lib/RequireJsStuffPlugin.js +2 -1
  112. package/lib/ResolverFactory.js +5 -0
  113. package/lib/RuntimeGlobals.js +1 -0
  114. package/lib/RuntimeModule.js +13 -0
  115. package/lib/RuntimePlugin.js +2 -0
  116. package/lib/RuntimeTemplate.js +35 -1
  117. package/lib/SelfModuleFactory.js +2 -0
  118. package/lib/SizeFormatHelpers.js +1 -0
  119. package/lib/SourceMapDevToolModuleOptionsPlugin.js +2 -0
  120. package/lib/SourceMapDevToolPlugin.js +3 -1
  121. package/lib/Stats.js +5 -0
  122. package/lib/Template.js +20 -0
  123. package/lib/TemplatedPathPlugin.js +10 -3
  124. package/lib/UnhandledSchemeError.js +6 -0
  125. package/lib/UnsupportedFeatureWarning.js +1 -0
  126. package/lib/UseStrictPlugin.js +2 -1
  127. package/lib/WarnCaseSensitiveModulesPlugin.js +1 -1
  128. package/lib/WarnDeprecatedOptionPlugin.js +1 -1
  129. package/lib/WarnNoModeSetPlugin.js +1 -1
  130. package/lib/WatchIgnorePlugin.js +4 -1
  131. package/lib/Watching.js +14 -0
  132. package/lib/WebpackError.js +3 -0
  133. package/lib/WebpackIsIncludedPlugin.js +2 -0
  134. package/lib/WebpackOptionsApply.js +1 -0
  135. package/lib/WebpackOptionsDefaulter.js +1 -0
  136. package/lib/asset/AssetBytesGenerator.js +6 -0
  137. package/lib/asset/AssetBytesParser.js +1 -0
  138. package/lib/asset/AssetGenerator.js +20 -2
  139. package/lib/asset/AssetModulesPlugin.js +4 -1
  140. package/lib/asset/AssetParser.js +2 -0
  141. package/lib/asset/AssetSourceGenerator.js +6 -0
  142. package/lib/asset/AssetSourceParser.js +1 -0
  143. package/lib/asset/RawDataUrlModule.js +11 -0
  144. package/lib/async-modules/AsyncModuleHelpers.js +1 -0
  145. package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
  146. package/lib/async-modules/InferAsyncModulesPlugin.js +1 -1
  147. package/lib/buildChunkGraph.js +15 -0
  148. package/lib/cache/AddBuildDependenciesPlugin.js +2 -1
  149. package/lib/cache/AddManagedPathsPlugin.js +2 -1
  150. package/lib/cache/IdleFileCachePlugin.js +2 -1
  151. package/lib/cache/MemoryCachePlugin.js +1 -1
  152. package/lib/cache/MemoryWithGcCachePlugin.js +3 -1
  153. package/lib/cache/PackFileCacheStrategy.js +29 -0
  154. package/lib/cache/ResolverCachePlugin.js +10 -1
  155. package/lib/cache/getLazyHashedEtag.js +4 -0
  156. package/lib/cache/mergeEtags.js +2 -0
  157. package/lib/cli.js +30 -0
  158. package/lib/config/browserslistTargetHandler.js +2 -0
  159. package/lib/config/defaults.js +35 -2
  160. package/lib/config/normalization.js +12 -0
  161. package/lib/config/target.js +11 -0
  162. package/lib/container/ContainerEntryDependency.js +2 -0
  163. package/lib/container/ContainerEntryModule.js +12 -0
  164. package/lib/container/ContainerEntryModuleFactory.js +1 -0
  165. package/lib/container/ContainerExposedDependency.js +4 -0
  166. package/lib/container/ContainerPlugin.js +2 -1
  167. package/lib/container/ContainerReferencePlugin.js +2 -1
  168. package/lib/container/FallbackDependency.js +4 -0
  169. package/lib/container/FallbackItemDependency.js +1 -0
  170. package/lib/container/FallbackModule.js +12 -0
  171. package/lib/container/FallbackModuleFactory.js +1 -0
  172. package/lib/container/ModuleFederationPlugin.js +3 -1
  173. package/lib/container/RemoteModule.js +13 -0
  174. package/lib/container/RemoteRuntimeModule.js +1 -0
  175. package/lib/container/RemoteToExternalDependency.js +1 -0
  176. package/lib/container/options.js +7 -0
  177. package/lib/css/CssGenerator.js +35 -14
  178. package/lib/css/CssInjectStyleRuntimeModule.js +1 -0
  179. package/lib/css/CssLoadingRuntimeModule.js +1 -0
  180. package/lib/css/CssMergeStyleSheetsRuntimeModule.js +1 -0
  181. package/lib/css/CssModulesPlugin.js +69 -3
  182. package/lib/css/CssParser.js +71 -1
  183. package/lib/css/walkCssTokens.js +31 -0
  184. package/lib/debug/ProfilingPlugin.js +19 -1
  185. package/lib/dependencies/AMDDefineDependency.js +7 -0
  186. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +12 -0
  187. package/lib/dependencies/AMDPlugin.js +4 -1
  188. package/lib/dependencies/AMDRequireArrayDependency.js +6 -0
  189. package/lib/dependencies/AMDRequireContextDependency.js +3 -0
  190. package/lib/dependencies/AMDRequireDependenciesBlock.js +1 -0
  191. package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +13 -0
  192. package/lib/dependencies/AMDRequireDependency.js +4 -0
  193. package/lib/dependencies/AMDRequireItemDependency.js +1 -0
  194. package/lib/dependencies/AMDRuntimeModules.js +3 -0
  195. package/lib/dependencies/CachedConstDependency.js +6 -1
  196. package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
  197. package/lib/dependencies/CommonJsExportRequireDependency.js +8 -0
  198. package/lib/dependencies/CommonJsExportsDependency.js +4 -0
  199. package/lib/dependencies/CommonJsExportsParserPlugin.js +8 -0
  200. package/lib/dependencies/CommonJsFullRequireDependency.js +4 -0
  201. package/lib/dependencies/CommonJsImportsParserPlugin.js +20 -0
  202. package/lib/dependencies/CommonJsPlugin.js +4 -1
  203. package/lib/dependencies/CommonJsRequireContextDependency.js +3 -0
  204. package/lib/dependencies/CommonJsRequireDependency.js +3 -0
  205. package/lib/dependencies/CommonJsSelfReferenceDependency.js +5 -0
  206. package/lib/dependencies/ConstDependency.js +6 -1
  207. package/lib/dependencies/ContextDependency.js +8 -1
  208. package/lib/dependencies/ContextDependencyHelpers.js +3 -0
  209. package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -0
  210. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +1 -0
  211. package/lib/dependencies/ContextElementDependency.js +4 -0
  212. package/lib/dependencies/CreateRequireParserPlugin.js +6 -0
  213. package/lib/dependencies/CreateScriptUrlDependency.js +4 -0
  214. package/lib/dependencies/CriticalDependencyWarning.js +1 -0
  215. package/lib/dependencies/CssIcssExportDependency.js +11 -3
  216. package/lib/dependencies/CssIcssImportDependency.js +4 -1
  217. package/lib/dependencies/CssIcssSymbolDependency.js +5 -1
  218. package/lib/dependencies/CssImportDependency.js +4 -0
  219. package/lib/dependencies/CssUrlDependency.js +7 -0
  220. package/lib/dependencies/DelegatedSourceDependency.js +1 -0
  221. package/lib/dependencies/DllEntryDependency.js +3 -0
  222. package/lib/dependencies/DynamicExports.js +5 -0
  223. package/lib/dependencies/EntryDependency.js +1 -0
  224. package/lib/dependencies/ExportsInfoDependency.js +6 -0
  225. package/lib/dependencies/ExternalModuleDependency.js +5 -0
  226. package/lib/dependencies/ExternalModuleInitFragment.js +3 -0
  227. package/lib/dependencies/ExternalModuleInitFragmentDependency.js +4 -0
  228. package/lib/dependencies/HarmonyAcceptDependency.js +6 -0
  229. package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
  230. package/lib/dependencies/HarmonyCompatibilityDependency.js +1 -0
  231. package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -0
  232. package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -0
  233. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +2 -0
  234. package/lib/dependencies/HarmonyExportExpressionDependency.js +14 -5
  235. package/lib/dependencies/HarmonyExportHeaderDependency.js +4 -0
  236. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +33 -2
  237. package/lib/dependencies/HarmonyExportInitFragment.js +6 -0
  238. package/lib/dependencies/HarmonyExportSpecifierDependency.js +5 -0
  239. package/lib/dependencies/HarmonyExports.js +2 -0
  240. package/lib/dependencies/HarmonyImportDependency.js +11 -0
  241. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +9 -0
  242. package/lib/dependencies/HarmonyImportSideEffectDependency.js +4 -0
  243. package/lib/dependencies/HarmonyImportSpecifierDependency.js +17 -2
  244. package/lib/dependencies/HarmonyModulesPlugin.js +4 -1
  245. package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +1 -0
  246. package/lib/dependencies/ImportContextDependency.js +4 -0
  247. package/lib/dependencies/ImportDependency.js +5 -0
  248. package/lib/dependencies/ImportEagerDependency.js +2 -0
  249. package/lib/dependencies/ImportMetaContextDependency.js +1 -0
  250. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +3 -0
  251. package/lib/dependencies/ImportMetaContextPlugin.js +2 -1
  252. package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
  253. package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
  254. package/lib/dependencies/ImportMetaPlugin.js +6 -0
  255. package/lib/dependencies/ImportParserPlugin.js +7 -0
  256. package/lib/dependencies/ImportPhase.js +6 -2
  257. package/lib/dependencies/ImportPlugin.js +2 -1
  258. package/lib/dependencies/ImportWeakDependency.js +2 -0
  259. package/lib/dependencies/JsonExportsDependency.js +6 -1
  260. package/lib/dependencies/LoaderDependency.js +2 -0
  261. package/lib/dependencies/LoaderImportDependency.js +2 -0
  262. package/lib/dependencies/LoaderPlugin.js +4 -1
  263. package/lib/dependencies/LocalModule.js +4 -0
  264. package/lib/dependencies/LocalModuleDependency.js +4 -0
  265. package/lib/dependencies/LocalModulesHelpers.js +3 -0
  266. package/lib/dependencies/ModuleDecoratorDependency.js +7 -1
  267. package/lib/dependencies/ModuleDependency.js +7 -0
  268. package/lib/dependencies/ModuleDependencyTemplateAsId.js +1 -0
  269. package/lib/dependencies/ModuleDependencyTemplateAsRequireId.js +1 -0
  270. package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
  271. package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
  272. package/lib/dependencies/ModuleInitFragmentDependency.js +4 -0
  273. package/lib/dependencies/NullDependency.js +2 -0
  274. package/lib/dependencies/PrefetchDependency.js +1 -0
  275. package/lib/dependencies/ProvidedDependency.js +6 -1
  276. package/lib/dependencies/PureExpressionDependency.js +7 -1
  277. package/lib/dependencies/RequireContextDependency.js +1 -0
  278. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -0
  279. package/lib/dependencies/RequireContextPlugin.js +2 -1
  280. package/lib/dependencies/RequireEnsureDependenciesBlock.js +1 -0
  281. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +1 -0
  282. package/lib/dependencies/RequireEnsureDependency.js +4 -0
  283. package/lib/dependencies/RequireEnsureItemDependency.js +1 -0
  284. package/lib/dependencies/RequireEnsurePlugin.js +2 -1
  285. package/lib/dependencies/RequireHeaderDependency.js +4 -0
  286. package/lib/dependencies/RequireIncludeDependency.js +2 -0
  287. package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
  288. package/lib/dependencies/RequireIncludePlugin.js +2 -1
  289. package/lib/dependencies/RequireResolveContextDependency.js +3 -0
  290. package/lib/dependencies/RequireResolveDependency.js +1 -0
  291. package/lib/dependencies/RequireResolveHeaderDependency.js +5 -0
  292. package/lib/dependencies/RuntimeRequirementsDependency.js +5 -1
  293. package/lib/dependencies/StaticExportsDependency.js +3 -0
  294. package/lib/dependencies/SystemPlugin.js +4 -1
  295. package/lib/dependencies/SystemRuntimeModule.js +1 -0
  296. package/lib/dependencies/URLContextDependency.js +3 -0
  297. package/lib/dependencies/URLDependency.js +6 -0
  298. package/lib/dependencies/URLPlugin.js +2 -0
  299. package/lib/dependencies/UnsupportedDependency.js +4 -0
  300. package/lib/dependencies/WebAssemblyExportImportedDependency.js +4 -0
  301. package/lib/dependencies/WebAssemblyImportDependency.js +4 -1
  302. package/lib/dependencies/WebpackIsIncludedDependency.js +2 -0
  303. package/lib/dependencies/WorkerDependency.js +6 -1
  304. package/lib/dependencies/WorkerPlugin.js +9 -1
  305. package/lib/dependencies/getFunctionExpression.js +1 -0
  306. package/lib/dependencies/processExportInfo.js +1 -0
  307. package/lib/electron/ElectronTargetPlugin.js +2 -1
  308. package/lib/esm/ExportWebpackRequireRuntimeModule.js +2 -0
  309. package/lib/esm/ModuleChunkFormatPlugin.js +5 -1
  310. package/lib/esm/ModuleChunkLoadingPlugin.js +3 -1
  311. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +5 -0
  312. package/lib/formatLocation.js +2 -0
  313. package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
  314. package/lib/hmr/JavascriptHotModuleReplacementHelper.js +1 -0
  315. package/lib/hmr/LazyCompilationPlugin.js +20 -1
  316. package/lib/hmr/lazyCompilationBackend.js +2 -0
  317. package/lib/ids/ChunkModuleIdRangePlugin.js +3 -1
  318. package/lib/ids/DeterministicChunkIdsPlugin.js +3 -1
  319. package/lib/ids/DeterministicModuleIdsPlugin.js +3 -1
  320. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  321. package/lib/ids/IdHelpers.js +20 -0
  322. package/lib/ids/NamedChunkIdsPlugin.js +3 -1
  323. package/lib/ids/NamedModuleIdsPlugin.js +3 -1
  324. package/lib/ids/NaturalChunkIdsPlugin.js +1 -1
  325. package/lib/ids/NaturalModuleIdsPlugin.js +1 -1
  326. package/lib/ids/OccurrenceChunkIdsPlugin.js +2 -1
  327. package/lib/ids/OccurrenceModuleIdsPlugin.js +4 -1
  328. package/lib/ids/SyncModuleIdsPlugin.js +3 -1
  329. package/lib/index.js +5 -0
  330. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +1 -1
  331. package/lib/javascript/BasicEvaluatedExpression.js +4 -2
  332. package/lib/javascript/ChunkFormatHelpers.js +2 -1
  333. package/lib/javascript/ChunkHelpers.js +1 -0
  334. package/lib/javascript/CommonJsChunkFormatPlugin.js +1 -1
  335. package/lib/javascript/EnableChunkLoadingPlugin.js +5 -1
  336. package/lib/javascript/JavascriptGenerator.js +10 -0
  337. package/lib/javascript/JavascriptModulesPlugin.js +23 -1
  338. package/lib/javascript/JavascriptParser.js +163 -0
  339. package/lib/javascript/JavascriptParserHelpers.js +6 -0
  340. package/lib/javascript/StartupHelpers.js +5 -0
  341. package/lib/json/JsonData.js +5 -0
  342. package/lib/json/JsonGenerator.js +21 -0
  343. package/lib/json/JsonModulesPlugin.js +1 -1
  344. package/lib/json/JsonParser.js +8 -10
  345. package/lib/library/AbstractLibraryPlugin.js +16 -1
  346. package/lib/library/AmdLibraryPlugin.js +8 -0
  347. package/lib/library/AssignLibraryPlugin.js +16 -0
  348. package/lib/library/EnableLibraryPlugin.js +7 -1
  349. package/lib/library/ExportPropertyLibraryPlugin.js +9 -0
  350. package/lib/library/JsonpLibraryPlugin.js +8 -0
  351. package/lib/library/ModuleLibraryPlugin.js +12 -1
  352. package/lib/library/SystemLibraryPlugin.js +8 -0
  353. package/lib/library/UmdLibraryPlugin.js +16 -0
  354. package/lib/logging/Logger.js +17 -0
  355. package/lib/logging/createConsoleLogger.js +7 -0
  356. package/lib/logging/runtime.js +2 -0
  357. package/lib/logging/truncateArgs.js +2 -0
  358. package/lib/node/CommonJsChunkLoadingPlugin.js +5 -1
  359. package/lib/node/NodeEnvironmentPlugin.js +3 -1
  360. package/lib/node/NodeSourcePlugin.js +1 -1
  361. package/lib/node/NodeTargetPlugin.js +2 -1
  362. package/lib/node/NodeTemplatePlugin.js +3 -1
  363. package/lib/node/NodeWatchFileSystem.js +2 -0
  364. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +3 -0
  365. package/lib/node/ReadFileCompileAsyncWasmPlugin.js +4 -1
  366. package/lib/node/ReadFileCompileWasmPlugin.js +4 -1
  367. package/lib/node/RequireChunkLoadingRuntimeModule.js +3 -0
  368. package/lib/node/nodeConsole.js +3 -0
  369. package/lib/optimize/AggressiveMergingPlugin.js +3 -1
  370. package/lib/optimize/AggressiveSplittingPlugin.js +6 -1
  371. package/lib/optimize/ConcatenatedModule.js +11 -0
  372. package/lib/optimize/EnsureChunkConditionsPlugin.js +2 -1
  373. package/lib/optimize/FlagIncludedChunksPlugin.js +2 -1
  374. package/lib/optimize/InnerGraph.js +15 -0
  375. package/lib/optimize/InnerGraphPlugin.js +3 -1
  376. package/lib/optimize/LimitChunkCountPlugin.js +9 -0
  377. package/lib/optimize/MangleExportsPlugin.js +5 -1
  378. package/lib/optimize/MergeDuplicateChunksPlugin.js +2 -0
  379. package/lib/optimize/MinChunkSizePlugin.js +2 -1
  380. package/lib/optimize/MinMaxSizeWarning.js +1 -0
  381. package/lib/optimize/ModuleConcatenationPlugin.js +21 -1
  382. package/lib/optimize/RealContentHashPlugin.js +16 -1
  383. package/lib/optimize/RemoveEmptyChunksPlugin.js +2 -1
  384. package/lib/optimize/RemoveParentModulesPlugin.js +3 -1
  385. package/lib/optimize/RuntimeChunkPlugin.js +2 -1
  386. package/lib/optimize/SideEffectsFlagPlugin.js +7 -1
  387. package/lib/optimize/SplitChunksPlugin.js +49 -1
  388. package/lib/performance/AssetsOverSizeLimitWarning.js +1 -0
  389. package/lib/performance/EntrypointsOverSizeLimitWarning.js +1 -0
  390. package/lib/performance/SizeLimitsPlugin.js +7 -1
  391. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -0
  392. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +6 -0
  393. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -0
  394. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -0
  395. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -0
  396. package/lib/rules/BasicEffectRulePlugin.js +3 -0
  397. package/lib/rules/BasicMatcherRulePlugin.js +3 -0
  398. package/lib/rules/ObjectMatcherRulePlugin.js +3 -0
  399. package/lib/rules/RuleSetCompiler.js +18 -0
  400. package/lib/rules/UseEffectRulePlugin.js +6 -0
  401. package/lib/runtime/AsyncModuleRuntimeModule.js +1 -0
  402. package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -0
  403. package/lib/runtime/BaseUriRuntimeModule.js +1 -0
  404. package/lib/runtime/ChunkNameRuntimeModule.js +1 -0
  405. package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -0
  406. package/lib/runtime/CompatRuntimeModule.js +2 -0
  407. package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -0
  408. package/lib/runtime/CreateScriptRuntimeModule.js +1 -0
  409. package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -0
  410. package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -0
  411. package/lib/runtime/EnsureChunkRuntimeModule.js +1 -0
  412. package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -0
  413. package/lib/runtime/GetFullHashRuntimeModule.js +1 -0
  414. package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -0
  415. package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -0
  416. package/lib/runtime/GlobalRuntimeModule.js +1 -0
  417. package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -0
  418. package/lib/runtime/HelperRuntimeModule.js +5 -0
  419. package/lib/runtime/LoadScriptRuntimeModule.js +1 -0
  420. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +2 -0
  421. package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -0
  422. package/lib/runtime/NonceRuntimeModule.js +1 -0
  423. package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -0
  424. package/lib/runtime/PublicPathRuntimeModule.js +1 -0
  425. package/lib/runtime/RelativeUrlRuntimeModule.js +1 -0
  426. package/lib/runtime/RuntimeIdRuntimeModule.js +1 -0
  427. package/lib/runtime/StartupChunkDependenciesPlugin.js +13 -1
  428. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -0
  429. package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -0
  430. package/lib/runtime/SystemContextRuntimeModule.js +1 -0
  431. package/lib/runtime/ToBinaryRuntimeModule.js +1 -0
  432. package/lib/schemes/DataUriPlugin.js +1 -1
  433. package/lib/schemes/FileUriPlugin.js +1 -1
  434. package/lib/schemes/HttpUriPlugin.js +43 -1
  435. package/lib/schemes/VirtualUrlPlugin.js +6 -1
  436. package/lib/serialization/AggregateErrorSerializer.js +2 -0
  437. package/lib/serialization/ArraySerializer.js +2 -0
  438. package/lib/serialization/BinaryMiddleware.js +20 -1
  439. package/lib/serialization/DateObjectSerializer.js +2 -0
  440. package/lib/serialization/ErrorObjectSerializer.js +3 -0
  441. package/lib/serialization/FileMiddleware.js +21 -0
  442. package/lib/serialization/MapObjectSerializer.js +2 -0
  443. package/lib/serialization/NullPrototypeObjectSerializer.js +2 -0
  444. package/lib/serialization/ObjectMiddleware.js +23 -0
  445. package/lib/serialization/PlainObjectSerializer.js +7 -0
  446. package/lib/serialization/RegExpObjectSerializer.js +2 -0
  447. package/lib/serialization/Serializer.js +5 -0
  448. package/lib/serialization/SerializerMiddleware.js +12 -0
  449. package/lib/serialization/SetObjectSerializer.js +2 -0
  450. package/lib/serialization/SingleItemMiddleware.js +3 -0
  451. package/lib/sharing/ConsumeSharedFallbackDependency.js +1 -0
  452. package/lib/sharing/ConsumeSharedModule.js +15 -0
  453. package/lib/sharing/ConsumeSharedPlugin.js +6 -1
  454. package/lib/sharing/ConsumeSharedRuntimeModule.js +1 -0
  455. package/lib/sharing/ProvideForSharedDependency.js +1 -0
  456. package/lib/sharing/ProvideSharedDependency.js +4 -0
  457. package/lib/sharing/ProvideSharedModule.js +11 -0
  458. package/lib/sharing/ProvideSharedModuleFactory.js +1 -0
  459. package/lib/sharing/ProvideSharedPlugin.js +4 -1
  460. package/lib/sharing/SharePlugin.js +2 -1
  461. package/lib/sharing/ShareRuntimeModule.js +1 -0
  462. package/lib/sharing/resolveMatchedConfigs.js +3 -0
  463. package/lib/sharing/utils.js +8 -0
  464. package/lib/stats/DefaultStatsFactoryPlugin.js +56 -1
  465. package/lib/stats/DefaultStatsPresetPlugin.js +11 -1
  466. package/lib/stats/DefaultStatsPrinterPlugin.js +37 -1
  467. package/lib/stats/StatsFactory.js +12 -0
  468. package/lib/stats/StatsPrinter.js +7 -0
  469. package/lib/url/URLParserPlugin.js +6 -0
  470. package/lib/util/AppendOnlyStackedSet.js +15 -0
  471. package/lib/util/ArrayHelpers.js +1 -0
  472. package/lib/util/ArrayQueue.js +10 -5
  473. package/lib/util/AsyncQueue.js +20 -0
  474. package/lib/util/IterableHelpers.js +3 -0
  475. package/lib/util/LazyBucketSortedSet.js +21 -0
  476. package/lib/util/LazySet.js +39 -0
  477. package/lib/util/ParallelismFactorCalculator.js +1 -0
  478. package/lib/util/Queue.js +6 -3
  479. package/lib/util/Semaphore.js +14 -1
  480. package/lib/util/SetHelpers.js +3 -0
  481. package/lib/util/SortableSet.js +6 -0
  482. package/lib/util/StackedCacheMap.js +20 -3
  483. package/lib/util/StackedMap.js +45 -0
  484. package/lib/util/StringXor.js +1 -1
  485. package/lib/util/TupleQueue.js +7 -3
  486. package/lib/util/TupleSet.js +13 -0
  487. package/lib/util/URLAbsoluteSpecifier.js +1 -0
  488. package/lib/util/WeakTupleMap.js +33 -0
  489. package/lib/util/binarySearchBounds.js +1 -0
  490. package/lib/util/cleverMerge.js +17 -0
  491. package/lib/util/comparators.js +31 -0
  492. package/lib/util/compileBooleanMatcher.js +9 -0
  493. package/lib/util/concatenate.js +6 -0
  494. package/lib/util/conventions.js +4 -0
  495. package/lib/util/dataURL.js +1 -0
  496. package/lib/util/deprecation.js +19 -0
  497. package/lib/util/deterministicGrouping.js +20 -0
  498. package/lib/util/extractSourceMap.js +1 -0
  499. package/lib/util/extractUrlAndGlobal.js +1 -0
  500. package/lib/util/findGraphRoots.js +5 -0
  501. package/lib/util/fs.js +63 -0
  502. package/lib/util/generateDebugId.js +1 -0
  503. package/lib/util/hash/BatchedHash.js +1 -0
  504. package/lib/util/hash/BulkUpdateHash.js +1 -0
  505. package/lib/util/hash/hash-digest.js +8 -0
  506. package/lib/util/hash/wasm-hash.js +5 -0
  507. package/lib/util/identifier.js +19 -0
  508. package/lib/util/magicComment.js +1 -0
  509. package/lib/util/makeSerializable.js +6 -0
  510. package/lib/util/memoize.js +2 -0
  511. package/lib/util/mimeTypes.js +176 -0
  512. package/lib/util/nonNumericOnlyHash.js +1 -0
  513. package/lib/util/parseJson.js +112 -0
  514. package/lib/util/processAsyncTree.js +8 -0
  515. package/lib/util/property.js +1 -0
  516. package/lib/util/registerExternalSerializer.js +20 -0
  517. package/lib/util/removeBOM.js +1 -0
  518. package/lib/util/runtime.js +32 -0
  519. package/lib/util/semver.js +15 -0
  520. package/lib/util/serialization.js +2 -0
  521. package/lib/util/smartGrouping.js +8 -0
  522. package/lib/util/source.js +2 -0
  523. package/lib/validateSchema.js +1 -0
  524. package/lib/wasm/EnableWasmLoadingPlugin.js +15 -1
  525. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +1 -0
  526. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -0
  527. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -0
  528. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -0
  529. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +10 -1
  530. package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -0
  531. package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +12 -1
  532. package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
  533. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -0
  534. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +1 -1
  535. package/lib/wasm-sync/WebAssemblyGenerator.js +26 -1
  536. package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
  537. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +4 -0
  538. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -1
  539. package/lib/wasm-sync/WebAssemblyParser.js +2 -0
  540. package/lib/wasm-sync/WebAssemblyUtils.js +2 -0
  541. package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -1
  542. package/lib/web/FetchCompileWasmPlugin.js +13 -1
  543. package/lib/web/JsonpChunkLoadingPlugin.js +11 -1
  544. package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -0
  545. package/lib/web/JsonpTemplatePlugin.js +2 -1
  546. package/lib/webpack.js +10 -0
  547. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +10 -1
  548. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -0
  549. package/lib/webworker/WebWorkerTemplatePlugin.js +1 -1
  550. package/package.json +12 -14
  551. package/schemas/WebpackOptions.check.js +1 -1
  552. package/schemas/WebpackOptions.json +44 -55
  553. package/types.d.ts +4594 -331
@@ -64,6 +64,7 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
64
64
  /** @typedef {import("../Module").BuildMeta} BuildMeta */
65
65
 
66
66
  /**
67
+ * Defines the render context type used by this module.
67
68
  * @typedef {object} RenderContext
68
69
  * @property {Chunk} chunk the chunk
69
70
  * @property {ChunkGraph} chunkGraph the chunk graph
@@ -75,6 +76,7 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
75
76
  */
76
77
 
77
78
  /**
79
+ * Defines the chunk render context type used by this module.
78
80
  * @typedef {object} ChunkRenderContext
79
81
  * @property {Chunk=} chunk the chunk
80
82
  * @property {ChunkGraph=} chunkGraph the chunk graph
@@ -86,12 +88,14 @@ const publicPathAutoRegex = new RegExp(CssUrlDependency.PUBLIC_PATH_AUTO, "g");
86
88
  */
87
89
 
88
90
  /**
91
+ * Defines the compilation hooks type used by this module.
89
92
  * @typedef {object} CompilationHooks
90
93
  * @property {SyncWaterfallHook<[Source, Module, ChunkRenderContext]>} renderModulePackage
91
94
  * @property {SyncHook<[Chunk, Hash, ChunkHashContext]>} chunkHash
92
95
  */
93
96
 
94
97
  /**
98
+ * Defines the module factory cache entry type used by this module.
95
99
  * @typedef {object} ModuleFactoryCacheEntry
96
100
  * @property {string} undoPath - The undo path to the CSS file
97
101
  * @property {Inheritance} inheritance - The inheritance chain
@@ -109,6 +113,7 @@ const getCssInjectStyleRuntimeModule = memoize(() =>
109
113
  );
110
114
 
111
115
  /**
116
+ * Returns ], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema.
112
117
  * @param {string} name name
113
118
  * @returns {{ oneOf: [{ $ref: string }], definitions: import("../../schemas/WebpackOptions.json")["definitions"] }} schema
114
119
  */
@@ -138,6 +143,7 @@ const PLUGIN_NAME = "CssModulesPlugin";
138
143
 
139
144
  class CssModulesPlugin {
140
145
  /**
146
+ * Returns the attached hooks.
141
147
  * @param {Compilation} compilation the compilation
142
148
  * @returns {CompilationHooks} the attached hooks
143
149
  */
@@ -168,7 +174,7 @@ class CssModulesPlugin {
168
174
  }
169
175
 
170
176
  /**
171
- * Apply the plugin
177
+ * Applies the plugin by registering its hooks on the compiler.
172
178
  * @param {Compiler} compiler the compiler instance
173
179
  * @returns {void}
174
180
  */
@@ -399,7 +405,7 @@ class CssModulesPlugin {
399
405
  supports: dependency.supports,
400
406
  media: dependency.media,
401
407
  inheritance,
402
- exportType: exportType || parent.exportType
408
+ exportType: parent.exportType || exportType
403
409
  })
404
410
  );
405
411
  }
@@ -586,6 +592,7 @@ class CssModulesPlugin {
586
592
  });
587
593
  const globalChunkLoading = compilation.outputOptions.chunkLoading;
588
594
  /**
595
+ * Checks whether this css modules plugin is enabled for chunk.
589
596
  * @param {Chunk} chunk the chunk
590
597
  * @returns {boolean} true, when enabled
591
598
  */
@@ -600,6 +607,7 @@ class CssModulesPlugin {
600
607
  /** @type {WeakSet<Chunk>} */
601
608
  const onceForChunkSet = new WeakSet();
602
609
  /**
610
+ * Handles the hook callback for this code path.
603
611
  * @param {Chunk} chunk chunk to check
604
612
  * @param {RuntimeRequirements} set runtime requirements
605
613
  */
@@ -681,6 +689,7 @@ class CssModulesPlugin {
681
689
  }
682
690
 
683
691
  /**
692
+ * Gets modules in order.
684
693
  * @param {Chunk} chunk chunk
685
694
  * @param {Iterable<Module> | undefined} modules unordered modules
686
695
  * @param {Compilation} compilation compilation
@@ -722,6 +731,7 @@ class CssModulesPlugin {
722
731
  );
723
732
 
724
733
  /**
734
+ * Compares module lists.
725
735
  * @param {{ list: Module[] }} a a
726
736
  * @param {{ list: Module[] }} b b
727
737
  * @returns {-1 | 0 | 1} result
@@ -826,12 +836,16 @@ class CssModulesPlugin {
826
836
  }
827
837
 
828
838
  /**
839
+ * Gets ordered chunk css modules.
829
840
  * @param {Chunk} chunk chunk
830
841
  * @param {ChunkGraph} chunkGraph chunk graph
831
842
  * @param {Compilation} compilation compilation
832
843
  * @returns {CssModule[]} ordered css modules
833
844
  */
834
845
  getOrderedChunkCssModules(chunk, chunkGraph, compilation) {
846
+ /** @type {string | undefined} */
847
+ let charset;
848
+
835
849
  return /** @type {CssModule[]} */ ([
836
850
  ...this.getModulesInOrder(
837
851
  chunk,
@@ -850,11 +864,42 @@ class CssModulesPlugin {
850
864
  compareModulesByFullName(compilation.compiler)
851
865
  ),
852
866
  compilation
853
- )
867
+ ).map((module) => {
868
+ if (
869
+ typeof (/** @type {BuildInfo} */ (module.buildInfo).charset) !==
870
+ "undefined"
871
+ ) {
872
+ if (
873
+ typeof charset !== "undefined" &&
874
+ charset !== /** @type {BuildInfo} */ (module.buildInfo).charset
875
+ ) {
876
+ const err = new WebpackError(
877
+ `Conflicting @charset at-rules detected: the module ${module.readableIdentifier(
878
+ compilation.requestShortener
879
+ )} (in chunk ${chunk.name || chunk.id}) specifies "${
880
+ /** @type {BuildInfo} */ (module.buildInfo).charset
881
+ }", but "${charset}" was expected, all modules must use the same character set`
882
+ );
883
+
884
+ err.chunk = chunk;
885
+ err.module = module;
886
+ err.hideStack = true;
887
+
888
+ compilation.warnings.push(err);
889
+ }
890
+
891
+ if (typeof charset === "undefined") {
892
+ charset = /** @type {BuildInfo} */ (module.buildInfo).charset;
893
+ }
894
+ }
895
+
896
+ return module;
897
+ })
854
898
  ]);
855
899
  }
856
900
 
857
901
  /**
902
+ * Renders css module source.
858
903
  * @param {CssModule} module css module
859
904
  * @param {ChunkRenderContext} renderContext options object
860
905
  * @param {CompilationHooks} hooks hooks
@@ -953,6 +998,7 @@ class CssModulesPlugin {
953
998
  }
954
999
 
955
1000
  /**
1001
+ * Renders generated source.
956
1002
  * @param {RenderContext} renderContext the render context
957
1003
  * @param {CompilationHooks} hooks hooks
958
1004
  * @returns {Source} generated source
@@ -969,7 +1015,19 @@ class CssModulesPlugin {
969
1015
  hooks
970
1016
  ) {
971
1017
  const source = new ConcatSource();
1018
+
1019
+ /** @type {string | undefined} */
1020
+ let charset;
1021
+
972
1022
  for (const module of modules) {
1023
+ if (
1024
+ typeof (/** @type {BuildInfo} */ (module.buildInfo).charset) !==
1025
+ "undefined" &&
1026
+ typeof charset === "undefined"
1027
+ ) {
1028
+ charset = /** @type {BuildInfo} */ (module.buildInfo).charset;
1029
+ }
1030
+
973
1031
  try {
974
1032
  const codeGenResult = codeGenerationResults.get(module, chunk.runtime);
975
1033
  const moduleSourceContent =
@@ -1000,11 +1058,18 @@ class CssModulesPlugin {
1000
1058
  throw err;
1001
1059
  }
1002
1060
  }
1061
+
1003
1062
  chunk.rendered = true;
1063
+
1064
+ if (charset) {
1065
+ return new ConcatSource(`@charset "${charset}";\n`, source);
1066
+ }
1067
+
1004
1068
  return source;
1005
1069
  }
1006
1070
 
1007
1071
  /**
1072
+ * Gets chunk filename template.
1008
1073
  * @param {Chunk} chunk chunk
1009
1074
  * @param {OutputOptions} outputOptions output options
1010
1075
  * @returns {TemplatePath} used filename template
@@ -1019,6 +1084,7 @@ class CssModulesPlugin {
1019
1084
  }
1020
1085
 
1021
1086
  /**
1087
+ * Returns true, when the chunk has css.
1022
1088
  * @param {Chunk} chunk chunk
1023
1089
  * @param {ChunkGraph} chunkGraph chunk graph
1024
1090
  * @returns {boolean} true, when the chunk has css
@@ -51,6 +51,7 @@ const CC_HYPHEN_MINUS = "-".charCodeAt(0);
51
51
  const CC_TILDE = "~".charCodeAt(0);
52
52
  const CC_EQUAL = "=".charCodeAt(0);
53
53
  const CC_FULL_STOP = ".".charCodeAt(0);
54
+ const CC_EXCLAMATION = "!".charCodeAt(0);
54
55
 
55
56
  // https://www.w3.org/TR/css-syntax-3/#newline
56
57
  // We don't have `preprocessing` stage, so we need specify all of them
@@ -65,6 +66,7 @@ const IS_MODULES = /\.modules?\.[^.]+$/i;
65
66
  const CSS_COMMENT = /\/\*((?!\*\/)[\s\S]*?)\*\//g;
66
67
 
67
68
  /**
69
+ * Returns matches.
68
70
  * @param {RegExp} regexp a regexp
69
71
  * @param {string} str a string
70
72
  * @returns {RegExpExecArray[]} matches
@@ -86,6 +88,7 @@ const matchAll = (regexp, str) => {
86
88
  };
87
89
 
88
90
  /**
91
+ * Returns normalized url.
89
92
  * @param {string} str url string
90
93
  * @param {boolean} isString is url wrapped in quotes
91
94
  * @returns {string} normalized url
@@ -130,6 +133,7 @@ const regexExcessiveSpaces =
130
133
  /(^|\\+)?(\\[A-F0-9]{1,6})\u0020(?![a-fA-F0-9\u0020])/g;
131
134
 
132
135
  /**
136
+ * Returns escaped identifier.
133
137
  * @param {string} str string
134
138
  * @returns {string} escaped identifier
135
139
  */
@@ -183,6 +187,7 @@ const escapeIdentifier = (str) => {
183
187
  const CONTAINS_ESCAPE = /\\/;
184
188
 
185
189
  /**
190
+ * Returns hex.
186
191
  * @param {string} str string
187
192
  * @returns {[string, number] | undefined} hex
188
193
  */
@@ -220,6 +225,7 @@ const gobbleHex = (str) => {
220
225
  };
221
226
 
222
227
  /**
228
+ * Unescape identifier.
223
229
  * @param {string} str string
224
230
  * @returns {string} unescaped string
225
231
  */
@@ -405,6 +411,7 @@ const GRID = {
405
411
  };
406
412
 
407
413
  /**
414
+ * Gets known properties.
408
415
  * @param {{ animation?: boolean, container?: boolean, customIdents?: boolean, grid?: boolean }=} options options
409
416
  * @returns {Map<string, Record<string, number>>} list of known properties
410
417
  */
@@ -526,6 +533,7 @@ const getKnownProperties = (options = {}) => {
526
533
 
527
534
  class LocConverter {
528
535
  /**
536
+ * Creates an instance of LocConverter.
529
537
  * @param {string} input input
530
538
  */
531
539
  constructor(input) {
@@ -536,6 +544,7 @@ class LocConverter {
536
544
  }
537
545
 
538
546
  /**
547
+ * Returns location converter.
539
548
  * @param {number} pos position
540
549
  * @returns {LocConverter} location converter
541
550
  */
@@ -582,6 +591,7 @@ const eatUntilSemi = walkCssTokens.eatUntil(";");
582
591
  const eatUntilLeftCurly = walkCssTokens.eatUntil("{");
583
592
 
584
593
  /**
594
+ * Defines the css parser own options type used by this module.
585
595
  * @typedef {object} CssParserOwnOptions
586
596
  * @property {("pure" | "global" | "local" | "auto")=} defaultMode default mode
587
597
  */
@@ -590,6 +600,7 @@ const eatUntilLeftCurly = walkCssTokens.eatUntil("{");
590
600
 
591
601
  class CssParser extends Parser {
592
602
  /**
603
+ * Creates an instance of CssParser.
593
604
  * @param {CssParserOptions=} options options
594
605
  */
595
606
  constructor(options = {}) {
@@ -614,6 +625,7 @@ class CssParser extends Parser {
614
625
  }
615
626
 
616
627
  /**
628
+ * Processes the provided state.
617
629
  * @param {ParserState} state parser state
618
630
  * @param {string} message warning message
619
631
  * @param {LocConverter} locConverter location converter
@@ -633,6 +645,7 @@ class CssParser extends Parser {
633
645
  }
634
646
 
635
647
  /**
648
+ * Parses the provided source and updates the parser state.
636
649
  * @param {string | Buffer | PreparsedAst} source the source to parse
637
650
  * @param {ParserState} state the parser state
638
651
  * @returns {ParserState} the parser state
@@ -699,6 +712,7 @@ class CssParser extends Parser {
699
712
  const icssDefinitions = new Map();
700
713
 
701
714
  /**
715
+ * Checks whether this css parser is next nested syntax.
702
716
  * @param {string} input input
703
717
  * @param {number} pos position
704
718
  * @returns {boolean} true, when next is nested syntax
@@ -730,12 +744,14 @@ class CssParser extends Parser {
730
744
  return true;
731
745
  };
732
746
  /**
747
+ * Checks whether this css parser is local mode.
733
748
  * @returns {boolean} true, when in local scope
734
749
  */
735
750
  const isLocalMode = () =>
736
751
  modeData === LOCAL_MODE || (mode === "local" && modeData === undefined);
737
752
 
738
753
  /**
754
+ * Returns end.
739
755
  * @param {string} input input
740
756
  * @param {number} start start
741
757
  * @param {number} end end
@@ -762,6 +778,7 @@ class CssParser extends Parser {
762
778
  // Vanilla CSS stuff
763
779
 
764
780
  /**
781
+ * Processes the provided input.
765
782
  * @param {string} input input
766
783
  * @param {number} start name start position
767
784
  * @param {number} end name end position
@@ -874,6 +891,7 @@ class CssParser extends Parser {
874
891
  };
875
892
 
876
893
  /**
894
+ * Process url function.
877
895
  * @param {string} input input
878
896
  * @param {number} end end position
879
897
  * @param {string} name the name of function
@@ -936,6 +954,7 @@ class CssParser extends Parser {
936
954
  };
937
955
 
938
956
  /**
957
+ * Process old url function.
939
958
  * @param {string} input input
940
959
  * @param {number} start start position
941
960
  * @param {number} end end position
@@ -998,6 +1017,7 @@ class CssParser extends Parser {
998
1017
  };
999
1018
 
1000
1019
  /**
1020
+ * Process image set function.
1001
1021
  * @param {string} input input
1002
1022
  * @param {number} start start position
1003
1023
  * @param {number} end end position
@@ -1062,6 +1082,7 @@ class CssParser extends Parser {
1062
1082
  // CSS modules stuff
1063
1083
 
1064
1084
  /**
1085
+ * Returns resolved reexport (localName and importName).
1065
1086
  * @param {string} value value to resolve
1066
1087
  * @param {string=} localName override local name
1067
1088
  * @param {boolean=} isCustomProperty true when it is custom property, otherwise false
@@ -1095,6 +1116,7 @@ class CssParser extends Parser {
1095
1116
  };
1096
1117
 
1097
1118
  /**
1119
+ * Process import or export.
1098
1120
  * @param {0 | 1} type import or export
1099
1121
  * @param {string} input input
1100
1122
  * @param {number} pos start position
@@ -1148,6 +1170,7 @@ class CssParser extends Parser {
1148
1170
  }
1149
1171
 
1150
1172
  /**
1173
+ * Creates a dep from the provided name.
1151
1174
  * @param {string} name name
1152
1175
  * @param {string} value value
1153
1176
  * @param {number} start start of position
@@ -1265,6 +1288,7 @@ class CssParser extends Parser {
1265
1288
  /** @typedef {{ from: string, items: ({ localName: string, importName: string })[] }} ValueAtRuleImport */
1266
1289
  /** @typedef {{ localName: string, value: string }} ValueAtRuleValue */
1267
1290
  /**
1291
+ * Parses value at rule params.
1268
1292
  * @param {string} str value at-rule params
1269
1293
  * @returns {ValueAtRuleImport | ValueAtRuleValue} parsed result
1270
1294
  */
@@ -1333,6 +1357,7 @@ class CssParser extends Parser {
1333
1357
  };
1334
1358
 
1335
1359
  /**
1360
+ * Processes the provided input.
1336
1361
  * @param {string} input input
1337
1362
  * @param {number} start name start position
1338
1363
  * @param {number} end name end position
@@ -1450,6 +1475,7 @@ class CssParser extends Parser {
1450
1475
  };
1451
1476
 
1452
1477
  /**
1478
+ * Process icss symbol.
1453
1479
  * @param {string} name ICSS symbol name
1454
1480
  * @param {number} start start position
1455
1481
  * @param {number} end end position
@@ -1473,6 +1499,7 @@ class CssParser extends Parser {
1473
1499
  };
1474
1500
 
1475
1501
  /**
1502
+ * Process local or global function.
1476
1503
  * @param {string} input input
1477
1504
  * @param {1 | 2} type type of function
1478
1505
  * @param {number} start start position
@@ -1534,6 +1561,7 @@ class CssParser extends Parser {
1534
1561
  };
1535
1562
 
1536
1563
  /**
1564
+ * Process local at rule.
1537
1565
  * @param {string} input input
1538
1566
  * @param {number} end name end position
1539
1567
  * @param {{ string?: boolean, identifier?: boolean | RegExp }} options types which allowed to handle
@@ -1628,6 +1656,7 @@ class CssParser extends Parser {
1628
1656
  );
1629
1657
  };
1630
1658
  /**
1659
+ * Process dashed ident.
1631
1660
  * @param {string} input input
1632
1661
  * @param {number} start start position
1633
1662
  * @param {number} end end position
@@ -1727,6 +1756,7 @@ class CssParser extends Parser {
1727
1756
  return end;
1728
1757
  };
1729
1758
  /**
1759
+ * Process local declaration.
1730
1760
  * @param {string} input input
1731
1761
  * @param {number} pos name start position
1732
1762
  * @param {number} end name end position
@@ -1772,10 +1802,16 @@ class CssParser extends Parser {
1772
1802
  )
1773
1803
  : false;
1774
1804
 
1805
+ let afterExclamation = false;
1806
+
1775
1807
  const end = walkCssTokens.consumeUntil(
1776
1808
  input,
1777
1809
  pos,
1778
1810
  {
1811
+ delim(input, start, end) {
1812
+ afterExclamation = input.charCodeAt(start) === CC_EXCLAMATION;
1813
+ return end;
1814
+ },
1779
1815
  leftSquareBracket(input, start, end) {
1780
1816
  let i = end;
1781
1817
 
@@ -1824,6 +1860,11 @@ class CssParser extends Parser {
1824
1860
  return end;
1825
1861
  }
1826
1862
 
1863
+ if (afterExclamation) {
1864
+ afterExclamation = false;
1865
+ return end;
1866
+ }
1867
+
1827
1868
  const identifier = input.slice(start, end);
1828
1869
  const keyword = identifier.toLowerCase();
1829
1870
 
@@ -2121,6 +2162,7 @@ class CssParser extends Parser {
2121
2162
  };
2122
2163
 
2123
2164
  /**
2165
+ * Process id selector.
2124
2166
  * @param {string} input input
2125
2167
  * @param {number} start start position
2126
2168
  * @param {number} end end position
@@ -2144,6 +2186,7 @@ class CssParser extends Parser {
2144
2186
  };
2145
2187
 
2146
2188
  /**
2189
+ * Process class selector.
2147
2190
  * @param {string} input input
2148
2191
  * @param {number} start start position
2149
2192
  * @param {number} end end position
@@ -2169,6 +2212,7 @@ class CssParser extends Parser {
2169
2212
  };
2170
2213
 
2171
2214
  /**
2215
+ * Process attribute selector.
2172
2216
  * @param {string} input input
2173
2217
  * @param {number} start start position
2174
2218
  * @param {number} end end position
@@ -2303,6 +2347,29 @@ class CssParser extends Parser {
2303
2347
 
2304
2348
  return eatUntilSemi(input, start);
2305
2349
  }
2350
+ case "@charset": {
2351
+ const atRuleEnd = eatUntilSemi(input, start);
2352
+
2353
+ if (/** @type {CssModule} */ (module).exportType === "style") {
2354
+ return atRuleEnd;
2355
+ }
2356
+
2357
+ const dep = new ConstDependency("", [start, atRuleEnd + 1]);
2358
+ module.addPresentationalDependency(dep);
2359
+
2360
+ const value = walkCssTokens.eatString(input, end);
2361
+
2362
+ if (!value) {
2363
+ return atRuleEnd;
2364
+ }
2365
+
2366
+ /** @type {BuildInfo} */
2367
+ (module.buildInfo).charset = input
2368
+ .slice(value[0] + 1, value[1] - 1)
2369
+ .toUpperCase();
2370
+
2371
+ return atRuleEnd;
2372
+ }
2306
2373
  case "@import": {
2307
2374
  if (!this.options.import) {
2308
2375
  return eatUntilSemi(input, end);
@@ -2316,7 +2383,7 @@ class CssParser extends Parser {
2316
2383
  start,
2317
2384
  end
2318
2385
  );
2319
- return end;
2386
+ return eatUntilSemi(input, end);
2320
2387
  }
2321
2388
 
2322
2389
  return processAtImport(input, start, end);
@@ -2641,6 +2708,7 @@ class CssParser extends Parser {
2641
2708
  }
2642
2709
 
2643
2710
  /**
2711
+ * Returns comments in the range.
2644
2712
  * @param {Range} range range
2645
2713
  * @returns {Comment[]} comments in the range
2646
2714
  */
@@ -2648,6 +2716,7 @@ class CssParser extends Parser {
2648
2716
  if (!this.comments) return [];
2649
2717
  const [rangeStart, rangeEnd] = range;
2650
2718
  /**
2719
+ * Returns compared.
2651
2720
  * @param {Comment} comment comment
2652
2721
  * @param {number} needle needle
2653
2722
  * @returns {number} compared
@@ -2670,6 +2739,7 @@ class CssParser extends Parser {
2670
2739
  }
2671
2740
 
2672
2741
  /**
2742
+ * Parses comment options.
2673
2743
  * @param {Range} range range of the comment
2674
2744
  * @returns {{ options: Record<string, EXPECTED_ANY> | null, errors: (Error & { comment: Comment })[] | null }} result
2675
2745
  */