webpack 5.110.2 → 5.111.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. package/README.md +5 -2
  2. package/lib/APIPlugin.js +23 -7
  3. package/lib/AutomaticPrefetchPlugin.js +1 -1
  4. package/lib/Cache.js +8 -3
  5. package/lib/CacheFacade.js +1 -1
  6. package/lib/ChunkGraph.js +20 -18
  7. package/lib/CircularModulesPlugin.js +157 -55
  8. package/lib/CleanPlugin.js +2 -2
  9. package/lib/Compilation.js +321 -303
  10. package/lib/Compiler.js +209 -46
  11. package/lib/ConcatenationScope.js +25 -35
  12. package/lib/ContextModule.js +17 -81
  13. package/lib/ContextModuleFactory.js +1 -1
  14. package/lib/CopyPlugin.js +1054 -0
  15. package/lib/DefinePlugin.js +24 -8
  16. package/lib/DotenvPlugin.js +41 -13
  17. package/lib/ExternalModule.js +41 -14
  18. package/lib/FileSystemInfo.js +17 -14
  19. package/lib/FlagDependencyExportsPlugin.js +45 -21
  20. package/lib/FlagDependencyUsagePlugin.js +8 -2
  21. package/lib/HotModuleReplacementPlugin.js +53 -7
  22. package/lib/JavascriptMetaInfoPlugin.js +5 -3
  23. package/lib/MainTemplate.js +5 -1
  24. package/lib/Module.js +16 -7
  25. package/lib/MultiCompiler.js +1 -1
  26. package/lib/MultiWatching.js +1 -1
  27. package/lib/NormalModule.js +58 -32
  28. package/lib/NormalModuleFactory.js +1 -1
  29. package/lib/RuntimeGlobals.js +21 -7
  30. package/lib/RuntimeModule.js +28 -12
  31. package/lib/RuntimePlugin.js +33 -3
  32. package/lib/RuntimeTemplate.js +794 -477
  33. package/lib/SourceMapDevToolPlugin.js +1 -1
  34. package/lib/Watching.js +9 -0
  35. package/lib/WebpackOptionsApply.js +84 -91
  36. package/lib/asset/AssetGenerator.js +25 -8
  37. package/lib/asset/AssetModule.js +3 -0
  38. package/lib/asset/WebManifestParser.js +7 -5
  39. package/lib/async-modules/AsyncModuleHelpers.js +10 -4
  40. package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
  41. package/lib/cache/IdleFileCachePlugin.js +2 -2
  42. package/lib/cache/PackFileCacheStrategy.js +14 -1
  43. package/lib/config/browserslistTargetHandler.js +19 -0
  44. package/lib/config/defaults.js +110 -64
  45. package/lib/config/normalization.js +100 -20
  46. package/lib/config/target.js +10 -0
  47. package/lib/container/ContainerReferencePlugin.js +6 -0
  48. package/lib/container/RemoteRuntimeModule.js +9 -0
  49. package/lib/container/declaredRemotes.js +39 -0
  50. package/lib/css/CssGenerator.js +8 -0
  51. package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
  52. package/lib/css/CssLoadingRuntimeModule.js +94 -36
  53. package/lib/css/CssModule.js +1 -1
  54. package/lib/css/CssModulesPlugin.js +7 -6
  55. package/lib/css/CssParser.js +144 -11
  56. package/lib/css/CssServerStylesRuntimeModule.js +9 -0
  57. package/lib/css/cssMinify.js +11 -3
  58. package/lib/css/data.js +2814 -678
  59. package/lib/css/syntax.js +4082 -248
  60. package/lib/debug/ProfilingPlugin.js +4 -0
  61. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
  62. package/lib/dependencies/AMDRuntimeModules.js +18 -0
  63. package/lib/dependencies/CommonJsExportRequireDependency.js +3 -1
  64. package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
  65. package/lib/dependencies/CommonJsImportsParserPlugin.js +1 -0
  66. package/lib/dependencies/CommonJsPlugin.js +19 -3
  67. package/lib/dependencies/CommonJsRequireDependency.js +32 -9
  68. package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +20 -7
  69. package/lib/dependencies/CssIcssExportDependency.js +7 -1
  70. package/lib/dependencies/HarmonyCompatibilityDependency.js +58 -4
  71. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +8 -3
  72. package/lib/dependencies/HarmonyExportExpressionDependency.js +44 -29
  73. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +171 -32
  74. package/lib/dependencies/HarmonyExportInitFragment.js +99 -19
  75. package/lib/dependencies/HarmonyExportSpecifierDependency.js +18 -30
  76. package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
  77. package/lib/dependencies/HarmonyImportDependency.js +99 -41
  78. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +20 -3
  79. package/lib/dependencies/HarmonyImportSpecifierDependency.js +24 -1
  80. package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
  81. package/lib/dependencies/HtmlEntryDependency.js +62 -2
  82. package/lib/dependencies/ImportContextDependency.js +43 -3
  83. package/lib/dependencies/ImportDependency.js +8 -29
  84. package/lib/dependencies/ImportMetaMainDependency.js +104 -0
  85. package/lib/dependencies/ImportMetaPlugin.js +59 -15
  86. package/lib/dependencies/ImportParserPlugin.js +24 -14
  87. package/lib/dependencies/RequireHeaderDependency.js +20 -21
  88. package/lib/dependencies/SystemRuntimeModule.js +9 -0
  89. package/lib/dependencies/WorkerDependency.js +1 -2
  90. package/lib/dependencies/WorkletDependency.js +1 -2
  91. package/lib/dependencies/importOptionsCheck.js +47 -0
  92. package/lib/dll/DelegatedModule.js +18 -1
  93. package/lib/dll/DllReferencePlugin.js +11 -8
  94. package/lib/dll/LibManifestPlugin.js +1 -1
  95. package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
  96. package/lib/errors/DotenvFileError.js +29 -0
  97. package/lib/errors/DuplicateModulesWarning.js +12 -7
  98. package/lib/errors/EmptyCopyPatternWarning.js +26 -0
  99. package/lib/errors/ExternalStarReexportError.js +44 -0
  100. package/lib/errors/ImportedBindingAssignmentError.js +30 -0
  101. package/lib/errors/MissingSourceMapsWarning.js +36 -0
  102. package/lib/errors/ModuleParseError.js +2 -1
  103. package/lib/errors/UnusedAssetsWarning.js +36 -0
  104. package/lib/errors/UnusedFederationWarning.js +35 -0
  105. package/lib/errors/UnusedModulesWarning.js +38 -0
  106. package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
  107. package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
  108. package/lib/esm/ModuleChunkLoadingPlugin.js +30 -11
  109. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +92 -60
  110. package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
  111. package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
  112. package/lib/html/HtmlGenerator.js +11 -5
  113. package/lib/html/HtmlModulesPlugin.js +360 -84
  114. package/lib/html/HtmlParser.js +13 -6
  115. package/lib/html/builtinEmbeddedRenderer.js +107 -0
  116. package/lib/html/data.js +121 -7
  117. package/lib/html/htmlMinify.js +84 -113
  118. package/lib/html/syntax.js +1067 -569
  119. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  120. package/lib/index.js +3 -0
  121. package/lib/javascript/JavascriptModule.js +1 -0
  122. package/lib/javascript/JavascriptModulesPlugin.js +52 -22
  123. package/lib/javascript/JavascriptParser.js +1255 -728
  124. package/lib/javascript/StartupHelpers.js +27 -3
  125. package/lib/javascript/data.js +172 -0
  126. package/lib/javascript/grammar.js +5546 -0
  127. package/lib/javascript/parser.js +1494 -0
  128. package/lib/javascript/regexp.js +1762 -0
  129. package/lib/javascript/regexpData.js +51 -0
  130. package/lib/javascript/syntax.js +8696 -5225
  131. package/lib/library/ModuleLibraryPlugin.js +116 -5
  132. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
  133. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
  134. package/lib/optimize/ConcatenatedModule.js +133 -25
  135. package/lib/optimize/ConstExportsPlugin.js +50 -39
  136. package/lib/optimize/InlineExports.js +20 -123
  137. package/lib/optimize/MangleExportsPlugin.js +10 -0
  138. package/lib/optimize/ModuleConcatenationPlugin.js +24 -1
  139. package/lib/optimize/RealContentHashPlugin.js +68 -9
  140. package/lib/optimize/SideEffectsFlagPlugin.js +17 -9
  141. package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
  142. package/lib/performance/CacheEffectivenessPlugin.js +4 -3
  143. package/lib/performance/DuplicateModulesPlugin.js +57 -13
  144. package/lib/performance/EvalUsagePlugin.js +5 -2
  145. package/lib/performance/MissingSourceMapsPlugin.js +115 -0
  146. package/lib/performance/PureAnnotationsPlugin.js +6 -3
  147. package/lib/performance/TopLevelThisPlugin.js +5 -4
  148. package/lib/performance/UnusedAssetsPlugin.js +109 -0
  149. package/lib/performance/UnusedFederationPlugin.js +147 -0
  150. package/lib/performance/UnusedModulesPlugin.js +141 -0
  151. package/lib/performance/UnusedReexportsPlugin.js +1 -55
  152. package/lib/performance/isOnlyReexported.js +65 -0
  153. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
  154. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +2 -0
  155. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
  156. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
  157. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
  158. package/lib/prefetch/ResourceHintPlugin.js +7 -3
  159. package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
  160. package/lib/prefetch/StartupAssetHintRuntimeModule.js +9 -0
  161. package/lib/rules/RuleSetCompiler.js +211 -4
  162. package/lib/runtime/AsyncModuleRuntimeModule.js +105 -67
  163. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
  164. package/lib/runtime/BaseUriRuntimeModule.js +9 -0
  165. package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
  166. package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
  167. package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -0
  168. package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
  169. package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
  170. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
  171. package/lib/runtime/GlobalRuntimeModule.js +9 -0
  172. package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
  173. package/lib/runtime/HelperRuntimeModule.js +10 -0
  174. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +338 -217
  175. package/lib/runtime/NonceRuntimeModule.js +9 -0
  176. package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
  177. package/lib/runtime/PublicPathRuntimeModule.js +9 -0
  178. package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
  179. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
  180. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
  181. package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
  182. package/lib/runtime/SystemContextRuntimeModule.js +9 -0
  183. package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
  184. package/lib/schemes/HttpUriPlugin.js +22 -5
  185. package/lib/serialization/FileMiddleware.js +15 -2
  186. package/lib/serialization/ObjectMiddleware.js +138 -106
  187. package/lib/sharing/ConsumeSharedPlugin.js +12 -0
  188. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
  189. package/lib/sharing/ShareRuntimeModule.js +9 -0
  190. package/lib/sharing/declaredShared.js +47 -0
  191. package/lib/stats/DefaultStatsFactoryPlugin.js +3 -1
  192. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
  193. package/lib/util/ArrayQueue.js +3 -3
  194. package/lib/util/SourceProcessor.js +76 -69
  195. package/lib/util/URLAbsoluteSpecifier.js +3 -1
  196. package/lib/util/async.js +292 -0
  197. package/lib/util/buildDiagnostics.js +69 -0
  198. package/lib/util/conventions.js +5 -1
  199. package/lib/util/fs.js +27 -1
  200. package/lib/util/handlerKeys.js +40 -0
  201. package/lib/util/identifier.js +20 -0
  202. package/lib/util/internalSerializables.js +6 -0
  203. package/lib/util/registerExternalSerializer.js +6 -45
  204. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +9 -0
  205. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
  206. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +9 -0
  207. package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
  208. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
  209. package/package.json +22 -16
  210. package/schemas/WebpackOptions.check.js +1 -1
  211. package/schemas/WebpackOptions.json +388 -76
  212. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  213. package/schemas/plugins/ManifestPlugin.check.js +1 -1
  214. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  215. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  216. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  217. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  218. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  219. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  220. package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
  221. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
  222. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  223. package/types.d.ts +1440 -331
  224. package/lib/dependencies/ExportBindingInitFragment.js +0 -191
  225. package/lib/errors/EntrypointOverlapWarning.js +0 -45
  226. package/lib/performance/EntrypointOverlapPlugin.js +0 -122
@@ -868,6 +868,7 @@ class HtmlParser extends Parser {
868
868
  * @typedef {object} HtmlEntryInfo
869
869
  * @property {string} request
870
870
  * @property {string} entryName
871
+ * @property {number} index position in the document, across all groups — the order the emitted files are named in
871
872
  * @property {"script" | "script-module" | "modulepreload" | "stylesheet" | "html" | "preload" | "prefetch"} type
872
873
  * @property {boolean=} css entry emits a CSS chunk (`<link rel="preload" as="style">`), so it needs the CSS filename template
873
874
  */
@@ -1478,7 +1479,8 @@ class HtmlParser extends Parser {
1478
1479
  const scriptType =
1479
1480
  /** @type {"script" | "script-module"} */ (type);
1480
1481
  const request = dataUri("text/javascript", value);
1481
- const entryName = `__html_${moduleHash}_${nextEntryIndex++}`;
1482
+ const index = nextEntryIndex++;
1483
+ const entryName = `__html_${moduleHash}_${index}`;
1482
1484
  const dep = new HtmlInlineScriptDependency(
1483
1485
  request,
1484
1486
  nameEnd,
@@ -1501,6 +1503,7 @@ class HtmlParser extends Parser {
1501
1503
  ).push({
1502
1504
  request,
1503
1505
  entryName,
1506
+ index,
1504
1507
  type: scriptType
1505
1508
  });
1506
1509
  break;
@@ -1581,7 +1584,8 @@ class HtmlParser extends Parser {
1581
1584
  // kind rewrites to the page's filename and emits no sibling tags.
1582
1585
  // Recorded as an independent entry (no `dependOn`), like an entry point.
1583
1586
  if (type === "html") {
1584
- const entryName = `__html_${moduleHash}_${nextEntryIndex++}`;
1587
+ const index = nextEntryIndex++;
1588
+ const entryName = `__html_${moduleHash}_${index}`;
1585
1589
  const dep = new HtmlEntryDependency(
1586
1590
  request,
1587
1591
  [s, e],
@@ -1591,7 +1595,7 @@ class HtmlParser extends Parser {
1591
1595
  );
1592
1596
  setLoc(dep, s, e);
1593
1597
  module.addPresentationalDependency(dep);
1594
- htmlLinkEntries.push({ request, entryName, type });
1598
+ htmlLinkEntries.push({ request, entryName, index, type });
1595
1599
  continue;
1596
1600
  }
1597
1601
  // `rel="preload"/"prefetch"` of a bundled resource: an
@@ -1603,7 +1607,8 @@ class HtmlParser extends Parser {
1603
1607
  const asStyle = as
1604
1608
  ? as.trim().toLowerCase() === "style"
1605
1609
  : false;
1606
- const entryName = `__html_${moduleHash}_${nextEntryIndex++}`;
1610
+ const index = nextEntryIndex++;
1611
+ const entryName = `__html_${moduleHash}_${index}`;
1607
1612
  // Tag metadata so the template can mirror `crossorigin`/
1608
1613
  // `integrity` onto a native `preload` `<link>` (integrity-
1609
1614
  // eligible per the SRI spec). `prefetch` gets none — the spec
@@ -1635,6 +1640,7 @@ class HtmlParser extends Parser {
1635
1640
  ).push({
1636
1641
  request,
1637
1642
  entryName,
1643
+ index,
1638
1644
  type,
1639
1645
  css: asStyle
1640
1646
  });
@@ -1649,7 +1655,8 @@ class HtmlParser extends Parser {
1649
1655
  type === "modulepreload" ||
1650
1656
  type === "stylesheet"
1651
1657
  ) {
1652
- const entryName = `__html_${moduleHash}_${nextEntryIndex++}`;
1658
+ const index = nextEntryIndex++;
1659
+ const entryName = `__html_${moduleHash}_${index}`;
1653
1660
  const willBeModuleScript =
1654
1661
  type === "script-module" ||
1655
1662
  (outputModule && type === "script");
@@ -1777,7 +1784,7 @@ class HtmlParser extends Parser {
1777
1784
  : type === "stylesheet"
1778
1785
  ? stylesheetEntries
1779
1786
  : modulePreloadEntries
1780
- ).push({ request, entryName, type });
1787
+ ).push({ request, entryName, index, type });
1781
1788
  } else {
1782
1789
  const dep = new HtmlSourceDependency(request, [s, e]);
1783
1790
  ResourceHintPlugin.applyDefaults(
@@ -0,0 +1,107 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const { CSS_TYPE } = require("../ModuleSourceTypeConstants");
9
+
10
+ /** @import { CssProcessOptions } from "../css/syntax" */
11
+ /** @import { EmbeddedSourceRenderer } from "./syntax" */
12
+
13
+ /**
14
+ * What this minifies inline CSS with: the CSS minifier's own options, so an
15
+ * inline declaration is held to the rules a `.css` asset is.
16
+ * @typedef {Pick<CssProcessOptions, "environment" | "convertLengthUnits" | "rewriteCustomProperties" | "transforms" | "unusedSymbols" | "pseudoClasses">} BuiltinEmbeddedRendererOptions
17
+ */
18
+
19
+ // Both are loaded on first render rather than at module load: a document that
20
+ // embeds no CSS and no JSON pays for neither.
21
+ /** @type {typeof import("../css/syntax") | undefined} */
22
+ let _cssSyntax;
23
+ /** @type {typeof import("./syntax") | undefined} */
24
+ let _htmlSyntax;
25
+
26
+ /**
27
+ * Strip the whitespace between a JSON body's tokens, every literal copied byte
28
+ * for byte. Re-serializing would round numbers, drop a duplicate key and rewrite
29
+ * the escapes that keep a string from closing the `<script>` early.
30
+ * @param {string} json a `<script>` body
31
+ * @returns {string} the stripped body, or the body as written where it is not JSON
32
+ */
33
+ const stripJsonWhitespace = (json) => {
34
+ try {
35
+ JSON.parse(json);
36
+ } catch (_err) {
37
+ // Not JSON after all (a template, a placeholder) — not ours to touch.
38
+ return json;
39
+ }
40
+ let out = "";
41
+ let inString = false;
42
+ let escaped = false;
43
+ for (let i = 0; i < json.length; i++) {
44
+ const c = json.charCodeAt(i);
45
+ if (inString) {
46
+ out += json[i];
47
+ if (escaped) escaped = false;
48
+ else if (c === 0x5c) escaped = true;
49
+ else if (c === 0x22) inString = false;
50
+ continue;
51
+ }
52
+ if (c === 0x22) {
53
+ inString = true;
54
+ out += json[i];
55
+ continue;
56
+ }
57
+ // JSON whitespace (RFC 8259): tab, LF, CR, space.
58
+ if (c === 0x09 || c === 0x0a || c === 0x0d || c === 0x20) continue;
59
+ out += json[i];
60
+ }
61
+ return out;
62
+ };
63
+
64
+ /**
65
+ * The renderer webpack ships for what a document embeds: its own CSS minifier
66
+ * for a `<style>` or `style=""` and `stripJsonWhitespace` for JSON, declining
67
+ * every other language. A caller passes it where it has no renderer of its own,
68
+ * or behind one for the languages that one declines — the HTML printer minifies
69
+ * none of this itself.
70
+ * @param {BuiltinEmbeddedRendererOptions=} options the CSS minifier's options, so an inline declaration is minified as the `.css` assets are
71
+ * @returns {EmbeddedSourceRenderer} the renderer
72
+ */
73
+ const builtinEmbeddedRenderer = (options = {}) => {
74
+ const { BLOCK_CONTENTS, JSON_TYPE } =
75
+ _htmlSyntax || (_htmlSyntax = require("./syntax"));
76
+ const sheet = { mode: /** @type {"minify"} */ ("minify"), ...options };
77
+ const block = { ...sheet, as: BLOCK_CONTENTS };
78
+ // A `style=""` repeats across a document far more often than it varies.
79
+ /** @type {Map<string, string>} */
80
+ const blocks = new Map();
81
+ return (source, info) => {
82
+ if (info.type === JSON_TYPE) return stripJsonWhitespace(source);
83
+ if (info.type !== CSS_TYPE) return undefined;
84
+ const isBlock = info.as === BLOCK_CONTENTS;
85
+ if (isBlock) {
86
+ const memoized = blocks.get(source);
87
+ if (memoized !== undefined) return memoized;
88
+ }
89
+ const { SourceProcessor } =
90
+ _cssSyntax || (_cssSyntax = require("../css/syntax"));
91
+ let code;
92
+ try {
93
+ code = new SourceProcessor().process(
94
+ source,
95
+ isBlock ? block : sheet
96
+ ).code;
97
+ } catch (_err) {
98
+ // Text the minifier cannot read is left as written, by declining.
99
+ return undefined;
100
+ }
101
+ if (isBlock) blocks.set(source, code);
102
+ return code;
103
+ };
104
+ };
105
+
106
+ module.exports.builtinEmbeddedRenderer = builtinEmbeddedRenderer;
107
+ module.exports.stripJsonWhitespace = stripJsonWhitespace;
package/lib/html/data.js CHANGED
@@ -6,7 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  // GENERATED by tooling/generate-html-data.js — do not edit.
9
- // cspell:ignore advasoft altglyph altglyphdef altglyphitem animatecolor animatemotion animatetransform arcrole aswedit attributename attributetype basefrequency baseprofile bgsound calcmode clippathunits contenteditable diffuseconstant enterkeyhint fedropshadow filterunits formenctype formmethod formtarget glyphref gradienttransform gradientunits hotjava hotmetal inputmode jscript kernelmatrix kernelunitlength keypoints keysplines keytimes limitingconeangle livescript markerheight markerwidth maskcontentunits maskunits metrius mtext numoctaves pathlength patterncontentunits patterntransform patternunits pointsatx pointsaty pointsatz preservealpha primitiveunits refx refy repeatcount repeatdur requiredextensions requiredfeatures silmaril softquad specularconstant specularexponent startoffset stddeviation stitchtiles surfacescale systemlanguage tablevalues targetx targety textlength viewbox viewtarget webtechs writingsuggestions xchannelselector ychannelselector
9
+ // cspell:ignore advasoft altglyph altglyphdef altglyphitem animatecolor animatemotion animatetransform arcrole aswedit attributename attributetype basefrequency baseprofile bgsound calcmode clippathunits contenteditable diffuseconstant enterkeyhint fedropshadow filterunits formenctype formmethod formtarget glyphref gradienttransform gradientunits hotjava hotmetal inputmode jscript kernelmatrix kernelunitlength keypoints keysplines keytimes limitingconeangle livescript markerheight markerwidth maskcontentunits maskunits metrius mtext numoctaves pathlength patterncontentunits patterntransform patternunits pointsatx pointsaty pointsatz preservealpha primitiveunits refx refy repeatcount repeatdur requiredextensions requiredfeatures silmaril softquad specularconstant specularexponent startoffset stddeviation stitchtiles surfacescale systemlanguage tablevalues targetx targety textlength viewbox viewtarget webtechs writingsuggestions xchannelselector ychannelselector onabort onafterprint onauxclick onbeforeinput onbeforematch onbeforeprint onbeforetoggle onbeforeunload onblur oncancel oncanplay oncanplaythrough onchange onclick onclose oncommand oncontextlost oncontextmenu oncontextrestored oncopy oncuechange oncut ondblclick ondrag ondragend ondragenter ondragleave ondragover ondragstart ondrop ondurationchange onemptied onended onerror onfocus onformdata onhashchange oninput oninvalid onkeydown onkeypress onkeyup onlanguagechange onload onloadeddata onloadedmetadata onloadstart onmessage onmessageerror onmousedown onmouseenter onmouseleave onmousemove onmouseout onmouseover onmouseup onoffline ononline onpagehide onpagereveal onpageshow onpageswap onpaste onpause onplay onplaying onpopstate onprogress onratechange onrejectionhandled onreset onresize onscroll onscrollend onsecuritypolicyviolation onseeked onseeking onselect onslotchange onstalled onstorage onsubmit onsuspend ontimeupdate ontoggle onunhandledrejection onunload onvolumechange onwaiting onwebkitanimationend onwebkitanimationiteration onwebkitanimationstart onwebkittransitionend onwheel
10
10
  // Reflected-attribute tables from webref's extraction of the HTML IDL (see tooling/generate-html-data.js); everything else is the
11
11
  // generator's SUPPLEMENT, which carries the spec facts no dataset states.
12
12
 
@@ -178,6 +178,8 @@ const REWRITABLE_ATTRIBUTES = new Set([
178
178
  "rowspan",
179
179
  "sandbox",
180
180
  "scope",
181
+ "scrollamount",
182
+ "scrolldelay",
181
183
  "size",
182
184
  "sizes",
183
185
  "span",
@@ -330,7 +332,7 @@ const BOOLEAN_ATTRIBUTES = new Map([
330
332
  ["autofocus", null],
331
333
  ["autoplay", new Set(["audio", "video"])],
332
334
  ["checked", new Set(["input"])],
333
- ["compact", new Set(["dl", "menu", "ol", "ul"])],
335
+ ["compact", new Set(["dir", "dl", "menu", "ol", "ul"])],
334
336
  ["controls", new Set(["audio", "img", "video"])],
335
337
  ["declare", new Set(["object"])],
336
338
  ["default", new Set(["track"])],
@@ -358,6 +360,7 @@ const BOOLEAN_ATTRIBUTES = new Map([
358
360
  ["muted", new Set(["audio", "video"])],
359
361
  ["nohref", new Set(["area"])],
360
362
  ["nomodule", new Set(["script"])],
363
+ ["noresize", new Set(["frame"])],
361
364
  ["noshade", new Set(["hr"])],
362
365
  ["novalidate", new Set(["form"])],
363
366
  ["nowrap", new Set(["td", "th"])],
@@ -369,7 +372,8 @@ const BOOLEAN_ATTRIBUTES = new Map([
369
372
  ["selected", new Set(["option"])],
370
373
  ["shadowrootclonable", new Set(["template"])],
371
374
  ["shadowrootdelegatesfocus", new Set(["template"])],
372
- ["shadowrootserializable", new Set(["template"])]
375
+ ["shadowrootserializable", new Set(["template"])],
376
+ ["truespeed", new Set(["marquee"])]
373
377
  ]);
374
378
 
375
379
  /**
@@ -435,7 +439,7 @@ const URL_ATTRIBUTES = new Map([
435
439
  ["data", new Set(["object"])],
436
440
  ["formaction", new Set(["button", "input"])],
437
441
  ["href", new Set(["a", "area", "base", "link"])],
438
- ["longdesc", new Set(["iframe", "img"])],
442
+ ["longdesc", new Set(["frame", "iframe", "img"])],
439
443
  ["lowsrc", new Set(["img"])],
440
444
  ["manifest", new Set(["html"])],
441
445
  ["poster", new Set(["video"])],
@@ -444,6 +448,7 @@ const URL_ATTRIBUTES = new Map([
444
448
  new Set([
445
449
  "audio",
446
450
  "embed",
451
+ "frame",
447
452
  "iframe",
448
453
  "img",
449
454
  "input",
@@ -480,17 +485,19 @@ const INTEGER_ATTRIBUTES = new Map([
480
485
  "video"
481
486
  ])
482
487
  ],
483
- ["hspace", new Set(["img", "object"])],
488
+ ["hspace", new Set(["img", "marquee", "object"])],
484
489
  ["maxlength", new Set(["input", "textarea"])],
485
490
  ["minlength", new Set(["input", "textarea"])],
486
491
  ["rows", new Set(["textarea"])],
487
492
  ["rowspan", new Set(["td", "th"])],
493
+ ["scrollamount", new Set(["marquee"])],
494
+ ["scrolldelay", new Set(["marquee"])],
488
495
  ["size", new Set(["input", "select"])],
489
496
  ["span", new Set(["col", "colgroup"])],
490
497
  ["start", new Set(["ol"])],
491
498
  ["tabindex", null],
492
499
  ["value", new Set(["li"])],
493
- ["vspace", new Set(["img", "object"])],
500
+ ["vspace", new Set(["img", "marquee", "object"])],
494
501
  [
495
502
  "width",
496
503
  new Set([
@@ -499,10 +506,12 @@ const INTEGER_ATTRIBUTES = new Map([
499
506
  "iframe",
500
507
  "img",
501
508
  "input",
509
+ "listing",
502
510
  "object",
503
511
  "pre",
504
512
  "source",
505
- "video"
513
+ "video",
514
+ "xmp"
506
515
  ])
507
516
  ]
508
517
  ]);
@@ -524,6 +533,110 @@ const SIGNED_INTEGER_ATTRIBUTES = new Set(["start", "tabindex", "value"]);
524
533
  */
525
534
  const COMMA_LIST_ATTRIBUTES = new Set(["accept", "coords", "sizes"]);
526
535
 
536
+ /**
537
+ * Event handler content attributes, mapped to the elements each is one on
538
+ * (`null` = a global attribute). Elsewhere the same name is an ordinary
539
+ * attribute holding text — `onunload` is a handler on `<body>` and data on a
540
+ * `<div>` — so the value is only read as JavaScript where the table says it is.
541
+ * @type {Map<string, Set<string> | null>}
542
+ */
543
+ const EVENT_HANDLER_ATTRIBUTES = new Map([
544
+ ["onabort", null],
545
+ ["onafterprint", new Set(["body", "frameset"])],
546
+ ["onauxclick", null],
547
+ ["onbeforeinput", null],
548
+ ["onbeforematch", null],
549
+ ["onbeforeprint", new Set(["body", "frameset"])],
550
+ ["onbeforetoggle", null],
551
+ ["onbeforeunload", new Set(["body", "frameset"])],
552
+ ["onblur", null],
553
+ ["oncancel", null],
554
+ ["oncanplay", null],
555
+ ["oncanplaythrough", null],
556
+ ["onchange", null],
557
+ ["onclick", null],
558
+ ["onclose", null],
559
+ ["oncommand", null],
560
+ ["oncontextlost", null],
561
+ ["oncontextmenu", null],
562
+ ["oncontextrestored", null],
563
+ ["oncopy", null],
564
+ ["oncuechange", null],
565
+ ["oncut", null],
566
+ ["ondblclick", null],
567
+ ["ondrag", null],
568
+ ["ondragend", null],
569
+ ["ondragenter", null],
570
+ ["ondragleave", null],
571
+ ["ondragover", null],
572
+ ["ondragstart", null],
573
+ ["ondrop", null],
574
+ ["ondurationchange", null],
575
+ ["onemptied", null],
576
+ ["onended", null],
577
+ ["onerror", null],
578
+ ["onfocus", null],
579
+ ["onformdata", null],
580
+ ["onhashchange", new Set(["body", "frameset"])],
581
+ ["oninput", null],
582
+ ["oninvalid", null],
583
+ ["onkeydown", null],
584
+ ["onkeypress", null],
585
+ ["onkeyup", null],
586
+ ["onlanguagechange", new Set(["body", "frameset"])],
587
+ ["onload", null],
588
+ ["onloadeddata", null],
589
+ ["onloadedmetadata", null],
590
+ ["onloadstart", null],
591
+ ["onmessage", new Set(["body", "frameset"])],
592
+ ["onmessageerror", new Set(["body", "frameset"])],
593
+ ["onmousedown", null],
594
+ ["onmouseenter", null],
595
+ ["onmouseleave", null],
596
+ ["onmousemove", null],
597
+ ["onmouseout", null],
598
+ ["onmouseover", null],
599
+ ["onmouseup", null],
600
+ ["onoffline", new Set(["body", "frameset"])],
601
+ ["ononline", new Set(["body", "frameset"])],
602
+ ["onpagehide", new Set(["body", "frameset"])],
603
+ ["onpagereveal", new Set(["body", "frameset"])],
604
+ ["onpageshow", new Set(["body", "frameset"])],
605
+ ["onpageswap", new Set(["body", "frameset"])],
606
+ ["onpaste", null],
607
+ ["onpause", null],
608
+ ["onplay", null],
609
+ ["onplaying", null],
610
+ ["onpopstate", new Set(["body", "frameset"])],
611
+ ["onprogress", null],
612
+ ["onratechange", null],
613
+ ["onrejectionhandled", new Set(["body", "frameset"])],
614
+ ["onreset", null],
615
+ ["onresize", null],
616
+ ["onscroll", null],
617
+ ["onscrollend", null],
618
+ ["onsecuritypolicyviolation", null],
619
+ ["onseeked", null],
620
+ ["onseeking", null],
621
+ ["onselect", null],
622
+ ["onslotchange", null],
623
+ ["onstalled", null],
624
+ ["onstorage", new Set(["body", "frameset"])],
625
+ ["onsubmit", null],
626
+ ["onsuspend", null],
627
+ ["ontimeupdate", null],
628
+ ["ontoggle", null],
629
+ ["onunhandledrejection", new Set(["body", "frameset"])],
630
+ ["onunload", new Set(["body", "frameset"])],
631
+ ["onvolumechange", null],
632
+ ["onwaiting", null],
633
+ ["onwebkitanimationend", null],
634
+ ["onwebkitanimationiteration", null],
635
+ ["onwebkitanimationstart", null],
636
+ ["onwebkittransitionend", null],
637
+ ["onwheel", null]
638
+ ]);
639
+
527
640
  /**
528
641
  * §13.1.2 void elements: no end tag, and no children to close one over.
529
642
  * @type {Set<string>}
@@ -1863,6 +1976,7 @@ module.exports.EMPTY_METADATA_ELEMENTS = EMPTY_METADATA_ELEMENTS;
1863
1976
  module.exports.EMPTY_REMOVABLE_ATTRIBUTES = EMPTY_REMOVABLE_ATTRIBUTES;
1864
1977
  module.exports.ENUMERATED_ATTRIBUTE_NAMES = ENUMERATED_ATTRIBUTE_NAMES;
1865
1978
  module.exports.ENUMERATED_KEYWORDS = ENUMERATED_KEYWORDS;
1979
+ module.exports.EVENT_HANDLER_ATTRIBUTES = EVENT_HANDLER_ATTRIBUTES;
1866
1980
  module.exports.FONT_BREAKOUT_ATTRS = FONT_BREAKOUT_ATTRS;
1867
1981
  module.exports.FOREIGN_ATTR_NS = FOREIGN_ATTR_NS;
1868
1982
  module.exports.FOREIGN_BREAKOUT = FOREIGN_BREAKOUT;