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.
- package/README.md +5 -2
- package/lib/APIPlugin.js +23 -7
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/Cache.js +8 -3
- package/lib/CacheFacade.js +1 -1
- package/lib/ChunkGraph.js +20 -18
- package/lib/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/Compilation.js +321 -303
- package/lib/Compiler.js +209 -46
- package/lib/ConcatenationScope.js +25 -35
- package/lib/ContextModule.js +17 -81
- package/lib/ContextModuleFactory.js +1 -1
- package/lib/CopyPlugin.js +1054 -0
- package/lib/DefinePlugin.js +24 -8
- package/lib/DotenvPlugin.js +41 -13
- package/lib/ExternalModule.js +41 -14
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +45 -21
- package/lib/FlagDependencyUsagePlugin.js +8 -2
- package/lib/HotModuleReplacementPlugin.js +53 -7
- package/lib/JavascriptMetaInfoPlugin.js +5 -3
- package/lib/MainTemplate.js +5 -1
- package/lib/Module.js +16 -7
- package/lib/MultiCompiler.js +1 -1
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +58 -32
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +33 -3
- package/lib/RuntimeTemplate.js +794 -477
- package/lib/SourceMapDevToolPlugin.js +1 -1
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +84 -91
- package/lib/asset/AssetGenerator.js +25 -8
- package/lib/asset/AssetModule.js +3 -0
- package/lib/asset/WebManifestParser.js +7 -5
- package/lib/async-modules/AsyncModuleHelpers.js +10 -4
- package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/PackFileCacheStrategy.js +14 -1
- package/lib/config/browserslistTargetHandler.js +19 -0
- package/lib/config/defaults.js +110 -64
- package/lib/config/normalization.js +100 -20
- package/lib/config/target.js +10 -0
- package/lib/container/ContainerReferencePlugin.js +6 -0
- package/lib/container/RemoteRuntimeModule.js +9 -0
- package/lib/container/declaredRemotes.js +39 -0
- package/lib/css/CssGenerator.js +8 -0
- package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
- package/lib/css/CssLoadingRuntimeModule.js +94 -36
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +7 -6
- package/lib/css/CssParser.js +144 -11
- package/lib/css/CssServerStylesRuntimeModule.js +9 -0
- package/lib/css/cssMinify.js +11 -3
- package/lib/css/data.js +2814 -678
- package/lib/css/syntax.js +4082 -248
- package/lib/debug/ProfilingPlugin.js +4 -0
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
- package/lib/dependencies/AMDRuntimeModules.js +18 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +3 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +1 -0
- package/lib/dependencies/CommonJsPlugin.js +19 -3
- package/lib/dependencies/CommonJsRequireDependency.js +32 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +20 -7
- package/lib/dependencies/CssIcssExportDependency.js +7 -1
- package/lib/dependencies/HarmonyCompatibilityDependency.js +58 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +8 -3
- package/lib/dependencies/HarmonyExportExpressionDependency.js +44 -29
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +171 -32
- package/lib/dependencies/HarmonyExportInitFragment.js +99 -19
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +18 -30
- package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
- package/lib/dependencies/HarmonyImportDependency.js +99 -41
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +20 -3
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +24 -1
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +62 -2
- package/lib/dependencies/ImportContextDependency.js +43 -3
- package/lib/dependencies/ImportDependency.js +8 -29
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +59 -15
- package/lib/dependencies/ImportParserPlugin.js +24 -14
- package/lib/dependencies/RequireHeaderDependency.js +20 -21
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/WorkerDependency.js +1 -2
- package/lib/dependencies/WorkletDependency.js +1 -2
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dll/DelegatedModule.js +18 -1
- package/lib/dll/DllReferencePlugin.js +11 -8
- package/lib/dll/LibManifestPlugin.js +1 -1
- package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +12 -7
- package/lib/errors/EmptyCopyPatternWarning.js +26 -0
- package/lib/errors/ExternalStarReexportError.js +44 -0
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/MissingSourceMapsWarning.js +36 -0
- package/lib/errors/ModuleParseError.js +2 -1
- package/lib/errors/UnusedAssetsWarning.js +36 -0
- package/lib/errors/UnusedFederationWarning.js +35 -0
- package/lib/errors/UnusedModulesWarning.js +38 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
- package/lib/esm/ModuleChunkLoadingPlugin.js +30 -11
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +92 -60
- package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
- package/lib/html/HtmlGenerator.js +11 -5
- package/lib/html/HtmlModulesPlugin.js +360 -84
- package/lib/html/HtmlParser.js +13 -6
- package/lib/html/builtinEmbeddedRenderer.js +107 -0
- package/lib/html/data.js +121 -7
- package/lib/html/htmlMinify.js +84 -113
- package/lib/html/syntax.js +1067 -569
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/index.js +3 -0
- package/lib/javascript/JavascriptModule.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +52 -22
- package/lib/javascript/JavascriptParser.js +1255 -728
- package/lib/javascript/StartupHelpers.js +27 -3
- package/lib/javascript/data.js +172 -0
- package/lib/javascript/grammar.js +5546 -0
- package/lib/javascript/parser.js +1494 -0
- package/lib/javascript/regexp.js +1762 -0
- package/lib/javascript/regexpData.js +51 -0
- package/lib/javascript/syntax.js +8696 -5225
- package/lib/library/ModuleLibraryPlugin.js +116 -5
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/ConcatenatedModule.js +133 -25
- package/lib/optimize/ConstExportsPlugin.js +50 -39
- package/lib/optimize/InlineExports.js +20 -123
- package/lib/optimize/MangleExportsPlugin.js +10 -0
- package/lib/optimize/ModuleConcatenationPlugin.js +24 -1
- package/lib/optimize/RealContentHashPlugin.js +68 -9
- package/lib/optimize/SideEffectsFlagPlugin.js +17 -9
- package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
- package/lib/performance/CacheEffectivenessPlugin.js +4 -3
- package/lib/performance/DuplicateModulesPlugin.js +57 -13
- package/lib/performance/EvalUsagePlugin.js +5 -2
- package/lib/performance/MissingSourceMapsPlugin.js +115 -0
- package/lib/performance/PureAnnotationsPlugin.js +6 -3
- package/lib/performance/TopLevelThisPlugin.js +5 -4
- package/lib/performance/UnusedAssetsPlugin.js +109 -0
- package/lib/performance/UnusedFederationPlugin.js +147 -0
- package/lib/performance/UnusedModulesPlugin.js +141 -0
- package/lib/performance/UnusedReexportsPlugin.js +1 -55
- package/lib/performance/isOnlyReexported.js +65 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +2 -0
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ResourceHintPlugin.js +7 -3
- package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +9 -0
- package/lib/rules/RuleSetCompiler.js +211 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +105 -67
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
- package/lib/runtime/BaseUriRuntimeModule.js +9 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
- package/lib/runtime/GlobalRuntimeModule.js +9 -0
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
- package/lib/runtime/HelperRuntimeModule.js +10 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +338 -217
- package/lib/runtime/NonceRuntimeModule.js +9 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
- package/lib/runtime/PublicPathRuntimeModule.js +9 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
- package/lib/runtime/SystemContextRuntimeModule.js +9 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
- package/lib/schemes/HttpUriPlugin.js +22 -5
- package/lib/serialization/FileMiddleware.js +15 -2
- package/lib/serialization/ObjectMiddleware.js +138 -106
- package/lib/sharing/ConsumeSharedPlugin.js +12 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
- package/lib/sharing/ShareRuntimeModule.js +9 -0
- package/lib/sharing/declaredShared.js +47 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +3 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/SourceProcessor.js +76 -69
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- package/lib/util/conventions.js +5 -1
- package/lib/util/fs.js +27 -1
- package/lib/util/handlerKeys.js +40 -0
- package/lib/util/identifier.js +20 -0
- package/lib/util/internalSerializables.js +6 -0
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +9 -0
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +9 -0
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
- package/package.json +22 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +388 -76
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/ManifestPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/types.d.ts +1440 -331
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
package/lib/html/HtmlParser.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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;
|