webpack 5.106.1 → 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 -1
  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 +59 -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 +10 -2
  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 +5 -0
  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
@@ -66,6 +66,7 @@ const IS_MODULES = /\.modules?\.[^.]+$/i;
66
66
  const CSS_COMMENT = /\/\*((?!\*\/)[\s\S]*?)\*\//g;
67
67
 
68
68
  /**
69
+ * Returns matches.
69
70
  * @param {RegExp} regexp a regexp
70
71
  * @param {string} str a string
71
72
  * @returns {RegExpExecArray[]} matches
@@ -87,6 +88,7 @@ const matchAll = (regexp, str) => {
87
88
  };
88
89
 
89
90
  /**
91
+ * Returns normalized url.
90
92
  * @param {string} str url string
91
93
  * @param {boolean} isString is url wrapped in quotes
92
94
  * @returns {string} normalized url
@@ -131,6 +133,7 @@ const regexExcessiveSpaces =
131
133
  /(^|\\+)?(\\[A-F0-9]{1,6})\u0020(?![a-fA-F0-9\u0020])/g;
132
134
 
133
135
  /**
136
+ * Returns escaped identifier.
134
137
  * @param {string} str string
135
138
  * @returns {string} escaped identifier
136
139
  */
@@ -184,6 +187,7 @@ const escapeIdentifier = (str) => {
184
187
  const CONTAINS_ESCAPE = /\\/;
185
188
 
186
189
  /**
190
+ * Returns hex.
187
191
  * @param {string} str string
188
192
  * @returns {[string, number] | undefined} hex
189
193
  */
@@ -221,6 +225,7 @@ const gobbleHex = (str) => {
221
225
  };
222
226
 
223
227
  /**
228
+ * Unescape identifier.
224
229
  * @param {string} str string
225
230
  * @returns {string} unescaped string
226
231
  */
@@ -406,6 +411,7 @@ const GRID = {
406
411
  };
407
412
 
408
413
  /**
414
+ * Gets known properties.
409
415
  * @param {{ animation?: boolean, container?: boolean, customIdents?: boolean, grid?: boolean }=} options options
410
416
  * @returns {Map<string, Record<string, number>>} list of known properties
411
417
  */
@@ -527,6 +533,7 @@ const getKnownProperties = (options = {}) => {
527
533
 
528
534
  class LocConverter {
529
535
  /**
536
+ * Creates an instance of LocConverter.
530
537
  * @param {string} input input
531
538
  */
532
539
  constructor(input) {
@@ -537,6 +544,7 @@ class LocConverter {
537
544
  }
538
545
 
539
546
  /**
547
+ * Returns location converter.
540
548
  * @param {number} pos position
541
549
  * @returns {LocConverter} location converter
542
550
  */
@@ -583,6 +591,7 @@ const eatUntilSemi = walkCssTokens.eatUntil(";");
583
591
  const eatUntilLeftCurly = walkCssTokens.eatUntil("{");
584
592
 
585
593
  /**
594
+ * Defines the css parser own options type used by this module.
586
595
  * @typedef {object} CssParserOwnOptions
587
596
  * @property {("pure" | "global" | "local" | "auto")=} defaultMode default mode
588
597
  */
@@ -591,6 +600,7 @@ const eatUntilLeftCurly = walkCssTokens.eatUntil("{");
591
600
 
592
601
  class CssParser extends Parser {
593
602
  /**
603
+ * Creates an instance of CssParser.
594
604
  * @param {CssParserOptions=} options options
595
605
  */
596
606
  constructor(options = {}) {
@@ -615,6 +625,7 @@ class CssParser extends Parser {
615
625
  }
616
626
 
617
627
  /**
628
+ * Processes the provided state.
618
629
  * @param {ParserState} state parser state
619
630
  * @param {string} message warning message
620
631
  * @param {LocConverter} locConverter location converter
@@ -634,6 +645,7 @@ class CssParser extends Parser {
634
645
  }
635
646
 
636
647
  /**
648
+ * Parses the provided source and updates the parser state.
637
649
  * @param {string | Buffer | PreparsedAst} source the source to parse
638
650
  * @param {ParserState} state the parser state
639
651
  * @returns {ParserState} the parser state
@@ -700,6 +712,7 @@ class CssParser extends Parser {
700
712
  const icssDefinitions = new Map();
701
713
 
702
714
  /**
715
+ * Checks whether this css parser is next nested syntax.
703
716
  * @param {string} input input
704
717
  * @param {number} pos position
705
718
  * @returns {boolean} true, when next is nested syntax
@@ -731,12 +744,14 @@ class CssParser extends Parser {
731
744
  return true;
732
745
  };
733
746
  /**
747
+ * Checks whether this css parser is local mode.
734
748
  * @returns {boolean} true, when in local scope
735
749
  */
736
750
  const isLocalMode = () =>
737
751
  modeData === LOCAL_MODE || (mode === "local" && modeData === undefined);
738
752
 
739
753
  /**
754
+ * Returns end.
740
755
  * @param {string} input input
741
756
  * @param {number} start start
742
757
  * @param {number} end end
@@ -763,6 +778,7 @@ class CssParser extends Parser {
763
778
  // Vanilla CSS stuff
764
779
 
765
780
  /**
781
+ * Processes the provided input.
766
782
  * @param {string} input input
767
783
  * @param {number} start name start position
768
784
  * @param {number} end name end position
@@ -875,6 +891,7 @@ class CssParser extends Parser {
875
891
  };
876
892
 
877
893
  /**
894
+ * Process url function.
878
895
  * @param {string} input input
879
896
  * @param {number} end end position
880
897
  * @param {string} name the name of function
@@ -937,6 +954,7 @@ class CssParser extends Parser {
937
954
  };
938
955
 
939
956
  /**
957
+ * Process old url function.
940
958
  * @param {string} input input
941
959
  * @param {number} start start position
942
960
  * @param {number} end end position
@@ -999,6 +1017,7 @@ class CssParser extends Parser {
999
1017
  };
1000
1018
 
1001
1019
  /**
1020
+ * Process image set function.
1002
1021
  * @param {string} input input
1003
1022
  * @param {number} start start position
1004
1023
  * @param {number} end end position
@@ -1063,6 +1082,7 @@ class CssParser extends Parser {
1063
1082
  // CSS modules stuff
1064
1083
 
1065
1084
  /**
1085
+ * Returns resolved reexport (localName and importName).
1066
1086
  * @param {string} value value to resolve
1067
1087
  * @param {string=} localName override local name
1068
1088
  * @param {boolean=} isCustomProperty true when it is custom property, otherwise false
@@ -1096,6 +1116,7 @@ class CssParser extends Parser {
1096
1116
  };
1097
1117
 
1098
1118
  /**
1119
+ * Process import or export.
1099
1120
  * @param {0 | 1} type import or export
1100
1121
  * @param {string} input input
1101
1122
  * @param {number} pos start position
@@ -1149,6 +1170,7 @@ class CssParser extends Parser {
1149
1170
  }
1150
1171
 
1151
1172
  /**
1173
+ * Creates a dep from the provided name.
1152
1174
  * @param {string} name name
1153
1175
  * @param {string} value value
1154
1176
  * @param {number} start start of position
@@ -1266,6 +1288,7 @@ class CssParser extends Parser {
1266
1288
  /** @typedef {{ from: string, items: ({ localName: string, importName: string })[] }} ValueAtRuleImport */
1267
1289
  /** @typedef {{ localName: string, value: string }} ValueAtRuleValue */
1268
1290
  /**
1291
+ * Parses value at rule params.
1269
1292
  * @param {string} str value at-rule params
1270
1293
  * @returns {ValueAtRuleImport | ValueAtRuleValue} parsed result
1271
1294
  */
@@ -1334,6 +1357,7 @@ class CssParser extends Parser {
1334
1357
  };
1335
1358
 
1336
1359
  /**
1360
+ * Processes the provided input.
1337
1361
  * @param {string} input input
1338
1362
  * @param {number} start name start position
1339
1363
  * @param {number} end name end position
@@ -1451,6 +1475,7 @@ class CssParser extends Parser {
1451
1475
  };
1452
1476
 
1453
1477
  /**
1478
+ * Process icss symbol.
1454
1479
  * @param {string} name ICSS symbol name
1455
1480
  * @param {number} start start position
1456
1481
  * @param {number} end end position
@@ -1474,6 +1499,7 @@ class CssParser extends Parser {
1474
1499
  };
1475
1500
 
1476
1501
  /**
1502
+ * Process local or global function.
1477
1503
  * @param {string} input input
1478
1504
  * @param {1 | 2} type type of function
1479
1505
  * @param {number} start start position
@@ -1535,6 +1561,7 @@ class CssParser extends Parser {
1535
1561
  };
1536
1562
 
1537
1563
  /**
1564
+ * Process local at rule.
1538
1565
  * @param {string} input input
1539
1566
  * @param {number} end name end position
1540
1567
  * @param {{ string?: boolean, identifier?: boolean | RegExp }} options types which allowed to handle
@@ -1629,6 +1656,7 @@ class CssParser extends Parser {
1629
1656
  );
1630
1657
  };
1631
1658
  /**
1659
+ * Process dashed ident.
1632
1660
  * @param {string} input input
1633
1661
  * @param {number} start start position
1634
1662
  * @param {number} end end position
@@ -1728,6 +1756,7 @@ class CssParser extends Parser {
1728
1756
  return end;
1729
1757
  };
1730
1758
  /**
1759
+ * Process local declaration.
1731
1760
  * @param {string} input input
1732
1761
  * @param {number} pos name start position
1733
1762
  * @param {number} end name end position
@@ -2133,6 +2162,7 @@ class CssParser extends Parser {
2133
2162
  };
2134
2163
 
2135
2164
  /**
2165
+ * Process id selector.
2136
2166
  * @param {string} input input
2137
2167
  * @param {number} start start position
2138
2168
  * @param {number} end end position
@@ -2156,6 +2186,7 @@ class CssParser extends Parser {
2156
2186
  };
2157
2187
 
2158
2188
  /**
2189
+ * Process class selector.
2159
2190
  * @param {string} input input
2160
2191
  * @param {number} start start position
2161
2192
  * @param {number} end end position
@@ -2181,6 +2212,7 @@ class CssParser extends Parser {
2181
2212
  };
2182
2213
 
2183
2214
  /**
2215
+ * Process attribute selector.
2184
2216
  * @param {string} input input
2185
2217
  * @param {number} start start position
2186
2218
  * @param {number} end end position
@@ -2315,6 +2347,29 @@ class CssParser extends Parser {
2315
2347
 
2316
2348
  return eatUntilSemi(input, start);
2317
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
+ }
2318
2373
  case "@import": {
2319
2374
  if (!this.options.import) {
2320
2375
  return eatUntilSemi(input, end);
@@ -2328,7 +2383,7 @@ class CssParser extends Parser {
2328
2383
  start,
2329
2384
  end
2330
2385
  );
2331
- return end;
2386
+ return eatUntilSemi(input, end);
2332
2387
  }
2333
2388
 
2334
2389
  return processAtImport(input, start, end);
@@ -2653,6 +2708,7 @@ class CssParser extends Parser {
2653
2708
  }
2654
2709
 
2655
2710
  /**
2711
+ * Returns comments in the range.
2656
2712
  * @param {Range} range range
2657
2713
  * @returns {Comment[]} comments in the range
2658
2714
  */
@@ -2660,6 +2716,7 @@ class CssParser extends Parser {
2660
2716
  if (!this.comments) return [];
2661
2717
  const [rangeStart, rangeEnd] = range;
2662
2718
  /**
2719
+ * Returns compared.
2663
2720
  * @param {Comment} comment comment
2664
2721
  * @param {number} needle needle
2665
2722
  * @returns {number} compared
@@ -2682,6 +2739,7 @@ class CssParser extends Parser {
2682
2739
  }
2683
2740
 
2684
2741
  /**
2742
+ * Parses comment options.
2685
2743
  * @param {Range} range range of the comment
2686
2744
  * @returns {{ options: Record<string, EXPECTED_ANY> | null, errors: (Error & { comment: Comment })[] | null }} result
2687
2745
  */